From 57261bd1c14ba928a6a78456649c4eb0f365dcc6 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Sun, 20 Sep 2020 21:06:00 -0400 Subject: [PATCH] Initial commit of GCC 2.8.1 --- .gdbinit | 95 + BUGS | 23 + COPYING | 340 + COPYING.LIB | 482 ++ ChangeLog | 15188 +++++++++++++++++++++++++++++++++ ChangeLog.0 | 6670 +++++++++++++++ ChangeLog.1 | 9207 ++++++++++++++++++++ ChangeLog.10 | 10110 ++++++++++++++++++++++ ChangeLog.2 | 7229 ++++++++++++++++ ChangeLog.3 | 8063 +++++++++++++++++ ChangeLog.4 | 10783 +++++++++++++++++++++++ ChangeLog.5 | 8954 +++++++++++++++++++ ChangeLog.6 | 8173 ++++++++++++++++++ ChangeLog.7 | 10376 ++++++++++++++++++++++ ChangeLog.8 | 11080 ++++++++++++++++++++++++ ChangeLog.9 | 9968 ++++++++++++++++++++++ ChangeLog.lib | 3799 +++++++++ INSTALL | 2072 +++++ Makefile.in | 2681 ++++++ NEWS | 983 +++ ORDERS | 4157 +++++++++ PROBLEMS | 117 + PROJECTS | 448 + README | 26 + README-fixinc | 9 + README.ACORN | 18 + README.ALTOS | 55 + README.APOLLO | 112 + README.DWARF | 574 ++ README.FRESCO | 17 + README.NS32K | 130 + README.RS6000 | 122 + README.TRAD | 55 + README.X11 | 447 + SERVICE | 1447 ++++ TAGS | 7604 +++++++++++++++++ TESTS.FLUNK | 39 + acconfig.h | 27 + aclocal.m4 | 33 + alloca.c | 504 ++ assert.h | 54 + basic-block.h | 130 + bc-emit.c | 1017 +++ bc-emit.h | 133 + bc-optab.c | 802 ++ bc-optab.h | 75 + bc-typecd.def | 21 + bc-typecd.h | 54 + bi-arity.c | 91 + bi-defs.h | 48 + bi-lexer.c | 167 + bi-opcode.c | 89 + bi-opname.c | 70 + bi-parser.c | 968 +++ bi-parser.h | 12 + bi-parser.y | 169 + bi-reverse.c | 61 + bi-run.h | 159 + bitmap.c | 645 ++ bitmap.h | 315 + build-make | 35 + bytecode.def | 322 + bytecode.h | 82 + bytetypes.h | 35 + c-aux-info.c | 644 ++ c-common.c | 2633 ++++++ c-convert.c | 96 + c-decl.c | 7277 ++++++++++++++++ c-gperf.h | 186 + c-iterate.c | 601 ++ c-lang.c | 182 + c-lex.c | 2194 +++++ c-lex.h | 80 + c-parse.c | 3846 +++++++++ c-parse.gperf | 84 + c-parse.h | 64 + c-parse.in | 3024 +++++++ c-parse.y | 2183 +++++ c-pragma.c | 169 + c-pragma.h | 46 + c-tree.h | 507 ++ c-typeck.c | 6726 +++++++++++++++ caller-save.c | 760 ++ calls.c | 3672 ++++++++ cccp.1 | 674 ++ cccp.c | 10434 ++++++++++++++++++++++ cexp.c | 2169 +++++ cexp.y | 1259 +++ choose-temp.c | 146 + collect2.c | 3484 ++++++++ combine.c | 11679 +++++++++++++++++++++++++ conditions.h | 118 + config.guess | 890 ++ config.in | 114 + config.sub | 952 +++ config/1750a/1750a.c | 734 ++ config/1750a/1750a.h | 1347 +++ config/1750a/1750a.md | 1436 ++++ config/1750a/ms1750.inc | 158 + config/1750a/xm-1750a.h | 23 + config/README | 5 + config/a29k/a29k.c | 1536 ++++ config/a29k/a29k.h | 1671 ++++ config/a29k/a29k.md | 2874 +++++++ config/a29k/t-a29k | 5 + config/a29k/t-a29kbare | 19 + config/a29k/t-vx29k | 17 + config/a29k/udi.h | 94 + config/a29k/unix.h | 92 + config/a29k/vx29k.h | 46 + config/a29k/x-unix | 2 + config/a29k/xm-a29k.h | 41 + config/a29k/xm-unix.h | 43 + config/alpha/alpha.c | 3154 +++++++ config/alpha/alpha.h | 2348 +++++ config/alpha/alpha.md | 4656 ++++++++++ config/alpha/config-nt.sed | 33 + config/alpha/elf.h | 519 ++ config/alpha/linux.h | 97 + config/alpha/osf12.h | 33 + config/alpha/osf2or3.h | 24 + config/alpha/t-linux | 5 + config/alpha/t-vms | 6 + config/alpha/vms-tramp.asm | 22 + config/alpha/vms.h | 461 + config/alpha/win-nt.h | 72 + config/alpha/x-alpha | 1 + config/alpha/xm-alpha.h | 70 + config/alpha/xm-linux.h | 1 + config/alpha/xm-vms.h | 82 + config/alpha/xm-winnt.h | 32 + config/aoutos.h | 88 + config/arc/arc.c | 2212 +++++ config/arc/arc.h | 1643 ++++ config/arc/arc.md | 1630 ++++ config/arc/initfini.c | 157 + config/arc/lib1funcs.asm | 273 + config/arc/t-arc | 72 + config/arc/xm-arc.h | 47 + config/arm/aof.h | 453 + config/arm/aout.h | 259 + config/arm/arm.c | 6029 +++++++++++++ config/arm/arm.h | 2060 +++++ config/arm/arm.md | 6144 +++++++++++++ config/arm/coff.h | 209 + config/arm/lib1funcs.asm | 423 + config/arm/linux-gas.h | 34 + config/arm/linux.h | 72 + config/arm/netbsd.h | 143 + config/arm/riscix.h | 144 + config/arm/riscix1-1.h | 97 + config/arm/rix-gas.h | 43 + config/arm/semi.h | 40 + config/arm/semiaof.h | 43 + config/arm/t-bare | 30 + config/arm/t-linux | 19 + config/arm/t-netbsd | 7 + config/arm/t-riscix | 3 + config/arm/t-semi | 44 + config/arm/t-semiaof | 63 + config/arm/x-riscix | 8 + config/arm/xm-arm.h | 68 + config/arm/xm-linux.h | 24 + config/arm/xm-netbsd.h | 7 + config/clipper/clipper.c | 508 ++ config/clipper/clipper.h | 1122 +++ config/clipper/clipper.md | 1423 +++ config/clipper/clix.h | 162 + config/clipper/x-clix | 1 + config/clipper/xm-clix.h | 30 + config/convex/convex.c | 675 ++ config/convex/convex.h | 1502 ++++ config/convex/convex.md | 1885 ++++ config/convex/fixinc.convex | 416 + config/convex/x-convex | 5 + config/convex/xm-convex.h | 48 + config/dbx.h | 30 + config/dbxcoff.h | 87 + config/dsp16xx/dsp16xx.c | 2226 +++++ config/dsp16xx/dsp16xx.h | 1980 +++++ config/dsp16xx/dsp16xx.md | 2181 +++++ config/dsp16xx/xm-dsp16xx.h | 46 + config/elxsi/elxsi.c | 127 + config/elxsi/elxsi.h | 966 +++ config/elxsi/elxsi.md | 1420 +++ config/elxsi/x-elxsi | 9 + config/elxsi/xm-elxsi.h | 38 + config/float-i128.h | 96 + config/float-i32.h | 96 + config/float-i64.h | 96 + config/float-sh.h | 130 + config/float-vax.h | 96 + config/fp-bit.c | 1405 +++ config/fx80/fx80.c | 300 + config/fx80/fx80.h | 1445 ++++ config/fx80/fx80.md | 2522 ++++++ config/fx80/xm-fx80.h | 39 + config/gmicro/gmicro.c | 984 +++ config/gmicro/gmicro.h | 1588 ++++ config/gmicro/gmicro.md | 2740 ++++++ config/gnu.h | 30 + config/gofast.h | 96 + config/h8300/h8300.c | 3097 +++++++ config/h8300/h8300.h | 1399 +++ config/h8300/h8300.md | 2315 +++++ config/h8300/lib1funcs.asm | 781 ++ config/h8300/t-h8300 | 26 + config/h8300/xm-h8300.h | 46 + config/i370/i370.c | 584 ++ config/i370/i370.h | 1441 ++++ config/i370/i370.md | 4210 +++++++++ config/i370/t-i370 | 4 + config/i370/xm-i370.h | 53 + config/i386/386bsd.h | 76 + config/i386/aix386.h | 69 + config/i386/aix386ng.h | 142 + config/i386/att.h | 93 + config/i386/bsd.h | 130 + config/i386/bsd386.h | 22 + config/i386/config-nt.sed | 38 + config/i386/crtdll.h | 33 + config/i386/cygwin32.asm | 32 + config/i386/cygwin32.h | 231 + config/i386/dgux.c | 190 + config/i386/dgux.h | 265 + config/i386/freebsd-elf.h | 187 + config/i386/freebsd.h | 245 + config/i386/gas.h | 162 + config/i386/gmon-sol2.c | 409 + config/i386/gnu.h | 22 + config/i386/go32-rtems.h | 32 + config/i386/go32.h | 99 + config/i386/gstabs.h | 9 + config/i386/i386-aout.h | 34 + config/i386/i386-coff.h | 97 + config/i386/i386.c | 5039 +++++++++++ config/i386/i386.h | 2747 ++++++ config/i386/i386.md | 7507 ++++++++++++++++ config/i386/isc.h | 93 + config/i386/isccoff.h | 12 + config/i386/iscdbx.h | 43 + config/i386/linux-aout.h | 71 + config/i386/linux-oldld.h | 72 + config/i386/linux.h | 217 + config/i386/lynx-ng.h | 37 + config/i386/lynx.h | 39 + config/i386/mach.h | 20 + config/i386/mingw32.h | 93 + config/i386/moss.h | 34 + config/i386/netbsd.h | 73 + config/i386/next.h | 226 + config/i386/os2.h | 76 + config/i386/osfelf.h | 79 + config/i386/osfrose.h | 920 ++ config/i386/perform.h | 98 + config/i386/ptx4-i.h | 247 + config/i386/rtems.h | 28 + config/i386/sco.h | 117 + config/i386/sco4.h | 86 + config/i386/sco4dbx.h | 81 + config/i386/sco5.h | 967 +++ config/i386/scodbx.h | 92 + config/i386/seq-gas.h | 46 + config/i386/seq-sysv3.h | 42 + config/i386/seq2-sysv3.h | 8 + config/i386/sequent.h | 152 + config/i386/sol2-c1.asm | 156 + config/i386/sol2-ci.asm | 51 + config/i386/sol2-cn.asm | 46 + config/i386/sol2-gc1.asm | 160 + config/i386/sol2.h | 95 + config/i386/sol2dbg.h | 27 + config/i386/sun.h | 83 + config/i386/sun386.h | 142 + config/i386/svr3.ifile | 48 + config/i386/svr3dbx.h | 86 + config/i386/svr3gas.h | 293 + config/i386/svr3z.ifile | 48 + config/i386/sysv3.h | 124 + config/i386/sysv4.h | 253 + config/i386/t-crtpic | 10 + config/i386/t-crtstuff | 2 + config/i386/t-cygwin32 | 7 + config/i386/t-dgux | 4 + config/i386/t-freebsd | 5 + config/i386/t-go32 | 2 + config/i386/t-i386bare | 3 + config/i386/t-next | 12 + config/i386/t-osf | 2 + config/i386/t-sco5 | 16 + config/i386/t-sol2 | 36 + config/i386/t-svr3dbx | 7 + config/i386/t-vsta | 2 + config/i386/t-winnt | 6 + config/i386/unix.h | 193 + config/i386/v3gas.h | 80 + config/i386/vsta.h | 78 + config/i386/win-nt.h | 152 + config/i386/winnt.c | 93 + config/i386/x-aix | 12 + config/i386/x-cygwin32 | 4 + config/i386/x-dgux | 11 + config/i386/x-isc | 3 + config/i386/x-isc3 | 4 + config/i386/x-ncr3000 | 34 + config/i386/x-next | 3 + config/i386/x-osfrose | 27 + config/i386/x-sco | 7 + config/i386/x-sco4 | 10 + config/i386/x-sco5 | 10 + config/i386/x-sysv3 | 1 + config/i386/x-vsta | 1 + config/i386/xm-aix.h | 31 + config/i386/xm-bsd386.h | 3 + config/i386/xm-cygwin32.h | 26 + config/i386/xm-dgux.h | 12 + config/i386/xm-dos.h | 14 + config/i386/xm-gnu.h | 5 + config/i386/xm-go32.h | 30 + config/i386/xm-i386.h | 43 + config/i386/xm-isc.h | 6 + config/i386/xm-linux.h | 24 + config/i386/xm-lynx.h | 33 + config/i386/xm-mingw32.h | 44 + config/i386/xm-next.h | 5 + config/i386/xm-os2.h | 69 + config/i386/xm-osf.h | 24 + config/i386/xm-sco.h | 25 + config/i386/xm-sco5.h | 18 + config/i386/xm-sun.h | 23 + config/i386/xm-sysv3.h | 4 + config/i386/xm-sysv4.h | 16 + config/i386/xm-vsta.h | 26 + config/i386/xm-winnt.h | 24 + config/i860/bsd-gas.h | 2 + config/i860/bsd.h | 44 + config/i860/fx2800.h | 356 + config/i860/i860.c | 2097 +++++ config/i860/i860.h | 1431 ++++ config/i860/i860.md | 2321 +++++ config/i860/mach.h | 14 + config/i860/paragon.h | 236 + config/i860/sysv3.h | 174 + config/i860/sysv4.h | 193 + config/i860/t-fx2800 | 3 + config/i860/x-fx2800 | 7 + config/i860/x-sysv3 | 1 + config/i860/x-sysv4 | 44 + config/i860/xm-i860.h | 43 + config/i960/i960-coff.h | 101 + config/i960/i960.c | 2621 ++++++ config/i960/i960.h | 1570 ++++ config/i960/i960.md | 2679 ++++++ config/i960/rtems.h | 28 + config/i960/t-960bare | 24 + config/i960/t-vxworks960 | 27 + config/i960/vx960-coff.h | 69 + config/i960/vx960.h | 30 + config/i960/xm-i960.h | 43 + config/libgloss.h | 35 + config/linux-aout.h | 48 + config/linux.h | 114 + config/lynx-ng.h | 118 + config/lynx.h | 179 + config/m32r/initfini.c | 169 + config/m32r/m32r.c | 1835 ++++ config/m32r/m32r.h | 1867 ++++ config/m32r/m32r.md | 1469 ++++ config/m32r/t-m32r | 57 + config/m32r/xm-m32r.h | 47 + config/m68k/3b1.h | 513 ++ config/m68k/3b1g.h | 64 + config/m68k/a-ux.h | 206 + config/m68k/altos3068.h | 135 + config/m68k/amix.h | 149 + config/m68k/apollo68.h | 208 + config/m68k/atari.h | 106 + config/m68k/aux-crt1.c | 134 + config/m68k/aux-crt2.asm | 42 + config/m68k/aux-crtn.asm | 26 + config/m68k/aux-exit.c | 99 + config/m68k/aux-low.gld | 38 + config/m68k/aux-mcount.c | 69 + config/m68k/auxas.h | 189 + config/m68k/auxgas.h | 56 + config/m68k/auxgld.h | 29 + config/m68k/auxld.h | 35 + config/m68k/ccur-GAS.h | 129 + config/m68k/coff.h | 176 + config/m68k/crds.h | 621 ++ config/m68k/ctix.h | 48 + config/m68k/dpx2.h | 822 ++ config/m68k/dpx2.ifile | 55 + config/m68k/dpx2cdbx.h | 31 + config/m68k/dpx2g.h | 71 + config/m68k/fpgnulib.c | 442 + config/m68k/hp2bsd.h | 78 + config/m68k/hp310.h | 36 + config/m68k/hp310g.h | 12 + config/m68k/hp320.h | 642 ++ config/m68k/hp320g.h | 12 + config/m68k/hp3bsd.h | 44 + config/m68k/hp3bsd44.h | 53 + config/m68k/hpux7.h | 7 + config/m68k/isi-nfp.h | 9 + config/m68k/isi.h | 91 + config/m68k/lb1sf68.asm | 3904 +++++++++ config/m68k/linux-aout.h | 77 + config/m68k/linux.h | 385 + config/m68k/lynx-ng.h | 43 + config/m68k/lynx.h | 74 + config/m68k/m68k-aout.h | 44 + config/m68k/m68k-coff.h | 28 + config/m68k/m68k-none.h | 198 + config/m68k/m68k-psos.h | 67 + config/m68k/m68k.c | 3355 ++++++++ config/m68k/m68k.h | 2269 +++++ config/m68k/m68k.md | 7725 +++++++++++++++++ config/m68k/m68kemb.h | 53 + config/m68k/m68kv4.h | 346 + config/m68k/mot3300-crt0.S | 98 + config/m68k/mot3300.h | 816 ++ config/m68k/mot3300Mcrt0.S | 142 + config/m68k/netbsd.h | 58 + config/m68k/news.h | 552 ++ config/m68k/news3.h | 6 + config/m68k/news3gas.h | 6 + config/m68k/newsgas.h | 19 + config/m68k/next.h | 199 + config/m68k/next21.h | 104 + config/m68k/pbb.h | 163 + config/m68k/plexus.h | 108 + config/m68k/rtems.h | 28 + config/m68k/sgs.h | 446 + config/m68k/sun2.h | 77 + config/m68k/sun2o4.h | 189 + config/m68k/sun3.h | 301 + config/m68k/sun3mach.h | 15 + config/m68k/sun3n.h | 9 + config/m68k/sun3n3.h | 5 + config/m68k/sun3o3.h | 5 + config/m68k/t-aux | 44 + config/m68k/t-linux | 19 + config/m68k/t-linux-aout | 5 + config/m68k/t-lynx | 6 + config/m68k/t-m68kbare | 24 + config/m68k/t-mot3300 | 10 + config/m68k/t-mot3300-gald | 13 + config/m68k/t-mot3300-gas | 13 + config/m68k/t-mot3300-gld | 12 + config/m68k/t-next | 6 + config/m68k/t-vxworks68 | 27 + config/m68k/tower-as.h | 616 ++ config/m68k/tower.h | 104 + config/m68k/vxm68k.h | 101 + config/m68k/x-alloca-c | 1 + config/m68k/x-amix | 27 + config/m68k/x-apollo68 | 15 + config/m68k/x-ccur | 3 + config/m68k/x-crds | 7 + config/m68k/x-dpx2 | 16 + config/m68k/x-hp2bsd | 4 + config/m68k/x-hp320 | 17 + config/m68k/x-hp320g | 17 + config/m68k/x-hp3bsd44 | 1 + config/m68k/x-mot3300 | 14 + config/m68k/x-mot3300-gas | 12 + config/m68k/x-next | 9 + config/m68k/x-tower | 9 + config/m68k/xm-3b1.h | 8 + config/m68k/xm-altos3068.h | 3 + config/m68k/xm-amix.h | 45 + config/m68k/xm-atari.h | 46 + config/m68k/xm-aux.h | 9 + config/m68k/xm-crds.h | 19 + config/m68k/xm-hp320.h | 13 + config/m68k/xm-linux.h | 4 + config/m68k/xm-lynx.h | 35 + config/m68k/xm-m68k.h | 41 + config/m68k/xm-m68kv.h | 9 + config/m68k/xm-mot3300.h | 46 + config/m68k/xm-next.h | 5 + config/m68k/xm-plexus.h | 13 + config/m88k/dgux.h | 305 + config/m88k/dgux.ld | 48 + config/m88k/dguxbcs.h | 62 + config/m88k/dolph.h | 43 + config/m88k/dolphin.ld | 40 + config/m88k/luna.h | 58 + config/m88k/m88k-aout.h | 32 + config/m88k/m88k-coff.h | 34 + config/m88k/m88k-move.sh | 306 + config/m88k/m88k.c | 3167 +++++++ config/m88k/m88k.h | 2645 ++++++ config/m88k/m88k.md | 4040 +++++++++ config/m88k/sysv3.h | 150 + config/m88k/sysv4.h | 85 + config/m88k/t-bug | 12 + config/m88k/t-dgux | 26 + config/m88k/t-dgux-gas | 17 + config/m88k/t-dguxbcs | 28 + config/m88k/t-luna | 12 + config/m88k/t-luna-gas | 13 + config/m88k/t-m88k | 12 + config/m88k/t-m88k-gas | 18 + config/m88k/t-sysv4 | 22 + config/m88k/tekXD88.h | 50 + config/m88k/tekXD88.ld | 39 + config/m88k/x-dgux | 6 + config/m88k/x-dguxbcs | 4 + config/m88k/x-dolph | 19 + config/m88k/x-sysv3 | 7 + config/m88k/x-sysv4 | 10 + config/m88k/x-tekXD88 | 12 + config/m88k/xm-m88k.h | 61 + config/m88k/xm-sysv3.h | 34 + config/mips/abi64.h | 234 + config/mips/bsd-4.h | 48 + config/mips/bsd-5.h | 66 + config/mips/cross64.h | 36 + config/mips/dec-bsd.h | 53 + config/mips/dec-osf1.h | 54 + config/mips/ecoff.h | 36 + config/mips/ecoffl.h | 29 + config/mips/elf.h | 55 + config/mips/elf64.h | 95 + config/mips/elfl.h | 29 + config/mips/elfl64.h | 29 + config/mips/elflorion.h | 24 + config/mips/elforion.h | 24 + config/mips/gnu.h | 128 + config/mips/iris3.h | 74 + config/mips/iris4.h | 50 + config/mips/iris4loser.h | 7 + config/mips/iris5.h | 161 + config/mips/iris5gas.h | 35 + config/mips/iris6.h | 545 ++ config/mips/mips-5.h | 46 + config/mips/mips.c | 5982 +++++++++++++ config/mips/mips.h | 4070 +++++++++ config/mips/mips.md | 7205 ++++++++++++++++ config/mips/netbsd.h | 227 + config/mips/news4.h | 40 + config/mips/news5.h | 62 + config/mips/nws3250v4.h | 36 + config/mips/osfrose.h | 151 + config/mips/r3900.h | 71 + config/mips/rtems64.h | 28 + config/mips/sni-gas.h | 43 + config/mips/sni-svr4.h | 97 + config/mips/svr3-4.h | 64 + config/mips/svr3-5.h | 88 + config/mips/svr4-4.h | 62 + config/mips/svr4-5.h | 91 + config/mips/svr4-t.h | 30 + config/mips/t-bsd | 12 + config/mips/t-bsd-gas | 8 + config/mips/t-cross64 | 19 + config/mips/t-ecoff | 75 + config/mips/t-iris6 | 20 + config/mips/t-mips | 8 + config/mips/t-mips-gas | 4 + config/mips/t-osfrose | 8 + config/mips/t-svr3 | 12 + config/mips/t-svr3-gas | 8 + config/mips/t-svr4 | 12 + config/mips/t-svr4-gas | 8 + config/mips/t-ultrix | 10 + config/mips/ultrix.h | 57 + config/mips/x-dec-osf1 | 17 + config/mips/x-iris | 30 + config/mips/x-iris3 | 30 + config/mips/x-iris6 | 11 + config/mips/x-mips | 20 + config/mips/x-netbsd | 17 + config/mips/x-nws3250v4 | 19 + config/mips/x-osfrose | 32 + config/mips/x-sni-svr4 | 18 + config/mips/x-sony | 18 + config/mips/x-sysv | 26 + config/mips/x-ultrix | 17 + config/mips/xm-iris3.h | 3 + config/mips/xm-iris4.h | 13 + config/mips/xm-iris5.h | 11 + config/mips/xm-iris6.h | 17 + config/mips/xm-mips.h | 83 + config/mips/xm-news.h | 8 + config/mips/xm-nws3250v4.h | 9 + config/mips/xm-sysv.h | 30 + config/mips/xm-sysv4.h | 7 + config/mn10200/divmod.c | 50 + config/mn10200/lib1funcs.asm | 609 ++ config/mn10200/mn10200.c | 1532 ++++ config/mn10200/mn10200.h | 1078 +++ config/mn10200/mn10200.md | 1978 +++++ config/mn10200/t-mn10200 | 50 + config/mn10200/udivmod.c | 14 + config/mn10200/udivmodsi4.c | 24 + config/mn10200/xm-mn10200.h | 47 + config/mn10300/mn10300.c | 1065 +++ config/mn10300/mn10300.h | 1016 +++ config/mn10300/mn10300.md | 1415 +++ config/mn10300/t-mn10300 | 20 + config/mn10300/xm-mn10300.h | 47 + config/msdos/configur.bat | 47 + config/msdos/libgcc.mak | 14 + config/msdos/mklibgcc.c | 98 + config/msdos/top.sed | 57 + config/netbsd.h | 207 + config/nextstep.c | 102 + config/nextstep.h | 590 ++ config/nextstep21.h | 65 + config/ns32k/encore.h | 196 + config/ns32k/genix.h | 167 + config/ns32k/merlin.h | 231 + config/ns32k/netbsd.h | 107 + config/ns32k/ns32k.c | 906 ++ config/ns32k/ns32k.h | 1477 ++++ config/ns32k/ns32k.md | 2869 +++++++ config/ns32k/pc532-mach.h | 30 + config/ns32k/pc532-min.h | 41 + config/ns32k/pc532.h | 73 + config/ns32k/sequent.h | 77 + config/ns32k/tek6000.h | 237 + config/ns32k/tek6100.h | 7 + config/ns32k/tek6200.h | 7 + config/ns32k/x-genix | 6 + config/ns32k/xm-genix.h | 5 + config/ns32k/xm-ns32k.h | 42 + config/ns32k/xm-pc532-min.h | 34 + config/pa/ee.asm | 261 + config/pa/ee_fp.asm | 274 + config/pa/lib1funcs.asm | 1146 +++ config/pa/lib2funcs.asm | 74 + config/pa/pa-gas.h | 21 + config/pa/pa-hiux.h | 26 + config/pa/pa-hpux.h | 49 + config/pa/pa-hpux10.h | 71 + config/pa/pa-hpux7.h | 37 + config/pa/pa-hpux9.h | 31 + config/pa/pa-oldas.h | 22 + config/pa/pa-osf.h | 42 + config/pa/pa-pro-end.h | 41 + config/pa/pa-pro.h | 78 + config/pa/pa.c | 6342 ++++++++++++++ config/pa/pa.h | 2406 ++++++ config/pa/pa.md | 5159 +++++++++++ config/pa/pa1.h | 28 + config/pa/rtems.h | 26 + config/pa/t-pa | 18 + config/pa/t-pro | 38 + config/pa/x-pa | 3 + config/pa/x-pa-hpux | 4 + config/pa/xm-pa.h | 62 + config/pa/xm-pahpux.h | 61 + config/pa/xm-papro.h | 58 + config/pdp11/2bsd.h | 86 + config/pdp11/pdp11.c | 1421 +++ config/pdp11/pdp11.h | 1397 +++ config/pdp11/pdp11.md | 1824 ++++ config/pdp11/t-pdp11 | 8 + config/pdp11/xm-pdp11.h | 27 + config/psos.h | 183 + config/ptx4.h | 859 ++ config/pyr/pyr.c | 864 ++ config/pyr/pyr.h | 1505 ++++ config/pyr/pyr.md | 1371 +++ config/pyr/x-pyr | 2 + config/pyr/xm-pyr.h | 40 + config/romp/romp.c | 2038 +++++ config/romp/romp.h | 1636 ++++ config/romp/romp.md | 2778 ++++++ config/romp/x-mach | 5 + config/romp/x-romp | 11 + config/romp/xm-romp.h | 54 + config/rs6000/aix31.h | 41 + config/rs6000/aix3newas.h | 88 + config/rs6000/aix41.h | 111 + config/rs6000/cygwin32.h | 67 + config/rs6000/eabi-ci.asm | 119 + config/rs6000/eabi-cn.asm | 109 + config/rs6000/eabi-ctors.c | 92 + config/rs6000/eabi.asm | 555 ++ config/rs6000/eabi.h | 40 + config/rs6000/eabiaix.h | 41 + config/rs6000/eabile.h | 46 + config/rs6000/eabilesim.h | 46 + config/rs6000/eabisim.h | 46 + config/rs6000/linux.h | 67 + config/rs6000/lynx.h | 104 + config/rs6000/mach.h | 42 + config/rs6000/milli.exp | 7 + config/rs6000/netware.h | 273 + config/rs6000/nt-ci.asm | 48 + config/rs6000/nt-cn.asm | 48 + config/rs6000/ntstack.asm | 42 + config/rs6000/powerpc.h | 61 + config/rs6000/rs6000.c | 5101 +++++++++++ config/rs6000/rs6000.h | 3186 +++++++ config/rs6000/rs6000.md | 9666 +++++++++++++++++++++ config/rs6000/rtems.h | 32 + config/rs6000/sol-c0.c | 122 + config/rs6000/sol-ci.asm | 104 + config/rs6000/sol-cn.asm | 82 + config/rs6000/sol2.h | 178 + config/rs6000/sysv4.h | 1436 ++++ config/rs6000/sysv4le.h | 46 + config/rs6000/t-newas | 52 + config/rs6000/t-ppc | 12 + config/rs6000/t-ppccomm | 73 + config/rs6000/t-ppcgas | 22 + config/rs6000/t-ppcos | 12 + config/rs6000/t-rs6000 | 22 + config/rs6000/t-winnt | 35 + config/rs6000/t-xnewas | 58 + config/rs6000/t-xrs6000 | 28 + config/rs6000/tramp.asm | 120 + config/rs6000/vxppc.h | 63 + config/rs6000/win-nt.h | 478 ++ config/rs6000/x-aix31 | 9 + config/rs6000/x-cygwin32 | 4 + config/rs6000/x-lynx | 14 + config/rs6000/x-mach | 7 + config/rs6000/x-rs6000 | 9 + config/rs6000/x-sysv4 | 2 + config/rs6000/xm-cygwin32.h | 26 + config/rs6000/xm-lynx.h | 35 + config/rs6000/xm-mach.h | 25 + config/rs6000/xm-rs6000.h | 65 + config/rs6000/xm-sysv4.h | 70 + config/sh/elf.h | 122 + config/sh/lib1funcs.asm | 969 +++ config/sh/rtems.h | 28 + config/sh/sh.c | 4465 ++++++++++ config/sh/sh.h | 1874 ++++ config/sh/sh.md | 3331 ++++++++ config/sh/t-sh | 29 + config/sh/xm-sh.h | 42 + config/sparc/aout.h | 26 + config/sparc/bsd.h | 7 + config/sparc/elf.h | 42 + config/sparc/gmon-sol2.c | 427 + config/sparc/lb1spc.asm | 486 ++ config/sparc/lb1spl.asm | 246 + config/sparc/linux-aout.h | 111 + config/sparc/linux.h | 240 + config/sparc/linux64.h | 232 + config/sparc/lite.h | 38 + config/sparc/litecoff.h | 113 + config/sparc/lynx-ng.h | 41 + config/sparc/lynx.h | 53 + config/sparc/netbsd.h | 40 + config/sparc/pbd.h | 184 + config/sparc/rtems.h | 28 + config/sparc/sol2-c1.asm | 86 + config/sparc/sol2-ci.asm | 60 + config/sparc/sol2-cn.asm | 54 + config/sparc/sol2-g1.asm | 88 + config/sparc/sol2-sld.h | 11 + config/sparc/sol2.h | 181 + config/sparc/sp64-aout.h | 35 + config/sparc/sp64-elf.h | 159 + config/sparc/sparc.c | 6014 +++++++++++++ config/sparc/sparc.h | 3161 +++++++ config/sparc/sparc.md | 6161 +++++++++++++ config/sparc/splet.h | 53 + config/sparc/sun4gas.h | 27 + config/sparc/sun4o3.h | 10 + config/sparc/sunos4.h | 30 + config/sparc/sysv4.h | 221 + config/sparc/t-elf | 39 + config/sparc/t-linux | 6 + config/sparc/t-sol2 | 30 + config/sparc/t-sp64 | 2 + config/sparc/t-sparcbare | 26 + config/sparc/t-sparclite | 24 + config/sparc/t-splet | 23 + config/sparc/t-sunos40 | 7 + config/sparc/t-sunos41 | 16 + config/sparc/t-vxsparc | 17 + config/sparc/vxsim.h | 131 + config/sparc/vxsparc.h | 61 + config/sparc/x-sysv4 | 2 + config/sparc/xm-linux.h | 28 + config/sparc/xm-lynx.h | 39 + config/sparc/xm-pbd.h | 10 + config/sparc/xm-sol2.h | 6 + config/sparc/xm-sp64.h | 25 + config/sparc/xm-sparc.h | 49 + config/sparc/xm-sysv4.h | 51 + config/spur/spur.c | 328 + config/spur/spur.h | 1050 +++ config/spur/spur.md | 1093 +++ config/spur/xm-spur.h | 39 + config/svr3.h | 375 + config/svr4.h | 980 +++ config/t-gnu | 13 + config/t-libc-ok | 3 + config/t-linux | 10 + config/t-linux-aout | 5 + config/t-linux-gnulibc1 | 2 + config/t-netbsd | 8 + config/t-rtems | 2 + config/t-svr4 | 8 + config/tahoe/harris.h | 87 + config/tahoe/tahoe.c | 564 ++ config/tahoe/tahoe.h | 1015 +++ config/tahoe/tahoe.md | 2113 +++++ config/tahoe/xm-tahoe.h | 59 + config/v850/lib1funcs.asm | 1269 +++ config/v850/t-v850 | 52 + config/v850/v850.c | 2284 +++++ config/v850/v850.h | 1475 ++++ config/v850/v850.md | 1273 +++ config/v850/xm-v850.h | 49 + config/vax/netbsd.h | 19 + config/vax/ultrix.h | 12 + config/vax/vax.c | 835 ++ config/vax/vax.h | 1312 +++ config/vax/vax.md | 2137 +++++ config/vax/vaxv.h | 70 + config/vax/vms.h | 369 + config/vax/xm-vax.h | 44 + config/vax/xm-vaxv.h | 3 + config/vax/xm-vms.h | 206 + config/we32k/we32k.c | 140 + config/we32k/we32k.h | 1047 +++ config/we32k/we32k.md | 1197 +++ config/we32k/x-we32k | 1 + config/we32k/xm-we32k.h | 49 + config/winnt/config-nt.bat | 58 + config/winnt/config-nt.sed | 130 + config/winnt/dirent.c | 360 + config/winnt/dirent.h | 96 + config/winnt/fixinc-nt.c | 260 + config/winnt/headers.mak | 51 + config/winnt/ld.c | 348 + config/winnt/libgcc.mak | 19 + config/winnt/mklibgcc.c | 97 + config/winnt/oldnames.c | 47 + config/winnt/spawnv.c | 71 + config/winnt/win-nt.h | 58 + config/winnt/x-winnt | 34 + config/winnt/xm-winnt.h | 63 + config/x-linux | 5 + config/x-linux-aout | 14 + config/x-lynx | 6 + config/x-svr4 | 9 + config/xm-gnu.h | 32 + config/xm-linux.h | 33 + config/xm-lynx.h | 51 + config/xm-std32.h | 34 + config/xm-svr3.h | 25 + config/xm-svr4.h | 29 + configure | 6237 ++++++++++++++ configure.bat | 21 + configure.frag | 77 + configure.in | 3315 +++++++ configure.lang | 233 + convert.c | 475 ++ convert.h | 24 + cp/ChangeLog | 6758 +++++++++++++++ cp/ChangeLog.1 | 9451 ++++++++++++++++++++ cp/Make-lang.in | 282 + cp/Makefile.in | 304 + cp/NEWS | 189 + cp/call.c | 6402 ++++++++++++++ cp/class.c | 5466 ++++++++++++ cp/class.h | 117 + cp/config-lang.in | 41 + cp/cp-tree.def | 169 + cp/cp-tree.h | 2590 ++++++ cp/cvt.c | 1672 ++++ cp/decl.c | 13065 ++++++++++++++++++++++++++++ cp/decl.h | 59 + cp/decl2.c | 3870 +++++++++ cp/errfn.c | 231 + cp/error.c | 1790 ++++ cp/except.c | 1408 +++ cp/exception.cc | 198 + cp/expr.c | 463 + cp/friend.c | 440 + cp/g++.1 | 674 ++ cp/g++FAQ.texi | 2158 +++++ cp/g++spec.c | 255 + cp/gxx.gperf | 108 + cp/gxxint.texi | 1819 ++++ cp/hash.h | 225 + cp/inc/exception | 42 + cp/inc/new | 48 + cp/inc/new.h | 13 + cp/inc/typeinfo | 71 + cp/init.c | 3537 ++++++++ cp/input.c | 205 + cp/lang-options.h | 115 + cp/lang-specs.h | 60 + cp/lex.c | 4791 +++++++++++ cp/lex.h | 135 + cp/method.c | 2225 +++++ cp/mpw-config.in | 11 + cp/mpw-make.sed | 112 + cp/new.cc | 31 + cp/new1.cc | 54 + cp/new2.cc | 33 + cp/parse.c | 8626 +++++++++++++++++++ cp/parse.h | 92 + cp/parse.y | 4384 ++++++++++ cp/pt.c | 4750 +++++++++++ cp/ptree.c | 161 + cp/repo.c | 468 + cp/rtti.c | 1391 +++ cp/search.c | 3789 ++++++++ cp/sig.c | 1069 +++ cp/spew.c | 457 + cp/tinfo.cc | 125 + cp/tinfo.h | 55 + cp/tinfo2.cc | 323 + cp/tree.c | 2117 +++++ cp/typeck.c | 7580 ++++++++++++++++ cp/typeck2.c | 1617 ++++ cp/xref.c | 839 ++ cplus-dem.c | 3289 +++++++ cpp.1 | 1 + cpp.cps | 66 + cpp.fns | 94 + cpp.info | 75 + cpp.info-1 | 1181 +++ cpp.info-2 | 1058 +++ cpp.info-3 | 487 ++ cpp.texi | 2894 +++++++ cppalloc.c | 55 + cpperror.c | 136 + cppexp.c | 1054 +++ cpphash.c | 202 + cpphash.h | 38 + cpplib.c | 7584 ++++++++++++++++ cpplib.h | 669 ++ cppmain.c | 104 + cross-make | 24 + crtstuff.c | 448 + cse.c | 8989 +++++++++++++++++++ cstamp-h.in | 1 + dbxout.c | 2619 ++++++ dbxstclass.h | 17 + defaults.h | 141 + demangle.h | 90 + doschk.c | 360 + dostage2 | 2 + dostage3 | 3 + dwarf.h | 315 + dwarf2.h | 548 ++ dwarf2out.c | 9669 +++++++++++++++++++++ dwarfout.c | 5975 +++++++++++++ emit-rtl.c | 3507 ++++++++ enquire.c | 2883 +++++++ except.c | 2386 ++++++ except.h | 291 + explow.c | 1396 +++ expmed.c | 4330 ++++++++++ expr.c | 12077 ++++++++++++++++++++++++++ expr.h | 942 ++ extend.texi | 3481 ++++++++ final.c | 3332 ++++++++ fix-header.c | 1374 +++ fixcpp | 109 + fixinc-nt.sed | 5 + fixinc.dgux | 185 + fixinc.irix | 190 + fixinc.math | 53 + fixinc.ptx | 257 + fixinc.sco | 394 + fixinc.svr4 | 1726 ++++ fixinc.winnt | 232 + fixincludes | 3065 +++++++ fixproto | 282 + flags.h | 410 + floatlib.c | 838 ++ flow.c | 2959 +++++++ fold-const.c | 5875 +++++++++++++ fp-test.c | 231 + frame.c | 605 ++ frame.h | 56 + function.c | 6321 ++++++++++++++ function.h | 265 + future.options | 29 + gansidecl.h | 107 + gbl-ctors.h | 92 + gcc.1 | 4175 +++++++++ gcc.c | 5601 ++++++++++++ gcc.cps | 1964 +++++ gcc.hlp | 403 + gcc.info | 313 + gcc.info-1 | 1162 +++ gcc.info-10 | 1093 +++ gcc.info-11 | 1162 +++ gcc.info-12 | 999 +++ gcc.info-13 | 853 ++ gcc.info-14 | 1163 +++ gcc.info-15 | 1010 +++ gcc.info-16 | 1053 +++ gcc.info-17 | 1104 +++ gcc.info-18 | 1048 +++ gcc.info-19 | 1072 +++ gcc.info-2 | 1158 +++ gcc.info-20 | 1207 +++ gcc.info-21 | 1029 +++ gcc.info-22 | 961 +++ gcc.info-23 | 972 +++ gcc.info-24 | 1054 +++ gcc.info-25 | 1157 +++ gcc.info-26 | 965 +++ gcc.info-27 | 534 ++ gcc.info-28 | 2031 +++++ gcc.info-3 | 1232 +++ gcc.info-4 | 1187 +++ gcc.info-5 | 897 ++ gcc.info-6 | 570 ++ gcc.info-7 | 1098 +++ gcc.info-8 | 1206 +++ gcc.info-9 | 1225 +++ gcc.texi | 4785 +++++++++++ gcov-io.h | 136 + gcov.c | 1391 +++ gcov.texi | 344 + gen-protos.c | 218 + genattr.c | 424 + genattrtab.c | 5774 +++++++++++++ gencodes.c | 161 + genconfig.c | 358 + genemit.c | 803 ++ genextract.c | 558 ++ genflags.c | 297 + genmultilib | 269 + genopinit.c | 389 + genoutput.c | 1012 +++ genpeep.c | 512 ++ genrecog.c | 1822 ++++ getopt.c | 1044 +++ getopt.h | 133 + getopt1.c | 189 + getpwd.c | 103 + ginclude/iso646.h | 15 + ginclude/math-3300.h | 461 + ginclude/math-68881.h | 529 ++ ginclude/ppc-asm.h | 170 + ginclude/proto.h | 4 + ginclude/stdarg.h | 205 + ginclude/stddef.h | 327 + ginclude/va-alpha.h | 131 + ginclude/va-arc.h | 111 + ginclude/va-clipper.h | 60 + ginclude/va-h8300.h | 56 + ginclude/va-i860.h | 214 + ginclude/va-i960.h | 79 + ginclude/va-m32r.h | 86 + ginclude/va-m88k.h | 87 + ginclude/va-mips.h | 276 + ginclude/va-mn10200.h | 37 + ginclude/va-mn10300.h | 35 + ginclude/va-pa.h | 52 + ginclude/va-ppc.h | 233 + ginclude/va-pyr.h | 130 + ginclude/va-sh.h | 199 + ginclude/va-sparc.h | 165 + ginclude/va-spur.h | 64 + ginclude/va-v850.h | 34 + ginclude/varargs.h | 220 + glimits.h | 97 + global.c | 1714 ++++ gmon.c | 329 + gstab.h | 17 + gsyms.h | 86 + gsyslimits.h | 8 + halfpic.c | 400 + halfpic.h | 73 + hard-reg-set.h | 470 + input.h | 47 + install.sh | 238 + install.texi | 2350 +++++ integrate.c | 3388 ++++++++ integrate.h | 136 + invoke.texi | 5697 +++++++++++++ jump.c | 4767 +++++++++++ just-fixinc | 39 + libgcc1-test.c | 103 + libgcc1.c | 596 ++ libgcc2.c | 3899 +++++++++ limitx.h | 12 + limity.h | 10 + listing | 227 + local-alloc.c | 2491 ++++++ longlong.h | 1256 +++ loop.c | 6997 +++++++++++++++ loop.h | 180 + machmode.def | 121 + machmode.h | 227 + make-cc1.com | 545 ++ make-cccp.com | 119 + make-gcc.com | 71 + make-l2.com | 143 + md.texi | 4143 +++++++++ mips-tdump.c | 1617 ++++ mips-tfile.c | 5806 +++++++++++++ modemap.def | 31 + move-if-change | 17 + objc/Make-lang.in | 310 + objc/Makefile.in | 91 + objc/NXConstStr.h | 44 + objc/NXConstStr.m | 42 + objc/Object.h | 124 + objc/Object.m | 387 + objc/Protocol.h | 58 + objc/Protocol.m | 128 + objc/README | 97 + objc/README.threads | 50 + objc/THREADS | 374 + objc/THREADS.MACH | 23 + objc/archive.c | 1657 ++++ objc/class.c | 358 + objc/config-lang.in | 37 + objc/encoding.c | 551 ++ objc/encoding.h | 75 + objc/hash.c | 283 + objc/hash.h | 206 + objc/init.c | 832 ++ objc/libobjc.def | 161 + objc/libobjc_entry.c | 55 + objc/linking.m | 40 + objc/makefile.dos | 56 + objc/misc.c | 152 + objc/nil_method.c | 40 + objc/objc-act.c | 8410 ++++++++++++++++++ objc/objc-act.h | 117 + objc/objc-api.h | 584 ++ objc/objc-list.h | 147 + objc/objc-parse.c | 5098 +++++++++++ objc/objc-parse.y | 2945 +++++++ objc/objc-tree.def | 37 + objc/objc.gperf | 64 + objc/objc.h | 157 + objc/objects.c | 92 + objc/runtime.h | 88 + objc/sarray.c | 522 ++ objc/sarray.h | 237 + objc/selector.c | 458 + objc/sendmsg.c | 650 ++ objc/thr-decosf1.c | 281 + objc/thr-irix.c | 235 + objc/thr-mach.c | 312 + objc/thr-os2.c | 267 + objc/thr-posix.c | 229 + objc/thr-pthreads.c | 218 + objc/thr-single.c | 192 + objc/thr-solaris.c | 259 + objc/thr-win32.c | 272 + objc/thr.c | 534 ++ objc/thr.h | 143 + objc/typedstream.h | 132 + obstack.c | 594 ++ obstack.h | 594 ++ optabs.c | 4419 ++++++++++ output.h | 449 + pcp.h | 101 + pexecute.c | 654 ++ prefix.c | 310 + print-rtl.c | 365 + print-tree.c | 703 ++ profile.c | 1641 ++++ protoize.c | 4745 ++++++++++ pself.c | 1 + pself1.c | 1 + pself2.c | 1 + pself3.c | 1 + real.c | 6304 ++++++++++++++ real.h | 460 + recog.c | 2023 +++++ recog.h | 120 + reg-stack.c | 3254 +++++++ regclass.c | 1980 +++++ regs.h | 221 + reload.c | 6204 ++++++++++++++ reload.h | 237 + reload1.c | 8626 +++++++++++++++++++ reorg.c | 4631 ++++++++++ rtl.c | 853 ++ rtl.def | 773 ++ rtl.h | 1004 +++ rtl.texi | 2850 +++++++ rtlanal.c | 1993 +++++ scan-decls.c | 254 + scan-types.sh | 139 + scan.c | 240 + scan.h | 75 + sched.c | 5095 +++++++++++ sdbout.c | 1638 ++++ sort-protos | 9 + stab.def | 234 + stack.h | 42 + stmt.c | 6576 ++++++++++++++ stor-layout.c | 1256 +++ stupid.c | 601 ++ sys-protos.h | 1354 +++ sys-types.h | 240 + texinfo.tex | 4977 +++++++++++ tm.texi | 7233 ++++++++++++++++ toplev.c | 4662 ++++++++++ tree.c | 4819 +++++++++++ tree.def | 746 ++ tree.h | 1893 ++++ typeclass.h | 14 + unprotoize.c | 1 + unroll.c | 3666 ++++++++ varasm.c | 4696 ++++++++++ version.c | 1 + vmsconfig.com | 488 ++ xcoffout.c | 532 ++ xcoffout.h | 168 + 1217 files changed, 1014643 insertions(+) create mode 100644 .gdbinit create mode 100644 BUGS create mode 100644 COPYING create mode 100644 COPYING.LIB create mode 100644 ChangeLog create mode 100644 ChangeLog.0 create mode 100644 ChangeLog.1 create mode 100644 ChangeLog.10 create mode 100644 ChangeLog.2 create mode 100644 ChangeLog.3 create mode 100644 ChangeLog.4 create mode 100644 ChangeLog.5 create mode 100644 ChangeLog.6 create mode 100644 ChangeLog.7 create mode 100644 ChangeLog.8 create mode 100644 ChangeLog.9 create mode 100644 ChangeLog.lib create mode 100644 INSTALL create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 ORDERS create mode 100644 PROBLEMS create mode 100644 PROJECTS create mode 100644 README create mode 100644 README-fixinc create mode 100644 README.ACORN create mode 100644 README.ALTOS create mode 100644 README.APOLLO create mode 100644 README.DWARF create mode 100644 README.FRESCO create mode 100644 README.NS32K create mode 100644 README.RS6000 create mode 100644 README.TRAD create mode 100644 README.X11 create mode 100644 SERVICE create mode 100644 TAGS create mode 100644 TESTS.FLUNK create mode 100644 acconfig.h create mode 100644 aclocal.m4 create mode 100644 alloca.c create mode 100644 assert.h create mode 100644 basic-block.h create mode 100644 bc-emit.c create mode 100644 bc-emit.h create mode 100644 bc-optab.c create mode 100644 bc-optab.h create mode 100644 bc-typecd.def create mode 100644 bc-typecd.h create mode 100644 bi-arity.c create mode 100644 bi-defs.h create mode 100644 bi-lexer.c create mode 100644 bi-opcode.c create mode 100644 bi-opname.c create mode 100644 bi-parser.c create mode 100644 bi-parser.h create mode 100644 bi-parser.y create mode 100644 bi-reverse.c create mode 100644 bi-run.h create mode 100644 bitmap.c create mode 100644 bitmap.h create mode 100644 build-make create mode 100644 bytecode.def create mode 100644 bytecode.h create mode 100644 bytetypes.h create mode 100644 c-aux-info.c create mode 100644 c-common.c create mode 100644 c-convert.c create mode 100644 c-decl.c create mode 100644 c-gperf.h create mode 100644 c-iterate.c create mode 100644 c-lang.c create mode 100644 c-lex.c create mode 100644 c-lex.h create mode 100644 c-parse.c create mode 100644 c-parse.gperf create mode 100644 c-parse.h create mode 100644 c-parse.in create mode 100644 c-parse.y create mode 100644 c-pragma.c create mode 100644 c-pragma.h create mode 100644 c-tree.h create mode 100644 c-typeck.c create mode 100644 caller-save.c create mode 100644 calls.c create mode 100644 cccp.1 create mode 100644 cccp.c create mode 100644 cexp.c create mode 100644 cexp.y create mode 100644 choose-temp.c create mode 100644 collect2.c create mode 100644 combine.c create mode 100644 conditions.h create mode 100644 config.guess create mode 100644 config.in create mode 100644 config.sub create mode 100644 config/1750a/1750a.c create mode 100644 config/1750a/1750a.h create mode 100644 config/1750a/1750a.md create mode 100644 config/1750a/ms1750.inc create mode 100644 config/1750a/xm-1750a.h create mode 100644 config/README create mode 100644 config/a29k/a29k.c create mode 100644 config/a29k/a29k.h create mode 100644 config/a29k/a29k.md create mode 100644 config/a29k/t-a29k create mode 100644 config/a29k/t-a29kbare create mode 100644 config/a29k/t-vx29k create mode 100644 config/a29k/udi.h create mode 100644 config/a29k/unix.h create mode 100644 config/a29k/vx29k.h create mode 100644 config/a29k/x-unix create mode 100644 config/a29k/xm-a29k.h create mode 100644 config/a29k/xm-unix.h create mode 100644 config/alpha/alpha.c create mode 100644 config/alpha/alpha.h create mode 100644 config/alpha/alpha.md create mode 100644 config/alpha/config-nt.sed create mode 100644 config/alpha/elf.h create mode 100644 config/alpha/linux.h create mode 100644 config/alpha/osf12.h create mode 100644 config/alpha/osf2or3.h create mode 100644 config/alpha/t-linux create mode 100644 config/alpha/t-vms create mode 100644 config/alpha/vms-tramp.asm create mode 100644 config/alpha/vms.h create mode 100644 config/alpha/win-nt.h create mode 100644 config/alpha/x-alpha create mode 100644 config/alpha/xm-alpha.h create mode 100644 config/alpha/xm-linux.h create mode 100644 config/alpha/xm-vms.h create mode 100644 config/alpha/xm-winnt.h create mode 100644 config/aoutos.h create mode 100644 config/arc/arc.c create mode 100644 config/arc/arc.h create mode 100644 config/arc/arc.md create mode 100644 config/arc/initfini.c create mode 100644 config/arc/lib1funcs.asm create mode 100644 config/arc/t-arc create mode 100644 config/arc/xm-arc.h create mode 100644 config/arm/aof.h create mode 100644 config/arm/aout.h create mode 100644 config/arm/arm.c create mode 100644 config/arm/arm.h create mode 100644 config/arm/arm.md create mode 100644 config/arm/coff.h create mode 100644 config/arm/lib1funcs.asm create mode 100644 config/arm/linux-gas.h create mode 100644 config/arm/linux.h create mode 100644 config/arm/netbsd.h create mode 100644 config/arm/riscix.h create mode 100644 config/arm/riscix1-1.h create mode 100644 config/arm/rix-gas.h create mode 100644 config/arm/semi.h create mode 100644 config/arm/semiaof.h create mode 100644 config/arm/t-bare create mode 100644 config/arm/t-linux create mode 100644 config/arm/t-netbsd create mode 100644 config/arm/t-riscix create mode 100644 config/arm/t-semi create mode 100644 config/arm/t-semiaof create mode 100644 config/arm/x-riscix create mode 100644 config/arm/xm-arm.h create mode 100644 config/arm/xm-linux.h create mode 100644 config/arm/xm-netbsd.h create mode 100644 config/clipper/clipper.c create mode 100644 config/clipper/clipper.h create mode 100644 config/clipper/clipper.md create mode 100644 config/clipper/clix.h create mode 100644 config/clipper/x-clix create mode 100644 config/clipper/xm-clix.h create mode 100644 config/convex/convex.c create mode 100644 config/convex/convex.h create mode 100644 config/convex/convex.md create mode 100644 config/convex/fixinc.convex create mode 100644 config/convex/x-convex create mode 100644 config/convex/xm-convex.h create mode 100644 config/dbx.h create mode 100644 config/dbxcoff.h create mode 100644 config/dsp16xx/dsp16xx.c create mode 100644 config/dsp16xx/dsp16xx.h create mode 100644 config/dsp16xx/dsp16xx.md create mode 100644 config/dsp16xx/xm-dsp16xx.h create mode 100644 config/elxsi/elxsi.c create mode 100644 config/elxsi/elxsi.h create mode 100644 config/elxsi/elxsi.md create mode 100644 config/elxsi/x-elxsi create mode 100644 config/elxsi/xm-elxsi.h create mode 100644 config/float-i128.h create mode 100644 config/float-i32.h create mode 100644 config/float-i64.h create mode 100644 config/float-sh.h create mode 100644 config/float-vax.h create mode 100644 config/fp-bit.c create mode 100644 config/fx80/fx80.c create mode 100644 config/fx80/fx80.h create mode 100644 config/fx80/fx80.md create mode 100644 config/fx80/xm-fx80.h create mode 100644 config/gmicro/gmicro.c create mode 100644 config/gmicro/gmicro.h create mode 100644 config/gmicro/gmicro.md create mode 100644 config/gnu.h create mode 100644 config/gofast.h create mode 100644 config/h8300/h8300.c create mode 100644 config/h8300/h8300.h create mode 100644 config/h8300/h8300.md create mode 100644 config/h8300/lib1funcs.asm create mode 100644 config/h8300/t-h8300 create mode 100644 config/h8300/xm-h8300.h create mode 100644 config/i370/i370.c create mode 100644 config/i370/i370.h create mode 100644 config/i370/i370.md create mode 100644 config/i370/t-i370 create mode 100644 config/i370/xm-i370.h create mode 100644 config/i386/386bsd.h create mode 100644 config/i386/aix386.h create mode 100644 config/i386/aix386ng.h create mode 100644 config/i386/att.h create mode 100644 config/i386/bsd.h create mode 100644 config/i386/bsd386.h create mode 100644 config/i386/config-nt.sed create mode 100644 config/i386/crtdll.h create mode 100644 config/i386/cygwin32.asm create mode 100644 config/i386/cygwin32.h create mode 100644 config/i386/dgux.c create mode 100644 config/i386/dgux.h create mode 100644 config/i386/freebsd-elf.h create mode 100644 config/i386/freebsd.h create mode 100644 config/i386/gas.h create mode 100644 config/i386/gmon-sol2.c create mode 100644 config/i386/gnu.h create mode 100644 config/i386/go32-rtems.h create mode 100644 config/i386/go32.h create mode 100644 config/i386/gstabs.h create mode 100644 config/i386/i386-aout.h create mode 100644 config/i386/i386-coff.h create mode 100644 config/i386/i386.c create mode 100644 config/i386/i386.h create mode 100644 config/i386/i386.md create mode 100644 config/i386/isc.h create mode 100644 config/i386/isccoff.h create mode 100644 config/i386/iscdbx.h create mode 100644 config/i386/linux-aout.h create mode 100644 config/i386/linux-oldld.h create mode 100644 config/i386/linux.h create mode 100644 config/i386/lynx-ng.h create mode 100644 config/i386/lynx.h create mode 100644 config/i386/mach.h create mode 100644 config/i386/mingw32.h create mode 100644 config/i386/moss.h create mode 100644 config/i386/netbsd.h create mode 100644 config/i386/next.h create mode 100644 config/i386/os2.h create mode 100644 config/i386/osfelf.h create mode 100644 config/i386/osfrose.h create mode 100644 config/i386/perform.h create mode 100644 config/i386/ptx4-i.h create mode 100644 config/i386/rtems.h create mode 100644 config/i386/sco.h create mode 100644 config/i386/sco4.h create mode 100644 config/i386/sco4dbx.h create mode 100644 config/i386/sco5.h create mode 100644 config/i386/scodbx.h create mode 100644 config/i386/seq-gas.h create mode 100644 config/i386/seq-sysv3.h create mode 100644 config/i386/seq2-sysv3.h create mode 100644 config/i386/sequent.h create mode 100644 config/i386/sol2-c1.asm create mode 100644 config/i386/sol2-ci.asm create mode 100644 config/i386/sol2-cn.asm create mode 100644 config/i386/sol2-gc1.asm create mode 100644 config/i386/sol2.h create mode 100644 config/i386/sol2dbg.h create mode 100644 config/i386/sun.h create mode 100644 config/i386/sun386.h create mode 100644 config/i386/svr3.ifile create mode 100644 config/i386/svr3dbx.h create mode 100644 config/i386/svr3gas.h create mode 100644 config/i386/svr3z.ifile create mode 100644 config/i386/sysv3.h create mode 100644 config/i386/sysv4.h create mode 100644 config/i386/t-crtpic create mode 100644 config/i386/t-crtstuff create mode 100644 config/i386/t-cygwin32 create mode 100644 config/i386/t-dgux create mode 100644 config/i386/t-freebsd create mode 100644 config/i386/t-go32 create mode 100644 config/i386/t-i386bare create mode 100644 config/i386/t-next create mode 100644 config/i386/t-osf create mode 100644 config/i386/t-sco5 create mode 100644 config/i386/t-sol2 create mode 100644 config/i386/t-svr3dbx create mode 100644 config/i386/t-vsta create mode 100644 config/i386/t-winnt create mode 100644 config/i386/unix.h create mode 100644 config/i386/v3gas.h create mode 100644 config/i386/vsta.h create mode 100644 config/i386/win-nt.h create mode 100644 config/i386/winnt.c create mode 100644 config/i386/x-aix create mode 100644 config/i386/x-cygwin32 create mode 100644 config/i386/x-dgux create mode 100644 config/i386/x-isc create mode 100644 config/i386/x-isc3 create mode 100644 config/i386/x-ncr3000 create mode 100644 config/i386/x-next create mode 100644 config/i386/x-osfrose create mode 100644 config/i386/x-sco create mode 100644 config/i386/x-sco4 create mode 100644 config/i386/x-sco5 create mode 100644 config/i386/x-sysv3 create mode 100644 config/i386/x-vsta create mode 100644 config/i386/xm-aix.h create mode 100644 config/i386/xm-bsd386.h create mode 100644 config/i386/xm-cygwin32.h create mode 100644 config/i386/xm-dgux.h create mode 100644 config/i386/xm-dos.h create mode 100644 config/i386/xm-gnu.h create mode 100644 config/i386/xm-go32.h create mode 100644 config/i386/xm-i386.h create mode 100644 config/i386/xm-isc.h create mode 100644 config/i386/xm-linux.h create mode 100644 config/i386/xm-lynx.h create mode 100644 config/i386/xm-mingw32.h create mode 100644 config/i386/xm-next.h create mode 100644 config/i386/xm-os2.h create mode 100644 config/i386/xm-osf.h create mode 100644 config/i386/xm-sco.h create mode 100644 config/i386/xm-sco5.h create mode 100644 config/i386/xm-sun.h create mode 100644 config/i386/xm-sysv3.h create mode 100644 config/i386/xm-sysv4.h create mode 100644 config/i386/xm-vsta.h create mode 100644 config/i386/xm-winnt.h create mode 100644 config/i860/bsd-gas.h create mode 100644 config/i860/bsd.h create mode 100644 config/i860/fx2800.h create mode 100644 config/i860/i860.c create mode 100644 config/i860/i860.h create mode 100644 config/i860/i860.md create mode 100644 config/i860/mach.h create mode 100644 config/i860/paragon.h create mode 100644 config/i860/sysv3.h create mode 100644 config/i860/sysv4.h create mode 100644 config/i860/t-fx2800 create mode 100644 config/i860/x-fx2800 create mode 100644 config/i860/x-sysv3 create mode 100644 config/i860/x-sysv4 create mode 100644 config/i860/xm-i860.h create mode 100644 config/i960/i960-coff.h create mode 100644 config/i960/i960.c create mode 100644 config/i960/i960.h create mode 100644 config/i960/i960.md create mode 100644 config/i960/rtems.h create mode 100644 config/i960/t-960bare create mode 100644 config/i960/t-vxworks960 create mode 100644 config/i960/vx960-coff.h create mode 100644 config/i960/vx960.h create mode 100644 config/i960/xm-i960.h create mode 100644 config/libgloss.h create mode 100644 config/linux-aout.h create mode 100644 config/linux.h create mode 100644 config/lynx-ng.h create mode 100644 config/lynx.h create mode 100644 config/m32r/initfini.c create mode 100644 config/m32r/m32r.c create mode 100644 config/m32r/m32r.h create mode 100644 config/m32r/m32r.md create mode 100644 config/m32r/t-m32r create mode 100644 config/m32r/xm-m32r.h create mode 100644 config/m68k/3b1.h create mode 100644 config/m68k/3b1g.h create mode 100644 config/m68k/a-ux.h create mode 100644 config/m68k/altos3068.h create mode 100644 config/m68k/amix.h create mode 100644 config/m68k/apollo68.h create mode 100644 config/m68k/atari.h create mode 100644 config/m68k/aux-crt1.c create mode 100644 config/m68k/aux-crt2.asm create mode 100644 config/m68k/aux-crtn.asm create mode 100644 config/m68k/aux-exit.c create mode 100644 config/m68k/aux-low.gld create mode 100644 config/m68k/aux-mcount.c create mode 100644 config/m68k/auxas.h create mode 100644 config/m68k/auxgas.h create mode 100644 config/m68k/auxgld.h create mode 100644 config/m68k/auxld.h create mode 100644 config/m68k/ccur-GAS.h create mode 100644 config/m68k/coff.h create mode 100644 config/m68k/crds.h create mode 100644 config/m68k/ctix.h create mode 100644 config/m68k/dpx2.h create mode 100644 config/m68k/dpx2.ifile create mode 100644 config/m68k/dpx2cdbx.h create mode 100644 config/m68k/dpx2g.h create mode 100644 config/m68k/fpgnulib.c create mode 100644 config/m68k/hp2bsd.h create mode 100644 config/m68k/hp310.h create mode 100644 config/m68k/hp310g.h create mode 100644 config/m68k/hp320.h create mode 100644 config/m68k/hp320g.h create mode 100644 config/m68k/hp3bsd.h create mode 100644 config/m68k/hp3bsd44.h create mode 100644 config/m68k/hpux7.h create mode 100644 config/m68k/isi-nfp.h create mode 100644 config/m68k/isi.h create mode 100644 config/m68k/lb1sf68.asm create mode 100644 config/m68k/linux-aout.h create mode 100644 config/m68k/linux.h create mode 100644 config/m68k/lynx-ng.h create mode 100644 config/m68k/lynx.h create mode 100644 config/m68k/m68k-aout.h create mode 100644 config/m68k/m68k-coff.h create mode 100644 config/m68k/m68k-none.h create mode 100644 config/m68k/m68k-psos.h create mode 100644 config/m68k/m68k.c create mode 100644 config/m68k/m68k.h create mode 100644 config/m68k/m68k.md create mode 100644 config/m68k/m68kemb.h create mode 100644 config/m68k/m68kv4.h create mode 100644 config/m68k/mot3300-crt0.S create mode 100644 config/m68k/mot3300.h create mode 100644 config/m68k/mot3300Mcrt0.S create mode 100644 config/m68k/netbsd.h create mode 100644 config/m68k/news.h create mode 100644 config/m68k/news3.h create mode 100644 config/m68k/news3gas.h create mode 100644 config/m68k/newsgas.h create mode 100644 config/m68k/next.h create mode 100644 config/m68k/next21.h create mode 100644 config/m68k/pbb.h create mode 100644 config/m68k/plexus.h create mode 100644 config/m68k/rtems.h create mode 100644 config/m68k/sgs.h create mode 100644 config/m68k/sun2.h create mode 100644 config/m68k/sun2o4.h create mode 100644 config/m68k/sun3.h create mode 100644 config/m68k/sun3mach.h create mode 100644 config/m68k/sun3n.h create mode 100644 config/m68k/sun3n3.h create mode 100644 config/m68k/sun3o3.h create mode 100644 config/m68k/t-aux create mode 100644 config/m68k/t-linux create mode 100644 config/m68k/t-linux-aout create mode 100644 config/m68k/t-lynx create mode 100644 config/m68k/t-m68kbare create mode 100644 config/m68k/t-mot3300 create mode 100644 config/m68k/t-mot3300-gald create mode 100644 config/m68k/t-mot3300-gas create mode 100644 config/m68k/t-mot3300-gld create mode 100644 config/m68k/t-next create mode 100644 config/m68k/t-vxworks68 create mode 100644 config/m68k/tower-as.h create mode 100644 config/m68k/tower.h create mode 100644 config/m68k/vxm68k.h create mode 100644 config/m68k/x-alloca-c create mode 100644 config/m68k/x-amix create mode 100644 config/m68k/x-apollo68 create mode 100644 config/m68k/x-ccur create mode 100644 config/m68k/x-crds create mode 100644 config/m68k/x-dpx2 create mode 100644 config/m68k/x-hp2bsd create mode 100644 config/m68k/x-hp320 create mode 100644 config/m68k/x-hp320g create mode 100644 config/m68k/x-hp3bsd44 create mode 100644 config/m68k/x-mot3300 create mode 100644 config/m68k/x-mot3300-gas create mode 100644 config/m68k/x-next create mode 100644 config/m68k/x-tower create mode 100644 config/m68k/xm-3b1.h create mode 100644 config/m68k/xm-altos3068.h create mode 100644 config/m68k/xm-amix.h create mode 100644 config/m68k/xm-atari.h create mode 100644 config/m68k/xm-aux.h create mode 100644 config/m68k/xm-crds.h create mode 100644 config/m68k/xm-hp320.h create mode 100644 config/m68k/xm-linux.h create mode 100644 config/m68k/xm-lynx.h create mode 100644 config/m68k/xm-m68k.h create mode 100644 config/m68k/xm-m68kv.h create mode 100644 config/m68k/xm-mot3300.h create mode 100644 config/m68k/xm-next.h create mode 100644 config/m68k/xm-plexus.h create mode 100644 config/m88k/dgux.h create mode 100644 config/m88k/dgux.ld create mode 100644 config/m88k/dguxbcs.h create mode 100644 config/m88k/dolph.h create mode 100644 config/m88k/dolphin.ld create mode 100644 config/m88k/luna.h create mode 100644 config/m88k/m88k-aout.h create mode 100644 config/m88k/m88k-coff.h create mode 100644 config/m88k/m88k-move.sh create mode 100644 config/m88k/m88k.c create mode 100644 config/m88k/m88k.h create mode 100644 config/m88k/m88k.md create mode 100644 config/m88k/sysv3.h create mode 100644 config/m88k/sysv4.h create mode 100644 config/m88k/t-bug create mode 100644 config/m88k/t-dgux create mode 100644 config/m88k/t-dgux-gas create mode 100644 config/m88k/t-dguxbcs create mode 100644 config/m88k/t-luna create mode 100644 config/m88k/t-luna-gas create mode 100644 config/m88k/t-m88k create mode 100644 config/m88k/t-m88k-gas create mode 100644 config/m88k/t-sysv4 create mode 100644 config/m88k/tekXD88.h create mode 100644 config/m88k/tekXD88.ld create mode 100644 config/m88k/x-dgux create mode 100644 config/m88k/x-dguxbcs create mode 100644 config/m88k/x-dolph create mode 100644 config/m88k/x-sysv3 create mode 100644 config/m88k/x-sysv4 create mode 100644 config/m88k/x-tekXD88 create mode 100644 config/m88k/xm-m88k.h create mode 100644 config/m88k/xm-sysv3.h create mode 100644 config/mips/abi64.h create mode 100644 config/mips/bsd-4.h create mode 100644 config/mips/bsd-5.h create mode 100644 config/mips/cross64.h create mode 100644 config/mips/dec-bsd.h create mode 100644 config/mips/dec-osf1.h create mode 100644 config/mips/ecoff.h create mode 100644 config/mips/ecoffl.h create mode 100644 config/mips/elf.h create mode 100644 config/mips/elf64.h create mode 100644 config/mips/elfl.h create mode 100644 config/mips/elfl64.h create mode 100644 config/mips/elflorion.h create mode 100644 config/mips/elforion.h create mode 100644 config/mips/gnu.h create mode 100644 config/mips/iris3.h create mode 100644 config/mips/iris4.h create mode 100644 config/mips/iris4loser.h create mode 100644 config/mips/iris5.h create mode 100644 config/mips/iris5gas.h create mode 100644 config/mips/iris6.h create mode 100644 config/mips/mips-5.h create mode 100644 config/mips/mips.c create mode 100644 config/mips/mips.h create mode 100644 config/mips/mips.md create mode 100644 config/mips/netbsd.h create mode 100644 config/mips/news4.h create mode 100644 config/mips/news5.h create mode 100644 config/mips/nws3250v4.h create mode 100644 config/mips/osfrose.h create mode 100644 config/mips/r3900.h create mode 100644 config/mips/rtems64.h create mode 100644 config/mips/sni-gas.h create mode 100644 config/mips/sni-svr4.h create mode 100644 config/mips/svr3-4.h create mode 100644 config/mips/svr3-5.h create mode 100644 config/mips/svr4-4.h create mode 100644 config/mips/svr4-5.h create mode 100644 config/mips/svr4-t.h create mode 100644 config/mips/t-bsd create mode 100644 config/mips/t-bsd-gas create mode 100644 config/mips/t-cross64 create mode 100644 config/mips/t-ecoff create mode 100644 config/mips/t-iris6 create mode 100644 config/mips/t-mips create mode 100644 config/mips/t-mips-gas create mode 100644 config/mips/t-osfrose create mode 100644 config/mips/t-svr3 create mode 100644 config/mips/t-svr3-gas create mode 100644 config/mips/t-svr4 create mode 100644 config/mips/t-svr4-gas create mode 100644 config/mips/t-ultrix create mode 100644 config/mips/ultrix.h create mode 100644 config/mips/x-dec-osf1 create mode 100644 config/mips/x-iris create mode 100644 config/mips/x-iris3 create mode 100644 config/mips/x-iris6 create mode 100644 config/mips/x-mips create mode 100644 config/mips/x-netbsd create mode 100644 config/mips/x-nws3250v4 create mode 100644 config/mips/x-osfrose create mode 100644 config/mips/x-sni-svr4 create mode 100644 config/mips/x-sony create mode 100644 config/mips/x-sysv create mode 100644 config/mips/x-ultrix create mode 100644 config/mips/xm-iris3.h create mode 100644 config/mips/xm-iris4.h create mode 100644 config/mips/xm-iris5.h create mode 100644 config/mips/xm-iris6.h create mode 100644 config/mips/xm-mips.h create mode 100644 config/mips/xm-news.h create mode 100644 config/mips/xm-nws3250v4.h create mode 100644 config/mips/xm-sysv.h create mode 100644 config/mips/xm-sysv4.h create mode 100644 config/mn10200/divmod.c create mode 100644 config/mn10200/lib1funcs.asm create mode 100644 config/mn10200/mn10200.c create mode 100644 config/mn10200/mn10200.h create mode 100644 config/mn10200/mn10200.md create mode 100644 config/mn10200/t-mn10200 create mode 100644 config/mn10200/udivmod.c create mode 100644 config/mn10200/udivmodsi4.c create mode 100644 config/mn10200/xm-mn10200.h create mode 100644 config/mn10300/mn10300.c create mode 100644 config/mn10300/mn10300.h create mode 100644 config/mn10300/mn10300.md create mode 100644 config/mn10300/t-mn10300 create mode 100644 config/mn10300/xm-mn10300.h create mode 100644 config/msdos/configur.bat create mode 100644 config/msdos/libgcc.mak create mode 100644 config/msdos/mklibgcc.c create mode 100644 config/msdos/top.sed create mode 100644 config/netbsd.h create mode 100644 config/nextstep.c create mode 100644 config/nextstep.h create mode 100644 config/nextstep21.h create mode 100644 config/ns32k/encore.h create mode 100644 config/ns32k/genix.h create mode 100644 config/ns32k/merlin.h create mode 100644 config/ns32k/netbsd.h create mode 100644 config/ns32k/ns32k.c create mode 100644 config/ns32k/ns32k.h create mode 100644 config/ns32k/ns32k.md create mode 100644 config/ns32k/pc532-mach.h create mode 100644 config/ns32k/pc532-min.h create mode 100644 config/ns32k/pc532.h create mode 100644 config/ns32k/sequent.h create mode 100644 config/ns32k/tek6000.h create mode 100644 config/ns32k/tek6100.h create mode 100644 config/ns32k/tek6200.h create mode 100644 config/ns32k/x-genix create mode 100644 config/ns32k/xm-genix.h create mode 100644 config/ns32k/xm-ns32k.h create mode 100644 config/ns32k/xm-pc532-min.h create mode 100644 config/pa/ee.asm create mode 100644 config/pa/ee_fp.asm create mode 100644 config/pa/lib1funcs.asm create mode 100644 config/pa/lib2funcs.asm create mode 100644 config/pa/pa-gas.h create mode 100644 config/pa/pa-hiux.h create mode 100644 config/pa/pa-hpux.h create mode 100644 config/pa/pa-hpux10.h create mode 100644 config/pa/pa-hpux7.h create mode 100644 config/pa/pa-hpux9.h create mode 100644 config/pa/pa-oldas.h create mode 100644 config/pa/pa-osf.h create mode 100644 config/pa/pa-pro-end.h create mode 100644 config/pa/pa-pro.h create mode 100644 config/pa/pa.c create mode 100644 config/pa/pa.h create mode 100644 config/pa/pa.md create mode 100644 config/pa/pa1.h create mode 100644 config/pa/rtems.h create mode 100644 config/pa/t-pa create mode 100644 config/pa/t-pro create mode 100644 config/pa/x-pa create mode 100644 config/pa/x-pa-hpux create mode 100644 config/pa/xm-pa.h create mode 100644 config/pa/xm-pahpux.h create mode 100644 config/pa/xm-papro.h create mode 100644 config/pdp11/2bsd.h create mode 100644 config/pdp11/pdp11.c create mode 100644 config/pdp11/pdp11.h create mode 100644 config/pdp11/pdp11.md create mode 100644 config/pdp11/t-pdp11 create mode 100644 config/pdp11/xm-pdp11.h create mode 100644 config/psos.h create mode 100644 config/ptx4.h create mode 100644 config/pyr/pyr.c create mode 100644 config/pyr/pyr.h create mode 100644 config/pyr/pyr.md create mode 100644 config/pyr/x-pyr create mode 100644 config/pyr/xm-pyr.h create mode 100644 config/romp/romp.c create mode 100644 config/romp/romp.h create mode 100644 config/romp/romp.md create mode 100644 config/romp/x-mach create mode 100644 config/romp/x-romp create mode 100644 config/romp/xm-romp.h create mode 100644 config/rs6000/aix31.h create mode 100644 config/rs6000/aix3newas.h create mode 100644 config/rs6000/aix41.h create mode 100644 config/rs6000/cygwin32.h create mode 100644 config/rs6000/eabi-ci.asm create mode 100644 config/rs6000/eabi-cn.asm create mode 100644 config/rs6000/eabi-ctors.c create mode 100644 config/rs6000/eabi.asm create mode 100644 config/rs6000/eabi.h create mode 100644 config/rs6000/eabiaix.h create mode 100644 config/rs6000/eabile.h create mode 100644 config/rs6000/eabilesim.h create mode 100644 config/rs6000/eabisim.h create mode 100644 config/rs6000/linux.h create mode 100644 config/rs6000/lynx.h create mode 100644 config/rs6000/mach.h create mode 100644 config/rs6000/milli.exp create mode 100644 config/rs6000/netware.h create mode 100644 config/rs6000/nt-ci.asm create mode 100644 config/rs6000/nt-cn.asm create mode 100644 config/rs6000/ntstack.asm create mode 100644 config/rs6000/powerpc.h create mode 100644 config/rs6000/rs6000.c create mode 100644 config/rs6000/rs6000.h create mode 100644 config/rs6000/rs6000.md create mode 100644 config/rs6000/rtems.h create mode 100644 config/rs6000/sol-c0.c create mode 100644 config/rs6000/sol-ci.asm create mode 100644 config/rs6000/sol-cn.asm create mode 100644 config/rs6000/sol2.h create mode 100644 config/rs6000/sysv4.h create mode 100644 config/rs6000/sysv4le.h create mode 100644 config/rs6000/t-newas create mode 100644 config/rs6000/t-ppc create mode 100644 config/rs6000/t-ppccomm create mode 100644 config/rs6000/t-ppcgas create mode 100644 config/rs6000/t-ppcos create mode 100644 config/rs6000/t-rs6000 create mode 100644 config/rs6000/t-winnt create mode 100644 config/rs6000/t-xnewas create mode 100644 config/rs6000/t-xrs6000 create mode 100644 config/rs6000/tramp.asm create mode 100644 config/rs6000/vxppc.h create mode 100644 config/rs6000/win-nt.h create mode 100644 config/rs6000/x-aix31 create mode 100644 config/rs6000/x-cygwin32 create mode 100644 config/rs6000/x-lynx create mode 100644 config/rs6000/x-mach create mode 100644 config/rs6000/x-rs6000 create mode 100644 config/rs6000/x-sysv4 create mode 100644 config/rs6000/xm-cygwin32.h create mode 100644 config/rs6000/xm-lynx.h create mode 100644 config/rs6000/xm-mach.h create mode 100644 config/rs6000/xm-rs6000.h create mode 100644 config/rs6000/xm-sysv4.h create mode 100644 config/sh/elf.h create mode 100644 config/sh/lib1funcs.asm create mode 100644 config/sh/rtems.h create mode 100644 config/sh/sh.c create mode 100644 config/sh/sh.h create mode 100644 config/sh/sh.md create mode 100644 config/sh/t-sh create mode 100644 config/sh/xm-sh.h create mode 100644 config/sparc/aout.h create mode 100644 config/sparc/bsd.h create mode 100644 config/sparc/elf.h create mode 100644 config/sparc/gmon-sol2.c create mode 100644 config/sparc/lb1spc.asm create mode 100644 config/sparc/lb1spl.asm create mode 100644 config/sparc/linux-aout.h create mode 100644 config/sparc/linux.h create mode 100644 config/sparc/linux64.h create mode 100644 config/sparc/lite.h create mode 100644 config/sparc/litecoff.h create mode 100644 config/sparc/lynx-ng.h create mode 100644 config/sparc/lynx.h create mode 100644 config/sparc/netbsd.h create mode 100644 config/sparc/pbd.h create mode 100644 config/sparc/rtems.h create mode 100644 config/sparc/sol2-c1.asm create mode 100644 config/sparc/sol2-ci.asm create mode 100644 config/sparc/sol2-cn.asm create mode 100644 config/sparc/sol2-g1.asm create mode 100644 config/sparc/sol2-sld.h create mode 100644 config/sparc/sol2.h create mode 100644 config/sparc/sp64-aout.h create mode 100644 config/sparc/sp64-elf.h create mode 100644 config/sparc/sparc.c create mode 100644 config/sparc/sparc.h create mode 100644 config/sparc/sparc.md create mode 100644 config/sparc/splet.h create mode 100644 config/sparc/sun4gas.h create mode 100644 config/sparc/sun4o3.h create mode 100644 config/sparc/sunos4.h create mode 100644 config/sparc/sysv4.h create mode 100644 config/sparc/t-elf create mode 100644 config/sparc/t-linux create mode 100644 config/sparc/t-sol2 create mode 100644 config/sparc/t-sp64 create mode 100644 config/sparc/t-sparcbare create mode 100644 config/sparc/t-sparclite create mode 100644 config/sparc/t-splet create mode 100644 config/sparc/t-sunos40 create mode 100644 config/sparc/t-sunos41 create mode 100644 config/sparc/t-vxsparc create mode 100644 config/sparc/vxsim.h create mode 100644 config/sparc/vxsparc.h create mode 100644 config/sparc/x-sysv4 create mode 100644 config/sparc/xm-linux.h create mode 100644 config/sparc/xm-lynx.h create mode 100644 config/sparc/xm-pbd.h create mode 100644 config/sparc/xm-sol2.h create mode 100644 config/sparc/xm-sp64.h create mode 100644 config/sparc/xm-sparc.h create mode 100644 config/sparc/xm-sysv4.h create mode 100644 config/spur/spur.c create mode 100644 config/spur/spur.h create mode 100644 config/spur/spur.md create mode 100644 config/spur/xm-spur.h create mode 100644 config/svr3.h create mode 100644 config/svr4.h create mode 100644 config/t-gnu create mode 100644 config/t-libc-ok create mode 100644 config/t-linux create mode 100644 config/t-linux-aout create mode 100644 config/t-linux-gnulibc1 create mode 100644 config/t-netbsd create mode 100644 config/t-rtems create mode 100644 config/t-svr4 create mode 100644 config/tahoe/harris.h create mode 100644 config/tahoe/tahoe.c create mode 100644 config/tahoe/tahoe.h create mode 100644 config/tahoe/tahoe.md create mode 100644 config/tahoe/xm-tahoe.h create mode 100644 config/v850/lib1funcs.asm create mode 100644 config/v850/t-v850 create mode 100644 config/v850/v850.c create mode 100644 config/v850/v850.h create mode 100644 config/v850/v850.md create mode 100644 config/v850/xm-v850.h create mode 100644 config/vax/netbsd.h create mode 100644 config/vax/ultrix.h create mode 100644 config/vax/vax.c create mode 100644 config/vax/vax.h create mode 100644 config/vax/vax.md create mode 100644 config/vax/vaxv.h create mode 100644 config/vax/vms.h create mode 100644 config/vax/xm-vax.h create mode 100644 config/vax/xm-vaxv.h create mode 100644 config/vax/xm-vms.h create mode 100644 config/we32k/we32k.c create mode 100644 config/we32k/we32k.h create mode 100644 config/we32k/we32k.md create mode 100644 config/we32k/x-we32k create mode 100644 config/we32k/xm-we32k.h create mode 100644 config/winnt/config-nt.bat create mode 100644 config/winnt/config-nt.sed create mode 100644 config/winnt/dirent.c create mode 100644 config/winnt/dirent.h create mode 100644 config/winnt/fixinc-nt.c create mode 100644 config/winnt/headers.mak create mode 100644 config/winnt/ld.c create mode 100644 config/winnt/libgcc.mak create mode 100644 config/winnt/mklibgcc.c create mode 100644 config/winnt/oldnames.c create mode 100644 config/winnt/spawnv.c create mode 100644 config/winnt/win-nt.h create mode 100644 config/winnt/x-winnt create mode 100644 config/winnt/xm-winnt.h create mode 100644 config/x-linux create mode 100644 config/x-linux-aout create mode 100644 config/x-lynx create mode 100644 config/x-svr4 create mode 100644 config/xm-gnu.h create mode 100644 config/xm-linux.h create mode 100644 config/xm-lynx.h create mode 100644 config/xm-std32.h create mode 100644 config/xm-svr3.h create mode 100644 config/xm-svr4.h create mode 100644 configure create mode 100644 configure.bat create mode 100644 configure.frag create mode 100644 configure.in create mode 100644 configure.lang create mode 100644 convert.c create mode 100644 convert.h create mode 100644 cp/ChangeLog create mode 100644 cp/ChangeLog.1 create mode 100644 cp/Make-lang.in create mode 100644 cp/Makefile.in create mode 100644 cp/NEWS create mode 100644 cp/call.c create mode 100644 cp/class.c create mode 100644 cp/class.h create mode 100644 cp/config-lang.in create mode 100644 cp/cp-tree.def create mode 100644 cp/cp-tree.h create mode 100644 cp/cvt.c create mode 100644 cp/decl.c create mode 100644 cp/decl.h create mode 100644 cp/decl2.c create mode 100644 cp/errfn.c create mode 100644 cp/error.c create mode 100644 cp/except.c create mode 100644 cp/exception.cc create mode 100644 cp/expr.c create mode 100644 cp/friend.c create mode 100644 cp/g++.1 create mode 100644 cp/g++FAQ.texi create mode 100644 cp/g++spec.c create mode 100644 cp/gxx.gperf create mode 100644 cp/gxxint.texi create mode 100644 cp/hash.h create mode 100644 cp/inc/exception create mode 100644 cp/inc/new create mode 100644 cp/inc/new.h create mode 100644 cp/inc/typeinfo create mode 100644 cp/init.c create mode 100644 cp/input.c create mode 100644 cp/lang-options.h create mode 100644 cp/lang-specs.h create mode 100644 cp/lex.c create mode 100644 cp/lex.h create mode 100644 cp/method.c create mode 100644 cp/mpw-config.in create mode 100644 cp/mpw-make.sed create mode 100644 cp/new.cc create mode 100644 cp/new1.cc create mode 100644 cp/new2.cc create mode 100644 cp/parse.c create mode 100644 cp/parse.h create mode 100644 cp/parse.y create mode 100644 cp/pt.c create mode 100644 cp/ptree.c create mode 100644 cp/repo.c create mode 100644 cp/rtti.c create mode 100644 cp/search.c create mode 100644 cp/sig.c create mode 100644 cp/spew.c create mode 100644 cp/tinfo.cc create mode 100644 cp/tinfo.h create mode 100644 cp/tinfo2.cc create mode 100644 cp/tree.c create mode 100644 cp/typeck.c create mode 100644 cp/typeck2.c create mode 100644 cp/xref.c create mode 100644 cplus-dem.c create mode 100644 cpp.1 create mode 100644 cpp.cps create mode 100644 cpp.fns create mode 100644 cpp.info create mode 100644 cpp.info-1 create mode 100644 cpp.info-2 create mode 100644 cpp.info-3 create mode 100644 cpp.texi create mode 100644 cppalloc.c create mode 100644 cpperror.c create mode 100644 cppexp.c create mode 100644 cpphash.c create mode 100644 cpphash.h create mode 100644 cpplib.c create mode 100644 cpplib.h create mode 100644 cppmain.c create mode 100644 cross-make create mode 100644 crtstuff.c create mode 100644 cse.c create mode 100644 cstamp-h.in create mode 100644 dbxout.c create mode 100644 dbxstclass.h create mode 100644 defaults.h create mode 100644 demangle.h create mode 100644 doschk.c create mode 100644 dostage2 create mode 100644 dostage3 create mode 100644 dwarf.h create mode 100644 dwarf2.h create mode 100644 dwarf2out.c create mode 100644 dwarfout.c create mode 100644 emit-rtl.c create mode 100644 enquire.c create mode 100644 except.c create mode 100644 except.h create mode 100644 explow.c create mode 100644 expmed.c create mode 100644 expr.c create mode 100644 expr.h create mode 100644 extend.texi create mode 100644 final.c create mode 100644 fix-header.c create mode 100644 fixcpp create mode 100644 fixinc-nt.sed create mode 100644 fixinc.dgux create mode 100644 fixinc.irix create mode 100644 fixinc.math create mode 100644 fixinc.ptx create mode 100644 fixinc.sco create mode 100644 fixinc.svr4 create mode 100644 fixinc.winnt create mode 100644 fixincludes create mode 100644 fixproto create mode 100644 flags.h create mode 100644 floatlib.c create mode 100644 flow.c create mode 100644 fold-const.c create mode 100644 fp-test.c create mode 100644 frame.c create mode 100644 frame.h create mode 100644 function.c create mode 100644 function.h create mode 100644 future.options create mode 100644 gansidecl.h create mode 100644 gbl-ctors.h create mode 100644 gcc.1 create mode 100644 gcc.c create mode 100644 gcc.cps create mode 100644 gcc.hlp create mode 100644 gcc.info create mode 100644 gcc.info-1 create mode 100644 gcc.info-10 create mode 100644 gcc.info-11 create mode 100644 gcc.info-12 create mode 100644 gcc.info-13 create mode 100644 gcc.info-14 create mode 100644 gcc.info-15 create mode 100644 gcc.info-16 create mode 100644 gcc.info-17 create mode 100644 gcc.info-18 create mode 100644 gcc.info-19 create mode 100644 gcc.info-2 create mode 100644 gcc.info-20 create mode 100644 gcc.info-21 create mode 100644 gcc.info-22 create mode 100644 gcc.info-23 create mode 100644 gcc.info-24 create mode 100644 gcc.info-25 create mode 100644 gcc.info-26 create mode 100644 gcc.info-27 create mode 100644 gcc.info-28 create mode 100644 gcc.info-3 create mode 100644 gcc.info-4 create mode 100644 gcc.info-5 create mode 100644 gcc.info-6 create mode 100644 gcc.info-7 create mode 100644 gcc.info-8 create mode 100644 gcc.info-9 create mode 100644 gcc.texi create mode 100644 gcov-io.h create mode 100644 gcov.c create mode 100644 gcov.texi create mode 100644 gen-protos.c create mode 100644 genattr.c create mode 100644 genattrtab.c create mode 100644 gencodes.c create mode 100644 genconfig.c create mode 100644 genemit.c create mode 100644 genextract.c create mode 100644 genflags.c create mode 100644 genmultilib create mode 100644 genopinit.c create mode 100644 genoutput.c create mode 100644 genpeep.c create mode 100644 genrecog.c create mode 100644 getopt.c create mode 100644 getopt.h create mode 100644 getopt1.c create mode 100644 getpwd.c create mode 100644 ginclude/iso646.h create mode 100644 ginclude/math-3300.h create mode 100644 ginclude/math-68881.h create mode 100644 ginclude/ppc-asm.h create mode 100644 ginclude/proto.h create mode 100644 ginclude/stdarg.h create mode 100644 ginclude/stddef.h create mode 100644 ginclude/va-alpha.h create mode 100644 ginclude/va-arc.h create mode 100644 ginclude/va-clipper.h create mode 100644 ginclude/va-h8300.h create mode 100644 ginclude/va-i860.h create mode 100644 ginclude/va-i960.h create mode 100644 ginclude/va-m32r.h create mode 100644 ginclude/va-m88k.h create mode 100644 ginclude/va-mips.h create mode 100644 ginclude/va-mn10200.h create mode 100644 ginclude/va-mn10300.h create mode 100644 ginclude/va-pa.h create mode 100644 ginclude/va-ppc.h create mode 100644 ginclude/va-pyr.h create mode 100644 ginclude/va-sh.h create mode 100644 ginclude/va-sparc.h create mode 100644 ginclude/va-spur.h create mode 100644 ginclude/va-v850.h create mode 100644 ginclude/varargs.h create mode 100644 glimits.h create mode 100644 global.c create mode 100644 gmon.c create mode 100644 gstab.h create mode 100644 gsyms.h create mode 100644 gsyslimits.h create mode 100644 halfpic.c create mode 100644 halfpic.h create mode 100644 hard-reg-set.h create mode 100644 input.h create mode 100644 install.sh create mode 100644 install.texi create mode 100644 integrate.c create mode 100644 integrate.h create mode 100644 invoke.texi create mode 100644 jump.c create mode 100644 just-fixinc create mode 100644 libgcc1-test.c create mode 100644 libgcc1.c create mode 100644 libgcc2.c create mode 100644 limitx.h create mode 100644 limity.h create mode 100644 listing create mode 100644 local-alloc.c create mode 100644 longlong.h create mode 100644 loop.c create mode 100644 loop.h create mode 100644 machmode.def create mode 100644 machmode.h create mode 100644 make-cc1.com create mode 100644 make-cccp.com create mode 100644 make-gcc.com create mode 100644 make-l2.com create mode 100644 md.texi create mode 100644 mips-tdump.c create mode 100644 mips-tfile.c create mode 100644 modemap.def create mode 100644 move-if-change create mode 100644 objc/Make-lang.in create mode 100644 objc/Makefile.in create mode 100644 objc/NXConstStr.h create mode 100644 objc/NXConstStr.m create mode 100644 objc/Object.h create mode 100644 objc/Object.m create mode 100644 objc/Protocol.h create mode 100644 objc/Protocol.m create mode 100644 objc/README create mode 100644 objc/README.threads create mode 100644 objc/THREADS create mode 100644 objc/THREADS.MACH create mode 100644 objc/archive.c create mode 100644 objc/class.c create mode 100644 objc/config-lang.in create mode 100644 objc/encoding.c create mode 100644 objc/encoding.h create mode 100644 objc/hash.c create mode 100644 objc/hash.h create mode 100644 objc/init.c create mode 100644 objc/libobjc.def create mode 100644 objc/libobjc_entry.c create mode 100644 objc/linking.m create mode 100644 objc/makefile.dos create mode 100644 objc/misc.c create mode 100644 objc/nil_method.c create mode 100644 objc/objc-act.c create mode 100644 objc/objc-act.h create mode 100644 objc/objc-api.h create mode 100644 objc/objc-list.h create mode 100644 objc/objc-parse.c create mode 100644 objc/objc-parse.y create mode 100644 objc/objc-tree.def create mode 100644 objc/objc.gperf create mode 100644 objc/objc.h create mode 100644 objc/objects.c create mode 100644 objc/runtime.h create mode 100644 objc/sarray.c create mode 100644 objc/sarray.h create mode 100644 objc/selector.c create mode 100644 objc/sendmsg.c create mode 100644 objc/thr-decosf1.c create mode 100644 objc/thr-irix.c create mode 100644 objc/thr-mach.c create mode 100644 objc/thr-os2.c create mode 100644 objc/thr-posix.c create mode 100644 objc/thr-pthreads.c create mode 100644 objc/thr-single.c create mode 100644 objc/thr-solaris.c create mode 100644 objc/thr-win32.c create mode 100644 objc/thr.c create mode 100644 objc/thr.h create mode 100644 objc/typedstream.h create mode 100644 obstack.c create mode 100644 obstack.h create mode 100644 optabs.c create mode 100644 output.h create mode 100644 pcp.h create mode 100644 pexecute.c create mode 100644 prefix.c create mode 100644 print-rtl.c create mode 100644 print-tree.c create mode 100644 profile.c create mode 100644 protoize.c create mode 100644 pself.c create mode 100644 pself1.c create mode 100644 pself2.c create mode 100644 pself3.c create mode 100644 real.c create mode 100644 real.h create mode 100644 recog.c create mode 100644 recog.h create mode 100644 reg-stack.c create mode 100644 regclass.c create mode 100644 regs.h create mode 100644 reload.c create mode 100644 reload.h create mode 100644 reload1.c create mode 100644 reorg.c create mode 100644 rtl.c create mode 100644 rtl.def create mode 100644 rtl.h create mode 100644 rtl.texi create mode 100644 rtlanal.c create mode 100644 scan-decls.c create mode 100644 scan-types.sh create mode 100644 scan.c create mode 100644 scan.h create mode 100644 sched.c create mode 100644 sdbout.c create mode 100644 sort-protos create mode 100644 stab.def create mode 100644 stack.h create mode 100644 stmt.c create mode 100644 stor-layout.c create mode 100644 stupid.c create mode 100644 sys-protos.h create mode 100644 sys-types.h create mode 100644 texinfo.tex create mode 100644 tm.texi create mode 100644 toplev.c create mode 100644 tree.c create mode 100644 tree.def create mode 100644 tree.h create mode 100644 typeclass.h create mode 100644 unprotoize.c create mode 100644 unroll.c create mode 100644 varasm.c create mode 100644 version.c create mode 100644 vmsconfig.com create mode 100644 xcoffout.c create mode 100644 xcoffout.h diff --git a/.gdbinit b/.gdbinit new file mode 100644 index 0000000..dea758b --- /dev/null +++ b/.gdbinit @@ -0,0 +1,95 @@ +define pr +set debug_rtx ($) +end + +document pr +Print the full structure of the rtx that is $. +Works only when an inferior is executing. +end + +define prl +set debug_rtx_list ($, debug_rtx_count) +end + +document prl +Print the full structure of all rtx insns beginning at $. +Works only when an inferior is executing. +Uses variable debug_rtx_count to control number of insns printed: + debug_rtx_count > 0: print from $ on. + debug_rtx_count < 0: print a window around $. + +There is also debug_rtx_find (rtx, uid) that will scan a list for UID and print +it using debug_rtx_list. Usage example: set $foo=debug_rtx_find(first, 42) +end + +define pt +set debug_tree ($) +end + +document pt +Print the full structure of the tree that is $. +Works only when an inferior is executing. +end + +define ptc +output (enum tree_code) $.common.code +echo \n +end + +document ptc +Print the tree-code of the tree node that is $. +end + +define pdn +output $.decl.name->identifier.pointer +echo \n +end + +document pdn +Print the name of the decl-node that is $. +end + +define ptn +output $.type.name->decl.name->identifier.pointer +echo \n +end + +document ptn +Print the name of the type-node that is $. +end + +define prc +output (enum rtx_code) $.code +echo \ ( +output $.mode +echo )\n +end + +document prc +Print the rtx-code and machine mode of the rtx that is $. +end + +define pi +print $.fld[0].rtx@7 +end + +document pi +Print the fields of an instruction that is $. +end + +define pbs +set print_binding_stack () +end + +document pbs +In cc1plus, print the current binding stack, frame by frame, up to and +including the global binding level. +end + +# Don't let abort actually run, as it will make +# stdio stop working and therefore the `pr' command below as well. +b abort + +# Make gdb complain about symbol reading errors. This is so that gcc +# developers can see and fix bugs in gcc debug output. +set complaints 20 diff --git a/BUGS b/BUGS new file mode 100644 index 0000000..33c9386 --- /dev/null +++ b/BUGS @@ -0,0 +1,23 @@ +If you think you may have found a bug in GNU CC, please +read the Bugs section of the GCC manual for advice on + +(1) how to tell when to report a bug, +(2) where to send your bug report, and +(2) how to write a useful bug report and what information +it needs to have. + +There are three ways to read the Bugs section. + +(1) In a printed copy of the GCC manual. You can order one from the +Free Software Foundation; see the file ORDERS. But if you don't have +a copy on hand and you think you have found a bug, you shouldn't wait +to get a printed manual; you should read the section right away as +described below. + +(2) With Info. Start Emacs, do C-h i to enter Info, +then m gcc RET to get to the GCC manual, then m Bugs RET +to get to the section on bugs. Or use standalone Info in +a like manner. (Standalone Info is part of the Texinfo distribution.) + +(3) By hand. Search for the chapter "Reporting Bugs" in gcc.texi, or + cat /usr/local/info/gcc* | more "+/^File: emacs, Node: Bugs," diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..60549be --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + + Preamble + + 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. 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". + +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. + + 1. 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. + +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. + + 2. 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: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) 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. + + c) 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.) + +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. + +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. + +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. + + 3. 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: + + a) 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, + + b) 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, + + c) 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.) + +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. + +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. + + 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. + + 5. 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. + + 6. 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. + + 7. 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. + +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. + +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. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. 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. + + 9. 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. + +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. + + 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. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + 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. + + 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. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + 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. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +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: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +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 GNU Library General +Public License instead of this License. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..161a3d1 --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + 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. + + 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 library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. + + 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. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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. + +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 Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. + + If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. 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. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. + + 9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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. + + 11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. + +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. + +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. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library 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. + +Each version is given a distinguishing version number. If the Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. 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. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..bbd60c7 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,15188 @@ +Mon Mar 2 08:06:58 1998 Richard Kenner + + * Version 2.8.1 released. + + * Makefile.in (mostlyclean): Remove duplicate deletion of temp + files. Delete more stamp files and [df]p-bit.c + (clean): Don't delete stamp files here. + (VERSION_DEP): New variable. + (distdir-finish): Pass a value of null for it. + (version.c): Use it. + Avoid broken pipe with cvs log. + + * objc/Make-lang.in (objc/runtime-info.h): Rename emptyfile to + tmp-runtime and delete at end. + +Sun Mar 1 05:50:25 1998 Richard Kenner + + * tree.c (build_reference_type): Handle obstacks like + build_pointer_type. + + * Makefile.in (tmp-gcc.xtar): Renamed from gcc.xtar. + (gcc.xtar.gz): Deleted; merged with `dist'. + (diff): Create gcc-$(oldversion)-$(version).diff. + (distdir): Depend on distdir-cvs. + (distdir-cvs): New rule. + (distdir-start): Depend on version.c and TAGS. + (TAGS): Use tmp-tags instead of temp. + (dist): Create gcc-$(version).tar.gz. + + * varasm.c (compare_constant_1): Fix typo in previous change. + + * objc/Make-lang.in (objc-distdir): Properly rebuild objc-parse.c. + +Sat Feb 28 16:58:08 1998 Tristan Gingold + + * stmt.c (expand_decl): If -fcheck-memory-usage, put vars in memory. + * expr.c (get_memory_usage_from_modifier): Convert + EXPAND_{CONST_ADDRESS, INITIALIZER} to MEMORY_USE_DONT. + +Sat Feb 28 08:13:43 1998 Richard Kenner + + * i860/fx2800.h (DATA_ALIGNMENT): Use POINTER_TYPE_P. + * m68k/a-ux.h (FUNCTION_VALUE): Likewise. + * expr.c (get_pointer_alignment, compare, do_store_flag): Likewise. + (expand_builtin): Likewise. + * fold-const.c (force_fit_type, fold_convert, fold): Likewise. + * function.c (assign_parms): Likewise. + * integrate.c (expand_inline_function): Likewise. + * sdbout.c (sdbout_field_types): Likewise. + * tree.c (integer_pow2p, tree_log2, valid_machine_attribute): Likewise. + * stmt.c (expand_decl): Likewise. + ({,bc_}expand_decl_init): Also test for REFERENCE_TYPE. + + * configure.in (version_dep): New variable; if srcdir is CVS working + directory, set to ChangeLog. + (version): Supply default if no version.c. + * Makefile.in (version.c): New rule. + + * gcc.c (snapshot_warning): New function. + (main): Call it for snapshots. + + * dwarf2out.c (expand_builtin_dwarf_reg_size): If reg_raw_mode + not valid for reg, use last size. Also refine range assertion. + +Sat Feb 28 05:04:47 1998 Michael P. Hayes + + * enquire.c (cprop): Don't perform exhaustive search for char_min + and char_max when bits_per_byte > 16. + +Thu Feb 26 15:12:03 1998 Christopher Taylor + + * fixincludes: Avoid using '0-~' in egrep. + +Thu Feb 26 08:04:05 1998 Tristan Gingold + + * function.c (assign_parms): Call 'chkr_set_right' when DECL_RTL + is stack_parm. + * expr.c (get_memory_usage_from_modifier): Convert + EXPAND_{SUM, CONST_ADDRESS, INITIALIZER} to MEMORY_USE_RO. + +Thu Feb 26 07:33:53 1998 Paul Eggert + + * c-lex.c (yylex): Don't munge errno before using it. + * cccp.c (error_from_errno, perror_with_name): Likewise. + * cpplib.c (cpp_error_from_errno): Likewise. + * gcc.c (pfatal_pexecute): Likewise. + * protoize.c (safe_write, find_file, process_aux_info_file): Likewise. + (rename_c_file, edit_file): Likewise. + + * c-lex.c (yylex): Remove unused variable exceeds_double. + +Thu Feb 26 07:05:14 1998 Michael P. Hayes + + * reorg.c (fill_slots_from_thread): Don't steal delay list from target + if condition code of jump conflicts with opposite_needed. + +Thu Feb 26 06:45:23 1998 Richard Kenner + + * Makefile.in (distdir-start): Don't copy CVS subdirectory of config. + + * varasm.c ({compare,record}_constant_1, case CONSTRUCTOR): + Handle the case when we have TREE_PURPOSE values. + +Thu Feb 26 05:59:01 1998 Philippe De Muyter + + * fixincludes (sys/limits.h): Fix a nested comment problem with + HUGE_VAL definition on sysV68 R3V7.1. + +Wed Feb 25 21:09:38 1998 Philippe De Muyter + + * toplev.c (TICKS_PER_SECOND): Renamed from CLOCKS_PER_SECOND. + +Wed Feb 25 20:50:08 1998 Michael P. Hayes + + * reorg.c (fill_slots_from_thread): Mark resources referenced in + opposite_needed thread. Return delay_list even when cannot get + any more delay insns from end of subroutine. + +Wed Feb 25 19:50:01 1998 Mikael Pettersson + + * gcc.c (lookup_compiler): Remove redundant test. + +Wed Feb 25 07:24:22 1998 Richard Kenner + + * vax.md (call insns): Second operand to CALL rtl is SImode. + + * configure.in (i[34567]86-*-mingw32): Support msv and crt suffix. + * i386/crtdll.h: New file. + + * sparc.c (pic_setup_code): If -O0, write USE of pic_offset_table_rtx. + + * expr.c (safe_from_p): Add new arg, TOP_P; all callers changed. + +Sat Feb 21 07:02:39 1998 Jim Wilson + + * mips/iris5.h (DWARF2_UNWIND_INFO): Define to 0. + * mips/iris5gas.h (DWARF2_UNWIND_INFO): Define to 1. + +Fri Feb 20 08:27:46 1998 Paul Eggert + + * sparc/sol2-sld.h: New file. + * configure.in (sparc-*-solaris2*): Use it when using system linker. + * toplev.c (main): Don't default to DWARF2_DEBUG with -ggdb + if LINKER_DOES_NOT_WORK_WITH_DWARF2 is defined. + +Fri Feb 20 08:21:49 1998 H.J. Lu (hjl@gnu.org) + + * alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Support shared library. + (LIB_SPEC, DEFAULT_VTABLE_THUNKS): Defined #ifndef USE_GNULIBC_1. + * sparc/linux.h (DEFAULT_VTABLE_THUNKS): Likewise. + (LIB_SPEC): Add -lc for -shared #ifndef USE_GNULIBC_1. + * linux.h (LIB_SPEC): Likewise. + * sparc/linux64.h (LIB_SPEC): Likewise; also updated for glibc 2. + (LIBGCC_SPEC): Removed. + (CPP_SUBTARGET_SPEC): Add %{pthread:-D_REENTRANT}. + +Fri Feb 20 05:22:12 1998 Richard Kenner + + * Makefile.in (distdir-start): Add dependence on bi-parser.[ch]. + +Thu Feb 19 18:07:11 1998 Jim Wilson + + * m68k.h (TARGET_SWITCHES): For 68000, 68302, subtract MASK_68881. + For 68303, 68332, cpu32, subtract MASK_68040_ONLY. + +Wed Feb 18 09:37:29 1998 Paul Eggert + + * fixincludes (stdlib.h): Do not double-wrap the size_t typedef. + +Wed Feb 18 07:32:11 1998 Jim Wilson + + * i960.c (emit_move_sequence): Handle unaligned stores to pseudos. + * i960.md (store_unaligned_[dt]i_reg): Handle register dest. + (store_unaligned_ti_reg): Likewise. + + * m68k.h (MACHINE_STATE_{SAVE,RESTORE} [MOTOROLA]): Add %# and %/; + add : to make them into extended asms. + +Wed Feb 18 07:08:05 1998 Richard Kenner + + * reg-stack.c (compare_for_stack_reg): Only handle FP conditional + move as next insn specially. + + * reload.c (find_reloads): Always convert address reload for + non-reloaded operand to RELOAD_FOR_OPERAND_ADDRESS. + + * emit-rtl.c (hard-reg-set.h): Include. + (get_lowpart_common): Don't make new REG for hard reg in a + class that cannot change size. + * Makefile.in (emit-rtl.o): Depend on hard-reg-set.h. + +Sat Feb 14 09:59:00 1998 Richard Earnshaw (rearnsha@arm.com) + + * arm.md (movsfcc): Also validate operands[3] for hard float. + (movdfcc): Only accept fpu_add_operand for operands[3].8 + +Sat Feb 14 09:32:34 1998 Jim Wilson + + * dwarf2out.c (expand_builtin_dwarf_reg_size): New variable mode. + Convert CCmode to word_mode before calling GET_MODE_SIZE. + +Sat Feb 14 09:27:42 1998 David Edelsohn + + * rs6000.h (MY_ISCOFF): Check for U803XTOCMAGIC. + +Sat Feb 14 08:29:43 1998 Arvind Sankar + + * t-svr4 (TARGET_LIBGCC_CFLAGS): New definition. + +Sat Feb 14 07:45:16 1998 Ken Rose (rose@acm.org) + + * reorg.c (fill_slots_from_thread): New parameter, delay_list. + All callers changed. + +Sat Feb 14 07:14:02 1998 Richard Kenner + + * reload.c (debug_reload): Properly output insn codes. + + * pa.c (emit_move_sequence): If in reload, call find_replacement. + + * gansidecl.h (bcopy, bzero, {,r}index): Don't define if IN_LIBGCC2. + + * combine.c (distribute_notes, case REG_DEAD): When seeing if place + to put new note sets register, use reg_bitfield_target_p, as in + original code. + + * gcc.c (process_command): If file is for linker, set lang to "*". + (lookup_compiler): Return 0 for language of "*". + + * sched.c (attach_deaths, case SUBREG): Fix error in last change. + + * i386.md (mov[sdx]fcc): Disable for now. + (mov[sd]fcc_1): Add earlyclobber for output on last alternative. + +Sat Feb 14 06:42:50 1998 Jason Merrill + + * except.c (get_dynamic_handler_chain): Only make call once per func. + (expand_fixup_region_{start,end}): New functions. + (expand_eh_region_start_tree): Store cleanup into finalization here. + * stmt.c (expand_cleanups): Use new functions to protect fixups. + + * except.c (get_dynamic_handler_chain): Build up a FUNCTION_DECL. + * optabs.c (init_optabs): Don't init get_dynamic_handler_chain_libfunc. + * expr.h (get_dynamic_handler_chain_libfunc): Deleted. + +Sat Feb 14 06:34:41 1998 Peter Lawrence + + * optabs.c (emit_conditional_move): Don't reverse condition for FP. + +Fri Feb 13 07:22:04 1998 Richard Kenner + + * Makefile.in (mostlyclean): Only use s-* convention for stamp + files in main dir. + + * configure.in: Add support for i786 (Pentium II); same as i686. + +Thu Feb 12 20:16:35 1998 Michael Meissner + + * rs6000.md: Replace gen_rtx (CONST_INT,...) with GEN_INT. + +Thu Feb 12 10:08:14 1998 John Hassey + + * configure.in (i[3456]86-dg-dgux*): Don't need fixincludes. + +Thu Feb 12 07:27:39 1998 Mumit Khan + + * i386/cygwin32.h (NO_IMPLICIT_EXTERN_C): Define. + about system headers. + (LIB_SPEC): Add -ladvapi32 -lshell32. + +Thu Feb 12 07:19:31 1998 Richard Kenner + + * expr.c (expand_assignment): Fix typo in checking OFFSET. + + * gbl-ctors.h (atexit): Don't define unless needed. + + * combine.c (distribute_notes): Completely check for note operand being + only partially set on potential note target; adjust what notes + we make in that case. + + * i386/xm-go32.h (HAVE_{BCOPY,BZERO,INDEX,RINDEX}): Deleted. + +Wed Feb 11 08:53:27 1998 Richard Kenner + + * calls.c (emit_call_1): Size args now HOST_WIDE_INT. + (expand_call): struct_value_size now HOST_WIDE_INT. + +Tue Feb 10 09:04:39 1998 Richard Kenner + + * integrate.c (initialize_for_inline): Ensure DECL_INCOMING_RTL + is always copied. + +Tue Feb 10 06:10:49 1998 Paul Eggert + + * cccp.c (rescan): Fix bug with macro name appearing + immediately after L'x'. + +Mon Feb 9 20:45:32 1998 Andreas Schwab + + * c-common.c (format_char_info): Add new field zlen. + (print_char_table): Remove entry for 'Z' as a format character. + Initialize zlen field as appropriate. + (scan_char_table): Set zlen field to NULL in each entry. + (check_format_info): Recognize 'Z' as a length modifier, with a + warning in pedantic mode. + Avoid infinite loop when a repeated flag character is detected. + +Mon Feb 9 09:24:04 1998 Paul Eggert + + * c-parse.in (primary): Minor wording fix in diagnostic. + +Mon Feb 9 07:50:19 1998 Richard Kenner + + * c-decl.c (grokdeclarator): Remove warning on inline of varargs. + + * reload.c (find_reloads): Check for const_to_mem case before + checking for invalid reload; use force_const_mem if no_input_reloads. + + * function.c (push_function_context_to): Call init_emit last. + + * protoize.c (my_link): Define as -1 in mingw32. + (link): Remove declaration. + + * rs6000.c (setup_incoming_varargs): Always set rs6000_sysv_varargs_p. + + * integrate.c (expand_inline_function): Clear label_map with bzero. + + * unroll.c (copy_loop_body, case JUMP_INSN): Correct error in last + change: call single_set on COPY, not INSN. + +Sun Feb 8 08:07:37 1998 Richard Kenner + + * msdos/top.sed, winnt/config-nt.sed: Change version number to 2.8.1. + + * configure.in (i[3456]86-*-sco3.2v5*): Use cpio for headers. + +Sat Feb 7 07:32:46 1998 Richard Kenner + + * i386/mingw32.h (LIBGCC_SPEC, STARTFILE_SPEC, MATH_LIBRARY): + Use msvcrt, not crtdll. + +Fri Feb 6 20:32:06 1998 Geert Bosch + + * i386/xm-os2.h (EMX, USG, BSTRING, HAVE_{PUTENV,VPRINTF,STRERROR}): + Define ifdef __EMX__. + (strcasecmp): Define to be stricmp if __EMX__. + (spawnv{,p}): Don't define if EMX. + (OBJECT_SUFFIX): Don't define if EMX. + (MKTEMP_EACH_FILE): Define. + +Fri Feb 6 16:37:29 1998 Kaveh R. Ghazi + + * objc/Make-lang.in (objc.stage1): Depend on stage1-start. + (objc.stage2, objc.stage3, objc.stage4): Likewise for the + respective stageN-start targets. + (objc/sendmsg.o): Depend on objc/runtime-info.h. + +Fri Feb 6 16:27:09 1998 Bernd Schmidt + + * stmt.c (expand_asm_operands): Properly treat asm statement + statements with no operands as volatile. + +Fri Feb 6 16:03:25 1998 Greg McGary + + * c-decl.c (pushdecl): Set DECL_ORIGINAL_TYPE once only. + +Fri Feb 6 15:57:36 1998 Mumit Khan + + * i386/cygwin32.h (STRIP_NAME_ENCODING): New macro. + +Fri Feb 6 15:50:42 1998 Paul Eggert + + * libgcc2.c (__floatdi[xtds]f): Round properly even when rounding + large negative integer to plus or minus infinity. + +Fri Feb 6 15:45:16 1998 Philippe De Muyter + + * sdbout.c (plain_type_1): Return T_DOUBLE, not T_VOID, for + long double #ifndef EXTENDED_SDB_BASIC_TYPES. + +Fri Feb 6 15:23:49 1998 John David Anglin + + * vax/ultrix.h (HAVE_ATEXIT): Define. + * x-vax: File deleted. + +Fri Feb 6 14:34:19 1998 Douglas Rupp + + * gcc.c (process_command, case "-dumpversion"): Print spec_version. + +Fri Feb 6 11:01:13 1998 Josh Littlefield + + * i386/gmon-sol2.c (internal_mcount): Do set-up when program starts + and install hook to do clean-up when it exits. + * i386/sol2-c1.asm (_mcount): Make a weak instead of global symbol. + * i386/sol2dbg.h (ASM_SPEC): Support Solaris bundled assembler's -V + argument; pass -s argument to assembler. + +Fri Feb 6 09:13:21 1998 Jim Wilson (wilson@cygnus.com) + + * function.c (assign_parms): New variable named_arg, with value + depending on STRICT_ARGUMENT_NAMING. Use instead of ! last_named. + + * crtstuff.c (__frame_dummy): New function for irix6. + (__do_global_ctors): Call __frame_dummy for irix6. + * mips/iris6.h (LINK_SPEC): Hide __frame_dummy too. + +Fri Feb 6 09:08:21 1998 Mike Stump + + * rtlanal.c (dead_or_set_regno_p): Ignore REG_DEAD notes after reload. + * genattrtab.c (reload_completed): Define. + + * configure.in (i960-wrs-vxworks): Same as i960-wrs-vxworks5*. + +Fri Feb 6 08:47:38 1998 Richard Kenner + + * Makefile.in (diff): Add INSTALL, configure, and config.in; + remove objc-*. + * objc/config-lang.in (diff_excludes): Add objc-parse.[cy]. + + * i386/xm-mingw32.h (link): Delete macro. + + * alpha.c (output_prolog): Write out frame sizes as longs and + print too large sizes as zero. + + * function.c (combine_temp_slots): No need to allocate and free rtx. + Don't do anything if too many slots in the list. + (put_var_into_stack): Don't use ADDRESSOF if not optimizing. + + * function.c (purge_addressof_1): Force into mem if VOLATILE reference. + + * calls.c (expand_call): Show VAR_DECL made for structure return + address is used; remove bogus set of MEM_IN_STRUCT_P. + * expr.c (expand_expr, case SAVE_EXPR, case TARGET_EXPR): Show used. + (expand_builtin, case BUILT_IN_LONGJMP): Show __dummy used. + * function.c (put_reg_into_stack): New arg USED_P; all callers changed. + + * expr.c (expand_expr, case SAVE_EXPR): assign_temp with KEEP of 3. + * function.c (var_temp_slot_level): New variable. + (push_function_context_to, pop_function_context_from): Save/restore + it and target_temp_slot_level. + (assign_stack_temp): Implement KEEP of 3. + (push_temp_slots_for_block): New function. + (init_temp_slots): Initialize var_temp_slot_level. + * function.h (struct function, fields {var,target}_temp_slot_level): + New fields. + * stmt.c (expand_start_bindings): Call push_temp_slots_for_block. + + * function.c (struct temp_slot): SIZE, BASE_OFF_SET, and FULL_SIZE + now HOST_WIDE_INT. + (assign_{,outer_}stack_local, assign_{,stack_}temp): Size arg is + now HOST_WIDE_INT. + (assign_stack_temp): Do size computations in HOST_WIDE_INT. + (fixup_var_refs_1, optimize_bit_field, instantiate_decls): Likewise. + (instantiate_virtual_regs_1, fix_lexical_address): Likewise. + * rtl.h (assign_stack_{local,temp}): Size arg is HOST_WIDE_INT. + (assign_temp): Likewise. + * expr.h (struct args_size): Field CONSTANT is now HOST_WIDE_INT. + + * sched.c (attach_deaths, case REG): Don't check for REG_UNUSED. + (attach_deaths, case SUBREG, STRICT_LOW_PART, {ZERO,SIGN}_EXTRACT): + Don't pass set_p of 1 if partial assignment. + + * tree.h (size_in_bytes): Returns HOST_WIDE_INT. + * tree.c (size_in_bytes): Likewise. + Tighen up logic some to avoid returning a bogus value instead of -1. + + * expr.c (get_inner_reference, case ARRAY_EXPR): Make WITH_RECORD_EXPR + just for index. + (expand_expr, case PLACEHOLDER_EXPR): Refine search again; look + at each expression and look for pointer to type. + + * expr.c (safe_from_p, case ADDR_EXPR): If TREE_STATIC, no trampoline. + (expand_expr, case ADDR_EXPR): Likewise. + + * expr.c (emit_block_move): Use conservative range for movstr mode. + + * configure.in: See if "cp -p" works if "ln -s" doesn't; else "cp". + + * combine.c (try_combine.c): Pass elim_i2 and elim_i1 to + distribute_notes for i3dest_killed REG_DEAD note. + + * configure.in (mips-dec-netbsd*): Remove bogus setting of prefix. + + * c-decl.c (duplicate_decls): Set DECL_IGNORED_P in newdecl if + different bindings levels. + + * configure.in: Test ln -s by symlinking gcc.c. + + * configure.in (i[3456]86-dg-dgux): Add wildcard for version. + + * crtstuff.c (__do_global_ctors_aux): Switch back to text section + in proper place. + + * rtlanal.c (rtx_varies_p, case REG): pic_offset_table_rtx is fixed. + * genattrtab.c (pic_offset_table_rtx): Define (dummy). + * cse.c (set_nonvarying_address_components): Understand PIC refs. + + * loop.c (strength_reduce): When placing increment for auto-inc + case, do comparison in loop order. + + * i860.c (output_delayed_branch): Add missing arg to recog. + (output_delay_insn): Add missing arg to constrain_operands. + + * configure.in: Truncate target after finished comparing it with host. + + * i386.h (MAX_FIXED_MODE_SIZE): Delete. + + * c-parse.in (expr_no_comma): Clarify undefined error. + + * prefix.c (get_key_value): Don't default to PREFIX here. + (translate_name): Remove bogus addition of "$" if getenv fails; + clean up application of default value of PREFIX. + + * fold-const.c (fold_convert): Call force_fit_type even if input + already overflows. + +Fri Feb 6 07:45:01 1998 Robert Hoehne + + * i386/xm-go32.h (HAVE_{BCOPY,BZERO,BCMP,RINDEX,INDEX}): Define. + + * gcc.c (main): Treat paths starting with '$' or DOS drives + as absolute in standard_startfile_prefix. + +Thu Feb 5 21:07:12 1998 John David Anglin + + * cpplib.c (IS_INCLUDE_DIRECTIVE_TYPE): Add casts from enum to int. + * cccp.c (IS_INCLUDE_DIRECTIVE_TYPE, handle_directive): Likewise. + +Thu Feb 5 19:00:44 1998 Richard Kenner + + * expr.c (expand_expr, case CONSTRUCTOR): Correct shift count + when making signed bit field; use EXPAND_NORMAL, not 0. + +Thu Feb 5 17:42:43 1998 Manfred Hollstein + + * libgcc2.c (__clear_insn_cache): On sysV68 enable the memctl + stuff only if MCT_TEXT is #define'd. + +Thu Feb 5 17:32:01 1998 Robert Hoehne + + * Makefile.in: Changed most stamp-* to s-*. + +Tue Feb 3 19:45:50 1998 James Hawtin + + * i386/sol2.h (STARTFILE_SPEC, LIB_SPEC): Update -pg files. + * configure.in (i[3456]86-*-solaris2*): Add gcrt1.o and gmon.o + to extra_parts. + +Tue Feb 3 17:28:48 1998 Christopher C Chimelis + + * configure.in (alpha*-*-linux-gnu*): Add extra_parts for crtstuff. + +Tue Feb 3 17:18:19 1998 Richard Earnshaw + + * arm.c (find_barrier): Fix one-too-many bug if fail to find barrier. + + * arm.c (arm_reload_in_hi): Handle cases where the MEM is too + complex for a simple offset. + +Tue Feb 3 16:14:21 1998 Robert Hoehne + + * i386/xm-go32.h (EXECUTABLE_SUFFIX): Define. + + * configure.in (i[3456]86-pc-msdosdjgpp*): New entry. + +Tue Feb 3 07:33:58 1998 Richard Kenner + + * explow.c (probe_stack_range): Properly check for small + number of probes. + + * gcc.c (process_command, case 'V'): Validate arg. + + * configure.in (sbrk): Add check for needed declaration. + * acconfig.h (NEED_DECLARATION_SBRK): New entry. + * toplev.c (sbrk): Update declaration conditional. + * mips-tfile.c (sbrk, free): Likewise. + + * sparc/sysv4.h (DBX_REGISTER_NUMBER): Remove abort. + + * mips.c (mips_expand_prologue): Pass reg 25 to gen_loadgp. + * mips.md (loadgp): Add second operand for register number to add. + (builtin_setjmp_receiver): Pass new label and reg 31 to loadgp. + + * toplev.c: Include insn-codes.h, insn-config.h, and recog.h. + (compile_file): Try to emit nop to separate gcc_compiled symbol. + * Makefile.in (toplev.o): Depends on insn-{codes,config}.h, recog.h. + +Tue Feb 3 06:58:46 1998 Mark Mitchell + + * integrate.c (get_label_from_map): New function. + (expand_inline_function): Use it. + Initialize label_map to NULL_RTX instead of gen_label_rtx. + (copy_rtx_and_substitute): Use get_label_from_map. + * integrate.h (get_label_from_map): New function. + (set_label_from_map): New macro. + * unroll.c (unroll_loop, copy_loop_body): Use them. + +Mon Feb 2 16:33:01 1998 Richard Kenner + + * i386.md (mov{si,hi,sf,df,xf}cc{,_1}): Remove cases with branches. + + * rs6000/x-aix31 (INSTALL): Deleted. + * mips/x-dec-osf1, mips/x-osfrose, i386/x-osfrose: Likewise. + * arm/x-riscix: Likewise. + + * c-typeck.c (signed_or_unsigned_type): Properly handle pointer types. + +Mon Feb 2 15:33:58 1998 Michael P. Hayes + + * unroll.c (copy_loop_body): Use single_set instead of + PATTERN to detect increment of an iv inside a PARALLEL. + +Fri Jan 16 20:29:50 1998 Paul Eggert + + * toplev.c (): New include. + (get_run_time): Prefer CLK_TCK (if available) to HZ, and + prefer sysconf (_SC_CLK_TCK) (if available) to CLK_TCK. + * configure.in (sysconf): Call AC_CHECK_FUNCS. + +Wed Jan 14 20:10:51 1998 Paul Eggert + + * cccp.c: (rescan): Don't report line 0 as the possible real start + of an unterminated string constant. + Don't mishandle backslash-newlines that in are the output of + a macro expansion. Properly skip // style comments between a function + macro name and '(', as well as backslash-newlines in comments there. + (handle_directive): Handle / \ newline * between # and directive name. + In #include directives, \ does not escape ". + (do_include): For `#include "file', do not bother expanding into temp + buffer. When error encountered when expanding, do not try result. + (skip_if_group): When skipping an include directive, use include + tokenization, not normal tokenization. Backslash-newline is still + special when skipping. Handle * \ newline / correctly in comments + when skipping. + (skip_quoted_string): After \ newline, set *backslash_newlines_p + even if count_newlines is 0. + (macroexpand): Newline space is not a special marker inside a string. + (macroexpand, macarg): Do not generate \ddd for control characters + when stringifying; the C Standard does not allow this. + (macarg1): New arg MACRO. All callers changed. + Do not treat /*, //, or backslash-newline specially when processing + the output of a macro. + (discard_comments): Don't go past limit if looking for end of comment. + Discard backslash-newline properly when discarding comments. + (change_newlines): \" does not end a string. + (make_definition): Do not treat backslash-newline specially, as it + has already been removed before we get here. + + * profile.c (output_func_start_profiler): Don't fflush output + if -quiet. + * toplev.c (rest_of_compilation): Likewise. + + * i386/x-sco5 (CC): Remove trailing white space. + * x-convex (CCLIBFLAGS): Likewise. + * arm/t-semi (LIBGCC2_CFLAGS): Likewise. + +Wed Jan 7 18:02:42 1998 Richard Kenner + + * Version 2.8.0 released. + +Wed Jan 7 17:54:41 1998 J. Kean Johnston + + * i386/sco5.h ({END,START}FILE_SPEC): Link with correct crtbegin.o + and crtend.o when using -static. + +Wed Jan 7 17:49:14 1998 Jan Christiaan van Winkel + + * cppexp.c (gansidecl.h): Include. + +Wed Jan 7 17:45:07 1998 Tristan Gingold + + * expr.c (get_push_address): Use copy_to_reg instead of force_operand. + (emit_push_insn): Avoid null pointer deference if aggregate has no + types. + (expand_expr): Avoid finite but useless recursion. + (expand_builtin): Fix typo in calling function. + * function.c (assign_parms): Avoid useless call to chkr_set_right. + +Wed Jan 7 17:31:13 1998 Christian Iseli + + * combine.c (force_to_mode): Return if operand is a CLOBBER. + +Wed Jan 7 17:23:24 1998 Richard Kenner + + * x-rs6000 (INSTALL): Remove. + + * jump.c (jump_optimize): Don't use a hard reg as an operand + of a conditional move if small register classes. + +Wed Jan 7 17:09:28 1998 Jim Wilson + + * cse.c (max_insn_uid): New variable. + (cse_around_loop): Use it. + (cse_main): Set it. + +Wed Dec 31 18:40:26 1997 Richard Kenner + + * stmt.c (expand_asm_operands): Treat ASM with no outputs as volatile. + +Wed Dec 31 08:03:45 1997 Paul Eggert + + * toplev.c (flag_verbose_asm): Default to 0, not 1. + + * i386/bsd386.h (ASM_COMMENT_START): Define to " #". + +Tue Dec 30 17:38:55 1997 Jim Wilson + + * unroll.c (find_splittable_givs): Handle givs with + dest_reg created by loop. + +Tue Dec 30 14:21:33 1997 Ian Lance Taylor + + * svr4.h (LINK_SPEC): Never specify -h. + * ptx4.h (LINK_SPEC): Likewise. + * rs6000/sysv4.h (LINK_SPEC): Likewise. + * sparc/sol2.h (LINK_SPEC): Likewise. + +Tue Dec 30 06:15:23 1997 Philippe De Muyter + + * libgcc2.c (_eh_compat): Do not include stdlib.h, but provide a + private extern declaration for malloc. + +Mon Dec 29 06:56:41 1997 Laurent Guerby + + * Makefile.in (stmp-int-hdrs): Add "touch". + +Sun Dec 28 19:36:05 1997 Stephen L Moshier + + * mips.h (CACHE_FLUSH_FUNC): New, defaults to _flush_cache. + (INITIALIZE_TRAMPOLINE): Use it. + * mips/ultrix.h (CACHE_FLUSH_FUNC): Define as cacheflush. + * mips/news4.h (CACHE_FLUSH_FUNC): Likewise. + +Sun Dec 28 08:19:13 1997 Paul Eggert + + * arm.c: Don't include assert.h. + * i960.c: Likewise. + (i960_arg_size_and_align): Rewrite to avoid assert. + * m88k.c: Don't include assert.h. + (expand_block_move): Rewrite to avoid assert. + * except.c: Don't include assert.h. + (scan_region): Rewrite to avoid assert. + (save_eh_status, restore_eh_status, scan_region): Don't bother + testing whether pointer is null. + * dwarfout.c, dwarf2out.c: Do not include assert.h. + (assert): New macro, since we can't use system assert. + +Sat Dec 27 19:08:17 1997 Stephen L Moshier + + * mips/ultrix.h (DWARF2_UNWIND_INFO): Define as 0. + +Fri Dec 26 05:57:06 1997 Philippe De Muyter + + * m68k/mot3300.h (FINALIZE_TRAMPOLINE): Macro defined. + * libgcc2.c (__clear_insn_cache): New sysV68-specific helper function + for trampolines. + +Thu Dec 25 15:22:43 1997 Richard Kenner + + * rs6000.c (function_arg_padding): All aggregates pad upward. + +Wed Dec 24 18:05:13 1997 Richard Kenner + + * sparc.c: Add prototypes for static functions. + (check_pic): Check for form of pic_pc_rtx, not it itself. + (pic_setup_code): New function, from finalize_pic. + (finalize_pic): Call pic_setup_code and insert after nonlocal_receiver. + * sparc.md (nonlocal_goto_receiver): New pattern. + +Tue Dec 23 05:54:38 1997 Richard Kenner + + * expr.c (expand_builtin_setjmp): Call builtin_setjmp_receiver. + * mips.md (builtin_setjmp_receiver): New pattern. + + * crtstuff.c (__do_global_ctors_aux): Add missing call to + FORCE_INIT_SECTION_ALIGN and go back to text section. + * i386/sol2.h (FORCE_INIT_SECTION_ALIGN): Remove loop. + + * expr.c (do_store_flag): For shift, get bit count using tree_pow2. + +Tue Dec 23 05:21:18 1997 Paul Eggert + + * genattrtab.c (main): Check HAVE_{G,S}ETRLIMIT too. + +Mon Dec 22 19:30:59 1997 Michael P. Hayes + + * sdbout.c (plain_type_1): Add missing checks for named types "char" + and "int" and check for int by size first. + +Mon Dec 22 19:13:58 1997 Manfred Hollstein + + * m68k/xm-mot3300.h (ADD_MISSING_{POSIX,XOPEN}): Define. + * m88k/xm-sysv3.h: Likewise. + + * configure.in (getrlimit, setrlimit): Call AC_CHECK_FUNCS. + * cccp.c (main): Check HAVE_{G,S}ETRLIMIT in addition to RLIMIT_STACK. + * toplev.c (main): Likewise. + + * fixincludes (target_canonical): New variable. + (size_t): Add support for Motorola's stdlib.h which fails to provide + a definition for size_t. + (str{len,spn,cspn} return value): Handle different layout on sysV88. + (fabs/hypot): Provide a fake for hypot which is broken on + m88k-motorola-sysv3; emit a prototype for fabs on m88k-motorola-sysv3. + + * m68k/mot3300.h (ASM_BYTE_OP): Don't include '\t' in definition. + (ASM_OUTPUT_ASCII): Prefix ASM_BYTE_OP by one single '\t'. + +Mon Dec 22 19:05:49 1997 Richard Henderson + + * sparc.md (jump): Don't use the annul bit around an empty loop. + +Mon Dec 22 18:52:56 1997 Robert Lipe + + * i386/x-sco5 (CLIB) Deleted. + (ALLOCA) Added. + * i386/xm-sco5.h (USE_C_ALLOCA) Added. + +Mon Dec 22 18:42:16 1997 Philippe De Muyter + + * m68k/mot3300Mcrt0.S (mcount): Function removed. + (__stop_monitor): New function. + * m68k/mot3300-crt0.S (__stop_monitor): New (empty) function. + (mcount, mcount%, monitor): Common symbols removed. + * m68k/mot3300.h (FUNCTION_PROFILER): USE_GAS and !USE_GAS versions + fixed and merged. + (EXIT_BODY): Always call __stop_monitor without tricky tests. + +Mon Dec 22 18:35:05 1997 Andreas Schwab + + * objc/Make-lang.in (runtime-info.h, libobjc_entry.o): Create in + build directory. + (libobjc.a): Update dependency list. + (libobjc.dll): Likewise. Use libobjc_entry.o from build directory. + (objc/sendmsg.o): Add -Iobjc to find runtime-info.h. + (objc.mostlyclean): Remove runtime-info.h. + +Mon Dec 22 18:27:47 1997 Paul Eggert + + * libgcc2.c (_eh_compat): New section. + * Makefile.in (LIB2FUNCS): Add _eh_compat. + +Mon Dec 22 17:52:37 1997 Marcus G. Daniels + + * objc/init.c (_objc_load_callback): Don't initialize. + +Sun Dec 21 15:06:00 1997 Paul Eggert + + * mips/xm-iris5.h (HAVE_INTTYPES_H): Force undefined. + +Sun Dec 21 14:51:51 1997 Richard Kenner + + * dwarf2out.c (add_bound_info, case COMPONENT_REF): New case. + +Sun Dec 14 06:49:05 1997 Richard Kenner + + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Use placeholder_list + expression in preference to any other if correct type. + + * i386.h (INITIAL_ELIMINATION_OFFSET): Correctly test for PIC + register used. + +Sat Dec 13 06:11:32 1997 Richard Kenner + + * frame.h (__register_frame_info_table): Fix typo in declaration. + +Fri Dec 12 07:55:18 1997 Richard Kenner + + * function.c (purge_addressof_1): For (mem (address (mem ...)), + when collapsing, preserve mode of outer MEM. + + * frame.c (__register_frame_info): Renamed from __register_frame. + (__register_frame_info_table, __deregister_frame_info): Similarly. + * frame.h (__{,de}register_frame_info): Likewise. + (__register_frame_info_table): New declaration. + * crtstuff.c (__do_global_dtors{,_aux}): Rename __deregister_frame. + (frame_dummy, __do_global_ctors): Likewise for __register_frame. + * collect2.c (write_c_file_{stat,glob}): Rename __register_frame + to __register_frame_info and similarly for __deregister_frame and + __register_frame_table. + + * sched.c (remove_dependencies): Set RTX_INTEGRATED_P on dependency + we delete. Properly update prev for multiple consecutive deletions. + (priority): Skip deleted dependence. + + * integrate.c (initialize_for_inline): In DECL_RTL of a PARM_DECL, + look inside a (mem (addressof (mem ...))). + +Fri Dec 12 05:49:58 1997 Paul Eggert + + * collect2.c (write_c_file_glob): + Allocate initial frame object in static storage and pass its address. + +Thu Dec 11 18:01:31 1997 Philippe De Muyter + + * acconfig.h (NEED_DECLARATION_GETENV): Define slot added. + +Thu Dec 11 17:54:23 1997 Paul Eggert + + * crtstuff.c (__do_global_ctors): Fix typo in last change. + +Wed Dec 10 18:38:28 1997 Kaveh R. Ghazi + + * libgcc2.c (__bb_exit_func): Fix test of return value of fopen. + +Wed Dec 10 07:07:37 1997 Bernd Schmidt + * combine.c (simplify_rtx, case ABS): Don't get confused by a + VOIDmode operand. + +Tue Dec 9 17:44:14 1997 David Edelsohn + + * rs6000.h (FUNCTION_ARG_PADDING): Define. + * rs6000.c (function_arg_padding): New function. + +Tue Dec 9 08:53:56 1997 Richard Kenner + + * integrate.c (save_for_inline_copying): Make a new reg_parm_stack_loc. + +Mon Dec 8 19:23:58 1997 Pat Rankin + + * toplev.c (get_run_time): [#if VMS] Cast arg in times call. + + * vax/xm-vms.h (HAVE_UNISTD_H): Define for DEC C. + * make-cccp.com [CC]: Add /Prefix=All for DEC C. + +Mon Dec 8 08:09:17 1997 Richard Kenner + + * stmt.c (expand_decl_cleanup_no_eh): Properly return a value. + + * fold-const.c (fold_convert): Don't flag overflow when converting + pointer to integer. + +Sun Dec 7 09:42:05 1997 Pat Rankin + + * make-gcc.com (@make-l2): Pass along any command line arguments. + * make-l2.com: Add latent support to compile cp/inc/* if `cc1plus' + is specified [currently disabled]. + * make-cc1.com: When building with GNU C, use -O2. + * make-cccp.com: Likewise. + +Sun Dec 7 06:56:48 1997 Richard Kenner + + * crtstuff.c (__do_global_ctors): Add missing arg to __register_frame. + + * collect2.c (write_c_file_stat): Fix error in last change; + use __SIZE_TYPE__, not size_t. + +Sun Dec 7 05:50:43 1997 Paul Eggert + + * cccp.c (strings.h): Fix misspelling of `include' introduced + in last change to this file. + +Sat Dec 6 18:54:11 1997 Richard Kenner + + * alpha/vms.h (CPP_PREDEFINES): Remove redundant setting + of GCC version and unneeded setting of __VMS_VER. + +Fri Dec 5 07:24:36 1997 Richard Stallman + + * sparc/linux64.h (TARGET_VERSION): Write "GNU/Linux". + * sparc/linux.h, sparc/linux-aout.h, rs6000/linux.h: Likewise. + * m68k/linux.h, arm/linux.h, alpha/{linux,elf}.h: Likewise. + * listing: Change linux to gnu-linux. + +Fri Dec 5 06:23:22 1997 Paul Eggert + + Alter C startup code so that it doesn't invoke malloc on Solaris. + * frame.h (struct object): Decl moved here from frame.c. + * frame.c (struct object): Move decl to frame.h. + ("frame.h"): Include after , so that size_t is defined. + (__register_frame, __register_frame_table, __deregister_frame): + It's now the caller's responsibility to allocate storage for object. + * crtstuff.c (frame_dummy), collect2.c (write_c_file_stat): + Allocate initial frame object in static storage and pass its address. + * crtstuff.c (, "frame.h"): Include. + * Makefile.in ($(T)crtbegin.o, $(T)crtend.o, stamp-crtS): + Depend on defaults.h and frame.h. + + * Makefile.in (RTL_H, TREE_H): Add gansidecl.h. + (DEMANGLE_H): New macro. All dependencies on demangle.h + changed to $(DEMANGLE_H). + (RECOG_H): Likewise. + (libgcc2.a, stmp-multilib): Add dependencies on frame.h, gansidecl.h. + (collect.o): Add dependency on gansidecl.h. + (gcc.o, choose-temp.o, pexecute.o, prefix.o): Likewise. + (obstack.o, choose-temp.o, pexecute.o): Add dependency on $(CONFIG_H). + +Fri Dec 5 06:20:06 1997 Dean Deaver + + * arm.md (casesi_internal): Add USE of label. + +Fri Dec 5 05:59:44 1997 Richard Kenner + + * configure.in (sys/times.h): Check for this instead of times.h. + * cpplib.c, toplev.c: Properly test for and include sys/times.h. + +Thu Dec 4 12:30:40 1997 J"orn Rennecke + + * sh.c (final_prescan_insn): Use local label prefix when emitting + .uses pseudo-ops. + +Thu Dec 4 07:00:48 1997 Richard Earnshaw + + * arm.c (arm_finalize_pic): Use an offset of 4 when adjusting the + GOT address. + +Thu Dec 4 06:58:32 1997 Dean Deaver + + * genoutput.c (scan_operands): Treat format of "u" like "e". + +Thu Dec 4 06:28:33 1997 Richard Kenner + + * msdos/top.sed, winnt/config-nt.sed: Change version to 2.8.0. + + * stmt.c (pushcase_range): Clean up handling of "infinite" values. + +Wed Dec 3 09:03:35 1997 Bernd Schmidt + + * i386.c (notice_update_cc): Remove bogus Pentium GCC code. + +Wed Dec 3 08:46:32 1997 Paul Eggert + + * arm.h (CPP_ARCH_DEFAULT_SPEC): Fix misspelling: `TARGET_CPU_DEFUALT'. + (TARGET_SWITCHES): Fix misspelling: `no-apcs-rentrant'. + * pa.c (override_options): Fix misspelling: `compatable'. + * enquire.c (main): Fix misspelling in diagnostic: `mallocatable'. + * gcov.c (function_summary): Fix misspelling in diagnostic: `funcion'. + * objc/thr-decosf1.c (__objc_thread_id): Fix misspelling in code: + `pthread_getuniqe_np'. + + * tahoe.c (extensible_operand): Renamed from extendable_operand. + All callers changed. + * dwarf2.h (enum dwarf_discrim_list): Renamed from dwarf_descrim_list. + * dwarf2out.c: Fix misspellings in forward static function + declarations: `add_AT_setion_offset', `add_sibling_atttributes'. + * dwarfout.c: Fix misspellings in forward static function + declarations: `langauge_attribute', `geneate_new_sfname_entry'. + * stmt.c, tree.h (start_cleanup_deferral): + Renamed from start_cleanup_deferal. + (end_cleanup_deferral): Renamed from end_cleanup_deferal. + * toplev.c (rest_of_compilation): Rename local var from + inlineable to inlinable. + +Wed Dec 3 06:17:03 1997 Jason Merrill + + * stmt.c (expand_decl_cleanup): Update thisblock after eh_region_start. + +Wed Dec 3 06:06:38 1997 Jim Wilson + + * dwarf2out.c (gen_type_die, case POINTER_TYPE): See TREE_ASM_WRITTEN + before the recursive call. + +Wed Dec 3 05:57:29 1997 Richard Kenner + + * configure.in (AC_HEADER_{STDC,TIME}): Add calls. + (AC_CHECK_HEADERS): Add fcntl.h times.h, sys/times.h, + sys/resource.h, and sys/param.h. + (getenv): Check if need declaration. + * cccp.c: Remove obsolete ways of including headers and use autoconf + symbols instead. + Include gansidecl.h; remove things defined there. + See if getenv needs to be declared. + * cpplib.c: Likewise. + * cexp.y: Use autoconf symbols to select what include files are needed. + * genattrtab.c, toplev.c: Likewise. + +Tue Dec 2 21:44:25 1997 Richard Kenner + + * reload1.c (reload): Make copy of MEM before setting + req_equiv_mem if the address is a PLUS. + +Tue Dec 2 07:03:47 1997 Pat Rankin + + * vax/xm-vms.h (STDC_HEADERS, HAVE_STDLIB, HAVE_STRING): Define. + (mesg_implicit_function_declaration): New macro. + + * make-l2.com: Compile libgcc2.c with `-fexceptions' specified. + +Mon Dec 1 17:44:59 1997 Jeffrey A Law (law@cygnus.com) + + * dwarf2out.c (output_call_frame_info): Use ASM_OUTPUT_ASCII to + output ASCII by default; only use ASM_OUTPUT_DWARF_STRING if + flag_debug_asm is on. + (output_die, output_pubnames, output_line_info): Likewise. + +Mon Dec 1 17:15:30 1997 Philip Blundell + + * arm/linux.h (SUBTARGET_CPU_DEFAULT): Define instead + of TARGET_CPU_DEFAULT. + +Mon Dec 1 16:51:23 1997 J.J. van der Heijden + + * i386/mingw32.h (MATH_LIBRARY): Set to "-lcrtdll". + +Mon Dec 1 16:46:57 1997 Richard Kenner + + * c-aux-info.c: Add prototypes for static functions. + * c-lex.c, emit-rtl.c, rtl.c, xcoffout.c: Likewise. + + * i386.h (TARGET_SWITCHES): Add entries for "windows" and "dll". + +Mon Dec 1 16:42:20 1997 Jim Wilson + + * mips.md (fix_trunc{dfsi,sfsi,dfsi}2): Add '*' in operand 3. + +Sun Nov 30 20:25:59 1997 Richard Kenner + + * expr.c (get_inner_reference): For ARRAY_REF, if need + WITH_RECORD_EXPR, make it with the ARRAY_REF as exp. + + * expr.c (store_constructor): Use TARGET, not EXP, for + WITH_RECORD_EXPR when offset has a placeholder. + +Sun Nov 30 11:19:00 1997 J.J. van der Heijden + + * objc/Make-lang.in (libobjc.dll): Rename -dll flag to -mdll. + +Sun Nov 30 08:42:29 1997 Bruno Haible + + * stmt.c (expand_end_bindings): Cleanups and incoming gotos are + not incompatible. + +Sun Nov 30 05:45:06 1997 Michael P. Hayes + + * jump.c (jump_optimize): Use find_insert_position in two more places. + +Sat Nov 29 13:47:40 1997 Richard Kenner + + * alpha/vms.h (HAVE_STRERROR, HAVE_{LIMITS,STDDEF,TIME}_H): Define. + +Sat Nov 29 08:29:47 1997 J.J.van der Heijden + + * configure.in: Add check for kill. + * gcc.c: Define kill as raise if not HAVE_KILL. + +Sat Nov 29 06:18:08 1997 Michael P. Hayes + + * jump.c (find_insert_position): New function. + (jump_optimize): Use it when making new copy of insn after test. + +Sat Nov 29 05:54:57 1997 Douglas Rupp + + * alpha/vms.h (BIGGEST_ALIGNMENT, ENCODE_SECTION_INFO): No longer + override. + +Sat Nov 29 05:43:37 1997 Richard Kenner + + * getpwd.c (getpwd, [VMS]): Only add extra arg if VMS. + + * alpha/xm-vms.h (HAVE_VPRINTF, HAVE_PUTENV): Define. + + * cccp.c (index, rindex): Add conditional defs to strchr and strrchr.s + * cpplib.c: Likewise. + * gcov.c: Include gansidecl.h. + +Fri Nov 28 21:17:51 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * objc/objc-act.c: Include "output.h". + + * objc/Make-lang.in (objc-parse.o, objc-act.o): Also depend on + $(srcdir)/output.h. + + * objc/Object.m (+conformsTo:): Surround assignment with parentheses. + + * objc/archive.c, objc/class.c, objc/encoding.c: Finish prototyping. + * objc/init.c, objc/objc-act.c, objc/objc-api.h: Likewise. + * objc/runtime.h, objc/sendmsg.c: Likewise. + +Fri Nov 28 19:15:53 1997 Mark Kettenis + + * objc/thr-posix.c (__objc_mutex_allocate): Allocate + mutex type instead of assuming it fits in a void * type. + (__objc_mutex_deallocate): Free mutex type. + (__objc_mutex_lock): Pass mutex type instead of pointer to it. + (__objc_mutex_{try,un}lock): Likewise. + (__objc_condition_allocate): Allocate condition type instead + of assuming it fits in a void * type. + (__objc_condition_deallocate): Free condition type. + (__objc_condition_wait): Pass condition type instead of pointer to it. + (__objc_condition_{broadcast,signal}): Likewise. + +Fri Nov 28 17:07:25 1997 David Edelsohn + + * rs6000.c (function_arg_partial_nregs): Undo 11/26 change. + +Fri Nov 28 12:34:03 1997 Scott Christley + + * objc/Make-lang.in (runtime-info.h): Add comment in file. + + * objc/selector.c: Replace all occurences of sarray_get + with sarray_get_safe. + * objc/sendmsg.c: Likewise. + + * protoize.c (include_defaults): Add component element as in cccp.c. + * nextstep.h (INCLUDE_DEFAULTS): Add component element. + (ASM_COMMENT_START): Correct assembly comment string. + * objc/Make-lang.in (objc/{NXConstStr,Object,Protocol,linking): + Compile with GNU runtime. + +Fri Nov 28 12:27:50 1997 Ovidiu Predescu + + Generate platform information required by ObjC runtime. + * toplev.c (lang_options): New ObjC specific compiler flag. + * objc/Make-lang.in: Add target to generate runtime-info.h file. + * objc/objc-act.c (print_struct_values): New variable. + (generate_struct_by_value_array): New function. + (lang_init): Call generate_struct_by_value_array if requested. + (lang_decode_option): Check for new compiler flag.s + * objc/sendmsg.c (__objc_get_forward_imp): Check size of type + for determining proper forwarding function. + +Fri Nov 28 05:58:30 1997 Richard Kenner + + * regclass.c (record_address_regs): Use REG_OK_FOR_{INDEX,BASE}, + not the REGNO versions. + +Thu Nov 27 16:28:04 1997 Scott Snyder + + * dwarf2out.c (outout_call_frame_info): Ensure info has proper + alignment. + + * libgcc2.c (__throw): Initialize HANDLER. + +Thu Nov 27 16:23:25 1997 Kaveh R. Ghazi + + * tree.h, rtl.h: See if need declarations for free. + * tree.c, bc-optab.c: Get the declaration of free from stdlib.h. + +Thu Nov 27 07:21:54 1997 Jason Merrill + + * except.h: Add outer_context_label_stack. + * except.c: Likewise. + (expand_start_all_catch): Push the outer_context for the try block + onto outer_context_label_stack. + (expand_end_all_catch): Use it and pop it. + + * except.c (expand_start_all_catch): One more do_pending_stack_adjust. + + * expr.c (preexpand_calls): Don't look past a TRY_CATCH_EXPR. + +Thu Nov 27 07:15:10 1997 Michael Meissner + + * rs6000.c (SMALL_DATA_REG): Register to use for small data relocs. + (print_operand{,_address}): Use SMALL_DATA_REG for register involved in + small data relocations. + + * rs6000/linux.h (LINK_SPEC): Pass -dynamic-linker /lib/ld.so.1 if + -dynamic linker is not used. + + * rs6000.md (call insns): For local calls, use @local suffix under + System V; don't use @plt under Solaris. + +Wed Nov 26 15:12:32 1997 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (LIBGCC2_CFLAGS): Add -fexceptions. + + * toplev.c (flag_exceptions): Default value is 2. + (compile_file): If flag_exceptions still has the value 2, then + set it to 0. + +Wed Nov 26 14:58:42 1997 Michael Meissner + + * rs6000.c (output_function_profiler): Put label address in r0, and + store LR in 4(sp) for System V/eabi. + + * rs6000.h (ASM_OUTPUT_REG_{PUSH,POP}): Keep stack aligned to 16 + byte boundary, and maintain stack backchain. + + (Originally from Geoffrey Keating) + * rs6000.c (function_arg): Excess floating point arguments don't + go into GPR registers after exhausting FP registers under the + System V.4 ABI. + (function_arg_partial_nregs): Likewise. + + * rs6000.md (call insns): If -fPIC or -mrelocatable, add @plt + suffix to calls. + +Wed Nov 26 14:09:01 1997 Jason Merrill + + * dwarfout.c (output_type): If finalizing, write out nested types + of types we've already written. + + * toplev.c (main): Complain about -gdwarfn. + +Wed Nov 26 12:37:56 1997 J.J. van der Heijden + + * mingw32.h (PATH_SEPARATOR): Moved to xm-mingw32.h + * xm-mingw32.h (PATH_SEPARATOR): Moved here from mingw32.h. + + * getpwd.c (getpwd): Use VMS implementation of _WIN32 unless cygwin32. + +Wed Nov 26 12:26:44 1997 John Hassey + + * m88k/dgux.h (ASM_CPU_SPEC) : No whitespace allowed. + + * m88k.h (SUPPORTS_ONE_ONLY) : Must be svr4. + + * i386/dgux.h (ASM_OUTPUT_ALIGN): Deleted. + + * i386/dgux.c (output_file_start) : Changed ix86_isa_string + to ix86_arch_string. + + * cplus-dem.c (fancy_abort): Added. + +Wed Nov 26 06:07:50 1997 Richard Earnshaw + + * arm/coff.h (TARGET_DEFAULT): Add ARM_FLAG_APCS_32 to defaults. + + * configure.in (arm*-*-*): Recognize --with-cpu for ARM processors. + +Wed Nov 26 05:05:36 1997 Richard Kenner + + * libgcc2.c (inhibit_libc): Define #ifdef CROSS_COMPILE. + + * mips/xm-iris6.h (malloc, realloc, calloc): No longer declare. + (USG): Define here. + (xm-iris5.h): No longer include; just include xm-mips.h. + + * mips-tfile.c (parse_def): Properly recognize bitfield and + count array dimensions. + + * protoize.c: Remove declarations of void, exit, and free. + + * i386/mingw32.h (LINK_SPEC, STARTFILE_SPEC): Change -dll to -mdll. + + * configure.in: Check for sys/file.h. + * gcc.c (sys/file.h): Include if HAVE_SYS_FILE_H. + + * configure.in: Only give error on bad --with-cpu value for target. + +Sat Nov 22 19:21:55 1997 Philippe De Muyter + + * dwarf2out.c (CIE_LENGTH_LABEL, FDE_LENGTH_LABEL): New macros. + (ASM_OUTPUT_DWARF_VALUE4): New macro. + (ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Define if SET_ASM_OP is + defined. + (output_call_frame_info): Don't output forward label differences + if ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL is defined. + Substitute instead simple label and define this label later to be + difference of desired labels after they have been defined. + * m68k/mot3300.h (SET_ASM_OP): Define when not using gas. + + * gcc.c (process_command): Don't take address of function fatal when + calling lang_specific_driver. + +Sat Nov 22 17:08:03 1997 J. Kean Johnston + + * i386/sco5.h (SELECT_RTX_SECTION): Redefine to work with -fpic. + (LIBGCC_SPEC, LIB_SPEC): Link with correct libgcc.a. + (HAVE_ATEXIT): Define. + +Sat Nov 22 12:20:22 1997 Richard Earnshaw + + * arm.md (movsfcc{,_hard}_insn): Specify mode for all alternatives. + +Sat Nov 22 06:56:16 1997 Richard Kenner + + * function.c (instantiate_decl): Only ignore ADDRESSOF if arg is REG. + + * configure.in: Check for functions before checking which need decls. + (bcopy, bzero, bcmp, index, rindex): Add checks. + (vax-*-sysv*): Fix typo in setting of xm_file. + * aclocal.m4: Add conditional definitions of index and rindex. + * gansidecl.h (bcopy, bzero, bcmp, index, rindex): If don't + have one of these, define macro to use ANSI form. + * pa/xm-pahpux.h (bcopy, bzero, bcmp, rindex, index): No longer define. + * mips/xm-sysv.h, xm-m88k.h, m68k/xm-plexus.h: Likewise. + * m68k/xm-mot3300.h, m68k/xm-m68kv.h, m68k/xm-hp320.h: Likewise. + * winnt/xm-winnt.h, vax/xm-vms.h, m68k/xm-3b1.h: Likewise. + * i386/xm-os2.h, i386/xm-mingw32.h, alpha/xm-vms.h: Likewise. + * xm-svr4.h, xm-svr3.h: Likewise. + * clipper/xm-clix.h: Likewise. + (TARGET_MEM_FUNCTIONS): Define here. + * xm-linux.h (bcmp, bcopy, bzero, index, rindex): No longer undefine. + * xm-convex.h (bcopy, bzero): No longer define. + * vax/xm-vaxv.h, sparc/xm-pbd.h, mips/xm-iris{3,4,5}.h: Likewise. + * m68k/xm-crds.h, m68k/xm-altos3068.h, i386/xm-sun.h: Likewise. + * i386/xm-osf.h, i386/xm-aix.h, xm-i370.h, ns32k/xm-genix.h: Likewise. + +Sat Nov 22 06:46:26 1997 Paul Eggert + + * c-typeck.c, collect2.c, cpplib.c, dwarfout.c, gcov.c, protoize.c: + Don't include unless there's no . + +Fri Nov 21 06:46:50 1997 Richard Kenner + + * configure.in (i[3456]86-*-freebsd{,elf}*): Delete i386/xm-freebsd.h. + * xm-freebsd.h, i386/xm-freebsd.h: Deleted. + + * i386/xm-cygwin32.h (HAVE_RUSAGE, HAVE_FILE_H): Deleted. + * i386/xm-mingw32.h, rs6000/xm-cygwin32.h: Likewise. + + * xm-std32.h: New file, so far unused. + +Fri Nov 21 05:50:54 1997 Andreas Schwab + + * m68k.c (legitimize_pic_address): Make sure pic register marked used. + + * dwarf2out.c (output_call_frame_info): Call app_enable and + app_disable if flag_debug_asm, not if flag_verbose_asm. + +Thu Nov 20 16:37:36 1997 Richard Kenner + + * expr.c (expand_builtin_apply): Fix typo in last change. + + * expr.c (expand_assignment): If assigning to readonly field, + mark rtx as unchanging. + + * configure.in: Add checks for functions putenv, popen, and vprintf. + (i[3456]86-*-netbsd*): No longer need i386/xm-netbsd.h. + (i860-alliant-*): No longer need i860/xm-fx2800.h. + (m68k-ncr-sysv*): Use xm-svr3.h instead of m68k/xm-tower.h. + (m68k-sun-sunos*): No longer need m68k/xm-sun3.h. + (m68k-*-netbsd*): No longer need m68k/xm-netbsd.h. + (mips-dec-netbsd*): No longer need mips/xm-netbsd.h. + (ns32k-pc532-netbsd*): No longer need ns32k/xm-netbsd.h. + (sparc-*-netbsd*): No longer need sparc/xm-netbsd.h. + (vax-*-netbsd*): No longer need config/xm-netbsd.h. + * arm/xm-netbsd.h: No longer include xm-netbsd.h. + * xm-linux.h (HAVE_VPRINTF, HAVE_POPEN, HAVE_PUTENV): Deleted. + * xm-mips.h (HAVE_VPRINTF, HAVE_PUTENV): Deleted. + * i386/xm-osf.h, xm-arm.h, xm-alpha.h: Likewise. + * xm-sparc.h (HAVE_POPEN): Deleted. + * xm-sh.h (HAVE_VPRINTF): Deleted. + * mips/xm-iris4.h, mips/xm-iris5.h, xm-m88k.h: Likewise. + * m68k/xm-crds.h, m68k/xm-atari.h, m68k/xm-amix.h: Likewise. + * xm-svr3.h, xm-svr4.h, i386/xm-mingw32.h: Likewise. + * i386/xm-os2.h (HAVE_PUTENV): Deleted. + * i386/xm-dos.h, i386/xm-aix.h: Likewise. + * arm/xm-netbsd.h (HAVE_VPRINTF, HAVE_STRERROR): No longer + need undefine. + * xm-netbsd.h, i386/xm-netbsd.h, m68k/xm-netbsd.h: Deleted. + * mips/xm-netbsd.h, ns32k/xm-netbsd.h, sparc/xm-netbsd.h: Likewise. + * i860/xm-fx2800.h, m68k/xm-sun3.h, m68k/xm-tower.h: Likewise. + +Thu Nov 20 16:04:24 1997 Richard Earnshaw + + * explow.c (plus_constant_wide, case MEM): If about to call + force_const_mem, generate the rtl in a saveable obstack. + + * arm.md (movhi): Pass the full MEM to storeinthi, storehi and + storehi_bigend. + (storeinthi, storehi, storehi_bigend): Be more conservative about + when not to force a PLUS or MINUS into a REG. Use change_address + to create new MEMs. + +Wed Nov 19 15:16:04 1997 Ulrich Drepper + + * c-common.c (print_char_table): Add a and A to float formats. + (scan_char_table): Likewise. + (check_format_info): Recognize `a' as allocate flag only if used + in correct context. + +Wed Nov 19 12:56:54 1997 Andreas Schwab + + * configure.in: Fix check for . + +Tue Nov 18 19:27:01 1997 J"orn Rennecke + + * sh.md (attribute "type"): Add nil. + (movsi_ie): y/y alternative is type nil. + (movsf_ie): Replace ry/yr/X alternative by r/y/X , y/r/X and y/y/X. + (movsf_ie+1): Delete. + +Tue Nov 18 18:38:41 1997 Paul Eggert + + * cccp.c (warn_undef): Now static. + (eval_if_expression): Don't warn about undefined preprocessor symbols + in system headers. + * cexp.y (parse_c_expression): + Now takes new arg specifying whether to warn + about undefined preprocessor symbols. + (warn_undef): Now local and static; independent of warn_undef in cccp.c + (yylex): `register' -> `register int', needed for C9X. + + The following changes are only if TEST_EXP_READER is defined: + (expression_signedp): New var. + (start): Set expression_signedp to signedness of expression. + (print_unsigned_host_wide_int): New function. + (main): Use it to print value of expression, instead of hoping that + `long' is long enough. Print "u" after unsigned values. + +Tue Nov 18 18:33:30 1997 Jim Wilson + + * mips.c (save_restore_insns): If gp_offset or fp_offset are + large_int, emit two insns instead of one splitable insn. + * dwarf2out.c (dwarf2out_frame_debug): When set cfa_store_offset + from cfa_temp_value, use cfa_offset. Add assert checking that + cfa_reg is SP. + +Tue Nov 18 09:11:58 1997 Richard Kenner + + * fold-const.c (div_and_round_double): Return overflow for + divide-by-zero instead of aborting. + + * tree.c (substitute_in_expr, case TREE_LIST): Fix two typos. + +Tue Nov 18 05:03:52 1997 Jeffrey A Law + + * arm.c (output_move_double): Allocate 3 entries in otherops array. + +Tue Nov 18 02:41:01 1997 Paul Eggert + + * cccp.c (quote_string_for_make): New function. + (deps_output): Use it to fix bug with file name quoting in -M output. + +Mon Nov 17 13:28:33 1997 Philip Blundell + + * arm/lib1funcs.asm (__div0): Provide GNU/Linux implementation. + * arm/t-linux (LIB1ASMFUNCS): Use it. + +Mon Nov 17 09:13:59 1997 Andreas Schwab + + * function.c (purge_addressof_1): Make copy when substituting argument + of ADDRESSOF. + (fixup_var_refs_1): Likewise. + + * m68k.c: Include tree.h. + +Mon Nov 17 09:01:05 1997 Richard Kenner + + * getpwd.c (getpwd, [VMS]): Add extra arg of 0 to getcwd call. + + * alpha/vms.h ({OPTIMIZATION,OVERRIDE}_OPTIONS): Delete, for now. + * alpha/xm-vms.h (DIR_SEPARATOR, PATH_SEPARATOR): Delete. + +Mon Nov 17 08:52:45 1997 Richard Earnshaw + + * function.c (fixup_stack_1): Also fix-up refs via ARG_POINTER_REGNUM. + + * configure.in (arm-*-netbsd*): Doesn't need collect2. + +Mon Nov 17 08:50:01 1997 Stephen L Moshier + + * i386/isc.h (DWARF2_UNWIND_INFO): Define as 0. + +Mon Nov 17 08:42:28 1997 Michael P. Hayes + + * flow.c (propagate_block): Look for pre-inc/dec within PARALLEL. + +Mon Nov 17 03:14:46 1997 Paul Eggert + + * cpplib.c (file_size_and_mode): Remove. + (finclude): Don't assume long and off_t are same size or that + mode_t fits in int. + * cccp.c: (main, finclude, check_precompiled): Don't assume size_t + and off_t are same size. + * gcov.c (read_files): Don't assume off_t and unsigned are same size. + +Sun Nov 16 18:56:40 1997 Scott Christley + + * objc/objc-act.c (objc_demangle): New function. + (objc_printable_name): New function. + (init_objc): Change default function. + + * expr.c (expand_builtin_apply): Prefer nonlocal over block. + +Sun Nov 16 18:10:13 1997 Fila Kolodny + + * i370.c (i370_function_prolog): New function from i370.h. + * i370.h (FUNCTION_PROLOG): Just call i370_function_prolog. + +Sun Nov 16 08:40:35 1997 Bruno Haible + + * calls.c (expand_call, store_one_arg): Don't pass QImode arguments + to emit_library_call. + * expr.c (emit_push_insn, expand_assignment, store_expr): Likewise. + (expand_expr, expand_builtin): Likewise. + * function.c (put_var_into_stack, assign_parms): Likewise. + * alpha.c (alpha_builtin_saveregs): Likewise. + * clipper.c (clipper_builtin_saveregs): Likewise. + * m88k.c (m88k_builtin_saveregs): Likewise. + * pa.c (hppa_builtin_saveregs): Likewise. + * sparc.c (sparc_builtin_saveregs): Likewise. + +Sun Nov 16 07:39:08 1997 Paul Eggert + + * real.h (REAL_VALUES_IDENTICAL): New macro. + * expr.c (is_zeros_p): Don't consider -0.0 to be all zeros. + * fold-const.c (operand_equal_p): Don't consider -0.0 identical to 0.0. + * tree.c (simple_cst_equal): Likewise. + * varasm.c (immed_real_const_1): Use new REAL_VALUES_IDENTICAL macro. + +Sun Nov 16 07:29:12 1997 Richard Kenner + + * acconfig.h (NEED_DECLARATION_{,R}INDEX): New cases. + * configure.in: See if need declarations for index and rindex. + * c-typeck.c, collect2.c, cpplib.c, dwarfout.c, gcov.c, protoize.c: + Include stdlib.h, string.h, and strings.h, if they exist. + Only declare index and rindex if needed. + * collect2.c: Only declare free if needed. + + * regclass.c (record_address_regs): Refine choice of index and base + when have sum of two regs, one of which is a hard reg. + +Sun Nov 16 07:07:45 1997 Robert Lipe (robertl@dgii.com) + + * i386/sco5.h (ASM_OUTPUT_ALIGNED_BSS): Define as in sysv4 and linux + (HAVE_ATEXIT): No longer define. This confused ELF destructors. + (DBX_DEBUGGING_INFO): Define. + +Sat Nov 15 09:55:11 1997 Richard Earnshaw (rearnsha@arm.com) + + * arm.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept MINUS (until reload + knows what to do with it). + +Thu Nov 13 11:07:41 1997 Michael Meissner + + * rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to + pick apart floating point values, instead of using CONST_DOUBLE_LOW + and CONST_DOUBLE_HIGH. + + * rs6000.md (define_splits for DF constants): Use the appropriate + REAL_VALUE_* interface to pick apart DF floating point constants in + a machine independent fashion. + +Thu Nov 13 07:30:53 1997 Richard Earnshaw (rearnsha@arm.com) + + * arm/netbsd.h (LINK_SPEC): Redefine -- pass -X. + + * arm.md (movsicc_insn): Add extra reload alternatives for better + register tying. + (movsfcc_hard_insn, movsfcc_soft_insn, movdfcc_insn): Likewise. + +Mon Nov 10 19:32:14 1997 Doug Evans + + * sparc.md (mov[sdt]f_const_insn): Fix condition to match what + instruction can handle. + +Mon Nov 10 03:02:19 1997 Jason Merrill + + * stmt.c (expand_decl_cleanup_no_eh): New fn. + + * except.c (expand_leftover_cleanups): do_pending_stack_adjust. + +Sun Nov 9 14:34:47 1997 David Edelsohn + + * rs6000.md (lshrdi3_power): Delete '&' from first alternative and + swap instruction order. + +Sun Nov 9 09:51:08 1997 Michael P. Hayes + + * machmode.def (QCmode, HCmode): New modes. + +Sun Nov 9 09:24:21 1997 J"orn Rennecke + + * combine.c (sets_function_arg_p): New function. + (combinable_i3pat): Check if combining with any but the first + argument register setting insn for a function call. + + * a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid sheduling load from + stack slot. + +Sun Nov 9 09:17:53 1997 Richard Earnshaw (rearnsha@arm.com) + + * loop.c (strength_reduce): If initial value of BIV is equivalent to + a constant, record that as initial value. + (check_dbra_loop): Don't reverse loop if initial value isn't CONST_INT. + +Sun Nov 9 09:12:41 1997 Tristan Gingold + + * expr.c (emit_push_insn): Avoid infinite recursion + when -fcheck-memory-usage. + +Sun Nov 9 08:03:42 1997 Richard Kenner + + * cse.c (simplify_binary_operation): Fix error in last change. + +Sun Nov 9 07:56:31 1997 Pat Rankin + + * vmsconfig.com [version.opt]: Parse version string more robustly. + [@variable@]: Discard configure tokens when using Makefile.in. + [libgcc2-cxx.list]: Generate this new file for CXX_LIB2FUNCS. + [cp/input.c]: Suppress it as workaround to avoid linker warning. + [objc-parse.y]: Now lives in the objc subdirectory. + * make-cc1.com [objc-parse.{c,y}]: Ditto. + * make-cccp.com [prefix.c]: Compile additional source file. + + * cccp.c (VMS_freopen, VMS_fopen, VMS_open, VMS_fstat): Call + corresponding library routine specified via its ordinary name + rather than with a decc$ prefix. (Reverses Oct 19 change.) + + * cccp.c, cexp.y [HOST_WIDE_INT]: Manually splice long lines + of avoid backslash+newline continuation on #if directives. + +Sun Nov 9 01:54:54 1997 Jeffrey A Law (law@cygnus.com) + + * local-alloc.c (block_alloc): Don't lose if two SCRATCH expressions + are shared. + +Sat Nov 8 23:01:37 1997 Michael P. Hayes + + * cse.c (simplify_binary_operation): Don't simplify divide by zero + for targets that don't support a representation of INFINITY. + +Sat Nov 8 22:37:29 1997 Richard Earnshaw + + * Makefile.in (cse.o): Depend on expr.h. + * cse.c: Include expr.h. + (fold_rtx, case MEM): For ADDRESSOF, create new MEM. + +Sat Nov 8 19:27:56 1997 J"orn Rennecke + + * expr.c (expand_increment): When enqueing a postincrement for a MEM, + use copy_to_reg if address is not a general_operand. + +Sat Nov 8 18:39:56 1997 Jason Merrill + + * libgcc2.c (L_eh): Define __eh_pc here. + Replace __eh_type with generic pointer __eh_info. + +Sat Nov 8 07:03:47 1997 Richard Kenner + + * alpha.h (SECONDARY_OUTPUT_RELOAD_CLASS): If FLOAT_REGS, + need secondary reload for QImode and HImode even if BWX. + + * expmed.c (store_split_bit_field): Force ADDRESSOF into register. + + * cse.c (fold_rtx, case ADDRESSOF): New case (that does nothing). + + * function.c (fixup_var_refs_1, case ADDRESSSOF): Check that + new value is valid for insn. + + * stor-layout.c (get_best_mode): Refine test for field within + unit to work properly for negative positions. + + * print-rtl.c (print_inline_rtx): Save and restore sawclose and indent. + + * reload.c (find_replacement): If PLUS, MINUS, or MULT, see if + either arg contains a replacement. + +Fri Nov 7 10:22:24 1997 Jason Merrill + + * frame.c (add_fdes, count_fdes): Go back to checking pc_begin for + linked once FDEs. + +Fri Nov 7 06:50:57 1997 Richard Kenner + + * alpha.h (FUNCTION_VALUE): Take into account promotion of pointers. + + * unroll.c (back_branch_in_range_p): Refine check for INSN at loop end. + +Wed Nov 5 18:17:50 1997 Paul Eggert + + * fixinc.svr4: Replace `__STDC__ - 0 == 1' + with `defined (__STRICT_ANSI__)'. + +Tue Nov 4 18:32:44 1997 Jim Wilson + + * mips.md (insv, extzv, extv): Add change_address call. + (movsi_ulw, movsi_usw): Change QImode to BLKmode in pattern. + * mips.c (mips_expand_epilogue): Emit blockage insn before call to + save_restore_insns if no FP and GP will be restored. + + * acconfig.h (HAVE_INTTYPES_H): Undef. + * configure.in (inttypes.h): Check for conflicts between sys/types.h + and inttypes.h, and verify that intmax_t is defined. + * mips/x-iris (CC, OPT, OLDCC): Comment out. + * mips/x-iris3: Likewise. + +Tue Nov 4 17:28:31 1997 Doug Evans + + * c-lex.c (MULTIBYTE_CHARS): #undef if cross compiling. + (yylex): Record wide strings using target endianness, not host. + +Tue Nov 4 16:18:19 1997 Richard Kenner + + * Makefile.in (distdir-start): Add dependency on $(srcdir)/config.in. + +Tue Nov 4 06:14:30 1997 Paul Eggert + + * c-lex.c (yylex): Don't warn about constants like + 9223372036854775807 and 18446744073709551615U on an L32LL64 host + unless pedantic. + +Mon Nov 3 18:42:44 1997 Jim Wilson + + * i386.c (load_pic_register): Call prologue_get_pc_and_set_got. + * i386.md (prologue_{set_got,get_pc}): Add UNSPEC_VOLATILE to pattern. + (prologue_get_pc_and_set_got): New pattern. + +Mon Nov 3 13:42:21 1997 Paul Eggert + + * cccp.c, cpplib.c (compare_defs): Don't complain about arg name + respellings unless pedantic. + * cpplib.c (compare_defs): Accept pfile as new arg. + All callers changed. + +Fri Oct 31 07:10:09 1997 Jeffrey A Law (law@cygnus.com) + + * global.c (global_alloc): Free the conflict matrix after + reload has finished. + +Thu Oct 30 17:30:42 1997 Doug Evans + + * configure.in (sparc-*-elf*): Use sparc/elf.h, sparc/t-elf. + Set extra_parts. + (sparc*-*-*): Recognize --with-cpu=v9. + * sparc/elf.h: New file. + * sparc/t-elf: New file. + +Thu Oct 30 16:36:17 1997 Richard Kenner + + * stmt.c (expand_asm_operand): If error in matching constraint, + don't emit asm. + +Thu Oct 30 12:21:06 1997 J"orn Rennecke + + * va-sh.h (__va_arg_sh1): Define. + (va_arg): Use it. + SH3E doesn't use any integer registers for subsequent arguments + once a non-float value was passed in the stack. + * sh.c (machine_dependent_reorg): If optimizing, put explicit + alignment in front label for ADDR_DIFF_VEC. + * sh.h (PASS_IN_REG_P): Fix SH3E case. + (ADJUST_INSN_LENGTH): If not optimizing, add two extra bytes length. + +Tue Oct 28 21:09:25 1997 Jim Wilson + + * m68k.md (btst patterns): Add 5200 support. + +1997-10-28 Brendan Kehoe + + * global.c (global_alloc): Use xmalloc instead of alloca for + CONFLICTS, since max_allocno * allocno_row_words alone can be more + than 2.5Mb sometimes. + +Tue Oct 28 15:06:44 1997 J"orn Rennecke + + * sh/elf.h (PREFERRED_DEBUGGING_TYPE): Undefine before including + svr4.h. + +Tue Oct 28 10:19:01 1997 Jason Merrill + + From Brendan: + * dwarf2out.c (output_call_frame_info): Use l1 instead of ".". + +Mon Oct 27 16:01:14 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Disable reg+reg. + +Mon Oct 27 16:11:52 1997 J"orn Rennecke + + * sh.c (machine_dependent_reorg): When -flag_delayed_branches, + put an use_sfunc_addr before each sfunc. + * sh.md (use_sfunc_addr, dummy_jump): New insns. + (casesi): For TARGET_SH2, emit a dummy_jump after LAB. + +Mon Oct 27 11:49:43 1997 Jason Merrill + + * dwarf2.h: Remove dwarf2out prototypes. + * tree.h: And put them here. + * m68k.c, i386.c: Don't include dwarf2.h. + +Mon Oct 27 00:02:13 1997 Paul Eggert + + Remap include files with header.gcc only if user or configuration + file specifies "-remap". + + * cccp.c (remap): New var. + (main): Set it if user specifies "-remap". + (open_include_file): Remap only if `remap' is nonzero. + + * cpplib.h (struct cpp_options): New member `remap'. + * cpplib.c (cpp_options_init): Set remap to 0. + (open_include_file): Remap only if `remap' is nonzero. + (cpp_handle_options): Set remap if user specifies "-remap". + + * i386/cygwin32.h, rs6000/cygwin32.h (CPP_SPEC): Define with -remap. + +Sun Oct 26 11:41:49 1997 Jason Merrill + + * dwarf2out.c (output_call_frame_info): The CIE pointer is now a 32 + bit PC-relative offset. The exception range table pointer is now in + the CIE. + * frame.c (dwarf_cie, dwarf_fde): Rename CIE_pointer to CIE_delta. + (count_fdes, add_fdes, get_cie): Adjust. + (cie_info, extract_cie_info, __frame_state_for): Adjust eh_ptr uses. + + From H.J. Lu: + * frame.c (count_fdes, add_fdes): Skip linked once FDE entries. + +Sat Oct 25 20:29:39 1997 Alexandre Oliva + + * Makefile.in (float.h-nat): If float.h is to be empty, ensure it is. + +Sat Oct 25 20:16:52 1997 Kaveh R. Ghazi + + * prefix.c: Use stdarg.h only ifdef __STDC__. Otherwise, + use varargs.h. Wrap header with <>, not "". + +Sat Oct 25 20:10:57 1997 Robert Lipe (robertl@dgii.com) + + * i386/sco5.h (EH_FRAME_SECTION_ASM_OP{,_ELF,_COFF}): Define. + (DWARF2_UNWIND_INFO): Likewise. + (EXTRA_SECTIONS): Add in_eh. + +Sat Oct 25 12:20:58 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.h (TARGET_SWITCHES): Add -mmult-bug and -mno-mult-bug. + (TARGET_MULT_BUG): Define. + (TARGET_DEFAULT): Default to TARGET_MULT_BUG. + * mn10300.md (mulsi3): Handle TARGET_MULT_BUG. + +Fri Oct 24 15:43:57 1997 Michael Meissner + + * rs6000.c (toplevel): Move include stdio.h before config.h. + + (Patch from H.J. Lu, Aug 27, 1997) + * rs6000/linux.h (DEFAULT_VTABLE_THUNKS): New; defined as 1. + + (Patch from Jeff Law, Oct 22, 1997) + * rs6000.c (struct machine_function): Add pic_offset_table_rtx. + (rs6000_{save,restore}_machine_status): Save/restore it. + + * rs6000.md (movsi_got_internal_mem): New pattern to work around + case where GOT value did not get a register. + (movsi_got_internal_mem splitter): Split above pattern. + + (Patch from Geoffrey Keating, Oct 21, 1997) + * rs6000.c (rs6000_stack_info): Avoid creating a stack + frame under System V ABI if we only need to save the LR. + + (Patch from Joel Sherrill, Sep 1, 1997) + * rs6000/sysv4.h (SUBTARGET_SWITCHES): Add new macro + EXTRA_SUBTARGET_SWITCHES, which defaults to nothing. + + (Patch from Geoffrey Keating, Oct 20, 1997) + * rs6000/t-ppccomm (CRTSTUFF_T_CFLAGS{,_S}): Add -msdata=none + switch. + +Fri Oct 24 15:25:50 1997 Doug Evans + + * sparc.h (ASM_SPEC): Delete. + +Fri Oct 24 13:16:24 1997 Jeffrey A Law (law@cygnus.com) + + * mn10200.c (indirect_memory_operand): Delete unused function. + * mn10200.h (EXTRA_CONSTRAINT): Handle 'R'. + * mn10200.md (bset, bclr insns): Handle output in a reg too. + + * mn10300.c (symbolic_operand, legitimize_address): New functions. + * mn10300.h (LEGITIMIZE_ADDRESS): Call legitimize_address. + (GO_IF_LEGITIMATE_ADDRESS): Don't allow base + symbolic. + +Thu Oct 23 08:03:59 1997 J"orn Rennecke + + * dbxout.c (dbxout_start_new_source_file): Use output_quoted_string + for FILENAME. + +Tue Oct 21 16:18:13 1997 Paul Eggert + + * winnt/win-nt.h (CPP_SPEC): Remove reference to obsolete + option -lang-c-c++-comments. + +Tue Oct 21 10:00:20 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (movqi, movhi): Avoid using address registers as + destinations unless absolutely necessary. + + * mn10200.c (expand_prologue): Fix typo. + + * mn10200.h (GO_IF_LEGITIMATE_ADDRESS): Do not allow indexed addresses. + * mn10200.md (neghi2): Provide an alternative which works if + the input and output register are the same. + + * mn10300.c (print_operand): Handle 'S'. + * mn10300.md (ashlsi3, lshrsi3, ashrsi3): Use %S for + shift amount in last alternative + + * mn10300.c (expand_epilogue): Rework to handle register restores + in "ret" and "retf" instructions correctly. + +Tue Oct 21 07:35:19 1997 Richard Earnshaw (rearnsha@arm.com) + + * arm.md (insv): Avoid writing result into a paradoxical subreg. + +Tue Oct 21 07:12:28 1997 J"orn Rennecke + + * sh/elf.h (PREFERRED_DEBUGGING_TYPE): Don't redefine. + +Mon Oct 20 12:04:04 1997 Nick Clifton + + * v850.h (CPP_SPEC): Define __v850__. + (CPP_PREDEFINES): Do not define __v850__. + + * xm-v850.h: Use __v850 rather than __v850__ to identify v850 port. + +Mon Oct 20 17:29:55 1997 Doug Evans + + * sparc.h (SPARC_V9,SPARC_ARCH64): Delete. + (DEFAULT_ARCH32_P): New macro. + (TARGET_ARCH{32,64}): Allow compile time or runtime selection. + (enum cmodel): Declare. + (sparc_cmodel_string,sparc_cmodel): Declare. + (SPARC_DEFAULT_CMODEL): Provide default. + (TARGET_{MEDLOW,MEDANY}): Renamed to TARGET_CM_{MEDLOW,MEDANY}. + (TARGET_FULLANY): Deleted. + (TARGET_CM_MEDMID): New macro. + (CPP_CPU_DEFAULT_SPEC): Renamed from CPP_DEFAULT_SPEC. + (ASM_CPU_DEFAULT_SPEC): Renamed from ASM_DEFAULT_SPEC. + (CPP_PREDEFINES): Take out stuff now handled by %(cpp_arch). + (CPP_SPEC): Rewrite. + (CPP_ARCH{,32,64,_DEFAULT}_SPEC): New macros. + (CPP_{ENDIAN,SUBTARGET}_SPEC): New macros. + (ASM_ARCH{,32,64,_DEFAULT}_SPEC): New macros. + (ASM_SPEC): Add %(asm_arch). + (EXTRA_SPECS): Rename cpp_default to cpp_cpu_default. + Rename asm_default to asm_cpu_default. + Add cpp_arch32, cpp_arch64, cpp_arch_default, cpp_arch, cpp_endian, + cpp_subtarget, asm_arch32, asm_arch64, asm_arch_default, asm_arch. + (NO_BUILTIN_{PTRDIFF,SIZE}_TYPE): Define ifdef SPARC_BI_ARCH. + ({PTRDIFF,SIZE}_TYPE): Provide 32 and 64 bit values. + (MASK_INT64,MASK_LONG64): Delete. + (MASK_ARCH64): Renamed to MASK_64BIT. + (MASK_{MEDLOW,MEDANY,FULLANY,CODE_MODEL}): Delete. + (EMBMEDANY_BASE_REG): Renamed from MEDANY_BASE_REG. + (TARGET_SWITCHES): Always provide 64 bit options. + (ARCH64_SWITCHES): Delete. + (TARGET_OPTIONS): New option -mcmodel=. + (INT_TYPE_SIZE): Always 32. + (MAX_LONG_TYPE_SIZE): Define ifdef SPARC_BI_ARCH. + (INIT_EXPANDERS): sparc64_init_expanders renamed to sparc_init_.... + (FUNCTION_{,BLOCK_}PROFILER): Delete TARGET_EMBMEDANY support. + (PRINT_OPERAND_PUNCT_VALID_P): Add '_'. + * sparc/linux-aout.h (CPP_PREDEFINES): Take out stuff handled by + CPP_SPEC. + (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC. + * sparc/linux.h: Likewise. + * sparc/linux64.h (SPARC_V9,SPARC_ARCH64): Delete. + (ASM_CPU_DEFAULT_SPEC): Renamed from ASM_DEFAULT_SPEC. + (TARGET_DEFAULT): Delete MASK_LONG64, MASK_MEDANY, add MASK_64BIT. + (SPARC_DEFAULT_CMODEL): Define. + (CPP_PREDEFINES): Take out stuff handled by CPP_SPEC. + (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC. + (LONG_DOUBLE_TYPE_SIZE): Define. + (ASM_SPEC): Add %(asm_arch). + * sparc/sol2.h (CPP_PREDEFINES): Take out stuff handled by CPP_SPEC. + (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC. + (TARGET_CPU_DEFAULT): Add ultrasparc case. + * sparc/sp64-aout.h (SPARC_V9,SPARC_ARCH64): Delete. + (TARGET_DEFAULT): MASK_ARCH64 renamed to MASK_64BIT. + (SPARC_DEFAULT_CMODEL): Define. + * sparc/sp64-elf.h (SPARC_V9,SPARC_ARCH64): Delete. + (TARGET_DEFAULT): MASK_ARCH64 renamed to MASK_64BIT. Delete + MASK_LONG64, MASK_MEDANY. + (SPARC_DEFAULT_CMODEL): Define. + (CPP_PREDEFINES): Delete. + (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC. + (ASM_SPEC): Add %(asm_arch). + (LONG_DOUBLE_TYPE_SIZE): Define. + (DWARF2_DEBUGGING_INFO): Define. + * sparc/splet.h (CPP_SPEC): Delete. + * sparc/sysv4.h (CPP_PREDEFINES): Take out stuff handled by CPP_SPEC. + (FUNCTION_BLOCK_PROFILER): Delete TARGET_EMBMEDANY support. + (BLOCK_PROFILER): Likewise. + * sparc.c (sparc_cmodel_string,sparc_cmodel): New globals. + (sparc_override_options): Handle code model selection. + (sparc_init_expanders): Renamed from sparc64_init_expanders. + * sparc.md: TARGET_ renamed to TARGET_CM_.... + TARGET_MEDANY renamed to TARGET_CM_EMBMEDANY. + (sethi_di_embmedany_{data,text}): Renamed from sethi_di_medany_.... + (sethi_di_fullany): Delete. + +Mon Oct 20 17:20:17 1997 Jim Wilson + + * mips.c (compute_frame_size): Not a leaf function if profile_flag set. + +Sun Oct 19 17:46:02 1997 Douglas Rupp + + * cccp.c (OBJECT_SUFFIX): Add default definition. + (main): Use OBJECT_SUFFIX. + (VMS_{freopen,fopen,open}): Use instead of using macro on + unprefixed name. + (VMS_fstat): Use decc$fstat explicitly, not via macro. + +Sun Oct 19 09:07:38 1997 Richard Kenner + + * prefix.c (get_key_value): Initialize prefix to null. + * Makefile.in (prefix.o): Properly pass in prefix. + + * objc/Make-lang.in (objc.distdir): Make the objc directory. + * Makefile.in (distdir-start): No longer depend on objc-parse.[cy]. + Don't copy objc files here. + (TAGS): Don't delete objc-parse.y + + * i386/mingw32.h (LIB_SPEC): Add -ladvapi32. + (STARTFILE_SPEC): If -dll, use dllcrt1.o. + (INCOMING_RETURN_ADDR_RTX): Undefine. + + * Makefile.in (float.h-nat): Avoid using /dev/null for input, + since it's not present on all systems. + + * prefix.c : New file. + * Makefile.in (xgcc, cccp, cppmain, fix-header): Add prefix.o. + (prefix.o): New rule. + * cccp.c (update_path): Add extern definition. + (struct default_include): New field `component'. + (default_include): Add initializer for new field to all entries. + (new_include_prefix): Take new arg and call update_path; + all callers changed. + Add trailing "." before doing stat of file. + * cpplib.c (update_path): Add extern definition. + (struct default_include): New field `component'. + (default_include): Add initializer for new field to all entries. + (cpp_start_read): Call update_path. + * gcc.c (upate_path): Add extern definition. + (find_a_file): For MS-DOS-based, consider a drive spec as absolute. + (add_prefix): New arg component and pass to update_path; + all callers changed. + * netbsd.h (INCLUDE_DEFAULTS): Add `component' to values. + * i386/freebsd.h, mips/netbsd.h, winnt/win-nt.h: Likewise. + * i386/mingw32 (STANDARD_INCLUDE_COMPONENT): New macro. + * vax/vms.h (INCLUDE_DEFAULTS): New macro. + * vax/xm-vms.h (INCLUDE_DEFAULTS): Delete from here. + + * sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): New macro. + + * i386.c (ix86_prologue): Conditionalize Dwarf2 calls + on #ifdef INCOMING_RETURN_ADDR_RTX. + * i386.md (allocate_stack): Fix incorrect operand number. + + * alpha.c (vmskrunch): Deleted. + (output_prolog, VMS): Use alloca for entry_label and don't + truncate to 64 characters. + * alpha/vms.h (vmskrunch): No longer define. + (ENCODE_SECTION_INFO): No longer call vmskrunch. + (ASM_DECLARE_FUNCTION_NAME): No longer override. + + * toplev.c (output_quoted_string): Call new OUTPUT_QUOTED_STRING macro. + * i386/mingw32.h (OUTPUT_QUOTED_STRING): New macro. + + * stmt.c (using_eh_for_cleanups_p): New variable. + (using_eh_for_cleanups): New function. + (expand_decl_cleanup): Don't call expand_eh_region_start_tree + unless using EH for cleanups. + + * function.c (purge_addressof_1): When dealing with a + bare (address (mem)), verify that what's inside is valid in insn. + (instantiate_virtual_regs_1, case ADDRESSOF): If have MEM, just + do instantiation inside and leave alone here. + + * fold-const.c (fold, case COND_EXPR): Allow creation + of {MIN,MAX}_EXPR, but preserve info on orginal comparison code. + + * function.h (restore_tree_status): Update prototype. + + * cse.c (cse_basic_block): Flush the hash table every 1,000 insns. + +Sat Oct 18 13:48:14 1997 J"orn Rennecke + + * longlong.h (count_leading_zeros): Add missing casts to USItype. + +Sat Oct 18 13:35:09 1997 Marc Lehmann (pcg@goof.com) + + * toplev.c (main): Don't execute "ps" under MSDOS. + +Sat Oct 18 13:26:42 1997 Richard Earnshaw (rearnsha@arm.com) + + * function.c (instantiate_virtual_regs): Don't instantiate the + stack slots for the parm registers until after the insns have had + their virtuals instantiated. + + * varargs.h (va_arg): For ARM systems, definition is endian-dependent. + * stdarg.h (va_arg): Likewise. + +Sat Oct 18 11:23:04 1997 Nick Clifton + + * final.c (end_final): Use ASM_OUTPUT_ALIGNED_DECL_LOCAL if defined. + * varasm.c (assemble_static_space): Likewise. + (assemble_variable): Use ASM_OUTPUT_ALIGNED_DECL_{COMMON,LOCAL} if def. + +Sat Oct 18 11:02:19 1997 Doug Evans + + * expr.c (use_group_regs): Don't call use_reg unless REG. + +Sat Oct 18 10:39:22 1997 Jim Wilson + + * cse.c (simplify_ternary_operation, case IF_THEN_ELSE): Collapse + redundant conditional moves to single operand. + + * expmed.c (extract_bit_field): Don't make flag_force_mem disable + extzv for memory operands. + +Sat Oct 18 09:58:44 1997 Jeffrey A Law + + * ptx4.h: Fix typo. + + * integrate.c (save_for_inline_copying): Avoid undefined pointer + operations. + (expand_inline_function): Likewise. + +Sat Oct 18 09:49:46 1997 Jason Merrill + + * tree.c (restore_tree_status): Also free up temporary storage + when we finish a toplevel function. + (dump_tree_statistics): Print stats for backend obstacks. + + * libgcc2.c (__throw): Don't copy the return address. + * dwarf2out.c (expand_builtin_dwarf_reg_size): Ignore return address. + + * tree.c (expr_tree_cons, build_expr_list, expralloc): New fns. + * tree.h: Declare them. + + * except.c (exceptions_via_longjmp): Initialize to 2 (uninitialized). + * toplev.c (main): Initialize exceptions_via_longjmp. + + * tree.c: Add extra_inline_obstacks. + (save_tree_status): Use it. + (restore_tree_status): If this is a toplevel inline obstack and we + didn't want to save anything on it, recycle it. + (print_inline_obstack_statistics): New fn. + * function.c (pop_function_context_from): Pass context to + restore_tree_status. + +Sat Oct 18 09:45:22 1997 Michael Meissner + + * profile.c (get_file_function_name): Remove declaration. + * c-lang.c (finish_file): Likewise. + +Sat Oct 18 09:35:40 1997 Tristan Gingold + + * expr.c (expand_assignment): If -fcheck-memory-usage, add call to + chkr_check_addr if size not zero. + (expand_expr, case COMPONENT_REF): Likewise. + (expand_builtin): If -fcheck_memory-usage, check memory usage + of operands for strlen, strcpy, and memcpy or don't use builtins + for memcmp and strcmp. + * expr.h (chkr_check_str_libfunc): Declare. + * optabs.c (chkr_check_str_libfunc): New variable. + (init_optabs): Initialize it. + +Sat Oct 18 09:29:21 1997 J"orn Rennecke + + * i386/cygwin32.h (ASM_COMMENT_START): Redefine. + +Sat Oct 18 09:23:54 1997 Andreas Schwab + + * frame.c (__frame_state_for): Execute the FDE insns until the + current pc value is strictly bigger than the target pc value. + + * expr.c (expand_expr, case TARGET_EXPR): If target and slot has + no DECL_RTL, then call mark_addressable again for the slot after + we give it RTL. + +Sat Oct 18 08:58:36 1997 Manfred Hollstein (manfred@lts.sel.alcatel.de) + + * m88k/dolph.h (INITIALIZE_TRAMPOLINE): Delete here. + * m88k/sysv3.h (INITIALIZE_TRAMPOLINE): Unconditionally define. + * libgcc2.c (__enable_execute_stack): Check for __sysV88__ not + __DOLPHIN__. + + * m68k/mot3300.h (ASM_OUTPUT_ALIGN): Accept any alignment. + * dwarf2out.c (output_call_frame_info): Call app_enable and + app_disable to let GNU as accept the generated comments. + + * m88k.c (m88k_begin_prologue): Remove superfluous backslash. + +Sat Oct 18 08:50:04 1997 Philippe De Muyter + + * flow.c (print_rtl_with_bb): Cast alloca return values. + +Sat Oct 18 08:47:46 1997 Douglas Rupp + + * alpha/vms.h (LITERALS_SECTION_ASM_OP, ASM_OUTPUT_DEF): + (EXTRA_SECTION_FUNCTIONS): Add literals_section. + (EXTRA_SECTIONS): Include in_literals. + +Sat Oct 18 08:40:55 1997 Nick Burrett + + * cpplib.c: (initialize_builtins): Cast all string constants for the + function install, to type U_CHAR *. + (eval_if_expression): Likewise. + * cppexp.c: (cpp_lex): Cast string, for cpp_lookup, to type U_CHAR *. + +Sat Oct 18 08:38:13 1997 Ken Raeburn + + * c-lex.c (check_newline) At `skipline', flush nextchar as well. + +Sat Oct 18 08:17:13 1997 Paul Russell + + * input.h (struct file_stack): Added indent_level. + * c-lex.c (check_newline): Add {}-count & balance warning. + +Sat Oct 18 06:54:39 1997 Richard Kenner + + * regclass.c (record_address_regs, case PLUS): Refine how to choose + which is base and index. + + * alpha.h (FUNCTION_VALUE): Use word_mode only for integral types, + not types with integral modes. + + * final.c (alter_cond): Properly conditionalize forward decl. + + * tree.h (SAVE_EXPR_NOPLACEHOLDER): New flag. + * tree.c (contains_placeholder_p, case SAVE_EXPR): Avoid + checking each SAVE_EXPR more than once. + + * rs6000.md (nonlocal_goto_receiver): Don't test pool size. + + * i386.c (load_pic_register): New function. + (ix86_prologue): Code to load PIC register moved to new function. + Don't emit blockage if not generating RTL. + * i386.md (nolocal_goto_receiver): New pattern. + + * i386.c: Major cleanup, mostly reformatting. + Include dwarf2.h. + Remove many spurious casts. + (ix86_{pro,epi}logue): Use proper mode for SET rtx. + +Fri Oct 17 17:13:42 1997 David S. Miller + + * sparc/linux64.h (LINK_SPEC): Dynamic linker is ld-linux64.so.2. + * sparc.h (FUNCTION_PROFILER): Fix format string when TARGET_MEDANY. + * sparc.c (output_double_int): Output DI mode values + correctly when HOST_BITS_PER_WIDE_INT is 64. + (output_fp_move_quad): If TARGET_V9 and not TARGET_HARD_QUAD, use + fmovd so it works if a quad float ends up in one of the upper 32 + float regs. + * sparc.md (pic_{lo_sum,sethi}_di): New patterns for PIC support + on sparc64. + +Fri Oct 17 16:27:07 1997 Doug Evans + + * sparc/sp64-elf.h (TARGET_DEFAULT): Delete MASK_STACK_BIAS. + * sparc.h (PROMOTE_MODE): Promote small ints if arch64. + (PROMOTE_FUNCTION_ARGS,PROMOTE_FUNCTION_RETURN): Define. + (SPARC_FIRST_FP_REG, SPARC_FP_REG_P): New macros. + (SPARC_{OUTGOING,INCOMING}_INT_ARG_FIRST): New macros. + (SPARC_FP_ARG_FIRST): New macro. + (CONDITIONAL_REGISTER_USAGE): All v9 fp regs are volatile now. + (REG_ALLOC_ORDER,REG_LEAF_ALLOC_ORDER): Reorganize fp regs. + (NPARM_REGS): There are 32 fp argument registers now. + (FUNCTION_ARG_REGNO_P): Likewise. + (FIRST_PARM_OFFSET): Update to new v9 abi. + (REG_PARM_STACK_SPACE): Define for arch64. + (enum sparc_arg_class): Delete. + (sparc_arg_count,sparc_n_named_args): Delete. + (struct sparc_args): Redefine and use for arch32 as well as arch64. + (GET_SPARC_ARG_CLASS,ROUND_REG,ROUND_ADVANCE): Delete. + (FUNCTION_ARG_ADVANCE): Rewrite. + (FUNCTION_ARG,FUNCTION_INCOMING_ARG): Rewrite. + (FUNCTION_ARG_{PARTIAL_NREGS,PASS_BY_REFERENCE}): Rewrite. + (FUNCTION_ARG_CALLEE_COPIES): Delete. + (FUNCTION_ARG_{PADDING,BOUNDARY}): Define. + (STRICT_ARGUMENT_NAMING): Define. + (doublemove_string): Declare. + * sparc.c (sparc_arg_count,sparc_n_named_args): Delete. + (single_move_string): Use GEN_INT, and HOST_WIDE_INT. + (doublemove_string): New function. + (output_move_quad): Clean up some of the arch64 support. + (compute_frame_size): Add REG_PARM_STACK_SPACE if arch64. + Don't add 8 bytes of reserved space if arch64. + (sparc_builtin_saveregs): Combine arch32/arch64 versions. + (init_cumulative_args): New function. + (function_arg_slotno): New static function. + (function_arg,function_arg_partial_nregs): New functions. + (function_arg_{pass_by_reference,advance}): New functions. + (function_arg_padding): New function. + * ginclude/va-sparc.h: Rewrite v9 support. + +Fri Oct 17 13:21:45 EDT 1997 Philip Blundell + + * arm/netbsd.h (TYPE_OPERAND_FMT): use % not @ to avoid + problems with comments. + +Fri Oct 17 13:00:38 EDT 1997 Richard Earnshaw (rearnsha@arm.com) + + * arm/aout.h (ASM_OUTPUT_LABEL): Define in place of ARM_OUTPUT_LABEL. + * arm/aof.h (ASM_OUTPUT_LABEL): Likewise. + * arm.h (ASM_OUTPUT_LABEL): Delete. + (ASM_OUTPUT_INTERNAL_LABEL): Call ASM_OUTPUT_LABEL directly. + * arm.c (arm_asm_output_label): Delete. + + * arm/aout.h (ASM_OUTPUT_ALIGNED_LOCAL): Do what is needed inline. + * arm.c (output_lcomm_directive): Delete. + + * arm.h (PUSH_ROUNDING): Delete; this is not what happens. + (ACCUMULATE_OUTGOING_ARGS): Define. + (PROMOTE_FUNCTION_ARGS): Define. + (INITIAL_ELIMINATION_OFFSET): Take current_function_outgoing_args_size + into account. + * arm.c (use_return_insn, output_func_epilogue, + arm_expand_prologue): Likewise. + + * arm.c (const_ok_for_arm): If HOST_WIDE_INT more than 32 bits, + insist high bits are all zero or all one. + (output_move_double): Handle case where CONST_INT is more than 32 bits. + + * arm.c (load_multiple_sequence): Support SUBREG of MEM. + (store_multiple_sequence): Likewise. + + * arm.c (arm_gen_load_multiple): New args UNCHANGING_P and IN_STRUCT_P. + Use them if we create any new MEMs; all callers changed. + (arm_gen_store_multiple): Likewise. + (arm_gen_movstrqi): Preserve RTX_UNCHANGING_P and MEM_IN_STRUCT_P + on any MEMs created. + + * arm.h (ASM_OUTPUT_MI_THUNK): Use branch instruction to jump to label. + (RETURN_ADDR_RTX): Use NULL_RTX rather than casting zero. + (output_move_double): Correct typo in prototype. + + * arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3] valid. + + * arm/netbsd.h (CPP_PREDEFINES): Always predefine __arm__. + * arm/xm-netbsd.h (SYS_SIGLIST_DECLARED, HAVE_STRERROR): Define these. + + * arm/t-netbsd (CROSS_LIBGCC1, LIB1ASMSRC, LIB1ASMFUNCS) Don't define + these any more. + * configure.in (arm-*-netbsd*): Pick up t-netbsd before arm/t-netbsd. + +Thu Oct 16 19:31:22 1997 Jim Wilson + + * v850.c (ep_memory_offset): New function. + (ep_memory_operand, substitute_ep_register, v850_reorg): Call it. + + * v850.h (CONST_OK_FOR_*): Add and correct comments. + (CONSTANT_ADDRESS_P): Add comment. + (EXTRA_CONSTRAINT): Define 'U'. + * v850.md: Add comments on bit field instructions. + (addsi3): Delete &r/r/r alternative. Add r/r/U alternative. + (lshrsi3): Use N not J constraint. + + * v850.md (v850_tst1+1): New define_split for tst1 instruction. + + * v850.c (reg_or_0_operand): Call register_operand. + (reg_or_int5_operand): Likewise. + * v850.h (MASK_BIG_SWITCH, TARGET_BIG_SWITCH): New macros. + (TARGET_SWITCHES): Add "big-switch". + (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT, CASE_VECTOR_MODE, + ASM_OUTPUT_BEFORE_BASE_LABEL): Add support for TARGET_BIG_SWITCH. + (CASE_DROPS_THROUGH): Comment out. + (CASE_VECTOR_PC_RELATIVE, JUMP_TABLES_IN_TEXT_SECTION): Define. + * v850.md (cmpsi): Delete compare mode. + (casesi): New pattern. + + * v850.h (CONST_OK_FOR_N): Delete redundant compare against zero. + * v850.md (ashlsi3): Use SImode not QImode for shift count. + (lshrsi3): Likewise. + + * v850.c (print_operand): Add 'c', 'C', and 'z' support. Delete + unreachable switch statement after 'b' support. Remove "b" from + strings for 'b' support. + * v850.md (branch_normal, branch_invert): Change %b to b%b. + +Thu Oct 16 13:08:45 1997 Doug Evans + + * configure.in (sparc-*-elf*): New target. + +Wed Oct 15 22:30:37 1997 J"orn Rennecke + + * h8300.h (REG_CLASS_CONTENTS): AP is a general register. + (REG_OK_FOR_BASE_P, ! REG_OK_STRICT case): Reject special registers. + +Wed Oct 15 22:00:57 1997 J"orn Rennecke + + * sh.md (movhi+1): Add x/r alternative. + + * sh/elf.h (HANDLE_SYSV_PRAGMA): Undefine. + + * va-sh.h (va_arg): Fix big endian bugs for small integers. + +Wed Oct 15 21:34:45 1997 David Edelsohn + + * rs6000.md (udivsi3, divsi3): Split into MQ and non-MQ cases for + PPC601. + (umulsidi3,umulsi3_highpart): Likewise. + (smulsi3_highpart_no_mq): Add !TARGET_POWER. + +Wed Oct 15 18:45:31 1997 Doug Evans + + * sparc/t-sp64 (LIBGCC2_CFLAGS): Delete. + +Wed Oct 15 17:17:33 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (following_call): Fail if the CALL_INSN is an indirect call. + +Wed Oct 1 17:52:09 1997 Douglas Rupp + + * vms.h (UNALIGNED_{SHORT,INT,DOUBLE_INT}_ASM_OP): Define. + +Wed Oct 1 16:09:42 1997 Benjamin Kosnik + + * fixincludes: Fix sys/param.h so that MAXINT will not be redefined + on HPUX. + +Wed Oct 1 08:08:21 1997 Jeffrey A Law + + * cse.c (this_insn_cc0_mode): Initialize. + +Wed Oct 1 07:22:12 1997 Richard Henderson + + * i386.h (RETURN_ADDR_RTX): Use FRAME arg, not ap. + +Tue Sep 30 19:19:58 1997 Jim Wilson + + * except.c (find_exception_handler_labels): Correct argument to free. + +Fri Sep 26 14:06:45 1997 Mike Stump + + * c-decl.c (start_struct): Ensure that structs with forward + declarations are in fact packed when -fpack-struct is given. + +Wed Sep 24 11:31:24 1997 Mike Stump + + * stor-layout.c (layout_record): Ignore STRUCTURE_SIZE_BOUNDARY if + packing structure. This allows a structure with only bytes to be + aligned on a byte boundary and have no padding on a m68k. + +Tue Sep 30 11:00:00 1997 Brendan Kehoe + + * except.c (find_exception_handler_labels): Free LABELS when done. + +Tue Sep 30 10:47:33 1997 Paul Eggert + + * cexp.y, cppexp.c (HOST_BITS_PER_WIDE_INT): + Define only if not already defined. + +Mon Sep 29 17:55:55 1997 Gavin Koch + + * c-decl.c (warn_implicit): Deleted. + (warn_implicit_int, mesg_implicit_function_declaration}): New vars. + (c_decode_option): For -Wimplicit, set both new variables. + Add -Wimplicit-function-declarations, -Wimplicit-int, + and -Werror-implicit-function-declaration. + (implicitly_declare, grokdeclarator): Use new flags. + * toplev.c (lang_options): Add new -W options. + +Mon Sep 29 17:55:15 1997 Richard Kenner + + * c-common.c (check_format_info): Add check for scanf into + constant object or via constant pointer type. + +Mon Sep 29 16:10:12 1997 Richard Henderson + + * alpha.md (beq): For registers and ints 0-255, use cmpeq+bne. + (bne): Likewise for cmpeq+beq. + +Mon Sep 29 15:58:22 1997 Doug Evans + + * reload1.c (reload_cse_simplify_set): Fix return values. + +Mon Sep 29 08:21:35 1997 Bruno Haible + + * i386.c (notice_update_cc): Use reg_overlap_mentioned_p. + +Sun Sep 28 18:59:58 1997 Jason Merrill + + * libgcc2.c (__throw): Fix thinko. + +Sun Sep 28 12:00:52 1997 Mark Mitchell + + * cplus-dem.c (demangle_template): Add new parameter. Handle new + template-function mangling. + (consume_count_with_underscores): New function. + (demangle_signature): Handle new name-mangling scheme. + +Sun Sep 28 11:19:09 1997 Richard Kenner + + * flow.c (print_rtl_with_bb): Reformat messages about BB boundaries. + + * calls.c: Include regs.h. + * profile.c: Likewise. + * Makefile.in (calls.o, profile.o): Depend on regs.h. + * except.h (expand_builtin_dwarf_reg_size): Put in #ifdef TREE_CODE. + + * tree.h (get_file_function_name): Add decl. + * dwarf2out.c (output_call_frame_info): Don't cast its result. + +Sun Sep 28 10:58:21 1997 Manfred Hollstein + + * Makefile.in (sub-makes): Pass value of LANGUAGES. + +Sun Sep 28 10:52:59 1997 Ian Dall + + * regs.h (SMALL_REGISTER_CLASSES): Default to 0. + * calls.c (prepare_call_address, expand_call): + Remove #if test on SMALL_REGISTER_CLASSES. + * combine.c (can_combine_p, combinable_i3pat, try_combine): Likewise. + * cse.c (canon_hash): Likewise. + * function.c (expand_function_start): Likewise. + * jump.c (jump_optimize): Likewise. + * local-alloc.c (optimize_reg_copy_1): Likewise. + * loop.c (scan_loop, valid_initial_value_p): Likewise. + * profile.c (output_arc_profiler): Likewise. + * reload.c (push_secondary_reload, push_reload): Likewise. + (combine_reloads): Likewise. + * reload1.c (reload, scan_paradoxical_subregs): Likewise. + (order_regs_for_reload, reload_as_needed): Likewise. + (choose_reload_regs): Likewise. + (merge_assigned_reloads): Declare unconditionally. + +Sat Sep 27 11:02:38 1997 Jason Merrill + + * c-decl.c (init_decl_processing): Add __builtin_dwarf_reg_size. + * tree.h (built_in_function): Likewise. + * expr.c (expand_builtin): Likewise. + * except.h: Likewise. + * dwarf2out.c (expand_builtin_dwarf_reg_size): New fn. + * libgcc2.c (copy_reg): New fn. + (__throw): Use it. + +Fri Sep 26 09:00:13 1997 Andreas Schwab + + * frame.c (gansidecl.h): New include, for PROTO. + * dwarf2out.c: Move inclusion of dwarf2.h down. + (dwarf2out_cfi_label): Don't declare here. + * dwarf2.h (dwarf2out_{do_frame,cfi_label,def_cfa}): New declarations. + (dwarf2out_{window_save,args_size,reg_save,return_save}): Likewise. + (dwarf2out_{return_reg,begin_prologue,end_epilogue}): Likewise. + * m68k.c (dwarf2.h): Include. + (output_function_prologue): Add dwarf2 support. + * m68k.h (INCOMING_RETURN_ADDR_RTX, DWARF_FRAME_REGNUM): New macros. + (INCOMING_FRAME_SP_OFFSET): Likewise. + + * integrate.c (copy_rtx_and_substitute, case ADDRESSOF): New case. + + * integrate.c (expand_inline_function): Make sure there is at + least one insn that can be used as an insertion point. + +Fri Sep 26 08:54:59 1997 Paul Eggert + + * c-typeck.c (build_binary_op): Warn about comparing signed vs + unsigned if -W is specified and -Wno-sign-compare is not. + * c-decl.c (warn_sign_compare): Initialize to -1. + (c_decode_option): -Wall no longer implies -Wsign-compare. + +Wed Sep 24 21:34:06 1997 Jason Merrill + + * dwarf2out.c: s/flag_verbose_asm/flag_debug_asm/ + +Wed Sep 24 19:17:08 1997 Doug Evans + + * sparc.md (get_pc_via_call): Renamed from get_pc_sp32. + (get_pc_via_rdpc): Renamed from get_pc_sp64. + * sparc.c (finalize_pic): Update call to gen_get_pc_via_call. + +Wed Sep 24 18:38:22 1997 David S. Miller + + * sparc.h (ASM_CPU_SPEC): Pass -Av9a for v8plus, ultrasparc. + (TARGET_OPTIONS): Add -malign-loops=, -malign-jumps=, + and -malign-functions=. + (sparc_align_{loops,jumps,funcs}_string): Declare. + (sparc_align_{loops,jumps,funcs}): Declare. + (DEFAULT_SPARC_ALIGN_FUNCS): New macro. + (FUNCTION_BOUNDARY): Use sparc_align_funcs. + (STACK_BIAS): Define. + (SPARC_SIMM*_P): Cast to unsigned HOST_WIDE_INT, then perform test. + (SPARC_SETHI_P): New macro. + (CONST_OK_FOR_LETTER_P): Use it. + (ASM_OUTPUT_ALIGN_CODE): Define. + (ASM_OUTPUT_LOOP_ALIGN): Define. + * sparc.c (sparc_align_{loops,jumps,funcs}_string): New globals. + (sparc_align_{loops,jumps,funcs}): New globals. + (sparc_override_options): Handle -malign-loops=, -malign-jumps=, + -malign-functions=. + (move_operand): Use SPARC_SETHI_P. + (arith_double_operand): Cast to unsigned HOST_WIDE_INT, then test. + (arith11_double_operand): Likewise. + (arith10_double_operand): Likewise. + (finalize_pic): Finish sparc64 support. + (emit_move_sequence): Use SPARC_SETHI_P. Simplify low part of + 64 bit constants if able. + (output_fp_move_quad): Don't use fmovq unless TARGET_HARD_QUAD. + (sparc_builtin_saveregs [sparc64]): Don't save fp regs if ! TARGET_FPU. + * sparc.md: Use GEN_INT instead of gen_rtx. + (get_pc_sp32): Use for sparc64 as well. + (lo_sum_di_sp{32,64}): Fix handling on 64 bit hosts. + (sethi_di_sp64_const): Likewise. + (movtf_cc_sp64): Check TARGET_HARD_QUAD. + (cmp_zero_extract_sp64): Use unsigned HOST_WIDE_INT in cast. + (ashlsi3, ashldi3, ashrsi3, ashrdi3, lshrsi3, lshrdi3): Likewise. + +Wed Sep 24 08:25:28 1997 Alexandre Oliva + + * i386.md (allocate_stack): Fix typo in last change. + +Tue Sep 23 19:02:46 1997 Doug Evans + + * sparc/linux-aout.h (COMMENT_BEGIN): Delete. + * sparc/linux.h (COMMENT_BEGIN): Likewise. + * sparc/linux64.h (COMMENT_BEGIN): Likewise. + +Tue Sep 23 14:48:18 1997 David S. Miller + + Add sparc64 linux support. + * configure.in (sparc64-*-linux*): Recognize. Add sparc/xm-sparc.h + to xm_file list on 32-bit sparc-linux. + * sparc/xm-sp64.h: New file. + * sparc/linux64.h: New file. + * sparc/xm-linux.h: Include some standard headers if not inhibit_libc. + Don't include xm-sparc.h. + * config/xm-linux.h (HAVE_PUTENV, HAVE_ATEXIT): Define. + * glimits.h (LONG_MAX): Handle sparc64. + +Tue Sep 23 08:32:51 1997 Jason Merrill + + * final.c (final_end_function): Also do dwarf2 thing if + DWARF2_DEBUGGING_INFO. + (final_start_function): Likewise. + +Tue Sep 23 06:55:40 1997 David S. Miller + + * expmed.c (expand_divmod): If compute_mode is not same as mode, + handle case where convert_modes causes op1 to no longer be CONST_INT. + +Tue Sep 23 00:58:48 1997 Jim Wilson + + * mips.c (save_restore_insns): Only set RTX_FRAME_RELATED_P if store_p. + +Mon Sep 22 18:26:25 1997 J. Kean Johnston + + * i386/sco5.h: Make ELF default file format and add -mcoff/-melf.. + (MULTILIB_DEFAULTS): Define. + (ASM_SPEC, CPP_SPEC): Handle -mcoff. + (STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): Likewise. + (LIBGCC_SPEC): Likewise. + (MASK_COFF, TARGET_COFF, TARGET_ELF): Define. + (SUBTARGET_SWITCHES): Add -mcoff and -melf. + * i386/t-sco5 (CRTSTUFF_T_CFLAGS): Add -fPIC. + (CRTSTUFF_T_CFLAGS_S): Tweak for COFF. + (EXTRA_PARTS, TAROUTOPTS): Delete. + (libgcc1-elf, libgcc2-elf, libgcc-elf targets): Delete. + (MULTILIB_OPTIONS): Define. + (MULTILIB_DIRNAMES, MULTILIB_EXCEPTIONS): Likewise. + (MULTILIB_MATCHE, MULTILIB_EXTRA_OPTS): Likewise. + +Mon Sep 22 14:42:11 1997 Jeffrey A Law (law@cygnus.com) + + * reg-stack.c (find_blocks): Fix thinko in last change. + +Mon Sep 22 16:22:41 1997 David S. Miller + + * combine.c (try_combine): Use NULL_RTX, not 0, in gen_rtx calls. + * cse.c (cse_main): Likewise. + * emit-rtl.c (gen_label_rtx): Likewise. + * expr.c (init_expr_once): Likewise. + * sched.c (schedule_insns): Likewise. + * varasm.c (immed_double_const): Likewise. + + * sparc.h (INCOMING_FRAME_SP_OFFSET): Define as SPARC_STACK_BIAS. + +Mon Sep 22 16:13:21 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * alpha/linux.h (HANDLE_SYSV_PRAGMA): Define. + +Mon Sep 22 16:02:01 1997 Benjamin Kosnik + + * c-common.c (decl_attributes): Add support for TYPE_UNUSED on types. + * c-decl.c (finish_decl): Set TREE_USED on decls if TREE_USED on type. + * stmt.c (expand_end_bindings): Check DECL_NAME and DECL_ARTIFICIAL + before unused variable warning. + +Mon Sep 22 14:04:18 1997 Richard Kenner + + * rtlanal.c (computed_jump_p): Fix typo in last change. + + * clipper.md (movstrsi): Use change_address instead of making new MEM. + * dsp16xx.md (movstrqi): Likewise. + * i370.md (movstrsi): Likewise. + * i860.md (movstrsi): Likewise. + * pa.md (movstrsi): Likewise. + * mips.md (movstrsi): Fix (unused) pattern in define_expand. + * pdp11.md (movstrhi): Likewise. + + * alpha.md (allocate_stack): Use virtual_stack_dynamic for result. + * i386.md (allocate_stack): Likewise. + * rs6000.md (allocate_stack): Likewise. + + * alpha.h (FLOAT_STORE_FLAG_VALUE): Different for VAX and IEEE float. + + * function.c (assign_parms): Make max_parm_reg handling more + precise and make it agree with size of parm_reg_stack_loc. + * integrate.c (save_for_inline_{nocopy,copying}): Remove + redundant assignment of max_parm_reg. + + * function.c (assign_parms): Properly set RTX_UNCHANGING_P for + copy of parm. + + * integrate.c (copy_rtx_and_substitute, case SET): Handle + a SET_DEST of the virtual fp or ap specially and undo + the adjustment into the local area as well. + (mark_stores): Don't wipe out map entries for virtual fp and ap. + + * alpha.h (FLOAT_STORE_FLAG_VALUE): Different for VAX and IEEE float. + + * emit-rtl.c (gen_lowpart): Handle ADDRESSOF. + +Mon Sep 22 13:35:56 1997 Doug Evans + + * rtlanal.c (replace_regs): Fix up lossage in last patch. + +Sun Sep 21 19:28:48 1997 Jeffrey A Law (law@cygnus.com) + + * flow.c (jmp_uses_reg_or_mem): Deleted unused function. + (find_basic_blocks): Use computed_jump_p to determine if a + particular JUMP_INSN is a computed jump. + * reg-stack.c (find_blocks): Use computed_jump_p to determine + if a particular JUMP_INSN is a computed jump. + * rtlanal.c (jmp_uses_reg_or_mem): New function. + (computed_jump_p): Likewise. + * rtl.h (computed_jump_p): Declare. + * genattrtab.c (pc_rtx): Define and initialize. + + * cse.c (simplify_relational_operation): Set h0u just like h0s. + Similarly for h1u and h1s. + +Sun Sep 21 14:13:31 1997 Doug Evans + + * function.c (instantiate_virtual_regs): Fix thinko in last patch. + +Sun Sep 21 10:33:26 1997 Paul Eggert + + * cccp.c, cpplib.c (special_symbol): If STDC_0_IN_SYSTEM_HEADERS + is defined, expand __STDC__ to 0 in system headers. + * i386/sol2.h, rs6000/sol2.h, sparc/sol2.h: + (STDC_0_IN_SYSTEM_HEADERS): New macro. + (CPP_SPEC): Remove -D__STDC__=0; it's no longer needed. + + * fixinc.math (_MATH_H_WRAPPER): Define at the end of the + wrapper, not the start, so that if #include_next gets another + instance of the wrapper, this will follow the #include_next + chain until we arrive at the real . + + * fixproto (subdirs_made): New var, to keep track of which + subdirectories we've made (in reverse order). At the end, + attempt to rmdir them all, so that we don't create any empty + directories. + +Sun Sep 21 10:02:07 1997 Richard Kenner + + * pa.c (move_operand): Respect -mdisable-indexing. + * pa.h (GO_IF_LEGITIMATE_ADDRESS): Likewise. + +Sun Sep 21 09:29:23 1997 Andreas Schwab + + * function.c (purge_addressof_1): Don't convert (MEM (ADDRESSOF (REG))) + to (SUBREG (REG)) on big endian machines. + Don't fall through to substitute the inner (REG) unchanged + when the above conversion cannot be validated. + +Sat Sep 20 16:22:06 1997 Jason Merrill + + * frame.c (__deregister_frame): Properly check for initialized object. + + * function.c (instantiate_virtual_regs): Instantiate + parm_reg_stack_locs. + +Sat Sep 20 03:07:54 1997 Doug Evans + + * sparc/sysv4.h (ASM_COMMENT_START): Delete. + * sparc.h (ASM_COMMENT_START): Define. + * sparc.c (output_function_prologue): Use it. + (sparc_flat_output_function_{epi,pro}logue): Likewise. + +Fri Sep 19 19:43:09 1997 Jeffrey A Law (law@cygnus.com) + + * loop.c (strength_reduce): Fix typo. + + * m68k/xm-mot3300.h (alloca): Properly declare if __STDC__. + * mips.h, xm-rs6000.h, rs6000/xm-sysv4.h: Likewise. + +Fri Sep 19 20:10:30 1997 Doug Evans + + * rtl.h (find_use_as_address): Delete accidentally added decl. + +Fri Sep 19 08:36:16 1997 J"orn Rennecke + + * jump.c (thread_jumps): Check can_reverse_comparison_p before + threading a reversed-condition jump. + +Fri Sep 19 08:16:12 1997 Andrew M. Bishop . + + * Add support for new -dI option for cxref, + * cccp.c (dump_includes): New variable. + (struct directive, directive_table): Remove members angle_brackets, + traditional_comments, pass_thru; all code using struct directive + now uses `type' member instead. + (IS_INCLUDE_DIRECTIVE_TYPE): New macro. + (main, handle_directive): Add support for new -dI option. + (do_ident): Avoid unnecessary alloca. + (do_pragma): Avoid unnecessary comparison to newline. + + * cpplib.h (struct cpp_options): New member dump_includes. + * cpplib.c (struct directive, directive_table): Remove members + traditional_comments, pass_thru; all code using struct directive + now uses `type' member instead. + (IS_INCLUDE_DIRECTIVE_TYPE): New macro. + (handle_directive, cpp_handle_options): Add support for new -dI option. + +Fri Sep 19 07:57:19 1997 Pat Rankin + + * vax/xm-vms.h (expand_builtin_{extract,set}_return_addr): New macros. + +Fri Sep 19 07:47:29 1997 Nick Burrett + + * cpplib.c (pcstring_used, pcfinclude): Delete unused declarations. + (check_preconditions, print_containing_files, pipe_closed): Likewise. + (dump_defn_1, dump_arg_n, make_undef): Likewise. + (trigraph_pcp): Pre-process out decl. + (quote_string): Cast CPP_PWRITTEN macro to char * for sprintf. + (output_line_command): Likewise. + (macro_expand): Likewise. + (do_line): Cast atoi argument to char *. + * genattrtab.c (simplify_by_alternatives): Pre-process out decl. + * genpeep.c (gen_exp): Remove decl. + +Fri Sep 19 07:29:40 1997 Bernd Schmidt + + * enquire.c (basic): Elminate dangling else warning. + * except.h (struct function, save_eh_status, restore_eh_status): + Don't declare. + * expr.c (clear_storage): Don't return without a value. + * function.h ({save,restore}_machine_status): Add proper prototype. + ({save,restore}_{tree,eh,stmt,expr,emit,storage}_status): Declare. + * real.h (real_value_truncate): Add proper prototype. + (target_isnan, target_isinf, target_negative, debug_real): Declare. + (assemble_real): Likewise. + * recog.c (strict_memory_address_p, memory_address_p): Don't declare. + (find_single_use_1): Add prototype. + * recog.h (init_recog, init_recog_no_volatile): Declare. + (check_asm_operands, constrain_operands, memory_address_p): Likewise. + (strict_memory_address_p, validate_replace_rtx): Likewise. + (reg_fits_class_p, find_single_use, general_operand): Likewise. + (address_operand, register_operand, scratch_operand): Likewise. + (immediate_operand, const_int_operand, const_double_operand): Likewise. + (nonimmediate_operand, nonmemory_operand, push_operand): Likewise. + (memory_operand, indirect_operand, mode_independent_operand): Likewise. + (comparison_operator, offsettable_{,nonstrict_}memref_p): Likewise. + (offsettable_address_p, mode_dependent_address_p, recog): Likewise. + (add_clobbers): Likewise. + * reload.h (strict_memory_address_p): Don't declare here. + * rtl.h (struct rtvec_def): Make num_elem an integer. + (PUT_NUM_ELEM): Delete cast to unsigned. + (rtx_unstable_p, rtx_varies_p, reg_mentioned_p): Declare. + (reg_{referenced,used_between,referenced_between}_p: Likewise. + ({reg_set,modified,no_labels}_between_p, modified_in_p): Likewise. + (reg_set_p, refers_to_regno_p, reg_overlap_mentioned_p): Likewise. + (note_stores, rtx_equal_p, dead_or_set{,_regno}_p): Likewise. + (remove_note, side_effects_p, volatile_{refs,insn}_p): Likewise. + (may_trap_p, inequality_comparison_p): Likewise. + * rtlanal.c (note_stores, reg_set_p): Don't declare. + (rtx_addr_can_trap_p): Add prototype, make static. + (reg_set_p_1): Add declaration for parameter pat. + * emit-rtl.c: Include recog.h. + * integrate.c: Likewise. + * jump.c: Likewise. + * unroll.c: Likewise. + * Makefile.in (emit-rtl.o, integrate.o, jump.o, unroll.o): Depend + on recog.h. + +Fri Sep 19 06:52:22 1997 Paul Eggert + + * enquire.c (SYS_FLOAT_H_WRAP): New macro. + Include "float.h" if SYS_FLOAT_H_WRAP is nonzero. + (f_define): New argument `req'. + (main): Output `#include_next ' if wrapping float.h. + (i_define, f_define): Don't output anything if wrapping float.h + and if the system defn is already correct. Put other value tests + inside `#ifdef VERIFY'. + (UNDEFINED): New macro. + (I_MAX, I_MIN, U_MAX, F_RADIX, F_MANT_DIG, F_DIG, F_ROUNDS): + Define even if VERIFY isn't defined, because SYS_FLOAT_H_WRAP may need + these values. Give them the value UNDEFINED if not already defined. + (F_EPSILON, F_MIN_EXP, F_MIN, F_MIN_10_EXP, F_MAX_EXP): Likewise. + (F_MAX, F_MAX_10_EXP): Likewise. + (FPROP): Prefer system float.h definition of F_ROUNDS. + Pass system values to f_define. + * Makefile.in (FLOAT_H_TEST): New var. + (float.h-nat): Make it empty if we can use the system float.h without + change. + (enquire.o): Define SYS_FLOAT_H_WRAP=1 if we can build a wrapper + around the system . Remove include/float.h before compiling. + (stmp-headers): Remove include/float.h if we would just be installing + an empty file (which is a placeholder that stands for no file). + + * fix-header.c: Don't munge headers for POSIX and XOPEN, + as this is too error-prone. + (ADD_MISSING_POSIX, ADD_MISSING_XOPEN): New macros, normally undefed. + (POSIX1_SYMBOL, POSIX2_SYMBOL): Now 0 unless ADD_MISSING_POSIX. + (XOPEN_SYMBOL, XOPEN_EXTENDED_SYMBOL): Now 0 unless ADD_MISSING_XOPEN. + (main): Ignore symbols whose flags are 0. + +Thu Sep 18 10:43:07 1997 Nick Clifton + + * v850.c (compute_register_save_size): Correct register number. + * v850.md (save_interrupt, return_interrupt): Likewise. + * v850/lib1funcs.asm (save_interrupt): Likewise. + (return_interrupt): Use stack pointer, not element pointer. + +Thu Sep 18 14:22:22 1997 Jason Merrill + + * final.c (final_scan_insn): Hand BARRIERs to dwarf2 code. + * dwarf2out.c (dwarf2out_frame_debug): Pass the whole insn along. + (dwarf2out_stack_adjust): A BARRIER resets the args space to 0. + + * except.c (end_eh_unwinder): Subtract 1 from return address. + * libgcc2.c (__throw): Likewise. + (find_exception_handler): Don't change PC here. Compare end with >. + +Thu Sep 18 14:01:20 1997 Brendan Kehoe + + * configure.in: Make sure to create the stage* and include + symbolic links in each subdirectory. + +Thu Sep 18 13:20:37 1997 J"orn Rennecke + + * sh/lib1funcs.asm (LOCAL): Define. + (whole file): Use it. + +Thu Sep 18 09:52:24 1997 Benjamin Kosnik + + * collect2.c (collect_execute): Specify name of new file when + redirecting stdout/stderr. + +Thu Sep 18 01:47:06 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (reload_peepholes): Don't allow addresses with side + effects for the memory operand. + +Wed Sep 17 18:19:53 1997 Jason Merrill + + * libgcc2.c (find_exception_handler): Subtract one from our PC when + looking for a handler, to avoid hitting the beginning of the next + region. + + * except.c (expand_builtin_set_return_addr_reg): Use force_operand. + +Wed Sep 17 18:23:09 1997 Jeffrey A Law (law@cygnus.com) + + * mips/abi64.h (LONG_MAX_SPEC): Define. + * mips.h (LONG_MAX_SPEC): Define. + (CPP_SPEC): Include long_max_spec. + (EXTRA_SPECS): Include long_max_spec. + +Wed Sep 17 14:17:26 1997 Paul Eggert + + * configure.in (AC_CHECK_HEADERS): Add inttypes.h, limits.h. + ({sparc,i[3456]86,powerpcle}-*-solaris2*): Use fixinc.math. + + * fixinc.math (PWDCMD, ORIGDIR, LINKS): Remove. + Remove duplicate test for missing $1. + Don't cd to $INPUT. + Build wrapper around system instead of copying it; + this is better if the system is updated later by a software + patch or upgrade. + + * cccp.c (HAVE_STDLIB_H, HAVE_UNISTD_H): + Do not define any more; now autoconfed. + : Include if HAVE_LIMITS_H. + (HOST_BITS_PER_WIDE_INT): Remove. + (HOST_WIDE_INT): Use intmax_t or long long if available. + (pcfinclude): Use size_t, not HOST_WIDE_INT, for cast from pointer; + this is less likely to annoy the compiler. + + * cexp.y (HAVE_STDLIB_H): Do not define any more; now autoconfed. + : Include if HAVE_LIMITS_H. + (HOST_WIDE_INT): Use intmax_t or long long if available. + (unsigned_HOST_WIDE_INT, CHAR_BIT): New macros. + (HOST_BITS_PER_WIDE_INT): Define in terms of CHAR_BIT and sizeof. + (MAX_CHAR_TYPE_MASK, MAX_CHAR_TYPE_MASK): Rewrite so that we don't use + HOST_BITS_PER_WIDE_INT in a preprocessor expression, since it now + uses sizeof. + + * cppexp.c: : Include if HAVE_LIMITS_H. + (HOST_WIDE_INT): Use intmax_t or long long if available. + (CHAR_BIT): New macro. + (HOST_BITS_PER_WIDE_INT): Define in terms of CHAR_BIT and sizeof. + * cpplib.c: : Include if HAVE_LIMITS_H. + (HOST_WIDE_INT): Use intmax_t or long long if available. + (HOST_BITS_PER_WIDE_INT): Remove. + +Wed Sep 17 14:11:38 1997 Jeffrey A Law (law@cygnus.com) + + * v850.c (construct_save_jarl): Fix thinko in last change. + +Wed Sep 17 15:04:19 1997 Doug Evans + + * sparc/sysv4.h (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}): Delete, + use sparc.h's copies. + * sparc.h (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}): Print ascii form + as well. + +Wed Sep 17 14:08:20 1997 Nick Burrett + + * explow.c (allocate_dynamic_stack_space): Make allocate_stack + pass 'target' as an extra operand. + * expr.c (expand_builtin_apply): Use allocate_dynamic_stack_space + to push a block of memory onto the stack. + * alpha.md (allocate_stack): Alter in accordance with new operand. + * i386.md (allocate_stack): Likewise. + * rs6000.md (allocate_stack): Likewise. + +Wed Sep 17 13:34:43 1997 Robert Lipe + + * i386/xm-sco5.h (sys_siglist, SYS_SYGLIST_DECLARED): Define. + +Wed Sep 17 13:27:05 1997 Richard Kenner + + * Makefile.in (native): Correct dependency to auto-config.h from + config.h. + +Tue Sep 16 10:02:02 1997 Jason Merrill + + * libgcc2.c (find_exception_handler): Not found is -1. + + * integrate.c (expand_inline_function): Move expand_start_bindings + after expanding the arguments. + + * i386.c (ix86_prologue): Pass SYMBOL_REF to + gen_prologue_{get_pc,set_got}. + * i386.md (prologue_set_got, prologue_get_pc): Adjust. + +Tue Sep 16 07:33:15 1997 Richard Kenner + + * fold-const.c (make_range): Correctly handle cases of converting + from unsigned to signed type. + + * function.c (flush_addressof): New function. + + * combine.c (num_sign_bit_copies): If asking about wider mode, + treat like paradoxical subreg. + +Tue Sep 16 00:26:52 1997 Jeffrey A Law (law@cygnus.com) + + * cse.c (simplify_relational_operation): If MODE specifies mode wider + than HOST_WIDE_INT, high word of CONST_INT is derived from sign bit + of low word. + +Tue Sep 16 00:13:20 1997 Nick Clifton + + * v850.c ({register,pattern}_is_ok_for_epilogue): New functions. + (construct_{save,restore}_jr, pattern_is_ok_for_prologue): Likewise. + * v850.h (pattern_is_ok_for_{pro,epi}logue): New predicates. + (register_is_ok_for_epilogue): Likewise. + * v850.md: Replace prologue and epilogue patterns with a + match_parallel pattern. + * v850.c (output_move_single_unsigned): Cope with zero + extending and moving between registers at the same time. + +Mon Sep 15 22:02:46 1997 Jeffrey A Law (law@cygnus.com) + + * fixinc.math: New file to fix math.h on some systems. + * configure.in (*-*-freebsd*, *-*-netbsd*): Use fixinc.math on these + systems. + +Mon Sep 15 18:58:36 1997 J"orn Rennecke + + * sched.c (update_flow_info) When looking if to set found_split_dest + or found_orig_dest, look at all parts of a PARALLEL. + + * sh.md (casesi_0): Reduce functionality, exclude insns from + mova onwards. Changed expander caller. + (casesi_worker_0): New insn. + (casesi_worker_0+[12]): New define_splits. + (casesi_worker): Need no gen_* function. + (casesi): Use casesi_worker_0 instead of casesi_worker. + * sched.c (update_flow_info): Don't pass SCRATCH to dead_or_set_p. + +Mon Sep 15 11:43:38 1997 Jason Merrill + + Support dwarf2 unwinding on PUSH_ROUNDING targets like the x86. + * dwarf2.h: Add DW_CFA_GNU_args_size. + * frame.c (execute_cfa_insn): Likewise. + * dwarf2out.c (dwarf_cfi_name, output_cfi): Likewise. + (dwarf2out_args_size, dwarf2out_stack_adjust): New fns. + (dwarf2out_frame_debug): If this isn't a prologue or epilogue + insn, hand it off to dwarf2out_stack_adjust. + (dwarf2out_begin_prologue): Initialize args_size. + * frame.h (struct frame_state): Add args_size. + * libgcc2.c (__throw): Use args_size. + * final.c (final_scan_insn): If we push args, hand off all insns + to dwarf2out_frame_debug. + * defaults.h (DWARF2_UNWIND_INFO): OK for !ACCUMULATE_OUTGOING_ARGS. + + * dwarf2out.c (dwarf2out_frame_debug): Fix typo. + Handle epilogue restore of SP from FP. + * emit-rtl.c (gen_sequence): Still generate a sequence if the + lone insn has RTX_FRAME_RELATED_P set. + + * frame.c (extract_cie_info): Handle "e" augmentation. + * dwarf2out.c (ASM_OUTPUT_DWARF_*): Provide definitions in the + absence of UNALIGNED_*_ASM_OP. + (UNALIGNED_*_ASM_OP): Only provide defaults if OBJECT_FORMAT_ELF. + (output_call_frame_info): Use "e" instead of "z" for augmentation. + Don't emit augmentation fields length. + (dwarf2out_do_frame): Move outside of #ifdefs. + * defaults.h (DWARF2_UNWIND_INFO): Don't require unaligned data + opcodes. + + * sparc.h (UNALIGNED_INT_ASM_OP et al): Don't define here after all. + * sparc/sysv4.h (UNALIGNED_INT_ASM_OP): Define here. + * sparc/sunos4.h (DWARF2_UNWIND_INFO): Define to 0. + * sparc/sun4gas.h: New file. + * configure.in: Use sun4gas.h if SunOS 4 --with-gnu-as. + + * collect2.c (write_c_file_stat, write_c_file_glob): Declare + __register_frame_table and __deregister_frame. + +Mon Sep 15 19:04:34 1997 Brendan Kehoe + + * except.c (find_exception_handler_labels): Use xmalloc instead of + alloca, since MAX_LABELNO - MIN_LABELNO can be more than 1 million + in some cases. + +Sat Sep 13 23:13:51 1997 Paul Eggert + + * cpplib.h (PARAMS): Fix misspelling of __STDC__. + (cpp_get_token): Arg is cpp_reader *, not struct parse_marker *. + + * cpplib.c (cpp_fatal, cpp_file_line_for_message): New decls. + (ppp_hash_cleanup, cpp_message, cpp_print_containing_files): Likewise. + (copy_rest_of_line): Fix typo that prevented recognition of + C++ style comments. + (output_line_command, special_symbol): Use %ld for long, not %d. + + * cppexp.c (xrealloc): Declare first arg as void *, not char *. + (cpp_lex): Cast 2nd arg of cpp_parse_escape from const char ** to + char **. + +Fri Sep 12 16:54:04 1997 Doug Evans + + * bitmap.h (bitmap_print): Don't use STDIO_PROTO. + +Fri Sep 12 13:49:58 1997 Jason Merrill + + * except.h: Prototype dwarf2 hooks. + * expr.c: Adjust. + +Thu Sep 11 18:36:51 1997 Jim Wilson + + * local-alloc.c (contains_replace_regs): New function. + (update_equiv_regs): When adding a REG_EQUIV note for a set of a MEM, + verify that there is no existing REG_EQUIV note, and add a call to + contains_place_regs. + + * m68k.h (MACHINE_STATE_{SAVE,RESTORE}): Add __HPUX_ASM__ versions. + +Wed Sep 10 21:49:38 1997 Michael Meissner + + * toplev.c (rest_of_compilation): For passes starting with + flow_analysis, use print_rtl_with_bb instead of print_rtl. + * print-rtl.c (print_rtl_single): Print a single rtl value to a + file. + * flow.c (print_rtl_with_bb): Print which insns start and end + basic blocks. For the start of a basic block, also print the live + information. + * bitmap.h (EXECUTE_IF_AND_IN_BITMAP): New macro, to iterate over + two bitmaps ANDed together. + (bitmap_print): Declare. + * bitmap.c (function_obstack): Don't declare any more. + (bitmap_obstack): Obstack for allocating links from. + (bitmap_obstack_init): New static to say whether to initialize + bitmap_obstack. + (bitmap_element_allocate): Use bitmap_obstack to allocate from. + (bitmap_release_memory): Free all memory allocated from + bitmap_obstack. + (toplevel): Conditionally include stdlib.h. + (free): Provide a declaration if NEED_DECLARATION_FREE. + + * basic-block.h (EXECUTE_IF_AND_IN_REG_SET): New macro, invoke + EXECUTE_IF_AND_IN_BITMAP. + +Wed Sep 10 17:53:33 1997 J"orn Rennecke + + * sh.c (addr_diff_vec_adjust): Properly propagate considered + address changes through alignments. + +Wed Sep 10 13:10:52 1997 Per Bothner + + * stor-layout.c (layout_type): Simplify special BOOLEAN_TYPE handling. + +Wed Sep 10 12:59:57 1997 Jason Merrill + + * expr.c (expand_builtin): Only support __builtin_dwarf_fp_regnum() + if DWARF2_UNWIND_INFO. + +Wed Sep 10 15:43:10 1997 Jason Merrill + + * cplus-dem.c (demangle_fund_type): Change "complex" to "__complex". + +Wed Sep 10 11:13:53 1997 Paul Eggert + + Handle `extern int errno;' correctly when fixing . + * fix-header.c (recognized_extern): Use name_length when comparing. + * scan-decls.c (scan_decls): Don't ignore the first CPP_NAME in a + declaration, so that we see the `extern' in `extern int errno;'. + +Wed Sep 10 11:49:20 1997 Jason Merrill + + Add support for exception handling using DWARF 2 frame unwind info. + * libgcc2.c (get_reg, put_reg, get_return_addr, put_return_addr, + next_stack_level, in_reg_window): Helper fns. + (__throw): Implement for DWARF2_UNWIND_INFO. + + * expr.c (expand_builtin): Handle builtins used by __throw. + * tree.h (enum built_in_function): Add builtins used by __throw. + * c-decl.c (init_decl_processing): Declare builtins used by __throw. + * dwarf2out.c (expand_builtin_dwarf_fp_regnum): Used by __throw. + * except.c (expand_builtin_unwind_init): Hook for dwarf2 __throw. + (expand_builtin_extract_return_addr): Likewise. + (expand_builtin_frob_return_addr): Likewise. + (expand_builtin_set_return_addr_reg): Likewise. + (expand_builtin_eh_stub): Likewise. + (expand_builtin_set_eh_regs): Likewise. + (eh_regs): Choose two call-clobbered registers for passing back values. + + * frame.c, frame.h: New files for parsing dwarf 2 frame info. + * Makefile.in (LIB2ADD): New variable. Add $(srcdir)/frame.c. + (libgcc2.a): Use it instead of $(LIB2FUNCS_EXTRA) $(LANG_LIB2FUNCS) + (stmp-multilib): Likewise. + ($(T)crtbegin.o, $(T)crtend.o): Add -fno-exceptions. + + * except.c: #include "defaults.h". + (exceptions_via_longjmp): Default depends on DWARF2_UNWIND_INFO. + (emit_throw): Don't defeat assemble_external if DWARF2_UNWIND_INFO. + (register_exception_table_p): New fn. + (start_eh_unwinder): Don't do anything if DWARF2_UNWIND_INFO. + (end_eh_unwinder): Likewise. + + * crtstuff.c: Wrap .eh_frame section, use EH_FRAME_SECTION_ASM_OP, + call __register_frame and __deregister_frame as needed. + * varasm.c (eh_frame_section): New fn if EH_FRAME_SECTION_ASM_OP. + * dwarf2out.c (EH_FRAME_SECTION): Now a function-like macro. Check + EH_FRAME_SECTION_ASM_OP. + * sparc/sysv4.h (EH_FRAME_SECTION_ASM_OP): Define. + * mips/iris6.h: (EH_FRAME_SECTION_ASM_OP): Define. + (LINK_SPEC): Add __EH_FRAME_BEGIN__ to hidden symbols. + + * dwarf2out.c (output_call_frame_info): If no support for + EXCEPTION_SECTION, mark the start of the frame info with a + collectable tag. + * collect2.c (frame_tables): New list. + (is_ctor_dtor): Recognise frame entries. + (scan_prog_file): Likewise. + (main): Pass -fno-exceptions to sub-compile. Also do collection + if there are any frame entries. + (write_c_file_stat): Call __register_frame_table and + __deregister_frame as needed. + (write_c_file_glob): Likewise. + + * defaults.h (DWARF2_UNWIND_INFO): Default to 1 if supported. + Also require unaligned reloc support. + * sparc.h (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP, + UNALIGNED_DOUBLE_INT_ASM_OP): Define here. + * sparc/sysv4.h: Not here. + + * toplev.c (compile_file): Call dwarf2out_frame_{init,finish}. + * dwarf2out.c (dwarf2out_init): Don't call dwarf2out_frame_init. + (dwarf2out_finish): Don't call dwarf2out_frame_finish. + + * libgcc2.c (L_eh): Reorganize, moving code shared by different + EH implementations to the top. + (find_exception_handler): Split out. Start from 0. Compare against + end with >=. + (__find_first_exception_table_match): Use it. + * except.c (output_exception_table): Don't do anything if there's + no table. Don't output a first entry of zeroes. + (eh_outer_context): Adjust properly. + (add_eh_table_entry): Use xrealloc. + * toplev.c (compile_file): Just call output_exception_table. + +Wed Sep 10 11:49:20 1997 Jason Merrill + + * varasm.c (save_varasm_status): Take the target function context. + * function.c (push_function_context_to): Pass it in. + + * rtl.def (ADDRESSOF): Add new field for original regno. + * function.c (put_reg_into_stack and callers): Add original_regno + argument. + (gen_mem_addressof): Remember the original regno. + * rtl.def (INLINE_HEADER): Add new field for parm_reg_stack_loc. + * rtl.h (PARMREG_STACK_LOC): New macro. + (ADDRESSOF_REGNO): New macro. + * emit-rtl.c (gen_inline_header_rtx): Add parm_reg_stack_loc. + * function.c (max_parm_reg, parm_reg_stack_loc): No longer static. + (assign_parms): Allocate parm_reg_stack_loc on saveable obstack. + * integrate.c (output_inline_function): Set max_parm_reg and + parm_reg_stack_loc from inline header. + (initialize_for_inline): Pass in parm_reg_stack_loc. + +Wed Sep 10 11:30:36 1997 Stan Cox + + * i386.c (override_options): Don't set TARGET_SCHEDULE_PROLOGUE + (ix86_expand_prologue, ix86_expand_epilogue): Emit rtl by default. + +Wed Sep 10 11:30:36 1997 Jason Merrill + + * i386.c (ix86_prologue): Add dwarf2 support for !do_rtl case. + +Wed Sep 10 08:48:44 1997 Jeffrey A Law (law@cygnus.com) + + * xm-m88k.h (USG): Only define if it hasn't already been defined. + + * i386.h (CPP_CPU_DEFAULT): Avoid using #elif. + + * expr.c (do_jump_by_parts_equality_rtx): Don't clobber the + source operand when performing an IOR of the parts. + + * expr.c (emit_block_move): Always return a value. + + * expr.c (clear_storage): Use CONST0_RTX instead of const0_rtx. + when clearing non-BLKmode data. + + * final.c (shorten_branches): Remove last change for ADDR_VEC + alignment computation. During first pass, assume worst + possible alignment for ADDR_VEC and ADDR_VEC_DIFF insns. + +Wed Sep 10 09:33:19 1997 Kamil Iskra + + * explow.c (emit_stack_save, emit_stack_restore): Correctly + handle HAVE_{save,restore}_stack_* evaluating to 0. + +Wed Sep 10 09:27:45 1997 Weiwen Liu + + * Makefile.in (sdbout.o): Add dependency on insn-config.h. + +Wed Sep 10 09:24:56 1997 Nick Burrett + + * sched.c (birthing_insn_p): Rename prototype decl from birthing_insn. + * final.c (leaf_renumber_regs, alter_cond): Declare prototype only + if LEAF_REGISTERS is defined. + * reload1.c (merge_assigned_reloads): Declare prototype only if + SMALL_REGISTER_CLASSES is defined. + * loop.c (replace_call_address): Pre-process out prototype decl. + * real.c (dectoe, etodec, todec): Declare proto if DEC is defined + (ibmtoe, etoibm, toibm): Declare proto if IBM is defined + +Wed Sep 10 09:13:51 1997 Manfred Hollstein + + * configure.in (out_file): Emit definition to config.status. + +Wed Sep 10 08:37:56 1997 J"orn Rennecke + + * final.c (shorten_branches): Fix alignment calculation. + Don't count the lengths of deleted instructions. + +Wed Sep 10 08:34:11 1997 Kaveh R. Ghazi + + * cpplib.c (cpp_start_read): Make known_suffixes static. + +Wed Sep 10 08:27:05 1997 Andreas Schwab + + * m68k.c (print_operand_address) [MOTOROLA]: When compiling + with -fpic (not -fPIC) force the GOT offset to 16 bits. + +Wed Sep 10 08:22:51 1997 Christian Iseli + + * expr.c (convert_move): Add missing use of trunctqtf2. + +Wed Sep 10 08:17:10 1997 Torbjorn Granlund + + * except.c (eh_outer_context): Do masking using expand_and. + +Wed Sep 10 07:52:21 1997 Joel Sherrill + + * pa/rtems.h (subtarget_switches): Removed -mrtems subtarget_switch. + * configure.in (sh*-*-rtems*): New target. + * sh.h (TARGET_SWITCHES: Call SUBTARGET_SWITCHES. + (SUBTARGET_SWITCHES): Provide default definition. + +Wed Sep 10 06:33:47 1997 Richard Kenner + + * i386/mingw32.h ({LIB,LINK}_SPEC): Check for -mwindows, not -windows. + + * alpha/vms.h (ASM_OUTPUT_SECTION): Clear NAME if overlaid. + + * c-parse.in (unary_expr): Test DECL_C_BIT_FIELD, not DECL_BIT_FIELD. + * c-typeck.c (default_conversion): Likewise. + + * tree.c (contains_placeholder_p, substitute_in_expr): + Handle placeholders inside args of CALL_EXPR (and hence in TREE_LIST). + + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Check all + expressions in placeholder_list. + +Tue Sep 9 18:10:30 1997 Doug Evans + + Add port done awhile ago for the ARC cpu. + * arc.h, arc.c, arc.md, t-arc, xm-arc.h: New files. + * arc/initfini.c, arc/lib1funcs.asm: New files. + * ginclude/va-arc.h: New file. + * ginclude/stdarg.h: Include va-arc.h ifdef __arc__. + * ginclude/varargs.h: Likewise. + * Makefile.in (USER_H): Add va-arc.h. + * configure.in (arc-*-elf*): Recognize. + * longlong.h: Add ARC support. + +Tue Sep 9 01:30:37 1997 Jason Merrill + + * mips.h (DWARF_FRAME_REGNUM): Use the same numbering regardless of + write_symbols. + +Mon Sep 8 15:15:11 1997 Nick Clifton + + * v850.h (ASM_SPEC): Pass on target processor. + (CPP_PREDEFINES): Only define if not already specified. + (TARGET_VERSION): Only define if not already specified. + (MASK_CPU, MASK_V850, MASK_DEFAULT): Bits to specify target + processor. + (EXTRA_SWITCHES): Extra entries in the switches array. + (TARGET_DEFAULT): Set default target processor. + +Tue Sep 9 09:50:02 1997 Richard Kenner + + * configure.in (alpha*-*-*): Support pca56 and ev6. + + * varasm.c (named_section): Set in section after writing directive. + * dwarf2out.c (output_call_frame_info): Call named_section. + +Mon Sep 8 16:32:43 1997 Jason Merrill + + * mips.c (function_prologue): Set up the CFA when ABI_32. + + * sparc.c (save_regs): Check dwarf2out_do_frame instead of DWARF2_DEBUG + for dwarf2 unwind info. + (output_function_prologue, sparc_flat_output_function_prologue): Same. + + * final.c (final_end_function): Check dwarf2out_do_frame instead + of DWARF2_DEBUG for dwarf2 unwind info. + (final_scan_insn): Likewise. + (final_start_function): Likewise. Initialize dwarf2 frame debug here. + (final): Not here. + + * expr.c (expand_builtin_return_addr): Only SETUP_FRAME_ADDRESSES if + count > 0. + + * varasm.c (exception_section): Check EXCEPTION_SECTION first. + +Mon Sep 8 14:58:07 1997 Jim Wilson + + * toplev.c (main): Change #elif to #else/#ifdef + + * i386/t-sol2 (TARGET_LIBGCC2_CFLAGS): Define to -fPIC. + +Mon Sep 8 08:45:19 1997 Richard Kenner + + * alpha.h (processor_type): Add EV6. + ({TARGET,MASK}_BWX): Renamed from _BYTE_OPS. + ({TARGET,MASK}_{CIX,MAX}): New macros. + (MASK_CPU_EV5): Change bit number. + (MASK_CPU_EV6, {TARGET,MASK}_SUPPORT_ARCH): New macros. + (TARGET_OPTIONS): Rename "byte" to "bwx" and add "cix" and "max". + (MINIMUM_ATOMIC_ALIGNMENT): Rename TARGET_BYTE_OPS to TARGET_BWX. + (SECONDARY_{INPUT,OUTPUT}_RELOAD_CLASS, ASM_FILE_START): Likewise. + (SECONDARY_MEMORY_NEEDED): Not needed if CIX. + (ASM_FILE_START): Only write if TARGET_SUPPORT_ARCH. + Add "pca56" and "ev6". + * alpha.c (input_operand): Rename TARGET_BYTE_OPS to TARGET_BWX. + (override_options): Likewise; also add new CPU types and subset flags. + * alpha.md: Rename TARGET_BYTE_OPS to TARGET_BWX. + (cpu attr): Add "ev6". + (ev5 function units): Use for ev6 as well, for now. + (ffsdi2): New define_expand and define_insn, for TARGET_CIX. + (sqrt[sd]f2): New patterns, for TARGET_CIX. + (s{min,max}[qh]i3): New patterns, for TARGET_MAX. + (movsi): Use ldf/lsf when appropriate, instead of lds/sts. + (mov[sd]i): Add use of ftio/itof for TARGET_CIX. + * configure.in (alpha*-dec-osf*): Set MASK_SUPPORT_ARCH for >= 4.0B. + Rename MASK_BYTE_OPS to MASK_BWX. + + * i386/mingw32.h (STANDARD_INCLUDE_DIR): New macros. + (STARTFILE_SPEC, PATH_SEPARATOR): Likewise. + + * configure.in (AC_PROG_LN_S): Remove; unneeded. + (*cygwin32*, *mingw32*): Default prefix to /usr. + (symbolic_link): Set to "cp -p" if no "ln -s"; add AC_SUBST. + (configure.lang call): Change remaining use of config.h to auto-conf.h. + + * Makefile.in (LN): Add new symbol. + (FLAGS_TO_PASS): Pass it down. + (stage[1-4]-start): Use $(LN), not "ln -s". + + * mips.h (flag_omit_frame_pointer, frame_pointer_needed, optimize): + Remove declarations: no longer needed. + * pyr.md: Remove unneeded declarations of `optimize'. + * h8300.md: Likewise. + * sparc.c (dwarf2out_cfi_label): Add declaration. + (save_regs, output_function_prologue): Remove cast for it. + (sparc_flat_{save_restore,output_function_prologue): Likewise. + ({save,restore}_regs): No longer inline. + +Mon Sep 8 03:08:35 1997 Jim Wilson + + * i960.h (LINK_SPEC): Handle -mjX and -mrp switches. + + * mips.md (nonlocal_goto_receiver): Define. + + * unroll.c (calculate_giv_inc): Handle increment with code PLUS. + + * alpha.h (PREFERRED_RELOAD_CLASS): Return NO_REGS if NO_REGS + is passed in. + * emit-rtl.c (gen_lowpart_common): Add code to convert CONST_INT to + SFmode for 64 bit hosts. + + * profile.c (output_arc_profiler): Verify next_insert_after is an + INSN before and after skipping a stack pop. Check next_insert_after + for non NULL before deferencing it. + (output_func_start_profiler): Set DECL_EXTERNAL to zero. + + * va-mips.h: Add _VA_MIPS_H_ENUM ifdef/define/endif. + + * m68k.md (iorsi_zexthi_ashl16): Disable. + + * varasm.c (mark_constants): Don't look inside CONST_DOUBLEs. + +Sun Sep 7 18:30:46 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_frame_debug): Assume that in a PARALLEL + prologue insn, only the first elt is significant. + (output_call_frame_info): For exception handling, always use 4-byte + fields as specified by the dwarf2 spec. + Don't skip trivial FDEs. + +Sun Sep 7 03:35:28 1997 Paul Eggert + + * fix-header.c (std_include_table): Remove bogus entry for popen + under stdio.h with ANSI_SYMBOL. popen is a POSIX2_SYMBOL. + +Fri Sep 5 17:19:58 1997 J"orn Rennecke + + * sh.md (movsf_ie+1): Typo fix. + +Fri Sep 5 10:08:44 1997 Jeffrey A Law (law@cygnus.com) + + * v850: New directory for v850 port. + * v850/lib1funcs.asm: New file. + * t-v850, v850.c, v850.h, v850.md, xm-v850.h: New files. + * ginclude/va-v850.h: New file. + * varargs.h, stdarg.h: Include va-mn10200.h. + * configure.in (mn10200-*-*): New target. + * Makefile.in (USER_H): Add va-mn10200.h. + + * xm-svr4.h (SYS_SIGLIST_DECLARED): Define. + * mips/xm-news.h (SYS_SIGLIST_DECLARED): Define. + * mips/xm-sysv4.h (SYS_SIGLIST_DECLARED): Define. + +Fri Sep 5 03:50:15 1997 David Edelsohn + + * rs6000.md (fma patterns): Extend previous -mno-fused-madd + patch to DFmode patterns inadvertently omitted. + +Thu Sep 4 20:06:02 1997 Christian Kuehnke + + * sparc.md: Add ultrasparc scheduling support. + * sparc.h (RTX_COSTS): For MULT give v9 a cost of 25 insns. + +Wed Sep 3 20:56:24 1997 J"orn Rennecke + + * sh.h (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Define. + +Wed Sep 3 20:52:07 1997 Joel Sherrill + + * sh/rtems.h: New file. + +Wed Sep 3 17:30:36 1997 Stan Cox + + * reg-stack.c (subst_stack_regs): Pop the stack register for a + computed goto which sets the same stack register. + +Wed Sep 3 17:30:36 1997 Jim Wilson + + * i386.c (ix86_expand_epilogue): Emit blockage instruction when pic. + +Wed Sep 3 11:25:19 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (reload peepholes): Fix typo in last change. + +Wed Sep 3 03:02:02 1997 J"orn Rennecke + + * sh.md (movsi_ie): Move t/r alternative after r/r alternative. + +Tue Sep 2 18:41:55 1997 Jeffrey A Law (law@cygnus.com) + + * cccp.c (sys_errlist): Remove special 4.4bsd declaration. + * collect2.c (sys_errlist): Likewise. + * cpplib.c (sys_errlist): Likewise. + * gcc.c (sys_errlist): Likewise. + * protoize.c (sys_errlist): Likewise. + * configure.in: Check for strerror. + * xm-freebsd.h (HAVE_STRERROR): Remove definition. + * xm-gnu.h (HAVE_STRERROR): Likewise. + * xm-linux.h (HAVE_STRERROR): Likewise. + * xm-netbsd.h (HAVE_STRERROR): Likewise. + * alpha/xm-linux.h (HAVE_STRERROR): Likewise. + * i386/xm-bsd386.h (HAVE_STRERROR): Likewise. + * i386/xm-cygwin32.h (HAVE_STRERROR): Likewise. + * i386/xm-dos.h (HAVE_STRERROR): Likewise. + * i386/xm-mingw32.h (HAVE_STRERROR): Likewise. + * pa/xm-pa.h (HAVE_STRERROR): Likewise. + * pa/xm-papro.h (HAVE_STRERROR): Likewise. + * rs6000/xm-cygwin32.h (HAVE_STRERROR): Likewise. + * rs6000/xm-sysv4.h (HAVE_STRERROR): Likewise. + + * collect2.c (SYS_SIGLIST_DECLARED): Renamed from + DONT_DECLARE_SYS_SIGLIST. + * mips-tfile.c (SYS_SIGLIST_DECLARED): Likewise. + * xm-linux.h (DONT_DECLARE_SYS_SIGLIST): Delete definition. + * xm-freebsd.h (DONT_DECLARE_SYS_SIGLIST): Likewise. + * alpha/xm-linux.h (DONT_DECLARE_SYS_SIGLIST): Delete definition. + * i386/xm-bsd386.h (DONT_DECLARE_SYS_SIGLIST): Likewise. + * i386/xm-sysv4.h (DONT_DECLARE_SYS_SIGLIST): Likewise. + * mips/xm-sysv4.h (DONT_DECLARE_SYS_SIGLIST): Likewise. + * rs6000/xm-sysv4.h (DONT_DECLARE_SYS_SIGLIST): Likewise. + * sparc/xm-sol2.h (DONT_DECLARE_SYS_SIGLIST): Likewise. + * configure.in: Check for sys_siglist declaration. + + * Makefile.in (libgcc2.a): Add missing "else true" clause. + (stage{1,2,3,4}-start): Likewise. + + * mn10200.h (INITIALIZE_TRAMPOLINE): PC relative instructions + are relative to the next instruction, not the current instruction. + +Tue Sep 2 14:15:32 1997 Jason Merrill + + * toplev.c (xrealloc): Handle null ptr. + +Tue Sep 2 13:42:38 1997 Paul N. Hilfinger + + * fixincludes: Permits spaces between # and define. Discard C++ + comments in sys/pci.h on HP/UX 10.20. + +Tue Sep 2 09:28:31 1997 Richard Kenner + + * rs6000.h (ROUND_TYPE_ALIGN): Don't blow up if no fields in record. + +Tue Sep 2 00:19:01 1997 Jason Merrill + + * expr.c (expand_expr, case COND_EXPR): It's OK to merge two + SAVE_EXPRs. + +Mon Sep 1 23:36:45 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (restore_unscaled_index_insn_codes): New function. + (record_unscaled_index_insn_codes): Likewise. + (output_function_prologue): Call restore_unscaled_index_insn_codes. + (output_function_epilogue): Free memory for unscaled_index_insn_codes. + (pa_reorg): Call record_unscaled_index_insn_codes. + +Mon Sep 1 14:46:09 1997 J"orn Rennecke + + * sh.md (casesi_jump_1, casesi_jump2): Generate expanders. + (casesi_jump): Delete. + (casesi) Use gen_casesi_jump_1 and gen_casesi_jump2 instead of + gen_casesi_jump. + +Mon Sep 1 14:36:36 1997 Paul Eggert + + * sparc/sol2.h (CPP_SPEC): Add -D__STDC__=0 unless -ansi + or -traditional, for compatibility with Sun's practice. + * i386/sol2.h (CPP_SPEC), rs6000/sol2.h (CPP_SPEC): Likewise. + * configure.in ({sparc,i[3456]86,powerpcle}-*-solaris2*): + Set fixincludes=Makefile.in. + +Mon Sep 1 14:08:23 1997 Andreas Schwab + + * Makefile.in (config.status): Depend on version.c. + +Mon Sep 1 13:48:02 1997 Richard Kenner + + * acconfig.h: Remove include of config2.h. + * configure.in: Build auto-config.h, not config.h, from autoconf data. + Add auto-conf.h in front of all other host_xm_file entries. + Make config.h, not config2.h, from host_xm_file. + * Makefile.in (auto-config.h): New rule; was config.h. + (distclean): Remove auto-config.h, not config2.h. + + * expr.c (do_jump_by_parts_equality_rtx): Try to do by IOR of + all the words. + +Mon Sep 1 13:07:36 1997 Bob Manson + + * sparc/t-vxsparc (TARGET_LIBGCC2_CFLAGS): New definition. + (LIBGCC2_CFLAGS): Deleted. + * m68k/t-vxworks68: Likewise. + * i960/t-vxworks960: Likewise. + * a29k/t-vx29k: Likewise. + +Sun Aug 31 17:12:27 1997 Paul Eggert + + * real.c (EMULONG): Correct typo in spelling of HOST_BITS_PER_LONGLONG. + +Fri Aug 29 16:13:51 1997 Jeffrey A Law (law@cygnus.com) + + * mips.md (movstrsi_internal[23]): Set insn type to "store" to + get more accurate schedules. + + * pa.md (reload_peepholes): Make sure operand is a REG before + examining REGNO. Allow general registers too. + +Thu Aug 28 12:34:56 1997 Doug Evans + + * reload1.c (reload_cse_no_longer_dead): Don't pass incremented regno + to SET_HARD_REG_BIT, it can be evaluated twice. + +Wed Aug 27 20:15:53 1997 J"orn Rennecke + + * sh/elf.h: (LINK_SPEC): Use shlelf. + (USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX, ASM_FILE_START): Redefine. + * sh/lib1funcs.asm (___ashrsi3, ___ashlsi3, ___lshrsi3): + Truncate shift count. Use braf if not SH1. + * sh.c (sfunc_uses_reg): No longer static. + Check for SImode inside the USE. + (shiftcosts, expand_ashiftrt, shl_sext_kind): + Use SH_DYNAMIC_SHIFT_COST. + (sh_dynamicalize_shift_p, output_branchy_insn): New functions. + (output_ieee_ccmpeq, mova_p, cache_align_p, fixup_aligns): Likewise. + (branch_offset, short_cbranch_p, med_branch_p): Likewise. + (braf_branch_p, align_length, fixup_addr_diff_vecs): Likewise. + (addr_diff_vec_adjust, get_dest_uid, gen_far_branch): Likewise. + (split_branches, regs_used, gen_block_redirect): Likewise. + (from_compare): Can't compare non-zero DImode constant directly. + Emit special code for TARGET_SH3E floating point with code == GE. + Force 0.0 into a register for SH3E. + (print_operand): Add ','. + Emit the actual comparison instruction. + (sh_builtin_saveregs): Save floating point registers in order that + allows pre-decrement. + (find_barrier): New arguments num_mova and mova. Changed caller. + When rewinding to before a mova, also restore the last found barrier. + Branch is now known to be shortened. + Prefer barriers where no new alignment is needed. + More generic alignment for cache lines. + Add checks for pieces of code that use more table space than their + own size. + Fix up the barrier we return so that the alignment will always be + after the table. + Remove limit adjustments for table alignment. + Handle PARALLELs correctly. + (machine_dependent_reorg): Add extra pass to split insns. + Don't scan instructions twice for broken moves. + Calculate insn length, call fixup_addr_diff_vecs. + Call split_branches. + Add alignment for loops and after BARRIERs. + Initialize max_uid_before_fixup_addr_diff_vecs. + Advance mdep_reorg_phase. + Clear insn_addresses. + (output_far_jump): Use braf and/or pre-allocated scratch register + when possible. + (expand_ashiftrt): Truncate shift count. + (push_regs): Push PR last. + (sh_expand_epilogue): Pop PR first. + (code_for_indirect_jump_scratch, mdep_reorg_phase): New variables. + (uid_align, uid_align_max): Likewise. + (max_uid_before_fixup_addr_diff_vecs, sh_addr_diff_vec_mode): Likewise. + (braf_label_ref_operand): New predicate. + (initial_elimination_offset): calculate offset from + RETURN_ADDRESS_POINTER_REGNUM starting with total_saved_regs_space. + (output_branch): Expect out-of-range condbranches to have been split. + * sh.md (rotlsi3_16): Named insn. + (rotlsi3): Rewritten to use superoptimizer patterns. + (adddi3, subdi3, ashrsi2_16, ashrsi2_31): Always split. + (movsi_i, movsi_ie): replace t/z alternative with t/r alternative. + Use pcload_si and load_si insn types. + (adddi3+1, subdi3+1, ashrsi2_16+1, ashrsi2_31+1) New define_splits. + (addc, subc, ashlsi_c): New insns. + (attribute "type"): New values dyn_shift, load_si, pcload_si, fmove, + jump_ind, arith3 and arith3b. + (function_unit "fp"): Take fmove into account. + (function_unit "int"): Uses one cycle for !dyn_shift. + (function_unit "memory"): Special case for load_si and pcload_si. + (attribute "in_delay_slot): handle pcload_si. + (cmpgtdi_t, cmpgedi_t, cmpgeudi_t, cmpgtudi_t): Type arith3. + (cmpsi+1, cmpeqdi_t) Type arith3b. + (movsf_ie, alternatives f/fGH/X, f/y/X, y/f/X): Type fmove. + (extendsidi2): Delete. + (cmpeqsi_t-2): Delete. (Redundant with movt.) + (*rotlhi3_8) Name. + (iorsi3, rotlsi3_1, rotlsi3_31, rotlsi3_16, (*rotlhi3_8): Type arith. + (ashlsi3_k, ashlhi3_ki, ashrsi2_16, ashrsi2_31, lshrsi3_m): Likewise. + (lshrsi3_k, lshrhi3_m, lshrhi3_k, ashldi3_k, lshrdi3_k): Likewise. + (ashrdi3_k, xtrct_left, xtrct_right, dect, mova, movt): Likewise. + (movt): Likewise. + (ashlsi3_d, ashrsi3_d, lshrsi3_d): Type dyn_shift. + (indirect_jump_scratch, *casesi_jump_1, *casesi_jump_2): Type jump_ind. + (ashlsi3, ashlsi3_n, lshrsi3, lshrsi3_n): Use sh_dynamicalize_shift_p. + (movsf_ie+1, movsf_ie+2): Exchange. + (cmpeqdi_t-1, cmpeqdi_t, cmpgtdi_t, cmpgedi_t): New insns. + (cmpgeudi_t, cmpgtudi_t, movsi_i_lowpart, ieee_ccmpeqsf_t): Likewise. + (cmpdi, movnegt): New define_expands. + (movsi_ie): Add y,y alternative. + (sge): Use it for ! TARGET_IEEE. Use special code for TARGET_IEEE. + (sle): Use sge. + (align_4, casesi_jump): Now define_expand. + (casesi_0, addr_diff_vec_adjust, align_log): New patterns. + (*casesi_jump_[12]): Likewise. + (casesi): Use casesi_0 and casesi_jump. + (casesi_worker): Depends on the mode used for the table. + (define_delay for cbranches): Test TARGET_SH2. + Changed all callers of from_compare. + (attribute "length"): Take use of braf and scratch registers into + account. + (indirect_jump_scratch, block_branch_redirect): New patterns. + (jump): Call output_far_jump for any jump larger than 4 bytes. + (inverse_branch_true, inverse_branch_false): Remove. + (bne, blt, ble, bltu, bleu): Canonicalize. + (attribute "cpu"): Remove "sh0" alternative. + * sh.h (ADJUST_COST): Lower cost of non-address sfunc dependencies. + Adjust cost of load_si / pcload_si insns when not used for call. + (enum reg_class): Move GENERAL_REGS after FPUL_REGS. + (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise. + (REGISTER_MOVE_COST): Add costs for fpul <-> mac, pr moves. + Fix to match default cost in regclass. Move to T reg not costly. + When checking for GENERAL_REGS, check for R0_REGS too. + (INITIALIZE_TRAMPOLINE): Include code for constant parts. + (SHIFT_COUNT_TRUNCATED): Not true for TARGET_SH3. + (CPP_SPEC): Define __sh1__ if no specific cpu is selected. + (FUNCTION_BOUNDARY): Align to cache line boundary. + (optimize, sh_addr_diff_vec_mode, machine_dependent_reorg): Declare. + (addr_diff_vec_adjust, code_for_indirect_jump_scratch): Declare. + (short_cbranch_p, med_branch_p, braf_branch_p, align_length): Declare. + (output_ieee_ccmpeq, output_branchy_insn, sfunc_uses_reg): Declare. + (ASM_OUTPUT_ADDR_DIFF_ELT): Depends on sh_addr_diff_vec_mode. + (PREDICATE_CODES): Add braf_label_ref_operand and register_operand. + (IEEE_BIT, TAGET_IEEE, LOCAL_LABEL_PREFIX, ASSEMBLER_DIALECT): Define. + (CACHE_LOG, enum mdep_reorg_phase_e, TRAMPOLINE_ALIGNMENT): Define. + (SH_DYNAMIC_SHIFT_COST): Define. + (TARGET_SWITCHES): Remove -m0 entry. Add -mieee, -mno-ieee. + (OVERRIDE_OPTIONS): sh_cpu defaults to CPU_SH1. + Initialize sh_addr_diff_vec_mode. + (REG_ALLOC_ORDER): Move FP0 behind FP7. + Move all FP registers in front of the general registers. + (SECONDARY_OUTPUT_RELOAD_CLASS): Add case for MAC_REGS / PR_REGS. + When checking for GENERAL_REGS, check for R0_REGS too. + Fix direction of compares to {FIR,LA}ST_FP_REG. + (SECONDARY_INPUT_RELOAD_CLASS): check for fp_one_operand. + (ASM_OUTPUT_ALIGN_CODE, ASM_OUTPUT_LOOP_ALIGN, SH0_BIT): Delete. + (TARGET_SH0, PUSH_ROUNDING, TRAMPOLINE_TEMPLATE): Delete. + (TRAMPOLINE_ALIGN): Delete. + (processor_type): Remove PROCESSOR_SH0. + (ADJUST_INSN_LENGTH): Remove check for preceding BARRIER. + Adjust ADDR_DIFF_VECs. Add code for alignment instructions. + Check if insn needing a delay slot is already inside a SEQUENCE. + + * va-sh.h (__va_rounded_size): Delete. + (__LITTLE_ENDIAN_P, __SCALAR_TYPE, __PASS_AS_FLOAT): Define. + (va_arg): Unify big and little endian code. + Optimization for small integers. + + From Fred Fish: + * sh.h (INITIAL_ELIMINATION_OFFSET): Proper bracketing. + (REGNO_REG_CLASS, PREFERRED_RELOAD_CLASS): Likewise. + (SECONDARY_{OUTPUT,INPUT}_RELOAD_CLASS, LIBCALL_VALUE): Likewise. + (ROUND_ADVANCE, FUNCTION_ARG, FUNCTION_ARG_PARTIAL_NREGS): Likewise. + (FUNCTION_PROFILE, FUNCTION_EPILOGUE, RETURN_ADDR_RTX): Likewise. + (REGNO_OK_FOR_INDEX_P, EXTRA_CONSTRAINT_Q, MODE_DISP_OK_4): Likewise. + (GO_IF_LEGITIMATE_{INDEX,ADDRES}, LEGITIMIZE_ADDRESS): Likewise. + (CONST_COSTS, REGISTER_MOVE_COST, ASM_OUTPUT_CONSTRUCTOR): Likewise. + (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Likewise. + (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP, ASM_OUTPUT_LABEL): Likewise. + (ASM_OUTPUT_ALIGN), ASM_DECLARE_FUNCTION_NAME): Likewise. + (ASM_GLOBALIZE_LABEL, ASM_OUTPUT_CASE_LABEL): Likewise. + (ASM_OUTPUT_ADDR_DIFF_ELT, ASM_OUTPUT_ADDR_VEC_ELT) Likewise. + (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT, ASM_OUTPUT_INT): Likewise. + (ASM_OUTPUT_SHORT, ASM_OUTPUT_CHAR, ASM_OUTPUT_BYTE): Likewise. + (ASM_OUTPUT_SKIP, FINAL_PRESCAN_INSN, PRINT_OPERAND): Likewise. + (PRINT_OPERAND_ADDRESS, HANDLE_PRAGMA, ADJUST_INSN_LENGTH): Likewise. + (PROMOTE_MODE): Likewise. + (ASM_GENERATE_INTERNAL_LABEL): Use LOCAL_LABEL_PREFIX. + (ASM_OUTPUT_INTERNAL_LABEL): Use %L. + * sh/elf.h: (ASM_OUTPUT_LABELREF): Use %U. + (ASM_GENERATE_INTERNAL_LABEL): Use LOCAL_LABEL_PREFIX. + (ASM_OUTPUT_INTERNAL_LABEL, ASM_OUTPUT_SOURCE_LINE): Use %L. + +Wed Aug 27 16:42:21 1997 Bob Manson (manson@cygnus.com) + + * t-h8300 (TARGET_LIBGCC2_CFLAGS): New definit. + (LIBGCC2_CFLAGS): Deleted. + * t-mn10200: Likewise. + +Wed Aug 27 17:10:51 1997 Jim Wilson + + * m68k.md (iorsi3_internal): Readd ! TARGET_5200 check lost in + last change. + +Wed Aug 27 15:19:55 1997 J"orn Rennecke + + * dwarfout.c (dwarfout_start_new_source_file): Strip leading '*'s + from label names. + +Wed Aug 27 14:33:38 1997 Jim Wilson + + * reload.c (find_reloads, case '0'): Reject matching a non-offsettable + address where an offsettable address is required. + +Wed Aug 27 10:38:32 1997 Jeffrey A Law (law@cygnus.com) + + * reorg.c (dbr_schedule): Allow current_function_return_rtx + to be something other than a REG. + * function.c (expand_function_end): Fix current_function_return_rtx + if it was a pseudo. + + * t-freebsd (USER_H): Include EXTRA_HEADERS and LANG_EXTRA_HEADERS. + * x-netbsd: Likewise + * x-dgux (USER_H): Include EXTRA_HEADERS and LANG_EXTRA_HEADERS + (INSTALL_HEADERS): Delete. + * x-dguxbcs: Likewise. + * x-hp3bsd44: Likewise + * x-pa: Likewise. + +Wed Aug 27 07:15:58 1997 Klaus Espenlaub + + * configure.in (AC_PROG_CC, AC_PROG_MAKE_SET): Check for gcc before + testing for flex. + +Wed Aug 27 02:24:35 1997 Jim Wilson + + * dwarfout.c (dwarfout_file_scope_decl, case TYPE_DECL): Check + TYPE_DECL_IS_STUB instead of DECL_NAME. + + * Makefile.in (install-info): Don't cd into srcdir. Add srcdir to + filenames. Use sed to extract base filename for install. + +Wed Aug 27 01:56:18 1997 Doug Evans + + * loop.c (combine_movables): Earlier insns don't match later ones. + + * c-decl.c (grokdeclarator): If array index or size calculations + overflow, issue an error. + * fold-const.c (int_const_binop): New static function. + (const_binop, size_binop): Call it. + +Tue Aug 26 17:51:56 1997 Jason Merrill + + * collect2.c (main): Check SCAN_LIBRARIES instead of LDD_SUFFIX + to decide whether to always emit init and fini handles. + +Tue Aug 26 13:51:10 1997 Jim Wilson + + * stor-layout.c (layout_record): Test DECL_PACKED instead of + TYPE_PACKED to determine alignment. + + * combine.c (try_combine): Distribute REG_DEAD notes created for + i3dest_killed similar to the ones created for i2dest_in_i2src + and for i1dest_in_i1src. + +Tue Aug 26 11:36:34 1997 Jeffrey A Law (law@cygnus.com) + + * loop.c (check_final_value): Don't miss a biv increment in a + parallel. + + * loop.c (check_dbra_loop): If the loop biv is only used + for counting, then normalize it so that the initial + value is zero. + +Tue Aug 26 06:19:48 1997 Jason Merrill + + * dwarfout.c (*_LABEL): Add initial '*'. + +Tue Aug 26 05:27:28 1997 Richard Henderson + + * alpha/elf.h (LINK_SPEC): Conditionalize on USE_GNULIBC_1. + * configure.in (alpha-*-linux-gnulibc1): New target. + (alpha-*-linux-gnu*): Don't build crtbegin/end. + +Mon Aug 25 19:11:38 1997 Bernd Schmidt + + * reload1.c (reload_cse_simplify_operands): Fix typo. + +Mon Aug 25 19:04:42 1997 Richard Kenner + + * c-typeck.c (common_type): Always prefer long double to double. + +Mon Aug 25 08:55:00 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (secondary_reload_class): (mem (mem ... )) does not need + secondary reloads. + + * pa.c (hppa_builtin_saveregs): Emit a blockage insn after the + store of the argument registers. + +Sun Aug 24 21:25:06 1997 Bernd Schmidt + + * reload1.c (reload_cse_mem_conflict_p, case MEM): Also check + for conflict with the address. + +Sat Aug 23 18:43:22 1997 Jim Wilson + + * acconfig.h (NEED_DECLARATION_CALLOC): Add. + * configure.in: Add GCC_NEED_DECLARATION call for calloc. + * rs6000/xm-rs6000.h (malloc, realloc, calloc, free): Delete + declarations. + + * m68k/m68kemb.h (LIB_SPEC): Add missing comment end before it. + * m68k/next.h (GO_IF_INDEXABLE_BASE): Fix typo in undef. + +Sat Aug 23 00:18:22 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (pa_reorg): Always put begin_brtab and end_brtab insns + around branch tables. + * pa.md (begin_brtab, end_brtab): Only emit the .begin_brtab + and .end_brtab directives if TARGET_GAS. + +Fri Aug 22 19:17:25 1997 Richard Kenner + + * function.c (instantiate_virtual_regs_1, case ADDRESSOF): + New case. + (fix_lexical_addr): Handle (addressof (mem ...)). + +Thu Aug 21 17:56:06 1997 Richard Kenner + + * reload.c (push_secondary_reload): If SECONDARY_MEM_NEEDED, + call get_secondary_mem for input before adding reload and + for output after. + (push_reload): Likewise. + +Thu Aug 21 15:57:03 1997 Jim Wilson + + * stmt.c (start_cleanup_deferal, end_cleanup_deferal): Test + block_stack before dereferencing it. + +Wed Aug 20 15:45:52 1997 Dave Love + + * dwarf2.h (enum dwarf_call_frame_info): Remove trailing comma from + list. + +Wed Aug 20 15:30:36 1997 Stan Cox + + * i386.c (ix86_prologue, ix86_epilogue): New functions. + ({function,ix86_expand}_{pro,epi}logue, ix86_expand_prologue): + Use ix86_prologue. + +Wed Aug 20 14:57:11 1997 Michael Meissner + + * rs6000.h (ISSUE_RATE): Define instead of MACHINE_issue_rate. + +Tue Aug 19 17:10:56 1997 Jason Merrill + + * cplus-dem.c: Add 'extern' to prepends_underscore. + +Tue Aug 19 15:46:30 1997 Jeffrey A Law (law@cygnus.com) + + * mips/r3900.h (SUBTARGET_CC1_SPEC): Remove some unnecessary stuff. + (MIPS_CPU_STRING_DEFAULT, MIPS_ISA_DEFAULT): Define. + +Mon Aug 18 21:49:02 1997 Jim Wilson + + * reload.c (find_reloads): Add code to convert RELOAD_FOR_OPADDR_ADDR + reloads to RELOAD_FOR_OPERAND_ADDRESS reloads. + +Mon Aug 18 17:39:02 1997 Mike Meissner + + * configure.in ({powerpc,rs6000}*-*-*, --with-cpu): Remove single + quotes around the name. + +Mon Aug 18 17:26:42 1997 Doug Evans + + * mips.md (movsi_ulw,movsi_usw,loadgp): Give unspec a mode. + +Mon Aug 18 11:05:17 1997 Jeffrey A Law (law@cygnus.com) + + * mips/r3900.h (TARGET_DEFAULT): Turn on MASK_MIPS3900. + +Sun Aug 17 14:39:18 1997 Gavin Koch (gavin@cygnus.com) + + * mips/elf.h (PREFERRED_DEBUGGING_TYPE): Only set if not already set. + * mips.c (TARGET_{SINGLE,SOFT}_FLOAT): Make sure both aren't set. + (PROCESSOR_R3900): Set flag from option. + * mips.h: Add m3900 option. + ({PROCESSOR,TARGET,MASK}_R3900): Define. + (GENERATE_{BRANCHLIKELY,MADD,MULT3): Likewise. + (debugj,MASK_DEBUG_J): Delete to make room for m3900. + (BRANCH_LIKELY_P): Redefine to include 3900. + (GAS_ASM_SPEC,CC1_SPEC): Add m3900 option. + (RTX_COSTS): Add 3900. + * mips.md: Add 3900, including three op madd and mult. + * configure.in (mipstx39{,el}-*-elf*): New cases. + * mips/r3900.h: New file. + +Fri Aug 15 07:34:12 1997 Richard Earnshaw (rearnsha@arm.com) + + * arm.md (umulsi3_highpart, smulsi3_highpart): Add extra reloading + alternatives. + +Fri Aug 15 07:34:12 1997 Torbjorn Granlund + + * arm.md (umulsi3_highpart, smulsi3_highpart): New patterns. + * arm.c (arm_rtx_costs, case TRUNCATE): New case. + +Fri Aug 15 06:40:03 1997 Richard Kenner + + * genemit.c (main): Write an include for flags.h. + * genoutput.c (main): Likewise. + + * alpha.c (override_options): Turn off byte insns for cpu=ev4 or ev5. + + * alpha.md (allocate_stack): If stupid reg allocation, add USE + for loop variable. + + * fold-const.c (fold, compare cases): Add calls to `fold' to + previous change. + +Wed Aug 13 17:32:38 1997 Jason Merrill + + * rtl.h ({SET,}ADDRESSOF_DECL): op 1 of ADDRESSOF is now the decl. + * function.c (put_var_into_stack, gen_mem_addressof, + put_addressof_into_stack): Adjust. + + * expr.c (expand_expr, case TARGET_EXPR): Call mark_addressable + again for the slot after we give it RTL. + (expand_expr, case VAR_DECL): Lose gen_mem_addressof case. + +Wed Aug 13 17:29:25 1997 J"orn Rennecke + + * c-lex.c (check_newline): Pass finput again to HANDLE_PRAGMA. + +Wed Aug 13 16:51:35 1997 Bernd Schmidt + + * reload1.c (reload_cse_simplify_operands): New function. + (reload_cse_no_longer_dead,reload_cse_delete_death_notes): Likewise. + (no_longer_dead_regs): New static variable. + (reload_cse_simplify_set): Now returns int. + Don't delete death notes on previous insns, call + reload_cse_no_longer_dead instead. + Call validate_change with nonzero value for in_group. + (reload_cse_noop_set_p): Don't delete death notes on previous insns, + call reload_cse_no_longer_dead instead. + (reload_cse_regs): Initialize no_longer_dead_regs and call + reload_cse_delete_death_notes as appropriate. + Call apply_change_group after calling reload_cse_simplify_set. + Call reload_cse_simplify_set on elements of a PARALLEL. + Call reload_cse_simplify_operands if reload_cse_simplify_set could + not simplify things. + +Wed Aug 13 16:18:42 1997 Douglas Rupp + + * vms.h (LINK_SPEC): Echo -shared, not -share, to linker. + +Wed Aug 13 12:51:11 1997 Richard Stallman + + * m68k.md: Add braces to clarify nesting. + +Wed Aug 13 12:51:11 1997 Jason Merrill + + * calls.c (expand_call): Use assign_temp and mark_addressable + instead of calling gen_mem_addressof directly. + +Wed Aug 13 12:40:15 1997 Richard Kenner + + * Makefile.in (install-man): Add missing $(exeext). + + * configure.in (alpha*-dec-osf*): Merge various cases; + split off version-specific files in new case statement. + Include osf2or3.h even for OSF1.2. + + * alpha.c (NUM_ARGS): New macro. + (CURRENT_FUNCTION_ARGS_INFO): Deleted. + (alpha_builtin_saveregs): Use new macro. + (function_arg): Deleted. + (alpha_arg_type, alpha_arg_info_reg_val): New functions. + * vms.h (enum avms_arg_type, avms_arg_info): New types. + (CUMULATIVE_ARGS, INIT_CUMULATIVE_ARGS): Update definitions + to use new types. + (SETUP_INCOMING_VARARGS): Likewise. + (FUNCTION_ARG{,_PARTIAL_NREGS}, FUNCTION_ARG_ADVANCE): Likewise. + Only update CUM in FUNCTION_ARG_ADVANCE. + +Tue Aug 12 19:27:32 1997 Philippe De Muyter + + * integrate.c (save_for_inline_copying): Use 0, not NULL_PTR, + as initial value for real_label_map. + (copy_for_inline): Likewise. + +Tue Aug 12 16:15:36 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * rtl.h (BYTECODE_LABEL): Use XSTR, not XEXP. + + * calls.c (expand_calls): Properly call any_pending_cleanups. + +Tue Aug 12 12:18:01 1997 Jason Merrill + + * function.c (purge_addressof_1): Add force argument. + (purge_addressof): If there are any ASM_OPERANDS in an insn, always + put ADDRESSOFs into the stack. + + * function.c (setjmp_protect): See through addressof. + (setjmp_protect_args): Likewise. + * calls.c (expand_call): For now, only use addressof if the type + doesn't promote. + * function.c (put_var_into_stack): Likewise. + * expr.c (expand_expr): Likewise. + * toplev.c (rest_of_compilation): Check inlineable instead of + DECL_INLINE. + * function.c (purge_addressof_1): Try recognizing the insn with + and without the SUBREG. If it doesn't work, just put the REG into + the stack. + (gen_mem_addressof): Set the mode of the MEM to the mode of the type. + (put_var_into_stack): Don't be fooled by addressof in an enclosing + scope. + +Sun Aug 10 22:19:19 1997 Richard Kenner + + * explow.c (probe_stack_range): Add USE for test_addr if -O0. + +Sun Aug 10 22:15:40 1997 Jason Merrill + + * toplev.c (rest_of_compilation): Move purge_addressof before loop. + +Sun Aug 10 15:25:51 1997 Jim Wilson + + * toplev.c (main): In -g handling code, add code to set len. + + * sdbout.c (plain_type_1, case ARRAY_TYPE): Verify that TYPE_DOMAIN + has integer TYPE_{MAX,MIN}_VALUE before using them. + + * alpha.md (extendqihi2): Use HImode not QImode in force_reg call. + +Sun Aug 10 16:47:34 1997 Nick Burrett + + * arm/aof.h (COMMON_SECTION): New macro, define common_section. + (EXTRA_SECTION_FUNCTIONS): Add COMMON_SECTION. + (EXTRA_SECTIONS): Add in_common. + (ASM_OUTPUT_COMMON): Call common_section() to indicate we've + changed areas. + +Sat Aug 9 20:04:35 1997 Jim Wilson + + * dwarf2out.c (gen_subprogram_die): Handle redefinition of an + extern inline function. + +Sat Aug 9 13:01:06 1997 Michael Meissner + + * rs6000/sysv4.h (*_SPEC): Add support for -mads and -myellowknife. + Use a common crt0.o for all embedded platforms. Use --start-group + and --end-group instead of -( and -) to allow better cut and pasting + when debugging the linker. Set default start for MVME text. + (TARGET_SWITCHES): Add -mads and -myellowknife. + +Fri Aug 8 20:12:43 1997 Per Bothner + + * dwarf2out.c (gen_enumeration_type_die): + Make code work for a tag name, without a TYPE_STUB_DECL. + (gen_struct_or_union_type_die): Likewise. + +Fri Aug 8 18:10:40 1997 Marc Lehmann + + * i386/go32.h (HAS_INIT_SECTION, HAVE_ATEXIT): New macros. + +Fri Aug 8 17:30:22 1997 H.J. Lu + + * i386.c (output_pic_addr_const, case PLUS): Emit the constant first. + +Fri Aug 8 17:07:36 1997 Stan Cox + + * m88k.c (m88k_expand_prologue): Set MEM_IN_STRUCT_P of va_list + template. + + * reg-stack.c (compare_for_stack_reg): Swap only if the source and + destination are both on the regstack. + (subst_stack_regs_pat): Put the destination at the top of the regstack. + +Fri Aug 8 17:03:21 1997 Bernd Schmidt + + * i386.md (pop): pop increments the stack pointer. + (prologue_set_stack_ptr): New pattern. + * i386.c (ix86_expand_prologue): Use prologue_set_stack_ptr + instead of subsi3. + +Fri Aug 8 17:00:36 1997 Paul Eggert + + * gansidecl.h, halfpic.h (STDIO_PROTO): Remove. + * bitmap.h, c-tree.h, output.h, reload.h, rtl.h (STDIO_PROTO): + Replace with PROTO in include files. + * bc-emit.c: Include before include files that formerly + used STDIO_PROTO. + * bc-optab.c, c-common.c, c-decl.c, caller-save.c, calls.c: Likewise. + * convex.c, i860.c, mips.c, spur.c, tahoe.c, emit-rtl.c: Likewise. + * explow.c, expmed.c, expr.c, genattrtab.c, halfpic.c: Likewise. + * jump.c, optabs.c, profile.c, recog.c, regclass.c: Likewise. + * rtlanal.c, sdbout.c, unroll.c: Likewise. + * genattrtab.c (main): Generate files that include + before including files that formerly used STDIO_PROTO. + * genemit.c (main), genextract.c (main), genopinit.c (main): Likewise. + * genoutput.c (output_prologue), genpeep.c (main): Likewise. + * genrecog.c (main): Likewise. + * halfpic.h (PROTO): Use "gansidecl.h" to define this instead. + (half_pic_finish): Declare without prototype; FILE isn't defined. + + * bitmap.c, c-aux-info.c, c-lex.c: Include "config.h" first. + * c-parse.in, c-pragma.c, 1750a.c, a29k.c, alpha.c: Likewise. + * arm.c, clipper.c, dsp16xx.c, elxsi.c, fx80.c, gmicro.c: Likewise. + * h8300.c, i370.c, i386.c, i386/winnt.c, i960.c: Likewise. + * m32r.c, m68k.c, m88k.c, mn10200.c, mn10300.c, ns32k.c: Likewise. + * pa.c, pdp11.c, pyr.c, romp.c, rs6000.c, sparc.c, vax.c: Likewise. + * we32k.c, cppmain.c, dbxout.c, flow.c, fold-const.c: Likewise. + * gcc.c, gcov.c, global.c, integrate.c, local-alloc.c: Likewise. + * loop.c, mips-tdump.c, mips-tfile.c, objc-act.c: Likewise. + * real.c, reg-stack.c, reload.c, reload1.c, reorg.c, sched.c: Likewise. + * stupid.c, tree.c, varasm.c, xcoffout.c: Likewise. + +Fri Aug 8 14:52:35 1997 Jason Merrill + + * function.c (fixup_stack_1): Stack slots can also be relative to + the frame or stack pointers. + +Fri Aug 8 14:13:49 1997 Richard Henderson + + * dwarf2out.c (reg_loc_descriptor): Fix prototype. + (concat_loc_descriptor): New function. + (loc_descriptor): Call it. + (add_AT_location_description): Also elide the descriptor if both + halves of a CONCAT are pseudos. + (add_location_or_const_value_attribute): Recognize CONCAT too. + +Fri Aug 8 06:36:29 1997 Bernd Schmidt + + * c-common.c (if_stack{,_space,_pointer}): New static variables. + (c_expand_{start_cond,start_else,end_cond}): New functions. + * c-parse.in (compstmt_count): New static variable. + (compstmt_start): New rule. + (compstmt): Use new rule. + (do_stmt_start): Update compstmt_count. + (simple_if, stmt): Use new versions of start_cond, start_else, + and end_cond. + +Thu Aug 7 15:35:25 1997 Jim Wilson + + * mips/iris6.h (TARGET_LONG64): Don't define here. + * mips.c (override_options): Set MASK_LONG64 for ABI_64. + + * mips.c (function_prologue): Don't emit ".ent", ".frame", + ".mask", ".fmask" if flag_inhibit_size_directive is true. + (function_epilogue): Don't emit ".end" if + flag_inhibit_size_directive is true. + + * mips/iris6.h (STARTFILE_SPEC, LIB_SPEC): Move + -L/usr/lib{32,64}/mips? from STARTFILE_SPEC to LIB_SPEC. + +Thu Aug 7 13:14:21 1997 Torbjorn Granlund + + * fold-const.c (fold): Optimize unsigned x <= 0x7fffffff. + +Thu Aug 7 12:46:31 1997 Richard Kenner + + * explow.c (convert_memory_address, case LABEL_REF): Copy + LABEL_REF_NONLOCAL_P. + + * expr.c (store_constructor): Use CONST0_RTX macro, not always + the integer version, when clearing a register. + + * varasm.c (output_constructor): Correctly check for + multi-word constant. + +Thu Aug 7 10:04:42 1997 Douglas Rupp + + * alpha/vms-tramp.asm: New file. + + * gcc.c (execute): Don't allow -pipe on VMS. + + * alpha.c (vmskrunch): Don't strip off trailing digits. + (vms_valid_decl_attribute_p): New function. + * alpha/vms.h (TRAMPOLINE_TEMPLATE): Add another quadword of zeros. + (TRAMPOLINE_SIZE): Now 32 bytes. + (INITIALIZE_TRAMPOLINE): Put FNADDR at offset 16, CXT at 24. + (DBX_DEBUGGING_INFO, ASM_FORMAT_PRIVATE_NAME): Always undefine. + (STARTFILE_SPEC): Likewise. + (PREFERRED_DEBUGGING_TYPE): Define to be Dwarf-2. + (VALID_MACHINE_DECL_ATTRIBUTE, ASM_OUTPUT_SECTION{,_NAME}): New macros. + (ASM_OUTPUT_ALIGN{,ED_COMMON}): Redefine. + (LINK_SPEC): Pass -share and -v. + (ENDFILE_SPEC, LIBGCC2_SPEC): Don't redefine. + +Thu Aug 7 06:21:47 1997 Bernd Schmidt + + * Eliminate most -Wswitch warnings. + * c-common.c (binary_op_error): Add default case to switch. + (shorten_compare, truthvalue_conversion): Likewise. + * c-iterate.c (collect_iteratores): Likewise. + * c-typeck.c (comptypes, build_component_ref): Likewise. + (build_binary_op, lvalue_p, build_unary_op): Likewise. + (build_modify_expr, initializer_constant_valid_p): Likewise. + (c_expand_return): Likewise. + * calls.c (calls_function_1): Likewise. + * combine.c (find_split_point, simplify_rtx): Likewise. + (simplify_if_then_else, simplify_logical): Likewise. + (extract_left_shift, make_compound_operation, force_to_mode): Likewise. + (known_cond, nonzero_bits, num_sign_bit_copies): Likewise. + (merge_outer_ops, simplify_shift_const, simplify_comparison): Likewise. + (reversible_comparison_p, mark_used_regs_combine): Likewise. + * convert.c (convert_to_integer): Likewise. + * cse.c (canon_hash, exp_equiv_p): Likewise. + (set_nonvarying_address_components, canon_reg): Likewise. + (simplify_unary_operation, simplify_plus_minus): Likewise. + (simplify_relational_operation, fold_rtx): Likewise. + (cse_process_note, count_reg_usage): Likewise. + * dbxout.c (dbxout_symbol): Likewise. + * dwarf2out.c (lookup_cfa_1, print_die): Likewise. + * emit_rtl.c (copy_rtx_if_shared, reset_used_flags): Likewise. + * explow.c (plus_constant_wide, convert_memory_address): Likewise. + (promote_mode, emit_stack_save, emit_stack_restore): Likewise. + * expmed.c (expand_divmod, emit_store_flag): Likewise. + * expr.c (queued_subexp_p, is_zeros_p, safe_from_p): Likewise. + (bc_expand_expr, preexpand_calls, convert_move): Likewise. + * final.c (get_attr_length, final_scan_insn): Likewise. + (walk_alter_subreg, alter_cond): Likewise. + * flow.c (jmp_uses_reg_or_mem, mark_used_regs): Likewise. + * fold-const.c (operand_equal_p, twoval_comparison_p): Likewise. + (eval_subst, invert_truthvalue, range_binop): Likewise. + (make_range, fold): Likewise. + * function.c (fixup_var_refs_1, instantiate_virtual_regs_1): Likewise. + * genattrtab.c (attr_copy_rtx, make_canonical): Likewise. + (encode_units_mask, simplify_test_exp): Likewise. + (find_and_mark_used_attributes, write_test_expr): Likewise. + (simplify_with_current_value_aux, clear_struct_flag): Likewise. + (count_sub_rtxs, gen_insn walk_attr_value): Likewise. + (copy_rtx_unchanging): Likewise. + * genconfig.c (walk_insn_part): Likewise. + * genextract.c (walk_rtx): Likewise. + * genoutput.c (scan_operands): Likewise. + * genpeep.c (match_rtx): Likewise. + * genrecog.c (add_to_sequence): Likewise. + * integrate.c (copy_for_inline, copy_rtx_and_substitute): Likewise. + (subst_constants): Likewise. + * jump.c (duplicate_loop_exit_test, comparison_dominates_p): Likewise. + (mark_jump_label, rtx_renumbered_equal_p): Likewise. + (rtx_equal_for_thread_p): Likewise. + * local-alloc.c (memref_referenced_p): Likewise. + * loop.c (record_excess_regs, reg_in_basic_block_p): Likewise. + (get_condition, replace_call_address): Likewise. + (count_nonfixed_reads, find_and_verify_loops, find_mem_givs): Likewise. + (maybe_eliminate_biv_1, invariant_p, simplify_giv_expr): Likewise. + * optabs.c (emit_float_lib_cmp): Likewise. + * print-tree.c (print_node): Likewise. + * recog.c (validate_replace_rtx_1, find_single_use_1): Likewise. + * reload.c (subst_reg_equivs, find_reloads_address_1): Likewise. + (refers_to_regno_for_reload_p, find_equiv_reg): Likewise. + * reload1.c (set_label_offsets, eliminate_regs): Likewise. + (scan_paradoxical_subregs, count_occurrences): Likewise. + * rtl.c (copy_rtx, copy_most_rtx): Likewise. + * rtlanal.c (rtx_varies_p, rtx_addr_can_trap_p): Likewise. + (reg_mentioned_p, reg_referenced_p, modified_between_p): Likewise. + (modified_in_p, refers_to_regno_p, volatile_insn_p): Likewise. + (volatile_refs_p, side_effects_p): Likewise. + (inequality_comparison_p, replace_regs): Likewise. + * sched.c (sched_analyze_2): Likewise. + * stmt.c (expand_return): Likewise. + * tree.c (staticp, unsave_expr_now, contains_placeholder_p): Likewise. + (substitute_in_expr, build_type_attribute_variant): Likewise. + (simple_cst_equal): Likewise. + * unroll.c (remap_split_bivs): Likewise. + * varasm.c (const_hash, compare_constant_1): Likewise. + (decode_rtx_const, output_addressed_constants): Likewise. + (output_constant): Likewise. + * print-tree.c (print_node): Convert switch with one case into an if. + * sched.c (memrefs_conflict_p): Likewise. + * genrecog.c (write_tree_1): Output default case for every switch. + + * profile.c (output_arc_profiler) [SMALL_REGISTER_CLASSES]: + Apply PATTERN only to insns. + +Thu Aug 7 06:13:20 1997 Robert Lipe + + * i386/t-sco5 (libgcc2-elf.a): Resync with Makefile.in. + +Wed Aug 6 19:28:05 1997 Jim Wilson + + * dwarf2out.c (build_abbrev_table): Use xrealloc not xmalloc. + +Wed Aug 6 12:57:24 1997 Jason Merrill + + * dwarf2out.c (output_call_frame_info): Always emit the info. + (dwarf2out_frame_debug): We can initialize the temp reg in the + epilogue, too. + + * rtl.def: Add ADDRESSOF. + * rtl.h (ADDRESSOF_TYPE, SET_ADDRESSOF_TYPE): New macros. + * Makefile.in (mostlyclean): Remove *.addressof. + * toplev.c (rest_of_compilation): Set DECL_DEFER_OUTPUT on + non-nested inlines. Run purge_addressof after CSE. + (various): Add .addressof RTL dump file. + * rtl.c (copy_rtx): No need to copy ADDRESSOF. + * reload1.c (eliminate_regs): Elide ADDRESSOF. + * recog.c (general_operand): (MEM (ADDRESSOF ())) is a valid operand. + So is (ADDRESSOF ()). + (memory_address_p): (ADDRESSOF ()) is a valid memory address. + * integrate.c (expand_inline_function): If the structure_value_addr + is an ADDRESSOF, we can use it as a constant. + (copy_rtx_and_substitute): Copy a '0' operand over unchanged. + * function.c (fixup_var_refs_1): Remove (ADDRESSOF (MEM ())). + (gen_mem_addressof): New fn. + (put_addressof_into_stack): New fn. + (purge_addressof_1): New fn. + (purge_addressof): New fn. + (instantiate_decl): Don't bother looking into an ADDRESSOF. + (put_var_into_stack): Call gen_mem_addressof for local REGs instead + of calling put_reg_into_stack. + * expr.c (expand_expr, case TARGET_EXPR): Put the temp in a register + if it will fit. + (expand_expr, case ADDR_EXPR): Call gen_mem_addressof to take the + address of a REG. + * explow.c (memory_address): An ADDRESSOF is a valid memory address. + * dwarfout.c (location_or_const_value_attribute): Handle ADDRESSOF. + * dwarf2out.c (add_location_or_const_value_attribute): Handle + ADDRESSOF. + * cse.c (FIXED_BASE_PLUS_P): Add ADDRESSOF. + (NONZERO_BASE_PLUS_P): Add ADDRESSOF. + (canon_hash): Ignore '0' operands. + (find_best_addr): Don't try to replace an ADDRESSOF. + (fold_rtx): If our address has a const equiv of an ADDRESSOF, use it. + * calls.c (expand_call): Put the struct value in a register if + it fits. + +Tue Aug 5 16:10:45 1997 Jason Merrill + + * mips.c (function_arg): Handle passing a struct + containing a double in a DFmode register without the PARALLEL. + +Tue Aug 5 12:27:31 1997 Doug Evans + + * configure.in (sparc-*-solaris2): Set float_format to i128. + * config/float-i128.h: New file. + +Mon Aug 4 17:45:19 1997 Richard Kenner + + * combine.c (try_combine): If have PARALLEL of independent SETs + and have cc0, ensure insn using CC0 come first. + +Mon Aug 4 15:22:41 1997 Mike Meissner + + * rs6000/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Undef for System V + environments. + +Mon Aug 4 12:34:41 1997 Philip Blundell + + * configure.in (arm-*-aout): Set tmake_file correctly. + +Mon Aug 4 08:06:48 1997 Bernd Schmidt + + * reload.c (find_reloads_address_1): Don't pass VOIDmode for an + integer argument of push_reload. + + * rtlanal.c (may_trap_p): Fix unintended fall-through so divisions by + non-zero constants are handled properly. Return 1 for FP divisions. + +Mon Aug 4 06:52:20 1997 Andreas Schwab + + * c-common.c (check_format_info): Store each flag character only + once in the flag_chars array. + +Sun Aug 3 21:57:31 1997 Jim Meyering + + * objc/Make-lang.in (objc/*.o): Depend on $(GCC_PASSES). + +Sun Aug 3 21:54:51 1997 Nick Burrett + + * cpplib.c (cpp_start_read): Recognise suffixes 'cp' and 'c++'. + +Sun Aug 3 19:18:27 1997 Ralf Baechle + + * Makefile.in (mostlyclean): Remove libgcc1-test. + +Sun Aug 3 19:10:27 1997 Klaus Espenlaub + + * Makefile.in (T): Move to place where it can be overridden. + (install_common): Fix permissions of specs and EXTRA_PARTS files. + +Sun Aug 3 19:07:04 1997 Jan-Jaap van der Heijden + + * gcc.c (default_compilers): Add default entries for Pascal. + +Sun Aug 3 18:38:41 1997 Richard Henderson + + * alpha.c (alpha_return_addr): New function. + (output_epilog): Zero alpha_return_addr_rtx. + * alpha.h (RETURN_ADDR_RTX): Call alpha_return_addr. + +Sun Aug 3 17:27:44 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (INSTALL): Build in $(srcdir). + + * config/linux.h (DEFAULT_VTABLE_THUNKS): New macro. + +Sun Aug 3 17:18:31 1997 Richard Earnshaw (rearnshaw@cambridge.arm.com) + + * expr.c (expand_builtin, case BUILT_IN_RETURN_ADDRESS): Emit warning + if return address cannot be determined. + +Sun Aug 3 17:04:00 1997 Bernd Schmidt + + * stupid.c (stupid_life_analysis): If function receives non-local + goto, don't let any registers live across calls. + + * fold-const.c (merge_ranges): Make sure that if one range is subset + of another, it will always be the second range. Correct (+,-) case to + account for this. + +Sun Aug 3 16:48:30 1997 Paul Eggert + + * c-lex.c (yylex): Remove duplicate check on high bit before + invoking int_fits_type_p. + +Sun Aug 3 16:44:41 1997 Bernd Schmidt + + * reload.c (find_equiv_reg): If goal is a pseudo that got memory, a + store into memory makes it invalid. This was handled in the single + set case, but missing in the PARALLEL case. + +Sun Aug 3 09:13:47 1997 Richard Kenner + + * expr.c (store_field): Return quickly if EXP is ERROR_MARK. + + * c-typeck.c (unary_complex_lvalue): Don't warn about COMPOUND_EXPR + or COND_EXPR if FUNCTION_TYPE. + + * alpha.h (ASM_SPEC): Add -O0. + + * expr.h (clear_storage): Now returns rtx. + (emit_block_move): Likewise; delete duplicate declaration. + * expr.c (clear_storage, emit_block_move): Return address of + dest if calling memset/memcpy. + (expand_builtin, BUILT_IN_MEM{CPY,SET}): Return value from + clear_storage or emit_block_move if present. + + * c-decl.c (start_function): Reset immediate_size_expand on + error return. + +Sat Aug 2 18:50:43 1997 Paul Eggert + + * tree.c (int_fits_type_p): Negative ints never fit unsigned + types, and unsigned ints with top-bit-set never fit signed types. + +Sat Aug 2 16:25:43 1997 Per Bothner + + * Makefile.in (EXTRA_C_OBJS): Removed. + (C_AND_OBJC_OBJS): New. Subsumes EXTRA_C_OBJS and OBJC_CCOMMON. + * objc/Make-lang.in (OBJC_CCOMMON): Removed. + +Sat Aug 2 16:11:57 1997 Doug Evans + + * configure.in: Build .gdbinit for top level build dir here. + (AC_OUTPUT): Pass oldstyle_subdirs to configure.lang. + * configure.lang: Fix building of .gdbinit for oldstyle lang subdirs. + +Sat Aug 2 13:48:15 1997 Ken Raeburn + + * cse.c (cse_insn): Ignore paradoxical SUBREGs unless we are + looking for such. + +Sat Aug 2 13:25:33 1997 Tristan Gingold (gingold@email.enst.fr) + + * calls.c (expand_call): If -fcheck-memory-usage, use pseudo-register, + check indirectly called function is executable, and set rights of + memory for aggregate as write only. + (store_one_arg): If -fcheck-memory-usage, set rights for pushed + stack argument. + * c-decl.c (init_decl_processing): Add + __builtin_aggregate_incoming_address. + * explow.c (expr_size): Call expand_expr with appropriate flag. + * expr.c (expand_builtin, case BUILT_IN_AGGREGATE_INCOMING_ADDRESS): + New case. + (expand_assignment, expand_expr, emit_push_insn, store_expr): + Insert calls to chkr_check_addr, chkr_set_right, and chkr_copy_bitmap + when -fcheck-memory-usage. + (get_push_address, get_memory_usage_from_modifier): New functions. + * expr.h: Add expand_modifier flags. + (chkr_*_libfunc): New decls. + (memory_use_mode): New declaration. + * flags.h (flag_check_memory_usage, flag_prefix_function_name): New + declaration. + * function.c (put_var_into_stack, assign_parms): If + -fcheck-memory-usage, set the rights of pushed variable. + * optabs.c (chkr_{check_addr,set_right}_libfunc): New definitions. + (chkr_{copy_bitmap,check_exec}_libfunc): Likewise. + (init_optabs): Initialize these chkr_*_libfunc. + * stmt.c (expand_computed_goto): If -fcheck-memory-usage, check that + computed address of a goto is executable. + (expand_asm, expand_asm_operands): If -fcheck-memory-usage, + disallow asm statments. + * toplev.c (flag_check_memory_usage, flag_prefix_function_name): New + variable. + (f_options): Add `check-memory-usage' and `prefix_function_name'. + (main): Disable `-fomit-frame-pointer' if `-fcheck-memory-usage' is set + and the machine can't debug without the frame pointer. + * tree.h (built_in_function): Add BUILT_IN_AGGREGATE_INCOMING_ADDRESS. + * varasm.c (make_function_rtl, make_decl_rtl): Add a prefix when + flag_prefix_function_name_usage is set. + (assemble_name): Strip the CHKR_PREFIX. + * alpha.c (alpha_builtin_saveregs): If -fcheck-memory-usage, + set rights of saved registers. + * clipper.c (clipper_builtin_saveregs): Likewise. + * m88k.c (m88k_builtin_saveregs): Likewise. + * pa.c (hppa_builtin_saveregs): Likewise. + * sparc.c (sparc_builtin_saveregs): Likewise. + +Sat Aug 2 08:01:12 1997 Richard Kenner + + * c-decl.c (grokdeclarator): Give error for `long double' and + refine text of some error messages. + + * alpha.h (FLOAT_VALUE_TYPE, INTIFY, FLOATIFY, FLOAT_ARG_TYPE): Define. + * i860.h (FLOAT_VALUE_TYPE): Fix typo; was FLOAT_TYPE_VALLUE. + + * calls.c (store_one_arg): Allow stack_slot to be SP in + ARGS_GROW_DOWNWARD case. + + * c-decl.c (parmlist_tags_warning): Only suppress warning on + union if anonymous. + + * libgcc2.c (_trampoline): Rework last change; both getpagesize + and mprotect are in cygwin32. + + * reload1.c (reload): Add IN_ADDR to IN_ADDR_ADDR when computing + needs since they conflict. + + * print-rtl.c (indent): Move to file level; was static in print_rtx. + (print_inline_rtx): New function. + * reload.c (debug_reload): Rework to make output more compact. + + * dwarfout.c (output_compile_unit_die): Add support for Pascal. + * dwarf2out.c (gen_compile_unit_die): Likewise. + + * c-typeck.c (lvalue_p, case BIND_EXPR, RTL_EXPR): Return 1 if array. + + * Makefile.in (OBJC_OBJC): Delete from here. + + * varasm.c (compare_constant_1, case STRING_CST): Compare TYPE_MODE. + (record_constant_1, case STRING_CST): Record TYPE_MODE. + + * tree.c (contains_this_placeholder_p): Delete. + (contains_placeholder_p): Now contains code from above function. + (contains_placeholder_p, case 'r'): Don't look at offset info. + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Find innermost + matching and don't check contains_placeholder_p. + +Fri Aug 1 17:15:07 1997 Per Bothner + + * objc/objc-act.c (lang_init): Don't check_newline #if USE_CPPLIB. + * c-lex.c (lang_init): Remove (recently moved here). + * c-lang.c (lang_init): Restore, but add #if !USE_CPPLIB. + +Fri Aug 1 11:26:45 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (pa_reorg): Explode ADDR_DIFF_VEC insns too. + +Thu Jul 31 19:37:22 1997 Ian Lance Taylor + + * libgcc2.c (getpagesize): Don't compile if __CYGWIN32__. + +Thu Jul 31 16:04:42 1997 Stan Cox + + * i386.c (output_to_reg, output_fix_trunc): Use scratch memory, + if available, instead of dynamically extending the stack. + (put_condition_code, print_operand): Added reverse_cc to reverse the + comparison when $ah is accessed directly instead of using eflags + + * i386.md (*trunc*): Use scratch memory for output_fix_trunc. + (movsicc_1, movhicc_1) Change alternative 3 to: + jCC L1; mov; jmp L2; L1:mov; L2: + (movsfcc, movdfcc, movxfcc): Force constant operands to memory. + (movsfcc_1, movdfcc_1, movxfcc_1): Change alternative 3 as above. + +Thu Jul 31 16:04:42 1997 Jason Merrill + + * i386.h (MAX_FIXED_MODE_SIZE): Define. + +Thu Jul 31 16:04:42 1997 Robert Lipe + + * i386/sco5.h (SWITCHES_NEED_SPACES) Define. + Required by the COFF (but not ELF) linker. + +Wed Jul 30 15:03:52 1997 Per Bothner + + * demangle.h (DMGL_JAVA): New option to request Java demangling. + * cplus-dem.c: Various changes to produce Java output when passed + DMGL_JAVA. Thus "::" becomes "." and "JArray" becomes "Foo[]". + (main): Support --java and -j flags to set DMGL_JAVA. + +Wed Jul 30 08:56:08 1997 Philip Blundell + + * configure.in (arm-*-*): Replace with arm-*-aout. + * arm/aout.h (SET_ASM_OP): Define by default. + * arm/riscix.h (SET_ASM_OP: Undefine. + * arm.h (CPP_SPEC): Add %(subtarget_cpp_spec). + (SUBTARGET_CPP_SPEC): New macro. + * arm/linux.h: Include aout.h rather than arm.h directly. + (TARGET_CPU_DEFAULT): Define. + ({ASM,CPP}_SPEC): Remove. + * arm/t-linux (MULTILIB_OPTIONS): Use -mapcs-NN instead of -mN. + (LIB1ASMSRC): Use generic ARM version. + (CROSS_LIBGCC1): Define. + * arm/lib1funcs-linux.asm: Remove. + +Tue Jul 29 17:57:47 1997 Per Bothner + + * Add hooks for using autconf-style Makefile.in in language subdirs. + * configure.in (all_outputs, oldstyle_subdirs): New variables. + Pass all_outputs to AC_OUTPUT. + * configure.lang: Only iterate over oldstyle_subdirs. + + * Patches to use cpplib with cc1 #if USE_CPPLIB. + * configure.in (--enable-c-cpplib): New option. + (extra_c_flags, extra_c_objs): New variables. + * Makefile.in (EXTRA_C_OBJS): New variable. + (INTERNAL_CFLAGS): Add @extra_c_flags@. + (C_OBJS): Add $(EXTRA_C_OBJS). + * c-lex.c (generally): Replace getc and ungetc by macros GETC and + UNGETC. Avoid explicit references to finput. + (yy_get_token): New function, that calls cpp_get_token. + (init_parse): New function - calls init_lex. + (finish_parse): New function (called by compile_file). + (GET_DIRECTIVE_LINE): New macro wrapper replaces get_directive_line. + (lang_init): Don't check_newline - already know main_input_filename. + (handle_sysv_pragma): Remove FILE* parameter. + * toplev.c (finput): Remove #if USE_CPPLIB. + (compile_file): #if USE_CPPLIB don't open input file here, + do it in cpp_start_read. Call init_parse instead of init_lex. + At end, call finish_parse instead of fclose(finput). + +Mon Jul 28 15:48:29 1997 Brendan Kehoe + + * integrate.c (expand_inline_function): Use xmalloc instead of + alloca for the LABEL_MAP. + (save_for_inline_copying): Likewise. + +Mon Jul 28 11:22:16 1997 Jason Merrill + + * toplev.c (compile_file): Also emit any deferred TREE_PUBLIC inlines. + (rest_of_compilation): Use decl_printable_name instead of DECL_NAME + to identify functions in the RTL dump files. + + * dwarf2out.c (add_location_or_const_value_attribute): + leaf_renumber_regs_insn. Also eliminate_regs here. + (add_AT_location_description): Not here. Don't emit anything + for a variable that has been optimized away. + (add_const_value_attribute): Likewise. + + * dwarfout.c (location_or_const_value_attribute): + leaf_renumber_regs_insn. Also eliminate_regs here. + (location_attribute): Not here. + + * stor-layout.c (layout_type): Fix ancient code to match ancient + comment. Use mode of field for one-field structs. + +Sun Jul 27 12:09:02 1997 Richard Kenner + + * function.c (put_var_into_stack, trampoline_address): Treat + inline_function_decl like current_function_decl. + * expr.c (expand_expr, case LABEL_DECL): Likewise. + (expand_expr, case SAVE_EXPR): Handle top-level SAVE_EXPR by + moving into current function; abort if in incorrect context. + * fold-const.c (fold_range_test, fold): Avoid making SAVE_EXPR + if at top level. + + * dwarfout.c (ASM_OUTPUT_SOURCE_FILENAME): Delete default value. + + * alpha.h (TARGET_SWITCHES): Add -mno-byte. + + * expr.c (get_inner_unaligned_p): Deleted. + (expand_assignment): Remove special-case of constant array. + (expand_expr, case ARRAY_REF): Likewise, and clean up remaining code. + + * explow.c (probe_stack_range): Do probing with loop if more + than a small number. + +Fri Jul 25 15:42:34 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure.in: Finish fixing calculation if default thread + support is enabled. + +Fri Jul 25 15:30:09 1997 Doug Evans + + * Makefile.in (native): Depend on config.h. + (gcc.o): Depend on Makefile, not config.status. + +Fri Jul 25 10:56:50 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (pa_reorg): If TARGET_BIG_SWITCH, then do not explode + ADDR_VEC insns. Slightly rework code which explodes ADDR_VEC + insns. + * pa.h (TARGET_BIG_SWITCH): Define. + (TARGET_SWITCHES): Add "big-switch" and "no-big-switch". + (CASE_VECTOR_MODE): Use TI or DI depending on TARGET_BIG_SWITCH. + (CASE_DROPS_THROUGH): Remove definition. + (ASM_OUTPUT_ADDR_VEC_ELT): Rewrite to handle TARGET_BIG_SWITCH. + (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * pa.md (casesi): Rework to avoid some potential long branch + problems (also makes generated code faster!). Handle + TARGET_BIG_SWITCH. + (casesi0): Corresponding changes. + +Fri Jul 25 08:36:47 1997 Richard Kenner + + * calls.c: (expand_call): If -fstack-check and temp needed + for arg is too large, use alloca. + * expr.c (expand_expr, case MODIFY_EXPR): Don't preexpand calls + if LHS is an indirect via a constant pointer. + +Thu Jul 24 21:49:11 1997 Pat Rankin + + * bitmap.c (bitmap_operation): Reset CURRENT on deferred deletion. + +Wed Jul 23 23:52:14 1997 Chris Smith + + * convex.h (CHECK_FLOAT_VALUE): Fix OVERFLOW capitalization. + +Wed Jul 23 13:00:47 1997 Richard Earnshaw + + * configure.in (arm-*-netbsd*): Fix typo setting tmake_file. + +Wed Jul 23 06:39:35 1997 Richard Kenner + + * configure.in (alpha*): Put quotes around MASK_GAS. + +Tue Jul 22 15:24:45 1997 Brendan Kehoe + + * tree.c (array_type_nelts): Make sure the domain of TYPE is set + before we try to use it. + +Tue Jul 22 12:26:13 1997 Doug Evans + + * sparc.c (gen_v9_scc): Handle early clobber of result. + * sparc.md (seqdi_special): Don't clobber %xcc. + (snedi_special, seqdi_special_trunc, snedi_special_trunc): Likewise. + (snedi_zero, neg_snedi_zero, seqdi_zero, neg_seqdi_zero): Likewise. + (snedi_zero_trunc, seqdi_zero_trunc): Likewise. Renamed from ..._sp64. + (snedi_zero_trunc_sp32, seqdi_zero_trunc_sp32): Delete. + + * Makefile.in (Makefile): Pass xmake_file, tmake_file to + configure.frag + (distclean): Delete Make-host, Make-target. + * configure.in (host_overrides): Set to Make-host. + (dep_host_xmakefile): Loop over all elements in host_make_file. + (target_overrides): Set to Make-target. + (dep_tmake_file): Loop over all elements in tmake_file. + (configure.frag): Pass dep_host_xmake_file, dep_tmake_file. + * configure.frag: New arguments xmake_files, tmake_files. + Build Make-host, Make-target. + +Mon Jul 21 23:17:44 1997 Paul Eggert + + * objc/Make-lang.in, objc/Makefile.in: Comment out lines containing + just formfeeds. + +Mon Jul 21 14:05:46 1997 Doug Evans + + * Makefile.in (Makefile): Depend on config.status instead + of configure. + (config.status): Depend on configure. Run config.status --recheck + if out of date. + (cstamp-h.in): Use echo instead of touch. + + * reload1.c (reload_cse_mem_conflict_p): Restore handling of + (mem:BLK const0_rtx) meaning all memory is clobbered. + +Mon Jul 21 06:20:10 1997 Andreas Schwab + + * m68k.md (iorsi_zexthi_ashl16): Mark output operand as earlyclobber. + +Sun Jul 20 06:11:30 1997 Richard Kenner + + * configure.in (alpha*-*-*): Set cpu_type to alpha. + Change "alpha-" to "alpha*-" in all entries. + Set target_cpu_default for ev5 and ev56 systems. + Use symbolic names for target_cpu_default. + * alpha.c (override_options): Set default for alpha_cpu + from TARGET_CPU_DEFAULT. + * alpha.h (MASK_CPU_EV5): New macro. + + * tree.c (contains_placeholder_p): Call contains_this_placeholder_p. + (contains_this_placeholder_p): Renamed from contains_placeholder_p. + Added new arg, PL. + Rework to make more consistent, check more codes, and avoid + undefined fields. + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Pick outermost + object in placeholder_list of right type without a PLACEHOLDER_EXPR. + +Sat Jul 19 18:00:01 1997 Richard Kenner + + * alpha.c (override_options): Allow processor of ev56 or 21164a. + (input_operand, case MEM): Correct test involving TARGET_BYTE_OPS. + * alpha.h (SECONDARY_{IN,OUT}PUT_RELOAD_CLASS): Don't need for + QImode or HImode if TARGET_BYTE_OPS. + (ASM_FILE_START): Write a .arch directive. + (STACK_CHECK_BUILTIN): New macro. + * alpha.md ({zero_,}extend[qh]i[dsh]i2): Rework TARGET_BYTE_OPS cases. + (mov[hq]i): Likewise. + (extend[qh]i[hsd]i2x): Add missing cases and fix typo in constraint. + (reload_{in,out}[qh]i): Disable for TARGET_BYTE_OPS. + +Fri Jul 18 23:24:57 1997 Jason Merrill + + * varasm.c (make_decl_rtl): Don't use ASM_FORMAT_PRIVATE_NAME for + local decls with TREE_PUBLIC set. + (bc_make_decl_rtl): Likewise. + +Fri Jul 18 22:16:28 1997 Doug Evans + + * configure.in: Invoke AC_CONFIG_HEADER. + Check for string.h, strings.h, stdlib.h, time.h, unistd.h. + Check for whether malloc/realloc/free need to be declared. + (links): Rename config.h to config2.h. + (AC_OUTPUT): Create cstamp-h. + * Makefile.in (config.in,cstamp-h.in): Add rules for. + (config.h,cstamp-h): Add rules for. + (distclean): Delete config2.h, cstamp-h. + (ALL_CFLAGS): Add @DEFS@. + * aclocal.m4, acconfig.h: New files. + + * Makefile.in (distclean): Delete Make-host, Make-target. + * configure.in (host_overrides): Set to host_xmake_file, don't create + Make-host. + (target_overrides): Set to tmake_file, don't create Make-target. + (language subdir support): Keep together. + + * c-decl.c (duplicate_decls): Set DECL_ABSTRACT_ORIGIN to olddecl + if inline function and not new definition. + + * configure.in: Don't loop trying to configure language subdirs. + Don't pass to configure.lang variables it doesn't use. + * configure.lang: Delete top level directory from loop. + Delete code not useful for language subdirs. + +Fri Jul 18 08:12:53 1997 Bernd Schmidt + + * toplev.c (rest_of_compilation): Call reload_cse_regs here. + * reload1.c (reload): Don't call it here. + (reload_cse_mem_conflict_p): Remove MEM_OFFSET and MEM_MODE args. + (reload_cse_mem_conflict_p, case MEM): Call anti_dependence. + (reload_cse_invalidate_mem): Update call to reload_cse_mem_conflict_p. + (reload_cse_regs): No longer static. + Call init_alias_analysis. + Ignore CLOBBER in a PARALLEL. + +Fri Jul 18 06:44:22 1997 Andreas Schwab + + * objc/Make-lang.in (objc-headers): Fix command for the new build + directory layout, don't pass srcdir variable. + * objc/Makefile.in (copy-headers): Use $(srcdir) from this + makefile, not the parent's. + +Thu Jul 17 16:03:03 1997 Doug Evans + + * configure.lang (EXTRA_HEADERS,EXTRA_PASSES,EXTRA_PARTS): Delete. + (EXTRA_PROGRAMS,EXTRA_OBJS,EXTRA_GCC_OBJS,MD_DEPS): Delete. + (version) Delete duplicate entry. + * configure.in (merged_frags): Delete unused variable. + (extra_headers_list): Move setting outside of subdir loop. + (extra_headers,extra_passes): Don't pass to configure.lang. + (extra_programs,extra_parts,extra_objs): Likewise. + (host_extra_gcc_objs,gxx_include_dir,md_cppflags): Likewise. + +Thu Jul 17 07:00:43 1997 Richard Kenner + + * expr.h (STACK_CHECK_*): Provide default values. + (probe_stack_range): New declaration. + * flags.h (flag_stack_check): Likewise. + * explow.c (allocate_dynamic_stack_space): Call probe_stack_range. + (emit_stack_probe, probe_stack_range): New functions. + * function.c (expand_function_end): If function is non-leaf and stack + checking is requested, emit needed probes. + * reload1.c (reload): If checking stack, verify frame small enough. + * stmt.c (expand_decl): If stack checking, use alloca for large vars. + * toplev.c (flag_stack_check): New variable. + (f_options): Add "stack-check". + + * reorg.c (mark_target_live_regs): Pass FIRST_PSEUDO_REGISTER to + call to EXECUTE_IF_SET_IN_REG_SET. + +Wed Jul 16 14:51:00 1997 Jason Merrill + + * i960.h (ASM_OUTPUT_ALIGNED_BSS): Define. + (ASM_OUTPUT_ALIGNED_LOCAL): Use standard method to convert ALIGN + to power-of-two of bytes. + + * sparc.h (ASM_OUTPUT_ALIGNED_BSS): Define. + * sparc/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Undef before definition. + +Wed Jul 16 14:34:09 1997 Klaus Espenlaub (kespenla@hydra.informatik.uni-ulm.de) + + * calls.c (emit_library_call_value): Initialize all argvec elements. + +Wed Jul 16 14:31:39 1997 Richard Kenner + + * global.c (global_conflicts): Pass FIRST_PSEUDO_REGISTER to + call to EXECUTE_IF_SET_IN_REG_SET. + +Wed Jul 16 10:57:03 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) + + * From Rob Black (r.black@ic.ac.uk) and Mark Brinicombe + (amb@physig.ph.kcl.ac.uk): + * configure.in (arm-*-netbsd*): New configuration. + * arm/netbsd.h, arm/t-netbsd, arm/xm-netbsd.h: New files. + +Wed Jul 16 10:57:03 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) + + * arm.c (tune_flags): New variable. + (target_{cpu,fpe}_name): Delete. + (arm_fpu_arch): New variable. + (arm_select): Also allow -march=... to configure just the + architecture. + (all_procs): Allow armv{2,2a,3,3m,4,4t} for use with -march=. + (arm_override_options): Handle -march=, but don't let -mcpu= + and -mtune= match the architecture names, since we can only + tune for an implementation. Rework selection of tuning options + for floating point. + (use_return_insn): Support interworking with Thumb code. + (arm_rtx_costs): Rework multiply costs so that cost is based on + the tune, not the architecture. + (f_register_operand): New function. + (output_return_instruction): Support interworking with Thumb code. + (output_func_epilogue): Support interworking with Thumb code. + Remove redundant calculation of code_size. Use floating-point + load-multiples if permitted. + (emit_sfm): New function. + (arm_expand_prologue): Use floating-point store-multiples if + permitted. + + * arm.h (CPP_CPU_ARCH_SPEC): Handle -march=... + (TARGET_OPTIONS): Add arch= and fp=. Delete fpe=. + (enum processor_type): Add PROCESSOR_NONE, for use in all_procs table. + (FP_DEFAULT): Default floating point architecture for generic + back-end. + (PREDICATE_CODES): Add f_register_operand. + + * arm.md (*push_fp_multi): New pattern. + + +Tue Jul 15 22:08:47 1997 Jim Wilson + + * Makefile.in (exeext): Set to build_exeext not exeext. + * configure.in (exeext): Delete redundant set and AC_SUBST call. + Change remaining AC_SUBST to use build_exeext instead of exeext. + +Tue Jul 15 15:48:25 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure.in: Fix calculation if default thread support is enabled. + +Tue Jul 15 13:38:46 1997 Mike Meissner + + * rtl.h (replace_regs): Declare. + +Mon Jul 14 16:18:19 1997 Jason Merrill + + * i960.h (ASM_OUTPUT_MI_THUNK): Define. + + * dwarf2out.c (gen_subprogram_die): Remove unreachable and redundant + code. + +Mon Jul 14 14:22:45 1997 Jeffrey A Law (law@cygnus.com) + + * calls.c (emit_library_call): Use right index into argvec array + when iterating over arguments which need to be pushed on the stack. + (emit_library_call_value): Likewise. + +Mon Jul 14 08:17:41 1997 Richard Kenner + + * gcc.c (convert_filename): Fix typo. + +Mon Jul 14 08:10:12 1997 Andreas Schwab + + * configure.in: Clear headers and lib2funcs before re-reading + config-lang.in. + + * m68k/linux.h (LINK_SPEC): Fix last change. + +Mon Jul 14 08:03:38 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure.in (sparc-*-linux-gnu{*,libc1*}): Add sparc/t-linux. + * sparc/t-linux: New file. + + * alpha/elf.h (LINK_SPEC): Fix typo. + * configure.in (alpha-*-linux-gnu*): Set tmake_file. + * alpha/t-linux: New file. + +Mon Jul 14 07:41:37 1997 Philippe De Muyter + + * m68k.c (output_{and,ior,xor}si3): New functions from patterns bodies. + * m68k.h (output_{and,ior,xor}si3): New extern declarations. + * m68k.md (adddi3, subdi3): Allow constant operand. + (anddi3, iordi3, xordi3): New patterns. + ({and,ior,xor}si3_internal): Use corresponding output_???si3 function. + +Mon Jul 14 07:33:11 1997 Fila Kolodny + + * configure.in (*-*-gnu*): Add crt{begin,end}S.o to extra_parts. + +Mon Jul 14 07:26:36 1997 Craig Burley + + * varasm.c (assemble_variable): If low part of size + doesn't fit in an int, variable is too large. + +Mon Jul 14 06:51:37 1997 Mike Meissner + + * bitmap.{h,c}: New files. + * Makefile.in (OBJS): Add bitmap.o. + (BASIC_BLOCK_H): New make variable for basic-block.h, bitmap.h. + ({flow,combine,regclass,local-alloc,reload1,reorg,sched}.o): Use + BASIC_BLOCK_H variable instead of basic-block.h. + * basic-block.h (*REG_SET): Delete old implementation; use bitmap.h. + (regset_{size,bytes}): Delete. + (regs_live_at_setjmp): Declare. + (EXECUTE_IF_SET_AND_RESET_IN_REG_SET): Delete. + * flow.c (init_regset_vector): Make global; don't take basic block + times # of pseduos as argument. + (life_analysis): Change all init_regset_vector calls. + Use free_regset_vector to release arrays only flow uses at end. + (allocate_for_life_analysis): Change init_regset_vector call. + Don't set regset_{size,bytes}. + (free_regset_vector): Call FREE_REG_SET to release any + memory allocated by each vector. + (propagate_block): Call FREE_REG_SET on dead/live. + (mark_used_regs): Don't use REGSET_ELT_TYPE anymore. + * output.h (allocate_for_life_analysis): Add declaration. + (regno_uninitialized, regno_clobbered_at_setjmp): Likewise. + (dump_flow_info, flow_analysis): Likewise. + * regclass.c (init_reg_sets): Invoke INIT_ONCE_REG_SET. + (allocate_reg_info): Invoke MAX_REGNO_REG_SET. + (regset_release_memory): Free basic_block_live_at_start storage. + * reorg.c (mark_target_live_regs): Delete unused variables. + * sched.c (schedule_block): Free space associated with + reg_pending_sets and old_live_regs. + (schedule_insns): Free bb_{dead,live}_regs on first pass. + (sched_analyze_insn): Use EXECUTE_IF_SET_IN_REG_SET and then clear. + * toplev.c (rest_of_compilation): Call regset_release_memory. + +Mon Jul 14 00:14:13 1997 Jason Merrill + + * toplev.c (main): Prefer DWARF 2 or stabs with -ggdb. + * ns32k/tek6000.h (PREFERRED_DEBUGGING_TYPE): DBX_DEBUG. + * alpha.h (PREFERRED_DEBUGGING_TYPE): SDB_DEBUG. + * mips.h (PREFERRED_DEBUGGING_TYPE): SDB_DEBUG. + +Sun Jul 13 15:11:08 1997 Richard Kenner + + * stupid.c (stupid_mark_refs): If setting reg set only in this + insn and not referenced, make REG_UNUSED note. + +Sun Jul 13 14:03:19 1997 Michael Meissner + + * gcc.c (process_command): If -save-temps and -pipe were specified + together, don't do -pipe. + +Sun Jul 13 12:27:03 1997 Doug Evans + + * gcc.c (main): Handle blank in version_string when comparing + with compiler_version. + +Sat Jul 12 01:53:55 1997 Jason Merrill + + * sparc.c (output_function_prologue): Fix offset from CFA. + (sparc_flat_output_function_prologue): Likewise. + +Fri Jul 11 09:49:15 1997 Jeffrey A Law (law@cygnus.com) + + * mips.c (epilogue_reg_mentioned_p): Delete unused function. + (mips_epilogue_delay_slots): Likewise. + (function_epilogue): Greatly simplify. + (mips_expand_epilogue): If we have a null prologue/epilogue, + then use a normal return insn. Emit blockage insns before + stack pointer adjustments. + (mips_can_use_return_insn): Renamed from simple_epilogue_p. All + callers changed. Do not use return insns if $31 is live in the + function or if generating profiling information. + * mips.h (DELAY_SLOTS_FOR_EPILOGUE): Delete. + (ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise. + * mips.md (return): Remove expander and change the pattern to + look like a standard "return" insn. + (return_internal): Show use of $31 explictly. + (epilogue expander): Enable. + +Thu Jul 10 13:04:53 1997 Doug Evans + + * cccp.c (INO_T_EQ): Return 0 for MSDOS. + + * Makefile.in (CC): Use autoconf value. + +Tue Jul 8 18:08:00 1997 Jim Wilson + + * dwarf2out.c (gen_subprogram_die): When handling declarations, test + DECL_CONTEXT not decl_class_context before equate_decl_number_to_die. + +Tue Jul 8 16:47:13 1997 Michael Meissner + + * rs6000.md (movsi define_split): Use unsigned HOST_WIDE_INT, + not unsigned. + +Sat Jul 7 00:01:41 1997 Jim Meyering + + * i386/t-sol2 (crt[1in].o): Also depend on $(GCC_PASSES). + +Fri Jul 4 11:45:39 1997 Jason Merrill + + * dwarf2out.c (DWARF_CIE_HEADER_SIZE, DWARF_FDE_HEADER_SIZE, + size_of_cfi, size_of_fde, calc_fde_sizes, next_fde_offset, + cie_size): Lose. + (ASM_OUTPUT_DWARF_STRING): Move earlier. + (INCOMING_FRAME_SP_OFFSET): Provide default. + (initial_return_save): Adjust for CFA offset. + (dwarf2out_frame_debug): Lookup initial CFA offset when setting up. + (output_call_frame_info): Use label subtraction for length fields. + Add pointer to exception region information in for_eh case. + (dwarf2out_do_frame): New fn. + (dwarf2out_frame_init): Use INCOMING_FRAME_SP_OFFSET. + (dwarf2out_frame_finish): Don't bother emitting .debug_frame for + non-Irix targets. Just emit .eh_frame. + (output_die): Refer to an FDE with label subtraction. + * i386.h (INCOMING_FRAME_SP_OFFSET): Define. + * defaults.h (DWARF2_UNWIND_INFO): Define if + INCOMING_RETURN_ADDR_RTX is provided. + * final.c (final): Don't call dwarf2out_frame_debug unless we are + doing dwarf 2. + +Thu Jul 3 17:37:52 1997 Jim Wilson + + * fp-bit.c (unpack_d): Check fraction not sign to distinquish QNaN. + +Wed Jul 2 09:48:03 1997 Michael Meissner + + * loop.c (strength_reduce): Make sure register does not exceed the + table size when looking up the last UID. + +Wed Jul 2 07:47:44 1997 Nick Burrett + + * genoutput.c (process_template): Place increment expression + outside of putchar function call. + +Wed Jul 2 06:56:52 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sparc/linux.h (LIBGCC_SPEC): Removed. + (CC1_SPEC): Add %{profile:-p}. + ({CPP,LIB,LINK}_SPEC): Choose glibc 1 or 2 depending on USE_GNULIBC_1. + * configure.in (sparc-*-linux-gnulibc1*): New configuration. + + * configure.in (powerpc-*-linuxgnu*): Default thread_file is posix. + Set xmake_file to x-linux. Add extra_parts. + * rs6000/linux.h (LINK_SPEC): Defined. + + * m68k/linux.h (LINK_SPEC): Pass -shared for -shared. + ({CPP,LINK}_SPEC): Choose for glibc 1 or 2 depending on USE_GNULIBC_1. + * configure.in (m68k-*-linux-gnu*): Default thread_file is `posix'. + (m68k-*-linux-gnulibc1): New configuration. + + * alpha/elf.h (LINK_SPEC): Change ld-gnu.so.1 to ld-linux.so.2. + * configure.in (alpha-*-linux-gnu*): Default thread_file is `posix'. + +Wed Jul 2 06:12:37 1997 Richard Kenner + + * alpha.md (divsi3, modsi3, udivsi3): Comment out. + (extendsfsd2_no_tp): Add alternative with output in MEM, input in REG. + + * configure.in (*-linux*): Add "-gnu" to names to match. + + * libgcc2.c (_trampoline): Add stdcall attribute to VirtualProtect + on i386. + + * objc/objc.gperf: Renamed from gperf. + +Wed Jul 2 05:42:19 1997 Andreas Schwab + + * objc/Make-lang.in ($(srcdir)/objc/objc-parse.c): Fix command + to use the right file names. + +Tue Jul 1 23:25:42 1997 Richard Kenner + + * reorg.c (redundant_insn): If INSN or possible match has REG_UNUSED + note, don't have match. + +Tue Jul 1 18:36:24 1997 Doug Evans + + * mips.c (mips_output_external): Don't output .extern's for + variables in user specified sections unless they're .sbss/.sdata. + +Tue Jul 1 18:30:26 1997 Jim Wilson + + * cse.c (find_best_addr): Add missing rtx_cost arguments. + + * fp-bit.c (float_to_usi): Move code for negative numbers before code + for infinity. Modify infinty code to only handle positive infinities. + +Tue Jul 1 11:16:41 1997 Robert Lipe + + * fixinc.sco: Restore pwd after copy. + Convert declaration of abs in math.h to prototype. + Fix static functions in sys/stat.h for C++. + +Tue Jul 1 10:55:47 1997 Michael Meissner + + * rs6000.md ({add,ior,xor}si3): Change to use define_expand wrapper + and split add/ior/xor of large constants early. + (andsi3): Remove 6/29 code to do and of large constants. + (nor, nand, eqv, maskir): Add names to all logical define_insns. + +Tue Jul 1 09:03:35 1997 Jeffrey A Law (law@cygnus.com) + + * h8300.h (BIGGEST_FIELD_ALIGNMENT): Remove definition. + * mips.h (BIGGEST_FIELD_ALIGNMENT): Likewise. + +Mon Jun 30 14:58:00 1997 Jeffrey A Law (law@cygnus.com) + + * sh.c (sh_expand_epilogue): Emit blockage insn before cutting + back stack. + +Sun Jun 29 11:27:07 1997 Michael Meissner + + * rs6000.h (TARGET_FLAGS): Add -m{,no-}update to suppress + creating load/store with update instructions, and also + -m{,no-}fused-madd to suppress the generation of fused add and + multiply instructions. Move debug flags to TARGET_OPTIONS. + (GO_IF_LEGITIMATE_ADDRESS): Don't allow PRE_{INC,DEC} if -mno-update. + (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto. + (rs6000_debug_{name,stack,arg}): Add declarations. + (toc_initialized): Likewise. + (got_no_const_operand): Likewise. + (PREDICATE_CODES): Add got_no_const_operand. + (toc_section): Make toc_initialized a global. + (RTX_COSTS): Set appropriate costs for add, logical operators that + are really two instructions. + + * rs6000.c (rs6000_debug_{name,stack,arg}): Add definitions. + (rs6000_override_options): Process debug flags. + (toc_initialized): Global to say toc initialized. + (small_data_operand): Use #if TARGET_ELF, not #ifdef TARGET_SDATA. + (rs6000_init_expanders): Likewise. + (SMALL_DATA_RELOC): Likewise. + (got_no_const_operand): Recognize SYMBOL_REF and LABEL_REF. + (rs6000_makes_calls): System V profiling doesn't count as a call. + (rs6000_stack_info): Likewise. + (rs6000_output_load_toc_table): Take register number argument to + determine register to load. Generate correct code if more than + one toc table is done in System V due to profiling or non-local + gotos. If System V toc is not initialized, initialize it now. + (rs6000_allocate_stack_space): Move code from output_prolog to + allocate stack space. Take -mno-update into account. + (output_prolog): Call rs6000_allocate_stack_space. Only set + rs6000_pic_func_labelno if not profiling. + (output_function_profiler): Implement System V profiling. + (and_operand): Don't call reg_or_short_operand. + (rs6000_finalize_pic): If not optimizing, insert a USE of the GOT + register as the last insn. + + * rs6000.md (load/store update): Take -mno-update into account. + If -msoft-float, support SF load/store with update to GPR regs. + (allocate_stack): Take -mno-update into account. + (add/subtract + multiply instructions): Take -mno-fused-madd into + account. + (nonlocal_goto_receiver): Specify register # to load. + ({add,and,ior,xor}si3): Recognize operation done with full 32 bit + constant, splitting latter if need be. + (andsi3 define_split): Fix up splitting andsi3 of large constant. + ({ior,xor}si3 define_split): Use GEN_INT to create integer rtx + values. + (movsi_got{,_internal}): Split the load of a CONST into load of + the SYMBOL_REF/LABEL_REF and an add. + (movsi): Know that addsi3 can handle large values now for NT. + + * sysv4.h (TARGET_SDATA): Remove explicit bit for -msdata. + (SUBTARGET_OVERRIDE_OPTIONS): Likewise. + (ASM_OUTPUT_ALIGNED_LOCAL): Likewise. + (SUBTARGET_SWITCHES): Indicate -m{,no-}sdata doesn't set any flags. + (ASM_SPEC): Only pass -m{,no-}reg-names if assembling .s/.S files. + (CC1_SPEC): If -msdata, invoke compiler with -msdata=default. + (PROFILE_BEFORE_PROLOGUE): Likewise. + (RS6000_MCOUNT): Define as "_mcount". + (toc_section): Make toc_initialized a global. + +Fri Jun 27 19:01:11 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * config/t-linux-gnulibc1: New file. + * configure.in (i[3456]86-*-linux*): Default thread_file is `posix'. + (i[3456]86-*-linux*gnulibc1): New case. + * config/linux.h (LIB_SPEC): Choose for glibc 1 or 2 depending + on USE_GNULIBC_1. + * i386/linux.h (CPP_SPEC, LINK_SPEC): Likewise. + +Fri Jun 27 19:00:52 1997 Ralf Baechle + + * config/linux.h (PREFERRED_DEBUGGING_TYPE): Undefine before define. + +Fri Jun 27 18:35:04 1997 Alan Modra + + * configure.in: Clean up Make-{host,target,hooks} in all + subdirs, not just '.'. + * Makefile.in (distclean): Delete */Make-{host,target,lang,hooks}. + +Fri Jun 27 18:27:11 1997 Fila Kolodny + + * config/xm-gnu.h (fcntl.h): Only include if not building libgcc.a. + +Fri Jun 27 18:17:44 1997 Doug Evans + + * configure.frag: Rewrite. + + * objc/Make-lang.in (OBJC_CCOMMON): Object files don't go in srcdir. + (OBJC_OBJS): Likewise. + (OBJC_O): Likewise. + (objc-parse.o, objc-act.o): Fix rules. + (objc/libobjc files): Fix rules. + +Fri Jun 27 13:23:38 1997 Andrew Cagney + + * fp-bit.c (float_to_si): Correct return value when Inf. + +Fri Jun 27 10:47:09 1997 Scott Christley + + * Makefile.in (DLLTOOL): Define. + * objc/Make-lang.in (libobjc_entry.o, libobjc_s.a, libobjc.dll): + New targets. + (objc.install-normal): Install Objective-C runtime as a DLL. + (objc.mostlyclean): Clean up files used to build DLL. + * objc/libobjc.def: New file. + * objc/libobjc_entry.c: New file. + + * objc/sendmsg.c (search_for_method_in_list): No longer static. + + * Makefile.in (GCC_THREAD_FILE): Renamed from OBJC_THREAD_FILE. + * configure.lang (GCC_THREAD_FILE): Likewise. + * configure.in (--enable-threads): New parameter. + * objc/Make-lang.in (OBJC_THREAD_FILE): New definition.e + * objc/config-lang.in: Print message about ObjC thread file. + + * cccp.c (INO_T_EQ): Define for Win32 but not Cygwin32. + * i386/mingw32.h: New file. + * i386/xm-mingw32.h: New file. + * configure.in (i[3456]86-*-mingw32): New target. + * protoize.c (link): Eliminate definition on Win32. + + * objc/thr-posix.c (__objc_thread_yield): Use sched_yield instead. + +Fri Jun 27 10:36:41 1997 J"orn Rennecke + + * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): + Round up when calculating possible end address. + +Wed Jun 25 19:54:29 1997 Jim Wilson + + * unroll.c (final_giv_value): Verify that bl->initial_value is + invariant before trying to use it. + +Wed Jun 25 18:13:05 1997 Michael Meissner + + * rs6000/sysv4.h (WCHAR_TYPE{,_SIZE}): Make wchar_t long as per + ABI spec. + +Wed Jun 25 16:56:16 1997 Jason Merrill + + * sparc.h (INCOMING_RETURN_ADDR_RTX): Define. + (DBX_REGISTER_NUMBER): Fix frame pointer regno for -mflat. + * sol2.h (DBX_REGISTER_NUMBER): Likewise. + * sparc.c (save_regs): Emit dwarf2 frame debug info. + (output_function_prologue, sparc_flat_save_restore, + sparc_flat_output_function_prologue): Likewise. + + * dwarf2.h (enum dwarf_call_frame_info): Add DW_CFA_GNU_window_save. + * dwarf2out.c (dwarf_cfi_name, output_cfi): Support it. + (dwarf2out_cfi_label): Make non-static. + (initial_return_save): Support PLUS. + (dwarf2out_window_save, dwarf2out_return_save, + dwarf2out_return_reg): New fns. + + * dwarf2out.c (SECTION_FORMAT): Use PUSHSECTION_FORMAT, if defined. + (DEBUG_INFO_SECTION): Rename from DEBUG_SECTION. + (DEBUG_LINE_SECTION): Rename from LINE_SECTION. + * mips/iris6.h: Likewise. + +Wed Jun 25 16:25:41 1997 Scott Christley + + * Makefile.in (GCC_PASSES): Don't define with $(exeext). + * configure.in ({cc,stage_prefix}_set_by_configure): Eliminate extra + comma and don't pass value to configure.lang. + * objc/Make-lang.in (objc-runtime): Add objc-headers. + + * configure.in: Execute configure.frag in a shell. + + * configure.in (cross_overrides, build_overrides): Default to + /dev/null to help platforms where sed cannot handle empty filenames. + + * Reorganize thread implementation to make a clearly defined + front-end/back-end interface. + * objc/thr-{decosf1,irix,mach,os2,posix,pthreads,single}.c: Completely + rework according to new interface. + * objc/thr-{solaris,win32}.c: Likewise. + * objc/thr.c: Likewise. + * objc/thr.h: Define front-end/back-end interface functions and + structures. + +Wed Jun 25 16:14:10 1997 Ovidiu Predescu + + * Complete implementation of +load. + * objc/init.c (objc_send_load): New function. + (objc_class_tree): New structure. + (create_tree_of_subclasses_inherited_from): New function. + (__objc_tree_insert_class): New function. + (objc_tree_insert_class): New function. + (objc_preorder_traverse): New function. + (objc_postorder_traverse): New function. + (__objc_tree_print): New function. + (__objc_destroy_class_tree_node): New function. + (class_is_subclass_of_class): New function. + (__objc_exec_class): Allocate class tree list and load hash table. + (__objc_send_message_in_list): Rewrite using hash table. + (__objc_send_load): Remove calls to _objc_load_callback. + (objc_send_load): Make static. Create Tree of classes resembling + class hierarchy for all modules. Call __objc_send_load on all of + the modules in __objc_module_list. + (__objc_create_classes_tree): New function. + + * objc/encoding.h (method_get_sizeof_arguments): Fix typo. + * objc/objc-api.h (OBJC_ERR_BAD_STATE): New error code. + On NeXT redefine object_copy and object_dispose to avoid + a conflict with those defined in system library. + * objc/selector.c (__objc_register_instance_methods_to_class): New + function. + * objc/runtime.h: Likewise. Add missing function prototypes. + +Wed Jun 25 15:09:01 1997 Richard Kenner + + * Makefile.in (Makefile): Execute configure.frag from srcdir. + + * Makefile.in (configure): Target is $(srcdir)/configure. + +Tue Jun 24 15:18:14 1997 Jim Wilson + + * m68k.h (LIMIT_RELOAD_CLASS): Define. + + * recog.c (constrain_operands): When checking earlyclobbers, use + operands_match_p instead of rtx_equal_p. + + * dwarfout.c (field_byte_offset): Check for object_offset_in_bits + greater than bitpos_int and recompute object_offset_in_bytes if true. + + * mips.md (movdi_internal): Add x/J alternative. + (movdi_internal2): Add x/J alternative; change a/I to a/J. + (movsi_internal1, movsi_internal2): Change x/I alternative to x/J. + +Tue Jun 24 08:49:56 1997 Jeffrey A Law (law@cygnus.com) + + * pa.h (ASM_OUTPUT_SECTION_NAME): Fix typo. + +Mon Jun 23 22:48:00 1997 Jim Wilson + + * unroll.c (find_splittable_givs): Set splittable_regs_updates to + biv_count for reduced givs. + +Mon Jun 23 10:51:53 1997 Jeffrey A Law (law@cygnus.com) + + * mn10200.c, mn10200.h, mn10200.md: New files for mn10200 port. + * lib1funcs.asm, divmod.c, udivmod.c, udivmodsi4.c: Likewise. + * t-mn10200, xm-mn10200.h, va-mn10200.h: Likewise. + * Makefile.in (USER_H): Add va-mn10200.h. + * varargs.h, stdarg.h: Include va-mn10200.h. + * configure.in (mn10200-*-*): New target. + +Sun Jun 22 06:47:19 1997 Andreas Schwab + + * combine.c (force_to_mode): Don't do anything for ASM_OPERANDS insn. + +Sun Jun 22 06:29:28 1997 J. Kean Johnston + + * ginclude/stdarg.h: Protect va_list definition from SCO headers. + * ginclude/varargs.h: Likewise. + +Sat Jun 21 20:56:23 1997 Scott Christley + + * Make ObjC a front-end language. + * Makefile.in (LANGUAGES, COMPILERS, .PHONY, stmp-int-hdrs): Remove + specific references to ObjC compiler and source files. + ({mostly,dist,maintainer,}clean, install-normal): Likewise + (OBJC_OBJS, OBJC, OBJECTIVE-C, cc1obj, objc-runtime): Rules deleted. + (libobjc.a, sublibobjc.a, objc-parse.{o, c, y}): Rules deleted. + (objc-headers, install-libobjc): Rules deleted. + * objc/Make-lang.in: New file; from rules deleted above. + * objc/config-lang.in: New file. + * objc/Makefile.in: Changes to support ObjC as a front-end language; + renamed from Makefile.in. + * objc-act.{c,h}, objc-parse.{c,y}, objc-tree.def: Moved to objc dir. + +Sat Jun 21 07:54:36 1997 Robert Lipe + + * fixinc.sco (math.h): Correct the collision of "exception". + +Sat Jun 21 06:51:40 1997 Peter Gerwinski + + * rs6000.c (output_epilog): Name is "GNU Pascal", not all caps. + +Sat Jun 21 06:29:19 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * gcc.c (main): Check for and read ${libdir}/gcc-lib/specs to + override the default specs. + +Fri Jun 20 17:20:15 1997 Jim Wilson + + * mips.c (output_block_move): When loading addresses into registers, + add checks for ABI_N32 and ABI_64. + (mips_expand_prologue): Add check for SImode in code splitting + tsize_rtx when it is large_int. + +Fri Jun 20 09:07:31 1997 Russell King + + * configure.in (arm-*-linuxaout): New target. + * arm/lib1funcs-linux.asm, arm/linux-gas.h: New files. + * arm/linux.h, arm/t-linux, arm/xm-linux.h: New file. + * xm-linux.h: Undef some macros before defining them. + +Thu Jun 19 21:18:20 1997 Jim Wilson + + * dwarf2out.c (output_line_info): Always use DW_LNE_set_address instead + of DW_LNS_fixed_advance_pc for line number addresses. + (size_of_line_info): Adjust size calculation as per above change. + (text_end_label): Make it static. + +Thu Jun 19 14:55:49 1997 Brendan Kehoe + + * toplev.c (xmalloc): Only give the fatal msg if SIZE is non-zero. + +Sun Apr 27 23:19:13 1997 Ulrich Drepper + + * libgcc2.c (__eh_type): Remove `extern' to make this a definition. + +Wed Jun 18 18:10:16 1997 Per Bothner + + * dbxout.c (dbxout_type_fields): Skip field if DECL_IGNORED_P. + +Wed Jun 18 18:04:33 1997 Mike Stump + + * except.c (end_eh_unwinder): If we have a return instruction, we + have to make sure we use it and don't fall off the end of the + function in the unwinder. + +Wed Jun 18 14:27:58 1997 Mike Stump + + * flow.c (find_basic_blocks): Fix end case bug. + +Tue Jun 17 18:35:57 1997 Mike Stump + + * libgcc2.c (__eh_pcnthrow): Add support -fno-sjlj-exceptions + -fPIC exception handling on the SPARC. + * sparc.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. + * libgcc2.c (__eh_ffetmnpc): Remove. + +Mon Jun 16 20:28:51 1997 Jason Merrill + + * collect2.c (extract_string): Null-terminate. + +Mon Jun 16 14:38:44 1997 Michael Meissner + + * combine.c (set_nonzero_bits_and_sign_copies): Use REG_SET macros + instead of doing bit operations directly. + (try_combine,reg_dead_at_p): Ditto. + * caller-save.c (save_call_clobbered_regs): Ditto. + * reload1.c (reload): Ditto. + * local-alloc.c (update_equiv_regs,block_alloc): Ditto. + * sched.c (schedule_block): Dito. + +Sun Jun 15 20:46:12 1997 Jim Wilson + + * dwarf2out.c (dwarf2out_frame_debug): Handle IOR. + (struct limbo_die_struct): Define. + (TYPE_DECL_IS_STUB): Call decl_ultimate_origin if DECL_ABTRACT_ORIGIN + is set. + (limbo_die_count): Delete. + (libmo_die_list): Define. + (new_die): Add die to limbo_die_list instead of incrementing + limbo_die_count. + (add_AT_location_description): Renamed from add_location_attribute. + New parameter attr_kind. + (add_location_or_const_value_attribute, gen_subprogram_die, + add_bound_info): Change call to add_AT_location_description. + (add_bound_info): Add call to contains_placeholder_p. Ignore + MAX_EXPR and VAR_DECL. + (add_subscript_info): Ignore the index type if it is an unnamed + integral type. + (scope_die_for): Move check for function-local tags after code setting + containing_scope, and add check for non-NULL containing_scope + (add_type_attribute): If unnamed type, use TREE_TYPE instead. + (gen_enumeration_type_die, gen_struct_or_union_type_die): Call + add_child_die if die_parent is NULL. + (gen_subprogram_die): Ifdef out DW_AT_static_link code. + (decls_for_scope): Delete decrement of limbo_die_count. + (dwarf2out_finish): Add code to traverse the limbo_die_list, and + call add_child_die if die_parent is NULL. Delete limbo_die_count code. + * mips.c (mips_expand_prologue): If tsize_rtx is large_int, emit two + insns instead of one splitable insn, setting RTX_FRAME_RELATED_P. + +Fri Jun 13 19:33:35 1997 Brendan Kehoe + + * fixincludes: Also fix AIX NULL macro in sys/{dir,param,types}.h. + +Thu Jun 12 22:53:12 1997 Jim Wilson + + * m68k.md (mov[qhs]i): Remove pair of constraints which allow + offsetable memory addresses to be moved to the same for TARGET_5200. + +Thu Jun 12 15:33:01 1997 Jeffrey A Law (law@cygnus.com) + + * pa.h (SELECT_RTX_SECTION): Place symbolic operands into the + data section. + + * pa.c (emit_move_sequence): Rewrite code to handle arithmetic + involving plabels. + +Wed Jun 11 08:57:14 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * tree.c (unsave_expr_now): Avoid recursing into the parts of + the tree that are RTL. + +Thu Jun 12 09:43:55 1997 Jeffrey A Law (law@cygnus.com) + + * reorg.c (emit_delay_sequence): Call set_new_first_and_last_insn + after the new sequence insn has been spliced into the insn chain. + +Wed Jun 11 23:10:49 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (call, call_value): Use "call" instead of "calls" + for calls to named functions. + +Wed Jun 11 00:22:34 1997 Jim Wilson + + * configure, configure.in: Restore changes from Feb 15 to Apr 13 + lost during conversion to autoconf. + +Tue Jun 10 18:23:35 1997 Mike Stump + + * stmt.c (expand_decl_cleanup): Avoid core dumping when exceptions + aren't on. + +Tue Jun 10 18:22:30 1997 Jason Merrill + + * collect2.c (extract_string): New fn. + (main): Use it. + +Tue Jun 10 17:40:15 1997 Jim Wilson + + * expr.c (emit_group_load): Add case using gen_lowpart. + +Tue Jun 10 17:14:58 1997 Michael Meissner + + * rs6000.c (rs6000_override_options): If -mcpu=403, set -mstrict-align. + + * rs6000/t-ppc{,gas} (MULTILIB_EXTRA_OPTS): Build libraries with + -mstrict-align. + + * configure.in ({powerpc,rs6000}*-*-*): Add embedded targets to + --with-cpu=n support. + +Tue Jun 10 07:06:12 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * flow.c (mark_used_regs): Fix typo in Jun 4 change. + +Mon Jun 9 20:26:26 1997 Jim Wilson + + * Makefile.in (MAYBE_USE_COLLECT2): Renamed from MAYBE_USE_COLLECT. + +Mon Jun 9 19:42:21 1997 Jason Merrill + + * fold-const.c (fold): Don't do COND_EXPR -> MIN_EXPR folding if it + loses information that might be needed by a later use as an lvalue. + +Mon Jun 9 19:10:50 1997 Alexandre Oliva + + * configure.in: Don't override a user's setting for prefix + on platforms that use the native prefix. + +Mon Jun 9 19:00:49 1997 Brendan Kehoe + + * integrate.c (expand_inline_function): Use the mode of FNDECL's + result rtl, not the result type itself, in setting ARRIVING_MODE. + + * reload1.c (reload): Use xmalloc instead of alloca for the label + offsets in OFFSETS_AT and OFFSETS_KNOWN_AT. + +Mon Jun 9 15:16:52 1997 Mike Stump + + * flow.c (find_basic_blocks): Eliminate more dead code, enables + dead throws to be eliminated. + +Mon Jun 9 17:15:50 1997 Stephen L Moshier + + * alpha.c (check_float_value): Underflow and overflow constants + are different for FLOAT_VAX and default targets. + +Mon Jun 9 16:48:21 1997 Scott Christley + + * Makefile.in (Makefile): Process language fragments. + * configure.frag: New file. + * configure.in: Move language fragment processing to configure.lang.e + + * Makefile.in (GCC_PASSES): Prevent all compilers from being + built when only the C compiler is needed. + + * configure.in (cross_overrides, build_overrides): Use absolute + path to GCC top-level source directory. + + * configure.in: Save target alias for language directories. + + * configure.in (with-gxx-include-dir): New parameter for + setting the g++ header file directory. + * Makefile.in (gxx_include_dir): Use autoconf variable. + + * configure.in: Add parameter for setting local prefix. + + * configure.lang: New file. + * configure.in: Move language subdirectory Makefile processing + into configure.lang. + +Mon Jun 9 16:44:47 1997 Jim Wilson + + * sched.c (attach_deaths): Fix typo in Jun 4 change. + +Mon Jun 9 15:13:00 1997 Marc Lehmann (pcg@goof.com) + + * varasm.c (assemble_end_function): Switch back to function + section after outputting constant pool. + +Mon Jun 9 14:47:22 1997 Paul Eggert + + * tree.c (change_main_variant): Remove unused function. + (build_array_type): Remove obsolete references to + change_main_variant. + * c-decl.c (complete_array_type): Likewise. + + * c-common.c (c_build_type_variant): Don't futz with main type + variant of array since C Standard requires main type variant of + array-of-const also be array-of-const. + + * Makefile.in: Comment out lines containing just formfeeds. + + * Makefile.in (distclean): Remove config.bak. + (maintainer-clean): Output warning. + Do not remove `configure'. + +Mon Jun 9 14:44:17 1997 J.T. Conklin + + * configure.in (*-*-netbsd): Restore changes of Apr 13th lost in + autoconf conversion: tmake_file now t-netbsd; delete xmake_file. + +Mon Jun 9 14:39:29 1997 Richard Kenner + + * expr.c (expand_builtin, case BUILT_IN_FRAME_ADDRESS): + Use correct function name in error message. + + * Makefile.in (diff): Exclude bi-parser.h. + + * i386.h (CC1_CPU_SPEC): Renamed, was CC1_SPEC. + (CC1_SPEC): New macro. + (EXTRA_SPECS): Add "cc1_cpu". + * i386/linux.h (CC1_SPEC): New macro. + +Mon Jun 9 13:23:06 1997 Philippe De Muyter + + * m68k/next.h (TARGET_DEFAULT): Use MASK_68040, + not MASK_68040_ALSO. + * m68k/mot3300.h, m68k/ccur-GAS.h (TARGET_DEFAULT): Likewise. + + * m68k.h (MACHINE_STATE_{SAVE,RESTORE}): Test #ifdef __mcf52000__, + not if (TARGET_52000); fixed for mc68000 case. + + * m68k/mot3300.h (CPP_SPEC): Define __mc68020__ if no -m[c]68000 + command-line option given. + +Mon Jun 9 09:19:17 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (target_alias): Substitute with target_alias. + + * final.c (final_scan_insn): Use single_set to check cc_status.flags. + +Mon Jun 9 09:09:07 1997 Andreas Schwab + + * c-common.c (check_format_info): Correct handling of the 'a' flag + which adds another pointer level. + +Sun Jun 8 00:34:25 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (conditional branch insns): Get length right for branches + to targets which can not be reached with a "bl" instruction. + * pa.c (output_cbranch): Handle branches to targets which can not + be reached with a "bl" instruction. + + * pa.md (alternate dbra pattern): Remove incorrect pattern. + +Sat Jun 7 23:30:25 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (struct defer_plab): Renamed to struct deferred_plabel. + Remove "symbol" field and replace with "name" field. + (output_function_epilogue): Don't output deferred plabels here. + (output_deferred_labels): New function. Output them here instead. + (output_call): Rewrite long call support. + * pa.h (ASM_FILE_END): Define. + (LEGITIMATE_CONSTANT_P): Never accept a function_label_operand. + * pa.md (HIGH and LO_SUM of function address): Remove patterns. + +Fri Jun 6 16:09:04 1997 Mike Stump + + * libgcc2.c (__eh_ffetmnpc): Add support for machines that cannot + access globals after throw's epilogue when -fno-sjlj-exceptions is + used. + * rs6000.c (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. + * mips.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. + (INITIAL_ELIMINATION_OFFSET): Fix RETURN_ADDRESS_POINTER_REGNUM + for 64 bit words, with 32 bit pointers and variable endianness. + +Fri Jun 6 17:27:58 1997 Mike Meissner + + * regclass.c (allocate_reg_info): Fix off by one error. + +Fri Jun 6 17:17:41 1997 Doug Evans + + * basic-block.h (EXECUTE_IF_SET_IN_REG_SET): Fix setting of scan_rs_. + (EXECUTE_IF_SET_AND_RESET_IN_REG_SET): Likewise. + (EXECUTE_IF_AND_IN_REG_SET): Likewise. + (EXECUTE_IF_AND_COMPL_IN_REG_SET): Likewise. + +Fri Jun 6 15:42:59 1997 Stan Cox + + * i386.c (notice_cc_update): Set CC_FCOMI is this is a float compare. + +Fri Jun 6 15:12:38 1997 Jim Wilson + + * basic-block.h (REG_SET_TO_HARD_REG_SET): Fix typo. + + * sched.c (update_flow_info): When add extra REG_DEAD note for original + dest, handle case where last insn both uses and sets dest. + +Thu Jun 5 22:19:36 1997 Brendan Kehoe + + * fixinc.irix: Add declaration of __vfork to unistd.h. + + * i960/vx960-coff.h (CPP_SPEC): Always define CPU, even if they + use -ansi; the VxWorks headers assume it's always present. + * sparc/vxsparc.h (CPP_SPEC): Define, adding the CPU definition to + what came from sparc.h. + (CPP_PREDEFINES): Don't define it here. + +Thu Jun 5 13:40:33 1997 Mike Meissner + + * basic-block.c (OBSTACK_ALLOC_REG_SET): Rename from + OBALLOC_REG_SET. Add obstack pointer parameter. + + * flow.c (function_obstack): Add declaration. + (life_analysis): Don't allocate the space to hold to vector of + regsets here. + (init_regset_vector): Add pointer parameter and delete space + paramter. Use OBSTACK_ALLOC_REG_SET to allocate. Change callers. + (propagate_block): Use ALLOCA_REG_SET instead of bare alloca. + + * sched.c (schedule_block): Fix typo in yesterday's changes. + * reorg.c (mark_target_live_regs): Ditto. + +Thu Jun 5 09:44:49 1997 Jeffrey A Law (law@cygnus.com) + + * sh.c (trap_exit, sp_switch): New variables. + (print_operand, case '@'): If trap_exit is nonzero, then use + a trapa instead of an rte/rts to exit the current function. + (sh_expand_prologue): Switch stacks at function entry as needed. + (sh_expand_epilogue): Similarly at function exit. + (function_epilogue): Clear trap_exit and sp_switch too. + (sh_valid_machine_decl_attribute): New function. + * sh.h (VALID_MACHINE_DECL_ATTRIBUTE): Define. + (sp_switch): Declare. + * sh.md (sp_switch_1, sp_switch_2): New named patterns. + +Wed Jun 4 18:11:14 1997 Michael Meissner + + * basic-block.h (REGSET_ELT_BITS): Make this explicitly unsigned, so + that division and modulus of REGSET_ELT_BITS uses a pure shift. + (*_REG_SET): New macros to abstract the register set interface. + + * caller-save.c (save_call_clobbered_regs): Use new *_REG_SET + macros. + * flow.c (life_analysis,propagate_block,insn_dead_p): Ditto. + (regno_uninitialized,regno_clobbered_at_setjmp,mark_set_1): Ditto. + (mark_used_regs,dump_flow_info,global_conflicts): Ditto. + global.c (mark_elimination): Ditto. + * reorg.c (mark_target_live_regs): Ditto. + * sched.c (sched_{analyze_{1,insn},note_set}): Ditto. + (birthing_insn_p,attach_deaths,unlink_notes,schedule_block): Ditto. + + * sched.c (sometimes structure): Delete offset, bit fields, replace + with regno. + (new_sometimes_live): Take regno argument, not offset and bit. + Change all callers. + +Tue Jun 3 19:18:36 1997 Brendan Kehoe + + * fixincludes: Fix AIX NULL macro use of void*. + +Tue Jun 3 15:21:04 1997 Jason Merrill + + * sparc.h (ASM_OUTPUT_MI_THUNK): Handle -fpic. + +Mon Jun 2 16:53:53 1997 Michael Meissner + + * loop.c (n_times_{set,used}): Make type int, not short. + (scan_loop): n_times{set,used} are now int pointers. + + * sched.c (sched_reg_n_deaths): Remove unused variable. + (struct sometimes): Make fields int sized, not short. + (schedule_insns): Don't set sched_reg_n_deaths, nobody uses it. + + * regclass.c (allocate_reg_info): Allocate space for reg_renumber, + but don't set unless new argument RENUMBER_P is set. If this is first + call for function and we need to grow space, use free/xmalloc instead + of realloc since we will be initializing the whole array. If number + of registers is < 0, just free up space. + (reg_scan): Update allocate_reg_info call. + * regs.h (allocate_reg_info): Change prototype. + * flow.c (allocate_for_life_analysis): Update allocate_reg_info call. + * local-alloc.c (local_alloc): Call allocate_reg_info to allocate + and initialize the reg_renumber array. + * stupid.c (stupid_life_analysis): Likewise. + +Mon Jun 2 14:50:06 1997 Dave Miller + + * sparc.md (v9 eq/ne cond move patterns): Add early clobber + constraint to destination. + +Fri May 30 11:00:44 1997 Michael Meissner + + * regs.h (reg_info): New structure to group the arrays indexed by + register number created by reg_scan and flow_analysis that are + globally visiable. + (reg_n_info): Pointer to the register information array. + (reg_n_{refs,sets,deaths,calls_crossed}): Delete variables. + (reg_changes_size): Likewise. + (REG_N_{REFS,SETS,DEATHS,CALLS_CROSSED}): New macros to reference + reg_n_info. + (REG_{CHANGES_SIZE,{FIRST,LAST,LAST_NOTE}_UID}): Likewise. + (allocate_reg_info): Add declaration. + + * basic-block.h (reg_basic_block): Delete. + (REG_BASIC_BLOCK): Use reg_n_info structure. + + * caller-save.c: Change all references to the above arrays to use + the corresponding macro to access the reg_n_info array. + * combine.c, cse.c, flow.c, global.c, jump.c, local-alloc.c: Likewise. + * loop.c, regclass.c, reload1.c, sched.c, stupid.c, unroll.c: Likewise. + + * regclass.c (allocate_reg_info): New function to allocate the + reg_info array and initialize the appropriate fields. + (reg_scan): Call it. + * flow.c (allocate_for_life_analysis): Call allocate_reg_info to do + the actual allocation. + +Thu May 29 15:42:59 1997 Stan Cox + + * i386.md (movsfcc_1, movdfcc_1, movxfcc_1): Use singlemove_string + for float conditional move when destination and operands all differ. + + * i386.h (ASM_OUTPUT_REG_{PUSH,POP}): add %% before register name. + + * go32.h (ASM_OUTPUT_ALIGN): Use .p2align, not byte alignments. + +Wed May 28 20:44:00 1997 Mike Stump + + * except.c (push_eh_entry): Eliminate start of exception region + label, as it isn't used. Rename end_label to outer_context. + (expand_eh_region_start_for_decl): Likewise. + (expand_leftover_cleanups): Likewise. + (expand_start_all_catch): Likewise. + * except.h (eh_entry): Likewise. + * except.c (expand_eh_region_end): Likewise. Jump around the nop + that we insert, so that we can optimize it away, if it is unused, + also so that flow analysis can tell if we fall through to the end + of a function or not so that it can know if a function that returns + a value, in fact does or not. + +Wed May 28 10:50:09 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (jump): Handle out of range unconditional jump + when not optimizing. + +Thu May 22 00:57:07 1997 Jeffrey A Law (law@cygnus.com) + + * reload1.c (reload_cse_record_set): Ignore values for SREG if + their mode is narrower than DEST_MODE. + + * pa.h (DFMODE_RETURN_STRING): Define. + (SFMODE_RETURN_STRING): Likewise. + (ASM_DECLARE_FUNCTION_NAME): Use them. + +Wed May 21 23:32:02 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (reload_insi): Handle SUBREG properly. + +Tue May 20 22:32:13 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_def_cfa): Set cfa_reg at the top. + +Tue May 20 16:57:50 1997 Brendan Kehoe + + * cplus-dem.c (do_type): Handle `J'. + (demangle_fund_type): Print "complex" for it. + +Mon May 19 21:01:53 1997 Jim Wilson + + * m68k.c (output_move_qimode): Add coldfire support. + * m68k.h (PUSH_ROUNDING): Add coldfire support. + * m68k.md (scc{,0}_di, seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, + sle, sleu): Add coldfire support. + +Mon May 19 17:53:34 1997 Mike Meissner + + * rs6000.c: (rs6000_pic_func_labelno): New variable. + (rs6000_output_load_toc_table): Use it. + (output_prolog): Store current value. + +Sun May 18 16:32:08 1997 Michael Meissner + + * dbxcoff.h (ASM_OUTPUT_SOURCE_LINE): Use macros + ASM_{GENERATE,OUTPUT}_INTERNAL_LABEL to create/output line + number label. + +Sun May 18 13:55:12 1997 John Vickers (john@rhizik.demon.co.uk) + + * m68k.h (TARGET_SWITCHES): Add new target name, cpu32. + +Sun May 18 13:50:10 1997 Pat Rankin + + * cccp.c (VMS_write, VMS_read): Delete. + (safe_write): If MAX_WRITE_LEN is defined, limit + incremental write attempts to that amount. + (safe_read): Analogous situation for MAX_READ_LEN. + * cpplib.c (safe_read): Likewise. + * vax/xm-vms.h (MAX_WRITE_LEN, MAX_READ_LEN): Define. + + * vax/xm-vms.h (get_dynamic_handler_chain_libfunc): New macro. + (protect_cleanup_actions_with_terminate): New macro. + +Sun May 18 08:50:25 1997 Andreas Schwab + + * m68k/linux.h (ASM_COMMENT_START): Define. + * m68k/linux-aout.h (ASM_COMMENT_START): Define. + + * reload1.c (reload_cse_regno_equal_p): Check for value using more + than one register on a big endian machine. + +Sun May 18 08:39:59 1997 Vince Del Vecchio + + * loop.c (maybe_eliminate_biv_1): In (set (cc0) ) case, + swap compare operands when mult_val < 0 in one additional place. + +Sun May 18 08:33:30 1997 Richard Kenner + + * dwarf2out.c (ASM_COMMENT_START): Add default definition. + + * Makefile.in (maintainer-claean): Delete configure. + +Sun May 18 08:31:59 1997 Scott Christley + + * configure.in: New file. + * Makefile.in: Change to utilize autoconf variables. + * configure: Now an output file. + +Sun May 18 07:48:31 1997 J.T. Conklin + + * m68k.md (mov[qhs]i,movstrict[qs]i, mulsi3): Use 'Q' constraint + for TARGET_5200. + * m68k.h (EXTRA_CONSTRAINT): New macro. + + * m68k.h (TARGET_SWITCHES): Add 68020-60. + Mask out bits which indicate a particular processor when a different + processor is selected. + (MASK_68040_ALSO): Remove. + (MASK_68040): Change to be a single bit. + + * m68k.h (TARGET_ALIGN_INT, MASK_ALIGN_INT): New macros. + (BIGGEST_ALIGNMENT): Determine according to TARGET_ALIGN_INT. + (TARGET_SWITCHES): Add align-int and no-align-int. + + * m68k.md (mov[qhs]i}): Add pair of constraints which allow + offsetable memory addresses to be moved to the same for TARGET_5200. + + * m68k.c (output_move_strict{hi,qi}): New functions. + * m68k.h (output_move_strict{hi,qi}): Declare. + * m68k.md (movstrict*): Changed into define_expands. + Split insns into m68k and coldfire specific versions with appropriate + constraints. + +Sun May 18 07:26:40 1997 Philippe De Muyter + + * libgcc2.c (atexit): Cast malloc and realloc calls. + +Sat May 17 16:26:51 1997 Bernd Schmidt + + * final.c (profile_function): Call function_section, not + text_section. + +Sat May 17 16:01:00 1997 Philippe De Muyter + + * cse.c (notreg_cost): New function, extracted from COST macro. + (COST): Use notreg_cost. + +Sat May 17 15:13:23 1997 Richard Kenner + + * cse.c (cse_insn): Don't record a SRC that's a MEM and the same + as a REG_EQUIV note if DEST is set more than once. + +Fri May 16 14:50:57 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (output_move_double): Handle loading a general register + from a scaled indexed memory address. + * pa.md (movdf, movdi): Allow scaled loads into general registers. + +Fri May 16 13:31:08 1997 Mike Stump + + * rs6000.c (rs6000_stack_info): Only do eabi setup for "main", + when main is the global main, not some nested routine that + happens to be called main. + +Thu May 15 17:19:50 1997 Mike Stump + + * except.c (expand_start_all_catch): If the machine needs to + perform any actions at the start of an expcetion handler that + hasn't already been done, use gen_exception_receiver to emit it. + (expand_leftover_cleanups): Likewise. + * alpha.md (exception_receiver): Use it. + * pa.h (exception_receiver): Use it. + +Thu May 15 08:36:59 1997 Jeffrey A Law (law@cygnus.com) + + * dbxout.c (dbxout_function_end): Don't subtract one from + the end of function scoping stab. + +Wed May 14 23:27:09 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (adddi3, subdi3): Remove expanders and patterns. + +Wed May 14 18:51:35 1997 Mike Stump + + * function.c (expand_function_end): Make sure we finish off any + leftover exception handlers. + +Tue May 13 14:07:01 1997 Mike Stump + + * expr.c (expand_builtin_setjmp): Remove setting of + current_function_has_nonlocal_goto, as this isn't a goto. + +Tue May 13 14:47:40 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) + + * arm.h (CPP_SPEC): Fix typo invoking cpp_endian. + * arm/t-semi (LIB2FUNCS_EXTRA): Build fp-bit.c when compiling + with -msoft-float. + * arm.c: Add prototypes for all static functions. + (output_multi_immediate, int_log2): Make static. + + * arm.h (*_SPEC): Remove all references to mle/mbe. + * arm/coff.h (MULTILIB_DEFAULTS): Likewise. + * arm/t-bare (MULTILIB_OPTIONS): Change options mbe/mle to mbig-endian + and mlittle-endian. + (MULTILIB_MATCHES): Nothing matches that matters. + +Mon May 12 20:42:20 1997 Mike Stump + + * except.c (expand_start_all_catch): If need nonlocal_goto_receiver, + add one at the start of exception handler. + (expand_leftover_cleanups): Likewise. + +Mon May 12 17:36:28 1997 Jeffrey A Law (law@cygnus.com) + + * mips.c (move_operand): Accept any general operand after reload + has started. + +Fri May 9 14:29:33 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (udivmodhi4, divmodhi4): Remove expander, give + corresponding pattern [u]divmodhir4 name. Clear MDR register + in the udivmodhi4 pattern itself. + (clear_mdr): Delete pattern. + +Thu May 8 18:20:30 1997 Richard Earnshaw (rearnshaw@cambridge.arm.com) + + * arm/aout.h (ASM_OUTPUT_LONG_DOUBLE): Delete call to + arm_increase_location. + (ASM_OUTPUT_{DOUBLE,FLOAT,INT,SHORT,CHAR,BYTE,ASCII,SKIP}): Likewise. + (ASM_OUTPUT_ALIGN): Delete all code refering to arm_text_location. + + * arm.c (arm_increase_location, get_prologue_size): Delete. + (arm_naked_function_p): Add declaration. + (arm_pic_register): Define. + (all_procs): Delete entries for arm{60,620,70,7d,7di,700i,710c}; add + entries for arm{7m,7500fe,8}, strongarm and strongarm110. + (arm_override_options): Rework so that configure can properly set + the default processor type. Add a warning that PIC code is not yet + supported. + (legitimate_pic_operand_p, legitimize_pic_address): New functions. + (is_pic, arm_finalize_pic): New functions. + (arm_adjust_cost): New function. + (const_pool_offset, arm_backwards_branch, short_branch): Delete. + (arm_insn_not_targeted): Delete. + (add_constant): If generating AOF syntax, then handle pic specially. + (output_ascii_pseudo_op): Delete calls to arm_increase_location. + (function_really_clobbers_lr): Calls followed by a barrier don't + clobber the link register. + (output_func_prologue): Handle AOF syntax pic code. + (output_func_epilogue): Handle cases where lr_save_eliminated is set. + Delete call to arm_increase_location. + (arm_asm_output_label): Simplify, since we no-longer need to cache the + label's address. + (aof_pic_entry): New function to keep track of pic symbols. + (aof_dump_pic_table): New function. + + * arm.h (TARGET_CPU_arm*, TARGET_CPU_strongarm*, TARGET_CPU_generic): + define. + (CPP_ARCH_DEFAULT_SPEC): Set up based on setting of TARGET_CPU_DEFAULT. + (CPP_SPEC): Split up into sub-rule calls. + (CPP_CPU_SPEC): Add default definition. + (CPP_APCS_PC_SPEC, CPP_APCS_PC_DEFAULT_SPEC): Add definitions. + (CPP_FLOAT_SPEC, CPP_FLOAT_DEFAULT_SPEC): Add definitions. + (CPP_ENDIAN_SPEC, CPP_ENDIAN_DEFAULT_SPEC): Add definitions. + (CC1_SPEC): Map legacy -m[236] onto -mcpu=.. and -mapcs-{26,32} as + appropriate. Similarly for -mbe and -mle to -m{big,little}-endian. + (EXTRA_SPECS): Define. + (enum processor_type): New types for arm8 and strongarm. + (CONDITIONAL_REGISTER_USAGE): Handle flag_pic. + (LEGITIMIZE_ADDRESS): Likewise. + (ADJUST_COST): Define. + (PIC_OFFSET_TABLE_REGNUM): Define. + (FINALIZE_PIC): Define. + (LEGITIMATE_PIC_OPERAND_P): Define. + (OUTPUT_INT_ADDR_CONST): Define. + (ASM_OUTPUT_MI_THUNK): Delete calls to arm_increase_location. + (MASK_RETURN_ADDR): Use TARGET_APCS_32 not TARGET_6. + + * arm.md (attr cpu): Add new cpu types for arm8 and strongarm. + (attr ldsched): New attribute, set if processor has a load_delay slot. + (function_unit core): Rework to handle load delay slots. + (function_unit loader): New function unit. + (movsi): Handle pic. + (pic_load_addr): New expand. + (*pic_load_addr_based_insn, pic_add_dot_plus_eight): New patterns. + (peepholes to cause flow to return to a label after a function call): + Delete, these have been disabled for a while now. + + * arm/riscix.h (CPP_SPEC): Rewrite using new sub-components. + (SUBTARGET_CPU_DEFAULT): Set to TARGET_CPU_arm2. + * arm/riscix1-1.h (CPP_SPEC): Rewrite using new sub-components. + (SUBTARGET_CPU_DEFAULT): Set to TARGET_CPU_arm2. + * arm/semi.h: (CPP_SPEC): Delete. + (PROCESSOR_DEFAULT): Delete. + (CPP_APCS_PC_DEFAULT_SPEC): Define. + * arm/semiaof.h (CPP_SPEC): Delete. + (CPP_APCS_PC_DEFAULT_SPEC): Define. + * arm/t-semi (LIBGCC1_TEST): Don't build it. + (MULTILIB_{OPTIONS,DIRNAMES,EXCEPTIONS}): Build a suitable set of + cross libraries. + (LIBGCC): Set to stmp-multilib. + (INSTALL_LIBGCC): Set to install-multilib. + +Thu May 8 15:20:46 1997 Stan Cox + + * i386.c (output_float_compare): For pentiumpro use fcomip + followed by a float stack pop for "compare;pop;pop" cases. + +Thu May 8 13:20:20 1997 Chris Torek + + * fold-const.c (fold, truth_andor): Disable optimization for + side effects on RHS. + +Wed May 7 15:43:57 1997 Mike Stump + + * except.c (start_dynamic_handler): Fix so we can use __builtin_setjmp, + and default to using __builtin_setjmp instead of setjmp. + * expr.c (expand_builtin_setjmp): New routine, split out from + existing inline code from expand_builtin. + (expand_builtin): Split out code into expand_builtin_setjmp. + * expr.h (expand_builtin_setjmp): Add declaration. + * libgcc2.c (__sjthrow): Default to using __builtin_setjmp instead + of setjmp. + (__sjpopnthrow): Likewise. + * optabs.c (init_optabs): Likewise. + +Wed May 7 18:01:24 1997 Samuel Figueroa + + * rs6000.md (insv): Only combine insert with shift if + remaining source bits >= destination field size. + +Tue May 6 15:48:52 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_begin_prologue): Increment + current_funcdef_number here. + (dwarf2out_end_epilogue): Not here. + +Mon May 5 18:52:32 1997 Jeffrey A Law (law@cygnus.com) + + * h8300.c (notice_update_cc): Use CC_SET_ZN and CC_SET_ZNV. + (shift_one, shift_two): Set CC_NO_CARRY as needed. Remove + references to CC_OVERFLOW_0. + (emit_a_shift): Similarly. + * h8300.h (CC_OVERFLOW_0): Remove. + * h8300.md: Use set_zn and set_znv for cc0 tracking. + (bCC): Restore the comparison is CC_OVERFLOW_UNUSABLE is set and + the comparison needs the overflow bits. + + * mn10300.c (notice_update_cc): Use CC_SET_ZN and CC_SET_ZNV. + * mn10300.h (CC_NO_CARRY): Define. + * mn10300.md: Use "set_zn" and "set_znv" to more accurately + describe cc0 status. + +Fri May 2 17:00:33 1997 Jason Merrill + + * dwarf2out.c: Reorganize, moving .debug_frame support to the top + of the file, and compile it if INCOMING_RETURN_ADDR_RTX is defined + even if DWARF2_DEBUGGING_INFO isn't. + (EH_FRAME_SECTION): New macro. + (output_call_frame_info): Handle .eh_frame variant. + (dwarf2out_def_cfa): Update cfa_*{reg,offset}. + (dwarf2out_frame_debug): Move cfa_*{reg,offset} to file scope. + (dwarf2out_end_epilogue): Increment current_funcdef_number here. + (dwarf2out_decl): Not here. + (dwarf2out_frame_init, dwarf2out_frame_finish): New fns. + (dwarf2out_init, dwarf2out_finish): Call them. + (output_die): Add missing 'case 8:' + (dwarf2out_decl): Revert other context_die = NULL change. + (add_bound_info): Restore default case. + +Fri May 2 15:30:16 1997 Doug Evans + + * m32r.h (LIT_NAME_P): New macro. + (SMALL_NAME_P): Use it. + (ASM_OUTPUT_ALIGNED_COMMON): Don't output to scommon if -msdata=none. + * m32r.c (addr24_operand): Handle literals. + (m32r_output_function_prologue): Use IMMEDIATE_PREFIX. + (m32r_output_function_epilogue): Likewise. Use shorter add insn if + able. + +Fri May 2 14:40:44 1997 David Edelsohn + + * rs6000.h (RS6000_ALIGN): Macro renamed from ALIGN. + * rs6000.c (rs6000_stack_info): Use it. + +Fri May 2 14:15:54 1997 Ian Lance Taylor + + * reload1.c (reload_cse_noop_set_p): When checking the values + equivalent to sreg, make sure the mode is right. + +Fri May 2 12:53:03 1997 Jeffrey A Law (law@cygnus.com) + + * reload1.c (reload_cse_invalidate_regno): Properly set + the mode for invalidate_regno_rtx. + +Thu May 1 14:57:35 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (call_internal_symref): Fix typo. + +Thu May 1 14:44:17 1997 Jim Wilson + + * mips.c (mips_asm_file_start): Use new macro TARGET_FILE_SWITCHING. + (mips_asm_file_end): Likewise. + * mips.h (TARGET_FILE_SWITCHING): Define. + (NO_DBX_FUNCTION_END): Define. + +Thu May 1 09:08:40 1997 Andreas Schwab + + * m68k.c (output_addsi3): Replace "\\;" by "\n\t" in + assembler templates. + +Thu May 1 09:00:42 1997 Richard Kenner + + * integrate.c (subst_constants, case SUBREG): Cancel changes once + done with result. + +Wed Apr 30 19:45:56 1997 Jim Wilson + + * mips.c (override_options): Set mips_split_addresses only if + TARGET_SPLIT_ADDRESSES is set. + * mips.h (MASK_SPLIT_ADDR, TARGET_SPLIT_ADDRESSES): New macros. + (TARGET_SWITCHES): Add -msplit-addresses, -mno-split-addresses. + * configure (mips*-*-ecoff*, mips*-*-elf*): Set MASK_SPLIT_ADDR + bit in target_cpu_default2. + + * flags.h (current_function_is_thunk): Add extern to declaration. + + * dbxout.c (dbxout_function): Test NO_DBX_FUNCTION_END at run time + instead of compile time. + + * unroll.c (set_dominates_use): In second loop, add check for copy_end. + + * mips.md (paradoxical_extendhidi2, paradoxical_extendqidi2): New + patterns. + +Wed Apr 30 02:23:24 1997 Jason Merrill + + * output.h (named_section): Add reloc argument. + (DECL_READONLY_SECTION): New macro. + * varasm.c (named_section): Add reloc argument, pass it to + ASM_OUTPUT_SECTION_NAME. + (UNIQUE_SECTION, UNIQUE_SECTION_P): Provide defaults. + (function_section): Pass reloc argument to named_section. + (variable_section, exception_section): Likewise. + (output_constant_def_contents): Likewise. + (assemble_start_function): Use UNIQUE_SECTION_P. UNIQUE_SECTION is + now a statement. + (assemble_variable): Likewise. + * mips/iris6.h (ASM_OUTPUT_SECTION_NAME): Add reloc arg, + use DECL_READONLY_SECTION. + * psos.h, ptx4.h, a29k.h, alpha/elf.h, arm/coff.h, h8300.h: Likewise. + * i386/go32.h, i386/sco5.h, m68k/coff.h, mips/elf64.h: Likewise. + * mips/netbsd.h, pa.h, rs6000/sysv4.h, sh.h, sparc/sysv4.h: Likewise. + * config/svr4.h (SELECT_SECTION): Use DECL_READONLY_SECTION. + (ASM_OUTPUT_SECTION_NAME): Likewise, add reloc argument. + (MAKE_DECL_ONE_ONLY): Just set DECL_WEAK. + (UNIQUE_SECTION, UNIQUE_SECTION_P): Define. + * i386/cygwin32.h (UNIQUE_SECTION_P): Define. + (SUPPORTS_ONE_ONLY): Define. + (MAKE_DECL_ONE_ONLY): Lose. + (ASM_OUTPUT_SECTION_NAME): Add reloc arg, use DECL_READONLY_SECTION. + * i386/winnt.c (i386_pe_unique_section): Add reloc arg, + use DECL_READONLY_SECTION. + + * mips/iris6.h (CTORS_SECTION_ASM_OP): Change aligment based on ABI. + (DTORS_SECTION_ASM_OP): Likewise. + +Tue Apr 29 16:08:07 1997 Jeffrey A Law (law@cygnus.com) + + * pa/lib1funcs.asm (divnorm, modnorm, exitdiv): Fix code to + negate SImode values. + +Tue Apr 29 12:54:14 1997 Mike Stump + + * except.c (expand_eh_region_start_tree): Add DECL argument so we + can better track why the region was made for error reporting. + * except.h (expand_eh_region_start_tree): Likewise. + * tree.h (expand_dhc_cleanup): Likewise. + (expand_dcc_cleanup): Likewise. + * except.c (expand_eh_region_start_for_decl): New routine. + * except.h (expand_eh_region_start_for_decl): Likewise. + * stmt.c (expand_decl_cleanup): Add DECL to call of + expand_eh_region_start_tree. + (expand_dcc_cleanup): Likewise. + (expand_dhc_cleanup): Likewise. + (expand_start_case): Switches introduce conditional contexts. + (expand_start_case_dummy): Likewise. + (expand_start_case_dummy): Likewise. + (expand_end_case): Likewise. + +Tue Apr 29 11:45:09 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_decl): Undo earlier change. + (constant_size): Likewise. + (gen_subprogram_die): Handle NULL context_die. + + * mips/iris6.h (ASM_OUTPUT_CONSTRUCTOR): Fix for -mabi=64. + (ASM_OUTPUT_DESTRUCTOR): Likewise. + +Mon Apr 28 09:10:19 1997 Jeffrey A Law (law@cygnus.com) + + * h8300.c (push_order, pop_order): Add missing initializer entries. + +Fri Apr 25 19:39:43 1997 J"orn Rennecke + + * h8300.c (output_adds_subs): Check for adding 0. + +Fri Apr 25 14:52:31 1997 Jim Wilson + + * configure (i[3456]86-*-freebsdelf*, i[3456]86-*-freebsd*): Use + t-freebsd instead of x-freebsd. + * i386/t-freebsd: Renamed from x-freebsd. + +Fri Apr 25 12:16:20 1997 Stan Cox + + * go32.h (DBX_*): Use definitions from config/dbxcoff.h instead. + +Fri Apr 25 11:55:54 1997 Jason Merrill + + * i386/cygwin32.h (MULTIPLE_SYMBOL_SPACES): Define. + +Thu Apr 24 18:32:56 1997 Jason Merrill + + * i386/winnt.c (i386_pe_unique_section): New fn. + * i386/cygwin32.h (UNIQUE_SECTION): Define. + (MAKE_DECL_ONE_ONLY): Define. + (ASM_OUTPUT_SECTION_NAME): Support DECL_ONE_ONLY. + + * c-decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL. + +Thu Apr 24 17:11:23 1997 Jim Wilson + + * m68k.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Add + TARGET_5200 support. + +Thu Apr 24 16:39:25 1997 Richard Kenner + + * stmt.c (pushcase_range): Check for null range first. + +Wed Apr 23 23:06:28 1997 Ian Lance Taylor + + * reload1.c (reload_cse_record_set): Use push_operand to check for + changes to the stack pointer. + +Wed Apr 23 19:56:01 1997 Jason Merrill + + * calls.c (expand_call): If we're in a thunk, pass through invisible + references instead of making a copy. + * flags.h: Add current_function_is_thunk. + * function.c: Likewise. + (init_function_start): Initialize it. + (push_function_context_to): Save it. + (pop_function_context_from): Restore it. + * function.h (struct function): Add is_thunk. + +Wed Apr 23 17:47:25 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (secondary_reload_class): Handle more cases where we + need secondary reloads. + (impossible_plus_operand): Accept anything that involves addition + of the stack pointer. + * mn10300.md (reload_insi): Always load the stack pointer into + the destination (which is always an address register). + * mn10300.h (STORE_FLAG_VALUE): Remove definition. + * xm-mn10300.h: Declare malloc, realloc, calloc and free. + +Wed Apr 23 14:28:30 1997 Mike Stump + + * expr.h (sjthrow_libfunc): Add support for setjmp/longjmp based + exception handling. + ({sjpopnthrow,terminate,setjmp,longjmp}_libfunc): Likewise. + (get_dynamic_handler_chain_libfunc): Likewise. + * expr.c (expand_expr, case TRY_CATCH_EXPR): Likewise. + (expand_expr, case POPD{C,H}C_EXPR): Likewise. + * stmt.c (mark_block_as_eh_region): Likewise. + (mark_block_as_not_eh_region): Likewise. + (is_eh_region, conditional_contex, expand_start_bindings): Likewise. + (expand_end_bindings, expand_{decl,dcc,dhc}_cleanup): Likewise. + (expand_cleanups): Likewise. + * tree.h (mark_block_as_eh_region): Likewise. + (mark_block_as_not_eh_region, is_eh_region): Likewise. + conditional_context, expand_dhc_cleanup): Likewise. + * except.c (exception_via_longjmp): Likewise. + (protect_cleanup_actions_with_terminate): Likewise. + (current_function_d{h,c}c, add_partial_entry): Likewise. + (get_dynamic_{handler,cleanup}_chain): Likewise. + (start_dynamic_{cleanup, handler}): Likewise. + (expand_eh_region_start{,_tree}, expand_eh_region_end): Likewise. + (emit_throw, expand_leftover_cleanups): Likewise. + (expand_{start,end}_all_catch, protect_with_terminate): Likewise. + ({start,end}_eh_unwinder, init_eh_for_function): Likewise. + ({save,restore}_eh_status, exception_optimize): Likewise. + * optabs.c ({sjthrow,sjpopnthrow,terminate,setjmp}_libfunc): Likewise. + ({longjmp,get_dynamic_handler_chain}_libfunc): Likewise. + (init_optabs): Likewise. + * except.h: Likewise. + * libgcc2.c (__default_terminate): Likewise. + (__terminate, __get_dynamic_handler_chain, __sjthrow): Likewise. + (__sjpopnthrow): Likewise. + * toplev.c (f_options): Likewise. + * tree.def (TRY_CATCH_EXPR, POPDHC_EXPR, POPDCC_EXPR): Likewise. + * pa.h (JMP_BUF_SIZE): Define. + * sparc.h (JMP_BUF_SIZE): Define. + + * expr.h (cleanups_this_call): Transform uses of cleanups_this_call + into uses of the cleanups managed by the block code + (expand_start_bindings and friends). Remove defer_cleanups_to and + expand_cleanups_to, and use start_cleanup_deferal and + end_cleanup_deferal instead. Add exception_region, + target_temp_slot_level, conditional_code, + last_unconditional_cleanup and cleanup_ptr to struct nesting to + facilitate conditional cleanups. + * expr.c (cleanups_this_call, init_expr): Likewise. + ({save,restore}_expr_status, store_expr): Likewise. + (expand_expr, {defer,expand}_cleanups_to): Likewise. + (do_jump, case TRUTH_{AND,OR}IF_EXPR): Likewise. + (do_jump, case COND_EXPR): Likewise. + * stmt.c (struct nesting): Likewise. + (expand_return, expand_start_bindings, expand_end_bindings): Likewise. + (expand_cleanups, {start,end}_cleanup_deferal): Likewise. + * tree.h (start_cleanup_deferal): Likewise. + (end_cleanup_deferal): Likewise. + * calls.c (expand_call): Likewise. + * function.h (struct function): Likewise. + * except.c (asynchronous_exceptions): Support + -fasynchronous_exceptions. + (can_throw): Likewise. + * toplev.c (f_options): Likewise. + + * flags.h (flag_short_temps): Remove support for short temps. + * calls.c (expand_call): Likewise. + * toplev.c (flag_short_temps): Likewise. + + * stmt.c (expand_start_target_temps): Add for convenience. + (expand_end_target_temps): Likewise. + * except.c (jumpif{,not}_rtx): Likewise. + + * stmt.c: Remove all traces of empty_cleanup_list. + +Wed Apr 23 17:26:40 1997 Ian Lance Taylor + + * reload1.c (reload_cse_mem_conflict_p): Don't assume that a + SUBREG can not conflict with a MEM. + +Wed Apr 23 09:48:58 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (cmphi): Fixed when next CC user is unsigned. + (mov[hq]i-[23]): New patterns for mem-indirect moves. + (movhf,movtqf): Corrected. + * 1750a.c (memop_valid): Memory indirection now valid. + (nonindirect_operand): Remove. + (print_operand): Fix the 'J' output modifier. + * 1750a.h (FRAME_POINTER_REQUIRED): Not required. + (INITIAL_FRAME_POINTER_OFFSET,FIX_FRAME_POINTER_ADDRESS): Undefine. + (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Honor -fomit-frame-pointer. + (ELIMINABLE_REGS,CAN_ELIMINATE,INITIAL_ELIMINATION_OFFSET): Defined. + (PREFERRED_RELOAD_CLASS): Corrected. + (CONST_COSTS,ADDRESS_COST,REGISTER_MOVE_COST,MEMORY_MOVE_COST): + Slight adjustments. + (ASM_APP_ON,ASM_APP_OFF): Corrected. + * ms1750.inc (DUCR.M,DUC.M): Defined. + +Wed Apr 23 09:41:35 1997 Andreas Schwab + + * reload.c (push_reload): Fix last arg of call to find_dummy_reload. + +Wed Apr 23 09:29:14 1997 Richard Kenner + + * configure (i[3456]86-next-*, m68k-next-nextstep{2,3}*): + Remove out_file and add extra_objs. + * config/nextstep.c: Add includes for config.h, stdio.h, and flags.h. + * {i386,m68k}/t-next (nextstep.o): New rule. + * m68k/next.h: Remove include of machmode.h. + * {i386,m68k}/next.c: Files deleted. + +Tue Apr 22 20:45:29 1997 Jason Merrill + + * sparc.h (DBX_CONTIN_LENGTH): Shrink to 1000. + +Tue Apr 22 18:21:20 1997 Jim Wilson + + * dwarf2out.c (gen_variable_dir): Add test for DW_AT_declaration to + the old_die if statement, and delete assertion for it. + (decl_ultimate_origin): Remove last change. + +Tue Apr 22 10:22:27 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_prologue): End the current sequence before + counting the tst insns in the current function. Start a new + one before emitting any prologue instructions. + + * mn10300.h (REGISTER_MOVE_COST): Bump up cost of moves in the + same class. + + * mn10300.md (untyped_call): New expander. + +Mon Apr 21 16:30:21 1997 Richard Kenner + + * cse.c (fold_rtx, case PLUS): When seeing if negative of constant + is around, make sure not dealing with largest negative. + +Mon Apr 21 13:57:53 1997 Jim Wilson + + * mips/t-ecoff: Set TARGET_LIBGCC2_CFLAGS instead of LIBGCC2_CFLAGS. + + * m68k.c (output_addsi3): New function. From addsi3 pattern. + * m68k.h (output_addsi3): Add declaration. + * m68k.md (movqi+2): Add address registers. + (movxf+1): Disable for TARGET_5200. + (movxf+2): New pattern for TARGET_5200. + (addsi3): Add define_expand. Move code to output_addsi3. + (addsi3_internal): Renamed from addsi3. Disable for TARGET_5200. + (addsi3_5200): New pattern for TARGET_5200. + +Sun Apr 20 10:45:35 1997 Richard Kenner + + * fold-const.c (operand_equal_p): Constants are not equal if there + has been an overflow. + + * toplev.c (compile_file): Shorten "branch-probabilities" in + output of times. + + * alpha/vms.h (MOD[SD]I3_LIBCALL): Call ots$rem, not ots$mod. + (DWARF2_DEBUGGING_INFO): Define. + + * alpha.c (alpha_need_linkage): Call get_identifier. + + * rs6000.c (rs6000_output_load_toc_table): New function. + (output_prolog): Call it instead of doing it directly. + * rs6000.md (nonlocal_goto_receiver): New pattern. + + * dwarf2out.c: Major cleanup; mostly reformatting. + Include expr.h. + Undefine inline ifndef __GNUC__; never define to include static. + Add "static" to header of all inlined functions. + Add declarations for all static functions, with prototypes. + (addr_const_to_string): Use HOST_WIDE_INT_PRINT_* macros. + (add_AT_*, new_{die,loc_descr,cfi): Don't check for xmalloc + returning zero. + (modified_type_die): Add missing parm on recursive call. + ({reg,based}_loc_descriptor): Add missing arg to call to new_loc_descr. + (add_const_value_attribute): Use REAL_VALUE_TYPE for fp calculations. + (output_call_frame_info): Add missing arg to output_cfi call. + (dwarf2out_def_cfa): Local variable OLD_REG must be unsigned long. + * Makefile.in (dwarf2out.o): Includes expr.h. + + * dwarf2out.c: Cast first arg in all calls to bzero to char *. + (decl_ultimate_origin): Return NULL if equal to decl. + (constant_size): Never return more than 4. + (value_format, case 8): New case. + (dwarf2out_frame_debug): Use HARD_FRAME_POINTER_REGNUM. + (based_loc_descr): Likewise. + (add_bound_info): Delete default case. + Add cases for CONVERT_EXPR and NON_LVALUE_EXPR; treat like NOP_EXPR. + Change NOP_EXPR to to recursive call. + (add_type_attribute): Ignore unnamed subtype of integral or FP. + (gen_subprogram_die): Use reg_loc_descriptor. + (dwarf2out_decl): Ignore nested functions. + + * fix-header.c, protoize.c, gcov.c: Use symbolic codes for exit. + + * final.c (profile_function): Only call ASM_OUTPUT_REG_{PUSH,POP} + if defined. + + * expr.c ({move,clear}_by_pieces_1, expand_assignment): Ensure + we have unshared rtx before changing flags. + (store_{constructor,field}): Likewise. + (expand_expr, case COMPONENT_REF): Likewise. + (store_expr): Check if TEMP and TARGET are same with rtx_equal_p. + + * emit-rtl.c (change_address, init_emit): Delete forward references. + (rtl_obstack, stack_depth, max_stack_depth): Delete extern decls. + +Fri Apr 18 18:25:52 1997 Jim Wilson + + * function.c (instantiate_decls): For DECL_INCOMING_RTL, use max + of type size and mode size in instantiate_decl call. + + * fixincludes (sys/lc_core.h): Fix OSF1/4.x namespace pollution. + +Wed Apr 16 19:36:53 1997 Jason Merrill + + * dwarf2out.c (add_bound_info): Use a DIE instead of a location + expression for variable bounds. Trust a MEM rtx even when + optimizing. + (DWARF_FRAME_RETURN_COLUMN): Default to FIRST_PSEUDO_REGISTER. + + * expr.c (expand_expr, case RTL_EXPR): If there is no sequence, + don't set it to const0_rtx. + * tree.c (array_type_nelts): Don't return any SAVE_EXPRs. + +Mon Apr 14 18:12:57 1997 David Edelsohn + + * rs6000.h (RS6000_ITRUNC, RS6000_UITRUNC): Prepend underscores. + (RS6000_MCOUNT): New macro. + (ASM_FILE_START): Use RS6000_MCOUNT. + * rs6000.c (output_function_profiler): Use RS6000_MCOUNT. + * rs6000/aix31.h (RS6000_{ITRUNC,UITRUNC,MCOUNT}): New macros. + +Mon Apr 14 14:37:27 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (can_use_return_insn): Include outgoing argument + area in size computation. + (expand_prologue): Likewise. No longer diddle with sequences. + Put register saves just before outgoing argument area. + (expand_epilogue): Similarly. + (impossible_plus_operand): New function. + * mn10300.h (FRAME_POINTER_REQUIRED): Never require a frame pointer. + (ACCUMULATE_OUTGOING_ARGS, OUTGOING_REG_PARM_STACK_SPACE): Define. + (impossible_plus_operand): Declare. + * mn10300.md (reload_insi): New expander to handle pathological + reload cases. + (addsi3): Fix CC status. + + * mn10300.h (FUNCTION_VALUE): Return addresses in $a0. + (FUNCTION_VALUE_REGNO_P): Corresponding changes. + * mn10300.md (call_value_internal): Allow output to be in an + address register. + + * calls.c (emit_library_call): Handle saving of stack slots when + ACCUMULATE_OUTGOING_ARGS is defined. + (emit_library_call_value): Likewise. + +Mon Apr 14 14:48:15 1997 Jim Wilson + + * sh.md (xtrct_left, xtrct_right): New patterns. + + * combine.c (get_last_value_validate): New argument insn. + Add check for memory reference clobbered by later store. + (record_value_for_reg, get_last_values): Pass in new argument. + +Mon Apr 14 14:03:18 1997 Mike Meissner + + * configure (powerpc --with-cpu=x): Add embedded powerpcs and 604e. + + * rs6000.c (rs6000_override_options): Recognize -mcpu=801, -mcpu=823, + and -mcpu=604e. + +Sun Apr 13 18:43:16 1997 Ian Lance Taylor + + * reload1.c (invalidate_regno_rtx): New static variable. + (reload_cse_invalidate_regno): Check whether any earlier registers + have a multi-register value which includes the register we are + invalidating. + (reload_cse_regs): Initialize invalidate_regno_rtx. + + * reload1.c (reload_cse_record_set): When setting reg_values for a + copy from one register to another, use gen_lowpart_common to + adjust the value correctly if the mode changes. + +Sun Apr 13 17:24:48 1997 Doug Evans + + * expr.c (move_block_from_reg): Try using integral mov operation first. + + * calls.c (expand_call): When copying unaligned values into a register, + zero out the register first rather than emitting a clobber. + + * integrate.c (copy_rtx_and_substitute): If FRAME_GROWS_DOWNWARD + and regno == VIRTUAL_STACK_VARS_REGNUM, round size of stack slot up + before calling assign_stack_temp. + +Sun Apr 13 15:29:38 1997 Ulrich Drepper + + * enquire.c (fake_f_rep): Add missing element name in cast. + +Sun Apr 13 15:20:05 1997 J"orn Rennecke + + * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): + Fix sign bug in last change. + +Sun Apr 13 15:03:38 1997 J.T. Conklin + + * m68k.md (movstricthi): Remove extraneous comparisons. + + * configure (*-*-netbsd): tmake_file now t-netbsd; delete xmake_file. + * config/t-netbsd: New file. + * config/x-netbsd: Removed. + +Sun Apr 13 14:51:25 1997 Richard Earnshaw (rearnsha@armltd.co.uk) + + * cse.c (canon_reg, cse_insn): Don't examine insn_n_dups if + recog_memoized fails to find a match. + +Sun Apr 13 14:17:26 1997 Ian Lance Taylor + + * reload1.c (reload_cse_noop_set_p): Add insn parameter. Change + all callers. If deleting the instruction, remove any earlier + REG_DEAD note for DREG. + (reload_cse_simplify_set): If simplifying, remove any earlier + REG_DEAD note for the new source register. + +Sun Apr 13 14:12:08 1997 Pat Rankin + + * libgcc2 (L_bb, L_exit): Use 0 rather than NULL for null pointers. + +Sun Apr 13 12:53:03 1997 Andreas Schwab + + * m68k/linux.h (ASM_SPEC): Define. + (STRUCT_VALUE_REGNUM, STATIC_CHAIN_REGNUM, INITIALIZE_TRAMPOLINE): + Remove definitions, undoing the change of Mar 20 1996. + + * m68k.c (output_move_qimode): Optimize pushing one byte if source + operand does not use stack pointer. + + * m68k.md (rotl[shq]i3, rotl[hq]i3+1): Don't directly modify operand. + + * m68k.md (tstdi): Add missing parallel around the pattern. + +Sun Apr 13 12:51:00 1997 Paul Eggert + + * cccp.c, cpplib.c (do_include): Diagnose #import and + #include_next if pedantic and if not in a system header. + (do_warning): #warning now causes an error if -pedantic-errors + is given; this is needed since #warning isn't ANSI. + + * toplev.c (lang_options): Add -Wundef, -Wno-undef. + * c-decl.c (c_decode_option): Ignore -Wundef, -Wno-undef. + + * cccp.c, cexp.y (warn_undef): New variable. + * cpplib.h (struct cpp_options): New member warn_undef. + (CPP_WARN_UNDEF): New macro. + + * cccp.c (main), cpplib.c (cpp_handle_options): Set warn_undef + from -Wundef and -Wno-undef. + + * cppexp.c (cpp_lex) New arg skip_evaluation. + (cpp_parse_expr): Pass skip_evaluation to cpp_lex. + Abort if cpp_lex returns NAME. + + * cexp.y (exp), cppexp.c (cpp_lex): Optionally warn about undefined + identifiers that evaluate to 0. + +Sun Apr 13 11:43:16 1997 Joel Sherrill + + * configure (hppa1.1-*-rtems*): New target. + * mips/rtems.h: New file. + +Sun Apr 13 09:48:26 1997 Richard Kenner + + * gcov.c (print_usage, open_files): Use FATAL_EXIT_CODE. + * collect2.c (fatal_perror, fatal, collect_wait): Likewise. + + * sparc.c (eligible_for_delay_slot): Clean up and make to agree + precisely with patterns in MD file. + * sparc.md (*return_addsi): Change condition to exclude both ints. + (*return_adddi): Likewise. + (*return_subsi): New pattern. + + * recog.c (validate_replace_rtx_1, case MINUS): New case. + +Sun Apr 13 08:20:24 1997 Thomas Bushnell + + * i386/gnu.h (TARGET_VERSION): Redefine. + +Sun Apr 13 08:15:31 1997 Bernd Schmidt + + * c-typeck.c (lookup_field): Don't recurse unless FIELD is + a RECORD_TYPE or UNION_TYPE. + + * final.c (profile_function): Save the static chain register + around the call to the profiler function. + + * loop.c (invariant_p, case REG): Pointers into frame are not + invariants if function has nonlocal gotos. + * reload1.c (reload): If function has nonlocal label, mark all + caller-saved regs as used. + +Fri Apr 11 16:49:06 1997 Doug Evans + + * m32r.h (REG_ALLOC_ORDER): Restore to original setting. + + * m32r.h (UPPER16_P): Fix calculation. + * m32r.c (two_insn_const_operand): New function. + (m32r_print_operand): Handle 'X'. + * m32r.md (movsi): Tweak. + (*movsi_insn): Output hex value of constants too. + (movsi define_split): Add. + (andsi3,orsi3,xorsi3): Output hex value of constants too. + +Thu Apr 10 18:39:33 1997 Jim Wilson + + * sh.md (sne): Modified to use negc instead of xor. + (sne+1): New define_split for new sne pattern. + * sh.c (output_stack_adjust): Reorganize code for readability. + If size is negative, negate and subtract it instead of adding it. + +Wed Apr 9 13:51:07 1997 J"orn Rennecke + + * sh.c (output_stack_adjust): When splitting an adjustment into two + parts, make sure the stack is aligned at all times. + +Tue Apr 8 12:34:38 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.h (RETURN_ADDR_RTX): Define. + +Mon Apr 7 19:19:57 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (count_tst_insns): New function. + (expand_prologue): Load zero into data and/or address registers + if any are free and the function has optimizable tst insns. + (output_tst): If a suitable register is known to have the + value zero, use it instead of searching for a suitable register. + * mn10300.h (zero_dreg, zero_areg): Declare. + (FRAME_POINTER_NEEDED): Frame pointers are not needed if the + outgoing argument size is zero. + * mn10300.md (movXX): Optimize loading zero into an address + register if possible. Optimize loading a DF/DI mode value + into an address register from a constant memory address. + (addsi3): Provide alternative which doesn't require a matching + inout operand. + (return): Optimize consecutive return instructions. + +Mon Apr 7 17:30:35 1997 J"orn Rennecke + + * mips/iris5.h (SUBTARGET_CC1_SPEC): Define. + (LINK_SPEC, STARTFILE_SPEC): Support -static. + * mips/iris6.h (SUBTARGET_CC1_SPEC): Define. + (STARTFILE_SPEC, LINK_SPEC): Support -static. + * mips.h: (SUBTARGET_CC1_SPEC): Define. + (CC1_SPEC): Add subtarget_cc1_spec. + (EXTRA_SPECS): Add subtarget_cc1_spec. + +Sun Apr 6 12:24:53 1997 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (incscc): Use a match_operand with cc_register to match + the condition code register. + (decscc, *condbranch, *condbranch_reversed, *mov_scc): Likewise. + (*mov_negscc, *mov_notscc, *cond_return): Likewise. + (*cond_return_inverted, *ior_scc, *cond_move): Likewise. + (insv): New expand. + (andsi_notsi_si): Renamed from *andsi_notsi_si. + (andsi_not_shiftsi_si): New insn. + (*minmax_arithsi): Don't match this insn if operand1 is an + eliminable register. + ({sin,cos}*): Delete, since the ARM always emulates these its + faster to call a library function. + (movsicc, *movsicc_insn): Make operand0 an s_register_operand, + and operand3 an arm_not_operand. Use cc_register to match the + condition code register. + (mov[sd]fcc*): Make operand[0,2] s_register_operands, and operand3 + the nonmemory_operand. Use cc_register to match the condition + code register. + (*ifcompare_plus_move): Move before *ifcompare_arith_move. Just do + a split for the output. + (*ifcompare_move_plus): Similarly, but relative + to *ifcompare_move_arith. + (*if_plus_move, *if_move_plus): New patterns. + (*ifcompare_arith_arith): Simplify the alternatives down to just one, + and split the insn before output. + (*if_arith_arith, *if_arith_move, *if_move_arith): New patterns. + (*ifcompare_move_not, *ifcompare_not_move): Simplify and split the + insn before output. + (*if_move_not, *if_not_move): New patterns. + (*ifcompare_shift_move, *ifcompare_move_shift): Simplify and split the + insn before output. + (*if_shift_move, *if_move_shift): New patterns. + (*ifcompare_shift_shift): Simplify and split the insn before output. + (*if_shift_shift): New pattern. + (*ifcompare_not_arith, *ifcompare_arith_not): Simplify and split the + insn before output. + (*if_not_arith, *if_arith_not): New patterns. + (*ifcompare_neg_move, *ifcompare_move_neg): Simplify and split the + insn before output. + (*if_neg_move, *if_move_neg): New patterns. + +Sat Apr 5 20:17:43 1997 Michael Meissner + + * rs6000/sol-ci.asm (_environ): Don't make _envrion a common + variable, the lastest assembler doesn't let common variables also + be a weak symbol. + +Fri Apr 4 18:30:12 1997 Jim Wilson + + * rs6000.md (adddi3): Use non_short_cint_operand instead of + non_add_cint_operand. + +Thu Apr 3 15:08:39 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (can_use_return_insn): Add size of fixed stack space + for function calls into the size of the frame. + (expand_prologue, expand_epilogue): Likewise. + (initial_offset): Corresponding changes.. + * mn10300.h (OUTGOING_REG_PARM_STACK_SPACE): No longer define. + (STACK_POINTER_OFFSET): Define. + * mn10300.md (call, call_value expanders): Don't adjust the stack + pointer here anymore. + + * mn10300.md (ashlsi3): Remove some alternatives which are no longer + needed or desired. + +Thu Apr 3 15:06:53 1997 Jim Wilson + + * local-alloc.c (no_conflict_p): Reject sequences with foreign insns. + + * combine.c (move_deaths): Handle partial REG_DEAD note for + multi-reg hard register. + + * function.c (expand_function_start): Emit queue after expanding + each dynamic parameter type. + + * mips.c (mips_move_2words): Add SIGN_EXTEND support for SYMBOL_REF, + LABEL_REF, and CONST operands. + + * dwarf2out.c: Delete comment referring to README.DWARF. + +Wed Apr 2 17:21:23 1997 Jim Wilson + + * rs6000.md (ashrdi3_power): Mark alternative 0 as early_clobber + output. + + * rs6000.md (abssi3_nopower define_split): Switch operands of MINUS. + (nabssi3_nopower define_split): Likewise. + +Tue Apr 1 19:30:01 1997 Mike Stump + + * libgcc2.c (find_exception_table): Fix to logic to deal with + functions that are in their own section, such as template + instantiations, that cause overlapping EH tables. + +Tue Apr 1 17:16:22 1997 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (USER_H): Add va-mn10300.h + + * ginclude/stdarg.h: Include va-mn10300.h. + * ginclude/varargs.h: Likewise. + * ginclude/va-mn10300.h: New file. + * mn10300.c (expand_prologue): If current_function_varargs is nonzero, + flush d0/d1 back into stack. + (mn10300_builtin_saveregs): New function. + (function_arg, function_arg_partial_nregs): New functions. + (initial_offset): Tweak now that the RP save area is allocated + and deallocated around each call again. + * mn10300.h (FIRST_PARM_OFFSET): Now 4. + (FRAME_POINTER_REQUIRED): Require frame pointer for all non-leaf fcns. + (REG_PARM_STACK_SPACE): Now 8 bytes. + (FUNCTION_ARG_REGNO_P): Update for new parameter passing conventions. + (CUMULATIVE_ARGS, INIT_CUMULATIVE_ARGS): Likewise. + (FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise. + (FUNCTION_ARG_PARTIAL_NREGS): Likewise. + (TRAMPOLINE_TEMPLATE): Don't clobber d0 anymore. + (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes. + (EXPAND_BUILTIN_SAVEREGS): Define. + * mn10300.md (call, call_value patterns): Allocate and deallocate + stack slot for return pointer around each call. + + * mn10300.h (RTX_COSTS): Refine. + (CASE_VALUES_THRESHHOLD, NO_FUNCTION_CSE): Likewise. + * mn10300.c (output_tst): New function. + * mn10300.md (movdi, movdf): Improve code to load constants into regs. + (tst insns): Use output_tst to optimize some cases. Add versions to + encourage more zero extensions instead of sign extensions of HImode + and QImode values. + (divsi3, udivsi3): Remove patterns. Replaced by... + (divmodsi4, udivmodsi4): New expanders/patterns. + (andsi3): Optimize "and" operations with certain constants. + +Tue Apr 1 09:14:29 1997 J"orn Rennecke + + * sh.h: (ADJUST_COSTS): Define. + +Fri Mar 28 17:46:13 1997 Jim Wilson + + * Makefile.in (LANGUAGES): Add gcov. + (OBJS): Add profile.o. + (STAGESTUFF): Add gcov. + (profile.o, gcov.o, gcov): Add rules to build them. + (install-common): Install gcov. + * combine.c (distribute_notes): Handle REG_BR_PROB and REG_EXEC_COUNT + REG_NOTES. + * sparc.h (OVERRIDE_OPTIONS): Check profile_arc_flag. + * final.c (LONG_TYPE_SIZE): Define. + (count_instrumented_arcs): New variable. + (end_final, profile_after_prologue, leaf_function_p): Add support + for profile_arc_flag. + (add_bb): Only call CC_STATUS_INIT if HAVE_cc0. + * flags.h (profile_arc_flag, flag_test_coverage, + flag_branch_probabilities): Declare. + * function.c (expand_function_end): Output NOTE_REPEATED_LINE_NUMBER + for last line of function. + * integrate.c (expand_inline_function): Output + NOTE_REPEATED_LINE_NUMBER after inlined call. + * jump.c (jump_optimize, follow_jumps, mark_jump_label): Disable some + optimizations when flag_test_coverage and there is a line number note + in the way. + (invert_jump): Add REG_BR_PROB when flag_branch_probabililties. + * libgcc2.c (__bb_exit_func): Support gcov style output. + * reorg.c (mostly_true_jump): Use REG_BR_PROB notes when + flag_branch_probabilities. + * rtl.c (note_insn_name): Add NOTE_REPEATED_LINE_NUMBER. + (reg_note_name): Add REG_BR_PROB and REG_EXEC_COUNT. + * rtl.h (enum reg_note): Add REG_BR_PROB and REG_EXEC_COUNT. + (REG_BR_PROB_BASE): Define. + (NOTE_REPEATED_LINE_NUMBER): Define. + * sched.c (update_flow_info): Handle REG_EXEC_COUNT and REG_BR_PROB + notes. + * toplev.c (branch_prob_dump, profile_arc_flag, flag_test_coverage, + flag_branch_probabilities, branch_prob_dump_file, branch_prob_time): + New variables. + (f_options): Add profile-arcs, test-coverage, and + branch-probabilities. + (compile_file): Set branch_prob_time. Pass flag_test_coverage to + init_emit_once. Handle branch_prob_dump. Call init_branch_prob. + Call end_branch_prob. Call output_func_start_profiler. + (rest_of_compilation): Handle branch_prob_dump. Call new + branch_prob pass. + (main): Set branch_prob_dump. + * gcov.c, profile.c, gcov-io.h, gcov.texi: New files. + +Thu Mar 27 16:52:52 1997 Stan Cox + + * i386.h (CPP_CPU_DEFAULT): Define if TARGET_CPU_DEFAULT is not set. + * i386.h (STACK_BOUNDARY): Define to always be 32. + + From J"orn Rennecke + * i386.md: (zero_extendhisi2+[12]): Use true_regnum instead of + REGNO for operand 0. + (zero_extendqisi2+3): Use reg_overlap_mentioned_p instead of REGNO + comparison; use true_regnum instead of REGNO for rtx generation. + +Wed Mar 26 12:34:21 1997 Ian Lance Taylor + + * reload1.c (reload): Call reload_cse_regs. + (reg_values): New static variable. + (reload_cse_invalidate_regno): New static function. + (reload_cse_mem_conflict_p): New static function. + (reload_cse_invalidate_mem): New static function. + (reload_cse_invalidate_rtx): New static function. + (reload_cse_regs): New static function. + (reload_cse_regno_equal_p): New static function. + (reload_cse_noop_set_p): New static function. + (reload_cse_simplify_set): New static function. + (reload_cse_check_clobbered): New static variable. + (reload_cse_check_src): New static variable. + (reload_cse_check_clobber): New static function. + (reload_cse_record_set): New static function. + +Wed Mar 26 07:34:06 1997 Ulrich Drepper + + * ginclude/stdarg.h (__va_copy): New definition. + +Tue Mar 25 13:43:36 1997 Michael Meissner + + * gcc.c (init_spec): If -v, print out that the default spec values + were being used. Fix prototype to reflect no arguments. + (set_spec): If specs has not been set, set it up with the default + specs. + (read_specs): Move to later in the file so that startfile_prefixes + has been declared. Process "%include " to include another + specs file, aborting if the file can't be found. Process + "%include_noerr : to include another specs file, giving no + error if the file can't be found. Process "%rename var1 var2" to + rename a specs variable. Take new argument that indicates whether + we are processing the main file. Only process % commands if this + is not the main specs file. Change callers. + (main): Do not call init_spec if a specs file was found. + (set_spec,read_specs,do_spec_1): If DEBUG_SPECS is defined, print + debug information. + +Tue Mar 25 14:43:58 1997 Doug Evans + + * expr.c (emit_push_insn): Delete emission of CLOBBER + when doing partial push, no longer necessary. + + * c-decl.c (grokdeclarator): Pedwarn qualified void function return + type. + +Tue Mar 25 14:28:15 1997 Richard Earnshaw (rearnsha@armltd.co.uk) + + * reload.c (find_dummy_reload): New parameter earlyclobber. If set + then don't use IN for the reload if it also appears elsewhere in + the insn. All callers changed. + +Tue Mar 25 13:20:18 1997 J.T. Conklin + + * m68k/lb1sf68.asm (udivsi3): Fix hunk from previous patch that + did not apply correctly. + + * m68k.md (tablejump): Use extl to explicitly sign extend + index registeron TARGET_5200. + * m68k/{apollo68.h,coff.h,linux.h,mot3300.h,pbb.h} + (ASM_RETURN_CASE_JUMP): Likewise. + + * m68k.md (mulsi3): Changed into define_expand. Split insn into + m68k and coldfire specific versions with appropriate constraints. + + * m68k.md (movqi): Disable use of address registers for + TARGET_5200. + + * m68k/lb1sf68.asm (__modsi3, __umodsi3): Use mulsl instruction + instead of __mulsi3 function call on the coldfire. + + * m68k.md (bne0_di): Fix typo in last change. + + * m68k.md (xorsi3_5200): Correct constraints. + + * m68k.c (output_move_{si,hi,qi}mode): New functions. + * m68k.h (output_move_{si,hi,qi}mode): Declare. + + * m68k.md (move{si,hi,qi,di}): Changed into define_expands. Split + insns into m68k and coldfire specific versions with appropriate + constraints. + +Tue Mar 25 12:18:41 1997 Richard Kenner + + * Makefile.in (GCC_PASSES): Revert previous change; use cc1$(exeext). + +Mon Mar 24 16:12:20 1997 Doug Evans + + * m32r/*: New files. + * config.sub: Add m32r. + * configure: Add m32r. + * longlong.h: Add m32r support. + * ginclude/{stdarg.h,varargs.h}: Add m32r support. + * ginclude/va-m32r.h: New file. + +Mon Mar 24 15:53:15 1997 Joel Sherrill + + * rs6000/rtems.h: Change to a near clone of the powerpc-eabi target. + * configure (powerpc*-*-rtems): Move before GNU/Linux configuration. + +Mon Mar 24 14:26:37 1997 Gavin Koch + + * ginclude/va-mips.h: For little endian, eabi, objects + less than __va_reg_size are passed in registers. + +Fri Mar 21 00:48:02 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (print_operand): Handle 'N'. + + * mn10300.c (expand_epilogue): Correctly handle functions + with large frames, but no callee register saves. + + * mn1300.md (movdf, movdi): Handle overlapping moves. + + * pa.c (compute_movstrsi_length): Handle residuals correctly. + +Thu Mar 20 13:53:30 1997 Michael Meissner + + * rs6000.c (easy_fp_constant): If -mrelocatable, consider all fp + constants to be hard. + +Mon Mar 20 13:53:30 1997 Jim Wilson + + * rs6000.md (movdf/movsf define_splits): Add SUBREG support. + + * rs6000.c (fp_reg_or_mem_operand): Delete. + * rs6000.h (PREDICATE_CODES): Remove fp_reg_or_mem_operand. + (fp_reg_or_mem_operand): Delete declaration. + * rs6000.md (movsf_hardfloat): Use nonimmediate_operand instead + of fp_reg_or_mem_operand. + +Thu Mar 20 08:52:27 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (cmpsi): Handle comparing a register with + itself by adding zero to the reg. Z bit for such an insn is + inverted. + * mn10300.c (notice_update_cc): Handle CC_INVERT. + + * pa.c (emit_move_sequence): Don't lose for a secondary reload + to the SAR register if the input is a MEM with an offset that won't + fit in 14bits. + +Wed Mar 19 17:10:44 1997 Andreas Schwab + + * m68k/linux.h (ASM_OUTPUT_MI_THUNK): Define. + +Wed Mar 19 16:59:34 1997 Paul Eggert + + * cccp.c, cpplib.c (do_error, do_warning): Fix memory leak. + + * cccp.c (output_line_directive): Do not output negative line + numbers when analyzing directives like `#line 0'. + + * cexp.y (parse_number, yylex), cccp.c (rescan), cpplib.c + (cpp_get_token): Unless -lang-c89 is specified, allow C9X-style + hexadecimal floating-point numbers as preprocessor numbers. + * cccp.c (c89): New decl. + (main): Set it to 1 if -lang-c89. + * cpplib.h (struct cpp_options): New member c89. + (CPP_C89): New macro. + * cpplib.c (unsafe_chars): `p' is unsafe before `-' or `+', since it + might generate a C9X-style hexadecimal floating-point number. + (cpp_handle_options): Set c89 option to 1 if -lang-c89. + +Tue Mar 18 17:05:57 1997 Stan Cox + + * i386.h (STACK_BOUNDARY): Determine according to TARGET_ALIGN_DOUBLE. + + * i386.c (override_options) Make the default alignment 4 for 486, + otherwise 2. + + * i386/freebsd-elf.h (CPP_SPEC): Remove TARGET_CPU_DEFAULT reference. + * i386/linux{,-aout,-oldld}.h (CPP_SPEC): Likewise. + + * i386/go32.h (DBX_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE, + NO_STAB_H, ASM_FILE_START, DBX_BLOCKS_FUNCTION_RELATIVE, + DBX_FUNCTION_FIRST, DBX_OUTPUT_MAIN_SOURCE_FILE_END, + ASM_OUTPUT_SOURCE_LINE): Added to support stabs. + (ASM_OUTPUT_SECTION_NAME): Support section attribute. + +Tue Mar 18 16:12:28 1997 Jim Wilson + + * final.c (shorten_branches): Split all insns before computing insn + lengths. + (final_scan_insn, case default): If HAVE_ATTR_length defined, call + abort for any insn that has a '#' output template. + + * expr.c (emit_group_load): Call operand_subword instead of creating + an explicit SUBREG. + + * reload1.c (reload_reg_free_before_p, case + RELOAD_FOR_OPERAND_ADDRESS): Conflicts with RELOAD_FOR_OPADDR_ADDR + reloads. + + * configure (alpha-dec-osf[23456789]*): Use install-headers-cpio + for osf4. + + * gcc.c (init_spec): Delete parameter. Always initialize extra_specs. + (process_command, main): Change all callers. + + * combine.c (if_then_else_cond): Call copy_rtx to prevent sharing. + +Tue Mar 18 14:59:12 1997 Ian Lance Taylor + + * function.c (assign_parms): Add a REG_EQUIV note to the + instruction which copies a parameter into a pseudo-register + whenever there is an associated stack slot, even if the parameter + actually arrived in a register. + +Tue Mar 18 14:24:48 1997 Doug Evans + + * configure (alpha-dec-osf[23]): Separate osf[23] case. + * alpha.h (LIB_SPEC): -lprof1 requires -lpdf for OSF 4. + * alpha/osf2or3.h: New file. + +Tue Mar 18 11:32:10 1997 Jeffrey A Law (law@cygnus.com) + + * m68k.c (m68k_last_compare_had_fp_operands): New variable. + * m68k.h (m68k_last_compare_had_fp_operands): Declare it. + * m68k.md (tst*, cmp*): Turn into define_expand/define_insn pairs. + Keep track of whether test/compare has fp operands. + (seq, sne, sgt, slt, sge, sle): Turn into define_expand/define_insn + pairs. Make expanders FAIL if TARGET_68060 and last comparison/test + had fp operands. + +Tue Mar 18 04:29:29 1997 Richard Earnshaw + + * arm.md (movhi): Handle generation of large constants during + and after reload. + +Mon Mar 17 17:30:24 1997 Brendan Kehoe + + * gmicro.h (RETURN_POPS_ARGS): Make sure FUNDECL is non-nil + before we try to use it. + * m68k.h (RETURN_POPS_ARGS): Likewise. + * ns32k.h (RETURN_POPS_ARGS): Likewise. + * pyr.h (RETURN_POPS_ARGS): Likewise. + +Mon Mar 17 17:13:44 1997 J"orn Rennecke + + * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): + Only add padding if a bit field would otherwise span more units + of alignment than its base type. + +Mon Mar 17 17:03:55 1997 J.T. Conklin + + * m68k.md (beq0_di, bne0_di, bge0_di, blt0_di): Use cmpw #0 + instead of tstl when testing address registers on the 68000. + + * m68k/lb1sf68.asm: Fix prologues/epilogues to deal with the lack + of predecrement/postincrement addressing modes in the coldfire + moveml instruction. + +Mon Mar 17 17:00:14 1997 Scott Christley + + * Fix long standing bug where first method call for a class could + result in a garbled stack or produce an incorrect return value. + * objc/sendmsg.c (__objc_block_return): Remove function. + (__objc_word_return, __objc_double_return): Remove functions. + (__objc_get_forward_imp): New function. + (__objc_init_dispatch_tables): Install zero instead of + __objc_init_install_dtable. + (__objc_init_install_dtable): No longer call the method but + allow objc_msg_lookup return it for normal execution. + (obj_msg_lookup): Differentiate between when a method isn't + implemented and when the dispatch table needs to be installed. + Return the IMP when the dispatch table is installed versus + having __objc_init_install_dtable call it. + (get_imp): Install dispatch table if needed and return IMP + from the newly installed dispatch table. + (__objc_responds_to): Install dispatch table if needed before + checking if method is implemented. + +Mon Mar 17 16:29:38 1997 Richard Kenner + + * tree.c (build_{index,range}_type): Ensure expressions for min + and max value are in same obstack as type. + +Mon Mar 17 15:44:18 1997 Pat Rankin + + * cccp.c [#if VMS] (O_RDONLY, O_WRONLY): Delete (redundant). + (BSTRING): Delete (obsolete; usage occurs prior to definition). + (do_include): Handle old VAX C style includes better. + +Mon Mar 17 13:46:47 1997 Paul Eggert + + * cexp.y, cppexp.c (parse_number): Invalid integer constants are + errors if pedantic. + * cexp.y (yylex): Invalid multibyte characters are errors if pedantic. + * cppexp.c (cpp_lex): Likewise. + * cppexp.c (cpp_parse_escape): Character constants that do not fit are + errors if pedantic. + + * c-parse.in (expr_no_commas): Do not store temporary + skip_evaluation increments on yacc value stack. + +Sun Mar 16 19:54:49 1997 Richard Kenner + + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Refine which + object is picked. + +Sun Mar 16 15:45:45 1997 Jeffrey A Law (law@cygnus.com) + + * loop.c (strength_reduce): Adjust BENEFIT appropriately if an + autoincrement memory reference will eliminate add insns. + +Sun Mar 16 08:41:40 1997 Scott Christley + + * i386.md (untyped_call): Re-enable code. + * objc/sendmsg.c (__objc_block_return): New function. + (__objc_word_return, __objc_double_return): New functions. + (__objc_init_install_dtable): Call appropriate return function + based upon method type. + * objc/thr-pthreads.c: Correct include path. + +Sat Mar 15 07:58:33 1997 Scott Christley + + * objc-act.c (OBJC_VERSION): Increment version. + * objc/init.c (OBJC_VERSION): Likewise. + +Sat Mar 15 07:58:00 1997 Ovidiu Predescu + + * Implement +load. + * objc/init.c (objc_send_load, __objc_send_load): New functions. + (__objc_send_message_in_list): New function. + (__objc_force_linking): New function. + (__objc_exec_class): Don't call _objc_load_callback here. + * objc/linking.m: New file. + * objc/sendmsg.c (class_add_method_list): Check for the +load method + when adding a methods list to a class. + * objc/Makefile (OBJC_O): Add linking.m. + + * Allow methods defined in categories to override methods that are + defined in the class implementation. + * objc/sendmsg.c (__objc_install_methods_in_dtable): New function. + (class_add_method_list): Don't check anymore for duplicate methods. + + * config/nextstep.h (INCLUDE_DEFAULTS): Define to something useful + when cross-compiling. + + * The static instances list moved from the objc_module struct to + objc_symtab struct, at the end of defs array. This now allows the NeXT + gdb to work with binaries generated for the GNU ObjC runtime. + * objc-act.c (build_objc_symtab_template): Make sure + defs in objc_symtab is a NULL terminated array. + (init_def_list): Attach statics to end of def list. + (init_objc_symtab): Take statics list into account. + (init_module_descriptor, build_module_descriptor): Don't add statics. + (generate_static_references): Indicate that statics are used. + (finish_objc): Process statics in the beginning. + * objc/objc-api.h (objc_module): Eliminate statics variable. + * objc/init.c (__objc_exec_class): Access statics from their + new place in the defs variable. + +Sat Mar 15 07:29:15 1997 J"orn Rennecke + + * reload.c: Include expr.h. + (find_reloads_address, find_reloads_address_1): New argument INSN. + (find_reloads_address_1): Reload inside of p{re,ost}_{in,de}c + instead of entire p{re,ost}_{in,de}c where appropriate. + * Makefile.in (reload.o): Added expr.h to dependencies list. + +Sat Mar 15 07:17:12 1997 Richard Henderson + + * reload.h (eliminate_regs): Add STORING arg. + * reload1.c (eliminate_regs): Likewise. + (eliminate_regs, case SET): Pass that we are storing to recursive call. + (eliminate_regs, case SUBREG): If storing and same number of words, + use larger mode. + * caller-save.c, dbxout.c, dwarfout.c, dwarf2out.c, reload.c, sdbout.c: + Change all calls to eliminate_regs. + +Fri Mar 14 14:18:49 1997 Ian Lance Taylor + + * cplus-dem.c: Add prototypes for all static functions. + (mystrstr): Make static. Make arguments and result const. + (cplus_match): Remove; not used. + +Fri Mar 14 10:15:35 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (const_costs): Remove unused function. + * mn10300.h (CONST_COSTS): Rework to generate better code. + + * mn10300.c (print_operand): Handle 'H' and 'L' output + modifers for high/low part of a 64bit value. + * mn10300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Handle 'G' + (LEGITIMATE_CONSTANT_P): Allow any constant. + * mn10300.md (movdi, movdf): Implement. + (adddi3, subdi3): New expanders and patterns. + + * mn10300.c (print_operand): Handle 'A' modifier for an + address which can't be simple register indirect. + * mn10300.h (EXTRA_CONSTRAINT): Handle 'R' for bit ops. + * mn10300.md: Add patterns to test, set and clear bitfields. + + * mn10300.c (can_use_return_insn): New function. + (expand_epilogue): Emit a RETURN insn if possible. + * mn10300.md (return): New pattern. + + * mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'N'. + * mn10300.md (andsi3): Catch "and 255,dn" and "and 65535,dn" + which were not turned into zero_extend patterns. + + * mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Handle symbolic + constant as an index/base too. + + * mn10300.md (movsi): Allow SP to be loaded/saved with + reg+d8 addresses. + + * mn10300.md (cmpsi): Allow second operand to be a constant. + (subsi3): Likewise. + + * mn10300.md (sign extension patterns): Fix thinko when + extending from memory. + + * mn10300.md (tst peepholes): Add peepholes for test/branch + based on N bit being set/clear and the data value being tested dies. + +Tue Mar 11 17:07:51 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_prologue): Rework so that eliminating + the frame pointer produces faster/smaller code. + (expand_epilogue): Likewise. + (initial_offset): New function for argument pointer and frame pointer + elimination. + * mn10300.h (FIRST_PSEUDO_REGISTER): Bump to 10. + (FIXED_REGISTERS): Add argument pointer register, it's a fake fixed + register. + (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Corresponding changes. + (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Likewise. + (REG_OK_FOR_BASE_P, REGISTER_NAMES): Likewise. + (reg_class, REG_CLASS_NAMES): Delete unwanted DATA_OR_SP_REGS class. + (PREFERRED_OUTPUT_RELOAD_CLASS): Define. + (FIRST_PARM_OFFSET): No longer include register save area in + computation. + (STACK_POINTER_REGNUM): Is now register 9. + (ARG_POINTER_REGNUM): Is now register 8. + (FRAME_POINTER_REQUIRED): Refine. + (ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Define. + (CAN_DEUG_WITHOUT_FP): Define. + * mn10300.md (return_internal): Break into two patterns. + + * mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'M' too. + (REGISTER_MOVE_COST): Fix errors and refine. + + * mn10300.c (notice_update_cc): SET_ZN_C0 insns leave the + overflow bit in an unuseable state. Rename CC_SET to CC_TST. + * mn10300.md (cc attributes): "set" is gone, replaced by + "tst". Update attributes on various insns. + + * mn10300.md: Improve sign and zero extension instructions. + (ashlsi3): Improve. Handle address registers too. + (add peephole): Combine two consecutive adjustments of a register + into a single adjustment. + +Tue Mar 11 17:18:40 1997 Brendan Kehoe + + * cplus-dem.c (gnu_special): Call demangled_fund_type for other + __t* symbols. + +Mon Mar 10 16:10:34 1997 Richard Kenner + + * emit-rtl.c (subreg_lowpart_p): Return 0 if SUBREG_REG is VOIDmode. + * combine.c (simplify_rtx, case SUBREG): Fix direction of test when + calling operand_subword; use inline code intead of subreg_lowpart_p. + +Fri Mar 7 09:22:28 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_{pro,epi}logue): Rework to avoid + unnecessary "add" operations. + (expand_epilogue): Likewise. + * mn10300.h (STARTING_FRAME_OFFSET): Is zero after the last + round of prologue/epilogue changes. + (FIRST_PARM_OFFSET): Is now 16 (-4 for REG_PARM_STACK_SPACE + 20 for + register save area). + (REG_PARM_STACK_SPACE): Define as 4 bytes. + (OUTGOING_REG_PARM_STACK_SPACE): Define so caller allocates it. + * mn10300.md (call{,_value} expander): Don't emit insns to adjust the + stack here anymore. + + * mn10300.md (bCC patterns): Just use "bCC target". + +Tue Mar 4 13:21:41 1997 Jim Wilson + + * rs6000.md (movsi): Don't emit a USE insn for LABEL_REFs. + +Thu Mar 6 16:29:13 1997 Jim Wilson + + * dwarf2out.c (modified_type_die): Initialize item_type to NULL. + Move equate_type_number_to_die call before use of sub_die, and move + recursive modified_type_die calls on item_type after it. + + * dwarfout.c (root_type_1, write_modifier_bytes_1): New functions. + (root_type): Call root_type_1. + (write_modifier_bytes): Call write_modifier_bytes_1. + (output_type, case POINTER_TYPE): Set TREE_ASM_WRITTEN before + recursive call. + +Wed Mar 5 14:30:49 1997 Torbjorn Granlund + + Partially undo Jan 11 changes (nor takes only register ops): + * mips.md (*norsi3_const, *nordi3_const): Delete bogus patterns. + * mips.c (complemented_arith_operand): Delete function. + (print_operand): Don't handle `e' for CONST_INT. + * mips.h (PREDICATE_CODES): Delete complemented_arith_operand. + +Tue Mar 4 16:38:13 1997 Brendan Kehoe + + * i386.c (i386_return_pops_args): Make sure FUNDECL is non-nil + before we try to use it. + * i386/{isc,next,sco,sco5,scodbx}.h (RETURN_POPS_ARGS): Likewise. + +Mon Mar 3 20:17:54 1997 Gavin Koch + + * ginclude/va-mips.h: __mips_single_float should have + the same effect on vararg lists as __mips_soft_float. + +Mon Mar 3 18:12:01 1997 Michael Meissner + + * rs6000.h (DBX_CONTIN_LENGTH): Undo 2/26 change. + +Mon Mar 3 13:08:20 1997 Jeffrey A Law (law@cygnus.com) + + * combine.c (simplify_rtx): Do nothing with (truncate:mode) if + mode is a partial integer mode. + +Sun Mar 2 17:41:18 1997 Ulrich Drepper + + * ginclude/varargs.h: Add definition of __va_copy. + * va-alpha.h, va-clipper.h, va-h8300.h, va-i860.h: Likewise. + * va-i960.h, va-m88k.h, va-mips.h, va-pa.h, va-ppc.h: Likewise. + * va-sh.h, va-sparc.h, va-spur.h: Likewise. + +Sun Mar 2 13:25:49 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (process_init_element): Warn and truncate if upper + bound of index is out of range. + +Fri Feb 28 16:08:47 1997 Michael Meissner + + * rs6000/sol-c0.c (_start): Disable loading up r13 and r2 with the + SDA base registers for now. + + * rs6000.md (movsi): Emit a USE insn when putting the + label of constants into the TOC, so that the constant is still + emitted when expensive optimizations are used. + +Thu Feb 27 17:54:42 1997 Karl Heuer + + * fixinc.ptx: Fix sed expression looking for in pwd.h. + +Thu Feb 27 12:11:16 1997 Dennis Glatting + + * fixincludes: Remove more cases of __const__ from math.h on NeXT. + +Wed Feb 26 14:52:27 1997 Michael Meissner + + * reload.c (debug_reload): Remove extra argument to fprintf. + * rs6000.c (output_toc): Make fprintf calls type correct. + + * rs6000.h (DBX_CONTIN_LENGTH): Define as 4000 to avoid AIX + assembler line limit. + +Mon Feb 24 17:56:17 1997 Brendan Kehoe + + * fixincludes: Fix need of prototypes for C++ in rpc/xdr.h on SunOS4. + +Mon Feb 24 17:33:57 1997 Michael Meissner + + * rs6000/xm-sysv4.h (HAVE_STRERROR): Define. + +Sun Feb 23 17:18:28 1997 Jim Wilson + + * rs6000.md (floatsidf2_loadaddr): Correct syntax for cau instruction. + (load_multiple, store_multiple): Call change_address instead of + creating MEM from scratch. + +Thu Feb 20 16:39:15 1997 Jim Wilson + + * unroll.c (unroll_loop): Add check for naive loop that ends with + conditional branch that does not branch back to loop start. + + * reload1.c (reload): Move assign_stack_local call into main loop. + +Thu Feb 20 11:40:46 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (zero extension patterns): Turn into define_expand and + define_insn pair. + +Wed Feb 19 17:05:38 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (emit_move_sequence): Don't copy 0.0 (double precision) + directly to memory, go through a reg if reload hasn't started. + * pa.md (main movdf pattern): Don't allow 0.0 (double precision) + to be copied directly to memory. + + * pa/pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10. + (MD_STARTFILE_PREFIX): Similarly. + + * pa.h (ASM_OUTPUT_SECTION_NAME): Surround the section name + with '$' if not using GAS. + +Wed Feb 19 16:43:47 1997 J"orn Rennecke + + * sched.c (schedule_insns): If there was no first scheduling pass, + split instructions after reload. + (update_flow_info): Tolerate some idiosyncrasies after reload. + +Wed Feb 19 11:13:51 1997 Jeffrey A Law (law@cygnus.com) + + * combine.c (find_split_point): Don't turn a SIGN_EXTEND into + a series of shifts if either mode is a partial integer mode. + +Mon Feb 17 08:06:02 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * rs6000.c ({,non_}short_cint_operand): Use (unsigned HOST_WIDE_INT). + (non_add_cint_operand, includes_rshift_p): Likewise. + * rs6000.h (CONST_OK_FOR_LETTER_P): Likewise. + (LEGITIMATE_ADDRESS_INTEGER_P, LEGITIMIZE_ADDRESS): Likewise. + +Sun Feb 16 07:55:19 1997 J"orn Rennecke (amylaar@cygnus.co.uk) + + * libgcc2.c (__negdi2, __lshrdi3, __ashldi3, __ashrdi3, __ffsdi2): + Use ANSI style definition with full prototype. + (__muldi3, __udiv_w_sdiv, __udivmoddi4, __divdi3, __moddi3) : Likewise. + (__udivmoddi4, __udivdi3, __cmpdi2, __ucmpdi2) : Likewise. + (__fixunstfdi, __fixtfdi, __fixunsxfdi, __fixxfdi) : Likewise. + (__fixunsdfdi, __fixdfdi, __floatdixf, __floatditf) : Likewise. + (__floatdidf, __floatdisf, __fixunsxfsi, __fixunsdfsi) : Likewise. + (__gcc_bcmp, __eprintf, gopen, gclose, __bb_init_file) : Likewise. + (__bb_init_trace_func, __clear_cache, mprotect) : Likewise. + (__enable_execute_stack, cacheflush, exit) : Likewise. + (find_exception_table, __find_first_exception_table_match) : Likewise. + +Sun Feb 16 07:52:02 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (mulqihi3): Corrected. + (tst{hf,tqf}): Simplified. + (movqi): Removed redundant alternative. + (addqi-3,addqi-2,addqi-1): Set/Reset Bit patterns by C. Nettleton. + (many patterns): Introduced operand output modifiers d,t,b,B,w. + * 1750a.c (print_operand): New operand output modifiers d,t,b,B,w. + (simple_memory_operand): Removed. + (one_bit_set_p, which_bit): Added from C. Nettleton's m1750 config. + +Sun Feb 16 07:43:37 1997 Paul Eggert + + * cccp.c (special_symbol): Don't treat "L" in "L'...'" as identifier. + (check_macro_name, collect_expansion, rescan): Likewise. + * cpplib.c (special_symbol, check_macro_name, collect_expansion): + Likewise. + + * cexp.y (parse_c_expression): Don't check for null lexptr + or *lexptr == 0. If yyparse returns nonzero value, abort. + + * cexp.y (yylex): Use is_space, not is_hor_space, to find keyword end. + (is_space): New decl. + (is_hor_space): Removed. + * cccp.c (is_space): Now external. + (is_hor_space): Now static. + +Sun Feb 16 04:55:11 1997 Jason Merrill + + * toplev.c, tree.h (decl_printable_name): Change arguments. + * c-common.c (declare_function_name): Reflect above change. + * final.c (final_start_function): Likewise. + * function.c (init_function_start): Likewise. + * toplev.c (decl_name): Likewise. + (announce_function): Likewise. + (v_message_with_decl): Likewise. + * dwarf2out.c (dwarf2_name): New fn, uses decl_printable_name. + (add_pubname): Use it. + (add_name_and_src_coords_attributes): Use it, add + DW_AT_MIPS_linkage_name if appropriate. + (output_aranges): Use DW_AT_MIPS_linkage_name if present. + +Sat Feb 15 18:45:30 1997 J.T. Conklin + + * m68k.md (cmpsi): Added insn with appropriate constraints for + TARGET_5200; changed condition of existing insn to !TARGET_5200. + +Sat Feb 15 18:26:50 1997 Philippe De Muyter + + * m68k/hp320.h (PRINT_OPERAND_FLOAT): Removed. + (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}_OPERAND): Defined. + (PRINT_OPERAND): Turned off: use default. + * m68k/news.h (PRINT_OPERAND): Turned off: use default. + (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}_OPERAND): Defined. + * m68k/tower-as.h (PRINT_OPERAND): Turned off: use default. + (ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined. + * m68k/crds.h (PRINT_OPERAND): Turned off: use default. + (ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined. + (SGS_NO_LI,STRUCTURE_SIZE_BOUNDARY,IMMEDIATE_PREFIX): Defined. + (NEED_PROBE): Defined instead of HAVE_probe and gen_probe. + (FUNCTION_{PRO,EPI}LOGUE): Do not access FPA registers. + * m68k.c (output_function_prologue): Add CRDS and MOTOROLA probe code. + (print_operand): Do not output '.' if CRDS. + + * gcc.c (set_spec): Fix comment-in-comment typo. + +Sat Feb 15 17:54:23 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (COMPILERS): Moved before GCC_PASSES. + (GCC_PASSES): Use $(COMPILERS) instead of cc1$(exeext). + +Sat Feb 15 17:25:44 1997 Andreas Schwab + + * gcc.c (process_command): Allocate space for terminating null. + +Sat Feb 15 17:21:34 1997 Pat Rankin + + * vax.h (FUNCTION_PROLOGUE): Adjust size by STARTING_FRAME_OFFSET. + * vax/vms.h (FUNCTION_PROLOGUE): Delete. + +Sat Feb 15 08:48:14 1997 Douglas B. Rupp (rupp@gnat.com) + + * configure: Fix setting of CC in no-symlink case. + +Sat Feb 15 08:42:17 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * expmed.c (expand_divmod): Prefer divmod in same mode over div + in wider mode. + +Sat Feb 15 08:27:50 1997 J"orn Rennecke (amylaar@cygnus.co.uk) + + * fold-const.c (fold): Don't assume a nonexplicit constant cannot + equal an explicit one. + + * i386.md (zero_extendqi[hs]i2+3): Ensure operating on REG. + +Sat Feb 15 08:11:04 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (i[3456]86-*-solaris2*): Correct tm.h filename in + stabs case. + + * a29k.h (STORE_FLAG_VALUE): Write so works on both 32 and 64-bit host. + +Fri Feb 14 16:03:37 1997 Robert Lipe + + * i386/t-sco5 (libgcc{1,2}-elf.a): correct target dependencies. + +Fri Feb 14 16:00:23 1997 H.J. Lu + + * config/svr4.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Set + current-section variable to text. + +Wed Feb 12 16:07:34 1997 Brendan Kehoe + + * fixinc.irix: New file. + * configure (mips-sgi-irix[56]): Set fixincludes to fixinc.irix. + +Wed Feb 12 15:40:20 1997 Jim Wilson + + * Makefile.in (LIBGCC2_DEBUG_CFLAGS): New macro. + (LIBGCC2_CFLAGS): Use it. + + * dwarfout.c (output_type): Do early exit only if TYPE_CONTEXT is NULL + or if TYPE_CONTEXT is another type (e.g. a nested type). + +Tue Feb 11 15:53:51 1997 J"orn Rennecke + + * sh.c (calc_live_regs): Exclude RETURN_ADDRESS_POINTER_REGNUM. + Need not save MACL/MACH when not live or in leaf function. + +Mon Feb 10 14:46:32 1997 Jeffrey A Law (law@cygnus.com) + + * stmt.c (group_case_nodes): Recognize more opportunities to + group case nodes. + +Sun Feb 9 14:05:48 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (assign_stack_temp): Clear MEM flags from reuse. + +Sat Feb 8 17:37:47 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * local-alloc.c (update_equiv_regs): Fix error in last change. + +Fri Feb 7 12:42:34 1997 Mike Stump + + * pa.h (RETURN_ADDR_RTX): Fix to ignore export stubs. + * pa.c (return_addr_rtx): Define. + +Fri Feb 7 13:56:56 1997 Doug Evans + + * cse.c (invalidate_from_clobbers): Delete unnecessary test for + (clobber nil). + + * toplev.c (main): Delete redundant settings of flag_no_inline + and warn_inline if not optimizating. + +Fri Feb 7 10:45:02 1997 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (stmp-multilib-sub): Add missing "else true" + clauses to work around make bug on some systems. + +Fri Feb 7 08:19:43 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (const_binop): Don't call size_int if low < 0. + + * function.c (instantiate_virtual_regs_1, case USE, CLOBBER): + Fix error in last change. + +Thu Feb 6 17:09:17 1997 Mike Stump + + * except.c (find_exception_handler_labels): Initialize label array + with zeroes. + +Wed Feb 5 22:11:55 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (post_ldwm): Fix typos. + +Wed Feb 5 15:57:42 1997 Doug Evans + + * m68k/vxm68k.h (WCHAR_TYPE,WCHAR_TYPE_SIZE,SIZE_TYPE): Fix. + (PTRDIFF_TYPE): Define. + +Wed Feb 5 11:19:13 1997 Ian Lance Taylor + + * reload1.c (alter_reg): Don't ask assign_stack_local to round up + to a multiple of BIGGEST_ALIGNMENT, unless a register appears in a + paradoxical subreg. + +Tue Feb 4 19:29:40 1997 Jim Wilson + + * reload.c (find_reloads_address_1, case POST_INC): Don't use + ADDR_TYPE here. + +Tue Feb 4 12:33:45 1997 Jeffrey A Law (law@cygnus.com) + + * flow.c (life_analysis): Delete obvious no-op moves + which use SUBREGs. + +Mon Feb 3 20:00:35 1997 Jim Wilson + + * jump.c (find_cross_jump): Don't allow old-style and volatile asms + to match. + +Mon Feb 3 15:51:31 1997 Doug Evans + + * sparc/sol2.h (ASM_SHORT,ASM_LONG): Set to .uahalf/.uaword. + * sparc/sysv4.h (ASM_LONG): Define. + (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}): Use ASM_LONG. + +Mon Feb 3 13:01:46 1997 Ian Lance Taylor + + * reload.h (enum reload_type): Add RELOAD_FOR_INPADDR_ADDRESS and + RELOAD_FOR_OUTADDR_ADDRESS. + * reload.c (ADDR_TYPE): New macro. + (push_secondary_reload): Check for new reload types. + (combine_reloads): Likewise. + (find_reloads): Likewise. Convert INPADDR_ADDRESS and + OUTADDR_ADDRESS to OPADDR_ADDR. Check OPADDR_ADDR when looking + for merges. + (find_reloads_address): When reloading an address, use the + ADDR_TYPE macro to get the type of the new reload. + (find_reloads_address_1): Likewise. + (reload_when_needed_name): Add new reload types. + * reload1.c (reload): Add in_addr_addr and out_addr_addr fields to + insn_needs struct. Use them for new reload types, and when + computing in_max and out_max. + (reg_used_in_inpaddr_addr): New static array. + (reg_used_in_outaddr_addr): New static array. + (mark_reload_reg_in_use): Handle new reload types. + (clear_reload_reg_in_use, reload_reg_free_p): Likewise. + (reload_reg_free_before_p, reload_reg_reaches_end_p): Likewise. + (reloads_conflict, merge_assigned_reloads): Likewise. + (emit_reload_insns): Likewise. + (choose_reload_regs): Save arrays for new reload types. + +Sun Feb 2 19:43:17 1997 Scott Christley + + * objc/selector.c (__sel_register_typed_name): Eliminate compiler + warnings with explicit cast. + + * Add condition mutex support to the objc runtime. + * objc/thr-mach.c (objc_condition_{,de}allocate): New functions. + (objc_condition_{wait,broadcast,signal}): New functions. + * objc/thr-pthreads.c (objc_condition_{,de}allocate): New functions. + (objc_condition_{wait,broadcast,signal}): New functions. + * objc/thr-solaris.c (objc_condition_{,de}allocate): New functions. + (objc_condition_{wait,broadcast,signal}): New functions. + * objc/thr.h: Prototypes for new functions. + + * objc/init.c (__objc_runtime_mutex): Eliminate leading underscore + from name of objc mutex and thread structures. + * objc/runtime.h: Likewise. + * objc/thr-{decosf1,irix,mach,os2,posix,pthreads,single}.c: Likewise. + * objc/thr-{solaris,win32}.c: Likewise. + * objc/thr.{c,h}: Likewise. + + * Major reorganization of objc error handling. + * objc/Object.m (-error:): Call objc_error function instead of + using function pointer. + * objc/archive.c: Replace call to abort or __objc_fatal functions + with call to objc_error function throughout the complete file. + * objc/class.c (objc_get_class): Replace call to abort function + with call to objc_error function. + * objc/encoding.c (objc_sizeof_type, objc_alignof_type): Replace + call to abort function with call to objc_error function. + (objc_skip_typespec): Likewise. + * objc/init.c (init_check_module_version): Replace call to + abort function with call to objc_error function. + * objc/misc.c (objc_verror): New function. + (objc_fatal): Remove function. + (objc_set_error_handler): New function. + (_objc_error_handler): New global variable. + (__alpha__): Remove unneeded code. + (objc_error): Allow user specified error handler function to + trap and handle the objc error. Added an error code parameter + which indicates the specific error that occured. + (objc_malloc, objc_atomic_malloc): Replace call to objc_fatal + function with call to objc_error function. + (objc_valloc, objc_realloc, objc_calloc): Likewise. + * objc/objc-api.h: Declare error handling functions and typedef + for user specified error handler function. Define error codes + used by the runtime library. + * objc/runtime.h: Remove error handling declarations. + * objc/sendmsg.c (__objc_forward): Replace call to abort function + with call to objc_error function. + +Sun Feb 2 19:42:52 1997 Thomas Baier + + * objc/hash.c (hash_delete): Step through the hash nodes + versus using hash_next to increase efficiency. + * objc/archive.c (__objc_finish_read_root_object): Use hash + table instead of list. + +Sun Feb 2 08:25:05 1997 Ovidiu Predescu + + * objc-act.c (encode_aggregate_within): New function. + (encode_aggregate): Generates encodings for unions similar + to those for structs except surrounded by parenthesis instead + of braces. + +Sun Feb 2 07:15:54 1997 Mat Hostetter (mat@lcs.mit.edu) + + * c-decl.c (start_function): Fix improper installation of last change. + +Sun Feb 2 06:50:55 1997 Andreas Schwab + + * m68k.c (output_scc_di): Add missing CC_STATUS_INIT. + +Sun Feb 2 06:39:55 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (process_init_element): When popping levels, don't + blow up if constructor_max_index not set due to previous error. + + * combine.c (find_split_point, case SET): Fix error in last change. + +Sun Feb 2 06:28:56 1997 Paul Eggert + + * cccp.c (rescan): Insert a space after `.' as well, + to prevent accidental token-pasting (e.g. `.x' -> `.10'). + +Sun Feb 2 06:08:14 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.c (modregno_adjust): Fixed case when reg_renumber invalid. + +Sat Feb 1 19:11:08 1997 J.T. Conklin + + * m68k.md (movqi): Enable use of clr and st insns on TARGET_5200. + * m68k.c (output_move_simode_const): Likewise. + +Sat Feb 1 18:54:00 1997 Douglas B. Rupp (rupp@gnat.com) + + * gcc.c (process_command): Fix improper use of strncpy. + +Fri Jan 31 15:35:08 1997 Mike Stump + + * libgcc2.c: Remove extern for malloc and realloc. + +Fri Jan 31 17:08:11 1997 Ian Lance Taylor + + * local-alloc.c (update_equiv_regs): If register which is equivalent + to some value is only used in one place, and we can't substitute value + for use, move register assignment to just before use. + +Fri Jan 31 15:57:25 1997 Stan Cox + + * i386.md (idiv,imul,fpmul): Added new functional units for pentiumpro. + + * i386.c (pentiumpro_cost): Added new cost structure for pentiumpro. + (override_options): Set ix86_cost to appropriate cost structure. + +Thu Jan 30 09:34:26 1997 J.T. Conklin + + * m68k.md (stack adjust peepholes): Use lea instead of + add.w when adding 16 bit constants on all but TARGET_68040. + +Thu Jan 30 08:58:08 1997 Ralf Baechle + + * function.c (TRAMPOLINE_ALIGNMENT): Provide default. + (expand_function_end): Use TRAMPOLINE_ALIGNMENT instead + of FUNCTION_BOUNDARY. + * varasm.c (TRAMPOLINE_ALIGNMENT): Provide default. + (assemble_trampoline_template): Use TRAMPOLINE_ALIGNMENT instead + of FUNCTION_BOUNDARY. + +Wed Jan 29 18:16:02 1997 J"orn Rennecke + + * sh.h (REG_CLASS_CONTENTS): Add rap to GENERAL_REGS and its + superclasses. + + * sh.md (movsi_i, movsi_ie, movhi_i, movhi+1): Use type pcload for + immediate operands where appropriate. + (movsf_ie+1): Fail when loading anything but a MEM into + a floating point reguister. + +Wed Jan 29 16:00:31 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * varasm.c (force_const_mem): Set MARK instead of clearing it. + (output_constant_pool): Only mark constant pool if -O. + Check mark flag unconditionally. + (mark_constant_pool): Start by clearing all mark flags. + + * tree.c (copy_node): Clear TREE_ASM_WRITTEN. + + * flow.c (regno_uninitialized): Return 0 if reg is used for args. + +Wed Jan 29 15:23:59 1997 Ian Lance Taylor + + * combine.c (try_combine): Clear reg_n_refs if i2dest is not + mentioned in newi2pat. + +Tue Jan 28 16:00:23 1997 Stan Cox (coxs@dg-rtp.dg.com) + + From Robert Lipe + * i386/sco5.h (SCO_DEFAULT_ASM_COFF): Remove bytecode stuff. + (ASM_OUTPUT_ASCII): Use .ascii in both ELF and COFF modes. + (ASM_OUTPUT_SECTION_NAME): Handle alternate sections for COFF. + The OpenServer 5.0.0 assembler gives an error for section + names over 6 characters long, so we catch the "obvious" case + and shorten it. + + * m88k.h (ASM_OUTPUT_SECTION_NAME): Undefine; fails + for exception sections. The 88k ABI specifies 'section' + instead of '.section'. + +Mon Jan 27 13:32:46 1997 J"orn Rennecke + + * sh.c (shl_and_kind): Fix typo. + * sh.md (and_shl_scratch): Fix typo for length 8. + +Mon Jan 27 08:56:03 1997 Jeffrey A Law (law@cygnus.com) + + * fixincludes (sys/time.h): Fix incorrect forward structure + declaration on hpux10.20. + +Mon Jan 27 09:05:35 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (simplify_rtx): Don't do anything with if_then_else_cond + result if both one arm and the input are a comparison. + (simplify_{rtx,if_then_else,logical,shift_const}): Don't + test STORE_FLAG_VALUE with #if; properly test for just sign bit. + (num_sign_bit_copies, if_then_else_cond): Likewise. + * expmed.c (emit_store_flag): Properly test for STORE_FLAG_VALUE + of just sign bit. + * fold-const.c (fold): Don't make COND_EXPR when both expr and + one part are comparisons. + * a29k.h (STORE_FLAG_VALUE): Make negative. + +Fri Jan 24 16:42:26 1997 Ian Lance Taylor + + * varasm.c (struct pool_constant): Add mark field. + (force_const_mem): Clear mark field in new constant pool entry. + (output_constant_pool): Call mark_constant_pool. + (mark_constant_pool, mark_constants): New static functions. + +Thu Jan 23 15:04:17 1997 Ian Lance Taylor + + * cse.c (COST): Get the right cost for a SUBREG of a register when + truncation is free. + +Thu Jan 23 11:19:40 1997 Mike Stump + + * Makefile.in (objc-headers): Don't try and install the headers if + the objc directory has been removed. + +Wed Jan 22 13:26:25 1997 Brendan Kehoe + + * i960.c (process_pragma): Call ungetc on the last character + that was read by the while loop, to make sure the parser sees it. + +Tue Jan 21 17:20:30 1997 Michael Meissner + + * rs6000.c (output_toc): Move STRIP_NAME_ENCODING to common + code, so the test for vt's works with -mminimal-toc. + +Tue Jan 21 16:03:35 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (mark_all_temps_used): Set KEEP as well. + +Tue Jan 21 12:16:15 1997 Doug Evans + + * stor-layout.c (layout_record): Correct test for whether field spans + its unit of alignment in case where field_size == type_align. + +Mon Jan 20 20:27:54 1997 Ian Lance Taylor + + * mips.md (probe): Comment out. + +Sun Jan 19 20:54:45 1997 John F. Carr + + * integrate.c (expand_inline_function): Handle a PARALLEL containing + a RETURN the same as a RETURN. + +Sun Jan 19 20:35:28 1997 Pat Rankin + + * vmsconfig.com: Change all hardcoded references of "vax" to + use variable expansion instead. + (arch_indx, arch): New variables. + + * vax.c (not_qsort): Don't declare alloca. + * vax/xm-vms.h: Declare alloca here. + Do most of the VAX C-specific set up for DEC C. + #if DEC C, undefine QSORT_WORKAROUND and qsort. + * make-gcc.com, make-cccp.com, make-cc1.com: Support building + with GNU C vs VAX C vs DEC C from the DCL command line. + +Sun Jan 19 17:20:50 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (movh[if]-1): Corrected. + (movtqf-1): Deleted. + * 1750a.c (add_1_to_mem): Deleted. + (output_operand_address): Added output modifier 'A'. + +Sun Jan 19 17:17:54 1997 Philippe De Muyter + + * m68k.md (ashrdi_const, ashrdi3): Allow 31 as shift count. + + * m68k.h (CONST_OK_FOR_LETTER_P): Recognize 'N', 'O' and 'P'. + * m68k.md (rotl[shq]i3, strict_low_part rotl): Allow 'N', 'O' + or 'P' operands. + +Sun Jan 19 17:09:17 1997 Andreas Schwab + + * m68k.md (addsi3): Fix previous change: {add,sub}qw should + be {add,sub}ql. For other uses of {add,sub}q don't check for address + register and always use {add,sub}ql. + +Sun Jan 19 15:05:42 1997 Peter Seebach + + * c-decl.c (start_decl): Add code for -Wmain. + (c_decode_option): Add -fhosted, -ffreestanding, and -Wmain. + * toplev.c (lang_options): Likewise. + * c-tree.h (warn_main, flag_hosted): New variables. + +Sun Jan 19 14:35:41 1997 Alex Garthwaite (alex@samwise.cis.upenn.edu) + + * fixinc.svr4: Fix problems with symlinks to ".". + +Sun Jan 19 14:21:46 1997 Craig Burley + + * loop.c (check_final_value): Handle insns with no luid's. + +Sun Jan 19 08:57:26 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.md (arg_home): Add CLOBBER of MEM and USE of arg regs. + * vms.h (SETUP_INCOMING_VARARGS): Delete duplicate definition. + + * toplev.c (set_float_handler): Set up signal catcher on first call + in case a front end has disabled it. + + * cccp.c, cexp.y: #define __attribute__ to be null if + compiling with GCC older than 2.7, not 2.6. + + * toplev.c (main): If PREFERRED_DEBUGGING_TYPE used and set + to NO_DEBUG, say debugging not supported. + * mips/sni-svr4.h (PREFERRED_DEBUGGING_TYPE): Undefine. + + * i386/xm-cygwin32.h (DIR_SEPARATOR): Define. + + * explow.c (convert_memory_address, case SYMBOL_REF): + Copy CONSTANT_POOL_ADDRESS_P. + * integrate.c (save_constants): Make (address (const ..)) to record + both modes. + (copy_for_inline, copy_rtx_and_substitute, restore_constants): Use + both modes when restoring constant pool entry for ADDRESS. + + * alpha.h (MINIMUM_ATOMIC_ALIGNMENT): New macro. + + * function.c (instantiate_virtual_regs_1, case USE, case CLOBBER): + Properly handle case of shared MEM whose replacement is not valid. + +Sat Jan 18 14:08:31 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (get_unwidened): Don't crash if FIELD_DECL not layed out. + + * varasm.c (const_hash): Treat NON_LVALUE_EXPR like CONVERT_EXPR. + (compare_constant_1, copy_constant, bc_assemble_integer): Likewise. + (const_hash, compare_constant_1): Use switch, not if-then-else. + +Fri Jan 17 17:10:20 1997 Ian Lance Taylor + + * mips.h (STACK_POINTER_OFFSET): Don't define. + +Thu Jan 16 14:51:03 1997 Bob Manson + + * cplus-dem.c: Fix indenting; note that this file also lives in + libiberty. + (do_type, case 'M'): Check for a template as well as a class. + +Thu Jan 16 15:08:26 1997 Michael Meissner + + * gcc.c (cross_compile): Change to be a char * like all of the + other specs. + (process_command): Change how cross_compile is tested. + (main): Likewise. + (struct spec_list): Merge with the format used by EXTRA_SPECS. + Add name length field to speed up repeated calls to strcmp. Add + flag to say spec was allocated. Add pointer to char * so that + static spec fields can be updated. + (extra_specs): Use struct spec_list as type. + (static_specs): Static list of predefined specs. + (init_specs): New function, initialize the specs list. Link in + the default specs and any specs defined via EXTRA_SPECS. + (set_spec): No longer special case predefined specs. + (process_command,validate_all_switches): Ditto. + (process_command): Call init_specs for -dumpspecs. + (do_spec_1): Use name length field to avoid calling strncmp when + it is going to fail. + (main): Call init_spec. Don't handle EXTRA_SPECS here. + +Thu Jan 16 17:07:54 1997 Eddie C. Dost + + * configure: Add sparc-linux{,aout} support. + * ginclude/va-sparc.h: Likewise. + * sparc/linux.h: New file. + * sparc/linux-aout.h: New file. + * sparc/xm-linux.h: New file. + +Thu Jan 16 16:19:13 1997 Jim Wilson + + * configure (sparc-*-aout*): Add libgloss.h to tm_file. + (sparclite-*-coff*): Change "= to =". + +Thu Jan 16 12:53:15 CST 1997 Joel Sherrill + + * rs6000/rtems.h: Change from being sysv4 based to being eabi based. + +Thu Jan 16 13:40:51 1997 Jim Wilson + + * mips.h (LINKER_ENDIAN_SPEC): Define. + (LINK_SPEC): Add linker_endian_spec. + (EXTRA_SPECS): Add linker_endian_spec. + +Thu Jan 16 08:02:13 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (bCC, inverted bCC): Use bCC .+X instead of bCC 0f. + +Wed Jan 15 14:06:28 1997 Ian Lance Taylor + + * reload.h (reload_address_base_reg_class): Declare. + (reload_address_index_reg_class): Declare. + * reload1.c (reload_address_base_reg_class): Define. + (reload_address_index_reg_class): Define. + (init_reload): Initialize reload_address_{base,index}_reg_class. + * reload.c (find_reloads_address): Use + reload_address_base_reg_class rather than BASE_REG_CLASS. Use + reload_address_index_reg_class rather than INDEX_REG_CLASS. + (find_reloads_address_1): Likewise. + +Tue Jan 14 15:26:33 1997 Ian Lance Taylor + + * reload.c (REGNO_MODE_OK_FOR_BASE_P): Define if not defined. + (REG_MODE_OK_FOR_BASE_P): Define if not defined. + (find_reloads_address): Use REG[NO]_MODE_OK_FOR_BASE_P rather than + REG[NO]_OK_FOR_BASE_P. + (find_reloads_address_1): Likewise. + Add mode parameter; change all callers. + + * reload1.c (eliminate_regs_in_insn): Handle more cases when + eliminating the frame pointer to the hard frame pointer. + + * varasm.c (force_const_mem): Copy a CONST_INT rtx like a CONST rtx. + + * varasm.c (assemble_end_function): Call + output_after_function_constants. + (after_function_constants): New static variable. + (output_after_function_constants): New static function. + (output_constant_def): Check CONSTANT_AFTER_FUNCTION_P. + +Mon Jan 13 16:44:40 1997 David Edelsohn + + * rs6000/aix41.h (CPP_PREDEFINES): Add -D_AIX41. + +Sun Jan 12 20:54:01 1997 Jim Wilson + + * libgloss.h (LINK_SPEC): Delete. + (STARTFILE_SPEC): Delete spurious newline. + +Sat Jan 11 00:13:03 1997 Torbjorn Granlund + + * mips.md (norsi3, nordi3): Use canonical RTL. Prepend `*' to pattern + name. Don't match immediates. + (norsi3_const, nordi3_const): New patterns. + (anddi3, iordi3, xordi3): Test TARGET_64BIT, not mips_isa + in length attribute calculation. + * mips.c (complemented_arith_operand): New function. + (print_operand): Handle `e' for CONST_INT. + * mips.h (PREDICATE_CODES): Add complemented_arith_operand. + +Fri Jan 10 14:11:53 1997 David Edelsohn + + * rs6000/aix41.h (SUBTARGET_SWITCHES): Add threads and pe. + (CPP_SPEC): Add mpe and mthreads cases. + (LIB_SPEC): Add mpe and mthreads cases to variant from rs6000.h. + (STARTFILE_SPEC): Add mpe and mthreads support. + +Fri Jan 10 07:12:26 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * i386/cygwin32.h (LINK_SPEC): New definition. + + * Makefile.in (FLAGS_TO_PASS): Add STAGE_PREFIX, set by configure. + * configure: Initialize exeext. + Update STAGE_PREFIX in Makefile. + + * dwarfout.c (dwarfout_line): Push to LINE_SECTION after calling + lookup_filename. + +Thu Jan 9 12:06:04 1997 Jim Wilson + + * i386.md (addsidi3_2): Add & to operand 0 of alternative 5. + +Thu Jan 9 12:06:04 1997 Stan Cox + + From Linus Torvalds and Mat Hostetter: + * i386.c (i386_sext16_if_const): Added to sign extend HImode constant. + (i386_aligned_reg_p): Added to tell if an rtx is aligned. + (i386_cc_probably_useless_p): Don't trust cc bits. + * i386.h (TARGET_ZERO_EXTEND_WITH_AND): Don't do this for p6. + * i386.md (cmpsf_ccfpeq+2): Use SImode test instruction. + (movhi+1): Use movz instead of mov on p6. + (addsi3): Add 128 by subtracting -128. + (zero_extendhisi2): Use SImode move if aligned. + ({add,sub,and,ior,xor}hi3): Likewise. + +Tue Jan 7 16:58:27 1997 Jason Merrill + + * c-parse.in (extension): New rule for __extension__. + (extdef, unary_expr, decl, component_decl): Use it. + +Mon Jan 6 15:44:37 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.c: Now includes regs.h. + ({movcnt,mod}_regno_adjust): Corrected typos. + * 1750a.md (movhi): Corrected case of moving constant to memory. + +Mon Jan 6 08:00:57 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * mips.h: Delete redundant definitions of compiler and library fns. + + * dwarfout.c (type_attribute): Ignore any subtype for now. + + * fold-const.c (operand_equal_p): Rework to consider two + expressions that have embedded identical SAVE_EXPRs as + equivalent; also handle some more cases. + +Sun Jan 5 23:54:34 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (pic_load_label): Fix test for using just an + ldo rather than an addil;ldo sequence to load the label's + address. + +Sun Jan 5 07:26:47 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COMPONENT_REF): Fix error in last + change: don't suppress conversion if just EXPAND_SUM. + +Sat Jan 4 18:44:01 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (struct tree_decl): saved_insns.i is HOST_WIDE_INT. + + * fold-const.c (const_binop): Rework to only make constants in + one place; always use size_int if small enough and of sizetype. + (size_int): Call force_fit_type. + (fold): Avoid ever changing type of input tree. + + * expr.c (get_inner_reference): Fix type error. + (expand_expr, case COMPONENT_REF): Don't convert if modifier + is EXPAND_CONST_ADDRESS, EXPAND_SUM, or EXPAND_INITIALIZER. + * tree.c (staticp, case COMPONENT_REF, BIT_FIELD_REF): Not + static if bitfield. + + * expr.c (expand_expr, case COMPONENT_REF): If taking value + from a CONSTRUCTOR, must mask/sign-extend if bitfield. + (expand_builtin, case BUILT_IN_LONGJMP): Pass type, not IDENTIFIER, + to second arg of RETURN_POPS_ARGS. + + * expr.c (expand_expr, case COND_EXPR): Add additional cases + to "singleton" cases. + * tree.c (integer_pow2): Mask value to width of type. + (tree_log2): New function. + + * expmed.c (store_fixed_bit_field): If not SLOW_UNALIGNED_ACCESS, + treat everything as maximally aligned. + + * combine.c (find_split_point, case SET): If SET_SRC is NE and + STORE_FLAG_VALUE is -1, see if we can convert into NEG of shift. + (force_to_mode, case NE): Make condition stricter. + + * calls.c (emit_library_call_value): Remove redundant check for + outmode != VOIDmode. + +Sat Jan 4 08:12:16 1997 J.T. Conklin + + * Optimizations from John Vickers (john@rhizik.demon.co.uk): + * m68k.c (output_function_{pro,epi}logue): Use addq/subq when + adjusting stack pointer by small displacements. + * m68k.md (addsi3, addhi3): Use two addqw (or subqw) insns when + adding (or subtracting) small integer constants (8 < N <= 16) to + both address and data registers. + +Sat Jan 4 07:06:07 1997 Kamil Iskra + + * loop.c (basic_induction_var): Return 0 if SUBREG is not a + promoted variable. + +Sat Jan 4 06:22:36 1997 Doug Rupp (rupp@gnat.com) + + * alpha.c (vmskrunch): Try to not chop trailing uppercase letters. + * alpha/vms.h (ENDFILE_SPEC): Use "gnu", not "gnu_cc". + + * cccp.c (PRINTF_PROTO): Use __printf__ in __attribute__, not printf. + * cexp.y (PRINTF_PROTO): Likewise. + +Fri Jan 3 09:01:00 1997 Craig Burley + + * alpha.md (cmov): Fix operand numbers in case involving DF target, + DF comparison, and SF source. + +Fri Jan 3 08:19:46 1997 Paul Eggert + + * cpplib.c (macroexpand): Delete any no-reexpansion marker following + identifier at beginning of an argu concatenated with what precedes it. + +Fri Jan 3 07:59:21 1997 Ken Rose (rose@netcom.com) + + * reorg.c (fill_slots_from_thread): Skip moved insn in all three cases. + +Fri Jan 3 07:51:44 1997 Bob Manson + + * function.c ({push,pop}_function_context_to): Save and restore + current_function_args_info. + * function.h (struct function): New field args_info. + +Fri Jan 3 06:55:09 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * jump.c (rtx_equal_for_thread_p): Return 0 for floating-point. + + * reload.c (find_reloads): If replaced a PLUS or MULT with a + simple operand, start over again. + + * va-alpha.h: Check for __VMS__, not VMS. + +Thu Jan 2 08:52:51 1997 Richard Kenner + + * configure: Finish restoring change of default of objc threads to + "single" for Linux-based GNU systems. + +Mon Dec 30 17:03:46 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (fmpy_operands): Remove. No longer needed. + (combinable_add, combinable_copy, combinable_fmpy): Likewise. + (combinable_fadd, combineable_fsub): Likewise. + (pa_reorg): Call pa_combine_instructions. + (pa_combine_instructions): Combine instructions to make things + like fmpyadd and fmpysub. + (pa_can_combine_p): Helper function for pa_combine_instructions. + * pa.md (pa_combine_type): New attribute. Set it appropriately + for various insns. + (define_delays): Use a separate define_delay for unconditional + branches. + (fmpyadd, fmpysub peepholes): Remove, no longer needed. + (fmpyadd, fmpysub insns): Add variant with fadd/fsub first, + then the fmpy. + +Mon Dec 30 14:43:51 1996 Jim Wilson + + * reg-stack.c (subst_stack_regs_pat): Set src_note explicitly, instead + of using invalid aggregate initialization. + + * print-tree.c (print_node): Don't try to print nonexistent + TYPE_ATTRIBUTES field of a decl node. + +Mon Dec 30 10:30:25 1996 Richard Stallman + + * config.sub: Handle hiuxmpp as system type. + +Thu Dec 26 13:33:27 1996 Michael Meissner + + * rs6000.md (init_v4_pic): Explicitly set the length. + +Mon Dec 23 19:39:38 1996 Jim Wilson + + * mips.h (FUNCTION_ARG_REGNO_P): Correct for TARGET_SOFT_FLOAT and + TARGET_FLOAT64 cases. + + * integrate.c (function_cannot_inline_p): Reject function with + PARALLEL result. + (expand_inline_function): Abort if function result not handled. + +Sat Dec 21 04:02:46 1996 Jason Merrill + + * mips.c (save_restore_insns): Mark large frame setup insns + as frame-related. + (mips_expand_prologue): Likewise. + + * dwarf2out.c (dwarf2out_frame_debug): Support MIPS large frames. + (add_bound_info): Use default lower bounds. + Handle simple variable bounds with a DIE ref. + Don't generate a NULL loc descr. + (add_subscript_info): Always add lower bound. + (gen_formal_parameter_die): Always equate_decl_number_to_die. + (gen_variable_die): Likewise. Don't use the old die for automatic + variables. + +Wed Dec 18 10:23:46 1996 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (notice_update_cc): Enable this code. + * mn10300.h (CC_OVERFLOW_UNUSABLE): Define. + * mn10300.md (tstsi): Use "set_zn_c0" instead of "set" for cc status. + (addsi3 pattern): Break "inc" into two different alternatives + since "inc dn" sets cc0, but "inc an" does not. + (multiply and divide patterns): Fix cc status. + (bCC, inverted bCC): Restore any comparison which needs the + overflow bits when CC_OVERFLOW_UNUSABLE is set. + (zero and sign extensions): Fix cc status. + (movm_store): Likewise. + +Tue Dec 17 15:02:44 1996 Jim Wilson + + * sched.c (update_flow_info): When add REG_DEAD notes for dest of + last insn, add check for global_regs. + +Tue Dec 17 11:07:26 1996 Michael Meissner + + * rs6000/win-nt.h (HAS_INIT_SECTION): Delete, so that __main is + called from main. + +Mon Dec 16 15:28:44 1996 Jim Wilson + + * combine.c (nonzero_bits): Ifdef out calls to num_sign_bit_copies. + Add dummy define/undef for num_sign_bit_copies. + + * dwarfout.c (location_or_const_value_attribute, case CONCAT): Add. + + * combine.c (simplify_comparison): Use mode_width as shift count + only if it is less than or equal to HOST_BITS_PER_WIDE_INT. + +Mon Dec 16 10:10:11 1996 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_epilogue): Restore registers in the + "ret" instruction instead of a separate movm instruction. + Support possible stack deallocation in "ret" instruction too. + * mn10300.md (return_internal): Use "ret" instead of "rets"; + restore registers and deallocate stack as needed. + (load_movm): Delete unused pattern. + + * mn10300.h (SMALL_REGISTER_CLASSES): Define. + +Fri Dec 13 14:46:54 1996 J"orn Rennecke + + * sh.md (dect): Rewrite pattern so that it can be combined. + +Fri Dec 13 13:14:51 1996 Ian Lance Taylor + + * varasm.c (output_constant_pool): If ASM_OUTPUT_POOL_EPILOGUE is + defined, call it. + +Thu Dec 12 20:04:55 1996 Jason Merrill + + * rtl.h (RTX_FRAME_RELATED_P): New macro. + (struct rtx_def): Add frame_related bitfield. + * final.c (final_scan_insn): Call dwarf2out_frame_debug. + Don't call dwarf2out_begin_function. + (final): Initialize dwarf2out_frame_debug. + * dwarf2out.c (dwarf2out_begin_function): Remove. + (dwarf2out_init): Use INCOMING_RETURN_ADDR_RTX. + (DWARF_CIE_DATA_ALIGNMENT): Generalize. + (DWARF_FRAME_REGNUM): Don't add 1. + (decode_cfi_rtl): Lose. + (dwarf2out_def_cfa): Now takes reg and offset directly. + (reg_save): Likewise. + (dwarf2out_reg_save): Now takes offset. + (initial_return_save): Grok INCOMING_RETURN_ADDR_RTX. + Replaces dwarf2out_return_save. + (dwarf2out_cfi_label): New fn. + (add_fde_cfi): Use it. + (dwarf2out_frame_debug): New fn. + * mips.h (DWARF_FRAME_REGNUM): Tweak r31. + (INCOMING_RETURN_ADDR_RTX): Define. + * mips.c (mips_expand_prologue): Set RTX_FRAME_RELATED_P as needed. + (save_restore_insns): Likewise. + * i386.c (ix86_expand_prologue): Likewise. + * i386.h (INCOMING_RETURN_ADDR_RTX): Define. + (DWARF_FRAME_RETURN_COLUMN): Define. + + * dwarf2out.c (add_AT_long_long): Renamed from add_AT_double fo + clarity. + (print_die): Adjust. + (add_AT_float): New fn. + (add_const_value_attribute): Support fp values. + (size_of_die): Use blocks for long_long and fp values. + (value_format, output_die): Likewise. + (output_loc_operands): Don't support DW_OP_const8?. + +Thu Dec 12 19:49:09 1996 Ian Lance Taylor + + * varasm.c (CONSTANT_POOL_BEFORE_FUNCTION): Define if not + defined. + (assemble_start_function): Check CONSTANT_POOL_BEFORE_FUNCTION + to decide whether to call output_constant_pool. + (assemble_end_function): Likewise. + + * calls.c: Check SMALL_REGISTER_CLASSES at run time, not just + compile time. + * combine.c, cse.c, function.c, jump.c, local-alloc.c: Likewise. + * loop.c, reload.c, reload1.c: Likewise. + * dsp16xx.h (SMALL_REGISTER_CLASSES): Define with value. + * h8300.h (SMALL_REGISTER_CLASSES): Likewise. + * i386.h (SMALL_REGISTER_CLASSES): Likewise. + * pdp11.h (SMALL_REGISTER_CLASSES): Likewise. + * sh.h (SMALL_REGISTER_CLASSES): Likewise. + +Thu Dec 12 15:25:39 1996 Michael Meissner + + * rs6000.md (sysv call insns): If flag_pic add @plt suffix. + + * rs6000.md (fix_truncdfsi2_store): Fix offsets > 32k. + + * rs6000/t-ppccomm: New file for common parts of embedded and + System V target Makefile support. + + * rs6000/t-ppcos: New file for System V OS target Makefile + support. + + * rs6000/t-solaris: Delete, merge into rs6000/t-ppcos. + + * rs6000/t-{ppc,ppcgas}: Only keep the multilib specific parts, + moving the rest to rs6000/t-ppccomm. + + * configure (powerpc*-*-*): For embedded and System V + configurations, add rs6000/t-ppccomm. + For GNU/Linux and Solaris, use t-ppcos. + + * ginclude/ppc-asm.h (cr*, f*): Add new macros for register names. + + * rs6000/sol-c0.c (_start): Fix uninitialized data bug. + + * rs6000.md (init_v4_pic): Add @local to call. + (icbi,dcbst,sync,isync): Delete PowerPC cache control insns. + + * rs6000/sysv4.h (ASM_SPEC): On explicit -mcall-solaris, pass + -msolaris to the assembler. + + * rs6000.c (rs6000_sync_trampoline): Delete. + (rs6000_trampoline_template): Aix & System V don't need template now. + (rs6000_initialize_trampoline): For System V, call the function + __trampoline_setup to set up the trampoline. + + * rs6000.h (TRAMPOLINE_TEMPLATE): Delete here. + * rs6000/win-nt.h (TRAMPOLINE_TEMPLATE): Add it here. + + * rs6000/tramp.asm: New file, setup trampolines properly on System + V systems, properly flushing the caches. + +Thu Dec 12 10:53:10 1996 Jeffrey A Law (law@cygnus.com) + + * reorg.c (fill_slots_from_thread): Don't call eligible_for_delay + with an insn with asm operands. + + * expmed.c (emit_store_flag_force): Fix typos/thinkos. + +Thu Dec 12 08:09:20 1996 J"orn Rennecke + + * i386.c (i386_return_pops_args): Libcalls ignore TARGET_RTD. + +Thu Dec 12 07:56:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (maybe_get_identifier): New declaration. + + * calls.c (emit_library_call): Don't pass VOIDmode to type_for_mode. + + * va-alpha.h: Add definitions for VMS; they differ from Unix. + + * Makefile.in (stamp-objlist): Handle first character of object + file being a digit. + + * 1750a.h (function_arg, {movcnt,mod}_regno_adjust): Add decls. + (branch_or_jump): Likewise. + (FUNCTION_ARG): Remove cast of function_arg result to rtx. + * 1750a.md: Remove unneeded casts to char *. + +Thu Dec 12 05:55:27 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (arm_gen_constant, case [IX]OR): Don't invert constant if + loading into temporary. + +Wed Dec 11 18:57:21 1996 Brendan Kehoe + + * toplev.c (rest_of_compilation): Make sure unwinder RTL is saved. + + * collect2.c (write_c_file): Wrap the ctor/dtor lists and fns + with `extern "C" { ... }'. + +Wed Dec 11 17:46:48 1996 John F. Carr + + * tree.h (tree_decl): Reorder field declarations to reduce size + on 64 bit machines. + + * combine.c (try_combine): When splitting an insn, check for the + new I2 setting a SUBREG. + +Wed Dec 11 17:00:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of + using "%ld". + (output_prolog): Don't print useless comment for VMS. + + * alpha.c (output_prolog): SIZE is now HOST_WIDE_INT. + * alpha.md (mov[hq]i unnamed): Split up for TARGET_BYTE_OPS and not. + + * function.c (fixup_var_refs_1, case ZERO_EXTRACT): Don't call + fixup_memory_subreg if no longer SUBREG of MEM. + +Wed Dec 11 14:10:48 1996 Jeffrey A Law (law@cygnus.com) + + * mn10300.c: New file for Matsushita MN10300 port. + * mn10300.h, mn10300.md, t-mn10300, xm-mn10300.h: Likewise. + * config.sub: Recognize mn10300 as a basic machine type. + * configure: Similarly. + * ginclude/stdarg.h: mn10300 is little endian. + * ginclude/varargs.h: Likewise. + +Wed Dec 11 09:09:10 1996 Nagai Takayuki + + * libgcc2.c (cacheflush): Add SONY NEWS-OS 4.2 version. + +Wed Dec 11 09:01:39 1996 J"orn Rennecke + + * calls.c (emit_library_call, emit_library_call_value): + Don't pass an identifier node as function type for + library functions, but rather build a function type that + has a return type with the correct mode. + * i386.c (i386_return_pops_args): Don't test for IDENTIFIER_NODE. + * i386/isc.h (obsolete RETURN_POPS_ARGS): Test first argument + for IDENTIFIER_NODE. + * i386/next.h (RETURN_POPS_ARGS): Likewise. + * i386/sco.h (RETURN_POPS_ARGS): Likewise. + * i386/sco5.h (RETURN_POPS_ARGS): Likewise. + * i386/scodbx.h (RETURN_POPS_ARGS): Likewise. + * m68k.h (RETURN_POPS_ARGS): Likewise. + * ns32k.h (RETURN_POPS_ARGS): Likewise. + * pyr.h (RETURN_POPS_ARGS): Likewise. + * gmicro.h (RETURN_POPS_ARGS): Likewise; fix typo. + +Tue Dec 10 17:36:47 1996 J.T. Conklin + + * Add optimizations from John Vickers (john@rhizik.demon.co.uk) + * m68k.h (TARGET_CPU32): New macro. + * m68k.md (add[hs]i3): Only use two addq.w or subq.w instructions + when adding or subtracting constants 8 < N < 16 on TARGET_CPU32. + Use lea instead of add.w when adding 16 bit constants to address + registers on all but TARGET_68040. + * m68k.c (output_function_{pro,epi}logue): Use lea instead of add.w + when adjusting stack pointer on all but TARGET_68040. + +Tue Dec 10 15:55:23 1996 Ian Lance Taylor + + * optabs.c (emit_unop_insn): Treat ZERO_EXTEND like SIGN_EXTEND. + +Tue Dec 10 13:47:24 1996 Joern Rennecke + + * combine.c (combinable_i3pat): Bring back to sync with can_combine_p. + + * sh.h (ADJUST_INSN_LENGTH): Don't break from loop when LOOP_BEG found. + Calculate padding in new variable pad. + +Mon Dec 9 18:00:38 1996 Jason Merrill + + * dwarf2out.c (output_uleb128): Output value in human-readable comment. + (output_sleb128): Likewise. + (various): Adjust. + (output_call_frame_info): Only output info if it's interesting. + (add_src_coords_attributes): New fn. + (add_name_and_src_coords_attributes): Split out from here. + (gen_enumeration_type_die): Add src coordinates. + (gen_struct_or_union_type_die): Likewise. + (dwarf2out_finish): Call output_call_frame_info for all targets. + +Thu Dec 5 11:25:30 1996 Jason Merrill + + * dwarf2out.c (add_pure_or_virtual_attribute): Only add + AT_containing_type if -g2 or higher. + + * dwarf2out.c (gen_struct_or_union_type_die): Make sure that + the type for AT_containing_type has been generated. + (gen_decl_die): Likewise. + + * dwarf2out.c (type_tag): Check DECL_IGNORED_P. + (add_pure_or_virtual_attribute): Check DECL_VINDEX instead. + (scope_die_for): Likewise. + * dwarfout.c (type_tag): Likewise. + +Wed Dec 4 22:51:38 1996 Jason Merrill + + * dwarf2out.c (decode_cfi_rtl): Support getting a CONST_INT. + (dwarf2out_begin_function): Adjust. + (reg_save): Divide offset by the alignment. + (output_cfi): Support having more than one advance_loc. + (output_call_frame_info): Re-initialize current_label. + (dwarf2out_begin_prologue): Initialize current_label to NULL. + (lookup_cfa, lookup_cfa_1): New fns. + (dwarf2out_def_cfa): Call lookup_cfa. + (dwarf2out_finish): Don't generate CIE CFIs. + (dwarf2out_init): Generate them here. + (DWARF_FRAME_RETURN_COLUMN): Use PC_REGNUM. + + (add_pure_or_virtual_attribute): Note virtual context. + (gen_formal_parameter_die): Return the die. + (gen_formal_types_die): Set AT_artificial on `this'. + (gen_subprogram_die): Add AT_accessibility. + (gen_variable_die): Likewise. + (gen_field_die): Likewise. Don't generate location attribute for + union members. + (gen_struct_or_union_type_die): Note where our vtable lives. + (gen_decl_die): Handle anonymous union fields. + (dwarf2out_decl): Always output `bool'. + +Mon Dec 2 03:55:15 1996 Jason Merrill + + * final.c (final_end_function): Don't call dwarf2out_end_function. + + * dwarf2out.c (output_line_info): Emit special opcodes for each line + entry, even if the line number doesn't change. + (pend_type, output_pending_types_for_scope): New fns. + (gen_struct_or_union_type_die): Use them to defer generating member + dies if we're in the middle of some other context. + (gen_type_die): Still put nested types in the right place. + (dwarf2out_decl): Call output_pending_types_for_scope. + + * dwarf2out.c (dw_fde_struct): Replace end_prologue, begin_epilogue + with current_label. + (DWARF_CIE_INSN_SIZE, DWARF_CIE_SIZE): Remove. + (DWARF_CIE_HEADER_SIZE): The size without the initial insns. + (size_of_cfi): Revert. + (decode_cfi_rtl, add_fde_cfi, dwarf2out_def_cfa, reg_save, + dwarf2out_reg_save, dwarf2out_return_save): New fns. + (dwarf2out_begin_function): Use them to generate CFIs. + (dwarf2out_finish): Use them to generate E CFIs. + Don't set next_fde_offset. + (calc_fde_sizes): Initialize cie_size. + (output_call_frame_info): Don't generate CIE CFIs. + (dwarf2out_end_function): Remove. + + * tree.c (maybe_get_identifier): New fn. + * varasm.c (assemble_name): Use it instead of get_identifier. + +Fri Nov 29 15:13:39 1996 Stan Cox + + * jump.c (jump_optimize): Don't move initialization if there is a + label between it and the jump for if (foo) bar++ to bar += (foo !=0) + +Wed Nov 27 16:21:14 1996 Stan Cox + + * Remove change of Oct 4. + * i386.h (outer_function_chain): Remove. + (current_function_calls_alloca): Remove. + (rtx_equal_function_value_matters): Remove. + (N_REGS_USED, N_ALLOCATABLE_REGISTERS): Remove. + * i386.md (adddi3_1, subdi3_1): Remove. + (adddi3, subdi3): Revert. + (movsf, movsf_mem, movsf_normal, movdf, movdf_mem, movdf_mem+1): + Likewise. + (movxf, movxf_mem, movxf_mem+1, addsidi3_1, addsidi3_2): Likewise. + (adddi3_1, subsidi3, subdi3_1): Likewise. + (addsidi3_1, addsidi3_2, subsidi3): Likewise. + (addsidi3_1, addsidi3_2, adddi3, subsidi3): Disable the problem + reload alternatives. + +Wed Nov 27 16:21:14 1996 J"orn Rennecke + + * i386.md (ashldi3_non_const_int, ashrdi3_non_const_int): + Use a hidden branch to handle shifts > 32 bit. + (lshrdi3_non_const_int): Likewise. + (floatdixf2): Don't use unnecessary XFmode operation. + +Wed Nov 27 15:23:41 1996 Jason Merrill + + * varasm.c (assemble_variable): Don't emit DWARF. + + * toplev.c (rest_of_type_compilation): Don't emit DWARF. + (main): Just let -gdwarf mean DWARF v1; remove -gdwarf-1. + + * dwarfout.c (decl_class_context): New fn. + (output_global_subroutine_die): Fix declaration case. + (output_global_variable_die): Likewise. + (output_type): Note when we are in a class defn. If we're a nested + type and our context hasn't been written, do that. Do early exit + for nested types. + (output_decl): Output the class context for fns and vars. + Don't emit detailed parm info for a fn declaration. + Use TYPE_DECL_IS_STUB, is_redundant_typedef. + (type_ok_for_scope): Support emitting nested types later. + (is_redundant_typedef): New fn. + (TYPE_DECL_IS_STUB): New macro. + (output_compile_unit_die): Check use_gnu_debug_info_extensions. + (output_local_subroutine_die, output_global_subroutine_die, + dwarfout_begin_function, dwarfout_end_function, dwarfout_line, + generate_macinfo_entry, dwarfout_init, dwarfout_finish): Likewise. + + * dwarf2out.c (decl_class_context): Static. + (lookup_type_die): Use TYPE_SYMTAB_POINTER. + (equate_type_number_to_die): Likewise. + (gen_subprogram_die): If we're in class context, it's a decl. + (gen_variable_die): Likewise. + (gen_decl_die): Output the containing type. + (dwarf2out_init): Lose type_die_table code. + +Wed Nov 27 08:30:54 1996 Brendan Kehoe + + * Makefile.in (DRIVER_DEFINES): New macro, with the macro + definitions for the driver. + (gcc.o): Make rule use $(DRIVER_DEFINES). + * gcc.c (process_command) [LANG_SPECIFIC_DRIVER]: Call + lang_specific_driver, passing along the addr of FATAL for errors + along with our ARGC and ARGV. + +Wed Nov 27 08:21:13 1996 Philippe De Muyter + + * m68k.md (iorsi_zexthi_ashl16): New pattern. + (ashrsi_16): New name for old unnamed pattern. + + * objc/misc.c (stdlib.h): Define __USE_FIXED_PROTOTYPES__ before + including stdlib.h. + +Wed Nov 27 08:17:34 1996 Joern Rennecke + + * i386.md (decrement_and_branch_until_zero+[3-8]): Add missing + CC_STATUS_INIT. + (decrement_and_branch_until_zero+[5-8]): Delete redundant assignment. + +Wed Nov 27 07:56:27 1996 J.T. Conklin + + * m68k.md ({and,ior,xor}si3_internal): Removed !TARGET_5200 from + conditionals now that entire insn is disabled when !TARGET_5200. + +Wed Nov 27 07:52:32 1996 Oliver Kellogg + + * 1750a.md (movhi pattern): Fixed MEM to MEM move problem. + +Tue Nov 26 14:50:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (move_by_pieces): Abort only if length positive at end. + * function.c (frame_offset, get_frame_size): Make HOST_WIDE_INT. + * function.h (struct function): Make frame_offset be HOST_WIDE_INT. + (get_frame_size): Add definition. + * reload1.c (reload): Make starting_frame_size be HOST_WIDE_INT. + +Mon Nov 25 16:55:14 1996 Jason Merrill + + * dwarf2out.c (dwarf2out_finish): Don't emit call frame info + for non-MIPS targets. + (is_redundant_typedef): New fn. + (modified_type_die): Refer to typedef DIEs where appropriate. + (gen_typedef_die): Support DECL_ORIGINAL_TYPE. + (gen_type_die): Likewise. Use is_redundant_typedef. + (gen_subprogram_die): Don't force a spec DIE for local class methods. + +Mon Nov 25 15:09:12 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (handle_braces): Rework last change. + +Mon Nov 25 13:49:51 1996 Jim Wilson + + * configure (build_exeext, exeext): New variables. Use sed to insert + build_exeext value into Makefile exeext rule. + (*-*-cygwin32): Set exeext. + * i386/x-cygwin32 (exeext): Delete. + * rs6000/x-cygwin32 (exeext): Delete. + + * dwarf.h (enum dwarf_location_atom): Add OP_MULT. + * dwarfout.c (output_mem_loc_descriptor, case MULT): Add. + * dwarfout2.c (mem_loc_descriptor, case MULT): Add. + + * dwarfout.c (dwarf_fund_type_name, case FT_unsigned_int64): Fix typo. + +Sun Nov 24 21:42:01 1996 J.T. Conklin + + * m68k.md (andsi3): Changed into define_expand. + (andsi3_internal): Rename from old andsi3, changed condition + to !TARGET_5200. + (andsi2_5200): New insn. + (iorsi3): Change into define_expand. + (iorsi2_internal): Rename from old iorsi3, changed condition + to !TARGET_5200. + (iorsi2_5200): New insn. + (xorsi3): Change into define_expand. + (xorsi2_internal): Rename from old xorsi3, changed condition + to !TARGET_5200. + (xorsi2_5200): New insn. + +Sun Nov 24 21:31:32 1996 John F. Carr + + * i386.h (N_ALLOCATABLE_REGISTERS): Remove extra backslash at + end of macro definition. + + * cpplib.c (LOCAL_INCLUDE_DIR): Remove default definition. + (include_defaults_array): Do not use LOCAL_INCLUDE_DIR or + TOOL_INCLUDE_DIR if they are not defined. + * cccp.c: Likewise. + + * Makefile.in (cppmain.o): New rule. + +Sun Nov 24 19:14:50 1996 Andreas Schwab + + * fold-const.c (merge_ranges): In (+,-) case, if lower bounds are + the same the result is always false. + +Sun Nov 24 18:48:31 1996 Richard Kenner + + * c-typeck.c (build_indirect_ref): Don't give warning for + dereferencing void * if evaluation is being skipped. + + * c-decl.c (poplevel): Don't call output_inline_function if + DECL_SAVED_INSNS is not set. + + * gcc.c (give_switch): Add new arg, INCLUDE_BLANKS. + (handle_braces): All callers changed. + Add support for new construct: %{S*^}. + +Sun Nov 24 18:44:48 1996 Paul Eggert + + * c-parse.in (unary_expr, expr_no_commas): Increment skip_evaluation + when analyzing an expression that is known not to be evaluated. + (sizeof, alignof): New rules. + * c-tree.h (skip_evaluation): New variable. + * c-common.c (skip_evaluation): Likewise. + (overflow_warning, unsigned_conversion_warning): Don't warn about + potential runtime errors when skipping evaluation. + * c-typeck.c (build_binary_op): Likewise. + (build_conditional_expr): op1 now always nonnull. + +Sun Nov 24 17:06:58 1996 Bernd Schmidt (crux@Pool.Informatik.RWTH-Aachen.DE) + + * toplev.c (rest_of_compilation): Call regscan before each + jump threading pass. + +Sun Nov 24 16:37:18 1996 Dave Love + + * configure (objc_thread_file): Set conditionally in each case so + may be overidden with `--enable-objcthreads=posix'. + Change GNU/Linux default to `single'. + +Fri Nov 22 17:53:15 1996 Jason Merrill + + * varasm.c (assemble_variable): Output DWARF in the third case, too. + + * dwarf2out.c (decls_for_scope): Only add DIEs with no parents to + our scope. + (gen_subroutine_type_die): Parm types go under the fn type DIE. + + * Makefile.in ($(T)crt{begin,end}.o): Move CRTSTUFF_T_CFLAGS after + general flags. + + * mips/t-iris6 (CRTSTUFF_T_CFLAGS): Define. + * mips.c (compute_frame_size): Fix fp_save_offset. + + * dwarf2out.c (new_die): If we get a NULL parent, inc limbo_die_count. + (decls_for_scope): Decrement limbo_die_count as appropriate. + (dwarf2out_finish): Check for good limbo_die_count. + (size_of_cfi): If regno too big for DW_CFA_offset, use offset_extended + instead. + (output_call_frame_info): Add disabled code for specifying ABI. + (dwarf2out_begin_function): Note all saved regs. + + * dwarf2out.c (gen_subprogram_die): Have a DIE for each fn at + toplevel. + (scope_die_for): Only use the NULL for fns and tags. + +Tue Nov 21 15:53:51 1996 Joern Rennecke + + * sh.c (output_stack_adjust): New argument TEMP. Changed all callers. + If the adjust cannot be done with one, but can be done with two + CONST_OK_FOR_I constants, do it that way. + +Thu Nov 21 14:25:55 1996 Ian Lance Taylor + + * fixincludes: Include in even if not C++ if + stderr needs to be defined. + +Wed Nov 20 15:38:13 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Do output function-scope tags + for DWARF 2. + * c-decl.c (pushtag): Set TYPE_CONTEXT on the tag. + * toplev.c, varasm.c: s/dwarf2out_file_scope_decl/dwarf2out_decl/g. + * dwarf2out.c (add_prototyped_attribute): Use a value of 1. + (gen_subprogram_die): Support AT_static_link. + (dwarf2out_decl): Rename from dwarf2out_file_scope_decl. + Give nested fns and tags a die_parent of NULL. + (decls_for_scope): Fix the die_parent for nested fns and tags. + (scope_die_for): If we get a context of NULL, just return it. + +Tue Nov 19 18:21:11 1996 Jason Merrill + + * dwarf2out.c (gen_subprogram_die): Support block extern decls. + (gen_variable_die): Likewise. + (gen_decl_die): Emit block extern function decls. + + * c-decl.c (implicitly_declare): Set DECL_ARTIFICIAL. + +Tue Nov 19 16:50:32 1996 Michael Meissner + + * configure (powerpc*-{sysv,elf,eabi{,aix,sim}}): Set + extra_headers to ppc-asm.h. + (powerpc*-{linux,solaris,rtems,vxworks}): Likewise. + (powerpc*-{winnt,pe,cygwin32}): Likewise. + + * rs6000/t-{ppc,ppcgas,solaris,winnt} (EXTRA_HEADERS): Don't set here. + +Mon Nov 18 14:51:46 1996 Jason Merrill + + * dwarf2out.c (DWARF_CIE_INSN_SIZE): New macro. + (DWARF_CIE_HEADER_SIZE): Use it. + (DWARF_FRAME_RETURN_COLUMN, DWARF_FRAME_REGNUM): New macros. + (output_call_frame_info, dwarf2out_begin_function): Use them. + For the MIPS, output the first CFA insn in the CIE. + * dwarf2.h (enum dwarf_call_reg_usage): Lose. + (dwarf_macinfo_record_type): Fix spelling. + * mips/mips.h (DWARF_FRAME_REGNUM, DWARF_FRAME_RETURN_COLUMN): Define. + + * dwarf2out.c (base_type_die): Just generate the DIEs as needed, + rather than building up some table. + (init_base_type_table): Lose. + (add_subscript_info): Use add_type_attribute. Don't give an upper + bound for an array of unknown size. + (gen_unspecified_parameters_die): Remove DWARF-1 kludge. + (dwarf2out_init): Lose call to init_base_type_table. + (is_c_family, is_fortran): New fns. + (gen_compile_unit_die): Recognize GNU F77. + (gen_array_type_die): Use AT_declaration for an array of unknown size. + (modified_type_die): Take TYPE_MAIN_VARIANT before passing it + to build_type_variant, so we ignore named variants. + (dwarf2out_file_scope_decl): Don't generate DIEs for built-in structs, + either; they will be emitted if they are used. + From wilson: + (gen_array_type_die): Force the element type out first on IRIX 6. + +Sun Nov 17 20:23:11 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): Fix error in previous change. + +Sat Nov 16 06:08:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * emit-rtl.c (operand_subword): Avoid confusion if sizeof (float) + is less than a full word. + + * alpha.h (MASK_BYTE_OPS): Now define as 1024. + * alpha/vms.h (TARGET_DEFAULT): Use symbolic values. + + * expr.c (get_inner_reference): Add new arg PALIGNMENT and compute it. + (expand_assignment, do_jump): Pass new arg to get_inner_reference. + (expand_expr, case COMPONENT_REF): Likewise. + * fold-const.c (optimize_bit_field_compare, decode_field_reference): + Likewise. + * tree.h (get_inner_reference): Add new arg. + + * Add support for Alpha/VMS, mostly from + Klaus Kaempf (kkaempf@progis.de) + * configure (alpha-dec-vms*): New target. + * alpha.c (override_options): Handle VAX format floating-point. + (print_operand, case ',', '-'): New cases. + (alpha_builtin_saveregs): Handle VMS convention. + (alpha_sa_{mask,size}, alpha_pv_save_size, alpha_using_fp): + New versions for VMS. + (output_{pro,epi}logue, function_arg): Likewise. + (direct_return): Never true on VMS. + (check_float_value): Return 0 for VMS. + (vmskrunch, alpha_{need,write}_linkage): New function. + * alpha.h ({MASK,TARGET}_{OPEN_VMS,FLOAT_VAX}): New macros. + (TARGET_SWITCHES): Add float-vax and float-ieee. + ({FUNCTION,LIBCALL}_VALUE, FUNCTION_VALUE_REGNO_P): R1 and R33 + are also return registers. + (ASM_OUTPUT_DOUBLE): Support both floating-point formats. + (PRINT_OPERAND_FUNCT_VALID_P): Add ',' and '-'. + * alpha.md ({div,mod}[sd]i3): Only for VMS. + (fp operations): Add modifiers for multiple floating-point formats. + (call patterns): Handle new calling sequence for VMS. + (tablejump): Make new pattern for VMS. + (nonlocal_goto_receiver, arg_home): New patterns. + * alpha/t-vms, alpha/vms.h, alpha/xm-vms.h: New files. + +Fri Nov 15 17:38:20 1996 Doug Evans + + * sdbout.c (current_file): New global. + (PUT_SDB_SRC_FILE): New PUT_SDB_FOO macro. + (sdbout_init): Initialize current_file ifdef MIPS_DEBUGGING_INFO. + (sdbout_{start_new,resume_previous}_source_file): New functions. + * toplev.c (debug_{start,end}_source_file): Call them if SDB_DEBUG. + * mips.h (PUT_SDB_SRC_FILE): Define. + +Fri Nov 15 16:11:25 1996 Jason Merrill + + * dwarfout.c (dwarfout_line): Don't emit line number info for + functions outside of .text. + +Fri Nov 15 15:52:42 1996 Stan Cox + + * i386/386bsd.h (COMMENT_BEGIN): Delete. + * i386/freebsd.h (COMMENT_BEGIN): Likewise. + * i386/netbsd.h (COMMENT_BEGIN): Likewise. + * i386/unix.h (COMMENT_BEGIN): Likewise. + +Fri Nov 15 13:22:42 1996 Jim Wilson + + * fold-const.c (unextend): Rewrite type conversions to avoid overflow. + +Fri Nov 15 12:11:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Properly copy an rtvec. + * emit-rtl.c (gen_rtvec_vv): New function. + (copy_rtx_if_shared): Call it. + * integrate.c (copy_for_inline): Likewise. + * reload1.c (eliminate_regs): Likewise. + * rtl.h (gen_rtvec_vv): Declare. + * genattrtab.c (simplify_cond): Make TESTS an array of rtunions. + * genextract.c (main): Use loop, not bcopy, to set recog_operands + from an rtvec. + * rtl.c (rtvec_alloc): Clear rtwint instead of rtvec. + + * machmode.h (HOST_PTR_PRINTF): Handle char * wider than long. + (HOST_WIDE_INT_PRINT_{DEC,UNSIGNED,HEX,DOUBLE_HEX}): New macros. + * final.c (asm_fprintf): Use "ll" prefix for a long long HOST_WIDE_INT. + (output_{asm_insn,addr_const}): Use HOST_WIDE_INT_PRINT_*. + * print-tree.c (print_node{,_brief}, case INTEGER_CST): Likewise. + * print-rtl.c (print_rtx, case 'w'): Use HOST_WIDE_INT_PRINT_DEC. + + * unroll.c (iteration_info): Fix code so that it knows iteration_var + is a HOST_WIDE_INT, not a long. + + * fold-const.c (operand_equal_p): Do comparison with REAL_VALUES_EQUAL. + (make_range): Properly decide when to get TREE_TYPE of arg0. + Handle EXP being an INTEGER_CST at end. + (fold_range_test): Handle return of 0 from make_range. + (fold, case TRUTH_AND_EXPR): Handle first arg of 0. + (fold, case TRUTH_OR_EXPR): Handle first arg of 1. + + * c-common.c (decl_attributes, case A_ALIAS): Add missing parens. + +Fri Nov 15 06:37:54 1996 Andreas Schwab + + * fold-const.c (range_binop): Set SNG1 to zero if ARG1 is a + not a lower or upper bound. + +Thu Nov 14 23:08:25 1996 Jason Merrill + + * flags.h (debug_info_type): Add DWARF2_DEBUG. + * toplev.c (main): Support DWARF2_DEBUG. Add -gdwarf-1, -gdwarf-2 + options. Check debug level after choosing type. + (debug_{start,end}_source_file, debug_{define,undef}): New functions. + (compile_file): Support dwarf2 separately from dwarf1. + (rest_of_type_compilation, rest_of_compilation): Likewise. + * final.c (final_start_function): Likewise. + (final_end_function, final_scan_insn, output_source_line): Likewise. + * varasm.c (assemble_variable): Likewise. + * dwarfout.c: Don't check DWARF_VERSION. + * dwarf2out.c: s/dwarfout/dwarf2out/g. Check DWARF2_DEBUGGING_INFO. + * c-lex.c (check_newline): Use debug_* instead of calling *out + functions directly. + * svr4.h (DWARF2_DEBUGGING_INFO): Define. + * mips/iris6.h (PREFERRED_DEBUGGING_TYPE): DWARF2_DEBUG. + (DWARF2_DEBUGGING_INFO): Define instead of DWARF_DEBUGGING_INFO. + (LINK_SPEC): Pass -w through. + * mips.h (PREFERRED_DEBUGGING_TYPE): Don't check `len'. + +Thu Nov 14 17:25:47 1996 Jeffrey A Law (law@cygnus.com) + + * h8300.c (dosize): Don't clobber static chain reg if needed by + current function. + +Wed Nov 13 17:05:19 1996 Jason Merrill + + * Makefile.in (stage?-start): Keep a copy of EXTRA_MULTILIB_PARTS + in the build directory. + +Tue Nov 12 23:17:17 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (print_operand, case 'Y'): Fix comparisons to handle + NaNs properly in all cases. + +Tue Nov 12 18:47:24 1996 Jim Wilson + + * expr.c (emit_group_store): For REG case, call gen_lowpart if + modes are different. + +Tue Nov 12 18:24:40 1996 Doug Rupp (rupp@gnat.com) + + * gcc.c (exit): If VMS, define as __posix_exit. + (option_map): Add define-macro and undefine-macro. + +Tue Nov 12 17:55:10 1996 Torbjorn Granlund + + * alpha.c (input_operand): If TARGET_BYTE_OPS accept HImode and QImode. + * alpha.h (MASK_BYTE_OPS): New define. + (TARGET_BYTE_OPS): New define. + (TARGET_SWITCHES): Handle -mbyte. + (LOAD_EXTEND_OP): When MODE is not SImode, return ZERO_EXTEND. + * alpha.md (zero_extendqidi2): Handle TARGET_BYTE_OPS. + (zero_extend{hidi,qisi,hisi}2): Likewise. + (extendqisi2): Use extendqidi2x if TARGET_BYTE_OPS. + (extendqidi2): Likewise. + (extendqidi2x): New pattern. + (extendhisi2): Use extendhidi2x if TARGET_BYTE_OPS. + (extendhidi2): Likewise. + (extendhidi2x): New pattern. + (movhi): Handle TARGET_BYTE_OPS. + (movhi matcher): Output ldwu and stw. + (movqi): Handle TARGET_BYTE_OPS. + (movqi matcher): Output ldbu and stb. + +Tue Nov 12 16:53:37 1996 Rob Savoye + + * configure (hppa1.1-pro*, i960-*-coff*,m68k-*-aout*): Add libgloss.h. + (m68k-*-coff*, mips*-*-elf*, sparc*-*-aout*, sparc*-*-coff*): Likewise. + * config/libgloss.h: New file. + +Tue Nov 12 16:21:45 1996 Joern Rennecke + + * jump.c (jump_optimize): Fix bug in Sep 23 change. + +Tue Nov 12 16:15:31 1996 Andrew Cagney (cagney@tpgi.com.au) + + * global.c (prune_references): Add missing symmetic CONFLICTP call. + +Tue Nov 12 14:34:40 1996 Philippe De Muyter + + * m68k.c (output_function_{pro,epi}logue): Save and restore + fp-registers only if TARGET_68881. + + * m68k/mot3300.h (ASM_OUTPUT_INTERNAL_LABEL): Prefix labels with "L%". + (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_CASE_LABEL): Likewise. + (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + + * m68k/mot3300.h (TARGET_DEFAULT): Use MASK_68040_ALSO, not MASK_68040. + * m68k/next.h, m68k/ccur-GAS.h (TARGET_DEFAULT): Likewise. + + * fixproto (std_files): Add sys/socket.h. + + * m68k.md (movqi): Emit 'st' for INTVAL & 255 == 255, not INTVAL == -1. + (seq,sne,sgt,sgtu,slt,sltu,sge,sgeu,sle,sleu): Allow "m" as operand 0. + +Tue Nov 12 14:17:45 1996 Paul Eggert + + * c-decl.c (grokdeclarator): Generate a warning if -Wimplicit, + unless a warning was already generated by -Wreturn-type. + +Tue Nov 12 14:11:02 1996 Pat Rankin + + * Make qsort callback routines conform to the ANSI/ISO standard. + * c-decl.c (field_decl_cmp): Use `const void *' arguments. + * global.c (allocno_compare): Likewise. + * reload1.c (hard_reg_use_compare, compare_spill_regs): Likewise. + (reload_reg_class_lower): Likewise. + * stupid.c (stupid_reg_compare): Likewise. + * local-alloc.c (qty_compare_1, qty_sugg_compare_1): Likewise. + (QTY_CMP_PRI, QTY_CMP_SUGG): New macros. + (qty_compare_1, qty_sugg_compare_1): Use them. + +Tue Nov 12 13:20:25 1996 Jim Wilson + + * fold-const.c (merge_ranges): In (+,-) case, treat subset specially + if lower bounds are the same. + +Tue Nov 12 13:10:01 1996 J.T. Conklin + + * m68k.md (addsi3): If TARGET_5200, use the lea insn to add small + constants to address registers. + (negsi2): Change into define_expand. + (negsi2_internal): Rename from old negsi2, changed condition + to !TARGET_5200. + (negsi2_5200): New insn. + (one_cmplsi2): Change into define_expand. + (one_cmplsi2_internal): Rename from old one_cmplsi2, changed + condition to !TARGET_5200. + (one_cmplsi2_5200): New insn. + (negdi2_5200): Corrected constraints. + (one_cmpldi2): Changed condition to !TARGET_5200. + + * m68k.c (m68k_align_loops_string, m68k_align_jumps_string): New vars. + (m68k_align_funcs_string, m68k_align_loops): Likewise. + (m68k_align_jumps, m68k_align_funcs): Likewise. + (override_options): New function. + * m68k.h (TARGET_OPTIONS): Added alignment options. + (MAX_CODE_ALIGN, ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE): + New macros. + (FUNCTION_BOUNDARY): Use value derrived from m68k_align_funcs + instead of constant. + + * m68k.c (output_function_{pro,epi}logue): Fix typo in last change. + +Tue Nov 12 09:26:51 1996 Torbjorn Granlund + + * i386.md (parallel inc/dec and branch-if-zero/nonzero): Use `+' in + constraint. + +Mon Nov 11 15:12:22 1996 Jason Merrill + + * libgcc2.c: Also define WEAK_ALIAS if ASM_OUTPUT_WEAK_ALIAS. + * mips/iris6.h (ASM_OUTPUT_WEAK_ALIAS): Define. + * varasm.c (assemble_alias): Use ASM_OUTPUT_WEAK_ALIAS. + + * dwarf2out.c (TYPE_USED_FOR_FUNCTION): Lose. + (gen_compile_unit_die): Only append -g with -g2 or better. + (scope_die_for): Don't emit any type info with -g1. + (gen_subprogram_die): Likewise. + (gen_decl_die): Likewise. + (dwarfout_file_scope_decl): Likewise. + (dwarfout_init): Likewise. + + * mips/iris6.h (TYPE_ASM_OP): Define. + (SIZE_ASM_OP): Define. + (ASM_WEAKEN_LABEL): Define. + (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_ALIGNED_LOCAL): Don't use ASM_DECLARE_OBJECT_NAME. + (ASM_OUTPUT_ALIGNED_BSS): Define. + (ASM_DECLARE_OBJECT_NAME): Redefine to emit .size directive. + (ASM_FINISH_DECLARE_OBJECT): Define. + (ASM_OUTPUT_DEF): Don't define. + +Fri Nov 8 20:38:51 1996 Jim Wilson + + * function.c (expand_function_end): Handle BLKmode structures returned + in registers. + +Fri Nov 8 20:27:07 1996 Jason Merrill + + * stor-layout.c (layout_record): Check for VAR_DECL instead + of TREE_STATIC. + + * varasm.c (assemble_variable): Do write out DWARF for + record-scope variables. + * toplev.c (rest_of_type_compilation): Do write out DWARF for + record-scope types. + + * dwarf2out.c (gen_enumeration_type_die): Set TREE_ASM_WRITTEN on a + complete enum type. + (gen_struct_or_union_type_die): Don't recurse between nested classes. + (gen_type_die): Write out nested classes by writing out their context. + +Fri Nov 8 17:40:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * emit-rtl.c (change_address): If MEMREF isn't changing, + return the old one. + + * expr.c (expand_assignment): Remove bogus resetting of alignment + to inner alignment. + (expand_expr, case COMPONENT_REF): Likewise. + +Fri Nov 8 16:31:31 1996 Stan Cox + + * reg-stack.c (compare_for_stack_reg, subst_stack_regs_pat): + Add support for float conditional move. + +Thu Nov 7 07:46:07 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_record): Treat constant size as variable if + it overflows. + * fold-const.c (const_binop, case *_DIV_EXPR): Don't do special + sizetype case if a constant overflows. + (size_binop): Use integer_{zero,one}p instead of explicit test. + * tree.c (integer_{zero,one,all_ones,pow2}p, real_{zero,one,two}p): + Return 0 if TREE_CONSTANT_OVERFLOW. + +Wed Nov 6 17:53:33 1996 Torbjorn Granlund + + * i386.md (parallel inc and branch-if-zero/nonzero): Add two + new pattern variants. Change incrementing pattern to use incl/jnz. + +Wed Nov 6 09:46:10 1996 Stan Cox + + * i386.c (override_options): Set defaults for -march and -mcpu. + (output_float_compare): Use cc_status.flags to mark if this + comparison can be done with fcomi. + (output_fp_cc0_set): A conditional move may be in a PARALLEL. + + * i386.h (CC_FCOMI): Define + + * i386.md (sgt,sgtu,sge,sle,bgt,blt,bge,ble): Use CC_FCOMI + (movsicc_1,movhicc_1): Use correct size suffix. + (movsfcc_1,movdfcc_1): Cleanup default move case. + +Wed Nov 6 09:46:10 1996 J"orn Rennecke + + * i386.h (HARD_REGNO_MODE_OK): If long double isn't XFmode, can't + allow XFmode. + +Tue Nov 5 22:49:56 1996 J"orn Rennecke + + * sh.md (define_split for and_shl_scratch): + Use rtx_equal_p on the operands to find out which alternative is used. + * sh.c (gen_shl_and): Try to generate shorter constant for and. + +Mon Nov 4 19:13:52 1996 Jason Merrill + + * dwarf2out.c: Clean up unused variables. + Use ASM_{GENERATE,OUTPUT}_INTERNAL_LABEL, shorten label names. + (loc_descriptor): Use reg_loc_descriptor. + (TYPE_DECL_IS_STUB): New macro. + (gen_decl_die): Use it. + (dwarfout_file_scope_decl): Use it. + +Mon Nov 4 10:23:46 1996 Michael Meissner + + * ginclude/va-ppc.h (__va_regsave_t,va_start,va_end): Wrap macro + and structures inside #ifndef __VA_PPC_H__ to allow reinclusion. + + * rs6000.h (LEGITIMATE_SMALL_DATA_P): Don't allow -fpic or TARGET_TOC. + (LEGITIMATE_LO_SUM_ADDRESS_P, LEGITIMIZE_ADDRESS): Likewise. + + * rs6000.md (movsi): Don't call elf_{high,low} if -fpic. + + * rs6000/cygwin32.h (STARTFILE_SPEC): Eliminate empty %{}. + +Sun Nov 3 15:56:35 1996 Michael Meissner + + * rs6000/sysv4.h (TARGET_TOC): Plain -fpic does not require a TOC. + ({MINIMAL_TOC,CONST}_SECTION_ASM_OP): -fpic should be treated like + -mrelocatable in these cases. + (ASM_OUTPUT_INT, ASM_OUTPUT_SECTION_NAME): Likewise. + (ASM_OUTPUT_ALIGNED_LOCAL): Use sdata_section, not sbss_section. + +Fri Nov 1 19:57:13 1996 Jason Merrill + + * dwarf2out.c (based_loc_descr): Use DBX_REGISTER_NUMBER. The + "frame base" is just the frame or stack reg without an offset. + (gen_subprogram_die): Likewise. + (dwarfout_begin_function): Use DBX_REGISTER_NUMBER. + +Fri Nov 1 09:50:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (make_range): Don't merge unsigned case with range + containing upper bound; instead merge just with zero and convert + a range with no upper bound to opposite one with no lower bound. + (merge_ranges): In (+,-) case, don't treat subset specially if + the upper bounds are the same; fix typo in others case here. + +Thu Oct 31 20:12:13 1996 Jeffrey A Law (law@cygnus.com) + + * fold-const.c (make_range, case PLUS_EXPR): Correct + normalization of an unsigned range that wraps around zero. + +Thu Oct 31 21:06:37 1996 Jason Merrill + + * mips/t-iris6 (EXTRA_MULTILIB_PARTS): Define. + (EXTRA_PARTS): Don't define. + + * dwarf2out.c (gen_struct_or_union_type_die): Use AT_specification + for nested types defined outside their containing class. Lose + is_complete. + (gen_enumeration_type_die): Lose is_complete. + (gen_type_die): Lose is_complete. + (add_name_and_src_coords_attributes): Tweak. + (gen_subroutine_type_die): Use scope_die_for. + (gen_ptr_to_mbr_type_die): Likewise. + (gen_subprogram_die): Support AT_artificial. + (gen_variable_die): Likewise. + (dwarfout_file_scope_decl): Lose finalizing. + +Thu Oct 31 18:43:18 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa.c (emit_move_sequence): Refine previous change. + +Thu Oct 31 13:25:32 1996 Jim Wilson + + * crtstuff.c: Put HAS_INIT_SECTION ifdefs around Irix6 support. + + * tree.c (decl_function_context): Handle QUAL_UNION_TYPE. + + * calls.c (expand_call): Disable special handling for const calls + that return a PARALLEL rtx. + * expr.c (expand_expr, case CONSTRUCTOR): Don't use a PARALLEL + target. + +Thu Oct 31 11:45:00 1996 Michael Meissner + + * rs6000/t-{ppcgas,ppc,solaris} (EXTRA_MULTILIB_PARTS): Add + {e,s}crt{i,n,0}.o. + ({stmp,install}-crt): Delete, no longer used. + ({,INSTALL_}LIBGCC): Remove {stmp,install}-crt rule. + +Thu Oct 31 02:49:58 1996 Torbjorn Granlund + + * i386.md (parallel inc and branch-if-zero/nonzero): + Check for -1, not zero. + +Wed Oct 30 15:50:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (range_binop): Strip NOPs from result and + verify it's an INTEGER_CST. + (make_range, case BIT_NOT_EXPR): Fix typo in constant for PLUS_EXPR. + + * stor-layout.c (layout_record): Use HOST_WIDE_INT for size. + + * stmt.c (expand_asm_operands): Disallow matching constraints + on output and validate the numbers on inputs. + +Tue Oct 29 16:21:59 1996 Michael Meissner + + * gcc.c (process_command,main): Process -specs=file and -specs + file after reading the main specs file to allow the user to + override the default. + (DEFAULT_WORD_SWITCH_TAKES_ARG): Add specs to list. + (option_map): Likewise. + +Tue Oct 29 15:49:18 1996 Jason Merrill + + * Makefile.in (stmp-multilib): Pass $flags to s-m-sub in + MULTILIB_CFLAGS. + (stmp-multilib-sub): Build EXTRA_MULTILIB_PARTS. + ($(T)crt*.o): Add $(T), lose stamp-crt rule, use MULTILIB_CFLAGS. + (install-multilib): Install EXTRA_MULTILIB_PARTS. + +Mon Oct 28 20:09:39 1996 J"orn Rennecke + + * sh.md (shl_sext_ext): Don't accept simple left/right shift variant. + * sh.c (EXT_SHIFT_SIGNED): New macro. + (shl_sext_kind, gen_shl_sext): try left shift - sign extend - + left shift - arithmetic right shift in case 2. + +Mon Oct 28 14:55:42 1996 Jim Wilson + + * configure (sh-*-*): Set float_format to sh. + * config/float-sh.h: New file. + +Mon Oct 28 14:26:08 1996 Ian Lance Taylor + + * mips/mips.h (RTX_COSTS): Add cases for SIGN_EXTEND and ZERO_EXTEND. + + * m68k/lb1sf68.asm: Change # to IMM in udivsi3 __mcf5200__. + + * combine.c (simplify_rtx): Add some optimizations for TRUNCATE. + (expand_compound_operation): Add some optimizations for ZERO_EXTEND. + +Mon Oct 28 14:11:20 1996 Gavin Koch + + * varasm.c (make_decl_rtl,assemble_variable): + Allow named sections for uninitialized variables. + +Mon Oct 28 13:08:51 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa.c (emit_move_sequence): If reload in progress, replace + reference to pseudo with reference to corresponding MEM. + + * c-typeck.c ({un,}signed_type): If can't do anything, call + signed_or_unsigned_type. + (signed_or_unsigned_type): If already right signedness, return. + +Mon Oct 28 13:05:26 1996 Stephen Williams (steve@icarus.com) + + * i960.h: Add specification for -Jx types. + * i960/t-960bare: Include multilib support for Jx types. + +Mon Oct 28 10:06:00 1996 Michael Meissner + + * rs6000/t-{ppc{,gas},solaris} (install-crt): Depend on + installdirs, not install-dir. + + * rs6000/sysv4.h (TARGET_TOC): -fpic does not use a TOC area. + +Mon Oct 28 09:07:42 1996 J"orn Rennecke + + * reload1.c (delete_output_reload): Don't use delete_insn + when deleting all stores into a replaced pseudo. + + * sh.md (movsf_ieq, movsf_ie): Merged the former into the latter. + Changed matching define_split appropriately. + (movsf): Changed appropriately. + (reload_insf) Define. + * sh.h (SECONDARY_INPUT_RELOAD_CLASS): Define. + +Mon Oct 28 08:38:23 1996 J"orn Rennecke + + * dsp16xx.h (ASM_OUTPUT_BYTE): Adjust definition to actual type of + VALUE, which is HOST_WIDE_INT. + +Mon Oct 28 07:36:07 1996 Ulrich Drepper + + * ginclude/stddef.h: Make sure file is processed if some of the + known __need_* macros is defined. + +Sun Oct 27 21:37:59 1996 J.T. Conklin + + * m68k.c (output_function_prologue): Adjust SP then use movmel with + plain address indirect mode for TARGET_5200. + (output_function_epilogue): Disable moveml and use several movel's + instead for TARGET_5200. + (output_function_{pro,epi}logue): Use lea instruction to adjust + stack pointer for short displacements for TARGET_5200. + +Sun Oct 27 15:27:45 1996 Jeffrey A Law (law@cygnus.com) + + * fold-const.c (merge_ranges): Fix thinko/typo. + +Sat Oct 26 22:07:04 1996 Ian Lance Taylor + + * expr.c (convert_modes): Before returning a const_double for a + large unsigned value, zero extend an integer value if necessary. + +Sat Oct 26 15:24:55 1996 Philippe De Muyter + + * m68k/x-mot3300 (XCFLAGS): Disable native assembler's jump + optimization for expr.o and cp/decl.o. + +Sat Oct 26 14:04:09 1996 Ben Harris + + * m68k.c (output_function_prologue): Add REGISTER_PREFIX to stack + probe instruction. + +Sat Oct 26 13:59:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * explow.c (allocate_dynamic_stack_space): Delete reference to + nonexistant macro ALLOCATE_OUTGOING_ARGS. + + * next.h (CPP_PREDEFINES): Add -D_NEXT_SOURCE. + +Sat Oct 26 13:50:49 1996 Mark Mitchell (mitchell@centerline.com) + + * configure (i486-ncr-sysv4*): Use i386/sysv4gdb if stabs and gas. + +Sat Oct 26 12:20:35 1996 John F. Carr + + * configure: Support --with-cpu=* for SPARC. Or target default + values instead of adding them. + * sparc.c (cpu_default): Add entries for v8 and supersparc. + * sparc.h: Define TARGET_CPU values for v8 and supersparc. + +Sat Oct 26 11:38:01 1996 Kamil Iskra + + * collect2.c (dump_file): Call fclose for opened files. + +Sat Oct 26 11:29:29 1996 J"orn Rennecke (amylaar@cygnus.co.uk) + + * jump.c (jump_optimize): Fix second error in last change. + + * svr3.h: Fix typo which makes comment text be non-comment. + +Fri Oct 25 16:18:39 1996 Michael Meissner + + * rs6000/t-winnt (LIBGCC1): Don't build libgcc1. + (EXTRA_PARTS): Build crti.o, crtn.o. + (stmp-crt): Remove old multilib support. + +Thu Oct 24 15:09:14 1996 Jim Wilson + + * fold-const.c (make_range, case PLUS_EXPR): Normalize an unsigned + range that wraps around 0. + +Thu Oct 24 14:37:17 1996 Ian Lance Taylor + + * mips.md: Change predicates for 64 bit arithmetic operations + so that they accept sign extended registers as operands. + (extendsidi2): Accept hi or lo as input. + * mips.c (movdi_operand, se_register_operand, + se_reg_or_0_operand, se_uns_arith_operand, se_arith_operand, + se_nonmemory_operand, se_nonimmediate_operand): New functions. + (mips_move_2words): Handle a SIGN_EXTEND source. + (print_operand): Handle a SIGN_EXTEND operand. + (mips_secondary_reload_class): Handle a SIGN_EXTEND rtx. + * mips.h: Declare new mips.c functions. + (PREDICATE_CODES): Add new functions. + +Thu Oct 24 07:41:14 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (make_range, comparison cases): When making range + for unsigned to merge in, use full range. + + * stor-layout.c (GET_MODE_ALIGNMENT): Delete definition; duplicate. + +Thu Oct 24 07:28:53 1996 J"orn Rennecke + + * reload1.c (emit_reload_insns): Check for second_reloadreg + in SECONDARY_OUTPUT_RELOAD_CLASS / PRESERVE_DEATH_INFO_REGNO_P case. + +Wed Oct 23 14:27:43 1996 Mike Stump + + * crtstuff.c (__do_global_dtors_aux): Allow finalization code to + be run more than once. + * libgcc2.c (__do_global_dtors): Ditto. + +Wed Oct 23 20:42:23 1996 Joern Rennecke + + * sh.c (dump_table): handle SFmode and DFmode. + (broken_move): handle simple PARALLEL. + (machine_dependent_reorg, pc-relative move generation): Likewise. + * sh.h (CONST_DOUBLE_OK_FOR_LETTER_P): always true for 'F' . + (LEGITIMATE_CONSTANT_P): accept SFmode and DFmode. + * sh.md (movdf_k, movsf_i, movsf_ie): new alternative for + pc-relative load. + (movsf_ieq): new define_insn with matching define_split. + (movsf): use it where appropriate. + (consttable_sf, consttable_df): new define_insns. + +Wed Oct 23 17:48:32 1996 Andreas Schwab + + * svr4.h (MAKE_DECL_ONE_ONLY): Fix typo in use of macro parameter. + +Wed Oct 23 17:46:13 1996 Pat Rankin + + * cexp.y (yylex): Cast string literal to U_CHAR* for lookup() call. + +Wed Oct 23 14:50:04 1996 Jason Merrill + + * stmt.c (expand_return): Expand cleanups. Make sure we get pseudo + and provide target in non-BLKmode case. Get proper return type of fn. + +Wed Oct 23 14:16:06 1996 Ian Lance Taylor + + * reload.c (find_reloads): Handle any unary operator. + * recog.c (constrain_operands): Likewise. + + * mips.md: Remove extendsidi2 define_expand. + Rename extendsidi2_internal define_insn to extendsidi2, and add a + register to register case. + +Wed Oct 23 14:08:31 1996 Jim Wilson + + * a29k.c (a29k_makes_calls): New global variable. + (compute_regstack_size, a29k_compute_reg_names): New functions. + (output_prolog): Much code moved to two new functions. + Use a29k_makes_calls instead of makes_calls. + * a29k.h (ASM_DECLARE_FUNCTION_NAME): Call a29k_compute_reg_names. + + * calls.c (expand_call): In target code, move PARALLEL case above + target != case. + + * mips.c (block_move_load_store, block_move_sequence): Delete. + (block_move_loop): New parameter orig_dest. Call change_address to + create new MEM instead of gen_rtx. + (expand_block_move): New local orig_dest. Pass it to block_move_loop. + Call change_address to create new MEM instead of gen_rtx. + +Wed Oct 23 10:30:32 1996 J"orn Rennecke + + * loop.c (combine_givs): When combining a DEST_REG giv with its + only use, always set the benefit of the combined giv to that of + the DEST_REG giv. + + * emit-rtl (gen_lowpart_common): When converting a floating + point value into an integer, use WORD as (first) word. + + * combine.c (can_combine_p): When SMALL_REGISTER_CLASSES is defined, + avoid substituting a return register into I3. + + * optabs.c (emit_libcall_block): Before adding an REG_EQUAL note, + check that it will really apply to a single instruction. + (expand_binop, expand_fix): Likewise. + +Wed Oct 23 10:20:52 1996 Stephen L Moshier (moshier@world.std.com) + + * real.c (exact_real_inverse): New function, if REAL_ARITHMETIC. + * fold-const.c (exact_real_inverse): Likewise, if no REAL_ARITHMETIC. + (fold, case RDIV_EXPR): Turn divide by constant into multiplication + by the reciprocal, if optimizing and result is exact. + * real.h (exact_real_inverse): Declare. + +Wed Oct 23 00:12:52 1996 Torbjorn Granlund + + * expr.h (emit_store_flag_force): Declare. + +Tue Oct 22 18:32:20 1996 Jim Wilson + + * unroll.c (unroll_loop): Always reject loops with unbalanced blocks. + +Tue Oct 22 18:27:06 1996 Ian Lance Taylor + + * config/fp-bit.c (float_to_usi): Correct thinko: avoid negative shift. + (df_to_sf): Remember any discarded nonzero bits in the low order + guard bit. + + * ginclude/va-mips.h: Add support for -mips1 and -msoft-float when + using -mabi=eabi. + * mips/abi64.h (SETUP_INCOMING_VARARGS): When MIPS EABI, handle + TARGET_SINGLE_FLOAT or ! TARGET_FLOAT64 correctly when saving + floating point registers to the stack. + * mips/mips.c (mips_function_value): If TARGET_SINGLE_FLOAT, use + GP_RETURN for floating point types larger than 4 bytes. + +Tue Oct 22 09:43:49 1996 Geoffrey Noer + + * rs6000/cygwin32.h (LIB_SPEC): Add -lkernel32 all of the time, + and {user,gdi,comdlg}32 if -mwindows. + +Tue Oct 22 05:24:05 1996 Jason Merrill + + * dwarf2out.c (scope_die_for): Don't skip lexical blocks. + (gen_lexical_block_die): Call push_decl_scope. + (gen_subprogram_die): Never refer to the function symbol. + (dwarfout_begin_prologue): Likewise. + +Mon Oct 21 20:22:49 1996 Torbjorn Granlund + + * expmed.c (emit_store_flag_force): New function. + * optabs.c (expand_binop): Use it. + + * expr.c (do_store_flag): Don't check if target is 0 in code + emitting store flag as compare-branch. + +Mon Oct 21 17:58:33 1996 Ian Lance Taylor + + * mips.c (override_options): Correct typo (MASK_64BIT should + have been TARGET_64BIT). + +Mon Oct 21 13:58:54 1996 Jim Wilson + + * unroll.c (loop_comparison_code): New static variable. + (unroll_loop): Add check for loop_comparison_code + (loop_iterations): Set loop_comparison_code. + + * sh.c (gen_shl_sext): Add missing parameter to shl_sext_kind call. + + * mips.h (INITIAL_FRAME_POINTER_OFFSET): Delete. + + * loop.c (strength_reduce): Add check for ! bl->reversed to + auto_inc_opt code. + +Mon Oct 21 12:28:15 1996 J"orn Rennecke + + * jump.c (jump_optimize): Fix bug in Oct. 14 change. + +Mon Oct 21 07:59:16 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_expr): Disable optimization of using convert + if exp's type is a subtype. + + * c-typeck.c (build_array_ref): If -Wchar-subscripts, also warn + in case when pointer is being indexed. + +Mon Oct 21 07:39:31 1996 J"orn Rennecke + + * jump.c (jump_optimize): Use emit_store_flag even if branches + are cheap, if the store is even cheaper. + +Sun Oct 20 20:01:09 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload1.c (reload_reg_free_p, reloads_conflict): RELOAD_OTHER + and RELOAD_FOR_OTHER_ADDRESS conflict. + + * i386.md (ffs[sh]i2): Add missing CC_STATUS_INIT. + +Fri Oct 18 13:32:13 1996 Michael Meissner + + * rs6000.md (float conversion insns): Generate correct code + if the bit 15 of rs6000_fpmem_offset is non-zero. + +Thu Oct 17 23:22:03 1996 Jason Merrill + + * dwarfout.c (data_member_location_attribute): Support binfos. + (output_inheritance_die): New fn. + (output_type): Use it. + + * dwarf2out.c (value_format): Split out from... + (output_value_format): Here. + (build_abbrev_table): Use value_format. + (size_of_locs): New fn. + (size_of_die): Don't assume a loc needs a 2-byte length. + (value_format, output_die): Likewise. + +Thu Oct 17 14:46:14 1996 Ian Lance Taylor + + * mips.c (override_options): In 64 bit EABI mode, set TARGET_LONG64. + +Thu Oct 17 11:34:51 1996 Bob Manson + + * expr.c (do_jump): Conditionalize cleanups for the COND_EXPR case, + similarly to the way TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR are + handled. + +Thu Oct 17 01:20:16 1996 Jim Wilson + + * m68k.h (MASK_68040_ALSO): New macro. + (TARGET_SWITCHES): Option -m68020-40 includes MASK_68040_ALSO. + +Wed Oct 16 16:25:38 1996 Jason Merrill + + * dwarf2out.c (scope_die_for): Also support decls, add asserts. + (modified_type_die): Modified types all go under comp_unit_die. + (add_type_attribute): Just pass context_die through. + (various): Revert useless lookup_type_die change. + (gen_subprogram_die): Use scope_die_for. Call push_decl_scope. + (gen_inlined_subroutine_die): Call push_decl_scope. + (gen_struct_or_union_type_die): Likewise. + (gen_decl_die): Don't call push_decl_scope. + + * mips/iris6.h (*_SPEC): Replace enumeration of !mabi= with !mabi*. + (ASM_OUTPUT_{CON,DE}STRUCTOR): Enable. + (STARTFILE_SPEC): Support -mips4, -shared. + (ENDFILE_SPEC): Likewise. + (LIB_SPEC): Support -shared, avoid warning 84. + (LIBGCC_SPEC): Define. + (LINK_SPEC): Support -shared, remove -woff 84. + * mips/t-iris6 (EXTRA_PARTS): Add crtstuff. + * crtstuff.c: Support Irix 6. + * configure: Don't use collect2 for Irix 6. + * libgcc2.c (__main): Don't use any of this stuff if HAS_INIT_SECTION. + +Wed Oct 16 11:46:37 1996 Mike Stump + + * elxsi.h (CHECK_FLOAT_VALUE): Removed. + +Wed Oct 16 14:19:38 1996 Jim Wilson + + * iris6.h (CPP_PREDEFINES): Add -D_LONGLONG. + (CPP_SPECS): Remove -D_LONGLONG. + +Wed Oct 16 03:34:42 1996 Torbjorn Granlund + + * i386.md (parallel inc/dec and branch-if-zero/nonzero): New patterns. + +Tue Oct 15 22:28:11 1996 Ian Lance Taylor + + * mips.h (enum mips_abi_type): Add ABI_EABI. + (CPP_SPEC): Define __mips_soft_float if -msoft-float, and + __mips_eabi if -mabi=eabi. + (INITIAL_ELIMINATION_OFFSET, CUMULATIVE_ARGS, + GO_IF_LEGITIMATE_ADDRESS, CONSTANT_ADDRESS_P, LEGITIMATE_CONSTANT, + LEGITIMIZE_ADDRESS): Add support for MIPS EABI. + * mips/abi64.h (STACK_BOUNDARY, MIPS_STACK_ALIGN, + FUNCTION_ARG_PADDING, RETURN_IN_MEMORY, SETUP_INCOMING_VARARGS): + Add support for MIPS EABI. + (FUNCTION_ARG_PASS_BY_REFERENCE): Define. + (FUNCTION_ARG_CALLEE_COPIES): Define. + * mips.c (mips_const_double_ok, function_arg_advance, + function_arg, function_arg_partial_nregs, override_options, + compute_frame_size): Add support for MIPS EABI. + (function_arg_pass_by_reference): New function. + * ginclude/va-mips.h: Add support for MIPS EABI. + +Tue Oct 15 19:10:08 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Don't write out + DWARF for function-scope types yet. + (compile_file): Do send vars with no RTL to the DWARF code. + +Tue Oct 15 17:54:43 1996 Doug Evans + + * loop.c (strength_reduce): Avoid taking PATTERN of a label. + +Tue Oct 15 16:52:33 1996 Ian Lance Taylor + + * mips/iris6.h: (SUBTARGET_CPP_SIZE_SPEC): Define. + (SUBTARGET_CPP_SPEC): Remove definitions of __SIZE_TYPE__ and + __PTRDIFF_TYPE__, now in SUBTARGET_CPP_SIZE_SPEC. + +Tue Oct 15 11:19:17 1996 Lee Iverson + + * mips.h (CPP_SPEC): Restore -D_LANGUAGE_C for Objective C. + +Mon Oct 14 18:03:35 1996 Jason Merrill + + * dwarf2out.c (gen_decl_die): Do generate dies for classes with -g1. + (dwarfout_file_scope_decl): Likewise. + +Mon Oct 14 16:31:44 1996 Joern Rennecke + + * jump.c (jump_optimize): Check for if (...) { x = a; goto l; } x = b; + +Mon Oct 14 14:19:49 1996 Jason Merrill + + * dwarf2out.c (modified_type_die): Don't bother with AT_address_class. + (add_data_member_location_attribute): Handle getting a binfo. + (add_location_or_const_value_attribute): Handle a decl with no RTL. + (add_pure_or_virtual_attribute): Add AT_vtable_elem_location. + (add_name_and_src_coords_attributes): Only use DECL_ASSEMBLER_NAME + for staticp things. + (gen_subprogram_die): Set up AT_inline for abstract decls. + (gen_inheritance_die): New fn. + (gen_member_die): Also emit info for base classes. + +Sat Oct 12 00:07:00 1996 Doug Evans + + * fold-const.c (make_range): Handle NULL operand 0 like in BIND_EXPRs. + +Fri Oct 11 15:42:22 1996 Jason Merrill + + * toplev.c (rest_of_compilation): If we did a + save_for_inline_copying, reset DECL_ABSTRACT_ORIGIN for the + function when we're done. + + * toplev.c (main): DWARF works with C++ now. + + * dwarf2out.c (gen_subprogram_die): Disable MIPS_AT_has_inline + support for now. + +Fri Oct 11 14:31:10 1996 Torbjorn Granlund + + * dwarfout.c: (output_bound_representation): Fix typo in prototype. + +Fri Oct 11 12:19:21 1996 Ian Lance Taylor + + * mips.h ({,SUBTARGET_}MIPS_AS_ASM_SPEC): Define. + ({GAS,TARGET,SUBTARGET}_ASM_SPEC): Define. + (SUBTARGET_ASM_{OPTIMIZING,DEBUGGING}_SPEC): Define. + (ASM_SPEC): Rewrite to use above specs. + (SUBTARGET_CPP{,_SIZE}_SPEC): Define. + (CPP_SPEC): Use above specs. Don't define _LANGUAGE_C if C++ or + Objective C. + ({,SUBTARGET_}EXTRA_SPECS): Define. + * mips/dec-bsd.h ({CPP,ASM}_SPEC): Don't define. + * mips/dec-osf1.h (CPP_SPEC): Don't define. + (SUBTARGET_CPP_SIZE_SPEC): Define. + * mips/elf64.h (CPP_SPEC): Don't define. + (SUBTARGET_CPP_SPEC): Define. + * mips/gnu.h (TARGET_DEFAULT): Define. + (ASM_SPEC): Don't define. + * mips/iris3.h (CPP_SPEC): Don't define. + (SUBTARGET_CPP_SPEC): Define. + * mips/iris4loser.h (ASM_SPEC): Don't define. + (SUBTARGET_MIPS_AS_ASM_SPEC): Define. + (SUBTARGET_ASM_OPTIMIZING_SPEC): Define. + * mips/iris5.h (CPP_SPEC): Don't define. + (SUBTARGET_CPP_SPEC): Define. + * mips/iris6.h ({CPP,ASM}_SPEC): Don't define. + (SUBTARGET_{CPP,ASM,MIPS_AS_ASM,ASM_DEBUGGING}_SPEC): Define. + * mips/netbsd.h ({CPP,ASM}_SPEC): Don't define. + (SUBTARGET_CPP_SPEC): Define. + * mips/osfrose.h ({CPP,ASM,ASM_FINAL}_SPEC): Don't define. + (SUBTARGET_CPP{,_SIZE}_SPEC): Define. + * mips/sni-svr4.h (CPP_SPEC): Don't define. + (SUBTARGET_CPP_SIZE_SPEC): Define. + +Thu Oct 10 17:58:49 1996 Jason Merrill + + * mips/iris6.h (ASM_OUTPUT_SECTION_NAME): Define. + (DWARF_OFFSET_SIZE): Define. + + * dwarf2out.c (most everywhere): Support SGI/MIPS -mabi=64 by fixing + code which assumed pointers are 4 bytes long, parameterizing many + sizes on DWARF_OFFSET_SIZE and using DELTA instead of DELTA4, + DATA instead of DATA4, FORM_ref instead of FORM_ref4. + (DWARF_ROUND, UNALIGNED_DOUBLE_INT_ASM_OP): New macros. + (UNALIGNED_WORD_ASM_OP, ASM_OUTPUT_DWARF_DELTA): Likewise. + (ASM_OUTPUT_DWARF_DATA, DW_FORM_data, DW_FORM_ref): New macros. + (gen_variable_die): Only equate_decl_number_to_die if + decl is TREE_STATIC. + (get_AT): Fix thinko. + + * dwarf2out.c (constant_size): New fn. + (size_of_die): Use it instead of assuming 4 bytes. + (output_value_format, output_die): Likewise. + (build_abbrev_table): Need new abbrev if size of constant differs. + (dwarf_attr_name): Add new SGI/MIPS extensions. + (gen_subprogram_die): Support DW_AT_MIPS_has_inlines. + (gen_inlined_subroutine_die): Likewise. + +Thu Oct 10 16:38:58 1996 Ian Lance Taylor + + * mips.md (mov[sd]fcc): Use register_operand, not reg_or_0_operand, + for source predicates. + +Thu Oct 10 15:19:38 1996 Michael Meissner + + * rs6000.md (floatsidf2_load): For large stack frames, do not + generate an illegal memory reference. + (movdi, movdf define_splits): Fix code so that it works for either + big or little endian hosts generating code for either big or + little endian targets. + + (from Jim Wilson) + * rs6000.c (rs6000_save_toc_p): Delete global variable. + (rs6000_{save,restore}_machine_status): Do not save/restore it. + (rs6000_init_expanders): Do not initialize it. + (rs6000_stack_info): Always create TOC save space. + + * rs6000.md (NT indirect call insns): Do not set + rs6000_save_toc_p. + + * rs6000.h (rs6000_save_toc_p): Delete declaration. + +Wed Oct 9 18:06:54 1996 Ian Lance Taylor + + * mips.h (EMPTY_FIELD_BOUNDARY): Define as 32. + * mips/abi64.h (EMPTY_FIELD_BOUNDARY): Don't define. + + * mips/abi64.h (TARGET_DEFAULT, TARGET_LONG64, CPP_PREDEFINES, + CPP_SPEC): Move from here... + * mips/iris6.h: ...to here. + +Wed Oct 9 16:43:51 1996 Jim Wilson + + * configure (i[3456]86-dg-dgux): Use install-headers-cpio. + + * expr.c (store_constructor): Delete unnecessary increment. + +Wed Oct 9 16:29:22 1996 Gavin Koch + + * cccp.c (do_include): Treat ENOTDIR like ENOENT when an open fails. + +Wed Oct 9 16:26:57 1996 Paul Eggert + + * gcc.c (default_compilers): -ansi no longer implies -$ to cpp. + * c-lex.c (yylex): Treat `$' just like `_', except issue a + diagnostic if !dollars_in_ident or if pedantic. + * c-decl.c (dollars_in_ident): DOLLARS_IN_IDENTIFIERS is now Boolean. + (c_decode_option): -fdollars-in-identifiers is now independent + of -ansi, of -traditional, and of DOLLARS_IN_IDENTIFIERS. + * cexp.y (initialize_random_junk): Ignore DOLLARS_IN_IDENTIFIERS. + * cccp.c (dollars_in_ident): Remove; replaced by is_idchar['$']. + (main): Initialize is_idchar and is_idstart directly when given -$. + Ignore DOLLARS_IN_IDENTIFIERS. + (rescan): Diagnose $ in identifier if pedantic. + (initialize_char_syntax): Assume $ is allowed in identifier; + `main' will change this if -$ is given. + * cpplib.h (DOLLARS_IN_IDENTIFIERS): Remove. + * cpplib.c (cpp_options_init): Ignore DOLLARS_IN_IDENTIFIERS. + (parse_name): Diagnose $ in identifier if pedantic. + (cpp_handle_options): -traditional no longer messes with + dollars_in_ident. + * i386/dgux.h, m68k/apollo68.h (DOLLARS_IN_IDENTIFIERS): Remove. + * m88k.h, mips.h, nextstep.h, pa.h (DOLLARS_IN_IDENTIFIERS): Remove. + * vax/ultrix.h, vax/vms.h (DOLLARS_IN_IDENTIFIERS): Remove. + * convex.h (OVERRIDE_OPTIONS): Don't need to set + dollars_in_ident any more, since -ansi doesn't change it. + +Wed Oct 9 07:35:47 1996 Doug Evans + + * Allow prefix attributes in more places. + * c-parse.in: Update number of shift/reduce conflicts. + ({typed_declspecs,reserved_declspecs,declmods}_no_prefix_attr): New. + (current_declspecs): Initialize to NULL_TREE. + (fndef): Pass current_declspecs, not $1, to start_function. + (old_style_parm_decls): Renamed from xdecls. + (datadecl, declmods): Add references to new rules. + (setspecs): Call split_specs_attrs. + (absdcl1): Remove case with setattrs. + * c-common.c (split_specs_attrs): New function. + +Wed Oct 9 05:48:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sdbout.c: Include defaults.h. + * Makefile.in (sdbout.o): Make dependency list match included files. + + * fold-const.c (range_test): Function deleted. + (range_binop, make_range, build_range_check): New functions. + (merge_ranges, fold_range_test): Likewise. + (fold_truthop): No longer call range_test. + (fold, case TRUTH_{AND,OR}{,IF}_EXPR): Call fold_range_test. + +Tue Oct 8 22:03:32 1996 Torbjorn Granlund + + * configure: Set cpu_type for pyramid. + +Tue Oct 8 21:54:04 1996 Jason Merrill + + * final.c (final_start_function): Call dwarfout_begin_prologue. + + * dwarf2out.c (pubname_*, arange_*): New data for .debug_pubnames + and .debug_aranges sections. + (add_pubname): New fn. + (size_of_pubnames): Reimplement. + (output_pubnames): Likewise. + (add_arange): New fn. + (size_of_aranges): Include function sections. + (output_aranges): Likewise. + (gen_variable_die): Call add_pubname. + (add_name_and_src_coords_attributes): Use DECL_ASSEMBLER_NAME for now. + (decl_start_label): Renamed from function_start_label. + (gen_subprogram_die): If weak or one_only, use a local label for + AT_low_pc. Call add_pubname and add_arange. + (dwarfout_begin_prologue): New fn. Start up FDE here. + (dwarfout_begin_function): Not here. + (get_AT): Split out. Look in specification and abstract_origin DIEs. + (get_AT_low_pc, get_AT_string, get_AT_flag, get_AT_unsigned, + get_AT_hi_pc): Use it. + (dwarfout_finish): Variables can produce pubnames, too. + +Tue Oct 8 19:35:40 1996 Torbjorn Granlund + + * m88k/dgux.h (CPP_SPEC): Avoid newline in the string. + + * final.c (final): Update insn_current_address before calling + final_scan_insn. + +Tue Oct 8 17:52:02 1996 Jim Wilson + + * unroll.c (unroll_loops): Set local_regno only if set_dominates_use + returns true. + (set_dominates_use): New function. + +Tue Oct 8 16:01:37 1996 Doug Evans + + * c-typeck.c (decl_constant_value): Delete test for ! TREE_PUBLIC. + +Tue Oct 8 10:36:44 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (hppa_legitimize_address): Remove test code accidentally left + in during last change. + +Mon Oct 7 19:55:02 1996 Jim Wilson + + * sched.c (schedule_block): Before scheduling, add code to make all + call used regs not fixed or global live when we see a CALL_INSN. + During scheduling, change existing code to use same test. + + * varasm.c (bss_section): Delete unused parameters. + +Mon Oct 7 16:24:21 1996 Jason Merrill + + * dwarf2.h: Add new SGI/MIPS attributes. + + * dwarf2out.c (*_separate_line_info_*): Parallel line number + information for functions defined in sections other than .text. + (size_of_line_info): Support it. + (output_line_info, dwarfout_line): Likewise. + (gen_compile_unit_die): Don't add high/low_pc or stmt_list + attributes here. + (dwarfout_finish): Add them here if appropriate. + (remove_AT): Free removed attribute properly. + (gen_type_die): Don't assume a nested type is complete. + (dwarfout_finish): Don't emit line info if it would be empty. + + * dwarfout.c (output_block): Don't emit a DIE for a body block. + (output_decls_for_scope): Don't increment next_block_number for the + outer block. + (output_decl): Start from the outer block, not + the first inner block since there can be more than one in C++. + (type_tag): Handle C++ TYPE_NAME. + (output_type): Fix handling of TYPE_METHODS. + (output_decl): Don't output a DIE for artificial typedefs. + +Mon Oct 7 15:47:29 1996 Michael Meissner + + * rs6000.md (movdi define_splits): Fix previous change to work + on both little and big endian hosts. + +Sun Oct 6 16:52:34 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (combinable_fsub): Don't return without a value. + +Sun Oct 6 14:05:39 1996 Michael Meissner + + * rs6000.md (mov{df,di} define_splits): Use split_double to + properly split CONST_DOUBLEs. + (movdi): Likewise. + +Sat Oct 5 08:43:14 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * i386/cygwin32.h (LIB_SPEC): Add support for -mwindows. + Always pass -lkernel32. + (LIBGCC_SPEC): Don't delete. + (STARTFILE_SPEC): Remove always-true conditionalization. + (LONG_DOUBLE_TYPE_SIZE): Use default. + +Fri Oct 4 17:22:53 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Don't emit DWARF for member + types of a type we haven't emitted yet. + (compile_file): Still emit DWARF for pending tagged types. + + * final.c (final_scan_insn): Do emit DWARF labels for level 1 blocks. + + * dwarf2out.c (gen_subprogram_die): Start from the outer block, not + the first inner block since there can be more than one in C++. + (gen_lexical_block_die): Keep track of the block depth. + (gen_block_die): Don't emit a DIE for a body block. + (gen_inlined_subroutine_die): Don't emit anything for an + abstract instance. + (decls_for_scope): Don't increment next_block_number for the + outer block. + +Fri Oct 4 15:27:55 1996 J"orn Rennecke + + * sh.h (PRESERVE_DEATH_INFO_REGNO_P): Define. + + * sh.c (sfunc_uses_reg): New function. + (noncall_uses_reg, machine_dependent_reorg, final_prescan_insn): + Handle special functions like function calls for purposes of relaxing. + (noncall_uses_reg): Added some missing cases of registers + being used in non-call instructions. + +Fri Oct 4 10:51:40 1996 Jason Merrill + + * dwarf2out.c: Tear out backchaining brain damage. + (remove_AT, remove_children): New functions. + (modified_type_die): Call gen_type_die instead of backchaining. + (gen_subprogram_die): Don't generate a new specification DIE for + member functions defined in the class; use the declaration DIE instead. + (gen_struct_or_union_type_die): Support DW_AT_declaration. + (gen_type_die): Don't set TREE_ASM_WRITTEN on incomplete structs. + (gen_decl_die): Revert previous change; it's much simpler to emit + the class from rest_of_type_compilation. + +Fri Oct 4 09:54:21 1996 J"orn Rennecke + + * Make sure we have enough registers for the insns we recognize. + * i386.h (flag_omit_frame_pointer, outer_function_chain): Declare. + (current_function_calls_alloca): Likewise + (rtx_equal_function_value_matters): Likewise + (N_REGS_USED, N_ALLOCATABLE_REGISTERS): Define. + + * i386.md (adddi3_1, subdi3_1): Insns renamed from adddi3 and subdi3; + added missing earlyclobbers. + (adddi3_1): Removed duplicates from commutativity. + (adddi3, subdi3): New define_expands. + (movsf, movsf_mem, movsf_normal, movdf, movdf_mem , movdf_mem+1): Take + number of used vs. available registers into account. + (movxf, movxf_mem, movxf_mem+1, addsidi3_1, addsidi3_2): Likewise. + (adddi3_1, subsidi3, subdi3_1): Likewise. + (addsidi3_1, addsidi3_2, subsidi3): Need no generate function. + + * i386.c (asm_output_function_prefix): Don't use + ASM_DECLARE_FUNCTION_NAME if it is not defined. + +Fri Oct 4 07:01:55 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_decl): Don't turn off DECL_BIT_FIELD + if DECL's alignment is less than its type. + +Thu Oct 3 19:42:30 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Also do this for DWARF. + (compile_file): Don't try to write out DWARF for vars with no RTL. + +Thu Oct 3 18:31:28 1996 Doug Evans + + * ginclude/{stdarg.h,varargs.h}: Use #include "", not #include <>. + +Wed Oct 2 17:29:53 1996 Ian Lance Taylor + + * fixincludes: Add a hack to the big sed script to work around a + bug in the sed implementation on HP/UX 10.20. + +Wed Oct 2 16:53:56 1996 Jason Merrill + + * dwarf2out.c (modified_type_die): Don't generate redundant DIEs. + (gen_{array,pointer,reference,ptr_to_mbr}_type_die): Likewise. + (gen_{subroutine,string,set}_type_die): Likewise. + + * dwarf2out.c: Undo text_end_label, add_src_coords changes. + (addr_const_to_string): Fix typos. + (decl_class_context, get_AT_unsigned): New functions. + (gen_subprogram_die): Only emit src coords info for a specification + if they changed. + (gen_variable_die): Support DW_AT_declaration and DW_AT_specification. + (gen_decl_die): Avoid generating redundant DIEs for member functions + and variables. + +Wed Oct 2 11:22:50 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (EXTRA_CONSTRAINT): Loosen conditions for match of + 'Q' and 'T' while reload is running. + * pa.c (hppa_legitimize_address): Rework to generate more + indexed and scaled indexed addressing. + * pa.md (scaled indexed store): Add define_splits to undo + pessimizations created by hppa_legitimize_address for integer stores. + + * pa.c (remove_useless_addtr_insns): New function. + (pa_reorg): Delete code to remove useless add,tr insns. + Instead call remove_useless_addtr_insns. + (output_function_prologue): Call remove_useless_addtr_insns + to catch any add,tr insns created by reorg. + + * pa.c (secondary_reload_class): Remove duplicate/useless code. + + * pa.h (PARSE_LDD_OUTPUT): Handle output from hpux10.20 "chatr". + +Tue Oct 1 17:23:32 1996 Jason Merrill + + * dwarf2out.c (text_end_label): New static. + (size_of_line_info): The final entry is smaller. + (output_aranges): Use TEXT_SECTION instead of TEXT_BEGIN_LABEL and + text_end_label instead of TEXT_END_LABEL. + (gen_compile_unit_die): Likewise. + (output_line_info): Likewise. Use a fixed advance for the last entry. + (dwarfout_init): Don't output starting labels. + (dwarfout_finish): Set up text_end_label. Don't output ending labels. + + (add_pure_or_virtual_attribute): Don't say pure virtual for now. + (type_tag): Handle C++ TYPE_NAME. + (gen_formal_parameter_die): Support DW_AT_artificial. + (gen_formal_types_die): Do emit the type for 'this'. + (gen_member_die): Fix handling of TYPE_METHODS. + (gen_decl_die): Do output a DIE for member function declarations. + Don't output a DIE for artificial typedefs. + + (add_member_attribute): Remove, not in DWARF-II. + (gen_array_type_die): Remove ref to add_member_attribute. + (gen_set_type_die, gen_entry_point_die, gen_enumeration_type_die, + gen_subprogram_die, gen_variable_die, gen_field_die, + gen_pointer_type_die, gen_reference_type_die, gen_ptr_to_mbr_type_die, + gen_string_type_die, gen_struct_or_union_type_die, + gen_subroutine_type_die, gen_typedef_die): Likewise. + + (get_AT_flag): New fn. + (add_src_coords_attributes): Split out... + (add_name_and_src_coords_attributes): From here. + (gen_subprogram_die): Support DW_AT_declaration and + DW_AT_specification. + + (gen_compile_unit_die): Don't emit full pathname for source file; + comment claimed that SGI required it, but they don't emit it either. + Append -g to producer rather than replacing it. + +Tue Oct 1 14:19:23 1996 Jim Wilson + + * gcc.c (used_arg): When call xmalloc for mswitches, pass 1 if + n_switches is zero. + +Mon Sep 30 17:46:26 1996 J"orn Rennecke + + * sh.c (gen_shl_and, gen_shl_sext): Use gen_lowpart to + generate rtx in the appropriate mode for zero/sign-extension. + Don't generate a zero bit shift. + (gen_shl_sext) Directly use gen_ashift instead of gen_ashrsi3. + +Mon Sep 30 17:17:56 1996 Ian Lance Taylor + + * fixinc.svr4: In math.h, redefine exception to __math_exception + for C++, to avoid conflict with . + * fixincludes: Likewise. + Fix check for class in math.h to not match fp_class. + +Mon Sep 30 17:15:19 1996 Jim Wilson + + * iris6.h (ASM_SPEC): Add -w. + (STARTFILE_SPEC): Add mips3 to n32 pathnames. + Add -L/usr/lib32/mips for n32 cases. + (ENDFILE_SPEC): Add mips3 to n32 pathnames. + +Mon Sep 30 13:20:31 1996 Ian Lance Taylor + + * genopinit.c (gen_insn): Look through the modes in reverse order, + to avoid stopping early on CC when EXTRA_CC_MODES is used. + + * fixincludes: Add extern "C" to on HP/UX. + +Sun Sep 29 12:39:18 1996 Michael Meissner + + * c-typeck.c (pointer_diff): Do not do default conversions when + doing the minus expression, in case restype is a short type. + +Sun Sep 29 11:22:10 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (build_complex): Add new argument, TYPE. + * tree.h (build_complex): Likewise. + * c-lex.c (yylex): Add new arg, TYPE, to call to build_complex. + * fold-const.c (const_binop): Likewise. + (fold, case CONJ_EXPR, COMPLEX_EXPR): Likewise. + * varasm.c (copy_constant, case COMPLEX_CST): Likewise. + * expr.c (expand_expr, case COMPONENT_REF): Don't try to directly + load a complex. + * recog.c (register_operand): Don't reject subreg of complex mode. + * emit-rtl.c (mark_user_reg): New function. + * function.c (assign_parms): Use it. + * stmt.c (expand_decl): Likewise, and simplify code. + + * tree.c (contains_placeholder): Return 1 for PLACEHOLDER_EXPR. + + * expr.c (store_expr): memset/bzero gets ptr_mode, not Pmode. + + * stmt.c (expand_asm_operands): Fix errors in previous patches. + + * x-linux: Simplify, but ensure headers aren't changed. + + * getpwd.c: No longer include direct.h for _WIN32. + + * configure (i[3456]86-*-isc*): Remove bogus echo. + (m68k-apple-aux*): a-ux.h renamed from aux.h. + (CC): Escape "$" char in "no-symlink" case for bash/cygwin32 bug. + + * Makefile.in (installdirs): Renamed from install-dir. + Create $(prefix) and $(exec_prefix) if doesn't exist. + (install-float): Reflect new name for installdirs. + (install-{common,info,man,libgcc,multilib,libobjc}): Likewise. + (install-{include-dir,assert-h,collect2}): Likewise. + + * reload1.c (gen_reload): Handle SUBREG in PLUS specially too. + Change calls to emit_move_insn to recursive calls. + + * stmt.c (fixup_gotos): When running undefined labels, if no cleanup + actions for this block, don't clear BEFORE_JUMP. + +Fri Sep 27 13:48:21 1996 Michael Meissner + + * c-decl.c (init_decl_processing): Create short int types before + creating size_t in case a machine description needs to use + unsigned short for size_t. + +Fri Sep 27 12:28:54 1996 Stan Cox + + * gcc.c (do_spec_1): Allow -A in %[Spec]. + + * i386.h (CPP_CPU_SPEC): New. Added for defining the submodel. + + * i386.c (asm_output_function_prefix, function_prologue, + ix86_expand_prologue): Make the routine that sets the GOT (when pic + is enabled) a function, to assist debugging. + + * i386.md (gen_prologue_get_pc): Call the function created above. + (divdf3): Added. + + * i386/dgux.h (CPP_PREDEFINES, CPP_SPEC): Reference CPP_CPU_SPEC. + Use svr4 assembler directive .backalign instead of .align. + (align to x bytes if it takes no more than y bytes to do so.) + + * i386/{aix386ng.h,dgux.h} (CPP_SPEC): Use %[cpp_cpu]. + * i386/{freebsd-elf,gas,isc,linux-aout}.h: Likewise. + * i386/{linux-oldld,linux,osfelf,osfrose,sco,sco4}.h: Likewise. + * i386/{sco4dbx,sco5,sol2,sysv3}.h: Likewise. + +Thu Sep 26 17:58:34 1996 Torbjorn Granlund + + * m68k.md (mulsidi3 matcher): Change predicate const_int_operand + to const_sint32_operand. Get rid of bogus range condition. + +Thu Sep 26 17:12:00 1996 Jim Wilson + + * Makefile.in (stmp-int-hdrs): Don't cd to srcdir before copying + header files to objdir. + +Wed Sep 25 21:22:57 1996 Jeffrey A Law (law@cygnus.com) + + * h8300.h (FIRST_PSEUDO_REGISTER, ARG_POINTER_REGNUM): Bump up by one. + (FIXED_REGISTERS): Add entry for MAC register. + (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Likewise. + (HARD_REGNO_NREGS): Handle MAC register. + (HARD_REGNO_MODE_OK, REGNO_OK_FOR_BASE_P, REGISTER_NAMES): Likewise. + (enum reg_class): New MAC_REGS register class. + (REG_CLASS_CONTENTS, REGNO_REG_CLASS): Corresponding changes. + (REG_CLASS_FROM_LETTER): Likewise. + (REGISTER_MOVE_COST): Make copies to/from MAC register expenseive. + (CONDITIONAL_REGISTER_USAGE): Define. + * h8300.md (movsi_h8300hs): Renamed from movsi_h8300h. + Handle moves to/from the MAC register. + (mac): Two new patterns to use the mac instruction. + + * h8300.c (notice_update_cc): Fix CC_SET case. + (restore_compare_p): Remove unused function. + * h8300.md: Handle "set" vs "set_zn_c0" correctly. + (bCC patterns): No longer need to call restore_compare_p. + + * h8300.c (get_shift_alg): Fix HImode ASHIFTRT by 13 or 14 bits. + +Wed Sep 25 18:52:19 1996 Joern Rennecke + + * sh.md (insv): New pattern. + +Wed Sep 25 16:47:26 1996 Doug Evans + + * sparc/t-sunos41 (MULTILIB_{OPTIONS,DIRNAMES,MATCHES}): Create + multilib versions of -fpic and -fPIC. + (TARGET_LIBGCC2_CFLAGS): Comment out. + + * sparc.c (print_operand): Handle new codes H/L. + * sparc.md (lo_sum_di_sp32): Add little endian support. + (adddi3_sp32,subdi3_sp32,mulsidi3_sp32,const_mulsidi3): Likewise. + (umulsidi3_sp32,const_umulsidi3,smacdi,umacdi,anddi3_sp32): Likewise. + (iordi3_sp32,xordi3_sp32,negdi2_sp32): Likewise. + +Wed Sep 25 15:32:35 1996 Jim Wilson + + * expmed.c (store_bit_field): Don't make flag_force_mem disable insv + for memory operands. + + * function.c (instantiate_decl): Always store addr back into x. + +Tue Sep 24 19:37:00 1996 Jim Wilson + + * reload.c (push_secondary_reload): Do strip paradoxical SUBREG + even if reload_class is CLASS_CANNOT_CHANGE_SIZE. Change reload_mode + to mode in SECONDARY_MEMORY_NEEDED and get_secondary_mem calls. + + * reload1.c (emit_reload_insns): For output part of RELOAD_OTHER, + emit after RELOAD_FOR_OUTPUT, in reverse order of reload number, + but not separately. + +Tue Sep 24 18:13:07 1996 Michael Meissner + + * expr.c (emit_group_load): Allow target to be smaller than source. + +Tue Sep 24 17:40:39 1996 Doug Evans + + * m68k/a-ux.h: Renamed from aux.h because of MSDOS. + +Tue Sep 24 08:33:53 1996 David S. Miller (davem@caip.rutgers.edu) + + * tree.c (copy_node): Fix error in last change. + +Tue Sep 24 08:29:03 1996 James G. Smith + + * gcc.c (used_arg): Fix multilib_matches parsing to not corrupt + entry parameter. + +Tue Sep 24 08:22:18 1996 J"orn Rennecke + + * loop.c (get_condition): Use rtx_equal_p to compare rtx. + +Tue Sep 24 08:14:01 1996 Christian Iseli + + * integrate.c (expand_inline_function): Avoid creating paradoxical + subreg wider than BITS_PER_WORD as inlined function result. + +Tue Sep 24 08:00:15 1996 Paul Eggert + + * cccp.c (struct directive, directive_table, handle_directive): + pass_thru now 1 for #define and 2 for #pragma. + (handle_directive): When deciding whether to suppress comment at end + of directive, ignore tabs and spaces after comment. Remove redundant + limit test. With -dD -C, copy comment when isolating definition. + (skip_to_end_of_comment): With -C, don't copy newline at end + of C++ comment. + + * fixinc.ptx, fixinc.svr4, fixincludes: Insert newlines just before + end of 'sed' command strings if last 'sed' command is 'a' or 'i'. + +Tue Sep 24 07:28:58 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (PREFERRED_DEBUGGING_TYPE): If no debugging formats are + supported, set to NO_DEBUG. + (main): Don't do setting of PREFERRED_DEBUGGING_TYPE here. + +Mon Sep 23 22:45:15 1996 Sean McNeil + + * rs6000/vxppc.h, sparc/vxsim.h: New files. + * configure (powerpc-*-vxworks*, sparc-*-vxsim*): New targets. + * objc/objc.h (BOOL): Define BOOL as int for VxWorks. + +Mon Sep 23 21:23:27 1996 Klaus K"ampf (kkaempf@progis.de) + + * explow.c (promote_mode, case REFERENCE_TYPE): New case. + +Mon Sep 23 21:15:43 1996 Andreas Schwab + + * c-decl.c (finish_struct): Check PCC_BITFIELD_TYPE_MATTERS value. + + * dbxout.c (dbxout_symbol): Fix forgotten case in last change: + check DECL_ARTIFICIAL also when using the short cut way. + +Mon Sep 23 15:55:24 1996 David S. Miller (davem@caip.rutgers.edu) + + * tree.c (copy_node): Abort if don't know size of node. + + * tree.c (build1): Clean up initialization of OBSTACK. + +Mon Sep 23 15:35:33 1996 Jason Merrill + + * Makefile.in (stmp-multilib): Depend on $(LANG_LIB2FUNCS). + + * dbxout.c (dbxout_function): Don't check DECL_SECTION_NAME before + calling dbxout_function_end. + +Mon Sep 23 14:41:12 1996 J"orn Rennecke + + * combine.c (can_combine_p): Even if SMALL_REGISTER_CLASSES, + know lifetime not extended if all_adjacent set. + + * stmt.c (expand_asm_operands): Handle '+' constraint. + * cse.c (fold_rtx): Fold inside ASM_OPERANDS. + + * expr.c (expand_increment): If postincrement for MEM can't use add + directly, load address in reg and enqueue increment and store of reg. + + * loop.c (check_dbra_loop): Don't assume label must be second part of + if_then_else in condjump. + + * jump.c (jump_optimize): In no-nop move deletion, don't test + PRESERVE_DEATH_INFO_REGNO_P; instead test if optimization is performed. + Check for REG_UNUSED note on to-be deleted insn before searching for + preceding instruction to delete note from. + If PRESERVE_DEATH_INFO_REGNO_P is true for SREG, replace INSN with USE. + + * reload1.c (reload): Initialize the previous_offset fields + in reg_eliminate before calling setup_save_areas. + + * reload1.c (emit_reload_insns): Declare and set this_reload_insn. + + * expr.c (var_rtx): New function. + (expand_expr, case COND_EXPR): Also use target if same as singleton. + +Mon Sep 23 14:22:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * recog.c (constrain_operands): Don't test clobbered constraints. + + * reload1.c (emit_reload_insns): For output part of RELOAD_OTHER, + put in front of anything previous for that output, but not separately. + +Sun Sep 22 21:06:46 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (decl_attribtes, case A_SECTION): Allow for static + local variable. + +Sun Sep 22 11:30:27 1996 Christian Iseli (christian.iseli@di.epfl.ch) + + * expr.c (convert_move): Replace explicit checks for FP extend ops + with use of can_extend_p. + Add missing tests for FP trunc operations. + +Sun Sep 22 11:20:02 1996 Pat Rankin + + * dwarfout.c (DWARF_VERSION): Define as 1 if not already defined. + * dwarf2out.c (DWARF_VERSION): Likewise. + +Sun Sep 22 11:12:20 1996 Joern Rennecke + + * c-decl.c (pushdecl): Check new declaration actually conflicts before + warning about implicit external vs. static declarations. + + * loop.c (combine_givs): Improve combining DEST_REG giv with only use. + +Sun Sep 22 10:50:03 1996 Scott Christley + + * Create consistent mechanism for memory allocation and release + so that garbage collection routines can be easily subsititued + for the ANSI standard malloc, realloc, free, etc. + * objc/archive.c: Replace use of __objc_xmalloc and free + with objc_malloc and objc_free. + * objc/hash.c: Replace use of __objc_xcalloc and free + with objc_calloc and objc_free. + * objc/init.c: Replace use of free with objc_free. + * objc/misc.c (objc_malloc): Renamed from __objc_xmalloc. + (objc_realloc): Renamed from __objc_realloc. + (objc_atomic_malloc, objc_valloc): New functions. + (objc_calloc): Renamed from __objc_calloc. + (objc_free): New function. + * objc/objc-api.h (_objc_malloc): New function pointer. + (_objc_atomic_malloc, _objc_valloc): Likewise. + (_objc_realloc, _objc_calloc, _objc_free): Likewise + * objc/objc-list.h: Replace use of __obj_xmalloc and free + with objc_malloc and objc_free. + * objc/objects.c: Likewise. + * objc/sarray.c: Replace use of __objc_xmalloc and free + with objc_malloc and objc_free. + * objc/sarray.h (__objc_xmalloc, __objc_xrealloc): Delete. + * objc/selector.c: Replace use of __objc_xcalloc, __objc_xrealloc, + and __objc_xmalloc with objc_calloc, objc_realloc, and objc_malloc. + * objc/thr-decosf1.c: Replace use of __objc_xmalloc and free + with objc_malloc and objc_free. + * objc/thr-irix.c, objc/thr-mach.c, objc/thr-os2.c: Likewise. + * objc/thr-posix.c, objc/thr-pthreads, objc/thr-single: Likewise. + * objc/thr-solaris.c, objc/thr-win32.c, objc/thr.c: Likewise. + +Sun Sep 22 05:26:01 1996 Jason Merrill + + * configure: Set up LANG_LIB2FUNCS and LANG_EXTRA_HEADERS. + * Makefile.in (libgcc2.a): Include LANG_LIB2FUNCS. + (USER_H): Add LANG_EXTRA_HEADERS. + (LANG_LIB2FUNCS): New macro. + (LANG_EXTRA_HEADERS): New macro. + (stmp-int-hdrs): Don't hardwire ginclude. + (stamp-objlist): Don't depend on Makefile. + +Sat Sep 21 18:00:10 1996 Stephen L Moshier (moshier@world.std.com) + + * alpha.md (alpha_swapped_comparison_operator pattern): Fix asm + operand typo in last change. + +Sat Sep 21 07:11:51 1996 J"orn Rennecke + + * defaults.h (ASM_OUTPUT_LABELREF): Provide default definition + if not already defined. + * 1750a.h (USER_LABEL_PREFIX): Define instead of ASM_OUTPUT_LABELREF. + * a29k.h, alpha.h, convex.h, dsp16xx.h, elxsi.h, fx80.h: Likewise. + * gmicro.h, h8300.h, i386/sun386.h, i860.h, i960.h, ns32k.h: Likewise. + * pdp11.h, pyr.h, romp.h, sh.h, sparc.h, spur.h, tahoe.h: Likewise. + * vax.h, we32k.h: Likewise. + * i386/att.h (USER_LABEL_PREFIX): Redefine, not ASM_OUTPUT_LABELREF. + * i386/bsd.h, i386/lynx.h, i386/sco5.h, i860/fx2800.h: Likewise. + * m68k/3b1.h, m68k/mot3300.h, m68k/tower-as.h, m68k/tower.h: Likewise. + * ptx4.h, sparc/pbd.h, svr3.h, svr4.h: Likewise. + * i386/osfrose.h, m88k.h (USER_LABEL_PREFIX): Redefine. + * nextstep.h (USER_LABEL_PREFIX): Redefine. + (ASM_OUTPUT_LABELREF) Use USER_LABEL_PREFIX. + * arm/aout.h, mips.h (ASM_OUTPUT_LABELREF): Delete. + * rs6000/lynx.h (USER_LABEL_PREFIX): Undefine. + * rs6000.h, rs6000/win-nt.h (USER_LABEL_PREFIX): Define. + +Thu Sep 19 00:05:53 1996 Jason Merrill + + * configure: Move i[3456]86-*-gnu* case after linux and don't + treat linux-gnu like other gnu systems. + +Wed Sep 18 20:51:09 1996 Jason Merrill + + * cplus-dem.c (demangle_template): Fix handling of address args. + (gnu_special): Handle type_info stuff. + +Wed Sep 18 17:57:55 1996 Patrik Lantto (patrik@opq.se) + + * jump.c (jump_optimize): Insert conditional move after jump + insn instead of before. + +Wed Sep 18 17:33:36 1996 Richard Henderson + + * alpha.h (PREDICATE_CODES): Add alpha_swapped_comparison_operator. + * alpha.c (alpha_swapped_comparison_operator): New function. + (print_operand): Support unsigned codes for %D, %c, and %d. + * alpha.md: Add pattern for b%c with swapped comparisons with 0. + Delete three unnamed cmp patterns that are strict subsets of it. + + * alpha.c (alpha_emit_set_long_const): Save one instruction + when -O2 and high word == low word. + +Tue Sep 17 22:46:15 1996 Jason Merrill + + * i386/unix.h (ASM_OUTPUT_MI_THUNK): Handle functions + returning an aggregate. + + * varasm.c (supports_one_only): New function. + (make_decl_one_only): Likewise. + * svr4.h (MAKE_DECL_ONE_ONLY): Define. + * tree.h (DECL_ONE_ONLY): New macro. + + * varasm.c (assemble_variable): Fix setting of + first_global_object_name. + (assemble_start_function): Likewise. + +Tue Sep 17 19:42:39 1996 Doug Evans + + * i386/t-cygwin32 (winnt.o): Compile properly. + +Tue Sep 17 15:47:20 1996 Ian Lance Taylor + + * Add support for R5000, and finish MIPS4 support. + * mips.h (enum processor_type): Add PROCESSOR_R5000. + (gen_conditional_move): Declare. + (CONDITIONAL_REGISTER_USAGE): Mark ST_REGS as fixed if not + HARD_FLOAT, or if mips_isa < 4. + (FIRST_PSEUDO_REGISTER): Change to 76. + (FIXED_REGISTERS): Add condition code registers. + (CALL_USED_REGISTERS): Likewise. + (ST_REG_LAST): Change to 74. + (RAP_REG_NUM): Change to 75. + (ST_REG_P): Look for any condition code register. + (REG_CLASS_CONTENTS): Update for new condition code registers. + (RTX_COSTS): Add cases for R5000. + (REGISTER_MOVE_COST): Add cases for condition code registers. + (PREDICATE_CODES): Add "const_float_1_operand". + (EXTRA_CC_{MODES,NAME}, SELECT_CC_MODE): Remove. + (REGISTER_NAMES): Add entries for new condition code registers. + (DEBUG_REGISTER_NAMES): Likewise. + (ADDITIONAL_REGISTER_NAMES): Remove FPSW_REGNUM. + * mips.md (cpu attribute): Add R5000. + (function units): Add cases for the R5000. + ({madd,msub,nmadd,nmsub}.d): Only available if TARGET_DOUBLE_FLOAT. + (recip.d, recip.s, rsqrt.d, rsqrt.s): New define_insn patterns. + (movcc): New pattern to move condition code values. + (reload_incc, reload_out_cc): New define_expand patterns. + (lwxc1, ldxc1, swxc1, sdxc1): Several new define_insn patterns. + (various): Replace CC_FP with CC. + (branch_fp_ne, branch_fp_eq): Match any condition code register. + (branch_fp_ne_rev, branch_fp_eq_rev): Remove. + (seq_df, slt_df, sle_df): Match any condition code register. + (sgt_df, sge_df, seq_sf, slt_sf, sle_sf, sgt_sf, sge_sf): Likewise. + (sne_df, sne_sf): Remove. + (FP conditional moves): Match any condition code register. + Require TARGET_HARD_FLOAT and, if appropriate, TARGET_DOUBLE_FLOAT. + (movsicc): Just call gen_conditional_move. + (movdicc, movsfcc, movdfcc): New define_expand patterns. + * mips.c (mips_reg_names): Add condition code registers. + (mips_sw_reg_names, mips_regno_to_class): Likewise. + (const_float_1_operand): New function. + (mips_move_1word): Treat CCmode as SImode. Handle move from + ST_REG to GR_REG if mips_isa >= 4. Only permit move from GR_REG + to ST_REG is mips_isa < 4. + (gen_conditional_branch): Rewrite. Just use CCmode, not extra + condition modes. + (gen_conditional_move): New function. + (override_options): Recognize vr5000. Look for just CCmode, not + extra condition modes. If mips_isa >= 4, permit CCmode in GR_REGS + and FP_REGS. + (print_operand): Handle %Z. + (mips_secondary_reload_class): Require a data register to copy a + value out of a condition code register. Require a floating point + register to copy a value into a condition code register. + +Tue Sep 17 15:10:29 1996 Joern Rennecke + + * sh.md: New define_splits to recombine output from LEGITIMIZE_ADDRESS. + * sh.h (LEGITIMIZE_ADDRESS): Typo fixes (x -> X). + +Mon Sep 16 23:00:35 1996 Jim Wilson + + * configure (build_broken_install): Renamed from host_broken_install. + Set from build not host. + (build_install_headers): Renamed from host_install_headers. Set from + build not host. + +Mon Sep 16 22:38:55 1996 Stu Grossman (grossman@critters.cygnus.com) + + * configure (m68k-*-coff*): Use dbx debug format by default. + * gcc.c (link_command_spec): Move -T to end of link command line. + * m68k/m68kemb.h (LINK_SPEC, SUBTARTGET_SWITCHES): Delete. + (LIB_SPEC): Define to just -lc. + (STARTFILE_SPEC): Define to empty. + +Mon Sep 16 13:12:27 1996 J"orn Rennecke + + * sh.c (ext_shift_insns, ext_shift_amounts): New arrays. + (gen_ashift_hi, gen_shifty_hi_op, shl_and_kind): New functions. + (rtx_equal_function_value_matters): Declare. + (shl_and_length, shl_and_src_length, gen_shl_and): New functions. + (shl_sext_kind, shl_sext_length, gen_shl_sext): Likewise. + * sh.md (ashlhi3_k, lshrhi3_m): New patterns. + (lshrhi3, shl_sext_ext, shl_sext_sub): + New insn patterns with matching define_split. + (and_shl_scratch): Likewise, but also with unnamed variants. + +Sat Sep 14 17:05:07 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (convert_filename): Don't start looking for '.' until + after last directory separator. + + * i386.md (clrstrsi): Correct check for constant size. + + * Based on code by sac@cygnus.com. + * i386/cygwin32.h (CHECK_STACK_LIMIT): Make consistent with MD file. + * i386.c ({function,ix86_expand}_prologue): Use __alloca to allocate + stack if desired and beyond CHECK_STACK_LIMIT in size. + * i386.h ({MASK,TARGET}_STACK_PROBE): New macros. + (TARGET_SWITCHES): Add -mstack-arg-probe. + * i386.md (allocate_stack{,_worker}): New patterns. + +Fri Sep 13 18:23:18 1996 Joel Sherrill + + * sparc/lb1spc.asm (.div, .rem): Fixed typo so sign is returned + correctly. TOPBITS was 2 and should have been 4. + +Thu Sep 12 21:51:56 1996 Jim Wilson + + * mips.md (call_value_multiple_internal0): Change from define_insn to + define_expand. + +Thu Sep 12 19:22:14 1996 Doug Evans + + * sparc.md (move_pic_label_si): Operand one is label_ref now. + * sparc.c (emit_move_sequence): Pass label_ref to + gen_move_pic_label_si to not lose flags. + +Wed Sep 11 12:10:08 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Makefile.in (GCC_PASSES): Add $(exeext) to names. + (FLAGS_TO_PASS): Add CLIB. + (c-pragma.o): Add dependencies on except.h, function.h, defaults.h. + +Tue Sep 10 22:25:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (i[3456]86-*-cygwin32): Use xm-cygwin32.h and xm-i386.h. + Set fixincludes to Makefile.in and objc_thread_file to win32. + * i386/xm-cywin32.h: Don't include xm-i386.h. + * i386/x-cygwin32, rs6000/x-cygwin32 (STMP_FIXPROTO, exeext): New defs. + + * gcc.c (HAVE_EXECUTABLE_SUFFIX): New macro. + (convert_filename): New function. + (process_command, case 'o'): Call it. + (process_command, default case): Likewise; delete old code. + +Tue Sep 10 21:08:43 1996 Torbjorn Granlund + + * i386.md (decrement_and_branch_until_zero matcher): Fix typo. + +Tue Sep 10 19:04:19 1996 Jim Wilson + + * mips.c (mips_move_2words): Rewrite 32 bit shifts as 16 bit shifts. + +Tue Sep 10 10:39:07 1996 Jeffrey A Law (law@cygnus.com) + + * pa/pa-gas.h (DBX_DEBUGGING_INFO): Remove all #define + and #undef statements related to debugging information. + * pa/pa-hpux.h, pa-hpux7.h: Likewise + * pa.c (override_options): Disable "-g" and issue a warning + if it's used when !TARGET_GAS. + +Mon Sep 9 17:57:49 1996 Doug Evans + + * sparc.h ({MASK,TARGET}_FPU_SET): Define. + (TARGET_SWITCHES): Record if -m{,no-}fpu passed. + * sparc.c (sparc_override_options): Don't clobber explicit + -m{,no-}fpu setting with cpu default. + +Mon Sep 9 15:57:57 1996 Joel Sherrill + + * configure (mips64orion-*-rtems*): New target. + * mips/rtems64.h: New file. + +Sat Sep 7 22:07:53 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_field): If storing a record on big endian targets, + set up so we store the high-order bits. + (expand_expr, case COMPONENT_REF): Likewise for loads. + +Thu Sep 5 14:59:47 1996 J"orn Rennecke + + * sh.h (LEGITIMIZE_ADDRESS): Define nonempty. + +Thu Sep 5 10:43:36 1996 Jeffrey A Law (law@cygnus.com) + + * pa.md (mov{si,di,sf}): Handle 'R' constraints as needed. + +Wed Sep 4 17:13:28 1996 Bob Manson + + * except.c: (add_partial_entry): New routine. + (expand_start_try_stmts): Moved from cp/except.c. + (expand_start_all_catch): Move functionality of expand_end_try_stmts + here. + +Wed Sep 4 12:30:02 1996 Mike Stump + + * except.c (emit_unwinder): Ensure CLOBBER and USE insns come last, + if present. + +Tue Sep 3 12:01:43 1996 Ian Lance Taylor + + * configure (sh-*-elf*): New target. + * sh/elf.h: New file. + +Fri Aug 30 17:52:26 1996 Jim Wilson + + * dwarf2out.c (gen_formal_types_die): Delete extra argument from + gen_type_die call. + +Fri Aug 30 15:40:40 1996 James G. Smith + + * mips/elf64.h: Allow MULTILIB_DEFAULTS to be defined + before this file is included. + +Fri Aug 30 15:00:06 1996 Stan Cox + + * i386.md: (movsicc,movhicc): Allow reload from memory. + + * i386.c (override_options): Don't thread the prologue if profiling. + +Fri Aug 30 15:00:06 1996 James Hawtin + + * i386/t-sol2 (gcrt1.o): Added for profiling Solaris 2 + * i386/sol2.h (STARTFILE_SPEC): New. + * i386/gmon-sol2.c, i386/sol2-gc1.asm: New files. + +Thu Aug 29 22:08:03 1996 Jim Wilson + + * except.c (add_eh_table_entry): Multiply realloc size by sizeof int. + +Thu Aug 29 15:15:31 1996 Jeffrey A Law (law@cygnus.com) + + * pa.md (fcmp patterns): Don't try to eliminate useless add,tr + insns here. + * pa.c (pa_reorg): Do elimination of useless add,tr insns here instead. + (print_operand, case 'y'): Remove this code. + +Wed Aug 28 16:19:34 1996 Doug Evans + + * toplev.c (print_single_switch): Ultrix fprintf returns 0 for success. + + * toplev.c (main): Rewrite -g parsing. + +Mon Aug 26 16:15:49 1996 Fred Fish + + * Makefile.in (objc-parse.y): Fix typo in name of temp file. + +Mon Aug 26 14:08:37 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (mark_all_temps_used): Fix error in last change. + +Sun Aug 25 22:27:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (mark_all_temps_used): New function. + +Fri Aug 23 11:34:57 1996 Michael Meissner + + * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Fixes to make -fPIC + really the same as -mrelocatable. + (ASM_SPEC): Pass -K PIC to the assembler if -fpic/-fPIC. + + * rs6000/sol2.h (ASM_CPU_SPEC): Remove passing -K PIC to the + assembler if -fpic/-fPIC. + + * bi-{arity,opcode,opname}.c (fancy_abort): Define, so that + -Dabort=fancy_abort works again. + +Thu Aug 22 11:39:34 1996 Michael Meissner + + * rs6000/t-ppcgas ({stmp,install}-crt): Only build and install the + eabi ecrt[in].o object files in eabi multilib directories, only + build and install the solaris scrt[in0].o object files in solaris + directories. + (MULTILIB_MATCHES): Remove matches for solaris, linux to other + switches. + +Tue Aug 20 18:49:55 1996 Michael Meissner + + * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): If -mrelocatable or + -mrelocatable-lib, don't make read-only sections. + +Mon Aug 19 18:42:13 1996 Doug Evans + + * sparc.h ({MASK,TARGET}_LITTLE_ENDIAN): Define. + (LIBGCC2_WORDS_BIG_ENDIAN): Add little endian support. + * sparc/sp64-elf.h ({CPP,ASM,LINK}_SPEC): Add little endian support. + (SUBTARGET_SWITCHES): Recognize -m{big,little}-endian. + ({BYTES,WORDS}_BIG_ENDIAN): Likewise. + * sparc/splet.h (SUBTARGET_SWITCHES): Recognize -m{big,little}-endian. + ({CPP,ASM,LINK}_SPEC): Add little endian support. + ({BYTES,WORDS}_BIG_ENDIAN): Likewise. + * sparc/t-splet (MULTILIB_{OPTIONS,DIRNAMES}): Likewise. + + * sparc/lynx-ng.h (CPP_SPEC): Use %(cpp_cpu). + +Sat Aug 17 15:23:39 1996 Geoffrey Noer + + * i386/cygwin32.h (CPP_PREDEFINES): Define _WIN32, not WIN32. + Define only __CYGWIN32__, not CYGWIN32 or __CYGWIN32. + * rs6000/cygwin32.h (CPP_PREDEFINES): Likewise. + * cccp.c (absolute_filename): Drive specifiers make the pathname + absolute in cygwin32. + * choose-temp.c: Delete !defined(_WIN32) condition when including + sys/file.h (NO_SYS_FILE_H is still used). + * gcc.c: Change ifndef _WIN32 to ifndef NO_SYS_FILE_H when deciding + whether to include sys/file.h. + (execute): -pipe is supported for cygwin32. + * getopt.c: Change win32 test from WIN32 to _WIN32. + * pexecute.c: Update test for win32 (&& ! cygwin32). + * protoize.c: Likewise. + (kill): Delete decl. + * toplev.c: Update test for win32 (&& ! cygwin32). + * ginclude/stdarg.h: Change __WIN32__ to _WIN32. + * ginclude/varargs.h: Likewise. + * ginclude/va-ppc.h: Likewise. + +Fri Aug 16 16:02:09 1996 Michael Meissner + + * rs6000.c (rs6000_got_register): Make sure pic_offset_table_rtx + allocated, even if current_function_uses_pic_offset_table set. + +Fri Aug 16 15:56:04 1996 J. Kean Johnston + + * i386/sco5.h (CLASS_LIKELY_SPILLED_P): Deleted. + (STARTFILE_SPEC): Insert crtbegin.o in correct place, and correct + versions of values-X?.o. + (SWITCH_TAKES_ARG): Extend DEFAULT_SWITCH_TAKES_ARG, not replace. + (CPP_SPEC): Add -Di386, and correctly include extra directories. + Define HAVE_ATEXIT in ELF mode for global destructors. + +Thu Aug 15 16:42:44 1996 Doug Evans + + * sparc.c (label_ref_operand): New function. + (emit_move_sequence): Pass label_ref to gen_move_label_di to not + lose flags. + * sparc.md (move_label_di): Operand one is label_ref now. + * genattrtab.c (write_test_expr): Allow label_ref in match_dup. + + * sys-protos.h (gethostid): Make return type `int' ifdef __alpha__. + * gen-protos.c: Delete support for SYS_PROTO_OVERRIDES. + * alpha.h (SYS_PROTO_OVERRIDES): Delete. + +Thu Aug 15 17:36:09 1996 Mike Stump + + * libgcc2.c (__throw): New routine. + (__eh_pc): New data object for exception handling. + + * except.c (eh_saved_pc): New object so we can call + assemble_external. + (expand_internal_throw_indirect): Call assemble_external for __eh_pc. + (end_eh_unwinder): Likewise. + (init_eh): Initialize eh_saved_pc. + +Thu Aug 15 13:02:42 1996 Mike Stump + + * arm.h (RETURN_ADDR_RTX): Define. + + * expr.c (expand_builtin_return_addr): Fix order of parameters. + +Wed Aug 14 19:48:00 1996 Torbjorn Granlund + + * stmt.c (expand_return): In code for doing scc with jumps, + stick to default handling if we have corresponding scc pattern. + +Wed Aug 14 10:31:28 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (override_options): Treat TARGET_FAST_INDIRECT_CALLS + just like TARGET_NO_SPACE_REGS. + (output_millicode_call): Likewise. + * pa.h (TARGET_FAST_INDIRECT_CALLS): Define. + (TARGET_SWITCHES): Add "fast-indirect-calls". + * pa.md (TARGET_FAST_INDIRECT_CALLS): Treat just like + TARGET_NO_SPACE_REGS in various call/millicode call patterns. + + * pa.c (print_operand): Use the right comparison operator + for reversed EQ and NE comparisons. + + * pa.h (OUTPUT_MI_THUNK): Define. + +Wed Aug 14 11:40:49 1996 Michael Meissner + + * ginclude/va-ppc.h: Add Windows NT support. + * ginclude/{varargs,stdarg}.h: For PowerPC Windows NT, include + va-ppc.h, instead of using the default handling. + +Tue Aug 13 18:30:10 1996 Ian Lance Taylor + + * fixincludes: Remove duplicate volatile from sig_atomic_t in AIX + sys/signal.h + +Tue Aug 13 16:51:37 1996 Jim Wilson + + * i960-coff.h (LIB_SPEC): Undef. + + * sh.h (PROFILE_BEFORE_PROLOGUE): Define. + +Tue Aug 13 11:36:02 1996 Michael Meissner + + * gcc.c (set_spec,process_command): Dump and load the compiler + version number in the specs file. + + * rs6000.c (output_toc): Fix last change, so that it doesn't use + an uninitialized variable if -mminimal-toc. + (output_prolog): Increment probe_labelno after last use. + + * rs6000/t-ppcgas (MULTILIB_*): Build far fewer multilib + libraries. Build all libraries with -mrelocatable-lib and + -mno-eabi. Build special GNU/Linux and Solaris libraries. + * rs6000/eabi{,aix,le}.h (MULTILIB_DEFAULTS): Adapt to changes in + t-ppcgas. + * rs6000/(linux,sol2,sysv4,sysv4le).h (MULTILIB_DEFAULTS): Likewise. + +Tue Aug 13 11:36:02 1996 Jeffrey A Law (law@cygnus.com) + + * rs6000.c (handle_mac_pragma): Initialize "psize". + +Mon Aug 12 18:14:35 1996 Jim Wilson + + * gcc.c (used_arg): Initialize cnt to zero. + +Mon Aug 12 14:03:16 1996 Jim Wilson + + From Mike Stump: + * sh.c (regno_reg_class): Change entry 23 from NO_REGS to GENERAL_REGS. + (initial_elimination_offset): New variable live_regs_mask. Add + code to handle RETURN_ADDRESS_POINTER_REGNUM. + * sh.h (RAP_REG, RETURN_ADDRESS_POINTER_REGNUM): Define. + (ELIMINABLE_REGS): Add RETURN_ADDRESS_POINTER_REGNUM support. + (RETURN_ADDR_RTX): Define. + (REGISTER_NAMES): Add rap. + + * iris5.h (DOLLARS_IN_IDENTIFIERS): Undefine. + + * m68kemb.h (LIB_SPEC): Always emit -lc. + +Mon Aug 12 12:30:25 1996 Michael Meissner + + * rs6000.c (rs6000_got_register): Test variable + current_function_uses_pic_offset_table to see whether or not a GOT + register has been created already. + + * Makefile.in (multilib.h): Move to stamp-mlib. + (stamp-mlib): Use move-if-change to conditionally update + multilib.h. Pass MULTILIB_EXTRA_OPTS to genmultilib. + (STAGESTUFF): Add stamp-mlib. + (mostlyclean): Delete tmp-mlib.h. + + * genmultilib: Take fifth argument for options to all multilib builds. + Restructure output so we pass synonym switches and extra arguments + separately, and not exponentially slow down genmultilib. + + * gcc.c (toplevel): Rearrange multilib support so we support passing + synonyms separately from normal switches. Add support for passing + additional switches for all multilib builds. Dump and restore value + of MULTILIB_DEFAULTS. + (setspec, process_command, main): Likewise. + (used_arg,default_arg,print_multilib_info): Likewise. + +Mon Aug 12 07:46:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Add test + and call for nonlocal_goto_receiver pattern. + * stmt.c (expand_end_bindings): Likewise. + + * stmt.c (expand_asm_operands): Fix off-by-one error when + scanning constraints. + +Sun Aug 11 22:48:02 1996 Jason Merrill + + * expr.c (store_expr): Handle COND_EXPR cleanups like expand_expr. + +Sun Aug 11 22:42:36 1996 J"orn Rennecke + + * optabs.c (expand_abs): When OP0 and TARGET are the same + pseudo register, it is safe to use TARGET. + + * local-alloc.c (reg_equiv_replace): New variable. + (update_equiv_regs): Set reg_equiv_replacement for all REG_EQUIV + notes encountered or generated. + +Sun Aug 11 22:27:14 1996 Scott Christley + + * objc/hash.c (hash_is_key_in_hash): Function somehow got lost. + +Sun Aug 11 21:43:15 1996 Andreas Schwab + + * ginclude/stddef.h (__need_wint_t): Move #undef to right place. + +Sun Aug 11 17:46:22 1996 J"orn Rennecke + + * c-decl.c (finish_struct): If pedantic, also warn if struct/union + has no named members. + +Sun Aug 11 17:32:52 1996 Joel Sherrill + + * i386/rtems.h: Renamed from i386/i386-rtems.h + * i960/rtems.h: Renamed from i960/i960-rtems.h + * m68k/rtems.h: Renamed from m68k/m68k-rtems.h + * rs6000/rtems.h: Renamed from rs6000/powerpc-rtems.h + * sparc/rtems.h: Renamed from sparc/sparc-rtems.h + * config/t-rtems: New file. + * configure (i386-*-rtems*): Added t-rtems to tmake_file. + Renamed i386/i386-rtems.h to i386/rtems.h. + (i960-*-rtems*): Added t-rtems to tmake_file. + Renamed i960/i960-rtems.h to i960/rtems.h. + Added original tm.h file and dbxcoff.h. + (m68k-*-rtems*): Added t-rtems to tmake_file. + Renamed m68k/m68k-rtems.h to m68k/rtems.h. + (powerpc-*-rtems*): Added t-rtems to tmake_file. + Renamed rs6000/powerpc-rtems.h to rs6000/rtems.h. + (sparc-*-rtems*): Added t-rtems to tmake_file. + Renamed sparc/sparc-rtems.h to sparc/rtems.h. + +Fri Aug 9 16:05:13 1996 Stan Cox + + * i386.md: (untyped_call) Avoid SIGFPE. + + * i386.c (output_float_compare): Don't try to initialize + aggregate local variable; use assignment statements instead. + + * i386.h (RTX_COSTS): rtx_cost should pass two parameters. + + * i386/go32.h (ASM_OUTPUT_SECTION_NAME): New. + +Fri Aug 9 16:00:11 1996 Jim Wilson + + * winnt.c (gen_stdcall_suffix): Round parameter size to PARM_BOUNDARY. + +Thu Aug 8 17:42:35 1996 Michael Meissner + + * rs6000.c (output_toc): If we are emitting a reference to a + vtable, don't put in the section name, just use the symbol. + +Wed Aug 7 19:03:36 1996 Jim Wilson + + * sh.md (casesi_jump): New pattern. + (casesi): Generate RTL to match it. + +Wed Aug 7 14:10:07 1996 Jason Merrill + + * ginclude/stddef.h (NULL): Use __null for G++. + +Tue Aug 6 17:37:53 1996 Michael Meissner + + * rs6000/sysv4.h (STACK_BOUNDARY): Always define as 64. + (ABI_STACK_BOUNDARY): Define as 64/128 based on the -mno-eabi + switch. + + * rs6000.c (rs6000_stack_info): Use ABI_STACK_BOUNDARY, not + STACK_BOUNDARY. Define ABI_STACK_BOUNDARY as STACK_BOUNDARY #ifndef. + +Tue Aug 6 14:29:43 1996 Doug Evans + + * gen-protos.c (overrides): New static local. + (add_hash,parse_fn_proto): New static functions. + (main): Add prototypes from SYS_PROTO_OVERRIDES to hash table before + parsing sys-protos.h. Reserve entry 0 in std_protos. + * alpha.h (SYS_PROTO_OVERRIDES): Define. + +Mon Aug 5 16:53:36 1996 Doug Evans + + * sparc/t-splet (MULTILIB_OPTIONS): Add mbroken-saverestore. + (MULTILIB_DIRNAMES): Add brknsave. + + * stor-layout.c (layout_record): Correct overflow test for 0 sized + fields. + +Mon Aug 5 16:12:19 1996 Jim Wilson + + * alpha.c (alpha_output_filename): When emitting stabs, don't + disable them if using GNU as. + (alpha_output_lineno): Likewise, when not using GNU as. + + * sh.c (arith_reg_operand): Reject SUBREG of an invalid hard reg. + + * sparc/lite.h (aoutos.h): Don't include it. + * configure (sparclite-*-aout*): Add aoutos.h to tm_file. + +Sat Aug 3 23:13:55 1996 Jeffrey A Law (law@cygnus.com) + + * combine.c (rtx_equal_for_field_assignment_p): Check for + get_last_value returning (CLOBBER (CONST_INT 0)). + +Sat Aug 3 20:19:14 1996 Jim Wilson + + * i960.md (subsi3+1): Handle case where first operand is constant + but second operand is not. + + * m68k/vxm68k.h (WCHAR_TYPE_SIZE): Undef, then define to 16. + +Fri Aug 2 15:46:19 1996 Jeffrey A Law (law@cygnus.com) + + * pa/pa-hpux.h (LINK_SPEC): Don't link in PA1.1 specific + libraries when creating shared libraries. + * pa/pa-hpux9.h, pa/pa-hpux10.h: Likewise. + +Fri Aug 2 13:36:42 1996 Stan Cox + + * i386.c (output_float_compare): fcomi should be followed by the + correct conditional jump instead of fcom/pfstsw/and/jne + (override_options): Added -mbranch-cost to set BRANCH_COST. + + * i386.md (sgt+1,slt+1,sge+1,sle+1,bgt+1,blt+1,bge+1,ble+1,bleu+4) + Added TARGET_CMOVE check for fcomi. + (movsicc_1+1,movhicc_1+1): Added to handle the general case. + + * i386.h (i386_branch_cost, i386_branch_cost_string): Added. + +Fri Aug 2 11:53:55 1996 Brendan Kehoe + + * sparc/vxsparc.h (CPP_PREDEFINES): Add `-DCPU=SPARC'. + +Thu Aug 1 23:56:01 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (ASM_OUTPUT_INT): Remove all hacks for exception table. + +Thu Aug 1 10:08:14 1996 Torbjorn Granlund + + * m68k.h (RTX_COSTS, case PLUS): Get operand order right. + +Wed Jul 31 15:06:46 1996 Doug Evans + + * sparc.md (negtf2,abstf2): Fix v9 case. + +Wed Jul 31 09:49:25 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (ASM_OUTPUT_INT): Use an 'E%' prefix for items in + the exception table if TARGET_GAS && ! TARGET_PORTABLE_RUNTIME. + +Tue Jul 30 15:37:31 1996 Jim Wilson + + * i386/cygwin32.h (dbxcoff.h): Include. + (DBX_DEBUGGING_INFO, SDB_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE): + Move definitions before include of dbxcoff.h. + (ASM_OUTPUT_SOURCE_LINE, DBX_OUTPUT_MAIN_SOURCE_FILE_END): Delete. + (DBX_BLOCKS_FUNCTION_RELATIVE, DBX_FUNCTION_FIRST): Delete. + +Tue Jul 30 15:03:53 1996 Torbjorn Granlund + + * i960.md (eq reg (const_int 0)): New pattern. + +Tue Jul 30 11:15:44 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (RETURN_ADDR_RTX): Offset is -20 from the frame, not +20! + +Mon Jul 29 12:16:17 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (GO_IF_LEGITIMATE_ADDRESS): Fix thinko in last change. + +Fri Jul 26 18:19:47 1996 Doug Evans + + * dwarfout.c (output_bound_representation): Fix typo. + +Thu Jul 25 16:00:10 1996 Mike Stump + + * expr.c (do_jump, case TRUTH_ORIF_EXPR): Ensure end of an + exception region comes after its start. + (do_jump, case TRUTH_ANDIF_EXPR): Likewise. + +Thu Jul 25 13:36:42 1996 Stan Cox + + * i386.c (output_float_compare): Added support for Pentium Pro + fcomi instruction which sets EFLAGS instead of FPU Status Word. + +Wed Jul 24 21:48:08 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (canon_hash, cse_insn): MEM is not unchanging if it is + in the frame (since the temp slot might be reused). + +Wed Jul 24 17:34:06 1996 J"orn Rennecke (amylaar@cygnus.com) + + * sh.md (branch_true, branch_false, inverse_branch_true): Express + tests of the T bit as comparisons against zero, rather than one. + (inverse_branch_false, beq, bne, bgt, blt, ble, bge, bgtu): Likewise. + (bltu, bgeu, bleu, casesi): Likewise. + +Wed Jul 24 15:58:06 1996 Stan Cox + + * i386.md: (mov{sf,df,xf}cc{,_1}): New patterns for P6 FP cmove. + * i386.c (put_condition_code, print_operand, output_fp_cc0_set): + Support fcmov suffixes. + +Wed Jul 24 10:53:38 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (move_operand): Relax "mode" test. Allow scaled + indexed addressing modes. + (output_fp_move_double): Tweak output strings to work with updated + 'F' and 'M' output modifiers. + (print_operand): Collapse 'F' and 'M' into a single hunk of code. + For auto-increment modes output "s,ma" and "s,mb". + For scaled indexing modes output "x,s" + For other addresses, output nothing for 'M' and "s" for 'F'. + * pa.h (EXTRA_CONSTRAINT): Don't accept scaled indexed addresses + for 'Q' and 'T'. Do accept scaled indexed addresses for 'R'. + (GO_IF_LEGITIMATE_ADDRESS): Accept scaled indexed addresses + for SFmode and DFmode. + * pa.md: Remove all scaled indexed load patterns. + (movsi patterns): Accept scaled indexed addresses in some + cases. Update output strings for updated 'M' and 'F' output modifiers. + (movhi, movqi, movsf, movdf, movdi patterns): Likewise. + +Tue Jul 23 23:10:41 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (struct tree_int_cst): Add field for TREE_CST_RTL. + * varasm.c (decode_addr_const, output_constant_def): AllowINTEGER_CST. + +Tue Jul 23 16:42:09 1996 Jim Wilson + + * sh.c (reg_unused_after): Handle JUMP_INSN inside a sequence. + +Tue Jul 23 16:33:25 1996 Mike Stump + + * Make exception handling work better when optimizations are on. + * except.c, except.h: New files. + * Makefile.in (OBJS): Add except.o. + (except.o): Add. + (stmt.o, final.o): Add except.h. + * rtl.c (note_insn_name): Add NOTE_INSN_EH_REGION_{BEG,END}. + * rtl.h: Likewise. + * arm.h (MASK_RETURN_ADDR): Define. + * pa.h (MASK_RETURN_ADDR, RETURN_ADDR_RTX): New macros. + * sparc.h (DOESNT_NEED_UNWINDER): Define if not doing a flat function. + * mips.h (RETURN_ADDR_RTX): Improve. + * vax.h (RETURN_ADDR_RTX): Improve. + * toplev.c (rest_of_compilation): Use find_handler_labels. + (main, interim_eh{,_hook}): Remove interim_eh_hook support. + (flag_exceptions): New flag; also add to table. + (compile_file): Emit the exception table in the backend now. + * final.c (final_scan_insn): Support ASM_OUTPUT_EH_REGION_{BEG,END}. + (final_scan_insn): Redo handler labels, implement + NOTE_INSN_EH_REGION_BEG and NOTE_INSN_EH_REGION_END and use them + instead of CODE_LABELs. + (final): Add call to check_handler_labels. + * libgcc2.c (L_eh): Add support for EH_TABLE_LOOKUP. + * sparc.md (return): Add a reference to the return address register. + * flow.c (find_basic_blocks): Add support for handler_labels. + * loop.c (find_and_verify_loops): Likewise. + * jump.c (jump_optimize): Likewise. + Add call to check_handler_labels. Add call to exception_optimize. + * sched.c (sched_analyze): Smuggle exception region notes around. + (unlink_notes, reemit_notes, schedule_block): Likewise. + (sched_analyze): Add extra element since we remove two at a time. + * integrate.c (save_for_inline_copying): Add support for exception + regions. + (expand_inline_function): Likewise. + (function_cannot_inline_p): Don't inline functions that have EH + regions before NOTE_INSN_FUNCTION_BEG. + (finish_inline): Use FIRST_FUNCTION_INSN, not NEXT_INSN. + * function.c (expand_start_all_catch): New function. + * function.h: Add exception handling support information. + * expr.c (expand_expr, {defer,expand}_cleanups_to, do_jump): Transform + interim_eh_hook into calls to expand_ehregion_{start,end}. + * stmt.c (expand_{decl_cleanup,cleanups}): Likewise. + (init_stmt_for_function): Call init_eh. + (save_stmt_status): Call save_eh_status. + (restore_stmt_status): Call restore_eh_status. + * expr.h (throw_libfunc): Add. + * optabs.c (throw_libfunc): Initialize. + * print-rtl.c (print_rtx): Add support for exception regions. + * rs6000.c (EXCEPTION_SECTION): Define. + * output.h (exception_section): Declare. + * varasm.c (exception_section): Define. + * i386.c, i960.c, rs6000.c: Include except.h for function.h. + * c-pragma.c, emit-rtl.c, expr.c, final.c, flow.c: Include except.h. + * function.c, integrate.c, jump.c, loop.c, objc-act.c: Likewise. + * stmt.c, stor-layout.c, toplev.c, tree.c, varasm.c: Likewise. + +Tue Jul 23 12:32:54 1996 Michael Meissner + + * rs6000.c (rs6000_replace_regno): Set pic_offset_table_rtx so + that other phases will use the PIC register instead of the + placeholder. + + * rs6000.md (movsi_got*): Eliminate -fPIC code, keep -fpic code. + (movsi): Only call movsi_got if -fpic, not -fPIC. + + * sysv4.h (OVERRIDE_OPTIONS): Improve error messages. Always set + -msdata=data by default, even if -fpic/-fPIC/-mrelocatable. Treat + -fPIC the same as -mrelocatable-lib and vica versa. + + * t-ppcgas: (MULTILIB_*): Use -mreloctable-lib, instead of + -mrelocatable. Map Solaris into mcall-sysv-noeabi case. Build + -mrelocatable-lib libraries under non-eabi case. When linking, if + -fpic, -fPIC, or -shared, link in the -mrelocatable-lib libraries. + +Mon Jul 22 19:34:20 1996 Jim Wilson + + * iris6.h (ASM_SPEC): Change {% to %{. + + * dwarf2out.c (output_call_frame_info): Change FDE CIE offset to + be section name rather than 0. + (gen_subprogram_die): Only emit DW_AT_external if origin is NULL. + Only call equate_decl_number_to_die if origin is NULL. + (dwarfout_begin_function): In code that computes offset of frame + pointer, change 4 to UNITS_PER_WORD. + + * combine.c (undo_all): Clear previous_undos field. + +Mon Jul 22 19:10:45 1996 Ian Lance Taylor + + * configure: Don't change target_alias to target in Makefile. + +Sat Jul 20 09:28:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * dwarfout.c (output_bound_representation): Treat default case + as variable bounds, then look inside for SAVE_EXPR. + + * mips.h (INITIALIZE_TRAMPOLINE): Use `_flush_cache'; flush data + cache too. + +Sat Jul 20 09:24:13 1996 Marco Walther (Marco.Walther@mch.sni.de). + + * configure (mips-sni-sysv4): New target. + * mips/sni-gas.h, mips/sni-svr4.h, mips/x-sni-svr4: New files. + +Fri Jul 19 17:44:13 1996 Stan Coxs + + * i386.md: (leave): Clobbers esp and ebp. + + * i386.h: (TARGET_USE_Q_REG): Support inline strlen on PentiumPro + +Fri Jul 19 15:56:18 1996 Ian Lance Taylor + + * m68k/t-m68kbare (MULTILIB_OPTIONS): Add m5200. + (MULTILIB_EXCEPTIONS): Define. + * m68k/lb1sf68.asm: Add MCF5200 support. + * m68k.md (adddi_sexthishl32): Set condition to !TARGET_5200. + (subdi_sexthishl32, ashrdi3, ashrhi3): Likewise. + (negdi2): Change into define_expand. + (negdi2_internal): Rename from old negdi2; condition now !TARGET_5200. + (negdi2_5200): New insn. + * m68k.c (output_function_prologue): Don't use add.w if TARGET_5200. + (output_function_epilogue): Likewise. + + * m68k.md (movqi): Remove complex cases which move between address reg + and memory; rely on secondary reloads instead. + +Fri Jul 19 12:22:50 1996 Brendan Kehoe + + * fixproto (std_files): Add utime.h. + +Fri Jul 19 10:59:46 1996 Jeffrey A Law (law@cygnus.com) + + * m68k/m68kemb.h: Remove '\' at EOF. + +Fri Jul 19 09:59:00 1996 Joel Sherrill + + * m68k/coff.h (STARTFILE_SPEC): Add #undef before definition. + +Fri Jul 19 09:44:45 1996 J.T. Conklin + + * m68k.h (LEGITIMATE_INDEX_P): Coldfire does not have scale + by 8 addressing modes. + + * m68k-none.h: Use MASK_* macros instead of explicit constants. + +Fri Jul 19 09:08:53 1996 Philippe De Muyter + + * m68k.md (negdi2): Undo last change: don't apply neg to address regs. + +Fri Jul 19 09:03:01 1996 Robert Wilhelm (rwilhelm@Physik.TU-Muenchen.DE) + + * toplev.c (main): Correct typo in error message. + +Thu Jul 18 20:29:33 1996 Jim Wilson + + * Makefile.in (OBJS): Add dwarf2out.o. + (dwarf2out.o): New rule. + * dwarf2.h, dwarf2out.c: New files. + * dwarfout.c: Check DWARF_VERSION macro. + + * mips/iris6.h (DWARF_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE): + Move after header files are included. + (iris5.h): Include instead of iris5gas.h. + (MACHINE_TYPE): Change 5.x to 6.x. + (DEBUG_SECTION, LINE_SECTION): Add debug_ to name, fix attributes. + (SFNAMES_SECTION, SRCINFO_SECTION, MACINFO_SECTION, PUBNAMES_SECTION, + ARANGES_SECTION): Fix attributes. + (DWARF_VERSION, MIPS_DEBUGGING_INFO, ASM_DECLARE_FUNCTION_NAME, + ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED, + FRAME_SECTION, ABBREV_SECTION): Define. + (DBX_DEBUGGING_INFO, SDB_DEBUGGING_INFO, MIPS_DEBUGGING_INFO, + DWARF_DEBUGGING_INFO, PREFERRED_DEBUGGING_INFO): Delete undefs at + end of file. + * mips.c (function_{pro,epi}logue): Use FUNCTION_NAME_ALREADY_DECLARED. + +Thu Jul 18 19:24:19 1996 David Mosberger-Tang + + * alpha/elf.h (INT_ASM_OP): Change from ".long" to ".quad". + +Thu Jul 18 19:20:58 1996 Ulrich Drepper + + * stddef.h: Undefine __need_wint_t. + +Thu Jul 18 19:06:35 1996 J.T. Conklin + + * longlong.h (mc680x0): Define umul_ppmm, udiv_qrnnd, sdiv_qrnnd + for the '020, '030, '040, and '332. Define count_leading_zeros + for the '020, '030, '040, and '060. + + * m68k.md: Add TARGET_5200 to conditions which determine whether + the extbl instruction is emitted. + (mulsi3): Enable pattern with TARGET_5200. + + * m68k.md (add patterns): Don't use two addqw instructions when + adding small (8 < N <= 16) integers to address registers on 68040. + +Thu Jul 18 18:06:15 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Write target_alias in Makefile. + (i[3456]86-*-sco3.2v4*): Set truncate_target. + * Makefile.in (target_alias): New and used for all current uses + of `target'. + +Thu Jul 18 17:46:02 1996 Dave Love + + * gcc.c (default_compilers): Extra Fortran extensions. + +Wed Jul 17 10:28:10 1996 Torbjorn Granlund + + * expmed.c (expand_mult_highpart): Revert last change. + +Tue Jul 16 12:51:59 1996 Doug Evans + + * sparc/sparc-rtems.h: #include "sparc/sparc-aout.h" -> sparc/aout.h. + +Mon Jul 15 14:42:06 1996 Jim Wilson + + * mips/iris6.h (LINK_SPEC): Add -woff 84. + +Fri Jul 12 17:34:01 1996 Michael Meissner + + * rs6000/eabi.asm (__eabi): Convert pointers in the Global Offset + Table if -mrelocatable. Move loops into separate subroutines for + ease of debugging. Reorganize code somewhat. + + * rs6000/rs6000.c (small_data_operand): Allow small data under + Solaris. + + * rs6000/sol-c0.c (_start): Initialize r13 to point to the small + data operand. + + * rs6000/sol-c{i,n}.asm (_init, _fini): Enable shared library + support. + + * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Default to + -msdata=data, even if -fpic or -mrelocatable. Allow -mrelocatable + and -mno-eabi. + (CPP_SYSV_SPEC): If -fpic, define __PIC__ and __pic__ to 1. If + -fPIC, define them to 2. + (CPP_ENDIAN_SPEC): Push definition of macros for specific endian + targets to new specs. + (CPP_ENDIAN_DEFAULT_SPEC): Define to use CPP_ENDIAN_BIG_SPEC. + (CPP_ENDIAN_{LITTLE,BIG,SOLARIS}_SPEC): New specs for little + endian mode, big endian mode, and Solaris, which can't define + _LITTLE_ENDIAN. Define __LITTLE_ENDIAN__ in all cases for little + endian systems. Define __BIG_ENDIAN__ in all cases for big endian + systems. + (SUBTARGET_EXTRA_SPECS): Add new specs. + + * rs6000/{eabile,sysv4le}.h (CPP_ENDIAN_DEFAULT_SPEC): Define to + use CPP_ENDIAN_LITTLE_SPEC. + + * rs6000/sol2.h (CPP_ENDIAN_LITTLE_SPEC): Define as + CPP_ENDIAN_SOLARIS_SPEC so that _LITTLE_ENDIAN is not define. + +Fri Jul 12 17:34:01 1996 David Edelsohn + + * rs6000.c (function_arg): Add IBM AIX XL compiler broken FP arg + passing compatibility mode. + * rs6000.h (TARGET_XL_CALL): Define default. + * aix3newas.h (TARGET_XL_CALL, SUBTARGET_SWITCHES): Define. + * aix41.h (TARGET_XL_CALL, SUBTARGET_SWITCHES): Define. + +Fri Jul 12 15:04:43 1996 Doug Evans + + * arm.h (ASM_OUTPUT_MI_THUNK): Handle fns returning structures. + + * ptx4.h ({ASM,LINK}_SPEC): %{V} %{v:%{!V:-V}} -> %{v:-V}. + * svr4.h ({ASM,LINK}_SPEC): Likewise. + * dsp16xx/dsp16xx.h ({ASM,LINK}_SPEC): Likewise. + * i386/dgux.h (LINK_SPEC): Likewise. + * i386/sol2.h (LINK_SPEC): Likewise. + * m88k/dgux.h ({LINK,ASM_CPU}_SPEC): Likewise. + * sparc/sol2.h ({ASM,LINK}_SPEC): Likewise. + * sparc/sp64-elf.h ({ASM,LINK}_SPEC): Likewise. + * sparc/sysv4.h (ASM_SPEC): Likewise. + +Thu Jul 11 17:29:33 1996 Michael Meissner + + * rs6000.h (GOT_TOC_REGNUM): New macro for r2, which is used as a + marker for the GOT/TOC register to be allocated later. + (MACHINE_DEPENDENT_REORG): Call rs6000_reorg. + (rs6000_reorg): Add declaration. + + * rs6000.c (rs6000_got_register): Return REG 2, not a pseudo + register in order to work with inlined functions. + (rs6000_replace_regno): New function to replace a register with a + new pseudo register. + (rs6000_finalize_pic): Loop through all insns, replacing any + GOT_TOC_REGNUM registers with new pseudo register, and adding + initialization of GOT register if it was created. + (rs6000_reorg): New function to check whether the GOT_TOC register + marker was removed. + +Thu Jul 11 10:12:50 1996 Jeffrey A Law (law@cygnus.com) + + * h8300.h (OK_FOR_U): If generating H8/S code, accept + SYMBOL_REF and SYMBOL_REF + CONST_INT. + + * h8300.c ({shift,rotate}_one): Emit tabs between opcode and + operands to be consistent with the rest of the compiler. + (shift_two, rotate_two): Define. + (get_shift_alg): Accept new argument "assembler2_p" for + rotate/shift by two insns. All callers changed. Rework + to generate more efficient code on the H8/300, H8/300H, and H8/S. + Try to simplify somewhat. + (emit_a_shift): Use shift-by-two insns when they're available. + Emit tabs between opcode and operands to be consistent with + the rest of the compiler. + +Wed Jul 10 19:32:17 1996 Jim Wilson + + * mips/iris6.h (ASM_SPEC): Correct typos in Jun 18 change. + +Wed Jul 10 18:56:38 1996 Ian Lance Taylor + + * sh.c (machine_dependent_reorg): When looking for instruction that + sets register in LOG_LINKS, skip link if REG_NOTE_KIND is not zero. + +Wed Jul 10 15:02:18 1996 Michael Meissner + + * rs6000.c (rs6000_got_register): New function to return a pseudo + register to hold the pic register. Abort if reload is in progress + or done. + (num_insns_constant): Allow SFmode and DFmode. + + * rs6000.h (CONST_DOUBLE_OK_FOR_LETTER_P): Redo 'G' so that it + means a constant that takes exactly two insns. + (rs6000_got_register): Add declaration. + + * rs6000.md (movsi_got): Move setup of pic register to + rs6000_got_register. + (movsf): If -msoft-float, don't force constants to memory. + (mov{sf,df} insns): If soft floating point, allow any constant to + be loaded. Add define_splits that allow the 604 to use both + integer units for loading constants. Make sure insn length is + correct. + +Tue Jul 9 17:05:10 1996 Michael Meissner + + * rs6000.c (easy_fp_constant): All FP constants are considered + hard for -fpic and hardware floating point, so that the GOT + register is created. + +Tue Jul 9 15:21:27 1996 Jim Wilson + + * x-iris6 (FIXPROTO_DEFINES): Add -D_SGI_SOURCE. + +Mon Jul 8 18:00:33 1996 Jim Wilson + + * sh.h (enum reg_class): Add new class GENERAL_FP_REGS. + (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise. + + * cse.c (note_mem_written): Varying structure memory access with + AND address can alias scalars. + * sched.c ({true,anti,output}_dependence): Likewise. + + * sh.c (calc_live_regs): For pragma_interrupt case, exclude call + clobbered regs that are fixed, explicitly add MACH_REG and MACL_REG. + + * calls.c (expand_call): For assign_stack_temp call in PARALLEL case, + get mode from type instead of using BLKmode. + * function.c (aggregate_value_p): If hard_function_value returns + a non-REG, then return 0. + + * mips.c (function_arg): Add explicit checks for FIELD_DECLs. + (mips_function_value): Add explicit checks for FIELD_DECLs, and save + them in the array FIELDS. When returning structure with 1 float field, + enclose it in a PARALLEL and set the PARALLEL mode correctly. + * mips.md (call_value): Call gen_call_value_multiple_internal0 + only if there are multiple return values. Strip the PARALLEL off + if there there is only one return value. + +Mon Jul 8 16:27:33 1996 Jeffrey A. Law + + * First cut at support for the H8/S. + * h8300.c (h8300_init_once): Handle the H8/S (treat it + like the H8/300H). + (dosize, adds_subs_operand, one_insn_adds_subs_operand): Likewise. + (output_adds_subs, const_costs, print_operand): Likewise. + (output_simode_bld, h8300_adjust_insn_length): Likewise. + (push_order, pop_order): Reverse. + (function_prologue): Try to use ldm.l and stm.l insns + on the H8/S. Minor cleanups. + (function_epilogue): Likewise. + (asm_file_start): Emit ".h8300s" when compiling for the H8/S. + * h8300/h8300.h (CPP_SPEC): Handle the H8/S. + (TARGET_H8300S): New target. + (TARGET_SWITCHES): Add "-ms" and "-mno-s". + (BITS_PER_WORD): Handle the H8/S (treat it like the H8/300H). + (UNITS_PER_WORD, POINTER_SIZE, PARM_BOUNDARY): Likewise. + (BIGGEST_ALIGNMENT, BIGGEST_FIELD_ALIGNMENT): Likewise. + (INITIALIZE_TRAMPOLINE, MOVE_MAX, Pmode): Likewise. + * h8300.md: Handle H8/S just like H8/300H + throughout the entire file. + * t-h8300 (MULTILIB_OPTIONS): Build "-ms" libraries too. + (MULTILIB_DIRNAMES): Put H8/S libraries in "h8300s" directory. + * h8300/lib1funcs.asm: Emit ".h8300s" pseudo-op when generating + h8300s object files. Otherwise treat the H8/S just like the H8/300H. + * ginclude/stdarg.h: Handle the H8/S. + * ginclude/varargs.h: Likewise. + +Mon Jul 8 14:50:58 1996 Doug Evans + + * sparc/sol2.h (LINK_SPEC): Don't pass `-z text' if + -shared -mimpure-text. + +Sun Jul 7 18:03:46 1996 Torbjorn Granlund + + * m68k/lb1sf68.asm (__udivsi3): Use faster tstw instead of btst. + +Thu Jul 4 11:44:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): Delete using alternate mode for + bitfield; we don't make bitfields anymore if not needed. + +Wed Jul 3 18:23:17 1996 Stephen L Moshier (moshier@world.std.com) + + * c-common.c (record_function_format): Define as static. + + * collect2.c (at SUNOS4_SHARED_LIBRARIES): Fix reference to unistd.h. + +Wed Jul 3 17:35:20 1996 Gavin Koch + + * c-typeck.c (default_conversion): Add bitfield promotions. + +Wed Jul 3 17:09:22 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (default_compilers): Add null entries for languages we + heard of. + (main): If found one of those entries, say compiler not installed. + +Wed Jul 3 12:52:53 1996 Jeffrey A. Law + + * pa.c (fmpy_operands): Define. + (combinable_{fmpy,add,fsub}): New function. + * pa.md (parallel_addb, parallel_movb): New patterns. + (fmpyadd, fmpysub): New patterns. + + * pa.c (fmpy{add,sub}operands): Tighten checks. Allow SFmode. + +Tue Jul 2 18:57:15 1996 Jeffrey A. Law + + * pa.c (ireg_or_int5_operand): New function. + (output_parallel_movb, output_parallel_addb): Likewise. + (combinable_copy, combinable_add, following_call): Likewise. + (pa_adjust_insn_length): Handle parallel unconditional branches. + (output_movb): Handle case were destination is %sar. + * pa.h: Declare new functions. + * pa.md (parallel_branch): New "type" attribute. + (delay slot descriptions): Don't allow "parallel_branches" in + delay slots. Fill "parallel_branches" like "branch" insns. + (movb patterns): Handle %sar as destination register. + + * expr.c (compare): If function pointers need canonicalization + before comparisons, canonicalize them. + (do_store_flag): Do not use an sCC insn for a function pointer + comparison if function pointers need canonicalization before + comparing. + +Tue Jul 2 17:56:37 1996 Michael Meissner + + * rs6000/sysv4.h ({START,END}FILE_LINUX_SPEC): If -mnewlib is not + used, use the crtbegin/crtend that 2.7.2 used. + +Sat Jun 29 07:10:02 1996 Michael Meissner + + * rs6000.h (INIT_EXPANDERS): Define, call rs6000_init_expanders. + (RS6000_VARARGS_OFFSET): fpmem area no longer next to outgoing + argument area. + (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET): Likewise. + (frame_pointer_needed): Add external declaration. + (rs6000_{save,restore}_machine_status): Ditto. + (rs6000_init_expanders): Likewise. + + * rs6000.c (rs6000_{save,restore}_machine_status): New functions + to save and restore the globals needed on a per function basis. + (rs6000_init_expanders): Initialize globals needed on a per + function basis, and set up so the above save/restore functions are + called when processing nested functions. + (output_epilog): Don't initialize per function globals here. + (rs6000_stack_info): Change where fpmem save area is to below local + variables, and not just below the outgoing argument area. + + * rs6000.md (floatsidf2*, fix_truncdfsi2*): Rewrite conversion + routines to track new location of the fpmem save area. Allocate a + new base register temp for the routines in case the stack frame is + more than 32k in size. + +Sat Jun 29 05:44:37 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * explow.c (convert_memory_address, case PLUS): Fix error in + last change. + +Fri Jun 28 23:30:48 1996 Jeffrey A. Law + + * reload1.c (choose_reload_regs): Properly mark spill registers + as in use for inherited reloads. + +Fri Jun 28 18:37:20 1996 Stephen L Moshier + + * objc/sarray.c (ifdef __alpha__): Don't declare `free'. + * objc/thr-decosf1.c (objc_thread_id): Use pthread_getunique_np + to obtain a thread ID value. + (objc_mutex_allocate): Cast mutex->owner to _objc_thread_t. + (objc_mutex_{deallocate,unlock}): Likewise. + (objc_mutex_{try,un,}lock): Declare thread_id as _objc_thread_t. + + * real.c (asctoeg): `0.0eX' is zero, regardless of the exponent X. + +Fri Jun 28 18:33:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * vax.md (rotl): Remove extraneous `$'. + + * combine.c (previous_num_undos): Deleted variable. + (MAX_UNDO): Deleted macro. + (struct undo): New field, next. + (struct undobuf): Deleted num_undos and undo. + New fields undos, frees, and previous_undos. + (SUBST, SUBST_INT): Rework to allocate memory and chain undo entries. + (combine_instructions): Initialize undobuf.{undos,previous_undos}, + not undobuf.num_undo and previous_num_undos. + (try_combine): Likewise. + (undo_all, gen_rtx_combine): Rework to use new data structures. + +Fri Jun 28 16:48:25 1996 Scott Christley + + * objc/sendmsg.c (__objc_block_forward): New function. + (get_imp, objc_msg_lookup): Use different forwarding function + when the returning a floating point value. + +Fri Jun 28 16:25:25 1996 Andreas Schwab + + * configure: Allow multiple makefile frags. + (i[3456]86-*-linux*oldld*): Add i386/t-crtstuff as target frag. + (i[3456]86-*-linux*aout*, i[3456]86-*-linux*): Likewise. + (m68k-*-linux*aout*): Add t-linux-aout as target frag. + (m68k-*-linux*): Add t-linux as target frag. + * Makefile.in (Makefile): xmake_file and tmake_file now already + contain the $(srcdir)/config prefix. + + * config/t-linux (BOOT_CFLAGS): Removed, no longer necessary. + (CRTSTUFF_T_CFLAGS): Don't define. + (CRTSTUFF_T_CFLAGS_S): Define this instead. + * config/t-linux-aout (BOOT_CFLAGS): Removed. + * m68k/t-linux: Remove variables now in t-linux. + +Fri Jun 28 15:06:05 1996 John F. Carr + + * alpha.c (alpha_emit_conditional_move): Emit correct code when + incoming comparison code is NE. + +Fri Jun 28 14:35:45 1996 J.T. Conklin + + * c-decl.c (init_decl_processing): Register __builtin_memset + and memset as builtin functions. + * expr.c (expand_builtin, case BUILTIN_MEMSET): Open code memset + where val == 0. + +Fri Jun 28 14:10:03 1996 Richard Henderson + + * alpha/linux.h (FUNCTION_PROFILER): _mcount has non-standard linkage. + * alpha/elf.h (LINK_SPEC): Bring emulation name into sync + with Cygnus snapshot. + + * alpha.h ({MASK,TARGET}_BUILD_CONSTANTS): New macros. + (TARGET_SWITCHES): New target option build-constants. + * alpha.c (alpha_emit_set_long_const): New function. + * alpha.md (movdi): Call it. + * expmed.c (expand_mult_highpart): Use op1 not wide_op1 in + expansion of mul_highpart. + + * alpha.c (output_{pro,epi}log): Flag_inhibit_size_directive + should supress .ent, .end, and accompanying directives. + (alpha_output_lineno): Fix polarity on GAS test. + * alpha.h (NO_DBX_FUNCTION_END): New macro. + * dbxout.c (dbxout_function): Respect NO_DBX_FUNCTION_END. + * alpha/elf.h: New file. + * alpha/linux.h (INITIALIZE_TRAMPOLINE): New definition. + * alpha/xm-linux.h (HAVE_STRERROR): Define. + * configure (alpha*-linux*ecoff*): New target, was alpha-*-linux*. + (alpha-*-linux*): Use elf.h. + * crtstuff.c (init_dummy): Only i386-linux (at most) + needs ___brk_addr hack. + +Thu Jun 27 20:23:30 1996 Jon Buller (jonb@metronet.com) + + * ns32k.c (split_di): New; from i386.c. + * ns32k.md (adddi3, subdi3, negdi3): New patterns. + +Thu Jun 27 19:42:50 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (force_to_mode, case NE): Fix typo and logical error. + (simplify_comparison): Don't swap args if op1 is CONST_INT. + +Thu Jun 27 18:49:35 1996 Jim Wilson + + * expmed.c (extract_bit_field): Check TRULY_NOOP_TRUNCATION before + making a SUBREG of a REG. + +Thu Jun 27 11:03:59 1996 Ian Lance Taylor + + * mips.h (CC1_SPEC): Put spaces between the -mips* cases. + * mips/osfrose.h (CC1_SPEC): Likewise. + + * sh.c (output_branch): Don't call ADJUST_INSN_LENGTH if insn is + inside sequence. + +Wed Jun 26 19:09:43 1996 Jeffrey A. Law + + * pa.h (CMP_PSI): Delete. + (FUNCTION_POINTER_COMPARISON_MODE): Likewise. + * pa.md (cmppsi): Delete expander. + (canonicalize_funcptr_for_compare): Renamed from plabel_dereference, + turned into an expander + anonymous pattern. + +Tue Jun 25 22:36:11 1996 Doug Evans + + * gcc.c (PEXECUTE_VERBOSE): Define. + (execute): Pass PEXECUTE_VERBOSE to pexecute if -v. + +Tue Jun 25 12:23:54 1996 Michael Meissner + + * rs6000.h (FINALIZE_PIC): Define to call rs6000_finalize_pic. + (rs6000_finalize_pic): Add declaration. + (svr4_traceback): Delete unused declaration. + + * rs6000.md (movsi_got): Don't emit gen_init_v4_pic insn. + (V.4 call insns): Do not use @plt for PIC calls. + + * rs6000.c (print_operand_address): Handle LABEL_REF just like + SYMBOL_REF. + (rs6000_finalize_pic): Define, emit the gen_init_v4_pic insn + before all other insns if needed for V.4 PIC calls. + + * eabi-ci.asm (_GLOBAL_OFFSET_TABLE_): Do not provide a default + definition, since it interferes with the linker generated version. + +Tue Jun 25 01:17:50 1996 Jeffrey A. Law + + * h8300.c (function_prologue): Update "monitor" prologues. + (function_epilogue): Similarly. + + * pa.h (PARSE_LDD_OUTPUT): Handle dynamic libraries that are + loaded "statically". + +Mon Jun 24 19:48:36 1996 Joel Sherrill + + * configure ({i386,i960,m68k,powerpc,sparc}-rtems): New targets. + * i386/go32-rtems.h, i386/i386-rtems.h: New files. + * i960/i960-rtems.h: New file. + * m68k/m68k-rtems.h: New file. + * rs6000/powerpc-rtems.h: New file. + * sparc/sparc-rtems.h: New file. + +Mon Jun 24 23:09:22 1996 Paul Eggert + + * cccp.c: (create_definition): Diagnose `#define #' only once. + +Mon Jun 24 11:42:58 1996 Jim Wilson + + * i386/cygwin32.h, rs6000/cygwin32.h (CPP_PREDEFINES): For consistency, + change to define WIN32, WINNT, and CYGWIN32. + +Mon Jun 24 10:46:50 1996 Michael Meissner + + * rs6000.md (floatsidf2*): Move the xor of the argument into the + define_insn, since it confuses inline function expands. + +Fri Jun 21 20:40:17 1996 Jim Wilson + + * mips.md (call_internal1, call_value_internal1): Delete obsolete code. + (call_internal2, call_value_internal2, call_value_multiple_internal2): + Delete obsolete code. Explicitly load SYMBOL_REF into register. + (call_value): Change Pmode to SImode in gen_call_value_internal0 call. + +Thu Jun 20 12:20:33 1996 Michael Meissner + + * configure (*-aix*): If building a cross compiler, use t-xnewas + instead of t-newas. + + * rs6000.c (num_insns_constant_wide): Fix typo if HOST_WIDE_INT + has more than 32 bits. + +Wed Jun 19 17:50:33 1996 Richard Henderson + + * combine.c (move_deaths): New parameter maybe_kill_insn. + Don't move note if reg killed by maybe_kill_insn. + (try_combine): Pass new arg to move_deaths. + +Wed Jun 19 10:44:47 1996 Brendan Kehoe + + * toplev.c (flag_keep_static_consts): Define. + (f_options): Add "keep-static-consts" entry. + (compile_file): Check it in addition to !optimize for emitting + static const variables. + +Tue Jun 18 23:37:20 1996 Doug Evans + + * i386/cygwin32.h (ASM_OUTPUT_SOURCE_LINE): Local symbols begin with L. + +Tue Jun 18 12:00:11 1996 Jason Merrill + + * varasm.c (asm_output_aligned_bss): Don't emit a skip of size 0. + +Tue Jun 18 06:24:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Add missing call to + force_operand when getting structure_value_addr into reg. + + * alpha.c (override_options): Allow EV4/5 or 21064/21164 for cpu. + Clean up handling of floating-point options. + * alpha.h (TARGET_SWITCHES): Have all -mieee options turn + on MASK_IEEE_CONFORMANT. + (TARGET_DEFAULT): Use symbolic value. + * alpha.md: When not involving named pattern, update condition + to include alpha_tp != ALPHA_TP_INSN. + Don't do float_extend as part of other pattern when ALPHA_TP_INSN. + (extendsfsd2): Split into two patterns, depending on + value of alpha_tp. + + * mips/iris6.h (ASM_SPEC): Treat -o32 as -32 and -n64 same as -64. + * mips.c (override_options): Likewise. + + * genattrtab.c (fatal): Declare A1 and A2 as char *. + + * function.c (find_temp_slot_from_address): Check for overlap + from BASE_OFFSET if X is PLUS of virtual_stack_vars_rtx and const. + + * flow.c (flow_analysis): Fix typo in last change. + + * expr.c (expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly + handle case when ptr_mode != Pmode. + + * combine.c (try_combine): Don't use split if dest of new I2 + is used between I2 and I3. + + * c-typeck.c (pointer_int_sum): Convert integer to both signedness + and precision of sizetype. + * explow.c (convert_memory_address, case PLUS, MULT): Don't commute + operation with extension if not adding small integer. + + * Makefile.in (BOOT_LANGUAGES): New variable. + (bootstrap): Use it to select languages for stage1. + * configure (extra_host_objs): New variable. + Separate files needed for target and host and concatenate list. + (extra_gcc_objs): Use setting for host, not target. + (objc_thread_file): Start with it as null, then don't include "thr-". + Print name of file after others and in same format. + (alpha-*-winnt*, i[3456]86-*-winnt): oldnames.o is in extra_host_objs. + (all_boot_languages): New variable. + Set from boot_language variable in config-lang.in. + Defines value of BOOT_LANGUAGES in Makefile. + (Makefile): Set target to the canonical form of target. + +Mon Jun 17 22:37:07 1996 Mike Meissner + + * rs6000/win-nt.h (ASM_DECLARE_FUNCTION_NAME): Put function + descriptor in .reldata, not .text. + +Mon Jun 17 16:05:34 1996 Brendan Kehoe + + * ginclude/stddef.h (wint_t): Don't wrap with #ifndef __cplusplus. + +Mon Jun 17 15:03:20 1996 Jim Wilson + + * mips.c (mips_split_addresses): New variable. + (simple_memory_operand): Add comment about mode check. Add check + for LO_SUM. + (call_insn_operand): OP is now an addresses instead of a MEM. + (move_operand, mips_check_split): New functions. + (mips_count_memory_refs): Add check for LO_SUM. + (mips_move_1word): Add HIGH support. + (mips_address_cost): Delete check for HIGH. + (output_block_move): Handle LO_SUM addresses. + (override_options): Set mips_split_addresses. + (print_operand_address): Add LO_SUM support. + * mips.h (mips_split_addresses, mips_check_split, move_operand): + New declarations + (GO_IF_LEGITIMATE_ADDRESS): Reject constant addresses when + mips_split_addresses is TRUE. Add LO_SUM support. + (LEGITIMIZE_ADDRESS): Add LO_SUM support. + (PREDICATE_CODES): Modify call_insn_operand support. Add + move_operand. + * mips.md (memory): Change r4100/r4300 support. + (imuldiv): Add r4300 support. + (high, low): New patterns. + (movsi, movdi): Add LO_SUM support. + (movsi_internal1, movsi_internal2): Use move_operand instead of + general_operand. + (movstrsi_internal, movstrsi_internal2): Delete R constraint. + (call, call_value): Pass address instead of MEM to call_insn_operand. + Call gen_call_{value_}internal0 instead of internal1. + (call_internal0, call_value_internal0, call_multiple_internal0): + New patterns. + (call_internal1, call_internal2, call_value_internal1, + call_value_internal2, call_value_multiple_internal2): Add explicit + MEM before target address. + +Sun Jun 16 23:05:16 1996 Jeffrey A. Law + + * configure (hppa*-hp-hpux10*): Use new pa-hpux10 configuration file. + (hppa*-hp-hpux*): Use hpux9 configuration files by default. + * pa/pa-hpux10.h: New file. + * pa/pa-ghpux9.h: Deleted. No longer used. + +Sat Jun 15 04:35:51 1996 Roland McGrath + + * i386/gnu.h (LINK_SPEC): Remove -rpath /lib/ option. + Ignore -ibcs option. + +Thu Jun 13 14:49:41 1996 Jim Wilson + + * gen-protos.c (main): Change argv[i] to argv[0][i]. + +Thu Jun 13 10:46:24 1996 Doug Evans + + * gcc.c (pfatal_pexecute): Delete code to check errno < sys_nerr. + +Wed Jun 12 21:47:10 1996 Eliot Dresselhaus + + * alpha.c (alpha_cpu, alpha_cpu_string): New variables. + (override_options): Process -mcpu= value. + (alpha_adjust_cost): Handle adjustments for EV5. + * alpha.h (enum processor_type): New enum. + (alpha_cpu, alpha_cpu_string): New declarations. + (target_options): Add "cpu=". + (RTX_COSTS): Adjust values for EV5. + * alpha.md: Add scheduling rules for EV5. + +Tue Jun 11 17:51:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (check_format_info): Change text of message about use + of `0' with precision. + +Tue Jun 11 15:14:10 1996 Stan Cox + + * i386.h (TARGET_SCHEDULE_PROLOGUE): New. Allows prologue to + be emitted as asm or rtl. + + * i386.c (function_prologue): Emit prologue as asm. + (override_options): Don't emit rtl for prologue if -fpic. + +Tue Jun 11 14:41:01 1996 Michael Meissner + + * rs6000/eabi.asm (__eabi): Fix normal code so that it properly + loads up r2/r13 if needed again. + + * rs6000/sysv4.h (CPP_ENDIAN_SPEC): Call cpp_endian_default, not + cpp_endian_default_spec. + +Mon Jun 10 15:10:56 1996 Jeffrey A. Law + + * local-alloc.c (update_equiv_regs): Ignore insns that read or + write registers that are likely to be spilled. + + * pa.h (cmp_type): Add CMP_PSI. + (FUNCTION_POINTER_COMPARISON_MODE): Define. + * pa.md (cmppsi): New expander. + (plabel_dereference): New pattern + +Mon Jun 10 14:56:14 1996 Michael Meissner + + * rs6000/sol2.h (SKIP_ASM_OP): Delete, Solaris accepts .space, + like rest of PowerPC V4 ports. + + * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Emit .lcomm if not + using the .sbss area. If using the .sbss area, put out + appropriate .size directive. + +Mon Jun 10 14:53:38 1996 Doug Evans + + * Move fork/exec/wait handling into file of its own. + * pexecute.c: New file. + * Makefile.in (pexecute.o): Add rule. + (xgcc): Link in pexecute.o. + (protoize,unprotoize): Likewise. + * gcc.c (_WIN32): Don't include process.h or declare spawnv{,p}. + (pexecute,pwait): Add prototypes. + (PEXECUTE_{FIRST,LAST,SEARCH}): Define. + (execv,execvp): Delete decls. + (perror_exec): Delete. + (pfatal_pexecute): New function. + (pexecute support): Delete. + (execute): -pipe not supported if _WIN32 or OS2. + Update call to pexecute. Fatal error if pexecute fails. Call pwait. + * protoize.c: Include gansidecl.h. + (my_execvp): Delete. + (choose_temp_base,pexecute,pwait): Declare. + (PEXECUTE_{FIRST,LAST,SEARCH}): Define. + (execvp): Delete decl. + (usage): Fix typo. + (gen_aux_info_file): Rewrite to use pexecute/pwait. + + * gcc.c (do_spec_1): Allow leading text in version string. + Delete support for default minor number = 0. + +Mon Jun 10 11:49:53 1996 Scott Christley + + * objc/Makefile (libobjc.a): Don't delete the library. + + * objc/thr.h (objc_set_thread_callback): New function. + (objc_thread_callback): Typedef for the hook function. + * objc/thr.c (__objc_thread_detach_function): Clear thread storage. + Call the thread hook function when first becoming multi-threaded. + (objc_set_thread_callback): New function. + + * objc/selector.c (__sel_register_typed_name): Additional parameter + that indicates whether name and type parameters are constant or not. + * objc/runtime.h (__sel_register_typed_name): Likewise. + * objc/init.c (__sel_register_typed_name): Likewise. + + * objc/init.c (__objc_init_protocols): Need to unlock mutex. + +Mon Jun 10 11:44:44 1996 Kaveh R. Ghazi + + * sparc/t-sol2 (gmon.o): Depend on stmp-int-hdrs. + (crt1.o, crti.o, crtn.o, gcrt1.o): Depend on $(GCC_PASSES). + +Mon Jun 10 11:29:46 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * flow.c (flow_analysis, find_basic_blocks): Ignore + nonlocal_label_list for CALL_INSN that has a REG_RETVAL. + + * c-common.c (decl_attributes, case A_T_UNION): Don't look at fields + of union if there aren't any. + +Sat Jun 8 22:13:33 1996 Stan Cox + + * i386.c (ix86_expand_prologue): Keep pic register load ahead + of reference which may use a pic register. + +Sat Jun 8 22:13:33 1996 Jim Wilson + + * i386.md (strlensi_unroll4, strlensi_unroll5): Use + not =& for + constraint for input/output operand 2. + +Sat Jun 8 22:13:33 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.h (CONST_COSTS): Even integer constants have a cost. + (RTX_COSTS): Take costs of subexpressions into account. + If a multiply is actually a shift, use the cost of the shift. + * i386/unix.h (SHIFT_DOUBLE_OMITS_COUNT): New macro. + * i386/{gas, next, seq-gas}.h (SHIFT_DOUBLE_OMITS_COUNT): Redefine + as zero. + * i386.c (print_operand): new letter 's'. + +Sat Jun 8 15:13:33 1996 Jim Wilson + + * mips.c (override_options): Add vr4100 and vr4300 support. + * mips.h (enum processor_type): Likewise. + (MASK_4300_MUL_FIX, TARGET_4300_MUL_FIX): New macros. + (TARGET_SWITCHES): Add -mfix4300 option. + * mips.md (cpu, memory, imuldiv, adder, mult, divide): Add + vr4100 and vr4300 support. + (muldf3, mulsf3): Add vr4300 support. + (muldf3_internal, muldf_r4300, mulsf3_internal, mulsf_r4300): New + patterns. + +Sat Jun 8 14:35:23 1996 David Edelsohn + + * toplev.c (main): Re-enable -gxcoff+. + +Sat Jun 8 14:20:14 1996 J.T. Conklin + + * m68k/lb1sf68.asm (__{eq,ne,gt,lt,ge,le}{df,sf}2): Removed + extraneous comments, constants, labels, etc. + + * m68k/altos3068.h (TARGET_DEFAULT): Use MASK_* macros + instead of explicit constants in definitions or conditionals. + * m68k/{apollo68, aux, ccur-GAS, dpx2, hp320, hp3bsd}.h: Likewise. + * m68k/{hp3bsd44, isi-nfp, isi, linux-aout, linux}.h): Likewise. + * m68k/{lynx-ng, lynx, m68k-none, m68k-psos, m68kv4}.h): Likewise. + * m68k/{mot3300, netbsd, news, next, pbb, plexus, sun2o4}.h): Likewise. + * m68k/{sun3, sun3n, tower}.h): Likewise. + +Sat Jun 8 13:55:23 1996 Matthias Pfaller (leo@marco.de) + + * ns32k.md (define_insns for ffs[qhs]i2): Deleted. + (define_expand for ffssi2): New pattern. + +Sat Jun 8 13:44:14 1996 Stephen L Moshier (moshier@world.std.com) + + * reload.c (find_equiv_reg): Set need_stable_sp if GOAL is the + stack pointer. + +Sat Jun 8 13:36:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (fixup_var_refs_1, case SIGN_EXTEND): Handle + paradoxical SUBREGs as first operand. + (fixup_var_regs_1, case SET): Handle paradoxical SUBREGs as + first operand of a ZERO_EXTRACT in SET_DEST. + + * c-common.c (enum attrs): Add A_FORMAT_ARG. + (init_attribute): Initialize it. + (decl_attributes, case A_FORMAT): Clean up error messages. + (decl_attributes, case A_FORMAT_ARG): New case. + (struct international_format_info): New structure and typedef. + (international_format_list): New variable. + (record_international_format): New function. + (init_format_info): Call it for gettext, dcgettext, and dcgettext. + (check_format_info): See if format arg is call to + internationalization function. + +Fri Jun 7 20:04:40 1996 Jim Wilson + + * gcc.c (MULTILIB_SELECT): Delete definition. + (multilib_select): Delete static initializer. + (multilib_obstack, multilib_raw): New global variables. + (multilib.h): Include inside multilib_raw definition. + (main): Set multilib_select from multilib_raw. + * genmultilib: Change output to be a sequence of short strings + separated by commas rather than a single long macro definition. + + * cse.c (simplify_binary_operation, case MULT): Check for case + where width is larger than HOST_BITS_PER_WIDE_INT, and upper most + bit is set. We can not generate a simple shift in this case. + + * gsyms.h (enum sdb_type): Add T_LNGDBL if EXTENDED_SDB_BASIC_TYPES. + (enum sdb_masks): Add EXTENDED_SDB_BASIC_TYPES masks. + * sdbout.c (gsyms.h): Include if CROSS_COMPILE is defined. + (plain_type_1): Use TYPE_PRECISION instead of TYPE_SIZE. + Add check for LONG_DOUBLE_TYPE_SIZE if EXTENDED_SDB_BASIC_TYPES. + * i960.h (EXTENDED_SDB_BASIC_TYPES): Define. + (PUT_SDB_TYPE): Delete now unnecessary shifting and masking. + + * i960.h (i960_output_move_{double,quad}): Declare. + +Fri Jun 7 19:22:09 1996 Scott Christley + + * Makefile.in (OBJC_THREAD_FILE): New variable. + * configure (objc_thread_file): Set new variable to appropriate + values based upon target operating system; default is `thr-single'. + * objc/Makefile (OBJC_THREAD_FILE): Add target and dependency. + (thr.o): Remove OS specific thread files as dependencies. + * objc/thr-decosf1.c: Now compiles as a separate source file, so + include appropriate Objective-C headers. + * objc/thr-{mach,os2,posix,irix,single,solaris,win32}.c: Likewise. + * objc/thr.c: Remove inclusion of source files. + * objc/thr.h (__objc_thread_exit_status): Declare global variable. + * objc/thr-pthreads.c: New file. + +Fri Jun 7 19:04:04 1996 J.T. Conklin + + * m68k.h (TARGET_SWITCHES): Treat -m68302 like -m68000 and -m68332 + like -m68020; remove -mno-68302 and -mno-68332. + +Fri Jun 7 12:06:12 1996 Per Bothner + + * expr.c (safe_from_p): Allow Chill-style variable-sized arrays. + +Thu Jun 6 23:11:11 1996 Jeffrey A. Law + + * h8300.c (h8300_monitor_function_p): New function. + (h8300_os_task_function_p): Likewise. + (os_task, monitor): Variables to note if the current + function is an os_task or monitor. + (function_prologue): Set monitor and/or os_task as needed. Handle + os_task and monitor functions. + (function_epilogue): Clear monitor and os_task. Handle os_task and + monitor functions. + (h8300_valid_machine_decl_attribute): Accept "OS_Task" and + "monitor". + +Thu Jun 6 20:01:54 1996 Per Bothner + + * gen-protos.c (progname): New variable (needed by cppalloc.c). + (main): Set progname. + + * cpplib.h (struct parse_file): Removed. + (CPP_FATAL_LIMIT, CPP_FATAL_ERRORS, CPP_OUT_BUFFER): New macros. + * cpphash.c (cpp_lookup): Change struct parse_file -> cpp_reader. + + * cpplib.c (init_parse_option): Renamed to cpp_options_init. + (push_parse_file): Renamed to ... + (cpp_start_read): Change to return 1 on success, 0 on failure. + (init_parse_file): Renamed to cpp_reader_init. + * cppmain.c (main): Use CPP_SET_WRITTEN and cpp_fatal. + Use renamed function names, and return protocols. + * fix-header.c (read_scan_file): Likewise. + + * cpperror.c (cpp_message): Generalize for "fatal" errors. + (cpp_fatal): New function (just calls cpp_message). + * cpplib.c (cpp_start_read, cpp_handle_options, cpp_finish, + parse_goto_mark, parse_move_mark): Use cpp_fatal rather than fatal. + + * fix-header.c (check_macro_names): Fix struct parse_file->cpp_reader. + * cpplib.c (newline_fix): Remove unused function. + +Thu Jun 6 19:47:26 1996 Jim Wilson + + Changes to support parameters and return values in multiple + non-contiguous locations. + * calls.c (expand_call): Handle NIL in PARALLEL. Handle PARALLEL + parameter in REG. Handle PARALLEL return value in VALREG. + (emit_library_call, emit_library_call_value): Abort for PARALLEL. + (store_one_arg): Delete code for handling EXPR_LIST. + * expr.c (emit_group_load, emit_group_store): New functions. + (use_group_regs): New function. + (emit_push_insn): Handle PARALLEL parameter in REG. + (expand_assignment): Handle PARALLEL to_rtx. + (store_expr): Handle PARALLEL target. + * expr.h (emit_group_load, emit_group_store, use_group_regs): New + declarations. + * function.c (assign_parms): Handle PARALLEL parameter in ENTRY_PARM. + * stmt.c (expand_value_return): Handle PARALLEL return_reg. + + * mips/abi64.h (TYPE_DEPENDENT_REG): Delete. + * mips.c (function_arg): Return PARALLEL for structure with + aligned double fields. + (type_dependent_reg): Delete. + (mips_function_value): Return PARALLEL for structure + with two floating point fields. + * mips/mips.md (call_value): Handle PARALLEL in operands[0]. + (call_value_multiple_internal2): New pattern. + * pa.h (FUNCTION_ARG): General PARALLEL instead of EXPR_LIST. + * rs6000.c (init_cumulative_args): Change EXPR_LIST to PARALLEL + in comments. + (function_arg): Generate PARALLEL instead of EXPR_LIST. + +Thu Jun 6 18:21:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (assign_parms): Tighten up code that makes REG_EQUIV + notes for parms. + + * fold-const.c (fold): Don't do anything with evaluated SAVE_EXPR. + +Thu Jun 6 17:54:07 1996 J.T. Conklin + + * m68k.h (TARGET_SWITCHES): Group all floating point options. + When an fp option is selected, unset bits used for other mutually + exclusive fp options. + (OVERRIDE_OPTIONS): Remove special case for SUPPORT_SUN_FPA; + bits used for 68881 and SKY are now cleared by TARGET_SWITCHES. + + * m68k.md (movsi_const0, movhi): Favor clr with TARGET_5200. + (add[qhs]3): Don't use two addqw/subqw insns to add small integers to + an address register with TARGET_68060. + (stack push peephole): Use moveq.l with TARGET_5200 (when appropriate). + + * m68k.h (MASK_5200, TARGET_5200): New macros. + (TARGET_SWITCHES): Add "m5200". + (LEGITIMATE_INDEX_P): Add TARGET_5200 to conditional expression. + * m68k.c (const_method): Do not synthesize long constants + with byte or word operations with TARGET_5200. + * m68k.md: Disable byte and word arithmetic, rotate, integer + divide, dbcc, etc. insns for TARGET_5200. + * m68k-none.h: (CPU_FPU_SPEC, CPP_SPEC, ASM_SPEC): Support m5200. + +Thu Jun 6 17:32:32 1996 Paul Eggert + + * fixproto (subdirs): Work around Solaris 2.5 + /usr/xpgr/bin/sed problem with \+\+. + +Thu Jun 6 15:06:27 1996 Jim Wilson + + * c-decl.c (grokdeclarator): Call pop_obstacks after creating + TYPE_DECL. + + * loop.c (strength_reduce): If HAVE_cc0 defined, disable auto_inc_opt + if it would put an insn between a cc0 setter/user pair. + +Thu Jun 6 13:06:54 1996 Michael Meissner + + * rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): If __sun__ is + defined, treat that as little endian. + +Wed Jun 5 20:04:53 1996 Jim Wilson + + * i960.h (ROUND_TYPE_ALIGN): Add check for TYPE_PACKED. + + * sh.h (SHORT_IMMEDIATES_SIGN_EXTEND): Define. + * sh.md (branch_true): Add comment about T-bit compares. + +Tue Jun 4 23:08:34 1996 Per Bothner + + * cpplib.h, cpplib.c: Remove support for !STATIC_BUFFERS. + * cpplib.h: Use unsigned char rather than U_CHAR. + * cpplib.h (cpp_reader): Add destructor #ifdef __cplusplus. + (cpp_cleanup): New prototype. + * cpplib.c (special_symbol, do_once, do_include, cpp_get_token): + Compare cpp_buffer against CPP_NULL_BUFFER, not NULL. + + * cpplib.c (dump_special_to_buffer): New function. + (initialize_builtins): Use it. + +Wed Jun 5 19:10:22 1996 Jeffrey A. Law + + * pa/pa.h (TEXT_SPACE_P): Fix thinko in last change. + +Wed Jun 5 16:25:51 1996 Michael Meissner + + * rs6000.h (ASM_DEFAULT_SPEC): Default to "", not -mpwr. + + * sysv4.h (SUBTARGET_SWITCHES): Add -mshlib. + (LINK_PATH_SPEC): Add -compat-bsd support from Solaris. + (LINK_SPEC): Eliminate %{b} and %{G}, since they conflict with GCC + switches. Defer shared library support to LINK_SHLIB_SPEC. Defer + target selection to LINK_TARGET_SPEC. + (LINK_SHLIB_SPEC): Provide two different versions, depending on + whether shared libraries are default or not. Make shared + libraries not default until linker is fixed. + (LINK_OS_*_SPEC): New specs for OS specific linker switches. + (SUBTARGET_EXTRA_SPECS): Add new specs. + + * {sol2,sysv4}.h (LINK_SPEC): Move Solaris link into general link spec. + + * {sysv4,sysv4le,eabile}.h (LINK_TARGET_SPEC): Only pass -oformat + to the linker if the user is changing the default endian format. + + * {sol2,linux,eabisim,eabilesim}.h (LINK_OS_DEFAULT_SPEC): Define + to use the appropriate OS link spec. + +Wed Jun 5 16:35:10 1996 Ian Lance Taylor + + * ginclude/stddef.h: Fix typo: TYPE_ptrdiff_t to _TYPE_ptrdiff_t. + +Wed Jun 5 15:52:57 1996 Per Bothner + + * varasm.c (output_constructor): Handle RANGE_EXPR in array index. + +Wed Jun 5 13:45:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sparc.md (*call_{address,symbolic}_struct_value_sp32): Allow + operand 2 to be const0_rtx. + +Tue Jun 4 16:43:44 1996 Jason Merrill + + * varasm.c (make_decl_rtl): Don't update DECL_ASSEMBLER_NAME for + local statics. + + * c-decl.c (start_decl): Always set DECL_COMMON on statics. + * varasm.c (assemble_variable): Only treat vars with DECL_COMMON + as common. + +Tue Jun 4 14:55:49 1996 Jeffrey A. Law + + * pa.c (reloc_needed): New function. + * pa.h (TEXT_SPACE_P): Variables/constants with initializers + requiring relocs never live in the text space. + +Tue Jun 4 14:10:46 1996 Ian Lance Taylor + + * sh.c (fp_zero_operand): Do not accept minus zero. + + * sh.h (ASM_OUTPUT_LOOP_ALIGN): Define. + (ASM_OUTPUT_ALIGN_CODE): Define. + (ADJUST_INSN_LENGTH): Add in bytes that may be added by + alignment. + * sh.c (output_branch): Run ADJUST_INSN_LENGTH in reverse to get + correct length. Just call abort rather than returning "bad". + (find_barrier): Adjust limits for possible alignment. + +Tue Jun 4 09:35:05 1996 Michael Meissner + + * rs6000/t-solaris: New target config file for PowerPC Solaris + without gas. + + * rs6000/t-ppc: Eliminate all multilib varients except for + software floating point. + + * configure (powerpcle-*-solaris*): If not --with-gnu-as, use + t-solaris, not t-ppc. + + * rs6000/sol2.h (MULTILIB_DEFAULTS): Add correct defaults for + Solaris. + + * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): Clone from svr4.h, omit + @progbits, since Solaris assembler doesn't like it. + (LIB_SOLARIS_SPEC): If -msolaris-cclib, add libabi.a. + ({START,END}FILE_SOLARIS_SPEC): If -msolaris-cclib, use explicit + pathnames for the Solaris compiler start/end files. + (ASM_SPEC): Pass -mno-regnames to the assembler. + +Mon Jun 3 19:40:10 1996 Jim Wilson + + * mips/abi64.h (CPP_SPEC): Make -mabi=n32 the default. + * mips/iris6.h (MIPS_ISA_DEFAULT, MIPS_ABI_DEFAULT, MULTILIB_DEFAULTS, + ASM_SPEC, STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): Likewise. + * mips.md (tablejump_internal4+1): Fix typo in condition. + * mips/x-iris6 (CC, OLDCC): Define to be `cc -32'. + +Mon Jun 3 07:57:35 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.def ([LR]SHIFT_EXPR): Remove `a' from printed names. + + * sparc.md (call): Mask unimp operand to 12 bits, just like Sun. + + * expr.c (store_field): Fix typo in last change; update TARGET addr. + + * c-decl.c (start_struct): Set TYPE_PACKED from flag_pack_struct. + (start_enum): Likewise but from flag_short_enums. + (finish_enum): Test TYPE_PACKED, not flag_short_enums. + * stor-layout.c (layout_decl): Test DECL_PACKED and TYPE_PACKED + instead of flag_pack_struct. + (layout_record): Likewise. + +Sun Jun 2 19:41:14 1996 Jim Wilson + + * mips.md (tablejump_internal3, tablejump_internal4): New patterns. + (tablejump): Use them for PIC code. + +Fri May 31 17:26:53 1996 Stan Cox + + * i386.c (ix86_expand_epilogue): Don't generate references to an + exposed vacated stack. + * i386.md (epilogue_set_stack_ptr): New. + +Fri May 31 15:07:49 1996 Jim Wilson + + * mips/abi64.h: Add -mabi=n32 support. + (ABI_64BIT): Delete. + (TARGET_LONG64, CPP_SPEC, STACK_BOUNDARY, MIPS_STACK_ALIGN, + GP_ARG_LAST, FP_ARG_LAST, SUBTARGET_CONDITIONAL_REGISTER_USAGE, + MAX_ARGS_IN_REGISTER, FUNCTION_ARG_PADDING, RETURN_IN_MEMORY, + SETUP_INCOMING_VARARGS): Modify. + (REG_PARM_STACK_SPACE): Ifdef out. + (TARGET_DEFAULT, SUBTARGET_TARGET_OPTIONS): Define. + * mips/iris6.h: Add -mabi=n32 support. + (TARGET_DEFAULT, ASM_OUTPUT_INTERNAL_LABEL, + ASM_GENERATE_INTERNAL_LABEL): Delete. + (MULTILIB_DEFAULTS, ASM_SPEC, EXTRA_SECTION_FUNCTIONS, + ASM_OUTPUT_ALIGNED_LOCAL, STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): + Modify. + (MIPS_ABI_DEFAULT, LOCAL_LABEL_PREFIX): Define. + * mips.c: Add -mabi=n32 support. + (mips_const_double_ok, mips_move_1word, mips_move_2words, + function_arg, override_options, mips_asm_file_start, + compute_frame_size, save_restore_insns, function_prologue, + mips_expand_prologue, function_epilogue, mips_function_value): Modify. + (mips_abi, mips_abi_string): Define + * mips.h: Add -mabi=n32 support. + (ABI_64BIT): Delete. + (TARGET_OPTIONS, INITIAL_ELIMINATION_OFFSET, GO_IF_LEGITIMATE_ADDRESS, + CONSTANT_ADDRESS_P, LEGITIMATE_CONSTANT_P, LEGITIMIZE_ADDRESS, + ASM_OUTPUT_ADDR_DIFF_ELT): Modify. + (enum mips_abi_type, SUBTARGET_TARGET_OPTIONS): Define. + (mips_abi, mips_abi_string): Declare. + * mips.md (jump, tablejump_internal1, tablejump_internal2): Add + -mabi=n32 support. + * mips/t-iris6 (MULTILIB_OPTIONS): Add -mabi=n32 support. + * mips/xm-irix6.h (HOST_BITS_PER_LONG): Use _MIPS_SZLONG not 64. + * ginclude/va-mips.h (va_start): Add -mabi=n32 support. + +Fri May 31 14:45:30 1996 Michael Meissner + + * rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -msolaris-cclib to use + the Sun compiler's crt files instead of ours. + ({START,END}FILE_SOLARIS_SPEC): If -msolaris-cclib, use the Sun + compiler's crt files instead of ours. + (SUBTARGET_OVERRIDE_OPTIONS): Don't set -msdata=data for Solaris. + (SBSS_SECTION_ASM_OP): For Solaris, don't use @nobits. + (CPP_OS_SOLARIS_SPEC): Remove -Asystem(unix) and -Asystem(svr4). + + * rs6000/t-ppc{,gas} (MULTILIB*): Add Solaris specific multilibs. + + * rs6000/eabi{,le}sim.h (*_DEFAULT_SPEC): Rather than using + duplicate definitions, just use %(...) so that there is only one + place in the specs file where the switches are defined. + * rs6000/{linux,sol2}.h (*_DEFAULT_SPEC): Ditto. + + * rs6000/sol2.h (CPP_PREDEFINES): Use the standard one in sysv4.h. + (RS6000_ABI_NAME): Default is solaris. + (ASM_OUTPUT_ALIGNED_LOCAL): Don't redefine. + + * rs6000/sol-c{i.asm,n.asm,c0.c}: Provide more things that Solaris + needs for program startup. + +Thu May 30 21:57:34 1996 Mike Stump + + * tree.def (OFFSET_REF): Remove. + * expr.c (expand_expr, case OFFSET_REF): Likewise. + * tree.c (substitute_in_expr): Remove OFFSET_REF code. + +Wed May 29 14:54:44 1996 Michael Meissner + + * rs6000/eabi.asm (__eabi): If not -mrelocatable, don't assemble + relocatable functions, so that it can be assembled with the + Solaris assembler. + + * rs6000/sysv4.h (CPP_SYSV_SPEC): Define _RELOCATABLE if + -mrelocatable-lib as well as -mrelocatable. + + * rs6000.c (rs6000_file_start): New function to print some more + information to the asm file. + * rs6000/{sysv4,win-nt,rs6000}.h (ASM_FILE_START): Call it. + +Tue May 28 15:21:24 1996 Michael Meissner + + * rs6000.h (FIRST_PSEUDO_REGISTER): Bump to 77. + ({FIXED,CALL_USED}_REGISTERS): Add support for fpmem pseudo register. + (REG_ALLOC_ORDER, HARD_REGNO_{NREGS,MODE_OK}): Likewise. + (REGISTER_MOVE_COST, reg_class, REG_CLASS_{NAMES,CONTENTS}): Likewise. + (REGNO_REG_CLASS, PREFERRED_RELOAD_CLASS): Likewise. + (CLASS_{MAX_NREGS,CANNOT_CHANGE_SIZE,MAX_NREGS}): Likewise. + (rs6000_stack, {,DEBUG_}REGISTER_NAMES): Ditto. + (FPMEM_{REGNO_P,REGNUM}): New macros for fpmem register. + (rs6000_fpmem_{offset,size}): New global variables. + (RS6000_VARARGS_OFFSET): Fpmem temporary storage is located + between outgoing arg area and varargs save area. + (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET): Likewise. + (PREDICATE_CODES): Add fpmem_operand. + ({count_register,fpmem}_operand): Add declarations. + + * rs6000.c ({rs6000,alt}_reg_names): Add support for fpmem 'register'. + (rs6000_fpmem_{offset,size}): New global variables. + (fpmem_operand): Return true for fpmem registers. + (gpc_reg_operand): The fpmem register is not general purpose. + (includes_rshift_p): Add casts to silence warnings from Solaris + PowerPC host compiler. + (print_operand): Add 'v' operand type for the upper 16 bits of + signed constants, to placate the Solaris assembler. + ({rs6000,debug}_stack_info): Add support for fpmem 'register'. + (output_epilog): Likewise. + + * rs6000.md (addsi3,movsi,movsf,movdi): Use %v for constants with + the upper 16 bits, to get the sign correct for PowerPC Solaris. + (float{,uns}sidf2,fix_truncdfsi2): Rewrite to use 'register' 76 + for the memory location used to convert between float and integer. + + * sysv4.h (ASM_OUTPUT_{CON,DE}STRUCTOR): Use code laid down in + .init and .fini for making constructors and destructors under + Solaris. + (ASM_SPEC): Do not pass -u to the assembler. + (CC1_SPEC): -mrelocatable implies -meabi. + + * sol2.h (RS6000_ABI_NAME): Default ABI is Solaris, not System V.4. + (ASM_OUTPUT_ALIGNED_LOCAL): Don't define Solaris specific method. + +Mon May 27 06:39:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_builtin, case BUILT_IN_{LONG,SET}JMP): + Convert block address from ptr_mode to Pmode. + +Sun May 26 20:05:43 1996 Doug Evans + + * gcc.c (MSDOS pexecute): Call xmalloc, not malloc. + +Sun May 26 08:31:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (vax-*-{sysv}): tm_file and xm_file now list. + (vax-*-ultrix): tm_file is now list. + (we32k-att-sysv*): xm_file now list. + * vax/xm-netbsd.h: Deleted. + * vax/netbsd.h: No longer include vax.h and config/netbsd.h. + * vax/ultrix.h, vax/vaxv.h: No longer include vax.h. + * vax/xm-vaxv.h: No longer include xm-vax.h. + * xm-we32k.h: No longer include xm-svr3.h. + + * configure: Separately set target_cpu_default for two + case statements and then combine if both set. + (alpha-*-winnt3): tm_file and xm_file are now list. + Set target_cpu_default to 64. + * winnt/config-nt.bat: Make .h files properly for Alpha. + * alpha.h (WINDOWS_NT): No longer defined and used. + (MASK_WINDOWS_NT, TARGET_WINDOWS_NT): New macros. + (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_WINDOWS_NT. + * alpha.c (output_prolog): Test TARGET_WINDOWS_NT, not WINDOWS_NT. + * alpha.md: Likewise. + * alpha/config-nt.sed: Properly set tm_file and {build,host}_xm_file. + * alpha/win-nt.h: Don't include alpha.h + (WINDOWS_NT): No longer define. + * alpha/xm-winnt.h: Don't include xm-alpha.h and winnt/xm-winnt.h. + +Fri May 24 12:34:22 1996 Doug Evans + + * configure (cpu_type): Add case for arm. + (sparclet-*-aout*): Delete extra_headers. + + * varasm.c (asm_output_bss): New argument DECL. + Use ASM_DECLARE_OBJECT_NAME if defined. + (asm_output_aligned_bss): Likewise. + (assemble_variable): Pass DECL to ASM_OUTPUT{,_ALIGNED}_BSS. + * arm/aout.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * h8300.h (ASM_OUTPUT_BSS): Update. + * i386/linux.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * i386/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * m68k/coff.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * m68k/linux.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * m68k/m68k-aout.h (ASM_OUTPUT_BSS): Update. + * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * rs6000/win-nt.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * sparc/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. + +Thu May 23 19:55:52 1996 Jim Wilson + + * combine.c (set_nonzero_bits_and_sign_copies): Set reg_sign_bit_copies + to one not zero to indicate value is unknown. + +Thu May 23 18:39:24 1996 J.T. Conklin + + * config/netbsd.h (SWITCH_TAKES_ARG): Add -R. + (LINK_SPEC): Add %{R*}. + + * m68k/lb1sf68.asm: Construct exception masks at compile time + instead of or'ing in bits at run time. + +Thu May 23 15:53:06 1996 Ian Lance Taylor + + * sh.md: Add new instruction types fp and fpdiv. Set new + instruction types where appropriate. Add function unit fp. + Claim that store instructions use function unit memory. + +Thu May 23 00:36:19 1996 Jeffrey A. Law + + * h8300.h (CONSTANT_ADDRESS_P): Don't accept CONST or HIGH on H8/300H. + * h8300.md: Use "m" rather than "o" constraint everywhere appropriate. + Cleanup use of "i" and "n" constraints. + +Wed May 22 17:43:37 1996 Jim Wilson + + * fixincludes (pthread.h): Add extern to __page_size* declarations + for AIX 4.1.x. + + * combine.c (nonzero_bits): Don't assume arg pointer has same + alignment as stack pointer. + +Wed May 22 16:09:05 1996 Michael Meissner + + * rs6000/sysv4.h (LINK_START_DEFAULT_SPEC): Spell macro correctly. + (LIB_DEFAULT_SPEC): Provide default version. + +Wed May 22 11:23:57 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.md (return_pop_internal): new pattern. + (pop): disable emitting of bogus move instruction. + * i386.c (ix86_expand_epilogue): use gen_return_pop_internal to + simultanously return and pop args; removed stray semicolon. + * config/linux-aout.h, config/linux.h (SET_ASM_OP): Added for + __attribute__ ((alias ())) support. + +Wed May 22 08:06:42 1996 Richard Kenner + + * combine.c (init_reg_last_arrays, setup_incoming_promotions): + Correct prototypes. + +Tue May 21 13:42:17 1996 Jeffrey A. Law + + * h8300.md (div and mode patterns): Rewrite. + + * pa.c (basereg_operand): Never accept a CONST_INT. + +Tue May 21 12:26:40 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa/pa-hpux9.h, pa-osf.h (LINK_SPEC): Provide version for Snake. + +Tue May 21 07:20:48 1996 Pat Rankin + + * vax.h (TARGET_NAME): Define unless already defined. + (TARGET_VERSION): Print TARGET_NAME. + * vax/vms.h (TARGET_NAME): Always redefine. + (TARGET_VERSION): Delete; retain vax.h definition. + +Mon May 20 14:00:44 1996 Jim Wilson + + * sh.c (output_file_start): Delete misplaced semicolon. + +Mon May 20 11:58:15 1996 Jeffrey A. Law + + * reorg.c (relax_delay_slots): Call update_block before + redirecting a branch past a redundant insn. + +Sun May 19 16:40:53 1996 Philippe De Muyter + + * Makefile.in (libobjc.a, sublibobjc.a): 'specs' added to + dependencies. + +Sun May 19 12:25:48 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Add new switch to provide default for cpu_type; + delete numerous settings of it in main switch. + (hppa): Reflect rerrangements below; use new configure features. + * pa/pa-gas.h, pa/pa-pro-end.h: New files. + * pa/pa1.h, pa/pa1-osf.h, pa/pa1-ghpux.h, pa/pa1-oldas.h: Deleted. + * pa/pa1-ghpux9.h, pa/pa1-hpux9.h, pa/pa1-hpux.h: Deleted. + * pa/pa1-ghiux.h, pa/pa1-hiux.h, pa/pa-ghpux.h: Deleted. + * pa/pa-gux7.h, pa/pa-ghiux.h: Deleted. + * pa/pa-hiux.h: No longer include pa-hpux.h. + * pa/pa-hpux.h: No longer include pa.h. + (TARGET_DEFAULT): Unset before setting. + (LINK_SPEC): Provide option for pa1. + * pa/pa-hpux7.h: No longer include pa.h. + (HP_FP_ARG_DESCRIPTOR_REVERSED): Don't define here. + * pa/pa-hpux9.h, pa/pa-oldas.h: No longer include pa-hpux.h. + (TARGET_DEFAULT): Don't need to set here. + * pa/pa-osf.h: No longer include pa.h. + (TARGET_DEFAULT): Don't define; identical to default. + * pa/pa-pro.h: No longer include pa.h. + Move definitions after include to new file pa-pro-end.h. + * pa.h (TARGET_SWITCHES): Include TARGET_CPU_DEFAULT. + (TARGET_CPU_DEFAULT): Provide default value. + (CPP_SPEC): Test TARGET_CPU_DEFAULT too. + + * Makefile.in (function.o): Includes bc-emit.h. + (reg-stack.o): Includes insn-flags.h. + * expr.h (function_value): Deleted; no such function. + (bc_build_calldesc, bc_runtime_type_code): New declarations. + * c-decl.c: Add prototypes for all static functions. + * c-iterate.c: Likewise. + * dbxout.c: Likewise. + (adspath): Delete; never used and has numerous parse errors. + * dwarfout.c: If not GNUC, make `inline' null; otherwise, leave alone. + Add `static' to inline functions. + Add prototypes for static function. + * expr.c (bc_runtime_type_code): Delete redundant declaration. + * function.c: Include bc-emit.h. + ({save,restore}_machine_status): Add prototype for args. + (bc_runtime_type_code, bc_build_calldesc): Delete redundant decls. + (bc_emit_trampoline, bc_end_function): Likewise. + * reg-stack.c: Include insn-flags.h. + Add prototypes for static functions. + (gen_jump, gen_movdf, gen_movxf): Delete redundant declarations. + (find_regno_note, emit_jump_insn_before, emit_label_after): Likewise. + (swap_rtx_condition): Now static. + * sdbout.c: Add prototypes for static functions. + (sdbout_parms, sdbout_reg_parms): Delete extra parm to plain_type. + +Sun May 19 11:50:10 1996 John Carr + + * alpha.c (alpha_emit_conditional_move): Compare to 0 in correct mode. + +Sat May 18 20:17:27 1996 Jim Wilson + + * sh.c (prepare_move_operands): If source is r0, and dest is reg+reg + MEM, then copy source to a pseudo-reg. + * sh.md (untyped_call): New pattern. + + * unroll.c (copy_loop_body): When update split DEST_ADDR giv, + check to make sure it was split. + (find_splittable_givs): Fix reversed test of verify_addresses result. + +Sat May 18 10:26:04 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (unsave_expr_now): Avoid use of NULL_RTX since no rtl.h. + + * configure: Set cpu_default, tm_file, and xm_file early. + Remove redundant settings of those, tmake_file, and xmake_file. + Use ${tm_file} and ${xm_file} to refer to the main files. + Sort some entries for consistency and reformat some others. + (rs6000, powerpc): Remove bogus test on host == target. + (alpha-*-linux): xm-linux.h no longer includes xm-alpha. + (alpha-*-osf*): Remove redundant setting of target_cpu_default. + (*-convex-*): Use target_cpu_default instead of separate .h files. + (clipper-intergraph-clix*): clix.h no longer includes any files. + (i860, i960, pdp11): Reflect removal of includes listed below. + * alpha/xm-linux.h: No longer include xm-alpha.h. + * clipper/clix.h: No longer include clipper.h and svr3.h. + * convex.h: Provide a default for TARGET_DEFAULT. + Take "or" of TARGET_DEFAULT and TARGET_CPU_DEFAULT everywhere. + * convex/convex{1,2,32,34,38}.h: Deleted. + * i860/bsd-gas.h: No longer include bsd.h. + * i860/bsd.h: No longer include i860.h. + * i860/fx2800.h: No longer include i860/sysv4.h. + (OUTPUT_TDESC): No longer define. + (ASM_FILE_END): Move redefinition to here. + * i860/mach.h: No longer include i860.h. + * i860/paragon.h, i860/sysv3.h: No longer include i860.h and svr3.h. + * i860/sysv4.h: No longer include i860.h and svr4.h. + (ASM_FILE_END): Delete redefinition from here. + * i860/xm-fx2800.h: No longer include xm-i860.h. + * i860/xm-paragon.h, i860/xm-sysv{3,4}.h: Deleted. + * i960/i960-coff.h: No longer include i960.h and dbxcoff.h. + * i960/vx960-coff.h: No longer include i960-coff.h. + * i960/vx960.h: No longer include i960.h. + * pdp11/2bsd.h: No longer include pdp11.h. + + * i370/i370.h: Renamed from mvs.h. + * i370/i370.c: Renamed from mvs370.c. + * i370/t-i370: Renamed from t-mvs. + * i370/xm-i370.h: Renamed from xm-mvs.h. + * configure (i370-*-mvs*): Use default names for all files. + + * c-parse.in: Update number of shift/reduce conflicts for objc. + +Sat May 18 08:20:17 1996 Dennis Glatting (dennisg@plaintalk.bellevue.wa.us) + + * m68k/next.h (FINALIZE_TRAMPOLINE): Add missing backslashes. + +Fri May 17 19:57:20 1996 Pat Rankin + + * vax/xm-vms.h (dbxout_resume_previous_source_file): New macro. + +Fri May 17 14:20:13 1996 Mike Stump + + * expr.c (expand_expr, cond TARGET_EXPR): Make TARGET_EXPRs + redoable for UNSAVE_EXPR. + * stmt.c (expand_decl_cleanup): Wrap the cleanup in an UNSAVE_EXPR + to that we can redo it. + * tree.c (unsave_expr_now): Handle TARGET_EXPRs fully now. + * tree.def (TARGET_EXPR): Add a fourth field so that TARGET_EXPRs + are redoable. + + * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++ + frontend to the backend where it belongs. + * tree.c (unsave_expr{,_now}): Likewise. + * tree.def (UNSAVE_EXPR): Likewise. + * tree.h (unsave_expr{,_now}): Likewise. + +Fri May 17 15:04:40 1996 Michael Meissner + + * rs6000.md (lshrsi3 insns): Add special case code for shifting by + 0 to avoid bad code generated with no optimization. + +Fri May 17 13:50:55 1996 Jason Merrill + + * i386/unix.h (ASM_OUTPUT_MI_THUNK): Define. + * i386/{att.h,bsd.h,sun386.h} (ASM_OUTPUT_MI_THUNK): Delete. + +Fri May 17 13:34:28 1996 Ian Lance Taylor + + * fp-bit.c (_fpdiv_parts): Correct sign handling when + dividing zero or infinity by something. + +Fri May 17 12:36:36 1996 Doug Evans + + Standardize option output in assembler files. + * Makefile.in (toplev.o): Pass -DTARGET_NAME. + * arm/aout.h (ASM_OUTPUT_OPTIONS): Delete. + (ASM_FILE_START): Delete option output support. + * arm.c (output_option, output_options, m_options): Delete. + * m88k.c (output_file_start): Delete option output support. + * m88k.h (ASM_COMMENT_START): Define. + * mips.c (target_switches, print_options): Delete. + (mips_asm_file_start): Put output of -G,Cpu,ISA here. + * mips.h (ASM_COMMENT_START): Change from "\t\t#" to " #". + * rs6000.c (output_option, m_options, output_options): Delete. + * rs6000.h (ASM_OUTPUT_OPTIONS): Delete. + (ASM_COMMENT_START): Define. + (ASM_FILE_START): Delete option output support. + * rs6000/sysv4.h (ASM_FILE_START): Likewise. + * rs6000/win-nt.h (ASM_FILE_START): Likewise. Delete duplicate. + * sh.c (output_option, m_options, output_options): Delete. + (output_file_start): Delete option output support. + * sh.h (ASM_FILE_START): Likewise. + (ASM_COMMENT_START): Define. + * dwarfout.c (*): flag_verbose_asm renamed to flag_debug_asm. + * flags.h (flag_debug_asm): Declare. + * toplev.c (print_version): New function. + (print_single_switch): New arguments pos, max, indent, sep, term. + (print_switch_values): New arguments pos, max, indent, sep, term. + Update call to print_single_switch. Output options passed and + options enabled. + (MAX_LINE): New macro. + (flag_debug_asm): Define. + (compile_file): Output options to assembler file. + (main): Recognize -dA. Call print_version. Update call to + print_switch_values. + (line_position): Deleted. + +Fri May 17 10:50:44 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * i386.c (function_prologue, ix86_expand_prologue, + function_epilogue, ix86_expand_epilogue): Generate prologue and + epilogue as RTL (prior to scheduling) instead of emitting asm. + (override_options): If only -march is given, make it the default -mcpu. + * i386.h (FUNCTION_BEGIN_EPILOGUE): Renamed from FUNCTION_EPILOGUE. + * i386.md (return, return_internal, prologue, prologue_set_got, + prologue_get_pc, epilogue, leave, pop): New patterns for emitting + asm from prologue and epilogue RTL. + * m88k/t-dgux (T_CFLAGS): Delete. + * m88k/x-dgux (X_CFLAGS): New. + +Fri May 17 09:54:23 1996 Jim Meyering (meyering@asic.sc.ti.com) + + * Makefile.in (stamp-crt{,S}): Use -o to avoid conflicts if + both of these are built in parallel. + +Fri May 17 08:55:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expmed.c (store_split_bit_field): Don't assume the alignment + of VALUE is the same as the record. + + * configure: Write #define TARGET_CPU_DEFAULT into tm.h + instead of defining MAYBE_TARGET_DEFAULT in Makefile. + (alpha-*-linux): Set target_cpu_default to 4 and xmake_file to none. + (alpha-*-osf*): Set target_cpu_default to 4 if --gas. + * Makefile.in (gcc.o, toplev.o, $(out_object_file)): + Remove MAYBE_TARGET_DEFAULT. + + * combine.c (insn_cuid): New function. + (INSN_CUID): Sometimes call it. + +Fri May 17 08:12:37 1996 Scott Christley + + * objc/sendmsg.c (objc_get_uninstalled_dtable): New function. + * objc/objc-api.h (objc_get_uninstalled_dtable): New declaration. + + * objc/thr-os2.c, objc/thr-posix.c, objc/thr-mach.c: New files. + * objc/THREADS.MACH: New file. + + * objc/sendmsg.c (nil_method): Deleted from here. + * objc/nil_method.c: New file. + * Makefile (OBJC_O): Add dependency for nil_method.c. + + * objc/hash.c (hash_is_key_in_hash): New function. + * objc/hash.h: Include objc/objc.h here instead of in objc/hash.c + to get BOOL typedef. + +Fri May 17 08:01:48 1996 Doug Rupp (rupp@gnat.com) + + * msdos/configur.bat: If Ada subdirectory present, adjust Makefile. + +Fri May 17 07:40:04 1996 Ulrich Drepper (drepper@cygnus.com) + + * stddef.h: If need_wint_t defined, nothing in this file is needed. + (_WINT_T, __WINT__TYPE__, wint_t): Define under certain circumstances. + +Thu May 16 18:53:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold, case EQ_EXPR): When folding VAR++ = CONST, + mask the new const if VAR is a bitfield reference; also for VAR--. + +Thu May 16 18:29:03 1996 Doug Evans + + * varasm.c (function_section): Delete flag_function_sections support. + (assemble_start_function): Put it here. Use UNIQUE_SECTION if defined. + +Wed May 15 13:35:11 1996 Michael Meissner + + * rs6000.{h,c,md} (rs6000_pic_register): Delete all uses, use + pic_offset_table_rtx instead. + + * rs6000.md (move_to_float): Rewrite so that it uses the register + allocator to allocate the stack temp, instead of calling + rs6000_stack_temp. + (fix_truncdfsi2): Likewise. + + * rs6000.c (rs6000_stack_temp): Delete, no longer used. + +Wed May 15 10:39:27 1996 Jeffrey A. Law + + * h8300.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Define. + +Sat May 11 07:42:59 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_field): Support BLKmode bitfield if aligned on + byte boundary using emit_block_move. + (expand_expr, case COMPONENT_REF): Likewise. + +Fri May 10 18:33:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (alpha-*-linux): Reverse order in tm_file list. + Delete xmake_file. + * alpha/x-linux: Deleted. + * alpha/linux.h (ASM_FINAL_SPEC): Add #undef. + * alpha/xm-linux.h: Remove bogus trailing #endif. + + * loop.c (maybe_eliminate_biv_1): Disable all but two cases + of biv elimination with givs and restrict those two cases to + an ADD_VAL that is an address. + + * flow.c (mark_set_1, mark_used_regs): Clean up usages + of ALL_NEEDED; change to SOME_NOT_NEEDED and set properly. + +Fri May 10 11:37:38 1996 Jason Merrill + + * toplev.c (compile_file): Don't warn about artificial functions + declared static and not defined. + +Thu May 9 22:03:28 1996 Doug Evans + + * varasm.c (assemble_start_function): ASM_DECLARE_FUNCTION_NAME + needn't consider bytecodes. + (assemble_variable): ASM_DECLARE_OBJECT_NAME needn't + consider bytecodes. + * toplev.c (rest_of_decl_compilation): Likewise with + ASM_FINISH_DECLARE_OBJECT. + * arm/aof.h (ASM_DECLARE_{FUNCTION,OBJECT}_NAME): Delete bytecode + support. + * vax/vms.h (ASM_DECLARE_OBJECT_NAME): Likewise. + +Thu May 9 19:36:13 1996 Jim Wilson + + * sh.h (SET_ASM_OP): Define. + +Thu May 9 13:31:58 1996 Michael Meissner + + * rs6000/sysv4.h (SUBTARGET_{SWITCHES,OPTIONS}): Add support for + finer grain control on -msdata, so that eabi people can specify to + compile sdata code to only use r13 instead of r2/r13. Make + -mrelocatable-lib turn off -msdata, just like -m relocatable does. + (SUBTARGET_OVERRIDE_OPTIONS): Ditto. + (ENCODE_SECTION_INFO): Move to rs6000.c. + (ASM_SPEC): -msdata=eabi sets -memb also. + (CC1_SPEC): -mno-sdata gets converted to -msdata=none. + + * rs6000.c (rs6000_sdata{,_name}): Add support for finer grain + control on -msdata. + (output_options, small_data_operand, print_operand): Likewise. + (rs6000_select_section): Likewise. + (rs6000_encode_section_info): Move here from sysv4.h, section + names are stored as STRING nodes, not IDENTIFIER. + +Wed May 8 21:04:49 1996 Doug Evans + + * function.c (aggregate_value_p): Return 1 if TREE_ADDRESSABLE. + * pa.h (RETURN_IN_MEMORY): No longer test for TREE_ADDRESSABLE. + +Tue May 7 13:42:57 1996 Jeffrey A. Law + + * h8300.c: Include obstack.h. + (bit_memory_operand): New function. + (print_operand): Append ":16" to a memory reference to + the tiny data area. + (h8300_tiny_data_p): New function. + (h8300_valid_machine_decl_attribute): Accept "tiny_data". Fix typo. + (h8300_encode_label): New function. + (h8300_adjust_insn_length): References to the tiny data section + are two bytes shorter than normal accesses on the H8/300H. + * h8300.h (OK_FOR_U): Fix thinko. + (ENCODE_SECTION_INFO): Encode info for tiny data variables. + (STRIP_NAME_ENCODING): Define. + * h8300.md (movqi insn): Fix length for a constant load. + (movstrictqi, movhi, movstricthi): Likewise. + (memory btst patterns): Add register to the constraints to keep + reload happy. + + * h8300.h (OK_FOR_U): (const (plus (symbol_ref) (const_int))) + is valid U operand if SYMBOL_REF_FLAG is set on SYMBOL_REF. + * h8300.md (memory btst patterns): New patterns. + + * h8300.c (h8300_eightbit_data_p): Renamed from h8300_tiny_data_p. + (h8300_eightbit_data_p): Check for the "eightbit_data" + attribute instead of "tiny_data". + (h8300_valid_machine_decl_attribute): Likewise. + * h8300.h (ENCODE_SECTION_INFO): Call h8300_eightbit_data_p + instead of h8300_tiny_data_p. + + * h8300.h (READONLY_DATA_SECTION): Define. + (EXTRA_SECTIONS): Add in_readonly_data. + (READONLY_DATA_SECTION_ASM_OP): Define. + (EXTRA_SECTION_FUNCTINOS): Add readonly_data. + +Tue May 7 09:26:24 1996 Jason Merrill + + * varasm.c (make_decl_rtl): Update DECL_ASSEMBLER_NAME for local + statics. Remove reference to flag_no_common. + +Mon May 6 21:38:36 1996 Paul Eggert + + * cpplib.c (skip_comment, handle_directive): Don't use uninit vars. + +Mon May 6 18:47:36 1996 Doug Evans + + * dbxout.c (dbxout_function): When deciding to call dbxout_function_end + change test from flag_function_sections to DECL_SECTION_NAME != NULL. + + * varasm.c (named_section): Accept any decl. + +Mon May 6 16:41:08 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * final.c (final_scan_insn): Modify conditional moves whose cc is + nonstandard. + + * c-common.c (decl_attributes): Chain multiple attributes correctly. + +Mon May 6 15:41:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stmt.c (expand_decl): Don't deduce alignment of SIZE from + DECL_ALIGN; use TYPE_ALIGN instead. + + * function.c (assign_parms): Set RTX_UNCHANGING_P in stack_parm + if parm is read-only. + + * c-common.c (truthvalue_conversion, case ADDR_EXPR): Don't + treat address of external decl as always nonzero. + +Mon May 6 11:33:57 1996 Jason Merrill + + * c-decl.c (start_decl): Check -fno-common here. + * varasm.c (assemble_variable): Instead of here. + * final.c (end_final): Likewise. + * c-common.c (init_attributes, decl_attributes): Add A_COMMON. + +Mon May 6 11:12:39 1996 Mike Stump + + * expr.c (expand_increment): Add third parameter to know when to + ignore the result value. + (store_constructor): Likewise + (expand_expr, case {PRE,POST}{INC,DEC}REMENT_EXPR): Likewise. + * tree.c (stabilize_reference): Always ignore the first operand of + COMPOUND_EXPRs. + +Mon May 6 13:14:45 1996 Jim Wilson + + * sh.c (gen_shifty_op): Truncate VALUE to avoid out of bounds array + access. + + * expr.c (expand_expr, case INDIRECT_REF): Delete obsolete code + to special case a SAVE_EXPR operand. + +Mon May 6 10:00:12 1996 Pat Rankin + + * vax.h (ASM_OUTPUT_MI_THUNK): Define. + +Mon May 6 09:49:10 1996 Andreas Schwab + + * m68k/linux.h: Use the new trampoline definition. + (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Deleted. + (INITIALIZE_TRAMPOLINE): Changed. + (FINALIZE_TRAMPOLINE, CLEAR_INSN_CACHE): New. + +Mon May 6 09:43:55 1996 Patrick J. LoPresti (patl@lcs.mit.edu) + + * rtlanal.c (rtx_addr_varies_p): Scan operands of type `E'. + +Mon May 6 09:04:40 1996 H.J. Lu (hjl@gnu.ai.mit.edu) + + * x-linux{,-aout} (BOOT_CFLAGS, STMP_FIXPROTO, STMP_FIXPROTO): Deleted. + * config/t-linux (BOOT_CFLAGS, STMP_FIXPROTO, STMP_FIXPROTO): New, + moved from x-linux. + * t-linux-aout: New file. + * configure (i[3456]86-*-linux*oldld*, i[3456]86-*-linux*aout*): + Set tmake_file to t-linux-aout. + +Sun May 5 22:13:22 1996 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (gxx_include_dir): Change to $(prefix)/include/g++. + (old_gxx_include_dir): New - defined as $(libdir)/g++-include. + (cccp.o, cpplib.o): Also pass OLD_GPLUSPLUS_INCLUDE_DIR (set + from $(old_gxx_include_dir)). + * cccp.c (include_defaults_array): For C++, also search + OLD_GPLUSPLUS_INCLUDE_DIR. + * cpplib.c (default_include): Likewise. + * configure: Remove no-longer-needed support for --gxx-include-dir. + +Sun May 5 21:59:53 1996 Andreas Schwab + + * c-lex.c (check_newline): Fix #pragma parsing; issue error message + for directive that starts with `p' but isn't `pragma'. + +Sun May 5 13:13:40 1996 Jeremy Bettis + + * objc/hash.c (hash_value_for_key): Prevent endless loop when 0 was + stored in a hashtable. + +Sun May 5 13:09:54 1996 Satoshi Adachi (adachi@wisdom.aa.ap.titech.ac.jp) + + * m68k/newsgas.h (SET_ASM_OP, ASM_WEAKEN_LABEL): Define. + +Sun May 5 12:48:08 1996 Stephen L Moshier (moshier@world.std.com) + + * tree.c (build_real_from_int_cst): Remove spurious test for + REAL_IS_NOT_DOUBLE. + +Sat May 4 12:17:58 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.h (ASM_OUTPUT_MI_THUNK): Moved here from aout.h. Rewrite to be + independent of the selected assembler, and to use optimal number of + instructions. + * arm/aout.h (ASM_OUTPUT_MI_THUNK): Delete. + + * arm/aout.h (ASM_OUTPUT_OPTIONS): Define. + (ASM_FILE_START): Call ASM_OUTPUT_OPTIONS. + (BSS_SECTION_OP): Define. + (ASM_OUTPUT_ALIGN): Don't output anything if byte alignment is wanted. + (ASM_OUTPUT_ALIGNED_BSS): Define. + * arm.h (target_cpu_name): Delete. + (TARGET_SWITCHES): Delete "be" and "le". + (TARGET_OPTIONS): Delete "cpu-", add "tune=". + (struct arm_cpu_select): New struct. + (PROCESSOR_DEFAULT, TARGET_CPU_DEFAULT): Define. + (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Cmode. + (CANONICALIZE_COMPARISON): Define. + * arm.c (arm_select): Declare and initialize. + (all_procs): Add arm7100. + (arm_override_options): Parse arm_select structure to determine + selected architecture and tuning parameters. + (output_option, output_options): New functions. + (arm_canonicalize_comparison): New function. + (arm_gen_movstrqi): Don't add a writeback of the index registers for + the last instructions. + (arm_select_cc_mode): Detect case where mode is carry out of unsigned + arithmetic. + (output_lcomm_directive): Use bss_section (), and use alignment + rather than rounding. + (get_arm_condition_code): Handle CC_Cmode. + (final_prescan_insn): Avoid boundary case where we would occasionally + inline MAX_INSNS_SKIPPED+1 insns. Allow call_insns to be inlined in + APCS_32 mode if they are the last insn in the block. + * arm.md (*addsi3_compareneg): Delete potentially unsafe insn. + (*addsi3_compare_op[12]): New insns. + (*compare_addsi2_op[01]): New insns. + (*addsi3_carryin, *addsi3_carryin_alt[12]): New insns. + (*cmp_ite1): Use arm_add_operand instead of arm_rhs_operand. + * semi.h (PROCESSOR_DEFAULT): Default to PROCESSOR_ARM6. + +Fri May 3 10:52:11 1996 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * i386.md (movesicc, movehicc) Pentium Pro conditional move insns. + + * i386.h (TARGET_PENTIUMPRO, TARGET_CMOVE, BRANCH_COST, + ASM_OUTPUT_FUNCTION_PREFIX): New macros for conditional move. + + * i386.c (asm_output_function_prefix, function_prologue): Setup + pic on Pentium Pro so a return will match the call. + (print_operand, put_condition_code): Output conditional move suffixes. + +Fri May 3 10:52:11 1996 Jason Merrill + + * i386/{att.h,gas.h,bsd.h,sub386.h} (ASM_OUTPUT_MI_THUNK): Define. + +Wed May 1 17:54:51 1996 Doug Evans + + * sparc.h (ASM_OUTPUT_MI_THUNK): Fix for sparc64, optimize. + +Wed May 1 13:28:32 1996 Jason Merrill + + * i386/linux.h (ASM_OUTPUT_ALIGNED_BSS): Define. + * i386/sysv4.h: Likewise. + * sparc/sysv4.h: Likewise. + +Wed May 1 01:44:47 1996 Jeffrey A. Law + + * h8300.c (h8300_adjust_insn_length): Adjust the cost of + shifts by small constant values. + * h8300.md: Remove names from many patterns which don't need them. + (compare insns): Don't underestimate lengths. + (andqi3 expander): Remove constrains. + (andhi3): Don't underestimate length. + (andsi3): Don't underestimate length. Improve code when upper + or lower half of destination is being cleared. + (indirect_jump_h8300, indirect_jump_h8300h): Simplify. + (shift insns): Remove useless "I" constraint. + + * h8300.md (bcs type): Remove "bcs" type attribute and all references. + (bcs insns): Delete. No longer needed. + (setcc from bitfield): Rewrite to use zero_extract. Provide + QImode, HImode and SImode variants. + +Tue Apr 30 18:13:09 1996 Jason Merrill + + * svr4.h (SELECT_SECTION): If RELOC is true, put it in data. + +Tue Apr 30 17:26:30 1996 Jason Merrill + + * fold-const.c (fold): Don't call convert to recreate tree nodes + we already have. + +Tue Apr 30 16:52:41 1996 Jeffrey A. Law + + * h8300.c (one_insn_adds_subs_operand): New function. + (h8300_adjust_insn_length): New function. + * h8300.h (ADJUST_INSN_LENGTH): Define. + * h8300.md: Remove obsolete comments. + (move patterns): Tweak constraints. + (tst patterns): Use "register_operand" for predicate. + (adds pattern): Use one_insn_adds_subs_operand to get length + computation correct. + (subs pattern): Similarly. + (movstrhi): Remove unused expander. + (fancy*, pxor, and-not patterns): Remove. No longer needed. + +Tue Apr 30 13:35:06 1996 Michael Meissner + + * rs6000/sol-c0.c (_start): Temporarily display calling + __do_global_ctors, since the Solaris linker doesn't handle the + relocations properly. + +Mon Apr 29 13:03:12 1996 Doug Evans + + * sparc/vxsparc.h: sparc-aout.h renamed to aout.h. + +Mon Apr 29 00:35:15 1996 Jeffrey A. Law + + * h8300.c (names_small): Remove "BAD" postfix from %r7 byte registers. + (rtx_equal_function_value_matters): Remove extra declaration. + (output_simode_bld): New function. + * h8300.h (NO_FUNCTION_CSE): Do define this. + (reg_class): Remove LONG_REGS, SP_REG, SP_AND_G_REGS. + (REG_CLASS_{NAMES,CONTENTS,FROM_LETTER}): Corresponding changes. + (REGNO_REG_CLASS): Corresponding changes. + (output_simode_bld): Declare. + * h8300.md: Nuke comments for stuff which has been fixed. + (all patterns): Remove references to register class "a" (SP_REGS) + which no longer exists. + (many patterns): Accept auto-inc auto-dec addresses in more cases. + (zero_extendqisi2): New pattern for the H8/300. + (zero_extendhisi2): Only use zero_extendhisi2_h8300 when not + optimizing. + (extendhisi2): Only use extendhisi2_h8300 when not optimizing. + (extendqisi2): New pattern for the H8/300. + (bitfield related patterns): Completely rewrite. + (fancy_bclr, fancy_btst): Deleted. + (addhi3 pattern for h8300): Handle case where we can't make matching + constraints (works around hard to fix reload problem). + (stack_pointer_manip): Delete. + (and not patterns): New combiner patterns. + + * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Make sure the + final $CODE$ subspace is in the $TEXT$ space. + +Sun Apr 28 14:52:21 1996 Jason Merrill + + * svr4.h (ASM_OUTPUT_SECTION_NAME): If no decl is specified, + make the section read/write data. + +Sat Apr 27 10:28:59 1996 Michael Meissner + + * rs6000/t-ppcgas (MULTILIB_EXCEPTIONS): Don't allow -mrelocatable + and -mcall-sysv-noeabi. + + * rs6000/sysv.h (SUBTARGET_OVERRIDE_OPTIONS): The -mcall-aix + option sets -meabi. Don't allow -mrelocatable without -meabi. + +Fri Apr 26 16:10:46 1996 Doug Evans + + * sparc.md (*smacsi,*smacdi,*umacdi): Fix constraint on + operand 0. + +Fri Apr 26 14:36:33 1996 Michael Meissner + + * i960/t-{960bare,vxworks960} (MULTILIB*): Add + soft-float multilib support. + +Fri Apr 26 06:38:56 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_decl): Turn off DECL_BIT_FIELD for BLKmode + that's properly aligned and a multiple of a byte. + +Thu Apr 25 22:43:19 1996 Doug Evans + + * i386/gas.h (ASM_OUTPUT_ALIGN): #if 0 out again. + Undoes change of Apr. 9. + * i386/go32.h (ASM_OUTPUT_ALIGN): Define. + +Thu Apr 25 14:05:33 1996 Richard Kenner (kennervlsi1.ultra.nyu.edu) + + * calls.c (expand_call): In inlining case, if BEFORE_CALLS is + zero, start looking at first insn (one more place). + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): CLOBBER the + static chain after label at setjmp point. + +Thu Apr 25 09:02:24 1996 Michael Meissner + + * rs6000.c (print_operand{,_address}): Correct compile error if + TARGET_EABI is not defined. Also, just call small_data_operand, + without testing the ABI. + (rs6000_select_section): Ditto. + + * rs6000/sysv4.h (CC1_SPEC): For -mcall-solaris, don't pass + -mno-main-init. + +Wed Apr 24 18:26:48 1996 Brendan Kehoe + + * collect2.c (handler): Delete export_file when we get a signal. + +Wed Apr 24 14:54:44 1996 Jeffrey A. Law + + * pa/pa1-ghpux.h (LINK_SPEC): Define. Link in PA1.1 libraries + by default. + * pa/{pa1-ghpux9.h, pa1-hpux.h, pa1-hpux9.h}: Likewise. + +Wed Apr 24 11:12:06 1996 Michael Meissner + + * configure (powerpc{,le}-*-eabi*): Use t-ppc{,gas}, instead of + t-eabi{,gas}. + (powerpc-*-linux,powerpcle-*-solaris): Add definitions. + (MULTILIB_DIRNAMES): Pick shorter names for the multilib + directories. + (MULTILIB_*): Do not build -msdata versions of the library. Build + both system V and eabi versions of the libraries. + + * rs6000/t-ppc{,gas} (MULTILIB*): Don't build -msdata versions of + the libraries. Split -mcall-sysv libraries into + -mcall-sysv-{eabi,noeabi} varients. + (LIB2FUNCS_EXTRA): Add eabi.S, eabi-ctors.c. + (eabi.S): Use eabi.S, not eabi.s for eabi.asm. + (crt files): Add support for Solaris crt files. + + * rs6000/sol{2.h,-c0.c,-ci.asm,-cn.asm}: New files for Solaris. + + * rs6000/linux.h: New file for Linux-based GNU system support. + + * rs6000/eabi-ci.asm (ppc-asm.h): Include. + (.got section): Correct attribute. + + * rs6000/eabi-c{i,n}.asm (.init,.finit): Add support for System V + style .init/.fini sections, that constructors and destructors + place a bl in the appropriate section. + + * rs6000/eabi-ctors.c (__do_global_{c,d}tors): Call __init, and + __fini to handle constructors/destructors in the .init, .fini + sections. + + * rs6000/{eabi,sysv}.h: Move most eabi configuration stuff from + eabi.h to sysv.h. + + * rs6000/sysv.h (TARGET_*): Convert -mcall-xxx from switch into option. + Add -mcall-{solaris,linux,sysv-eabi,sysv-noeabi} options. + Add -m{,no-}eabi options to control whether we adhere to + the System V spec or the EABI spec. Add -m{,no-}regnames to + control whether registers are printed out as %r0 instead of 0. + (SUBTARGET_OVERRIDE_OPTIONS): Add support for new -mcall options. + (FP_ARG_MAX_REG): Use new macros for ABI conformance. + (RS6000_REG_SAVE): Likewise. + (STACK_BOUNDARY,BIGGEST_ALIGNMENT): If eabi, align to 8 byte + boundary, otherwise 16 byte. + (EXTRA_SECTIONS): Add .init, .fini sections. + (*_SPEC): Reorganize so that the different targets all have sub + specs that go in the specs file. Add support for linux and + Solaris targets. + + * rs6000/{sysv4,eabi}*.h (*_SPECS): Only override the default + spec, all other specs moved to sysv4.h. + (RS6000_ABI_NAME): Use RS6000_ABI_NAME to set the default ABI + name, not TARGET_DEFAULTS. + + * rs6000/xm-sysv4.h (alloca): Properly declare alloca if compiler + is not GCC. + (DONT_DECLARE_SYS_SIGLIST): Define. + + * rs6000.c (rs6000_abi_name): New global for getting the results + of -mcall-xxx. + (rs6000_reg_names): New global for holding the normal register names. + (alt_reg_names): Alternate register names for -mregnames. + (rs6000_override_options): If -mregnames, copy alt_reg_names into + rs6000_reg_names. + (input_operand): Recognize ABI_SOLARIS. + (small_data_operand, init_cumulative_args): Likewise. + (function_arg{,_boundary,_advance,_partial_nregs}): Likewise. + (function_arg_pass_by_reference, setup_incoming_varargs): Likewise. + ({rs6000,debug}_stack_info, output_{prolog,epilog}): Likewise. + (print_operand): %$ prints '.' on Solaris, '$' elsewhere. + (print_operand{,_address}): If not eabi, use @sdarel for small + data references. + (rs6000_stack_info): Only emit __eabi call if TARGET_EABI. + + * rs6000.h (*_SPECS): Move the System V specs to svr4.h. + (ABI_SOLARIS): New ABI, mostly like System V. + (EXTRA_CONSTRAINT): Use ABI_SOLARIS like ABI_V4. + (RETURN_ADDRESS_OFFSET, (LEGITIMATE_SMALL_DATA_P): Likewise. + (RETURN_IN_MEMORY): On Solaris, small structures are returned in regs. + (REGISTER_NAMES): Use rs6000_reg_names array, instead of string + literals. + (DEBUG_REGISTER_NAMES): Define. + (ADDITIONAL_REGISTER_NAMES): Add sp, toc aliases. + (PRINT_OPERAND_PUNCT_VALID_P): Recognize $ as a punctuation char. + + * rs6000.md (got & call patterns): Use ABI_SOLARIS to mean the + same as ABI_V4. + (branch patterns): Use %$ for the current location, not just $. + + * va-ppc.h: Add Solaris support. + +Tue Apr 23 20:02:13 1996 Doug Evans + + * sparc.c (output_function_prologue): In -mbroken-saverestore + case, %sp = %fp - size. + * sparc/t-splet (TARGET_LIBGCC2_CFLAGS): Delete. + * sparc.md (isa attribute): Add sparclet. + (*smacsi,*smacdi,*umacdi): Use match_operand, not match_dup + for third arg. + (*mulsidi3_sp32,const_mulsidi3,*umulsidi3_sp32,const_umulsidi3): Use + smuld,umuld for sparclet. + +Tue Apr 23 16:28:28 1996 Michael Meissner + + * m68k/m68kemb.h: Add {LINK,STARTFILE,LIB,SUBTARGET}_SPEC, so + gcc will use libgloss for supported target boards {idp,mvme,bcc}. + +Tue Apr 23 16:00:28 1996 Per Bothner + + * expr.c (store_constructor): Fix test for missing array elements. + +Tue Apr 23 11:21:09 1996 Stephen L Moshier (moshier@world.std.com) + + * i386/sco5.h (BSS_SECTION_ASM_OP): Use `data' directive. + (ASM_OUTPUT_ALIGNED_LOCAL): Generate an `lcomm' directive. + (TARGET_DEFAULT): Include TARGET_IEEE_FP. + (CPP_PREDEFINES): Include Di386. + +Mon Apr 22 12:00:46 1996 David Edelsohn + + * rs6000.h (BIGGEST_FIELD_ALIGNMENT): Delete. + (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Define. + * sysv4.h (BIGGEST_FIELD_ALIGNMENT): Delete. + (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Undefine. + * win-nt.h (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Undefine. + +Sun Apr 21 17:52:36 1996 Jim Wilson + + * m68k/coff.h (ASM_OUTPUT_SECTION): Test DECL before + dereferencing it. + + * cse.c (cse_process_notes): Handle SUBREG like ZERO_EXTEND. + +Sun Apr 21 12:57:12 1996 Doug Evans + + * arm/aout.h (ASM_OUTPUT_MI_THUNK): Define. + +Sun Apr 21 09:50:09 1996 Stephen L Moshier (moshier@world.std.com) + + * choose-temp.c: Include sys/types.h before sys/file.h for sco3.2v5. + +Sun Apr 21 08:42:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (check_float_value): Cast args of bcopy to avoid warnings. + +Sat Apr 20 21:22:21 1996 David Edelsohn + + * stor-layout.c (layout_record): Use ADJUST_FIELD_ALIGN to modify + alignment of fields within records. + +Sat Apr 20 19:55:33 1996 Niels Moller + + * c-parse.in (typespec): Made equivalent + to (id ). + (non_empty_protocolrefs): New nonterminal. + +Sat Apr 20 08:34:02 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * stmt.c (check_for_full_enumeration_handling): Call case_tree2list + before checking for case expressions not corresponding to enumerators. + (mark_seen_cases): If SPARSENESS == 2, exploit AVL order. + Else, convert tree to list. + Set xlo to -1 if SPARSENESS == 1 search failed. + (expand_end_case): Avoid calling case_tree2list on list. + +Fri Apr 19 16:54:57 1996 Michael Meissner + + * rs6000/win-nt.h (BIGGEST_FIELD_ALIGNMENT): Set to 64, not + 32 that AIX uses. + +Fri Apr 19 16:40:38 1996 Stan Cox + + * i386.md (movqi): Handle QImode values in %si and %di. + +Thu Apr 18 20:56:56 1996 Jim Wilson + + * sh.md (lshrsi3): Change gen_ashlsi3_d to gen_lshrsi3_d. + +Thu Apr 18 15:49:28 1996 Per Bothner + + * sparc.h (ASM_OUTPUT_MI_THUNK): Define. + +Thu Apr 18 15:19:26 1996 Jeffrey A. Law + + * h8300.md: Remove "type" attribute from all patterns except those + which have varying length branches. Eliminate obsolete "type" + attributes. Add "length" and "cc" attributes to insns without them; + fix some length computations. Remove patterns which are commented out. + + * h8300.md (zero extension expanders and insns): Simplify, fix various + length problems, provide optimized versions for the h8300 and h8300h. + (sign extension expanders and insns): Likewise. Make them + nearly identical to zero_extension patterns and insns. + +Wed Apr 17 18:50:16 1996 Jeffrey A. Law + + * pa.h (SELECT_SECTION): Define. Never place a something + into the read-only data section if it requires a reloc. + + * pa.md (rotlsi3): Delete unnecessary and incorrect pattern. + +Wed Apr 17 17:15:40 1996 Michael Meissner + + * rs6000.md (movdi): Never FAIL, even if operand[1] is not a + general operand, due to being in volatile memory. + +Wed Apr 17 15:20:10 1996 Brendan Kehoe + + * c-lex.c (check_newline): Rewrite to use tokens. + (handle_sysv_pragma): Take a token instead of a character. + * i960.c (process_pragma): Take the IDENTIFIER_POINTER tree + node instead of a character. + * sh.c (handle_pragma): Likewise. + * config/nextstep.c (handle_pragma): Likewise. + * h8300.c (handle_pragma): Likewise. + * i960.h (HANDLE_PRAGMA): Expect/pass 2nd arg of NODE, not CH. + * sh.h (HANDLE_PRAGMA): Likewise. + * config/nextstep.h (HANDLE_PRAGMA): Likewise. + * h8300.h (HANDLE_PRAGMA): Likewise. + +Wed Apr 17 14:28:43 1996 Doug Evans + + * choose-temp.c: Don't include sys/file.h ifdef NO_SYS_FILE_H. + #include . + (choose_temp_base): Make tmp,usrtmp, static locals. + +Wed Apr 17 08:41:02 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_emit_conditional_move): Fix some bugs in previous + change and do some cleanup. + +Tue Apr 16 18:53:05 1996 Jim Wilson + + * reload.c (push_reload): Add extra reload for inside of SUBREG if + it is CONSTANT_P. + + * expr.c (do_store_flag): Rewrite last change to avoid compiler + warnings. + + * reload.c (push_reload): When reuse an old reload, set the modes + to be the larger of the old and new modes. + + * i960/t-960bare (xp-bit.c): Fix typo in source file name. + +Tue Apr 16 18:09:16 1996 Jeffrey A. Law + + * h8300.md (andhi3): If 2nd operand is a CONST_INT that meets 'J' + constraint, then only two bytes are needed for this insn. Improve + code generated for the h8300h when both operands are registers. + (iorhi3, xorhi3): Likewise. Rework to be nearly identical to andhi3. + (andsi3): If 2nd operand is a CONST_INT that meets the 'J' + constraint, then only two bytes are need for this insn. + Improve code generated for the h8300h regardless of the + type of the 2nd operand. Make this pattern work on the h8300 too. + (iorsi3, xorsi3): Likewise. Rework to be nearly identical to andsi3. + (iorqi3_internal): Make this pattern look more like andqi3_internal. + (one_cmplhi2, one_cmplsi2): Fix length computation for H8300H. + +Tue Apr 16 17:43:25 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.md (addsidi3_2): Handle non-MEM overlap case. + +Tue Apr 16 16:59:49 1996 Richard Henderson + + * function.c (expand_function_end): Allow TRAMPOLINE_TEMPLATE + to be omitted on systems for which it is not cost effective. + * varasm.c (assemble_trampoline_template): No such function + if no TRAMPOLINE_TEMPLATE. + * m68k.h: Greatly simplify the run-time trampoline code: + (TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): Delete define. + (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Changed. + (TRAMPOLINE_ALIGN): No point aligning to cache line. + (FINISH_INIT_TRAMPOLINE): New define. + * m68k/next.h: Instead of redefining INITIALIZE_TRAMPOLINE, + make use of the new FINISH_INIT_TRAMPOLINE. + * m68k/{m68k.h,next.h,aux.h} (FINISH_INIT_TRAMPOLINE): + Rename to FINALIZE_TRAMPOLINE. + * m68k/{linux.h,m68kv4.h}: Override trampoline macros. + +Tue Apr 16 16:02:50 1996 David Edelsohn + + * combine.c (make_field_assignment): Allow XOR in final case. + +Tue Apr 16 11:33:53 1996 J.T. Conklin + + * m68k.h (TARGET_SWITCHES): Don't remove MASK_68060 with -msoft-float. + + * m68k.h (MULL_COST, MULW_COST, RTX_COSTS): Add costs for TARGET_68060. + * m68k.md (ashlsi_16, lshrsi_16): Disable pattern for TARGET_68060; + this special case is not faster for that cpu. + +Tue Apr 16 10:54:55 1996 Eliot Dresselhaus + + * alpha.c (alpha_emit_conditional_move): New function. + * alpha.h (alpha_emit_conditional_move): Declare it. + * alpha.md (cmov* define_expands): Use it. + +Tue Apr 16 09:06:17 1996 Andreas Schwab + + * function.h (struct function): New field returns_pointer. + * function.c (push_function_context_{to,from}): Save and restore + current_function_returns_pointer. + + * config/svr4.h (ENDFILE_SPEC): Add missing `%s'. + + * configure (m68k-*-linux*aout*): Set tmake_file to m68k/t-linux-aout. + (m68k-*-linux*): Set extra_parts. + * m68k/t-linux (INSTALL_ASSERT_H): New definition. + (CRTSTUFF_T_CFLAGS_S, TARGET_LIBGCC2_CFLAGS): New definitions. + * m68k/t-linux-aout: New file. + * m68k/linux.h (LIB_SPEC): Deleted. + (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS): Define. + + * m68k.h (TRAMPOLINE_ALIGNMENT): Specify alignment in bits, not bytes. + +Tue Apr 16 08:53:17 1996 Philippe De Muyter + + * final.c (final_scan_insn): Allow removal of redundant test and + compare instructions that use clobbers. + +Tue Apr 16 06:22:00 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (clear_limbo_values): New function. + (pushdecl): Call it for function body blocks. + + * objc/thr-decosf1.c (_objc_thread_id): Correct return type from + int to _objc_thread_id. + + * expr.c (expand_builtin, case BUILT_IN_LONGJMP): Make a decl + for __dummy, so we can call make_function_rtl on it. + + * expr.c (expand_assignment): Don't pre-evaluate RHS if a CALL_EXPR + with a variable-size return. + +Mon Apr 15 17:38:45 1996 Ian Lance Taylor + + * fixincludes: Fix undefined VOIDFUNCPTR in VxWorks 5.2 . + +Mon Apr 15 15:12:16 1996 Jim Wilson + + * expr.c (do_store_flag): Before calling exact_log2, remove any + sign extension bits. + + * reload1.c (emit_reload_insns): Call reload_reg_reaches_end_p for + every reg of multi-reg spill register. Invalidate old info for multi + reg spill registers when only part survives to the end. + +Mon Apr 15 14:49:12 1996 Mike Stump + + * function.c (preserve_temp_slots): Only preserve temporaries that + happen to be at the current level. + +Mon Apr 15 14:08:12 1996 Doug Evans + + * gansidecl.h: New file. + * choose-temp.c: New file. + * Makefile.in (xgcc): Depend on and link in choose-temp.o. + (collect2): Likewise. + (choose-temp.o): Add rule for. + * collect2.c: #include "gansidecl.h". + (const,PROTO): Delete. + (P_tmpdir): Delete. + (choose_temp_base): Declare as extern, delete internal copy. + (main): Update call to choose_temp_base. + * cpphash.c: #include "gansidecl.h". + (NULL,const,volatile): Delete. + * demangle.h: #include "gansidecl.h". + (PROTO,PTR,const): Delete. + * expr.h (const): Delete. + * fix-header.c: #include "gansidecl.h". + (const): Delete. + * gcc.c: #include "gansidecl.h". + (PROTO,VPROTO,PVPROTO,VPROTO,VA_START,NULL): Delete. + (GENERIC_PTR,NULL_PTR,P_tmpdir): Delete. + (choose_temp_base): Declare as extern, delete internal copy. + (concat): Rewrite to take a variable number of arguments. + (choose_temp_base_try,concat[346]): Delete. + (translate_options,set_spec,process_command,do_spec_1, + is_directory,main): Always use concat, not concat[346]. Pass + NULL_PTR as trailing arg to concat. + * genattr.c (main): Delete printing of "#define PROTO". + * machmode.h: #include "gansidecl.h". + (PROTO): Delete. + (HAVE_MACHINE_MODES): Move definition to standard place. + * recog.h: #include "gansidecl.h". + (PROTO,const): Delete. + * rtl.h: #include "gansidecl.h". + (PROTO,VPROTO,PVPROTO,VPROTO,VA_START,STDIO_PROTO): Delete. + (NULL,GENERIC_PTR,NULL_PTR): Delete. + * tree.h: Likewise. + +Mon Apr 15 08:49:20 1996 Tom May (ftom@netcom.com) + + * cse.c (invalidate_skipped_set): Ignore CLOBBER after calling + note_mem_written, not before. + +Mon Apr 15 08:22:03 1996 Philippe De Muyter + + * m68k.md (tstdi): Optimized for "d" case. + (movqi): Allow moving "i" into "a". + (zero_extendsidi2): Alternatives merged. + (extendplussidi): Fixed when operands 0 and 1 share a register. + (adddi_sexthishl32): Constraints reordered for better reload. + (adddi3,subdi_sexthishl32,subdi3,negdi2): Likewise. + (ashldi_sexthi): Accept "m" as operand 0. + (ashldi_const32): Alternatives merged. + (ashift patterns): Output "lsl" instead of "asl". + (beq0_di): If condition codes already set, output only branch insn. + (bne0_di,bge0_di,blt0_di): Likewise. + * m68k.c (notice_update_cc, case ASHIFT{,RT}, LSHIFTRT, ROTATE{,RT}): + Don't set CC_NO_OVERFLOW. + * m68k.h (TARGET_SWITCHES): Fix typo in "c68000" entry. + +Mon Apr 15 08:06:17 1996 Stephen L Moshier (moshier@world.std.com) + + * real.c (eadd1): Check for overflow on X plus X. + +Mon Apr 15 08:02:24 1996 J.T. Conklin + + * i386/netbsd.h (HAVE_SYSV_PRAGMA): Removed definition. + * config/netbsd.h (HAVE_SYSV_PRAGMA): Define. + (SET_ASM_OP): Define. + +Mon Apr 15 07:28:54 1996 Fila Kolodny + + * configure: Add definition for host= into Makefile. + * build-make (CC): Pass -b $(host), not target. + +Mon Apr 15 05:12:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (bc_expand_increment): Change declaration to return void. + + * toplev.c (max_label_num_after_reload): New variable. + (rest_of_compilation): Set it. + * reorg.c (find_dead_or_set_registers): Only kill spill regs after + label made before jump2. + + * combine.c (expand_field_assignment): Take SUBREG_WORD into + account when have STRICT_LOW_PART. + (make_extraction): Make a STRICT_LOW_PART at any low-order word. + +Mon Apr 15 03:43:11 1996 Jeffrey A. Law + + * flags.h (flag_function_sections): Declare. + * toplev.c (flag_function_sections): Define. + (compile_file): Add warnings when -ffunction-sections is + used with -g, or profiling. Disable -ffunction-sections + when profiling is used. Add warning when -ffunction-sections + is used on a target that doesn't support it. + * varasm.c (named_section): Make a copy of the section name + in case the original is in temporary storage. + (function_section): Set DECL_SECTION_NAME for each function + if flag_function_sections is on and the target supports it. + * dbxout.c (dbxout_function_end): New function. + (dbxout_function): Call dbxout_function_end if using extensions + and flag_function_sections is on. + * sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Prefix a function + section's name with ".text%" when -ffunction-sections. + +Sun Apr 14 19:37:43 1996 Doug Evans + + * toplev.c (main): Delete redundant test for -p used with -fbytecode. + +Sun Apr 14 19:01:59 1996 John F. Carr + + * c-decl.c (finish_enum): Don't crash if no type can represent all + enumeration values. + +Sun Apr 14 18:56:40 1996 J.T. Conklin + + * m68k.md (ftruncdf2): Enable for m68060 systems. + +Sun Apr 14 18:49:30 1996 David L. Reese (david.reese@east.sun.com) + + * fold-const.c (range_test): Don't convert hi_cst or lo_cst + to unsigned when folding signed range tests. + +Sun Apr 14 08:56:27 1996 Stephen L Moshier + + * real.h (ereal_from_{int,uint}): Add new arg, MODE. + (REAL_VALUE_FROM{,_UNSIGNED}_INT): New arg, MODE. + * real.c (ereal_from_{int,uint}): New arg, MODE. + * cse.c (simplify_unary_operation): Add new arg to REAL_VALUE_FROM_INT. + * fold-const.c (fold_convert): Likewise. + * tree.c (real_value_from_int_cst): New arg, TYPE. + Pass mode to REAL_VALUE_FROM_INT. + (build_real_from_int_cst): Properly deal with truncation. + +Sun Apr 14 08:21:29 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): When substituting in output of I2, + ensure dest isn't clobbered in I2. + + * combine.c (combine_instructions): In initial scan of insns, + handle a REG_INC note's affect on sign bit copies and nonzero bits. + (set_nonzero_bits_and_sign_copies): Treat a zero SET arg as a CLOBBER. + +Sun Apr 14 07:52:28 1996 Manor Askenazi + + * objc/encoding.c (objc_skip_typespec): Don't abort for _C_UNDEF. + +Sat Apr 13 20:35:36 1996 Richard Henderson (richard@atheist.tamu.edu) + + * configure (m68k-apple-aux*): Rework to take advantange + of list of tm.h files and support all four gas/gld options. + * m68k/auxas.h, m68k/auxgas.h, m68k/auxgld.h, m68k/auxld.h: New files. + * m68k/auxstd.h, m68k/auxgnu.h: Deleted. + +Sat Apr 13 20:18:11 1996 Stephen L Moshier + + * alpha.c (check_float_value): New function. + * alpha.h (CHECK_FLOAT_VALUE): Define. + (ASM_OUTPUT_FLOAT): Print the value in hex. + +Sat Apr 13 15:08:45 1996 Doug Evans + + * configure: New target arm{,el}-*-coff*. + (cpu_default): Sort alphabetically. + * arm/coff.h: New file. + * arm/t-bare: New file. + * arm/arm.c (use_return_insn): Don't use return for naked functions. + (arm_valid_machine_decl_attribute): New function. + (arm_naked_function_p): New function. + (output_func_prologue): Naked functions don't have prologues. + (arm_expand_prologue): Likewise. + (output_func_epilogue): Likewise with epilogues. + +Sat Apr 13 11:31:32 1996 Jeffrey A. Law + + * h8300.c (adds_subs_operand): Fix thinko in last change. + + * h8300.md (subhi3): Turn into a define_expand. + (subhi3 using adds_subs): New pattern. + (H8300 subhi): Derived from old subhi pattern. Simplified. + (H8300H subhi): Likewise. + (subsi using adds_subs): New pattern. Only used on H8300H. + (subsi_h8300): Allow "a" registers as destination. + (subsi_h8300h): Allow "a" registers as destination. Simplify. + + * h8300.md (bcs_qiqi, bcs_hihi, bs_hiqi): Fix thinkos + in last change. + +Sat Apr 13 08:59:48 1996 Fila Kolodny + + * i370/mvs.h (ASM_DECLARE_FUNCTION_NAME): Don't write anything to + asm file, because everything is handled in FUNCTION_PROLOGUE. + +Sat Apr 13 07:55:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_emit_set_const_1): Renamed from + alpha_emit_set_const and static. + Remove change of Nov 26; again use normal mechanism for SImode. + (alpha_emit_set_const): New function. + +Fri Apr 12 18:19:39 1996 Jeffrey A. Law + + * h8300.c (adds_subs_operand, output_adds_subs): New functions. + * h8300.md (addhi3): Turn into a define_expand. + (addhi3 using adds_subs): New pattern. + (H8300 addhi): Derived from old addhi pattern. Simplified. + (H8300H addhi): Likewise. + (addsi using adds_subs): New pattern. Only used on H8300H. + (addsi_h8300): Allow "a" registers as destination. + (addsi_h8300h): Simplify. Allow "a" registers as destination. + + * h8300.md (bcs): New attribute type. + (default_length): Compute correct length for bcs insns. + (bcs_qiqi, bcs_hihi, bs_hiqi): Use new type and update + to account for correct length computation. + + * h8300.md (movhi_internal): Demand at least one operand to be reg. + (movsi_h8300{{,h}): Optimize loading certain constants. + + * h8300.h (NO_FUNCTION_CSE): Comment out. + (FUNCTION_ARG_REGNO_P): Properly define for TARGET_QUICKCALL. + (RETURN_IN_MEMORY): Don't return small structs in regs. + + * h8300.c (const_costs): -4 and 4 are cheap on the h8300h. + (notice_update_cc): Remove references to "value2" field. + + * h8300.c (dosize): Remove unused "fped" argument. All callers + changed. Handle add/sub of 5-8 bytes efficiently on the h8300h. + + * h8300.c (print_operand): Handle new 'R' case for accessing + the 8-bit area. Make code for 'Y' fall into code for 'R' when + operand is not a register. Update some comments. + (h8300_tiny_data_p): New function. + (h8300_valid_machine_decl_attribute): Handle "tiny_data" attribute. + * h8300.h (OK_FOR_U): Handle memory references into 8-bit area. + (ENCODE_SECTION_INFO): Mark SYMBOL_REFs which refer to 8-bit area. + * h8300.md (many patterns): Use 'R' rather than 'X' for + operands that may be memory accesses into the 8-bit area. + (btst pattern): New pattern to set the cc0 (zbit) based on + data in the 8-bit area. + + * h8300.md (one_cmplsi2): Fix length computation for h8300h. + +Fri Apr 12 14:34:39 1996 Doug Evans + + * arm.md (*ldmsi,*stmsi): Use (mem (match_operand ...)) + to avoid using indirect_operand (reload problems). + * arm/semi.h (CPP_PREDEFINES): Define __semi__ instead of semi. + * arm/aout.h (ASM_GENERATE_INTERNAL_LABEL): Use LOCAL_LABEL_PREFIX. + (ASM_OUTPUT_ADDR_{VEC,DIFF_ELT}): Likewise. + +Fri Apr 12 09:43:30 1996 Jason Merrill + + * dbxout.c (dbxout_typedefs): Don't emit incomplete types yet. + (dbxout_symbol): Use DECL_ARTIFICIAL to recognize C++ implicit + typedefs. + +Thu Apr 11 21:56:26 1996 Doug Evans + + * i386/t-winnt (winnt.o): Rewrite based on .c.o rule. + (oldnames.o,spawnv.o): Add rules for. + +Thu Apr 11 07:25:06 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): In inlining case, if BEFORE_CALLS is + zero, start looking at first insn. + + * expr.c (preexpand_calls, case CALL_EXPR): Rework to properly + avoid expanding functions returning variable size objects. + + * integrate.c (expand_inline_function): When comparing types + of formal and actual, use TYPE_MAIN_VARIANT. + +Thu Apr 11 00:48:29 1996 Jeffrey A. Law + + * h8300/lib1funcs.asm (modnorm): New function(s). Like divnorm, + but gets the sign bit right for modulo operations. + (__modhi3, modsi3): Use modnorm. + + * h8300.c (dosize): On h8300h, do 4 byte adjusts using adds and subs. + * h8300.h (LONG_LONG_TYPE_SIZE): Always make this 32bits. + Reverses change from Apr 2, 1996. + +Wed Apr 10 18:39:52 1996 Doug Evans + + * sparc.h (ASM_OUTPUT_INTERNAL_LABELREF): Delete. + (FUNCTION_PROFILER): Use ASM_GENERATE_INTERNAL_LABEL instead. + + * sparc.c (sparc_override_options): 90c701 renamed to tsc701. + (eligible_for_epilogue_delay_slot): Don't allow anything if + -mbroken-saverestore. + (output_function_prologue): Only use trivial save's if + -mbroken-saverestore. + * sparc.h (CPP_SPEC): Handle -mcpu={sparclet,tsc701}. + (ASM_SPEC): Likewise. + ({MASK,TARGET}_BROKEN_SAVERESTORE): Define. + (enum processor_type): 90C701 renamed to TSC701. + * sparc.md (attr cpu): 90c701 renamed to tsc701. + * sparc/splet.h (SUBTARGET_SWITCHES): Recognize -mbroken-saverestore. + +Wed Apr 10 17:56:02 1996 Stan Cox + + * m88k/dgux.h (EXTRA_SPECS): Define. + (ASM_SPEC,CPP_SPEC,STARTFILE_SPEC): Use EXTRA_SPECS. + * m88k/dguxbcs.h (ASM_SPEC,CPP_SPEC,STARTFILE_SPEC): Use EXTRA_SPECS. + * m88k/m88k.c (output_ascii) Output literal HT. + +Wed Apr 10 17:28:37 1996 James Carlson (carlson@xylogics.com) + + * configure: Work around AIX bug when defining SUBDIRS. + +Wed Apr 10 17:22:42 1996 Paul Eggert + + * cexp.y (parse_number): Don't reject long long constants unless + pedantic. + +Wed Apr 10 17:19:56 1996 Stephen L. Moshier (moshier@world.std.com) + + * real.c (e64toe): Properly distinguish between NaN and infinity + bit patterns for real-words-big-endian targets. + +Wed Apr 10 17:17:26 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * real.c (endian): Add two explicit casts. + (e64toe): Support ARM extended precision fp format. + Check negative infinities properly for NaNs. + (toe64): Support ARM extended precision fp format. + +Tue Apr 9 12:53:31 1996 Doug Evans + + * i386/gas.h (ASM_OUTPUT_ALIGN): Define and use .balign. + +Tue Apr 9 12:48:45 1996 Stephen L Moshier (moshier@world.std.com) + + * sparc.c (fp_zero_operand): Exclude -0.0. + +Tue Apr 9 07:11:24 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c: Fix typo in last change. + + * tree.c (substitute_in_expr): Don't return new expression if + nothing changed. + (substitute_in_type): Deleted, not used. + * tree.h (substitute_in_type): Delete declaration. + +Mon Apr 8 16:30:18 1996 Jeffrey A. Law + + * flow.c (find_auto_inc): Also make sure there aren't + any sets of the incremented register between the memory + reference and increment insn. + +Mon Apr 8 15:41:14 1996 John Polstra (jdp@polstra.com) + + * configure (i[3456]86-*-freebsdelf*): New target. + * i386/freebsd-elf.h: New file. + * i386/x-freebsd (USER_H): New define; to null. + +Mon Apr 8 14:44:41 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (finish_function): Always warn if main doesn't return int. + +Mon Apr 8 13:01:37 1996 Michael Meissner + + * rs6000.c (got_operand): New function, returns true if the + operand can go in V.4's GOT. + (rs6000_pic_register): New variable. + (output_epilog): Reset rs6000_pic_register. + + * rs6000.h (rs6000_pic_register, got_operand, flag_pic): Add decls. + (PREDICATE_CODES): Add got_operand. + + * rs6000.md (movsi): Add support for V.4's -fpic and -FPIC. + (init_v4_pic): Initialize the V4 pic register if needed. + (call patterns): If -fpic/-fPIC, call function with @plt suffix. + + * t-eabigas (MULTILIB_DIRNAMES): Remove errant pic directory. + + * rs6000.c (output_prolog): Correctly store & restore the + arguments to main in their correct save location, when calling the + start function. + +Mon Apr 8 13:01:37 1996 David Reese + + * rs6000.c (print_operand): Use reg_names to print registers. + +Fri Apr 5 00:40:19 1996 Jeffrey A. Law + + * h8300.c (h8300_valid_machine_decl_attribute): Use underscores, + not dashes in attributes. + (h8300_funcvec_function_p): Corresponding changes. + (h8300_interrupt_function_p): Likewise. + + * pa.h (INIT_CUMULATIVE_INCOMING_ARGS): Initialize "indirect" + field to zero. + +Thu Apr 4 12:52:11 1996 Jim Wilson + + * loop.c (combine_givs): Use new macro GIV_SORT_CRITERION. + New variable giv_array. Loop over giv_array instead of following + next_iv links. + (giv_sort): New function. + * sh.h (GIV_SORT_CRITERION): Define. + + * c-typeck.c (push_init_level): When output alignment for structure + field, add check to verify it is the next field to be output. + +Thu Apr 4 12:19:26 1996 David Mosberger-Tang + + * alpha.c: Don't include stamp.h for Linux-based GNU systems. + +Thu Apr 4 12:17:08 1996 Richardg Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc/Makefile: Rename thread* to thr*. + * objc/thread.c: Rename thread-* to thr-*. + * objc/thr-decosf1.c: Renamed from thread-decosf1.c + * objc/thr-irix.c: Renamed from thread-irix.c. + * objc/thr-single.c: Renamed from thread-single.c. + * objc/thr-solarius.c: Renamed from thread-solaris.c. + * objc/thr-win32.c: Renamed from thread-win32.c. + * objc/objc-api.h: Include thr.h, not thread.h. + * objc/runtime.h, objc/sarray.h: Likewise. + + * i386.md (ashldi3_const_int): Don't recognize if won't match + constraint of operand 2. + +Thu Apr 4 11:40:55 1996 Michael Meissner + + * config/fp-bit.c (EXTENDED_FLOAT_STUBS): If EXTENDED_FLOAT_STUBS + is defined, define all of the XF/TF functions that might be + generated that we don't have code for yet. + + * i960/t-(vxworks960,960bare): (LIB2FUNCS_EXTRA): Make and + compile xp-bits.c that defines EXTENDED_FLOAT_STUBS. + + From: steve chamberlain + * i386/x-cygwin32 (LANGUAGES): Delete. + * i386/xm-cygwin32.h (EXECUTABLE_SUFFIX): Set to .exe. + * rs6000/xm-cygwin32.h (EXECUTABLE_SUFFIX): Set to .exe. + +Wed Apr 3 14:10:16 1996 Jim Wilson + + * expr.c (emit_push_insn): Clobber register only if it is non-zero. + +Wed Apr 3 11:31:55 1996 Jeffrey A. Law + + * h8300.h (h8300_funcvec_function_p): Declaration moved here. + * h8300.c (h8300_funcvec_function_p): Declaration removed from here. + * h8300.md (tstqi): Tweak to work like other tstXX patterns. + (cmphi): Turn into a define_expand. Add two anonymous + matterns to match the output of the cmphi expander. + (cmpsi): Accept constants as the second input operand. + +Tue Apr 2 13:52:30 1996 Jeffrey A. Law + + * h8300.md (movqi_internal): Remove useless alternative(s). Fix + lengths and simplify by reordering remaining alternatives. + (movstrictqi, movhi_internal, movstricthi): Likewise. + (movsi_h8300h, movsf_h8300h): Likewise. + + * h8300/h8300.c (extra_pop): Remove unused variable. + (current_function_anonymous_args): Likewise. + (function_prologue): Remove incorrect varargs/stdarg + related code. + (function_epilogue): Likewise. + (function_arg): Never pass unnamed arguments in registers. + * h8300.h (LONG_LONG_TYPE_SIZE): Use 64bits when ints are 32bits. + (SETUP_INCOMING_VARARGS): Remove definition. + +Mon Apr 1 16:59:48 1996 Ian Lance Taylor + + * fixincludes: Fix signal prototype on SunOS to avoid pedantic C++ + error. + +Mon Apr 1 16:16:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): When finding mode to access bitfield + that ends up properly aligned, use mode class of its type unless + type's mode was BLKmode. + +Mon Apr 1 13:45:30 1996 Jeffrey A. Law + + * h8300.c (interrupt_handler): Renamed from pragma_interrupt. + All references changed. + (function_prologue): Set interrupt_handler if the current + function has the "interrrupt-handler" attribute. + (small_call_insn_operand): New function. + (h8300_interrrupt_function_p): New function. + (h8300_funcvec_function_p): New function. + (h8300_valid_machine_decl_attribute): New function. + * h8300.h (VALID_MACHINE_DECL_ATTRIBUTE): Define. + * h8300.md (call insns): Handle calls through the + function vector. Indirect calls and calls through + the function vector have a length of two bytes. + +See ChangeLog.10 for earlier changes. + +Use a consistent time stamp format in ChangeLog entries. +Not everyone has Emacs 20 yet, so stick with Emacs 19 format for now. + +Local Variables: +add-log-time-format: current-time-string +End: diff --git a/ChangeLog.0 b/ChangeLog.0 new file mode 100644 index 0000000..461a66a --- /dev/null +++ b/ChangeLog.0 @@ -0,0 +1,6670 @@ +Wed Dec 21 02:46:34 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.32 released. + + * toplev.c (main): Vax pcc enforces goto-less programming + with fatal error. + + * stmt.c (fixup_memory_subreg): New arg INSN says where to emit insns. + (walk_fixup_memory_subreg): Likewise. All callers changed. + +Tue Dec 20 01:26:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (start_function): Don't clear TREE_PERMANENT in fn decl. + Make the result decl a permanent node. + (finish_function): Don't clear DECL_RESULT in an inline function. + (duplicate_decls): Don't lose DECL_RESULT or DECL_SAVED_INSNS + or old decl, when defn is followed by redeclaration. + Likewise DECL_ARGUMENTS and DECL_RESULT_TYPE. + + * stmt.c (expand_function_end): End any sequences left unterminated. + + * cse.c (predecide_loop_entry): If "loop" has no label, do nothing. + + * recog.c (asm_noperands): Now return -1 if not that kind of insn. + All callers changed. + * combine.c (check_asm_operands): Calling changes not quite trivial. + * final.c (final): Likewise. + * reload.c (find_reloads): Likewise. + * recog.c (asm_noperands): Other changes: + Loop computing # of SETs in a PARALLEL was off by 1. + Validate all elts of any PARALLEL, to block invalid combinations. + + * ns32k.md (andsi3, andhi3): Make new CONST_INTs; don't clobber old. + + * integrate.c (copy_rtx_and_substitute): When looking in `parm_map', + if our mode mismatches parm's mode, use change_address to extract part. + On BYTES_BIG_ENDIAN machines, adjust the offset. + +Mon Dec 19 23:50:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cexp.y ('/' and '%' ops): If divide by 0, print error, don't die. + +Sun Dec 18 14:03:02 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (main): Avoid shadowing I in inner block. + + * flow.c (propagate_block): The insn at the end of a libcall + may be dead, but the libcall might still be needed if the + hard return reg is used later. Detect this case. + (libcall_dead_p): New fn used to check that the libcall is dead. + + * output-m68k.c, tm-m68k.h (standard_sun_fpa_constant_p): Fn renamed. + +Sat Dec 17 13:23:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_end_bindings): error_with_file_and_line => ..._decl. + + * combine.o (try_combine): Accept combination making a valid + asm with operands. + (check_asm_operands): Recognize asm with operands that are valid. + + * loop.c (strength_reduce): Don't accept a reg as a giv + if the reg was made by loop-optimize. + + * stmt.c (balance_case_nodes): A list of 3 always splits in middle. + +Fri Dec 16 17:22:07 1988 Tiemann (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (fetch from constant address): Split into two patterns, + one fixed point and one floating. + (store at constant address): Handle remembered hi-half differently. + Other bug fixes. + (fix_truncsfsi2): Use f1, not f0, as temp. + (fix_truncdfsi2): Don't clear CC_F1_IS_0. + + * output-sparc.c (singlemove_string): Changed handling of case + where op1 is not memory and op0 has varying address. + (output_fp_move_double): Avoid reloading high half address + in the ldd and std cases with constant address. + (make_f0_contain_0): Handle f0 and f1 individually. + + * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): CONST is now illegitimate. + + * rtl.c (note_stores): Pass entire SET rtx, not flag, as 2nd arg to FN. + * local-alloc.c (reg_is_set): New type for 2nd arg. + + * Makefile: Comment out cc1plus, since not ready for release. + +Thu Dec 15 16:39:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (reg_is_set): If a hard reg is clobbered, make it free + before and after the insn. + * stupid.c (stupid_mark_refs): Likewise. + * global-alloc.c (global_conflicts): Likewise. + Use note_stores to call mark_reg_{store,clobber}. + (mark_reg_store): Changed calling conventions + All work done on set/clobbered regs is now done here. + Ignore CLOBBERs. + (mark_reg_clobber): Similar fn, but ignore SETs and handle CLOBBERs. + (regs_set, n_regs_set): New static vars for comm. among the above. + + * stmt.c (expand_asm_operands): call protect_from_queue on operands. + This requires preexpanding the outputs into a vector of rtx's. + + * Makefile (install): cd to $(libdir) before ranlib. + + * c-typeck.c (c_expand_asm_operands): emit_queue at the end. + + * reload.c (find_reloads): Count # alternatives properly for + an asm insn, and check that all operands correspond. + + * loop.c (verify_loop): Reject loops containg setjmps. + * cse.c (cse_main): Don't cse across a call to setjmp. + + * expr.c (expand_expr): Permit any non0 DECL_RTL for a VAR_DECL. + + * stmt.c (balance_case_nodes): Count ranges double when balancing. + +Wed Dec 14 13:50:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (output_addr_const): Output just `-', not `+-'. + + * make-cc1.com: Update filenames changed to `c-'. + * make-cccp.com: Pass needed -D options when compiling cccp.c. + Use /nomap when linking. + + * loop.c (strength_reduce): Paraphrase setting NEW_REG, for Iris cc. + + * output-m68k.c (output_move_const_single): %'s must be doubled twice. + + * loop.c (record_giv): A giv can be replaceable if its uses are + all in the same basic block as its sole setting. + (last_use_this_basic_block): Subroutine to test that. + +Tue Dec 13 13:41:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (do_store_flag): Allow for COMPARISON to be a const_int. + + * c-decl.c (pushdecl): Warn if type mismatch with another external decl + in a global scope. + + * fixincludes: Fix typo in msg of deleting unchanged file. + + * Makefile (insn-*): Use two-step rules with a separate time-stamp file + to avoid rerunning gen* unless md has changed again. + +Mon Dec 12 13:32:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (tstsf, tstdf, cmpsf, cmpdf): Use fnstsw, not fstsw. Faster. + + * tm-vax.h (ASM_OUTPUT_REG_POP): Use correct asm syntax for pop insn. + + * combine.c (subst): Handle (subreg (mem)) by making a changed mem. + This avoids producing any (subreg (mem))s except in the special + case they are supposed to be made here. + Also set undo_storage in a couple of cases that forgot to. + + * reload.c (push_reload): When handling (SUBREG (MEM)) for IN, + if there is an OUT, make that a separate reload. + Return its number in `output_reloadnum' + (find_reloads): When pushing matching-reloads, note that the + two operands can have different reload-numbers. + + * tm-3b1.h (ASM_OUTPUT_CASE_END): Test flag on TABLE, not its pattern. + (ASM_OUTPUT_CASE_LABEL): If /i flag set, don't output the dummy entry + since the fetcher-insn will not be off by 2 in this case. + * m68k.md (casesi_2 recognizer): For 3b1 syntax, compensate for that. + +Sun Dec 11 12:51:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genrecog.c (try_merge_2): No longer put all explicit decompositions + before all predicates. Patterns are now tested in the order written. + * vax.md: Move the push-or-move-address patterns to the end. + * m68k.md: Move load-address pattern to end. + Rearrange the special-case movsi patterns. + * ns32k.md: Move special load-reg-17 pattern before movsi. + * i386.md: Move the QI and DI push patterns to logical places. + This should not actually change anything. + + * stmt.c: Add Andy Hitchins's binary-tree case statement code. + (struct case_stmt): case_list field is now a case_node chain. + Replace has_default field with default_label field. + (pushcase, pushcase_range): Build case_list in its new type, + and keep it sorted. + (expand_end_case): Use case_list in its new type. + Count a range of > 1 as two cases, when choosing strategy. + (group_case_nodes, balance_case_nodes): New fns, rearrange case_list. + (node_has_{low,high}_bound, node_is_bounded): New fns test + relationships of values of various case_list tree nodes. + (emit_jump_if_reachable): New fn. + (emit_case_nodes): Emit compares and jumps based on tree of case_list. + + * cccp.c (finclude): Handle nonordinary files (stat doesn't give size). + + * tm-3b1.h (PRINT_OPERAND_ADDRESS): Handle case of breg and no ireg. + +Sat Dec 10 16:30:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (movstrsi): Separate define_expand and define_insn; + clobber some pseudos to get temp regs to use in the output. + * output-sparc.c (output_block_move): Use those temp regs, + guaranteed to be free. + + * sparc.md (andcc patterns for bitfields from memory): + Test immed. arg for being in range. + (load DFmode constant): Use %m for output in one case. + * output-sparc.c (singlemove_string, output_move_double): Likewise. + + * output-sparc.c (singlemove_string): New case for mem-to-mem move. + +Fri Dec 9 11:42:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stupid.c (stupid_mark_refs): for CLOBBER of a pseudo, + it is born just before this insn and dies just after. + + * tm-vax.h (NOTICE_UPDATE_CC): For aob, sob insns, forget the cc's. + + * basic-block.h (REG_BLOCK_UNKNOWN, REG_BLOCK_GLOBAL): Move defn here. + * local-alloc.c: Use them. + + * c-decl.c (store_parm_decls): Additional explanatory message + for some prototype mismatches. + + * gnulib.c (SItype): New macro used instead of `int' + for SImode operands and values. Definition is `long int'. + +Thu Dec 8 18:45:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (operands_match_p): Move the label `slow' so that + it doesn't cause a REG and a SUBREG to be compared wrong. + + * toplev.c (compile_file): Output a label `gcc_compiled.' for GDB. + If new macro ASM_IDENTIFY_GCC is defined, run that instead. + * tm-3b1.h (ASM_IDENTIFY_GCC): Define this as no-op. + +Wed Dec 7 12:20:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (adddf3): Typo: paren was in a constraint. + + * c-decl.c (grokparms): Avoid duplicate msgs for incomplete type ptrs. + + * gnulib.c: Rename all fns to start with `__'. + * optabs.c, expr.c: Rename all references. + + * gnulib.c (__cmpdi2, __ucmpdi2): New fns. + * optabs.c (emit_cmp_insn): Use them. + + * Makefile (stage*): Ignore errors on the main `mv' (for cc1plus). + Run ranlib if we have to copy gnulib. + + * expmed.c (expand_divmod): Split `label' into several local vars. + + * jump.c (jump_back_p): Do nothing unless cc's were set from integers. + +Tue Dec 6 12:00:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (extend_token_buffer): Use xrealloc, not realloc. + + * integrate.c (output_inline_function): fix args of expand_function_end + (expand_inline_function): Add missing arg to expand_end_bindings. + + * cse.c (cse_insn): Add missing MODE arg to canon_hash. + + * reload1.c (reload_as_needed): Del. extra arg of choose_reload_targets + (reload): Add missing MODE arg to immediate_operand. + + * expmed.c (expand_mult): Delete extra arg to expand_unop. + + * c-typeck.c (default_conversion): + Add missing NOCONVERT arg to build_unary_op. + + * c-decl.c (duplicate_decls, finish_struct): Add missing arg + KNOWN_ALIGMENT to layout_decl. + * stor-layout.c (layout_record): Likewise. + * varasm.c (assemble_variable): Likewise. + + * dbxout.c (dbxout_init): Add missing LOCAL arg to dbxout_symbol. + + * expr.c (clear_storage): Remove excess arg to emit_move_insn. + + * loop.c (consec_sets_invariant_p): Add parens in hairy if-condition. + + * fold-const.c (fold): Typo, missing `case'. + + * cccp.c (main): Typo handling `-I-' option. + + * tm-i386.h (NO_FUNCTION_CSE): Define this; cse is said to slow + things down with less than 7 calls. + + * stmt.c (fixup_var_refs_insn): When scanning the reg-notes, + don't touch other insns they point at. + + * expr.c (do_jump): Use invert_exp, not reverse_condition, + to invert sense of a jump. + * jump.c reverse_condition now static, invert_exp now global. + +Mon Dec 5 10:51:39 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sun386.h (ASM_FILE_START): In the .file arg, exclude directories. + + * stmt.c (expand_expr_stmt): If -W, warn if stmt has no side effect. + + * cccp.c (monthnames): Capitalize each name. + + * rtl.def: New code MATCH_OPERATOR. + * genconfig.c (walk_insn_part): Handle it. + * genextract.c (walk_rtx): Handle it. + * genpeep.c (match_rtx): Handle it. + * genrecog.c (add_to_sequence): Handle it. + * genemit.c (max_operand_1, gen_exp, gen_expand): Handle it. + * genoutput.c (scan_operands): Handle it. + (insn_n_alternatives): New array in the output. + (struct data): New slots n_alternatives and op_n_alternatives. + (scan_operands, gen_insn, gen_peephole): + Record op_n_alternatives for each operand. + (output_epilogue): Verify that all operands have same # of alternatives + Also output insn_n_alternatives. + + * reload.c (find_reloads): use insn_n_alternatives to control + the loop over all alternatives. + An empty constraint or empty alternative in a constraint + is always satisfied. + * recog.c (constrain_operands): Likewise. + + * c-decl.c (lang_decode_option): For each -f option, recognize a form + with `no-' and a form without, as contraries. + + * toplev.c (main): Decode -f options using a table + so that each option automatically has a `no-' variant. + + * combine.c (try_combine): Give up if I1 or I2 follows a compare insn. + +Sun Dec 4 12:00:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (data_section): If flag_shared, use SHARED_SECTION_ASM_OP + if that is defined. + + * cccp.c (include_default): Add /usr/local/include. + + * Makefile (install): Install the makefile. + + * varasm.c (assemble_external): New fn to declare an external. + (assemble_variable): Output nothing for externals. + * c-parse.y (primary => identifier): Call assemble_variable on 1st use. + + * toplev.c (main): Print version info on stderr, not stdout. + * tm-*.h (TARGET_VERSION): Likewise. + + * tm-isi68.h, tm-news800.h: Rename __HAVE_FPU__ to __HAVE_68881__. + + * sparc.md (seq, etc): Entire page rewritten by Tiemann + to avoid incorrect use of PARALLEL. + * output-sparc.c (gen_scc_insn): Corresponding changes. + +Sat Dec 3 00:03:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (do_spec_1): %P is an ANSIfied form of %p: + put __ at beg and end of each predefined macro name. + + * tm-sun3.h (CPP_SPEC): Don't define -Dmc68010, etc., if -ansi. + * tm-sun2.h (CPP_SPEC): Likewise. + + * c-decl.c (shadow_tag): Don't complain if declare a new tag + at top level, or if redeclare a tag. + + * c-decl.c (grokparms): Warn if parm points to incomplete type. + (We already err if its own type is incomplete.) + + * stmt.c (fixup_var_refs_insns): Fix any (SUBREG (MEM)) in REG_NOTES. + (walk_fixup_memory_subreg): New subroutine used for this. + + * integrate.c (copy_rtx_and_substitute): Handle MEM refs to the middle + of a stack-parm--at least in the case of reading the parm. + + * rtl.c (rtx_equal_p): REG_FUNCTION_VALUE_P is significant + only until end of reload pass. + * toplev.c (rest_of_compilation): + Control that by setting new var rtx_equal_function_value_matters. + + * c-decl.c (init_decl_processing): Don't declare the builtins + that aren't really implemented. + + * output-sparc.c (output_move_double): "in structure" implies + 8-byte alignment only for DFmode, not for DImode. + + * final.c (output_operand_lossage): Cleaner text for error msg. + No longer need to write text into .s file, now that linenum is correct. + + * c-decl.c (pushdecl): -traditional stops warning + about "declared extern, later static". + + * c-typeck.c (build_indirect_ref): Don't handle flag_volatile here. + * expr.c (expand_expr): Handle it here, in INDIRECT_REF case. + This prevents -fvolatile from causing additional warnings. + + * output-sparc.c (output_load_address): Allow REG+REG for operands[3]. + + * m68k.md (movsi): If we output the label LIn, + set the RTL_INTEGRATED flag in the switch table's pattern. + * tm-3b1.h (ASM_OUTPUT_CASE_END): Define LD%n only if LI%n was output. + + * i386.md (push-and-add pattern): Comment it out. + It's said to result in slower code. + + * i386.md (tstqi, tsthi, tstsi): Output real `test' insn if op is reg. + + * i386.md (push for DI): Allow `oiF' for 2nd operand. + +Fri Dec 2 13:57:35 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (movdi): Allow F constraint for 2nd operand. + + * i386.md (push for QI): define pattern to push a QImode + which really uses pushw and therefore really pushes a halfword. + * tm-i386.h (PUSH_ROUNDING): Round up to multiple of 2. + + * gcc.c (do_spec_1): Handle %e, which means report an error. + Use it to prohibit -pg with -fomit-frame-pointer. + + * tree.h (DECL_RESULT_TYPE): New field in FUNCTION_DECL holds the type + of the widened returned value (not nec. the declared return type). + * c-decl.c (start_function): Set DECL_RESULT_TYPE. + * integrate.c (expan_inline_function): Use that, not DECL_RESULT. + +Thu Dec 1 16:44:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx): When reordering constant args, insist on + manifest constants; regs with known contents won't do. + + * i386.md (mulsi3): Don't use rtx_equal_p to compare regs. + + * expr.c (move_by_pieces_1): Don't call change_address + if address is autoinc, since that may not be memory_address_p. + Subroutine-macro add_offset deleted. + + * optabs.c (bcc_gen_fctn, setcc_gen_fctn): Moved to this file. + (init_optabs): Init those tables here. + * expr.c (init_conditions): Not here. + + * stmt.c (assign_stack_local): Make a list of all stack slots. + * emit-rtl.c (unshare_all_rtl): Unshare all the stack slots. + + * final.c (final): Handle BARRIER with ASM_OUTPUT_ALIGN_CODE. + * tm-ns32k.h (ASM_OUTPUT_ALIGN_CODE): Align to 4-byte bdry. +?? * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Override: just 2-byte bdry. + + * tm-m68k.h (PRINT_OPERAND): use new macros to print floats. + (ASM_OUTPUT_FLOAT_OPERAND): New macro. + (ASM_OUTPUT_DOUBLE_OPERAND): New macro. + * tm-sun3.h: Override those macros, to check for infinities. + +Wed Nov 30 06:35:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-ns32k.h (FUNCTION_{PRO,EPI}LOGUE): if no frame pointer, + do explicit push or pop insns. + + * tm-genix.h (PRINT_OPERAND): Fix typo `file'. + Extedn decl for paren_base_reg_printed. + (MAIN_FUNCTION_PROLOGUE): Deleted. + (ASM_OUTPUT_EXTERNAL): Defined. + + * c-parse.y (yyerror): Better error msg for unprintable char in token. + (primary => identifier): Set TREE_USED if implicit decl made. + + * Makefile (cleanlinks): New target. + (INSTALL): New variable, has program used for installing files in sys. + + * output-ns32k.c (print_operand_address): If addr is sum of 2 consts, + output ADDR first, then OFFSET. + + * ns32k.md (addsi3): Allow adding const+reg with result in another reg. + + * tm-seq386.h (FUNCTION_PROFILER): Provide overriding definition. + + * tm-hp9k320.h: Alternate ASM_SPEC if using GAS. + Define STANDARD_STARTFILE_PREFIX if using GAS. + (FUNCTION_PROLOGUE): on 68020 for big stack frame use link.l. + + * gcc.c (STANDARD_STARTFILE_PREFIX): New cust. macro replaces `/lib/'. + + * va-sparc.h, va-spur.h: Prefix non-interface identifiers with `__'. + + * optabs.c (init_optabs): Don't set up libcalls for ftrunc_optab + because (1) they aren't supported and (2) they are never used. + + * gnulib.c (__builtin_saveregs): If not sparc, define the symbol anyway + to avoid a warning in ranlib. + +Mon Nov 28 01:46:12 1988 Michael Tiemann (mdt at choctaw) + + * c-parse.y (yylex): Typo, `=' for `==' making wide strings. + + * sparc.md (various places): make sure that all patterns which store + can store using const0_rtx (i.e., make all operands to `st' %rx). + + * output-sparc.c (various places): changed dispatches on SYMBOL_REF + to dispatches on CONSTANT_ADDRESS_P since we now recognize any CONST + (and not just SYMBOL_REFs). Don't recognize special case CONST for + output_block_move. Compiler doesn't have enough information to use + it. + + * stmt.c (expand_fixup): If the control stack is nested within the + nesting stack, then no fixup is needed. Otherwise, compiler must + check for possible fixups between the current nesting stack and the + nesting stack that immediately contains the control stack. + + * stmt.c (expand_function_start): functions which are nested use + DECL_CONTEXT. For these functions, test that their DECL_CONTEXT is + a LET_STMT node. + + * tree.h: declare `build_offset_type'. + +Sun Nov 27 10:34:53 1988 Richard Stallman (mdt at yahi) + + * output-sparc.c (output_move_double): + Don't try to use ldd/std if OP1 is a constant. + * sparc.md (movdi): Allow immediate args moved into general regs. + + * c-decl.c (grokparms): Reject incomplete parm types even if just + declarating, not defining. Change types to error_mark_node + in both the PARM_DECL and the list of types. + + * dbxout.c (dbxout_type): It's not a bug if a RECORD_TYPE + has a typedef as its TYPE_NAME. That happens in C++. + + * Make each `asm' with operands record its source file/line + with reg-notes. It doesn't work to emit a special note before the insn + because the insn can be moved by loop_optimize. + * stmt.c (expand_asm_operands): New args FILENAME, LINE. + Record them in the insn, in reg notes. + * c-typeck.c (c_expand_asm_operands): New args, passed along. + * c-parse.y: Pass those args. + (maybe_type_qual): Line #s for asm stmts emitted like all others. + * rtl.h (REG_ASM_FILE, REG_ASM_LINE): New kinds of reg notes. + * toplev.c (error_for_asm): Get the info from those notes. + + * reload.c (find_reloads): Don't clear BADOP for a reg letter + if the alternative ultimately doesn't allow any regs. + + * reload.c (find_reloads): If an `asm' insn gets an error, + change it to a USE to avoid duplicate error msgs or later trouble. + + * reload.c (find_reloads_address): Reloading a constant address, + specify Pmode as the mode for push_reloads, in case of CONST_INT. + + * expr.c (emit_push_insn): Fix calc. of space needed when PARTIAL > 0. + Both scalar case and BLKmode case needed fixing. + + * sparc.md (load/store constant address): + Moving DF from mem to cpu regs, don't go via %f0. + Don't use std/ltd if alignment is wrong or uncertain. + +Sun Nov 27 10:34:53 1988 Michael Tiemann (mdt at yahi) + + * reload.c (push_reload): Allow VOIDmode for INMODE, OUTMODE; + default the mode from the operand values. + + * sparc.md: remove patterns which generate annulled branch insns. + They are correct, but those insns confuse GDB. + + * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): + Treat any constant address like a SYMBOL_REF. + * sparc.md: Check for CONSTANT_ADDRESS_P rather than SYMBOL_REF. + + * sparc.md: Peepholes now accept SYMBOL_REF addresses. + The output routine can now split them properly even as delay insns. + + * print-tree.c (dump): added entry for METHOD_TYPE and + METHOD_CALL_EXPR. Also added entry for WITH_CLEANUP_EXPR. Suggest + that we make first_rtl of WITH_CLEANUP_EXPR 2 instead of 1. + +Sun Nov 27 00:15:33 1988 Michael Tiemann (mdt at yahi) + + * print-tree.c (dump): added entry for OP_IDENTIFIER. + + * tree.c (build_op_identifier): new function. Needed because + `build_nt' expects an "e" node, but OP_IDENTIFIER is an "x" node. + + * store_layout.c (layout_record): use DECL_FIELD_CONTEXT instead of + DECL_CONTEXT. + + * tree.h (DECL_FIELD_CONTEXT): new macro. Points to the type that a + FIELD_DECL is a member of. For C, this is just DECL_CONTEXT. + + * tree.c (build_method_type): typo used "==" to assign basetype to + TYPE_METHOD_BASETYPE with predictably poor results. + +Sat Nov 26 22:55:32 1988 Michael Tiemann (mdt at yahi) + + * output-sparc.c (output_sized_memop): new function to output a load + or store insn based on the size of the operand loaded or stored. + (make_f0_contain_0): use info from condition codes to decide whether + the register %f0 needs to have 0 loaded from memory or not in order + to contain zero. + (gen_scc_insn): new function used by define_expands for + set-on-condition-code insns. + (output_delay_insn): now knows how to handle load and store + scheduling when the load or store operation takes two insns instead + of one. The rewrite is now understands is this: + + sethi %hi(address),%g1 -> sethi %hi(address),%g1 + ld/st [%g1+%lo(address)],%reg -> b target + b target -> ld/st [%g1+%lo(address)],%reg + nop -> ;; gone + + * jump.c (reverse_condition): make this function publicly visible, + now needed in expr.c. + + * output-sparc.c (reg_or_0_operand): new function, returns nonzero + if operand is const0_rtx or a register of specified mode. + (hardreg): deleted. + + * expr.c, stmt.c: fixed random syntax errors. + + * tree.c (build_method_type): now corresponds to defn in tree.def + expr.c (expand_call): removed code to get FUNCTION_TYPE from + METHOD_TYPE. This should probably be looked at harder. + + * tree.def (METHOD_TYPE): Changed definition so that TREE_TYPE (m) + (where m is a METHOD_TYPE) is the type of the return value of the + method, not the FUNCTION_TYPE from which the METHOD_TYPE is derived. + + * Makefile: Changed target of BINDIR from /usr/local to + /usr/local/bin. + +Sat Nov 26 16:29:22 1988 Michael Tiemann (mdt at chickasaw) + + * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Allow any SYMBOL_REF. + (NOTICE_UPDATE_CC): Remember high half of %g1 as a "condition code" + to avoid reloading it if it does not change. + (NOTICE_UPDATE_CC): Test SET_SRC, not SET_DEST, for a CALL rtx. + (PRINT_OPERAND): New code-letter `m' says output operand as an address. + + * toplev.c (flag_syntax_only): New flag variable. + * flags.h: Likewise. + + * toplev.c (error_with_decl): Extra arg, passed to fprintf. + (warning_with_decl): Likewise. + + * tree.c (build_offset_type): New function. + + * tree.h (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. + Uses in tree.c and... renamed. + + * combine.c (SUBST_INT): New macro, for replacing an int. + (subst): Collapse nested SUBREGs even if SUBREG_WORDs are not 0. + + * expr.c (bcc_gen_fctn, setcc_gen_fctn): new tables, + initialized in init_comparisons. + Used in expand_expr, do_jump, do_store_flag + instead of explicit construction of a jump. + + * expr.c (save_noncopied_parts): New function. + + * expr.c (expand_expr): + ARRAY_REF: Special case for array of constants. + WITH_CLEANUP_EXPR: Handle it. + INIT_EXPR: Case deleted. + MODIFY_EXPR: Use save_noncopied_parts. + + * expr.c (expand_call): blkmode_parms_forced can be >0 + even when no stack arg space otherwise needed. + Don't use a hard reg as a target if there are cleanups. + + * stmt.c (struct block): New elt. outer_cleanups. + (struct case): New elt. num_ranges. + (struct fixup): Changed meaning of cleanup_list_list. + Changes in expand_fixup, fixup_gotos. + (expand_fixup): Detect some internal forward-jumps + that need no fixups--for speed. + (fixup_gotos): New arg THISBLOCK. + (expand_expr_stmt): Handle flag_syntax_only. + (use_variable): No longer static. + (use_variable_after): new fn. + (expand_end_bindings): handle cleanups like a stack level. + (expand_decl): Handle a cleanup with no decl. + (move_cleanups_up): Preserve relative order of cleanups. + (expand_anon_union_decl): New fn. + (pushcase): New fast clause if no ranges yet. + (pushcase_range): Turned on. + (expand_function_start): New temp var `fntype'. + Set TREE_USED for a parm we are ignoring. + (expand_function_end): Really use the `filename' arg. + Use use_variable_after for SAVE_EXPR regs. + + * dbxout.c (dbxout_type): Handle OFFSET_TYPE. + + * gnulib.c (__builtin_new, etc.): Support for C++. + + * emit-rtl.c (next_insn, prev_insn): New fns. + +Sat Nov 26 16:29:22 1988 Richard Stallman (mdt at chickasaw) + + * tree.h (TREE_LANG_FLAG_[1234]): New attributes. + (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. + (TYPE_OFFSET_BASETYPE): New macro. + (NUM_TREE_CODE): New macro. + (TYPE_NONCOPIED_PARTS): new field in a type-node. + + * varasm.c (make_decl_rtl): Split out from assemble_variable. + (assemble_variable): No longer creates the rtl. + No longer handles policy of whether to output tentative decl yet. + (output_constant_def): Don't lose if wasn't temp allocation + when this was called. + (output_constant): Handle REFERENCE_EXPR. + + * Makefile (BISONFLAGS): new variable. + (prefix): New variable, used in bindir and libdir. + (C_OBJS, CPLUS_OBJS): New vars, split off from OBJS. + (LIBFUNCS): C++ support functions added. + (CPLUS_TREE_H): New variable. + (cc1plus): New target. + (lang_c, lang_cplus): Combines all targets for one language. + (gplus.info): New target. + (cplus-*.o): New targets. + (realclean): Handle new C++ files and recent renamings. + (install, TAGS): Likewise. + + * print-tree.c (prtypeinfo): Handle TREE_LANG_FLAG_[1-4]. + + * tm-sparc.h (ASM_OUTPUT_DOUBLE): Special case for infinity. + (ASM_OUTPUT_FLOAT): Likewise. + + * gcc.c: Don't define __GNU__. + For .cc files, pass -+ to cpp, and don't handle -ansi. + Use cc1plus as name of compiler for .cc files. + + * stor-layout.c (layout_type): abort if given a LANG_TYPE node. + (layout_union): Complain if union has basetypes or static members. + (layout_record): Handle anonymous union members. + + * tree.def (LANG_TYPE): New tree code for language-specific purposes. + (WITH_CLEANUP_EXPR): New tree code for expressions whose values + need to be cleaned up when they are deallocated. + (OP_IDENTIFIER): New tree code for certain C++ purposes. + + * toplev.c (rest_of_decl_compilation): Call make_var_rtl + before assemble_variable. + +Wed Nov 23 02:15:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * xm-sunos4.h: Rename included config files to xm-*. + * xm-*.h: Likewise. + + * fixincludes: Avoid altering args to names other than CTRL + that end in ...CTRL. + If a file isn't actually changed, delete the copy. + +Mon Nov 21 12:48:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (move_movables): Never move a reg w/ # > old_max_reg. + (strength_reduce): For nonreplaceable giv, put insn to load it + after the insn that used to compute it, in case the latter + is the last of a libcall sequence. + + * stmt.c (expand_function_end): If returning BLKmode, also copy + address where value is returned to the place that GDB will + expect to see it after the return. + + * c-parse.y (readescape): Warn about hex constant out of range + for a target integer. + (yylex): Warn about escape out of range for non-wide char or string. + Use a buffer of ints to read a wide string. + +Sat Nov 19 02:18:02 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * Version 1.31 released. + + * sparc.md: Change `K' to `I' in all constraints. + + * loop.c (gen_iv_mult): Handle TARGET==0. + + * c-decl.c (duplicate_decls): Undo last change. + + * c-decl.c (pushdecl): Instead of that change, + save old-decl's file/line before calling duplicate_decls, + and pass them later to warning_with_file_and_line. + * toplev.c (warning_with_file_and_line): New fn. + +Fri Nov 18 13:07:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (fixup_var_refs_1): (SUBREG (MEM)) was slipping through + in case where a SET was writing in the variable being fixed. + + * recog.c (register_operand, nonmemory_operand, memory_operand): + Changes to handle new var reload_completed: 1 means that + (SUBREG (MEM)) now counts as a mem-ref, since alter_subreg + will make it one. + * toplev.c (rest_of_compilation): Set and clear reload_completed. + + * sparc.md (call patterns): If TARGET_SUN_ASM, and address in reg, + output a jmpl rather than a call. + * tm-sun4os3.h: Like tm-sparc.h but turn on TARGET_SUN_ASM. + + * reload.c (push_reloads): Reinstate handling of reg_equiv_constant. + +Thu Nov 17 09:48:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (constraint_accepts_reg_p): Name changed from + constraint_all_regs_p; new arg is reg we are concerned with, + and condition tested takes some advantage of that reg. + + * gcc.c (main): Rename var `error' to `error_count' for name conflict. + + * emit-rtl.c (emit_note): Output line #s even if no debug info wanted. + (emit_line_note): New fn, does what emit_note did. + (emit_line_note_force): New name for emit_note_force. + * stmt.c, c-parse.y: Call emit_line_note instead of emit_note. + + * c-parse.y (maybe_type_qual): Call emit_note instead of emit_line_note + Now we can find the line # of every `asm' from the RTL. + * toplev.c (error_for_asm): New fn, gets line # by searching for NOTE. + * reload.c (find_reloads): Use error_for_asm. + * reload1.c (choose_reload_targets): Likewise. + * final.c (output_operand_lossage): Likewise. + Variable this_is_asm_operands is now current insn if it's nonzero. + + * loop.c (move_movables): When a reg is moved, update regno_first_uid + and regno_last_uid; say life span includes entire loop. + * Decrement THRESHOLD per reg moved, not per insn moved. + +Wed Nov 16 08:41:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib.c (___builtin_saveregs): New fn, for sparc. + + * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't recognize + SYMBOL_REFs, except for the constants pool. + But do recognize REG+REG and SMALLINT+REG. + * sparc.md: New patterns for fetching and storing memory + whose address is symbolic and not "legitimate". + + * sparc.md (movsi): Add `f' to op1 constraint. + New output clause for result in fp reg. + (Floating point fetch patterns): Output sethi insns. + (call_value, related patterns): value-register has `register_operand'. + + * output-sparc.c (hardreg): New function. + (COMPATIBLE): Clause added for n_regs == 2. + (single_insn_src_p): Return 0 for MEM whose address is absolute. + + * tm-genix.h (GO_IF_LEGITIMATE_ADDRESS subroutines): + Redefine, to exclude any possibility of SB-referencing addresses. + + * loop.c (strength_reduce): Can't eliminate a biv if used before + start of the loop. Used before is same as used after, if contained + in another loop. + + * recog.c (asm_noperands, decode_asm_operands): + Handle case of no outputs, but some clobbers. + * stmt.c (expand_asm_operands): Generate right stuff for that case. + + * tm-sun3.h (CPP_SPEC): Don't define __HAVE_68881__ if using fpa. + +Tue Nov 15 00:10:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (gen_iv_mult): Arg OP0 may not be a constant. + Pay attention to return value of expand_mult. + (eliminate_biv): Call changed. + + * output-m88k.c, output-sparc.c (output_move_double): + Fix typo `optype0' for `optype1'. + + * c-decl.c (duplicate_decls): Don't alter file, line of old decl. + + * c-parse.y (skip_white_space): Don't recognize comments; rely on cpp. + + * rtl.c (rtx_equal_p): Handle vectors. + + * loop.c (scan_loop): Change elts of n_times_set back to positive + for candidates that weren't moved, before doing strength reduction. + + * ns32k.md (movdi, movdf): Use `&' constraint for first operand. + + * reload1.c (reload): Initialize spill_indirect_ok here. + + * config-sun4.h: Recognize `-static' switch. + + * global-alloc.c (set_preference): Avoid using nonsense hard reg #s + that result from adding OFFSET. + + * sdbout.c (sdbout_end_function): Line # in .ef should be relative. + + * final.c (output_source_line): For SDB, don't output negative #s. + + * tm-encore.h (ASM_OUTPUT_LOCAL): Don't ignore SIZE arg. + +Mon Nov 14 11:03:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c: Don't declare refers_to_regno_p. + + * gcc.c (main): Warn if any input files are for the linker + but the linker is not being run. + + * jump.c (sets_cc0_p): Dumb bug fetching elts of a PARALLEL. + + * local-alloc.c: qty_birth, qty_death elements are now -1, not 0, + when the value is not known. + + * expmed.c (extract_bit_field): Bug computing xbitpos, xoffset + when changing units from bytes to words. + + * loop.c: Rename `times_used' field in `struct movable' to `savings'. + (scan_loop): When scanning the consecutive sets, for each libcall, + increment `savings'--leave `consec'. + When making movable for (SET (REG) 0) which is part of zero-extension, + set `savings' to 1 initially, since only 1 insn will be moved. + And don't let any other reg force that insn. + Reduce initial THRESHOLDs. + (move_movables): Don't add `consec' into `savings' + since the initial `savings' was proportional to `consec'. + Decrement THRESHOLD by 3 (not 2) for each move done. + + * reload1.c (choose_reload_targets): Strip subregs from OLD + before writing the output-reload move-insn. + + * reload1.c (reload): counted_for_groups and counted_for_nongroups + are now file-scope. Update them both when spilling. + (new_spill_reg): No need for counted_for_nongroups as arg. + (choose_reload_targets): Don't use for a group + any spill regs for which counted_for_nongroups is set. + + * dbxout.c (dbxout_symbol): Indirect-symbol case checked erroneously + for PARM_DECL. + +Sun Nov 13 08:13:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx): Don't alter MULT by -1 if arg mode != result mode. + + * loop.c (move_movables): If moving a CALL_INSN, make a new CALL_INSN. + * emit-rtl.c (emit_call_insn_before): New fn. + + * config-sun4.h (LINK_SPEC): Avoid shared libraries if -g. + + * expr.c (store_one_arg): Stabilize ARG->stack so it doesn't use SP + before computing the arg value. + + * combine.c (use_crosses_set_p): Moving a ref to stack ptr + is always forbidden if machine has push insns, since might cross one. + + * vax.md (movqi): Avoid out-of-range immed ops in mcomb. + + * expmed.c (extract_bit_field): Don't say `extzv' in the + clause for `extv'. + + * emit-rtl.c (copy_rtx_if_shared): Even if a MEM can be shared, + unshare its address from everything outside that MEM. + + * expr.c (expand_builtin): Fix omitted arg to `convert_to_mode'. + + * expr.c (store_expr): In case where will not return TARGET + and must do type conversion, don't fail to store into TARGET. + + * dbxout.c (FORCE_TEXT): New macro used before output `.stabs' + to go to the text section on targets that require it. + (DEBUG_SYMS_TEXT): Target macro which turns on that feature. + + * reload1.c (reload): Index in spill_regs was wrong + when checking counted_for_groups. + (choose_reload_targets): When calling find_equiv_reg looking for + a reload reg, reject all spill regs, even those not in use now. + + * tm-sun386.h, tm-sun386i.h, config-sun386i.h: New files. + + * cccp.c (main): Don't die if no output file arg given. + + * fixincludes: Tell `find' to find only ordinary files. + + * config.gcc: If symlink fails, make a hard link. + +Sat Nov 12 20:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (gnulib): Use cp to make the temporary .c files; + less likely to fail than ln. + +Sat Nov 5 12:46:39 1988 Randall Smith (randy at sugar-bombs.ai.mit.edu) + + * tm-m68k.h (HARD_REGNO_MODE_OK): Disallowed d7:a0 as an allowable + pair of registers to hold a double value. This is correct for the + fpa but incorrect for the 68881. It was, however, simpler than + defining a new regclass. + +Tue Oct 25 12:03:49 1988 Randall Smith (randy at gluteus.ai.mit.edu) + + * m68k.md: Added some thoughts (comments) on best method to allow + 68881 code with fpa code. + +Thu Oct 13 14:19:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.30 released. + + * stupid.c (stupid_life_analysis): Init last_call_suid with + largest possible value, not 0. + +Wed Oct 12 04:40:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-i386.c (output_asm_insn_double_reg_op): Compensate for + assembler bug that interchanges fsub and fsubr. + + * reload1.c (order_regs_for_reload): Undo 29 Sept change. + It breaks the 386. + + * varasm.c (decode_rtx_const): Don't example value->addr + if what was stored in was value->d. + + * toplev.c (set_float_handler): New fn, specify where to jump + on floating exception signal. + * fold-const.c (combine): Use that to handle overflow in arithmetic. + + * c-decl.c (grokdeclarator): Don't clear CONSTP, VOLATILEP + when making an array type. + + * dbxout.c (dbxout_symbol): Ignore VAR_DECLs in memory whose + addresses we can't represent. + + * fold-const.c (fold): don't convert >= to > if both args are constant. + When converting >= to >, don't fail to change CODE. + +Tue Oct 11 04:13:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * vax.md (movhi): Error in truncating mcomw, addh3 args to 16 bits. + + * final.c: Better error checking for %-specs in templates. + (output_operand_lossage): new fn to report errors. + (insn_noperands): new var: # operands in current fn. + (this_insn_asm_operands): new var: 1 for `asm', 0 otherwise. + (output_asm_insn): Check for operand # out of range. + (output_asm_label, output_operand): Call new fn to report errors. + + * reload.c (push_reloads): An input reload for (REG N) can match one + for (POST_INC (REG N)) or (PRE_INC (REG N)), since the value + reloaded is the same in any case. + +Mon Oct 10 06:19:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (next_insns_test_no_inequality): Like next_insn_tests... + but check all insns that follow this one and can use it's cc's. + * output-m68k.c (output_btst): Use that. + + * vax.md (movsf, movdf): Undo last change; movq/movl set the cc wrong. + + * expr.c (expand_call): Set current_function_calls_setjmp if appro. + * stmt.c (setjmp_protect): New fn: move all vars into stack + unless declared `register'. + * c-decl.c (finish_function): Call it if -traditional and setjmp used. + + * cccp.c (main): Open output after the input. + Handle `-o -'. + +Sun Oct 9 00:28:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sun3.h (CPP_SPEC): Define __HAVE_FPA__ if appropriate. + + * c-decl.c (pushdecl): After duplicate_decls, maybe warn about + "declared extern and later static". + + * expmed.c (store_bit_field): In insv case, avoid turning + VALUE into a subreg of a subreg. + + * loop.c (move_movables): When moving a libcall, + un-cse the function address; put it into the call insn. + +Sat Oct 8 01:48:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (equiv_constant): Subroutine to find the constant equivalent + of a reg. Now handles SUBREGs too. + (fold_rtx, fold_cc0): Use that function. + Don't handle SUBREGs like arithmetic. + + * reload1.c (choose_reload_targets): Don't call reg_overlap_mentioned_p + if arg is 0. + +Fri Oct 7 01:00:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * assert.h: Typo declaring __eprintf. + + * config.gcc: New file for making the links. + Fixed bugs for sun-[23]-os4. Added sun-[234] for sunos 3. + Added sequent-i386. + + * emit-rtl.c (gen_rtx): Return const0_rtx for 0 in DImode. + * varasm.c (immed_double_const): Don't be confused by this. + + * expmed.c (negate_rtx): New 1st arg MODE. + * expr.c (push_block): Calls changed. + * m68k.md, ns32k.md, vax.md: Calls changed. + + * c-decl.c (duplicate_decls): Don't discard DECL_BLOCK_SYMTAB_ADDRESS. + + * tree.c (staticp): INDIRECT_REF with constant address is static. + COMPONENT_REF may not be, if component offset isn't constant. + + * c-typeck.c (default_conversion): Converting array to ptr, if array + isn't a VAR_DECL, go through build_unary_op so that COMPONENT_REFs + will be simplified away. + + * ns32k.md (tbitd patterns): op 0 constraint: reject constants. + * ns32k.md (extzv for SImode and HImode): + Use adj_offsetable_operand; plus_constant was the wrong thing. + +Thu Oct 6 00:10:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.29 released. + + * loop.c (scan_loop): Don't think a `return' insn enters the loop. + + * ns32k.md (ashrsi3, etc): New define_expands for right shift. + + * reload1.c (choose_reload_targets): Change in the `force_group' + logic to avoid crashes. + +Wed Oct 5 04:09:19 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * expr.c (expand_expr, MINUS_EXPR): When negating integer op1, + truncate it to its mode. + + * expmed.c (extract_bit_field): SUBREG error check was wrong; + SImode SUBREGs are possible and ok in extzv, extv. + + * tm-ns32k.h (REGISTER_NAMES): Had two excess elements; deleted. + +Mon Oct 3 01:15:51 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * toplev.c (main, compile_file): If no files spec'd, use stdin, stdout. + + * flow.c (propagate_block): When checking for stack-adjust insns, + exclude non-SET patterns. + + * jump.c (jump_optimize): When changing jump=>return to return, + must rerecognize the insn. + + * toplev.c (compile_file): Allow `-' for main input or output filename. + +Sun Oct 2 10:30:09 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * final.c (final): NOTICE_UPDATE_CC has extra arg, INSN. + * tm-*.h: Change definitions. + + * stmt.c (optimize_bit_field): Use gen_lowpart to make subregs. + + * stmt.c (assign_parms): Don't obey regdecls in inline function. + Don't lose existing REG_NOTES when adding one. + + * stmt.c (expand_function_start): Make return rtx before + marking parms live. + (expand_function_end): Use use_variable to emit USEs for SAVE_EXPRs. + + * stmt.c (expand_return): Handle TRUTH_AND_EXPR like ANDIF; OR also. + + * stmt.c (expand_end_stmt_expr): Always set TREE_VOLATILE, + sometimes TREE_THIS_VOLATILE. + + * jump.c (delete_insn): When finding PREV, skip deleted insns. + + * varasm.c (output_constant): WORDS_BIG_ENDIAN test was backwards. + + * emit-rtl.c (gen_lowpart): Allow MODE > 1 word if X is same size. + + * final.c (final): Don't delete no-op moves (jump did it if appro.). + + * final.c: Support prescan pass. + (final_start_function): init_recog and CC_STATUS_INIT mvd to `final'. + (final): New arg PRESCAN. Do no output if prescanning. + Don't alter conditionals if PRESCAN < 0 (prescan already done). + If jump becomes no-op, change it to a NOTE. + Remember to free the temp space for ASM_OPERANDS. + + * final.c (final): Altering store-flag must check STORE_FLAG_VALUE. + Don't try to do it if that isn't defined. + Don't try it if condition doesn't test CC0. + (alter_cond): No need to check COND != 0. + Handle CC_Z_IN_NOT_N and CC_Z_IN_N. + (m68k.md): Delete code that handled CC_Z_IN_NOT_N. + + * conditions.h: New flag CC_Z_IN_N. + * tm-*.h: Renumber all CC_... flags to make room. + + * combine.c (use_crosses_set_p): Loop start was 1 off. + + * local-alloc.c (reg_is_set): When a reg is CLOBBERed and dies in + one insn, make it live immediately before and after that insn. + + * global-alloc.c: Hard reg preferences for global pseudos. + Var allocno_preferred_reg deleted; new vars hard_reg_preferences + and regs_someone_prefers. + (global_alloc): Init those vars. Pass hard_reg_preferences elt + to find_reg. + (set_preference): New function makes entries in those vars. + (global_conflicts): new arg to mark_reg_store. Call set_preference. + (find_reg): Last arg now a preferred hard_reg_set. + Scan that set first of all. + (mark_reg_store): New arg is offset for renumbered regno. + But the code to use it is turned off. + + * global_alloc (check_frame_pointer_required): Handle reg_equiv_address + like reg_equiv_mem. Don't try to allocate pseudos with equiv mems + that don't use the frame pointer. + * reload1.c (reload): Call changed. + + * jump.c (sets_cc0_p): Tests whether rtx sets cc0, and whether + it does nothing but set cc0. + (find_cross_jump, delete_jump): Use that fn for these tests. + * loop.c (loop_skip_over): Likewise. + * reload.c (push_reload): Likewise. + + * genoutput.c: Output `const' before the data arrays. + Define it as nothing if not __STDC__. + +Sat Oct 1 02:19:29 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * expr.c (store_one_arg): 3rd arg to emit_block_move is in bytes. + + * cse.c (fold_rtx): Handling ZERO_EXTEND or SIGN_EXTEND of constant, + if the arg width is too wide to handle, return safely. + + * combine.c (FAKE_EXTEND_SAFE_P): Don't allow extend to > 1 word. + + * rtl.c (refers_to_regno_p): Moved from reload.c. Not static. + (reg_overlap_mentioned_p): New function, calls the above. + * output-*.c: Use that instead of reg_mentioned_p. + * tm-*.h (NOTICE_UPDATE_CC): Likewise. + * reload.c (push_reload, combine_reloads): Likewise. + * reload1.c (choose_reload_targets): Use it to check earlyclobbers. + + * reload1.c (choose_reload_targets): Elimination of previous + output-reload feeding our input now limited to pseudo-regs. + + * flow.c (life_analysis): Delete any insn copying reg to itself. + (propagate_block): Move update of OLD after special life and death + for CALL_INSNs. + + * vax.md (ashrsi3, ashrdi3, rotrsi3): define_expands to negate + the shift count. + * expmed.c (expand_shift): Eliminate negate-the-shift-count feature. + + * vax.md (and*i3): define_expands which use complement and bit-clear. + * expmed.c (expand_bit_and): Eliminate feature to do that. + This function could be eliminated. + + * expmed.c (store_bit_field): Handle nested subregs. + Allow gen_insv to fail; if it does, delete what we did and then + use store_fixed_bit_field. + (store_fixed_bit_field): Use gen_lowpart to make SUBREGs. + Do that for SUBREGs just as for REGs. + Error check OFFSET must be 0 for REGs. + (store_split_bit_field): Error check OP0 is a SUBREG when expected. + (extract_bit_field): Allow gen_ext{,z}v to fail. + Use gen_lowpart to make subregs. + (expand_shift): If a try fails, delete any insns it made. + + * expmed.c (expand_mult): Use expand_unop to negate. + When adding 2 powers of 2, do serial shifts, not parallel. + Handle absval==1 like other powers of 2. + + * explow.c (force_reg): Don't lose any existing reg notes. + + * stmt.c (expand_start_stmt_expr): Eliminate return value. + (expand_end_stmt_expr): No need for argument. + * c-parse.y (primary): Change calls. + +Fri Sep 30 01:50:22 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * integrate.c (copy_rtx_and_substitute, copy_address): + 'u' case erroneously returned the translated single element. + (copy_address): Special cases for frame-ptr and sums containing it. + MEM and LABEL_REF cases passed wrong arg to copy_rtx_and_substitute. + (copy_rtx_and_substitute): adjust mode of inline_target for context. + + * jump.c (true_regnum): For SUBREG of pseudo, use pseudo's # unchanged. + +Thu Sep 29 02:50:46 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * i386.md (movsi, mov{q,h}i): Use find_reg_note to look for REG_WAS_0. + * vax.md (movsi, movhi): Likewise. + + * varasm.c (decode_rtx_const): Was setting un.addr.base wrong + for a CONST. Should be symbol name, not the SYMBOL_REF. + + * rtl.c (rtx_equal_p): When comparing registers, check + REG_FUNCTION_VALUE_P. If there are `u'-slots in the rtx, ignore them. + + * rtl.c (reg_mentioned_p): Some rtx types were mistakenly treated + as uniquified (various constants). + + * rtl.c (read_rtx): Element type 'S' is string that may be omitted. + * rtl.def (define_insn, define_peephole): Add a last element, type 'S'. + * genoutput.c: Collect these optional last elements and output as + array `insn_machine_info' of structs `INSN_MACHINE_INFO'. + The last must be defined as a macro. + * recog.h (insn_machine_info): Declare it if appropriate. + + * regclass.c (record_address_regs): In PLUS case, look inside SUBREGs. + + * reload1.c (reload): Use reg_equiv_address for REG_EQUIVs with + invalid memory addresses. + When changing pseudos to mem refs at end, do FIX_FRAME_POINTER_ADDRESS + on their addresses. + (alter_reg): Check that with reg_equiv_mem. + (spill_hard_reg): If fp reg, spill regardless of basic_block_needs. + + * reload1.c (order_regs_for_reload): Don't put invalid regs into + potential_reload_regs at all. (They used to go at the end.) + + * reload.c (find_reloads): Store all earlyclobber operand in + reload_earlyclobbers (# in n_earlyclobbers): + * reload1.c (choose_reload_targets): Don't use value of find_equiv_reg + if it matches an earlyclobber operand. + + * reload.c (find_reloads_address for REG): + No need for explicitly excluding hard regs in these tests. + (find_reloads, find_reloads_address_1 for REG): likewise. + + * reload.c (push_reload): Code testing reg_equiv_constant should + be obsolete; add error check to verify this. + + * reload.c (hard_reg_set_here_p): Handle CLOBBERs, SUBREGs, overlap. + (refers_to_regno_p): Handle CLOBBERS. Handle overlap. + New arg ENDREGNO specs end of range to check for; + all callers changed (all in this file). + + * reload.c (find_reloads): SUBREG like REG in alternate recovery + for earlyclobber conflict. + The operands to unswap are those that are supposed to commute. + When operands match, copy the regclass of earlier one for later one. + + * stmt.c (optimize_bit_field): Don't use gen_extend_insn; + use convert_move, then reorder the insns. + * optabs.c (gen_extend_insn): Deleted. + + * optabs.c (emit_cmp_insn): Don't emit queue before recursion. + Don't convert size to SImode for cmpstrqi. + + * optabs.c (expand_binop): Keep any old REG_NOTES when adding them. + Always delete_insns_since if returning failure. + (expand_unop, emit_unop_insn): Keep any old REG_NOTES when adding them. + * spur.md (movhi): likewise. + + * RTL_EXPR_SEQUENCE is now a chain of insns, not a SEQUENCE. + * emit-rtl.c (emit_insns): New fn, emit a chain of insns. + * expr.c (expand_expr): Use that. + Also put const0_rtx in the RTL_EXPR_SEQUENCE (mark RTL_EXPR as output). + * stmt.c (expand_end_stmt_expr): Use get_insns to get the chain. + + * stmt.c (expand_end_stmt_expr): Put the RTL_EXPR on rtl_expr_chain. + (fixup_var_refs): Scan all waiting RTL_EXPRs not yet output. + Also scan all stacked sequences on sequence_stack. + + * genemit.c (gen_expand): Generate calls to {start,end}_sequence. + Use `emit' to handle a PARALLEL. + (FAIL, DONE): Change to fit gen_expand changes. + + * emit-rtl.c (change_address): abort if arg isn't a MEM. + + * emit-rtl.c: Sequences work now by saving and restoring first_insn + and last_insn. So these variables are used even when in a sequence. + emit_to_sequence has been deleted. + (start_sequence, end_sequence): Save and restore first_insn, last_insn. + (get_last_insn, add_insn): Sequences no longer need special treatment. + (delete_insns_since, reorder_insns): likewise. + (push_to_sequence): Set up to emit to a given existing insn chain. + + * emit-rtl.c (copy_rtx_if_shared): Don't copy INSNs. + Insert missing return stmt in MEM case (for MEMs ok to share). + (unshare_all_rtx): Now can copy the REG_NOTES simply. + Copy the LOG_LINKS too. + + * emit-rtl.c (make_safe_from): Treat SUBREG as X like a REG. + (delete_insns_since): Don't lose if FROM is the first insn. + (emit): Declare void, since no useful value. + Call simplejump_p properly. + (restore_reg_data_1): When a reg is an address, do mark_reg_pointer. + + * dbxout.c (dbxout_types): Call dbxout_symbol to do the work. + (dbxout_type_def): Deleted. + (dbxout_symbol): Set TREE_ASM_WRITTEN when a TYPE_DECL is output. + Don't output the same one twice. + + * cse.c (fold_cc0): LABEL_REF is not zero. + + * cse.c (cse_insn): Don't insert src, dest if they are the same place. + + * cse.c (lookup_as_function): Return entire rtx, not just operand. + (cse_insn): Caller changed. Also, copy the result before inserting it. + + * cse.c (fold_rtx): Put constant arg last if commutative op. + Handle idempotents and identities for mult, div, booleans, shifts. + + * cse.c (canon_hash): Parens were missing around shifts in "rotates". + + * c-convert.c (convert_to_integer): Truncate TRUTH_ANDIF_EXPR + like TRUTH_AND_EXPR; OR also. + + * c-typeck.c (build_binary_op_nodefault): Do truthvalue_conversion + for TRUTH_ANDIF, etc. + (build_unary_op): More simplifications for TRUTH_NOT_EXPR; + uses new fn `invert_truthvalue'. + + * recog.c (reg_fits_class_p): New name for reg_renumbered_fits_class_p + since it no longer needs to renumber. Also it now really assumes + arg is a REG. Callers changed. + * reload.c: Callers changed. + + * recog.c (general_operand): (SUBREG (MEM...)) need not alter mode. + (register_operand, nonmemory_operand): (SUBREG (MEM...)) is allowed. + (memory_operand): (SUBREG (MEM...)) is *not* allowed. + (mode_independent_operand): Operand names were backwards! + (No change in effect of this function.) + + * print-tree.c (dump): Some expr nodes contain rtx's. Print as rtx's. + +Wed Sep 28 18:51:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_targets): If a reload wanted a group, + don't allow a single register for it. + +Tue Sep 27 11:43:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (output_addr_const): Handle DImode CONST_DOUBLEs. + * tm-*.h (PRINT_OPERAND): Treat DImode CONST_DOUBLE like a CONST_INT. + + * vax.md (rotldi3): Insn deleted; it doesn't really exist. + + * toplev.c (report_error_function): Also mention the file name, + for parallel makes. New arg FILE; all callers changed. + +Mon Sep 26 15:44:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (expand_shift): When using extzv, convert OP1 to SImode. + * c-typeck.c (build_binary_op_nodefault): Convert shift-count + to int regardless of result type. + + * output-spur.c (output_move_double): Fix typo, optype0=>optype1. + + * expr.c (expand_call): Avoid null deref on result of FUNCTION_ARG. + + * tm-i386.h (FUNCTION_PROFILER): Use correct assembler syntax. + +Sun Sep 25 12:13:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Handle some files in netdnet, netdna, vaxif, vaxuba. + + * reload.c (find_reloads): Make no optional reloads if not -O. + + * loop.c (strength_reduce): Can't eliminate a biv if it's used + to compute a DEST_ADDR giv. Only DEST_REG givs are safe. + + * loop.c (general_induction_var): Shift & divide ops are linear + only in 1st operand; don't look for biv or giv in 2nd operand. + + * vax.md (fix_truncdfqi2): Use `%#'. + +Sat Sep 24 00:25:48 1988 Richard Stallman (rms at gluteus.ai.mit.edu) + + * loop.c (n_times_set, n_times_used): Now file-scope; + no longer passed as args to several functions. + + * loop.c (basic_induction_var): Accept reg as source value + only if it's invariant. + (strength_reduce): Benefit calculation and threshold changed. + Check reducibility of givs before trying to reduce them. + Check eliminability of biv before considering the givs; + let this affect the threshold. + (record_giv): New subroutine adds a giv to the chain. + + * ns32k.md (incrementing sp): Use cmpd insns to increment by 4 or 8. + + * integrate.c (expand_inline_function): Rename return_label + to local_return_label; avoid shadowing. + +Fri Sep 23 13:57:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (loop_skip_over): Put the new label after the note that ends + the loop. + + * loop.c: New function strength_reduce and subroutines. + * toplev.c: New var flag_strength_reduce, set from -fstrength-reduce. + + * vax.md (sob insns): They were broken, with plus in one place + and minus in another. Use plus consistently. + + * rtl.h (REG_LIBCALL, REG_NONNEG): Two new kinds of reg-note. + * optabs.c (expand_binop, expand_unop): Make REG_LIBCALL notes. + * loop.c (scan_loop, move_movables): Move entire library calls. + Use m->set_src to get the expression, in case it's from a REG_EQUAL. + (consec_sets_invariant_p): Likewise. + + * loop.c (scan_loop): Start scan from loop_top, if entry is rearranged. + Watch out for pseudo regs created by strength_reduce; + they can't index regno_last_uid. + (replace_regs): # regs mapped is now an arg. + + * loop.c (count_loop_regs_set): Don't increment n_times_set past 127. + (consec_sets_invariant_p): Reject if N_SETS arg is 127. + + * toplev.c (rest_of_compilation): NREGS arg of loop_optimize deleted. + + * c-decl.c (store_parm_decls): Anything but an IDENTIFIER_NODE + in SPECPARMS indicates a parmlist, not an identifier list. + (get_parm_info): Use only PARM_DECLs when making the list of arg types. + + * combine.c (try_distrib): Boolean ops can't distribute through PLUS. + MULT can distribute through PLUS and only PLUS. + +Thu Sep 22 15:57:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): uncond jump to a return becomes a return. + + * integrate.c (copy_parm_decls, copy_decl_tree): Set TREE_USED. + Avoid inevitable "unused" warning for these decls. + + * c-typeck.c (comptypes): When comparing array types, + ignore qualifiers of element type. + + * tm-*.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Define new macros. + * final.c (final_start_function): Use them to protect around + the call to the profiling function. + * stmt.c (expand_function_start): Set current_function_needs_context + and current_function_returns_struct. + + * stmt.c (expand_null_return_1): If clear_pending_stack_adjust + doesn't clear it, do the adjust now. + * expr.c (clear_pending_stack_adjust): No-op if -finline-functions. + + * cccp.c (macarg1, skip_if_group): Backslash makes next char ordinary. + + * reload.c (find_reloads): Delete code to look for an equiv reg + for a reg being input-reloaded. This isn't safe. + * reload1.c (choose_reload_targets): Do it here. + +Wed Sep 21 00:36:22 1988 Richard Stallman (rms at hobbes.ai.mit.edu) + + * tm-sun3.h (CPP_SPEC): Define it based on TARGET_DEFAULT. + (STARTFILE_SPEC): Likewise. + + * reload1.c (choose_reload_targets): When redirecting prev insn + into this insn's reload-reg, check this doesn't break the prev insn + by giving it a reg it can't accept. Use new fn constraint_all_regs_p. + + * tm-sparc.h (ASM_OUTPUT_LOCAL): Use .reserve, not .common. + + * tree.h (TREE_USED): New attribute macro. + * c-parse.y (primary): Set TREE_USED in ..._DECL nodes. + * toplev.c, flags.h: Define and set warn_unused. + * stmt.c (expand_end_bindings): Warn if any var is unused. + * print-tree.c (prtypeinfo): Print this attribute. + +Tue Sep 20 15:29:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * assert.h: `assert' must expand to an expression. + Error message should show arg before expansion, not after. + + * c-decl.c (implicitly_declare): Make decl perm if !warn_implicit + since start_function needs to look inside it in that case. + + * toplev.c (announce_function): If we don't print, don't record we did. + +Mon Sep 19 15:21:11 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (structsp): If pedantic, warn if comma at end of enumlist. + + * reload.c (find_reloads): Check insn_code_number >= 0 when + looking in insn_operand_strict_low. + + * tm-sun[23].h (CPP_SPEC): Rename __HAVE_FPU__ to __HAVE_68881__ + and put a space after that option. + +Sun Sep 18 01:12:56 1988 Richard Stallman (rms at hobbes.ai.mit.edu) + + * reload.c (find_reloads): Make optional reloads for explicit MEMs. + + * tm-m68k.h (MODES_TIEABLE_P): If no 68881, can tie fixed to floating. + * m68k.md (movdi): Allow F's (can be DImode now). + Don't allow f-regs (experiment). Don't preference x-regs. + (DImode push): Allow y-regs. + (DFmode push): Allow y-regs, not x-regs. + + * reload1.c (modes_equiv_for_class_p): New function. + (reload): Compare multiple modes for reg group with that function. + Allows differing modes in some cases when not tieable. + + * c-parse.y (check_newline): Let ASM_OUTPUT_IDENT override .ident. + * tm-3b1.h (ASM_OUTPUT_IDENT): Define this as no-op. + + * emit-rtl.c (reorder_insns): Update sequence_{first,last}_insn if nec. + (get_last_insn): If in a sequence, return last insn of sequence. + (delete_insns_since): If in a sequence, set sequence_last_insn. + + * spur.md (CONST_DOUBLE load insn): Use & for most dests. + (cond branches): pass additional args to output_compare. + (movdf, movdi): Use & loading reg from mem. + (trunc*): Enable these. + (add): New pattern for adding large immediate operand. + (shifts): A define_expand for each kind of shift, + plus a recognizer which outputs repeated insns if necessary. + (call*): Use r9 as temp, not r2. + + * output-spur.c (output_compare): New args NEG_{EXCHANGE_,}OPCODE. + (singlemove_string): Handle reg as operand 1. + (output_add_large_offset): Fake add insn with large immediate arg. + (big_immediate_operand): Match such an arg. + + * tm-spur.h (FUNCTION_PROLOGUE): Align the stack pointer. + Handle bigger frames. + (TARGET_LONG_JUMP, TARGET_EXPAND_SHIFT): New target flags. + + * va-spur.h: Track position in regs and stack separately. + + * c-decl.c (duplicate_decls): Warn if prototype follows + non-prototype definition. + +Sat Sep 17 14:30:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_builtin): Avoid crash if arg isn't integer type. + + * c-decl.c (duplicate_decls): Just warn if redeclaring a builtin, + and leave it built in unless it is redefined. + + * vax.md (ashlsi3): Use addl3, moval or movad when useful. + (addsi3): Avoid pushab, movab for constants < 64. + Do use movab when > 64 when operands match. + (mov*i): Use mcom* rather than mneg*. + Use add*3 with two quick immediate args when useful. + (movhi): Don't use movzbw or cvtbw; said to be slow. + + * rtl.h: New macros MEM_VOLATILE_P, MEM_IN_STRUCT_P, + INSN_DELETED_P, REG_USER_VAR_P, RTX_UNCHANGING_P, RTX_INTEGRATED_P, + CONSTANT_POOL_ADDRESS_P. + Most places changed to use them. + +Fri Sep 16 11:50:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Was testing volatil on non-MEMs erroneously + when looking for no-op move insns. + + * cccp.c (handle_directive): Ignore comments between # and directive. + + * integrate.c (copy_rtx_and_substitute): Stack-push memrefs need + to be copied. + + * tm-bsd386.h (ASM_OUTPUT_DOUBLE): Undef previous def. + + * reload1.c (alter_reg): Don't reuse spill_stack_slot + if it isn't big enough for this reg's mode. + + * expr.c (emit_move_insn): After force_const_mem, ensure + mem address is valid. + (move_block_to_reg, move_block_from_reg): Likewise. + + * expr.c (expand_call): Spurious TREE_VALUE on args[i].tree_value. + + * m68k.md (zero_extend*): Require register_operand for operand 0. + + * stdarg.h (va_start): Alternate defn for sparc. + +Thu Sep 15 11:39:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex): When atof gives ERANGE, check for "0.0", etc. + + * assert.h (__assert): Alternative definition for -traditional. + + * output-sparc.c (output_block_move): Initialize xoperands. + + * combine.c (try_combine): Never subst for a reg that is incremented. + + * m68k.md (cmpm pattern): Make the match_operands match memrefs + and check that they are pushes in the extra condition. + This makes reloading handle the pushes properly. + + * expr.c (MOVE_RATIO): Make it 15. Allow overriding it. + +Wed Sep 14 09:50:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (build_enumerator): Use saveable_tree_cons. + + * vax.md (movdf): Use movq when safe. + + * Version 1.28 released. + + * tm-sparc.h (FIRST_PARM_CALLER_OFFSET): Defined. + +Tue Sep 13 00:11:37 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * tree.c (saveable_tree_cons): New function. + * c-decl.c (pushtag): Use it; lists of tags needed for inlining. + (get_parm_info): Likewise. + + * print-tree.c (dump): Handle each kind of statement node individually. + + * integrate.c (copy_decl_tree): Don't pass DECL_RTL through + copy_rtx_and_substitute if it's a memref with constant address. + + * sdbout.c (sdbout_symbol): Don't output garbage when DECL_RTL + has a form we don't understand. + + * reload.c (find_reloads_address_1): Don't reload an autoincrement + if it has a suitable hard reg already. + + * c-typeck.c (process_init_constructor): Error check after digest_init. + + * c-parse.y (is_reserved_word): Now static. + +Mon Sep 12 19:19:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (all push insns): Use `<' for the constraint, + since a push_operand won't fit an `m' constraint on this machine. + + * expr.c (expand_call): If fn name is `__builtin_alloca', + it may be alloca. This case arises if the user redeclares + `__builtin_alloca'. + +Sun Sep 11 01:47:01 1988 Richard Stallman (rms at gluteus.ai.mit.edu) + + * Eliminate MAX_SETS_PER_INSN. + * cse.c (cse_insn): Combine all the tables and dynamically allocate. + (cse_main): Count the actual number of SETs; don't estimate. + * genconfig.c: Don't calculate MAX_SETS_PER_INSN. + * stmt.c (expand_asm_operands): No limit on # of output operands. + + * expr.c (expand_call): + Store all non-reg parms first, then store all partially-in-reg + parms, then all the (precomputed) wholly-in-reg parms. + Special hair for BLKmode parms which must be passed entirely + in memory; also for BLKmode parms initialized from function calls, + for which it is best to allocate the space before computing value. + Use macro FIRST_PARM_CALLER_OFFSET to handle machines where reg + parms "take up space" on the stack below the stack pointer. + (store_one_arg): Handle case of preallocated stack loc for BLKmode. + Update current_args_size here, not in caller. + +Sat Sep 10 19:58:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_scc_insn): Changed asm templates. + Use common code to emit the move insns and label at the end of fn. + (output_mul_by_constant): Use %g1 as temporary reg. + + * sparc.md (indexed load pattern): Deleted. + (fix_truncdfsi2): Don't ignore value of output_fp_move_double. + (cse'd multiply): Operand 1 predicate is general_operand. + (return peepholes): Conditionalize on ! TARGET_EPILOGUE. + + * tm-sparc.h (INIT_CUMULATIVE_ARGS,FUNCTION_ARG...): + Use partial regs for args that start in regs but won't entirely fit. + + * tm-sparc.h (CONST_COSTS): 0 for args that can be immediate. + (STRUCTURE_SIZE_BOUNDARY): Now 8. + (STRUCT_VALUE_OFFSET): Defined as symbolic name for `64'. + + * expr.c (struct arg_data): New component `stack' says where in the + stack to put a BLKmode arg (if it's nonzero). + (store_one_arg): Handle case where it's nonzero. + (target_for_arg): New fn, precompute stack locn for BLKmode arg. + +Fri Sep 9 01:41:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * cse.c (fold_rtx): Misnested ifs screwed SUBREG case. + + * reload.c (find_reloads_toplev): Special case for (SUBREG REG) + where REG is equivalent to a CONST_INT. + (find_reloads): Don't ignore the value returned by find_reloads_toplev. + Treat a (SUBREG constant) like a (SUBREG MEM): set force_reload. + + * reload.c (push_reload): Abort if memory subreg is not + paradoxical; the MEM mode should be narrower than the SUBREG. + + * stmt.c (fixup_var_ref_1): Fixup memory subregs in an insn + copying VAR to or from a register. + + * m68k.md (movdi, movdf): the x-reg constraint accidentally allowed + moving rm to rm with no &. + + * vax.md (call_value): Typo. + + * expr.c (emit_block_move, emit_push_insn): prefer movstrqi to movstrsi + + * m68k.md (FPA multiply): bad opcodes for 3-operand multiply insns. + +Thu Sep 8 18:22:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y: Use YYERROR instead of synonym YYFAIL. + BISON VERSIONS PRIOR TO THIS DATE WON'T WORK! + + * c-typeck.c (digest_init): Use TYPE_MAIN_VARIANT of array elt type. + + * tm-sun[23].h (CPP_SPEC, ASM_SPEC): Let -m(c|)680[12]0 control + options for CPP and assembler. + +Wed Sep 7 13:44:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * New handling of reloading of PRE_DEC, etc. + Now reload_in is the PRE_DEC, etc, and reload_inc is always positive. + * reload.c (push_reloads): Old code to set reload_inc deleted. + (find_reloads_address_1): Call push_reload the new way. + (find_inc_amount): Value always positive. + * reload1.c (choose_reload_targets): Detect this case. + (inc_for_reload): New fn; does the real work for this case. + * m68k.md (call, call_value): Fn address must be offsetable. + + * combine.c (try_distrib): Reject strange cases such as if + result of PREV1 or PREV2 is used in a memory address in INSN. + + * vax.md (movsf): Generate movl instead of movf. + + * expr.c (expand_call): If have regparms, store all BLKmode args + before all the other args. + (store_one_arg): New subroutine broken out. + + * output-sparc.c (output_block_move): Complete rewrite. + + * sparc.md (cse'd multiply insn): Typo in asm-output code. + +Tue Sep 6 20:05:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex, etc.) Install Schmidt's perfect hash table. + + * gcc.c: handle extension `.cc'. + +Mon Sep 5 12:09:58 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.27 released. + + * tm-i386.h (PREFERRED_RELOAD_REG): When reloading a QImode, + make sure the class doesn't include %esi or %edi. + * i386.md (movqi): Eliminate only use of the class `x', + for which PREFERRED_RELOAD_REG cannot work. + (In next version, get rid of INDEX_CLASS). + Also use `*' to cause preferencing of Q_REGS. + * tm-m68k.h (PREFERRED_RELOAD_REG): When reloading a QImode, + use DATA_REGS. + + * reload.c (push_reloads): Braino in last change when IN == 0. + + * flow.c (mark_used_regs, mark_set_1): Bug if HARD_REGNO_NREGS + returns 0 for VOIDmode reg (inside a CLOBBER). + + * c-parse.y (asm_operand): Handle `("REGNAME")' as an operand. + * recog.c (decode_asm_operands, asm_noperands): Ignore any CLOBBERs. + * regclass.c (reg_names): Variable now global. + * stmt.c (expand_asm_operands): Generate CLOBBERS when appropriate. + + * stmt.c (assign_parms): Ignore parms that aren't PARM_DECLs. + + * varasm.c (assemble_variable): Do ASM_OUTPUT_EXTERNAL for functions. + + * c-parse.y (yylex): floatflag is now an enum. + Detect invalid use of decimal points (> 1, or in exponent) + and multiple exponent letters. + + * expr.c (expand_call): If inlining fails, set TREE_ADDRESSABLE. + +Sun Sep 4 00:36:30 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * c-decl.c (grokdeclarator): A const array becomes an array of consts. + * c-typeck.c (build_array_ref): Array ref is const if array elts are. + + * output-sparc.c (output_move_double): Change criteria for ldd, std. + (output_fp_move_double): New alternatives avoid ldd, std for + stack refs that aren't aligned. + (output_block_move): Use %g1 as temp reg. + + * sparc.md (floating point load from constant mem address): + Use %g1 as temp reg. Use output_move_double in DF case, not ldd. + (movsf): Asm insn typo in FPreg to FPreg case. + (floatsi{s,d}f2): Constraint changed. + Also new special case pattern in front of it. + (fix_truncdfsi2): Use output_move_double, not ldd. + (addsi3, subsi3): Use %g1 as temp reg. + (cse-optimized multiply): Constraint now `g'; output generalized. + (andsi3, orsi3, xorsi3): Use %g1 as temp reg. + + * reload.c (find_reloads): Force int constants into memory just + like floating ones, if memory is allowed and no regs are. + + * expr.c (expand_call): Don't treat structure_value_addr like a parm + if the first parm would be passed in a register. + Also, write comments for all local vars. + + * tm-386v.h (START_SPEC): Use {g,m}crt1.o, not {g,m}crt0.o. + (LIB_SPEC): Always use crtn.o. + +Sat Sep 3 13:05:50 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * explow.c (plus_constant): Don't put CONST around lone SYMBOL_REF. + + * combine.c (subst): Simplify zero- or sign-extend of a constant. + + * expr.c (expand_expr): for REAL_CST, etc., check for invalid + memory addresses and copy into registers. + + * integrate.c (expand_inline_function): If incoming struct value addr + is in memory, map it like a memory parameter. + + * tm-*.h (FIRST_PARM_OFFSET): Now takes fndecl as argument. + * integrate.c (expand_inline_function): Calc., use and save + this fns value of FIRST_PARM_OFFSET. + (copy_rtx_and_substitute): Use that value. + * stmt.c (assign_parms): Likewise. + + * tm-sparc.h (FIRST_PARM_OFFSET): Make it 64 if value is BLKmode. + (STRUCT_VALUE{,_INCOMING}): Put the value in 64(fp). + + * tm-sparc.h (PRINT_OPERAND_ADDRESS): Print offsets in decimal. + Avoid excess `+' before a negative offset. + + * stmt.c (expand_function_start): Create the return value rtl + before making the tail-recursion loop point. + + * combine.c (gen_lowpart_for_combine): Generate a paradoxical subreg + rather than a wider memref. + + * reload.c (push_reload): Extend last change to case where OUT != 0. + +Fri Sep 2 11:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (fixup_var_refs): Adjust last_parm_insn when deleting insns. + + * expr.c (emit_push_insn): calling memcpy, bump TEMP 2 pointers worth. + +Thu Sep 1 16:39:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_targets): Test for canceled reload + before looking inside reload_out. + + * jump.c (jump_optimize): Bug in last change. + + * m68k.md (return): Pattern disabled; confuses Aug 29 stmt.c change. + * ns32k.md, i386.md: likewise. + + * emit-rtl.c (emit_note_force): New, like emit_note but always do it. + * stmt.c (expand_function_end): Use emit_note_force. + +Wed Aug 31 11:34:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (alter_reg): New arg FROM_REG is hard reg that the pseudo + was spilled from. Works with spill_stack_slot. Callers changed. + Now all pseudos spilled from one hard reg get the same slot. + (reload): Initialize new variable spill_stack_slot. + + * cse.c (cse_insn): Don't insert floating point mems if -ffloat-store. + + * reload.c (find_equiv_reg): Allow no equivs for volatile memrefs. + Also none for floating mem refs if -ffloat-store. + + * output-sparc.c (output_mul_by_constant): make `p' and `log' unsigned. + +Tue Aug 30 13:47:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Ignore other NOTEs while looking for + a NOTE_INSN_FUNCTION_END. + + * integrate.c (save_for_inline): Flush extra call to max_reg_num. + Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. + (copy_for_inline): Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. + + * stmt.c (optimize_bit_field): If bit field is SRC, strip subregs + from the DEST. + + * expmed.c (expand_mult): Special case for -1 as one operand. + +Mon Aug 29 12:14:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_goto_internal, expand_fixup): New arg LAST_INSN. + (expand_return): Pass that arg in tail-recursive case. + (other callers): Pass 0 for that arg. + (expand_null_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. + (expand_null_return_1): New fn, has guts of old expand_null_return. + (expand_return): Call expand_null_return_1 to pass LAST_INSN arg. + (expand_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. + (expand_function_{start,end}): Likewise. + (expand_cleanups): Fix typo in recursive-list case. + (move_cleanups_up): New fn. + + * expr.c (expand_call): Execute cleanups_of_this_call on exiting. + Notice calls to __builtin_new (but don't do anything about them yet). + + * reload.c (push_reload): If reloading a (SUBREG (MEM ...) ...), + really reload just the MEM in the MEM's own mode. + + * sparc.md: Define patterns for insns that set the ccs. + Define set-flag insns. + New patterns for indexed load, and for optimizing signed bit fields. + (mulsi3, umulsi3): Give "r" constraint to operand 0. + Peephole optimizers recognize some cases where delay insns are safe. + Changed patterns for call and return insns as well. + + * output-sparc.c (single_insn_src_p): New fn. + (output_delay_insn): New fn. + + * tm-sparc.h (TARGET_EPILOGUE): New target flag. + (NOTICE_UPDATE_CC): New clause for funny PARALLEL with a REG in it. + + * m68k.md (movqi): Use *'s to ensure preferencing d-regs. + + * c-parse.y (datadef): If traditional, no warning about no specs. + +Sun Aug 28 14:34:33 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386.h: Define PROMOTE_PROTOTYPES. + POINTER_BOUNDARY now 32. + + * regclass.c (reg_scan): Compute `max_parallel', max # of sets and + clobbers in any insn in this function. + * global-alloc.c (global_conflicts): Use that, not MAX_SETS_PER_INSN. + + * stmt.c (expand_asm_operands): MAX_SETS_PER_INSN limits # output ops. + + * emit-rtl.c (init_emit_once): Make elt 2 of {f,d}const0_rtx nonzero. + + * c-decl.c (lang_decode_option): Handle -Wwrite-string. + * c-parse.y (combine_strings): If that flag, make array of const char. + + * expr.c (expand_expr): for INTEGER_CST, always use immed_double_const; + never do output_constant_def (it didn't work). + Also heed WORDS_BIG_ENDIAN. + + * varasm.c (output_constant): Handle integer CONST_DOUBLEs. + (output_constant_def): Abort if arg is an INTEGER_CST. + + * emit-rtl.c (gen_rtx): Don't return {f,d}const0_rtx for DImode. + +Sat Aug 27 12:37:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (pushdecl): Global extern decls set TREE_PUBLIC + like local ones. + + * integrate.c (expand_inline_function): Handle parms that were + passed in registers but whose homes are on the stack. + + * varasm.c (force_const_mem): Output ints according to spec'd mode. + ({record,compare}_constant_rtx,const_hash_rtx,decode_rtx_const): + Take mode as argument; pass it along. + + * c-parse.y (read_escape): No warning for `\{' or `\['. + +Fri Aug 26 12:23:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (fixup_memory_subreg): Typo calculating big-endian adjust. + + * vax.md (call_value): Handle >255 args as in `call'. + +Thu Aug 25 16:00:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (delete_jump): Don't delete the cc-setter if it has autoinc. + +Wed Aug 24 16:33:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): For sun with a COND_EXPR, use SUBTARGET + if validate_subtarget says ok. + + * tree.c (build_index_type): make_index_type moved here and renamed. + + * combine.c (move_deaths_2): New function. + (try_distrib): Use that, not move_deaths. + + * tm-sparc.h (SHIFT_COUNT_TRUNCATED, STORE_FLAG_VALUE): Define them. + + * tm-sparc.h: FUNCTION_{PRO,EPI}LOGUE: Save room for ins and + locals to spill to the frame if any ins *or* locals are live. + + * tm-sparc.h (NOTICE_UPDATE_CC): Delete the clause that always + cleared the cc's for unrecognized insns. + + * reload1.c (reload_as_needed): Don't try to use a spill-reg + in a basic block that wasn't spilled: ignore optional reloads. + +Tue Aug 23 09:45:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_scc_insn): New function. + + * expr.c (expand_builtin, alloca): Round result of alloca + up to a multiple of STACK_BYTES. + + * toplev.c (compile_file): Default main_input_filename is cc1 input. + + * tm-i386.h (FUNCTION_BOUNDARY): 32 avoids extra prefetch. + + * i386.md (movdi, movdf): Add `&' where needed in constraints. + +Mon Aug 22 11:57:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * symout.c (symout_finish): Allocate typevector after the symout_types. + +Sun Aug 21 16:10:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-3b1.h (ASM_FORMAT_PRIVATE_NAME): Use a `_' as well as `%'. + + * expr.c (expand_expr): Typo setting MODE for MAX_EXPR. + + * Makefile (stage*): If ln fails, copy gnulib to stage*. + (realclean): Do `clean' and then some. + (install): new var USER_H specifies headers to copy. + + * c-typeck.c (build_binary_op_nodefault): LT_EXPR, etc. + on ptr vs int failed to set result_type. + (build_conditional_expr): Don't replace nonzero int + with null_pointer_node. + + * combine.c (remove_links, try_distrib): New fns. + (subst): New simplifications for ZERO_EXTEND, SIGN_EXTEND. + (combine_instructions): Call try_distrib. + (FAKE_EXTEND_SAFE_P): Allow SUBREGs. + + * m68k.md (non-FPA pattern for floatsisf2): Typo, had DF for SF. + +Sat Aug 20 12:04:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (copy_address): Variant of copy_rtx_and_substitute. + (copy_rtx_and_substitute): Use copy_address for MEM address that + doesn't satisfy memory_address_p. + + * reload.c (find_reloads): If force_reload set, don't set WIN + for a MEM even if `m', `o' or `g' in constraint. + + * i386.md (expendqihi2): Typo in asm template. + + * toplev.c (rest_of_compilation): Call clear_const_double_mem. + * varasm.c (init_const_rtx_hash_table): Don't call it here. + (immed_real_const): Don't record the rtx in the REAL_CST node. + (force_const_double_mem, clear_const_double_mem): Use cc0_rtx, not 0, + as flag for a CONST_DOUBLE not on the chain. + + * cccp.c (handle_directive): If traditional, do scan strings + but accept unterminated ones. + (collect_expansion): -traditional: Don't recognize comments in strings. + Stringify arguments that appear within strings. + (skip_quoted_string): -traditional: Always exit at newline. + (macroexpand): -traditional: Don't put `"'s around stringified arg. + (macarg): Set stringified_length accordingly. + + * c-decl.c (duplicate_decls): Avoid error redeclaring fcn after + implicit decl if -traditional. + + * toplev.c (announce_function, report_error_function): + Change communication logic between these fcns. + + * c-decl.c (lang_decode_options): Handle -Wall here. + * toplev.c (main): not here. + + * tm-bsd386.h: Don't include tm-i386.h--be like tm-att386.h + +Fri Aug 19 11:08:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config-sun4.h: If sparc, include config-sparc.h. + Never include alloca.h. + + * tm-m68k.h (TARGET_SWITCHES): Define `-mc68020', `-mc68000'. + + * c-decl.c (init_decl_processing): If traditional, use signed sizetype. + + * gcc.c (main): Use stderr for printing version. + +Thu Aug 18 14:42:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.26 released. + + * m68k.md (movsi): Constraint change for fpa regs. + + * reload1.c (choose_reload_targets): Clear reg_reloaded_contents + for all regs of a multi-reg group. + + * reload.c (find_equiv_reg): HARD_REGNO_NREGS wants mode, not size. + Check properly for overlap against multiword reload regs. + +Tue Aug 16 14:54:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c, expr.c (immed_double_const): immed_real_const_2 renamed. + + * tm-i386.h (SFVALUE): Should be `double'. + * tm-i386v.h (SFVALUE): Don't override it. + + * tm-i386.h (ASM_OUTPUT_ASCII): Don't define it. + * tm-att386.h: Definition moved here. + + * tm-bsd386.h: New file, for Sequent. + * tm-seq386.h: New file, for Sequent. + * config-i386.h: New file, for Sequent. + + * expr.c (push_block): Take account of STACK_POINTER_OFFSET. + (expand_call): Therefore need not do so here. + + * optabs.c (expand_fix): Typo if going via DImode. + + * reload1.c (choose_reload_targets): Don't * reload_reg_rtx if 0. + +Mon Aug 15 01:11:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (copy_for_inline): Don't try copying 0-length vector. + (copy_rtx_and_substitute): Likewise. + + * m68k.md (andsi3): use clrw instead of andw #0. + + * print-tree.c (walk): Don't omit permanent nodes reach from temps. + + * m68k.md (zero_extend...): Reinstall the old zero-extend insns + without names, so they can help the combiner. + + * expr.c (expand_expr): Don't use hard regs as subtargets. + * combine.c (FAKE_EXTEND_SAFE_P): Always consider MEMs safe. + * reload.c (find_reloads): For (SUBREG (MEM ...)) set force_reload. + + * c-parse.y (redescape): Don't warn for `\('. + + * reload.c (find_reloads_address): #if was backwards. + +Sun Aug 14 16:52:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (shorten_compare): Change switch to chain of ifs. + + * tm-ns32k.h (PRINT_OPERAND): CONST_DOUBLE contains a double + even if it's SFmode. + (FUNCTION_PROLOGUE): If MAIN_FUNCTION_PROLOGUE defined, run it. + + * cccp.c (file_buf): Rename field `free' to `free_ptr'. + + * Makefile (ALLOCA, MALLOC, LIBDEPS): New variables for easier + customization. Executables depend on LIBDEPS instead of OBSTACK1. + (cccp): Deps and libs now work like the others. + + * output-i386.c (notice_update_cc): Rewritten for clarity. + + * tm-i386.h (OUTPUT_JUMP): If CC_IN_OVERFLOW, abort. + + * recog.c (push_operand): Test for stack_pointer_rtx. + + * integrate.c (copy_rtx_and_substitute): Don't submit push-operands + to `memory_address'--it would lose on machines where pushing is + a special insn, not an addressing mode. + + * output-i386.c (top_dead_p): No more redundancy--that didn't work. + Now one method if optimized, one for call_insns if noopt, one for + other insns if noopt. + (call_top_dead_p): fp_top_dead_p renamed + and only the call-insn clause remains. + + * i386.md (cmpsf, cmpdf): Output was backwards. + (", tstsf, tstdf): Set CC_IN_80387. + (incb pattern): Restrict allowable registers. + (movsf, movdf): Call top_dead_p only when absolutely necessary. + (call_value): Use top_dead_p, not subroutine. + +Sat Aug 13 15:19:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stupid.c (stupid_life_analysis): If only 1 reg class, + call stupid_find_reg only once. + + * stmt.c (expand_function_start): + Clear current_function_pretend_args_size. + + * expr.c (store_constructor): If target is hard reg, go via a pseudo. + + * varasm.c (real_constant_chain): Now static in this file. + (force_const_double_mem): Put R on chain if not already on. + (clear_const_double_mem): Set XEXP (,2) to 0; + also clear real_constant_chain and the chain links. + * emit-rtl.c (init_emit_once): Put 0 in XEXP (,2) of {d,f}const0_rtx. + * cse.c (canon_hash): For CONST_DOUBLE, ignore elts other than 0,1. + +Fri Aug 12 11:48:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (order_regs_for_reload): Handle REG_ALLOC_ORDER more spots. + + * global-alloc.c (find_reg): error handling REG_ALLOC_ORDER; + also error skipping regs known to be hopeless. + * local-alloc.c (find_free_reg): error skipping hopeless regs. + * stupid.c (stupid_find_reg): likewise. + + * local-alloc.c (qty_compare_1): typo, had q1 for q2. + + * expr.c (expand_expr): Don't use supplied target when optimizing + arithmetic using a comparison or conditional; that target could be + needed for the result of the comparison. + + * reload1.c (reload): Don't set reg_equiv_constant for hard regs. + + * stupid.c (stupid_life_analysis): Ignore reg R if regno_reg_rtx[R]==0. + + * symout.c (symout_finish): Use perm. links in permanent_fwd_refs. + + * i386.md (movhi, movqi): Check no_labels_between_p. + +Thu Aug 11 10:44:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex): Out-of-range float is just a warning. + + * tm-gnx-v3.h: New file for Genix. + * ns32k.md (movsi, call, call_value): GNX_V3 conditionals. + * tm-ns32k.h (PRINT_OPERAND_ADDRESS): Changes for Genix. + + * ns32k.md (insv patterns): Operand 0 is read-write. + + * i386.md (tstsf, tstdf): Don't push the arg if already in st(0). + + * varasm.c (output_constant_def): If EXP is permanent, the rtl is too. + + * tm-*.h (ASM_OUTPUT_{LOCAL,COMMON}): New 4th arg, rounded size + vs unrounded size. + * varasm.c (assemble_variable): Pass new arg. + * symout.c (symout_init): Likewise. + + * cccp.c (rescan): Don't let char const cross lines. + (skip_quoted_string, macarg1, discard_comments): Likewise. + + * expr.c (expand_expr, VAR_DECL case): handle flag_force_addr. + + * tm-i386v.h (TAREGT_DEFAULT): Assume 80387. + * config-i386v.h (alloca): Use __builtin_alloca under GNU C. + +Wed Aug 10 11:23:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_reloads): Alternative loses + if it has no regs for a reg operand. + + * tm-sun3.h (STARTFILE_SPEC): Define, for fpa's sake. + * tm-m68k.h: New hard regs, reg classes, reg class letters, + target flag and switch, operand syntax and CC handling for fpa. + * m68k.md: Add fpa insn patterns. + * output-m68k.c (standard_SunFPA_constant_p): New fn. + (output_move_const_{single,double}): Handle fpa regs. + (singlemove_string): Handle fpa regs. + + * stmt.c (fixup_memory_subreg): Result had wrong mode. + + * ns32k.md (insv patterns): Adjust bit-number along with address. + + * sparc.md (negdf2, absdf2): Order of the words was backwards. + + * reload1.c (new_spill_reg): End confusion about meaning of 1st arg. + Arg counted_for_nongroups had wrong type. + + * tm-m68k.h (FUNCTION_{PRO,EPI}LOGUE): Round frame size to word bdry. + +Tue Aug 9 07:53:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386.h (ASM_OUTPUT_ASCII): Don't lose the sign bit. + + * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Use crt1.o, crtn.o. + + * stmt.c (fixup_var_refs_1): fixup all memory subregs. + + * reload1.c (choose_reload_targets): Don't strip paradoxical + subregs from values to be reloaded. + + * cccp.c: Comment out text after #endif. + + * c-parse.y (init): Allow empty braces as init; warn if pedantic. + + * c-decl.c: Move C-specific options from toplev.c. + * c-tree.h: Move their externs from flags.h. + * c-decl.c (lang_decode_option): New fn called by `main'. + * toplev.c (sorry, really_sorry): New error reporting fns. + * c-decl.c (language_string): New var, name of this language. + + * c-parse.y: Don't include flags.h. + * dbxout.c: Do include it. + + * dbxout.c (dbxout_type): Handle function fields and static fields + and basetypes. Handle METHOD_TYPE and REFERENCE_TYPE. + Abort on unexpected tree code. + (dbxout_args): New fn to output prototype arg types. + (everywhere): Use IDENTIFIER_LENGTH instead of strlen. + (dbxout_type_name): Cleanup; avoid strlen. + + * local-alloc.c (reg_is_set): Don't call {post_,}mark_life for pseudos. + + * tree.h (TYPE_BASECLASSES): New field in type nodes. + + * ns32k.md (insv patterns): Was adjusting the address wrong. + + * c-decl.c (grokdeclarator): Just a warning for inline varargs fn. + +Mon Aug 8 08:16:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (immed_real_const_2): Guts of creating a CONST_DOUBLE. + * expr.c (expand_expr): Use that for 64-bit int constants. + + * loop.c (invariant_p): Don't check x->unchanging; it's not safe. + + * c-typeck.c (build_indirect_ref): Handle flag_volatile here + so that it propagates to component_refs. + * expr.c (expand_expr): No need to handle it here. + + * integrate.c (save_for_inline, expand_inline_function): + Set up insn_map to record mapping of old uids to copied insns. + (copy_for_inline, copy_rtx_and_substitute): Map 'u' refs via insn_map. + + * emit-rtl (emit_label, emit_barrier): Return what was emitted. + + * sdbout.c (sdbout_filename): Split off from sdbout_init. + * tm-encore.h, tm-3b1.h, tm-vaxv.h, tm-att386.h (ASM_FILE_START): + Call sdbout_filename. + + * toplev.c: Better messages for invalid options. + + * tm-m68k.h (PRINT_OPERAND_ADDRESS): Handle labelref+basereg. + + * tm-3b1.h (PUT_SDB_DIM): Override sdbout's definition. + (ASM_FORMAT_PRIVATE_NAME): Override tm-hp...s definition. + (PUT_SDB_PLAIN_DEF): Prepend `~' to specified name. + (SDB_GENERATE_FAKE): Prepend `~'. + + * gcc.c: Include config.h before obstack.h. + +Sun Aug 7 11:17:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_decl): Do nothing with CONST_DECL. + Treat FRIEND_DECLs like variables. + (layout_record): Handle VAR_DECLs and FUNCTION_DECLs in the fieldlist. + Handle basetypes (almost like fields). + (layout_type): Handle REFERENCE_TYPE and METHOD_TYPE. + + * tree.c (temp_tree_cons): New fn. + (array_type_nelts, simple_cst_equal): New fns. + (lvalue_p): CALL_EXPR is an lvalue if it returns REFERENCE_TYPE. + () Manage TYPE_REFERENCE_TO. + (TYPE_HASH_SIZE): Bigger. + (type_list_equal): Compare the TREE_PURPOSE fields. + (build_reference_type, build_method_type): New fns. + + * stmt.c (block_stack): Add field `cleanups' to each element. + (expand_{start,end}_bindings, expand_decl): Update that field. + (stack_block_stack): Now includes blocks that have cleanups. + (goto_fixup_chain): Add field `cleanup_list_list'. + (expand_goto_internal): Execute cleanups for blocks being exited. + (expand_fixup): Make a fixup if any block has cleanups. + (fixup_gotos): New args CLEANUPS and DONT_JUMP_IN. + Execute cleanups for blocks being exited, or add to cleanup_list_list. + (expand_end_bindings): New arg DONT_JUMP_IN. Execute any cleanups. + (expand_decl): New arg CLEANUP. + (expand_cleanups, fixup_cleanups): New functions. + * c-decl.c: Calls to expand_decl pass new arg. + * c-parse.y: Calls to expand_end_bindings pass new arg. + + * stmt.c (expand_return): Handle INIT_EXPR, or bare RESULT_DECL. + + * stmt.c (case_stack): Add field `has_default' to each element. + (pushcase,expand_end_case): Maintain and use that field. + + * stmt.c (pushcase): Handle RANGE_EXPR cases. + (pushcase_range): Create RANGE_EXPR cases. + + * final.c (final): Always pass 3 args to ASM_OUTPUT_CASE_END. + * tm-3b1.h: Delete offending spaces. + +Fri Aug 5 16:17:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (copy_rtx_and_substitute): Don't make fp+reg+const + without an intermediate temporary reg. + + * print-tree.c (dump): Don't print an identifier's chain. + + * toplev.c (compile_file): Treat `.i' suffix like `.co'. + + * gcc.c: New config macro CC1_SPEC: extra switches for cc1. + Make a new spec for `.i' files. + + * c-decl.c (pushdecl, finish_decl): Delete duplicate tests. + + * varargs.h: Maybe include va-sparc.h or va-spur.h. + * va-sparc.h: New file. + * va-spur.h: renamed file. + + * tree.h ({TYPE,DECL}_LANG_SPECIFIC): Types and decls can point to + language-specific structures containing other info. + * print-tree.c (dump): Hooks for printing the language-specific + data in types and decls. + +Thu Aug 4 08:54:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.def: Add some tree codes for C++. + + * Rename files: parse.[yh] -> c-parse.[yh], decl.c -> c-decl.c, + typecheck.c -> c-typeck.c. + Part of tree.c split out to c-convert.c. + + * expr.c (push_block): No longer static. + (expand_expr): Handle REFERENCE_EXPR and INIT_EXPR. + (expand_call): Turn a METHOD_TYPE to a FUNCTION_TYPE. + This is probably not all that is required. + + * parse.y (yylex): Use p->rid to check for `signed' and `inline'. + + * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): typo. + + * sparc.md: Add a pattern for andcc. + (cmpsf): Clobber reg 32 in DFmode. + (branches): There are no unsigned floating branches; abort. + (bgt): Correct name of floating variant. + (mov?i): Load small constants via mov. + (movdf for constants): Use mov, not add, to move regs. + (movsf, floatsi*, fix*): Simplify reg-to-reg-via-mem move generation. + (trunc*): Use mov, not or, to move regs. + (negsi2, one_cmplsi2): Avoid "neg" and "not" assembler syntax. + (call...): Generate "call" insns; handle #-reg-parms value. + * Define some peepholes for return insns. + + * tm-sparc.h (TARGET_SUN_ASM): New target flag. + (TARGET_DEFAULT): Now 1. + (FRAME_POINTER_REQUIRED): Now 1. + (STARTING_FRAME_OFFSET): Now -16. + (LEGITIMATE_CONSTANT_P): Only CONST_DOUBLEs fail. + (FUNCTION_{PROLOGUE,EPILOGUE}): Rewritten. + + * output-sparc.c (small_int): Test for int that mov can load. + (singlemove_string): Use mov, not add. + (output_move_double): Changes for overlap and for use of ldd, std. + (output_fp_move_double): Use ldd, std when safe. + (make_f0_contain_0): Simplify. + + * integrate.c (expand_inline_function): Some special CALL_INSN + handling no longer needed due to REG_FUNCTION_VALUE_P. + + * m68k.md (movqi): Constraints allow moving areg to areg. + +Wed Aug 3 08:29:31 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.25 released. + + * integrate.c (expand_inline_function): Don't let MEM be inline_target. + +Tue Aug 2 09:13:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (INTEGRATE_THRESHOLD): New macro, default dfn here. + (function_cannot_inline_p): Use it. + + * rtl.h (REG_FUNCTION_VALUE_P): New macro. + * stmt.c (expand_function_start): Set that flag in the return reg. + * integrate.c (expand_inline_function, copy_rtx_and_substitute): + Test that flag to test for the return value. + * expmed.c (expand_fixed_bit_field, expand_mult, expand_divmod): ditto. + FUNCTION_VALUE_OUTGOING_REGNO_P no longer needed. + +Mon Aug 1 02:46:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (copy_rtx_and_substitute): If NO_FUNCTION_CSE, + don't break out constant fcn addresses here. + + * expmed.c (expand_fixed_bit_field): Tests of FUNCTION_VALUE_REGNO_P + were backwards. + +Sun Jul 31 13:10:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * recog.c (indirect_operand): New function. + + * output-i386.c (print_operand): define %*. eliminate %s. + (fp_top_dead_p): In nonopt case, skip stack-adjusts while looking + for the insn that uses the function value. + + * varasm.c (text_section, data_section): New functions. + Replaced explicit printfs elsewhere with calls to them. + * final.c (final_start_function): Use these fns. + * sdbout.c (sdbout_one_type): Use text_section. + * tm-att386.h (ASM_OUTPUT_LOCAL): Use data_section. + + * expr.c (prepare_call_address): Don't pass const via reg if no -O. + + * tm-sparc.h (FUNCTION_{PROLOGUE,EPILOGUE}) Round the size of saved + registers. Fix bug counting saved registers. + + * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): Define this macro. + + * tm-sparc.h (DEFAULT_SIGNED_CHAR): Now 1. + + * expr.c (expand_builtin, alloca case): Adding stack offset needs + special code if TARGET is a MEM. + + * dbxout.c (dbxout_init): Define Ltext: after the reference to it. + + * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): `short 0' triggers assembler bug; + `short L%nn-L%nn' supposedly works. + +Sat Jul 30 00:25:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (floatsidf2): Minor change in output. + (fix_trunc{sf,df}si2): Similar. + + * output-sparc.c (output_fp_move_double): Minor change in output. + + * stmt.c (assign_parms): Don't count stack space for struct value + address if the function does not have one. + + * sdbout.c: Output .dim's and total size for arrays. + Detect bit-fields properly. + Changed handling of structure tags. + + * reload1.c (new_spill_reg): counted_for_nongroups is a new arg; + store 1 in it if this reg is needed for max_nongroups. + + * reload1.c (choose_reload_targets): Allow inheritance of DFmode + if it needs only one register. + + * reload1.c (choose_reload_targets): Delete the death-note from the + store-insn of an inherited reload if PRESERVE_DEATH_INFO_REGNO_P. + + * reload.c (push_reload): Crash if PREFERRED_RELOAD_CLASS is NO_REGS. + (find_reloads): Smarter handling of forcing CONST_DOUBLE into mem. + Check PREFERRED_RELOAD_CLASS & do this if it says NO_REGS. + + * reload.c (subst_indexed_address): Handle case with 2 regs + and no constant term. + + * local-alloc.c: New variable qty_n_refs, set from reg_n_refs + and tested in qty_compare{,_1}. + (combine_regs): Update qty_n_refs. + Update qty_preferred_or_nothing more intelligently. + + * regclass.c (regclass, reg_class_record, record_address_regs): + Count the number of refs to each reg along with the costs, + and use it when computing the preferred_or_nothing flag. + (Can't use reg_n_refs since that is weighted by loop depth). + + * global-alloc.c (global_alloc): Enable test of OVERLAPPING_REGNO_P + for setting no_global_alloc_regs. + + * expr.c (prepare_call_address): Use force_reg, so it gets a REG_EQUIV. + + * optabs.c (can_{fix,float}_p): Return enum insn_code, not a function. + (init_{fix,float}_tab): Store enum insn_code's in fixtab and floattab. + (expand_{fix,float}): Change calls to can_{fix,float}_p. + Also, use emit_unop_insn to make the actual insns. + +Fri Jul 29 02:42:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (initialize_char_syntax): If dollars_in_identifiers is 0, + set entries for `$' to 0. + Set entries to 1 rather than incrementing them. + +Tue Jul 26 11:14:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (assemble_variable): Make SDB output only if top-level. + + * local-alloc.c (reg_is_set): Arg to mark_life is regno, not qty. + + * output-ns32k.c (print_operand_address): New flag SEQUENT_BASE_REGS + * tm-sequent.h: Define that flag. + + * Makefile: add some missing deps. + + * tm-encore.h (ASM_FILE_START): Changed to do nothing. + + * sdbout.c (sdbout_init): Fix two dumb errors. + + * sdbout.c (sdbout_end_epilogue): No longer takes arg. + Examine current_function_decl here, not in caller. + * final.c: Call changed. + +Mon Jul 25 01:32:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Handle PCC_BITFIELD_TYPE_MATTERS. + + * tm-3b1.h (__PTR_TO_INT, __INT_TO_PTR): Define these, to alter + parts of obstack.h. + +Sun Jul 24 17:56:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Padding for an arg may now go below or above it; new macro + FUNCTION_ARG_PADDING can now choose which, or can inhibit padding. + This makes for compatibility with PCC. + * expr.h: Default definition of that macro. + * expr.c (emit_push_insn): Put the padding above or below. + (expand_call): Don't count the padding if none wanted. + * stmt.c (assign_parms): Adjust parm stack addr if padded below. + Don't count the padding if none wanted. + * tm-3b1.h: Define FUNCTION_ARG_PADDING: no padding for > 4 bytes. + + * final.c (alter_subreg): Now returns the altered value + (but may still modify the original structure). + Handles (SUBREG:DI (CONST_DOUBLE:DF...)) by returning the CONST_DOUBLE. + + * m68k.md (DImode push): now allows `F'. + * ns32k.md (movdi): now allows `F'. + + * tm-m68k.h (FIX_FRAME_POINTER_ADDRESS): + Handle indexed references to frame pointer. + * tm-i386.h, tm-m88k.h, tm-sparc.h: Likewise. + + * cse.c (predecide_loop_entry): Must search for the loop top label. + +Sat Jul 23 08:53:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * parse.y (yylex): typo in wide strings. + + * tm-vaxv.h, config-vaxv.h: New files for sysV on vax. + + * config-sun4.h: If sparc and not compiling with GCC, include alloca.h. + +Fri Jul 22 02:38:02 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * tree.c (build_real_from_int_cst): CHECK_FLOAT_VALUE at proper place. + + * tm-hp9k320.h ({TEXT,DATA}_SECTION_ASM_OP): Should not include a tab. + * final.c (final_start_function): Don't output a tab before those. + + * sdbout.c (PUT_SDB_EPILOGUE_END): New macro. + * sdbout.c (sdbout_end_epilogue): New function to output the C_EFCN. + Like former sdbout_mark_end_function. Uses that macro. + * final.c (final_end_function): Call that function. + * tm-3b1.h: Override PUT_SDB_EPILOGUE_END like the other PUT_SDB... + + * tm-3b1.h (PRINT_OPERAND_ADDRESS, ASM_OUTPUT_INTERNAL_LABEL, + ASM_OUTPUT_CASE_{LABEL,END}): Put a % in names of internal labels. + (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT): + New macros, for same reason. + (FUNCTION_PROFILER): New macro, for % and also to put addr in a0. + + * final.c (output_source_line): For fcn's first line, use lineno 1. + * sdbout.c (sdbout_end_function): Clear sdb_begin_function_line + so can recognize first line of next function. + + * sdbout.c (sdbout_init): Output the .file pseudo here. + * tm-3b1.h, tm-att386.h (ASM_FILE_START): Don't do it here. + + * sdbout.c (PUT_SDB_VAL): Output leading tab, like the other macros. + * tm-3b1.h (PUT_SDB_VAL): Likewise. + + * regclass.c (regclass): Cast enums to int, not char. + * varasm.c (record_constant): Likewise. Avoids 3b1 PCC bug. + + * decl.c (pushdecl): Better choice of error message for extern/static. + + * emit-rtl.c: Do look for STRUCT_VALUE_INCOMING_REGNUM. + +Thu Jul 21 02:13:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (canon_hash): CONST_INT case failed to add to prev. value + of HASH; was inconsistent with cse_insn mem address hashing. + + * m68k.md (divide insns): Alternate 3B1 syntax for `swap' insn. + +Wed Jul 20 18:27:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md: In shift-by-24 patterns, rejects autoincrement memrefs + since they are mode-dependent. + +Tue Jul 19 13:01:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * parse.y (check_newline): Handle #ident by writing .ident to output. + * cccp.c: Don't handle #ident; delete IDENT_DIRECTIVE conditionals. + + * stmt.c (expand_end_case): In compares, put constant arg second. + + * jump.c (jump_optimize): Delete conditional jump if followed by + an unconditional jump to the same place. + +Mon Jul 18 17:49:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * emit-rtl.c (init_emit_once): Now STRUCT_VALUE_INCOMING is an + expression for an rtx. It can make a MEM. Likewise STRUCT_VALUE + for outgoing structure value addresses. + + * stmt.c (assign_parms): If incoming struct addr on stack, leave room. + * expr.c (expand_call): If outgoing addr on stack, push it like an arg. + + * PROMOTE_PROTOTYPES means if proto says `char', pass `int'. + * decl.c (get_parm_info): Alter DECL_ARG_TYPE to do this. + * typecheck.c (actualparameterlist): Convert value for this. + * tm-m68k.h: Define PROMOTE_PROTOTYPES. + +Sun Jul 17 14:25:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): peephole can delete insns following INSN. + Set NEXT after peephole. + + * decl.c (finish_decl): Always restart perm alloc if global. + + * stmt.c (assign_parms): When a float is passed as double, store the + float in low-numbered word. Avoids trouble with parm_map in integrate. + + * vax.md: New pattern for decrement and compare against -1. + +Sat Jul 16 14:18:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * decl.c (pushdecl): Ignore previous decl if it's really an error_mark. + + * stmt.c (expand_start_case): Make sure case_stmt.start is a NOTE. + + * combine.c (subst): In the simplification for + (set (zero_extract ...) (and/or/xor (zero_extract ...) const)), + require same memory location in both extracts. + + * *386*: New files. + + * cse.c (fold_rtx): Save time in memory address if it didn't change. + Don't replace cheaper expression with coslier one. + (cse_insn): Reenable generation of REG_WAS_0. It wasn't obsolete. + + * cccp.c: `ident' has 5 letters. + + * final.c (output_source_line): SDB can't handle multiple source + files, so ignore line-NOTEs for other files. + + * hard-reg-set.h: New var reg_class_size (# regs in the class). + * regclass.c (init_reg_class): Set it up. + + * reload.c (find_reloads): If an earlyclobber is in a class of size 1 + as an output, reload it as input instead of as output. + + * reload1.c (choose_reload_targets): Improve elimimation of spilled + pseudos made dead by reloading: if pseudo is limited to one block + and that block contains just stores, delete all the stores. + + * reload1.c (choose_reload_targets): reg_has_output_reload is now + static and survives through reload pass. + (forget_old_reloads): Don't cancel data on spilled regs of output + reloads of the insn just made. + + * sdbout.c (sdbout_one_type): Go to .text before defining a type. + (sdbout_block): Test against do_block was backwards. + + * stmt.c (expand_end_function): New args to make a NOTE for last line. + * decl.c (finish_function): Pass the args. + + * rtl.c (no_labels_between): New function. + * vax.md (movsi): Call it. + + * print-tree.c (dump): Don't follow chain of a decl. + + * rtl.c (volatile_refs_p): Moved from flow.c. + +Fri Jul 15 13:36:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * sdbout.c (PUT_SDB...): Allow config to override any of them. + * sdbout.c (PUT_SDB_{BLOCK,FUNCTION}_{START,END}): New macros. + * tm-3b1.h: Override all of them. + * sdbout.c (SDB_GENERATE_FAKE): New macro to create dummy tag name. + (gen_fake_label): Use SDB_GENERATE_FAKE. + * tm-3b1.h: Override its defn. + + * sdbout.c (sdbout_mark_function_end): Unused; deleted. + + * tm-3b1.h: Define SDB_DEBUGGING_INFO. + +Thu Jul 14 01:55:15 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * config-sunv4.h: New file for Sunos version 4. + + * tm-sun3.h (CPP_SPEC): Define mc68010 or mc68020, depending. + +Tue Jul 12 15:31:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_fixup, expand_goto_internal): New functions to + emit a jump that can restore the stack level, even without tree node. + (expand_null_return, expand_exit_loop, etc.): Use expand_goto_internal. + (expand_end_function): Do fixup_gotos after emitting return_label. + + * cse.c (predecide_loop_entry): Avoid using JUMP_LABEL. + * flow.c (find_basic_blocks): Avoid using JUMP_LABEL. + + * flow.c (insn_dead_p): Delete special case for stack-adjust insns. + (life_analysis): Mark those insns with INSN_VOLATILE here. + (mark_used_regs): a SET of a hard reg, in a volatile insn, + always makes its source live. + +Mon Jul 11 10:46:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (floatqidf2): Commented out since assemblers warn about it. + +Sun Jul 10 11:49:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * decl.c (xref_tag): Default the TYPE_MODE of enum xrefs + to avoid making MEM and REG with VOIDmode. + + * vax.md (call): If > 255 args, pop them explicitly. + +Sat Jul 9 10:53:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * symout.c (symout_types): Fix up forward refs to previously + undefined structure types. + (filter_undefined_types): New function. + (symout_finish, symout_function_end): Output any never-defined structs. + * toplev.c (rest_of_compilation): call symout_function_end. + + * parse.y: Don't declare errno if it's a macro. + + * tm-hp9k320 (FUNCTION_PROFILER): Pass ptr in a0, not d0. + + * typecheck.c (truthvalue_conversion): Flush unnec recursive call. + (build_cond_expr): Bug testing zeroness of IFEXP with TREE_LITERAL. + + * cse.c (fold_cc0): Constants not CONST_INT are certainly nonzero. + * fold-const.c (fold): ADDR_EXPR is not equal to zero. + + * cccp.c (macroexpand): Disable the macro even if traditional. + (rescan): Error if use a disabled macro. + + * combine.c (try_combine): Don't substitute a different reg into + an auto-increment. Handle multiple REG_INC notes in I1 or I2. + + * decl.c (implicitly_declare): Don't reuse old implicit decl. + + * varasm.c (assemble_variable): Avoid syntax err if no DBX and no SDB. + * final.c (output_source_line): likewise. + + * fold-const.c (fold): PLUS/MINUS_EXPR: in case of cancellation, + convert result to original type. + + * regclass.c (reg_class_record): Changed arguments include address + of entire vector of constraints. + +Fri Jul 8 07:59:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (reload): Find groups of more than 2 registers. + +Thu Jul 7 08:33:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_push_insn): Typo adjusting arg for bcopy + if not STACK_GROWS_DOWNWARD. + + * gnulib.c (_cmpsf2): Value is int, not SFVALUE. + +Wed Jul 6 11:53:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-encore.h, tm-3b1.h: Replace ASM_FILE_START; output a .file. + + * *m88*: New files for Motorola 88000. They don't really work. + +Tue Jul 5 14:40:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (combine_regs): Don't tie a reg to itself. + + * finxincludes: Make a variable LIB for the target dir. + + * m68k.md (movhi, addhi3, addsi3): Micro-optimize choice of asm insns. + + * expr.c (expand_expr): Use new macros NO_DEFER_POP, OK_DEFER_POP + in several places, to keep stack predictable. + +Mon Jul 4 09:50:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (function_cannot_inline_p): Increase threshold size. + + * flags.h (use_gdb_dbx_extensions): New variable. + * toplev.c: + + * sdbout.c (PUT_SDB_TAG): Delete duplicate defn. + + * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, + REALLY go via signed int. + + * loop.c (may_trap_p): Was detecting floating arithmetic incorrectly. + + * tm-news800.h (CPP_PREDEFINES): Add sony and sony_news. + + * parse.y (check_newline): Avoid infinite loop at eof. + +Sat Jul 2 10:35:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.24 released. + + * stmt.c (expand_asm_operands): Produce proper no-outputs insn. + * recog.c (asm_noperands): Detect no-outputs insns. + (decode_asm_operands): Likewise. + * reload.c (find_reloads): Likewise (add case ASM_OPERANDS:). + + * local-alloc.c (block_alloc): Tests of qty_compare were backwards. + + * flow.c (life_analysis): Turn off code that finds regs live at + function start and marks them not local to any basic block. + + * cse.c (insert_regs): Fix typo (UNITS_PER_WORD). + + * cccp.c: Define max. + + * expr.c (expand_expr): Put each SAVE_EXPR's reg on save_expr_regs, + if not optimizing. + * stmt.c (expand_function_end): Mark each of those regs live + at the end and also retroactively at the beginning of the function. + + * output-vax.c (print_operand_address): New function from old macro. + * tm-vax.h (PRINT_OPERAND_ADDRESS): Call that function. + + * config-vms.h: If not under GNU C, define X_OK, etc. + + * expr.c (move_by_pieces_1): Use * to call GENFUN. + (expand_expr): Compare DECL_FUNCTION_CODE against an enum const. + (preexpand_calls): Likewise. + * genrecog.c (write_tree): Likewise. + * final.c (final): Use * to call the output function. + * reload.c (push_reload): Rename `noshare' to `dont_share'. + + * genoutput.c (output_epilogue): Put more newlines in insn_outfun. + * genemit (gen_exp): Put in more newlines. + +Fri Jul 1 00:23:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * global-alloc.c (allocno_compare): Avoid comparisons of floats + since that is sensitive to roundoff errors. + +Thu Jun 30 09:25:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (PUT_SDB_{DEF,TAG}): Use ASM_OUTPUT_LABELREF. + (PUT_SDB_PLAIN_DEF): New name for old defn of PUT_SDB_DEF + (sdbout_one_type): Use PUT_SDB_PLAIN_DEF for `.eos'. + + * tree.c (allocation_temporary_p): New fcn. + (all_types_permanent): New variable. + (make_node): If that's set, make each ...TYPE node permanent. + * decl.c (grokdeclarator): If traditional, make decl data permanent. + (finish_decl): Make the rtl permanent too. + * stor-layout.c (layout_type): If type is permanent, + make its layout data permanent too. + + * cccp.c: Choose C++ or C at run time via var `cplusplus'. + Separate cplusplus_include_default from include_default. + Get GNU-specific include directory names from macros + GCC_INCLUDE_DIR and GPLUSPLUS_INCLUDE_DIR. + (main): Initialize based on CPLUSPLUS; `-+' sets it. + * Makefile: Set *_INCLUDE_DIR based on $(libdir). + +Tue Jun 28 09:25:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (copy_node): Round LENGTH up to multiple of sizeof (int). + + * expr.c (emit_push_insn): Avoid using PUSH_ROUNDING if not defined. + + * sparc.md (floatsisf2): Insert missing brace. + (mulsi3): Replace reg_o0_rtx, reg_o1_rtx. + + * tm-sparc.h: Define DBX_DEBUGGING_INFO. + + * parse.y (yylex): If traditional, no error for out-of-range float. + + * Makefile: Comment saying how to compile on an Apollo. + + * tm-sparc.h (ASM_FILE_START): Switch to new calling convention. + + * decl.c (init_decl_processing): Create type nodes for 64-bit ints. + (grokdeclarator): use them for `long long'. Warn only if pedantic. + + * optabs.c (init_optabs): Add missing DImode insn names. + + * expr.c (emit_block_move, emit_push_insn): Use movstrqi if appro. + + * expr.c (convert_move): use extendsidi if appropriate. + + * cccp.c (initialize_builtins): Don't install __STDC__ if traditional. + (main): Call initialize_builtins after option processing. + + * integrate.c (output_inline_function): Set current_function_decl. + + * cse.c (fold_rtx): Typo in avoiding 32-bit shifts. + + * cccp.c: Add forward-decl. + +Mon Jun 27 18:06:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * hard-reg-set.h (reg_alloc_order): New variable + based on REG_ALLOC_ORDER, a new machine-description macro. + * regclass.c (reg_alloc_order): Define it. + * local-alloc.c (find_free_reg): Handle reg_alloc_order. + * global-alloc.c (find_reg): Likewise. + * stupid.c (stupid_find_reg): Likewise. + +Sun Jun 26 10:47:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.23 released. + + * tm-3b1.h: Define IDENT_DIRECTIVE. + + * tm-encore.h: Define SDB_DEBUGGING_INFO. + Define SCCS_DIRECTIVE and IDENT_DIRECTIVE. + + * output-ns32k.c: Decl of paren_base_reg_printed must be outside fcns. + + * tm-encore.h (ASM_OUTPUT_DOUBLE): Do 0f, not 0l. + (CPP_PREDEFINES): No -Dns32032. + + * sdbout.c: Include syms.h, not storclass.h. + (unnamed_struct_member): Decl was missing. + (PUT_SDB_INT_VAL, PUT_SDB_VAL): Fix typos. + (sdbout_types, sdbout_one_type, sdbout_parms): Fix typos. + + * Makefile: Add file sdbout.o. + Changed comments pertaining to sysV. + Make a separate target `doc' to make the info files. + + * m68k.md (bit-field insns): Use nonimmediate_operand for the thing + to extract from. + * vax.md (QImode bit-field insns): Likewise. + + * recog.c (nonimmediate_operand): Accept any nonconst general operand. + +Sat Jun 25 07:54:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (lookup_as_function): arg to exp_equiv_p was missing. + +Fri Jun 24 09:14:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (memory_operand): Allow (subreg (mem...)). + +Thu Jun 23 07:34:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * decl.c (finish_enum): Compute minimum value like maximum. + If minimum is negative, install it in the type and make it signed. + + * stor-layout.c (layout_record): STRUCTURE_SIZE_BOUNDARY is minimum. + (layout_type): A RECORD_TYPE or UNION_TYPE must be BLKmode if + any member is BLKmode. This is to prevent putting it in a register. + (layout_decl): If decl's type is BLKmode, the decl *must* be BLKmode. + + * local-alloc.c (find_free_reg): Never allocate the frame pointer reg. + + * tm-sequent.h (PRINT_OPERAND): Bug in SFmode CONST_DOUBLE. + * tm-encore.h: Likewise. + + * flow.c (flow_analysis): Bug in n_basic_blocks error check. + + * stmt.c (expand_asm_operands): Emit no insn if an arg is erroneous. + +Tue Jun 21 08:34:24 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_reloads_address): Write back *loc even if + subst_reg_equivs makes no change, in case subst_index_address did. + + * flow.c: Define macros for -1 and -2 as values of reg_basic_block. + (mark_used_regs): Add an `else'; no change in behavior. + (mark_label_ref): Abort if LABEL_REF doesn't contain a CODE_LABEL. + (find_basic_blocks): Extra error check. + + * output-ns32k.c (print_operand_address): Changes in handling of + register-indirect, and of indexing by sb register. + +Mon Jun 20 04:55:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (collect_definition): Compute needed space more accurately. + Abort if use more space than was allocated. + (rescan) [USE_C_ALLOCA]: Do alloca (0) after handle_directive. + + * genflags.c (gen_insn): Put parens around defns of HAVE_... macros. + +Sun Jun 19 02:52:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_push_insn): Consider PARM_BOUNDARY when compensating + for size of a pushed arg to bcopy. + +Sat Jun 18 07:20:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * New files sparc.md, tm-sparc.h, config-sparc.h, output-sparc.c. + + * final.c (final): After an ADDR_{,DIFF_}VEC, do ASM_OUTPUT_CASE_END. + * tm-3b1.h: Define ASM_OUTPUT_CASE_END. + (PRINT_OPERAND_ADDRESS): Ref the case tables via an intermediate symbol + `LDnnn' whose def. is output by ASM_OUTPUT_CASE_END. + (ASM_OUTPUT_CASE_LABEL): Add missing newline. + + * reload.c (find_equiv_reg): Reject a MEM containing an autoincrement. + +Fri Jun 17 06:58:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * genpeep.c (main): Write `extern' in the decl for `peep_operand'. + + * flow.c (propagate_block): When a dead insn has a REG_RETVAL note, + call mark_set_regs anyway, so that `significant' is updated. + + * jump.c (follow_jumps): New arg IGNORE_LOOPS. If 0, don't follow + the insn at the beginning of a loop that enters the loop; this avoids + interference with loop optimizer. + (jump_optimize, tension_vector_labels): Pass that arg. + + * loop.c (loop_optimize): Mention invalid multiple-entry loops in log. + + * m68k.md (extv, extzv): Fix # of alternatives mismatch in constraints. + +Thu Jun 16 03:06:48 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * genrecog.c (change_state): Was mishandling printing XVECEXP indices + greater than 9. + + * combine.c (subst, simplify_and_const_int): Avoid making SUBREG + of a non-REG. + + * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, + go via signed int. + + * optabs.c (expand_fix): Copy hard_libcall_value reg only once. + + * reload1.c (order_regs_for_reload): Init all elements + of potential_reload_regs to -1. + + * Prevent generation of (set (reg) (plus ... (label_ref ...))). + * explow.c (memory_address_noforce): Like `memory_address' but + never force it into a register. + * expr.c (do_tablejump): Use that. + * m68k.md (casesi): Use that. + + * rtl.h (struct rtx_def, GET_CODE, PUT_CODE): If SHORT_ENUM_BUG, + define the `code' field as a short. + +Wed Jun 15 01:25:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (CPP_SPEC): New spec set by config.h gives flags to cpp. + * tm-*.h for m68k: Define CPP_SPEC to define __HAVE_FPU__ on + appropriate conditions. + + * combine.c (subst): Simplify (not (minus x 1)) and (neg (minus x y)). + +Mon Jun 13 02:22:43 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * typecheck.c (build_array_ref): Avoid duplicate errmsg if index + is an error-mark. + +Sun Jun 12 23:04:39 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * cccp.c (handle_directive): If -traditional, quotes aren't special. + (rescan): Assume newline ends a string constant. + + * cccp.c, cexp.y: Make all fcns non-static; add some forward decls. + + * various: add static forward-decls for various functions. + +Fri Jun 10 00:25:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_targets): When writing back an incremented + value (handling reload_inc), write back to the real place, not to + OLDEQUIV (a register that holds the same value). + + * tm-m68k.h (LEGITIMIZE_ADDRESS): Don't give force_operand a target. + This can cause the use of multiple insns with same output reg, + which can confuse cse. + + * loop.c (consec_sets_invariant_p): + If invariant_p ever returns 2, we return 2. + New arg is # of consecutive sets to look for, + since this info is no longer in n_times_set at move_movables. + (scan_loop): If consec_sets_invariant_p returns 2, set m->cond. + (move_movables): check consecutive insns if m->consec && m->cond. + + * tm*.h: ASM_DECLARE_FUNCTION_NAME now takes 3rd arg, + the FUNCTION_DECL node. + * varasm.c (assemble_function): Pass this arg. + + * expr.c (expand_call, expand_builtin [alloca]): + If STACK_POINTER_OFFSET is defined, add it to stack pointer contents + before using it as address of actual data on the stack. + * stmt.c (expand_decl): Likewise. + + * stmt.c (assign_parms): If 1st parm named `__builtin_va_alist' + came in regs, pretend it came on stack. + Handle pretending a BLKmode var came on the stack. + If REG_PARM_STACK_SLOT, count stack space for each parm + even if the parm came in a register; and use that stack space + if the parm needs to be addressable or is BLKmode. + Rearrange to simplify conditionals. + +Thu Jun 9 01:21:29 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c: + `qty_...' vectors' elements for hard-reg-numbers now aren't used. + `reg_qty' elements for hard-reg numbers now aren't used, + and the element for a pseudo is never a hard-reg number. + (local_alloc): No need to reset those elements. + No need to reset elements out of range of prev block's NEXT_QTY. + (reg_is_born, reg_is_set, wipe_dead_reg): + Divide labor in same way for hard regs and pseudos; + simplify using fact that locality-to-basic-block has been precomputed + and recorded in reg_qty; avoid refs to reg_qty[HARDREG]. + (reg_is_born, wipe_dead_regs): Block-number arg no longer needed. + + * local-alloc.c (combine_regs): Remove old code for tying hard regs + to pseudos; great simplification results. + Use find_regno_note, not regno_dead_p. + +Wed Jun 8 00:18:04 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (subst_reg_equivs): Set a flag if anything is changed. + (find_reloads_address): Check that flag to avoid extra work. + Also check early for safe reg+const address and avoid work. + + * reload.c (find_reloads): Use loops instead of bcopy. + Check early for insn with no real constraints, and return. + Also check for move from hard reg to hard reg and return. + + * cse.c (canon_reg): Rewrite for speed; use a switch. + (cse_insn): Don't call find_reg_note if REG_NOTES is 0. + + * cse.c (cse_insn): Store modified SET_SRC even if there's a REG_EQUIV. + Inhibition was needed when the SET_SRC was the only place to find the + equivalent value; now it is in the REG_EQUIV note. + + * stmt.c (expand_asm_operands): If NINPUTS is 0, make vec of no elts. + * regclass.c (reg_scan_mark_refs): Don't lose if XVEC (x,i) is 0. + +Tue Jun 7 03:51:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (assign_stack_local): If big-endian and MODE is narrow, + the bytes actually used are the least significant. + + * parse.y (skip_white_space): Accept char as arg; let caller read it. + (yylex): Change call. + (check_newline): Return 1st nonwhite char after skipping lines. + (skip_white_space): Change call. + * toplev.c (compile_file): Change call. + + * gcc.c: Pass -traditional to cc1. + + * cse.c (cse_insn): Return very early for (set (reg) (call...)). + Mainly to save time. + (cse-insn) Old code to add REG_WAS_0 note wasted time but did nothing. + + * expr.c (clear_pending_stack_adjust): Really do clear it, + if current fcn doesn't want to be inline. + + * cse.c (cse_insn): Speedup: instead of safe_hash, use canon_hash + or HASHREG. + +Mon Jun 6 21:47:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (rtx_renumbered_equal_p): Reject ADDR_VEC fast. + + * cse.c (cse_insn): Ignore a REG_EQUIV or REG_EQUAL note if the + equivalent value is the same as the SET_SRC of the insn. + + * flow.c (life_analysis): Don't call volatile_refs_p for a CALL_INSN; + just assume value is 1. + (propagate_block): Don't call mark_{used,set}_regs for a stack-pop + since if it isn't dead it has no effect on any useful life data. + (mark_set_1): Return quickly if setting stack-ptr, and almost as + quickly if setting any hard reg. + (mark_used_regs): Likewise for refs. + Also don't scan the vector of an ADDR_VEC or ADDR_DIFF_VEC. + (volatile_refs_p): Likewise. + + * varasm.c (output_constant): Discard NOP_EXPR and CONVERT_EXPR + in integer case (they were for casting a pointer). + + * parse.y (compstmt_or_error): Parse a compstmt after ignoring error. + Use this for fctn body so that an error after store_parm_decls + won't recover to xdecls and call store_parm_decls again. + Typical cause was missing semi at end of last parmdecl. + + * parse.y: Add missing semicolons in actions. + (yylex): Don't use yylloc. + +Sun Jun 5 16:14:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * typecheck.c (build_array_ref): Check arg types here, to make + error message more accurate (not about "addition"). + +Thu Jun 2 02:41:40 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) + + * cccp.c (collect_expansion): `#' isn't special if -traditional. + + * dbxout.c (dbxout_parms): Don't output a regparm symbol + unless the parm got a hard reg assigned. + + * tm-encore.h (ASM_OUTPUT_DOUBLE): Use 0f... not 0d... + + * tm-vax.h (CHECK_FLOAT_VALUE): Define this. + +Wed Jun 1 17:13:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_call): Have sequence points between args. + +Tue May 31 00:27:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (store_fixed_bit_field): Avoid shifting by 32. + * cse.c (fold_rtx): + * symout.c (subrange_p): likewise. + + * local-alloc.c (block_alloc): If operands 1 and 2 commute, + try tying output to operand 2 if operand 1 won't do. + + * toplev.c (compile_file): Pass main_input_file to symout_init. + + * tree.c (build_real, build_real_from_int_cst): + Call CHECK_FLOAT_VALUE if it's defined, to report out-of-range values. + + * tree.c (build_real, build_real_from_int_cst): New 1st arg TYPE. + * parse.y (yylex): Pass this arg; requires parsing suffixes first. + * fold-const.c (fold, combine, fold_convert): Pass this arg. + Handling of float binops in `combine' simplified. + + * tm-encore.h (CPP_PREDEFINES): Remove -Dencore since CC lacks it. + + * final.c (output_source_line): Let ASM_OUTPUT_SOURCE_LINE + be used for SDB also. + +Mon May 30 00:21:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (insert): Was inserting in wrong place in list. + (exp_equiv_p): Was failing to check validity when x == y. + + * tree.c (build_pointer_type): Handle saveable_obstack + like current_obstack. + + * decl.c (finish_decl): Error in test for zero-size array warning. + + * reload.c (find_equiv_reg): New arg MODE specifies mode in which + an equivalent value is needed. Equivalence must be good in that mode. + In addition, notice overlap with multiword register modes. + Simplify, knowing that registers have already been renumbered. + It was invalidating memory-goals too easily; setting a reg + only invalidates memory-goal if its address varies. + * reload.c, reload1.c, jump.c: Calls pass the new argument. + + * cccp.c: For correct ANSI, must reject `$' in identifiers. + (dollars_in_ident): Variable says whether to allow them. + (rescan): Handle `$' as randomchar if that's 0. + (main): dollars_in_ident is set to 0 by -$, to 1 by -traditional. + (rescan, do_define): Delete former pedantic warnings for `$'. + (initialize_char_syntax, initialize_builtins): Inits split to two + functions; former is called after options are scanned + so `$' is in is_idchar conditionally. + * gcc.c: For -ansi, pass -$ to cccp. + * toplev.c, flags.h: Define dollars_in_ident. + * parse.y (yylex): Treat $ as punctuation unless dollars_in_ident. + Delete old pedantic warning about $. + * tm-vms.h: Define DOLLARS_IN_IDENTIFIERS as 1. + + * cccp.c (rescan): Preprocessing numbers can have signs, after `e'. + + * integrate.c (expand_inline_function): Abort, don't return failure, + if max_regno is too low. I believe this can't happen. + + * typecheck.c (build_binary_op_nodefault): + For ordered comparisons, no pedantic warning about void *. + For MAX, MIN, ditto, and also don't allow pointer vs 0. + + * typecheck.c (build_unary_op): Don't allow pointer for +. + + * typecheck.c (convert_for_assignment): + Add missing warning for case of unrelated pointer types. + Change criteria for new ANSI C draft. + + * optabs.c (expand_binop): Don't set unused target_is_not_an_operand. + + * fold-const.c (fold_convert): Don't set unused inprec, outprec. + + * emit-rtl.c, parse.y: Delete unused var. + + * stor-layout.c (add_vc_sizes): Unused function deleted. + * loop.c (constant_high_bytes): #if 0 this unused function. + + * gcc.c (fatal): Add missing arg to delete_temp_files. + + * cccp.c (dump_defn_1): Add missing arg to skip_quoted_string. + + * reload.c (find_reloads): If constraints don't fit in an `asm', + print error instead of aborting. + + * regclass.c (reg_class_record): Ignore `&' in constraint. + +Sun May 29 00:20:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile: Run ranlib only if /usr/bin/ranlib exists. + Add comment saying what to do on system V. + + * tree.c (suspend_momentary): Switch to the saveable_obstack + for the sake of inline functions. + + * flags.h (enum debugger): New enum for write_symbols. + * toplev.c, varasm.c, final.c: Use the enum constants where appro. + Add calls to sdbout paralleling the calls to dbxout; + put each in the appropriate conditional {SDB,DBX}_DEBUGGING_INFO. + + * toplev.c (main): Delete -noreg option; it's now the default. + Make -O an alias for -opt. Rename -g to -gg. -g is alias for -G. + Accept and ignore -Wtrigraphs. + * gcc.c: Simplify the specs. + + * toplev.c (compile_file), tm-*.h: + ASM_FILE_START is now a statement, not just a string to be output. + Output it *after* determining the real source file name. + + * fold-const.c (fold): Simplify x >= CST to x > CST-1 (CST positive). + To simplify this, canonicalize relationals to put constat last. + + * decl.c (duplicate_decls): Make a 2nd errmsg to show previous decl. + + * cccp.c (file_size_and_mode): Delete temporary VMS bootstrap patch. + + * tm-att386.h: New file. + + * decl.c (pushdecl): Warn if a local `extern' decl precedes + a file-scope `static' decl. + + * expr.c (expand_call): No warning for failure to inline. + + * expmed.c (extract_bit_field): copy operand 1 of extv or extzv + into register if memory isn't allowed. + +Sat May 28 02:10:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib.c, Makefile: Delete va_end. + + * final.c, symout.c: Check DBX_DEBUGGING_INFO, not NO_DBX_FORMAT. + + * genemit.c (gen_expand): Notice a CALL inside a PARALLEL. + + * regclass.c (init_reg_sets_1): Part of init_reg_set is put in this + new fn which is called after options are scanned. + Now CONDITIONAL_REGISTER_USAGE can depend on the options. + (fix_register): Just alter the data that init_reg_sets_1 will look at. + + * reload1.c (reload): Don't complain if two different but tieable + modes require groups of the same regclass (assuming same size group). + + * cccp.c: Add 3rd arg to all `open' calls. + + * parse.y (check_newline): Typo prevented ignoring whitespace. + + * cccp.c (perror_with_name): fprintf had harmful extra arg. + + * cccp.c (main, trigraph_pcp): -Wtrigraphs means warn if any trigraphs. + + * emit-rtl.c (gen_sequence): If LEN is 1, avoid looking at PATTERN + of something that doesn't have one. + + * reload1.c (alter_frame_pointer_addresses): frame pointer can + occur by itself, not just inside a PLUS. + (reload): Call eliminate_frame_pointer before reload_as_needed. + Otherwise the latter can make reload insns that copy the frame ptr + to a data reg, but 68k can't copy sp+const to a data reg. + + * decl.c (implicitly_declare): Always save the implicit decl + permanently. Reuse an old one if it exists. + * tree.c (resume_temporary_allocation): Used after `end_temporary...' + to go back to temporary allocation. + + * stor-layout (layout_{type,decl}): Call variable_size. + (variable_size): Turn a size into a SAVE_EXPR and either compute + it right away or put it on a list to be computed later. + (get_pending_sizes): Return that list and clear it out. + * stmt.c (expand_start_function): Tell `variable_size' to compute + sizes right away, and compute those saved on the list. + (expand_end_function): Tell it to put them on a list. + +Fri May 27 00:02:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * dbxout.c (dbxout_symbol): For local static var, use 'V', not 'v'. + + * gcc.c (main): Don't handle SIGHUP or SIGTERM if shell ignored it. + + * Makefile, gcc.c: Propagate Make var `libdir' to gcc search path. + + * expr.c (expand_expr): a PARM_DECL with no rtl can occur in size of + `a' in `foo (a,i) int i; struct {int x[i];} a;', so report an error. + + * flow.c (insn_dead_p): insn that makes stack bigger is never dead. + * combine.c (try_combine): Don't splice out stores into stack ptr. + + * reload.c (find_equiv_reg): Test given regno for OVERLAPPING_REGNO_P. + + * varasm.c (assemble_variable): Use saveable_obstack for allocation. + +Thu May 26 01:17:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * integrate.c (save_for_inline): Clear unused slots in parmdecl_map. + (There may be some non-parm regs below max_parm_regno.) + * integrate.c (copy_for_inline): Don't crash if parmdecl_map elt is 0. + + * Don't fail to output a static inline function that was referenced + via a local extern decl before its definition. + * expr.c (expand_call): If need to mark a fcn decl addressable, + mark the identifier addressable also. + * typecheck.c (mark_addressable): If marking fcn addressable, + mark the identifier as well. + * decl.c (start_function): If identifier was marked addressable, + propagate it to the function. + + * parse.y (yylex): Check for ERANGE after atof is called. + (Sun doesn't report ERANGE.) + + * loop.c (may_trap_p): Any floating arithmetic may trap. + +Wed May 25 00:03:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * parse.y: Delete `noalias'. + (asm_operand): Don't allow this to be empty. + (asm_operands): Do allow this to be empty. + + * reload.c (operands_match_p): Don't let REG and SUBREG match + if the reg isn't a hard reg. + No longer nec. to check reg_renumber, now that reload + substitutes the hard regno. + + * reload1.c (reload): Counting existing spilled groups, + check HARD_REGNO_MODE_OK so we don't get fooled by an odd-even pair. + Spill entire need for new groups before spilling any solitary regs. + Reg already counted against max_nongroups can't become part of a group. + (new_spill_reg): Do bookkeeping associated with a new spill-reg. + (n_spills): This var is now static, no longer passed as arg + within the file. + + (reload_reg_class_lower): Handle all group-reloads before solitaries. + (choose_reload_targets): therefore #if 0 the special code for + finding solitary registers that aren't suitable for groups. + But fix two bugs in it: braino deciding whether a reload + is looking for 1 register (not a group). Use CLASS_MAX_NREGS. + Also braino deciding whether a spill reg can be in a group. + Did not fix bug that it fails to test HARD_REGNO_MODE_OK, + so it might split up an even-odd pair. + + * vax.md: Special patterns for 8 and 16-bit fields, to make + move-insns (like the ones for the 68k). + + * tree.c (convert_to_integer): Pass truncation down thru COND_EXPR + as through a binary operator. + + * typecheck.c (build_cond_expr): If unpromoted operand types match, + don't promote them--let containing expression promote (just once). + +Tue May 24 14:46:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * combine.c (subst): Simplify (subreg (sign_extend X) 0). + + * tm-hp9k320.h: Delete NO_DBX_FORMAT. + * Most tm...h files: Define DBX_DEBUGGING_INFO. + * dbxout.c: Change conditional to DBX_DEBUGGING_INFO. + + * integrate.c (expand_inline_function): If inline fcn was declared to + return QI, but actually computes an SI, use SImode for INLINE_TARGET + but actually return a QI. + + * varasm.c (force_const_mem): Failed to determine alignment bdry + from machine mode. + + * jump.c (jump_optimize): Don't delete (move X Y) if X or Y is a + PRESERVE_DEATH_INFO_REGNO_P register. + + * final.c (output_addr_const): In PLUS, output constant term last. + + * final.c (final): Before outputting an insn, do FINAL_PRESCAN_INSN. + + * final.c (next_block_index): No longer static. + (final): Add SDB_DEBUGGING_INFO cases for outputing NOTEs + for beginning and end of a block. + (output_source_line): Add SDB_DEBUGGING_INFO case for line number. + * varasm.c (assemble_function): Add code for SDB symbol output. + + * gnulib.c: Allow config to override INTIFY. + New macro SFVALUE for data type to return a single-float in. + + * combine.c (remove_death): No longer `static'. + + * reload1. (choose_reload_targets): PRESERVE_DEATH_INFO_REGNO_P + selects hard regs for which death info should be updated for final. + + * reload1.c (reload_as_needed): Let INSN_CLOBBERS_REGNO_P + prevent inheritance of certain reloads. + + * reload.c (find_equiv_reg): Let OVERLAPPING_REGNO_P reject + an equiv reg. Needed for funny float regs on 80387. + + * cccp.c (do_ident): Define #ident as a no-op if IDENT_DIRECTIVE. + Warn if pedantic. + (do_sccs): Warn if pedantic. + + * emit-rtl.c (restore_reg_data): Set cur_insn_uid--prevent duplicates. + +Sun May 22 12:25:06 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * Version 1.22 released. + + * reload1.c (reload): Spilling isn't finished till max_nongroups is 0. + + * tm-encore.h (PRINT_OPERAND): No `$' before a CONST. + +Sat May 21 13:08:54 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * fold-const.c (combine): Typo in MIN_EXPR, MAX_EXPR. + + * reload1.c (reload): Was counting insn_groups as total size of groups, + not number of groups. + A new spilled group counts against group-needs of superclasses. + + * parse.y (parmlist{,_or_identifiers}_1): In error case, + return a tree list just as in the other cases. + +Fri May 20 02:14:51 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * config-vax.h, config-m68k.h: If __GNUC__, use builtin-alloca. + + * genpeep.c (match_rtx): Generated code was testing the wrong rtx + when testing an int or string at a nonzero index in the rtx. + + * reload.c (find_reloads): Typo checking `modified' for conflict + with an earlyclobber. + + * reload.c (find_equiv_reg): Reject stack ptr as return value. + + * expr.c (expand_builtin): Alloca must do pending stack adjust. + +Thu May 19 13:01:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * flow.c (propagate_block): Skipping back across libcall didn't happen + due to failing to set PREV. + + * expr.c (emit_library_call): Code to increment and decrement + current_args_size broke since emit_call_1 was changed to restore it. + + * combine.c (try_combine): When i1 or i2 auto-incs a reg, don't combine + if i3 uses that reg. + + * config-hp9k3.h: #define bcopy, bcmp, bzero here. + * conf-hp9k320.h: Delete file. + + * integrate.c: Don't include strings.h--no need. + + * stmt.c (expand_asm_operands): Don't make zero-length vectors. + + * loop.c (scan_loop): After a fcn call, maybe-trap insns can't move. + The fcn call might exit and that would prevent the trap. + + * reload1.c (reload): Set reload_first_uid to next uid to be used. + * reload.c (find_equiv_reg): Use reload_first_uid to ignore insns + that are due to reloading--only if reload_reg_p is not 0 or 1. + +Wed May 18 22:11:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * typecheck.c (build_unary_op): Don't complain about array + as argument to `!'. + + * decl.c (pushdecl): If locally declaring an extern function, + check the identifier's global value in case it's an inline function. + +Mon May 16 03:06:08 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * output-ns32k.c (output_shift_insn): New fn, maybe turn shift to adds. + (reg_or_mem_operand): Predicate for a non-immediate general_operand. + * tm-ns32k.h (CONST_OK_FOR_LETTER_P): Define letter K. + * ns32k.md: Use output_shift_insn for various addr insns that shift. + Don't allow nonexplicit constants in lprd, multiply or truncate insns. + Use reg_or_mem_operand for constraint in op1 of divide insns; + a constant there causes regclass to screw up. + Split alternative constraints on the bit-field insns to avoid + out-of-range operands in exts, inss. Some cases of extraction + can be done faster via memory. + + * flow.c (mark_set_1): When adding a REG_DEAD note, inc reg_n_deaths. + + * dbxout.c (dbxout_type_def): Do nothing for {integer,char}_type_node. + +Sun May 15 00:56:44 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * tm-sequent.h, tm-ns32k.h, tm-encore.h (PRINT_OPERAND): + Was treating SF's as SI's. + + * expr.c (emit_move_insn): Check all CONST_DOUBLEs for + LEGITIMATE_CONSTANT_P and put them in memory if not. + + * local-alloc.c (combine_regs): Allow a reg to be tied to a qty + if the reg's class is contained in the qty's class + (as well as if the reg's class contains the qty's class as before). + Rename qty_reg_class to qty_min_class and make it the smallest + class of any reg tied to the qty. + (reg_class_subset_p, reg_meets_class_p, update_qty_class): + New subroutines to implement this. + (local_alloc): Init reg_qty to -1 for pseudos not in cur. basic block. + (reg_is_born): Abort if pseudo not in basic block has -2 in reg_qty. + + * jump.c (rtx_renumbered_equal_p): Insist that modes of REGs match. + +Sat May 14 01:05:35 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) + + * stmt.c (expand_return): Empty frame frame_offset isn't nec. 0. + + * expr.c (emit_call_1): Use stack_size_rtx everywhere appropriate. + + * decl.c (init_decl_processing): Set sizetype to `unsigned long' + if `int' is less than a word. + + * stddef.h (size_t, ptrdiff_t): Both are now long. + +Fri May 13 01:06:00 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) + + * emit-rtl.c (gen_lowpart): Handle non-lowpart subreg as arg. + + * recog.c (register_operand): VOIDmode means allow any mode. + (immediate_operand, nonmemory_operand): Likewise. + + * emit-rtl.c (classify_insn): Update for changed CALL_INSN format. + (emit): New function to emit an rtl pattern as the right kind of insn. + * jump.c (simplejump_p): No longer static. + + * genemit.c (gen_expand): For match_operand at top level, call `emit'. + Use `emit_call_insn' when appropriate. + (gen_exp): Handle rtx's that contain strings. + + * final.c, symout.c: If not NO_DBX_FORMAT, include stab.h to get the + N_... symbols. Use their default definitions only if they're undef. + + * expr.c (expand_call) [no PUSH_ROUNDING]: Always set argblock + if there are any stack-passed arguments. + + * typecheck.c (build_unary_op): Mark all increment-exprs volatile. + + * recog.c (reg_renumbered_fits_class_p): Delete private copy of + reg_class_contents. + + * reload1.c (forget_old_reloads): Handle PARALLEL case by recursion. + Explicit store into a spilled reg invalidates old reloaded contents; + this can occur when we drop through into a basic block whose need was 0 + (and so whose local pseudos were not spilled). + + * gcc.c (main): If -v, print gcc's own version; also no error msg + if no input files. + + * loop.c (may_trap_p): Mem ref to nonconstant address may trap. + (scan_loop): Check may_trap_p only when insn is in other respects ok. + + * cexp.y: #include config.h (for decl of alloca on some machines). + +Thu May 12 17:24:19 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * regclass.c (regclass): When inserting an insn at start of block, + update basic_block_head. + +Wed May 11 00:47:09 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * stmt.c (assign_parms): DECL_OFFSET should be offset as passed + (not including big-endian width-change correction). + + * typecheck.c (shorten_compare): Set unsignedp[01] right in case + where get_narrower makes no change. + (build_binary_op_nodefault): Likewise for shortening shifts. + + * stmt.c (expand_end_case): Use type_for_size to get the type + to convert the index to, since `int' is wrong if -mshort. + + * decl.c (grokdeclarator): Don't check PARM type for completeness. + (grokparms): If fn definition, check all parm types for completeness. + (store_parm_decls): Likewise. + +Tue May 10 22:42:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * typecheck.c (store_init): For invalid init, store error_mark_node. + * varasm.c (assemble_variable): Ignore error_mark as an init. + * stmt.c (expand_decl): If init is error_mark, init to 0 if possible. + This avoids a spurious "uninitialized variable" warning. + +Sun May 8 17:08:07 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) + + * tm-hp9k320.h: Define STRUCTURE_SIZE_BOUNDARY. + + * decl.c (get_parm_info): Replaces get_parm_types. Returns a tree_list + containing parmdecls and tag list as well as type list. + (grokparms): Accept that tree_list as argument. + (grokdeclarator): Calling grokparms, say "not a definition" for the + function declarators for arg or value types within a definition. + + * parse.y: Call get_parm_info. + (parmlist_or_identifiers): If identifiers, make a tree_list + like the one get_parm_info returns. + +Fri May 6 16:44:19 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * m68k.md (casesi): Delete template aside from match_operand's. + + * tm-encore.h: New file from Robert Brown. + + * ns32k.md: Use %c in some addr insns. + (tst*): Use {d,f,}const0_rtx to make the constant 0; OS-independent. + (call, call_value): Use %? before address in a bsr. + + * output-ns32k.c (print_operand_address): To output a local label, + use `output_asm_label'. + Make SEQUENT_ADDRESS_BUG conditionals happen at compile time. + + * tm-ns32k.h: Delete SEQUENT_HAS_FIXED_THEIR_BUG. + (PRINT_OPERAND): Output nothing for `%?'. + * tm-sequent.h: (PRINT_OPERAND): Output nothing for `%?'. + + * final.c (output_asm_label): No longer `static'. + +Thu May 5 09:03:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * explow.c (memory_address): Ignore flag_force_reg unless optimize. + Also ignore it for addresses of stack slots (avoid invalid REG_EQUIVs). + + * typecheck.c (digest_init): If traditional, allow `char x[100]=0;'. + + * tree.c (get_unwidened): Don't alter a COMPONENT_REF if + innerprec equals the precision of the existing type. + It was changing pointers to integers. + + * m68k.md (movdi): Put all fpregs in separate constraint alternatives + and handicap them so spill reg won't be an fp reg. + + * parse.y (yyerror): Use the arg as part of the error message. + + * decl.c (start_function): Give the RESULT_DECL type int rather + than char or short. + * typecheck.c (c_expand_return): Convert value from fn's return type + to the RESULT_DECL's type. + + * Avoid generating dbx xrefs to enums, since dbx loses on them. + Do this by outputting all types in order of definition. + This is done only for top-level types; problem remains for local ones. + + * decl.c (finish_decl): Do rest_of_decl_compilation for TYPE_DECLs. + * toplev.c (rest_of_decl_compilation): Do dbxout_symbol for them. + + * dbxout.c (dbxout_symbol): Check DECL_RTL only for fns and variables. + For a TYPE_DECL, ignore it if the type was already output + and its preferred name is the TYPE_DECL. Else output type in full. + + * decl.c (pushdecl): Don't prefer typedef names to type tag names. + + * stor-layout.c (chain_type): Build chain in forward order. + + + * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Error getting length of table. + + * tm-3b1.h: #define SGS_3B1 was missing. + + * typecheck.c (build_compound_expr): Ignore non-volatile subexprs. + + * fold-const.c (fold): Simplify (unsigned) foo >= 0, etc. + + * stor-layout.c (layout_type): Set TYPE_PRECISION of ptr types. + +Wed May 4 08:06:25 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * parse.y: Don't use the Bison @ construct, since it makes parser slow. + + * decl.c (finish_function): Delete FILENAME and LINE args. + + * typecheck.c (digest_init): No pedantic warning for array="string". + +Tue May 3 09:09:30 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * toplev.c (main): Ignore `-Wcomment'. + * gcc.c: Pass -Wall to cpp (which treats it like -Wcomment). + + * tm-isi68.h: Greatly simplified; now works only with GAS. + + * tm-m68k.h (EMPTY_FIELD_BOUNDARY): now 16 (right on Sun, ISI and HP). + * tm-sun3.h: No need to redefine it. + + * decl.c (finish_struct): Don't ever make DECL_ALIGN smaller. + + * decl.c: Rename min, max to MIN, MAX. + + * typecheck.c (convert_for_assignment): Avoid warning if assigning + a `void *' from a `const void *'. + + * combine.c (FAKE_EXTEND_SAFE_P): Turn off for mem refs; avoid faults. + +Mon May 2 07:28:27 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * tm-vax.h: Support -mg switch to use g-float instead of d-float. + New macros TARGET_G_SWITCH, ASM_DOUBLE_CHAR. + Changes in TARGET_SWITCHES, ASM_OUTPUT_DOUBLE. + Define code `#' for PRINT_OPERAND. + * vax.md: use `#' in opcodes for doubleword float. + + * tm-vax.h: Define UDIVSI3_LIBCALL and UMODSI3_LIBCALL. + + * cccp.c (main, do_include): Implement -I- switch. + + * jump.c (jump_optimize): When hunting NOTE_INSN_FUNCTION_END, + skip final RETURN (found on the vax). + + * toplev.c (main): -Wall is equiv to all -W switches combined. + + * stmt.c (expand_decl, expand_end_bindings, + expand_{start,end}_function). The -noreg treatment of `register' vars + is extended to vars used as addresses of vars in memory (varying-size + structures). + (use_variable): Emit USE for regs used in specified rtx. + + * cse.c (fold_cc0): Stack-frame addresses are always nonzero. + (fold_rtx): 0200 bit in prev_insn_cc0 means only zeroness is known. + + * parse.y (parmlist): poplevel needs 3 args. + +Sun May 1 07:20:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * decl.c (start_function): typo checking for incomplete return type. + + * emit-rtl.c (restore_reg_data): If a pseudo appears nowhere, + don't leave its slot empty; create a pseudo for that slot. + + * Version 1.21 released. + + * expr.c (expand_call): Merge duplicate code for structure_value_addr. + + * emit-rtl.c (restore_reg_data): Delete error check; it's legit for + a pseudo reg to appear nowhere in the rtl. + +Sat Apr 30 07:35:31 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * integrate.c (copy_rtx_and_substitute): Fix typo for arg_pointer_rtx. + + * decl.c (poplevel): Undo previous change with #if 0. + + * stmt.c: `struct nesting' now records the depth on the stack. + Each expand_start... must update and record the depth; + each expand_end... uses macro POPSTACK to pop. + This way, if a level isn't explicitly popped, it won't cause + circular structure. + + * dbxout.c (dbxout_type): Replace with main variant only if incomplete. + + * typecheck.c (build_unary_op): Test of `pedantic' was backwards. + + * expr.c (STACK_BYTES): Typo in definition. + + * typecheck.c (build_binary_op_nodefault): Rename code1 to code0, + and likewise for code2, tt1, tt2. + + * expr.c (expand_call): Wrong arg order for warning_with_decl. + +Fri Apr 29 08:41:06 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * integrate.c (copy_decl_tree): New arg is depth in recursion. + Always discard the outermost LET_STMT being copied; never discard any + others. This way the copied LET_STMTs correspond to the copied NOTEs. + + * varasm.c (decode_rtx_const): For SYMBOL_REF, use string address + not address of the rtx. Library fns have only one copy of the name + but many copies of the SYMBOL_REF. + + * expr.c (emit_call_1): New arg OLD_ARGS_SIZE is used to reset + current_args_size. + (emit_library_call, expand_call): Pass new arg; don't restore it here. + + * flow.c (life_analysis): Don't mark sp live at end if fn is empty. + + * parse.y (parse_or_identifiers_1): Handle `error' in here, not in + callers notype_declarator etc. Also read the closeparen here. + +Thu Apr 28 12:43:52 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * expmed.c (expand_shift): In extzv strategy, handle the operand + predicates for operands 0, 1 and 3. (Not needed for 2.) + * vax.md: extzv pattern for SImode op1 must recognize general_operand + since the pattern named "extzv" allows them. + +Wed Apr 27 00:52:44 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * expr.c (emit_call_1): New arg NEXT_ARG_REG describes # regs + used for passing args. + (emit_library_call, expand_call): Provide that argument. + + * explow.c (round_push): New fn: round arg up to STACK_BOUNDARY. + * expr.c (expand_builtin): Use round_push on size for __builtin_alloca. + * stmt.c (expand_decl): Likewise for variable-size objects. + * expr.c (expand_call): Likewise for args_size.var. + Also use STACK_BOUNDARY to round a constant arg-block size. + Pass emit_call_1 that rounded value. + (emit_library_call): Round arg_size with STACK_BOUNDARY. + * tm-spur.h: Define STACK_BOUNDARY instead of ROUND_CALL_BLOCK_SIZE. + * tm-m68k.h: Define STACK_BOUNDARY as 16. + + * expr.c (emit_call_1): Don't change current_args_size. + (emit_library_call, expand_call): Always restore current_args_size + to ambient value, after calling emit_call_1. + + * tm-hp9k320.h: Don't define USG here. + * config-hp9k3.h: New file. USG defined here. + + * tm-3b1.h: #undef ASM_OUTPUT_ASCII (a defn came from tm-hp9k320.h). + + * decl.c (grokdeclarator primarily): Cast all RID_... to (int) before + using them in arithmetic. Placates CC on Sequent. + + * emit-rtl.c (emit_jump_insn): Return proper value, for a SEQUENCE. + * emit-rtl.c (emit_call_insn): Handle SEQUENCE like emit_jump_insn. + +Tue Apr 26 02:41:26 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) + + * cccp.c (macroexpand): If traditional, don't disable called macro. + (macarg1): Was failing to count backslash-newline inside a string + in a macro arg as part of file's linenumber. + +Mon Apr 25 18:46:53 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) + + * jump.c (jump_optimize): Don't do April 20 optimization on first + iteration; let other simpler opts be done before this is considered. + +Sun Apr 24 02:45:28 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * tree.c (staticp): a CONSTRUCTOR can be static. + + * varasm.c (output_constant_def): Always return memref, not address. + + * decl.c (complete_array_type): New fn, make an array type complete + based on an initializer. + (finish_decl): Use complete_array_type. + * parse.y (expr_no_commas): When parsing a constructor, + Use complete_array_type on constructors for incomplete array types. + + * typecheck.c (digest_init, store_init_value,process_init_constructor): + It's now TREE_STATIC, not TREE_ADDRESSABLE, that records that all elts + in a CONSTRUCTOR are simple constants. + (digest_init): A CONSTRUCTOR with non-null type is treated as ordinary + expression, not as a braced initializer. + Allow init of an array from an array-valued expr; warn if pedantic. + * expr.c (expand_expr, CONSTRUCTOR case): Put in memory only if static. + Was making an extraneous level of MEM; output_constant_def does it all. + + * typecheck.c (build_unary_op): Allow ADDR_EXPR of static CONSTRUCTOR. + (default_conversion): Likewise. + (initializer_constant_valid_p): Constructor is ok if static. + + * gcc.c: Change -fnostd... to -nostd... + * cccp.c (main): Likewise. + + * Everywhere: Use REG_NOTE_KIND to get the kind of a reg note. + + * rtl.c (find_regno_note): New function. + * flow.c (flow_deadp): Deleted; caller uses find_regno_note. + * global-alloc.c (reg_dead_p): Deleted. + (global_conflicts): Use find_regno_note instead of reg_dead_p. + + * final.c (final) Use find_reg_note to look for a REG_INC. + * combine.c (insn_has_inc_p): deleted; callers use find_reg_note. + (try_combine): Use find_reg_note whenever looking for a REG_INC. + (regno_dead_p, remove_death): Check the REG_NOTE_KIND before assuming + that the datum in it is a REG. + * reload1.c (reload): Use find_reg_note to find a REG_EQUIV. + + * gcc.c: Don't delete .o files if not all compilations succeed. + (record_temp_file): New arg SUCCESS_ONLY--delete file only if succeed. + (delete_temp_files): New arg SUCCESS says compilation succeeded. + (store_arg): Now 3 possibilities for arg TEMPNAMEP; 2 = del on success. + (do_spec_1): For %d, set delete_this_arg to 2. + + * decl.c (poplevel): Warn about any still-incomplete type-tags. + +Sat Apr 23 02:54:16 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) + + * expr.c (expand_builtin): For alloca, round arg up to multiple + of PARM_BOUNDARY. Also to convert it to Pmode unless it already is. + + * stor-layout.c (layout_union): Bug in 14 April change: + use caller-specified alignment as minimum, not as maximum. + + * parse.y (skip_white_space): Avoid infinite loop on unterm. comment. + +Fri Apr 22 00:22:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * cccp.c: Text following #else or #endif is just a warning. + (rescan): Digit-case was dropping into the $-case; reorder. + + * cccp.c (rescan): Comment start when -traditional was output as + `/*'; should be nothing. + + * jump.c (jump_optimize): Fix prev change: + do nothing if range1end == range2end; + don't lose any NOTEs when splicing. + + * flow.c (propagate-block): For CALL_INSN, clobber the call-used regs + only after mark_set_regs is done; avoids confusion about lifespan + of function value reg. + + * gcc.c: Pass -Wcomment to cpp. + + * cccp.c (main, rescan): If -Wcomment, warn if `/*' inside comment. + + * decl.c (duplicate_decls): Ignore `inline' decl following definition. + + * m68k.md (casesi): Split it up into subroutines, so insns emitted + by the call to memory_address (on 68000) come in the right place. + + * combine.c (record_dead_and_set_regs): Notice storing in a SUBREG. + + * integrate.c (expand_inline_function): Insn to copy a subroutine's + return-value was being output twice, once incorrectly. + + * reload.c (find_equiv_reg): A stack-push insn does not invalidate + an equiv for a goal in memory. + Any other write to memory does invalidate any goal in memory + (PARALLEL case failed to check for this). + + * expmed.c (expand_shift): In the extzv clause, force shifted value + out of memory if -fforce-mem. + + * print-tree.c (prtypeinfo): Some attributes were missing. + (dump): In ..._TYPE nodes, ignore the TREE_CHAIN field. + + * cse.c (note_mem_written): Pushing on stack does not invalidate mem. + + * vax.md (extv/andl peephole opt): Made incorrect code if output was + pushed on stack. Added special case code. + (extv, extzv for SImode operand): Require register_operand. + +Thu Apr 21 00:24:52 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) + + * stmt.c (assign_parms): Round current_function_pretend_args_size up. + + * integrate.c: `pushlevel' arg was missing. + + * dbxout.c (dbxout_type): Undo rest of March 29 change: + When a named type is first seen inside another type, output an xref + and let the real definition come out later. + It is strange that Sun dbx has sometimes appeared to demand + one strategy and sometimes appeared to demand the other. + + * typecheck.c (convert_for_assignment): Allow conversion to or from + `const void *', etc., unless pedantic. + + * decl.c (get_parm_types): For `foo (void){}', set last_function_parms + to nil so store_parm_decls won't lose. + + * combine.c (subst): (plus (plus X N) -N) => X. + + * explow.c ({anti_,}adjust_stack): Don't make a copy of + `stack_pointer_rtx'. + + * integrate.c (expand_inline_function): Typo testing for the + USE that indicates a CALL_INSN's value is being returned. + + * expr.c (expand_builtin, alloca case): Copy arg to reg before + adjusting stack, to avoid invalid insns on some machines. + +Wed Apr 20 00:15:14 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) + + * typecheck.c (build_binary_op_nodefault): When shortening, + get_narrower may make no change because ARGn is already narrow. + In this case, set UNSIGNEPn from ARGn's type. + + * typecheck.c: Rename ARG1,ARG2 to ARG0,ARG1, etc. in several fns. + + * tm-vax.h: Turn off continuation on DBX output. + + * typecheck.c (build_function_call): Don't change __builtin_ffs to an + FFS_EXPR. Note that __builtin_alloca has always made a CALL_EXPR. + * expr.c (expand_builtin): New function expands all CALL_EXPRs that + are really built-in functions. + (preexpand_calls): Do nothing to a CALL_EXPR for a built-in function. + + * loop.c (count_loop_regs_set): Don't move a reg that is in a CLOBBER. + + * stupid.c (stupid_mark_refs): Was getting hard reg's mode from + the wrong place. + + * rtl.c (note_stores): Typo in checking vector elt for SET vs CLOBBER. + + * stmt.c (expand_end_bindings): If restoring stack level, + first do pending stack adjust (so it won't be done erroneously after). + (expand_goto): likewise. + + * rtl.h: LABEL_NUSES was an rtx. It should be an int. + * stmt.c (expand_label, expand_goto): Delete frobbing with LABEL_NUSES; + the value stored there was the same as the CODE_LABEL rtx. + + * jump.c (jump_optimize): Detect if (foo) ...; else { ... break;} + and change to if (! foo) { ... break;} else ...; so can drop out. + (next_label): New fn returns the next label after given insn. + +Tue Apr 19 21:30:05 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * flow.c (insn_dead_p): Delete special handling for stack ptr. + (mark_set_regs, mark_used_regs): Likewise. + (life_analysis): Mark stack ptr live at end of fn if necessary. + (propagate_block): Mark stack ptr live leading up to a CALL_INSN. + + * jump.c (jump_optimize): #if 0 around stack-adjust-deletion code. + + * cse.c (fold_rtx): Change const_arg from an array to 3 separate + scalars for the first three operands. + Handle SIGN_EXTEND and ZERO_EXTEND. + + * integrate.c (copy_rtx_and_substitute): If arg is 0, return 0. + (expand_inline_function): Separate vars for old pattern and new insn. + + * expr.c (expand_call): Set TREE_ADDRESSABLE if call is not inlined. + +Tue Apr 19 02:25:22 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * Version 1.20 released. + + * tm-ns32k.h: Define new reg class GEN_OR_FLOAT_REGS + so that GENERAL_REGS and FLOAT_REGS have a union. + + * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Recognize a stack-push. + * ns32k.md: Many constraints must now allow or reject pushes. + Delete the special patterns for pushing. + +Mon Apr 18 06:02:39 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) + + * reload1.c (forget_old_reloads): For a multiword hard reg, + forget old reloads for each word. + + * reload.c (find_reloads): Typo in calling push_replacement. + + * tm-ns32k.h (HARD_REGNO_MODE_OK): Failed to allow fp regs for SFmode. + +Sun Apr 17 01:21:35 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * tm-sequent.h (PRINT_OPERAND): Handle absolute integer memaddress. + + * ns32k.md: Add DImode push insns. Add QImode and HImode push insns. + Supply missing statement in movsf. + + * dbxout.c (dbxout_type): Don't contin before 1st field of struct. + + * dbxout.c (dbx_continue): Use DBX_CONTIN_CHAR instead of backslash. + + * loop.c (scan_loop): Ov vax, the "loop-entry jump" can be a return, + in which case perhaps there is no label following it. + Detect phoniness of loop before looking for that label. + + * decl.c (init_decl_processing): Builtin fn names start with `__'. + + * typecheck.c (shorten_compare): Warn about constant result only in + cases like (char)x < 0x80, where old C compilers made it -0x80. + + * vax.md: All jbs/jbc/jlbs/jlbc patters with op0 in SImode + must reject mode-dependent memory addresses. + + * recog.c (mode_independent_operand): Test for general operand + that doesn't have a mode-dependent memory address. + + * varasm.c (assemble_function): ASM_DECLARE_FUNCTION_NAME, if def, + is now responsible for outputting the function name as a label. + +Sat Apr 16 05:02:55 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * cccp.c (do_xifdef): Warn about punctuation or other junk in argument. + Warn about no argument. If pedantic, warn if arg starts with digit. + If traditional, ignore all after first non-idchar and never warn. + +Thu Apr 14 01:12:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * integrate.c (expand_inline_function): Typo for addressable parms. + + * cse.c (insert_regs): Copying half a DImode into half of another + does not make the two DImode regs equivalent. + + * recog.c (general_operand): Was failing to accept symbol_ref:SI + when MODE arg was VOIDmode. + + * expr.c (preexpand_calls): For RTL_EXPR, do nothing. + + * decl.c (start_enum, build_enumerator): Remember default for next one + as a tree node (so the high-half isn't lost in a negative one). + + * stor-layout.c (layout_{record,union}): Pay attn to initial value + of TYPE_ALIGN in computing final alignment. + (layout_union): Round size up to multiple of the alignment. + + * decl.c (finish_struct): Don't alter size after type is laid out. + Instead, set TYPE_ALIGN before layout_type. + + * reload1.c (choose_reload_targets): Introduce reg_has_output_reload. + If there are two separate reloads (one in and one out) + for the same (hard or pseudo) reg, always set reg_last_reload_reg + based on the output reload. + +Wed Apr 13 21:26:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * reload.c (find_reloads_address_1): Always barf if a "constant" + register is autoincremented. + + * parse.y (structsp): suspend_momentary before start_enum; + else some nodes made by start_enum might be momentary. + + * stmt.c (expand_start_case): New arg is nominal type for comparison + (which is the promoted type of the index expression). + (pushcase): Always convert VALUE to that nominal type + before validating it. + * parse.y (case stmt): Promote each case-value before pushcase. + * typecheck.c (c_expand_start_case): Promote the index-expr + to determine the nominal type, before get_narrower. + +Wed Apr 13 12:43:08 1988 Chris Hanson (cph at kleph) + + * tm-hp9k320.h: Define ASM_FORMAT_PRIVATE_NAME. HPUX asm forbids + `.' in identifiers, so use `___' (there is some danger in this choice). + +Tue Apr 12 23:26:48 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * local-alloc.c (block_alloc): Make 1 extra slot in regs_live_at. + + * stmt.c (optimize_bit_field): Function moved from reload1.c. + When need to generate a SIGN_EXTEND or ZERO_EXTEND, make it a separate + insn and use gen_extend_insn to make it. + * optabs.c (gen_extend_insn): New fn, construct body of an insn + to extend Y and store in X. + +Mon Apr 11 19:20:57 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) + + * decl.c (finish_decl): Error if static var has variable size. + + * parse.y (yylex): Warn if int const is out of range. + + * parse.y: New keyword __alignof. + * typecheck.c (c_alignof): Given a type, return its alignment in bytes. + + * typecheck.c (c_sizeof{,_nowarn)): Don't return integer_one_node; + use build_int to make sure we get something with type `sizetype'. + + * Support variable-sized structures (containing var-sized arrays). + + * stmt.c (assign_parms): Handle parms whose size varies. + Use `memory_address' when constructing memrefs to args; + no need to set `invalid_stack_slot'. + Don't make a REG_EQUIV note for a scalar arg at variable offset. + * stor-layout.c (genop, build_int): No longer `static'. + + * stor-layout.c (convert_units): Optimize ceil (ceil(x,2)*2, 4) etc. + + * stmt.c (expand_decl): Don't abort if var-sized object has init. + Convert variable size from units of DECL_SIZE_UNIT to units of bytes. + + * expr.c (emit_push_insn): Arg ARGS_SO_FAR is now an rtx. + Pay attention to ARGS_ADDR even if machine has push insns. + (expand_call): Handle variable-sized arguments. + If have any such, push entire arg-block in advance. + Record each arg's offset during first loop and don't change args_size + during the actual pushing loop; this way the actual pushing loop + works regardless of arg-order if arg-block was pushed in advance. + (push_block): Copy SIZE to reg unless it's a reg or constant. + + * expmed.c (expand_divmod): If converting CEIL_DIV to FLOOR_DIV, + make new pseudo for incremented value, to help cse understand. + +Sun Apr 10 00:07:45 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * expr.c (emit_library_call): Two dumb bugs calling emit_call_1. + + * dbxout.c (dbxout_symbol): Handle case of (MEM (REG frameptr)). + + * cccp.c (skip_if_group): Ignore quote-chars if -traditional. + (rescan): If -traditional, don't output a space for a comment. + (handle_directive): If not -traditional, output a space for a comment. + +Sat Apr 9 21:26:51 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * decl.c (get_parm_types): `void' type is error, except as entire list. + * parse.y (parmlist_1): `void,...' is error. + + * typecheck.c (pointer_int_sum, pointer_diff): + Use an integer type with at least POINTER_SIZE bits. + * expr.c (expand_expr, ARRAY_REF): Likewise. + * tree.c (type_precision): Prec of a pointer is POINTER_SIZE. + (convert_to_pointer): Directly convert any int w/ width==POINTER_SIZE. + Other int types convert via an int of that width. + (convert_to_integer): Pointers convert via an int of that width. + + * decl.c (init_decl_processing): Use INT_TYPE_SIZE, if def, + to set width of `int' and `unsigned int'. + (make_index_type): Give new type the width of a long int. + + * tm-m68k.h: Add new -mshort which controls TARGET_SHORT. + * tm-m68k.h: Define INT_TYPE_SIZE depending on TARGET_SHORT. + +Fri Apr 8 05:02:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * typecheck.c (require_complete_type): Fix typo in detection of `void'. + (build_function_call): Fix backward test to allow `void' values. + + * dbxout.c (dbxout_tags): Output each tag once even if type is defined. + + * m68k.md (movstrictqi): Reject addr-reg always, for both operands. + + * tm-vax.h (STRUCTURE_SIZE_BOUNDARY): Make this always 8, for BSD. + * tm-ultrix.h: New file, overriding STRUCTURE_SIZE_BOUNDARY. + [This change has been taken out; tm-ultrix.h is now equivalent to + tm-vax.h. I must have been confused when testing PCC.] + + * integrate.c (expand_inline_function): Don't let inline_target + be nonzero in BLKmode. + + * decl.c (grokdeclarator): Const array parm becomes ptr-to-const. + +Thu Apr 7 05:02:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * genoutput.c (bcopy, bzero): Renamed to mybcopy, mybzero + so variation in C library and config.h won't affect the results. + * genrecog.c (bzero): likewise. + * genextract.c (bcopy): Fn deleted; used only in a string constant. + + * varasm.c (force_const_mem): Fix typo in arg decl. + + * toplev.c (compile_file): init_file with main_input_filename + so dbx output doesn't lack N_SOL symbols. + + * cccp.c (rescan) [CPLUSPLUS]: Put out // comments as // comments. + +Wed Apr 6 14:06:38 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * expr.c: Delete SLOW_ZERO_EXTEND conditionals added March 3. + Now that enums types can be unsigned, this isn't needed. + + * emit-rtl.c (emit_jump_insn): Handle SEQUENCEs. + + * genemit.c (gen_expand): Use emit_jump_insn, emit_label, emit_barrier + when the insn rtl requires it. + + * m68k.md (subsi3): Prefer to avoid reverse-subtraction alternative. + + * stmt.c (expand_end_case): Let CASE_DROPS_THROUGH control what to + emit after the table. + * tm-vax.h: Define CASE_DROPS_THROUGH. + +Tue Apr 5 15:47:10 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * genemit.c (gen_exp): Handle vectors within exprs. + + * stmt.c (expand_end_case): Pass 5th arg (default_label) to gen_casesi. + * m68k.md: Define casesi insn rather than tablejump insn. + + * cccp.c (skip_if_group): For validate_else, pass BP (end of cmd name). + Don't call validate_else if do_else or do_endif will detect error. + + * Bug: inline fcns can refer to the return reg with a strict_low_part + which confuses expand_inline_function. Fix is to change return reg + into inline_target *everywhere* except in or right after a call. + * integrate.c (copy_rtx_and_substitute): Delete special case for SET. + Replace return-value hard regs with INLINE_TARGET in all contexts. + (expand_inline_function): special handling for insn after a CALL_INSN + if it copies the function value out. + Allow notes and stack adjust insns to intervene + between the CALL_INSN and the value-copy. + + * expr.c (emit_call_1): New name for gen_call_1. + + * Bug: ({...}) insns were in wrong place for a subexpression + after a sequence point, as in x ? y : ({...}). + * tree.def: New tree-code RTL_EXPR holds a sequence. + * expr.c (expand_expr): Handle RTL_EXPR by emitting the sequence. + * stmt.c (expand_{start,end}_stmt_expr): Use emit_to_sequence + to make a sequence from everything within the ({...}). + (expand_{start,end,emit}_delayed_expr): Delete these functions. + * parse.y (`for'-statements): Don't call them; nothing special needed. + + * parse.y (yylex): Handle syntax L"..." and L'...' + (combine_strings): Handle wide strings being combined. + * typecheck.c (digest_init): Reject wide string as init for char array. + Allow it for an int array, but don't allow a narrow string. + * decl.c (init_decl_processing): New var int_array_type_node. + + * parse.y: Define keyword `noalias'. + * parse.h: Define RID_NOALIAS. + + * typecheck.c (compparms): Not all parmlists match an empty one; + call `compparms1' to filter them. + + * decl.c (groktypename): Remove special case for `void' as parameter. + (get_parm_types): Special case for list of one decl with type void. + + * decl.c (build_enumerator): Give enum constants the type `int'. + Variable `current_enum_type' eliminated. + (finish_enum): No need to repeat `fixup_unsigned_type' + since the precision has not changed. + * stor-layout.c (layout_type): Allow enum types to be unsigned. + + * emit-rtl.c (unshare_all_rtl): Unshare contents of all reg-notes. + + * parse.y (check_newline): filename is optional in #-lines. + +Mon Apr 4 14:36:54 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * typecheck.c (shorten_compare): When data type determines the value, + eval the nonconstant arg anyway if it has side effects. + (build_conditional_expr): When merging `foo *' with `void *', + also allow `const void *'. Result type has merged set of qualifiers. + (qualify_type): Merge qualifiers of two types. + + * decl.c (get_parm_types): Store any tags defined in parmlist + into `last_function_parm_types'. + (store_parm_decls): Add those tags into the current binding level. + + * parse.y (parmlist, parmlist_or_identifier): Pass 0 to pushlevel; + no binding levels in C should be transparent to tags. + + * 3b1 support: + * tm-3b1.h: New file. + + * m68k.md: Add HPUX_ASM conditionals for shift-by-24-and-compare. + In one of the dbra patterns, a HPUX_ASM conditional was backwards. + (movhi) [SGS_3B1]: Define the LI... label as in MIT syntax. + (addsi3) [SGS]: Syntax for base-displacement differs from MOTOROLA. + (subsi3) [SGS]: likewise. + (tablejump) [ASM_OUTPUT_CASE_LABEL]: Use 6, not 2, as displacement. + This assumes ASM_OUTPUT_CASE_LABEL on 68k is used for a `swbeg'. + + * final.c (final): Use ASM_OUTPUT_CASE_LABEL (if defined) to output + any CODE_LABEL followed by an ADDR_VEC or ADDR_DIFF_VEC. + It has 4 args; 4th is the insn which is the ADDR_VEC or ADDR_DIFF_VEC. + + * tm-*.h for 68000 (PRINT_OPERAND_ADDRESS): For unscaled indexing in + fetch from a branch table, use L and LI symbols as in the scaled case. + + * cccp.c: If SCCS_DIRECTIVE, define #sccs as no-op. + + * integrate.c (output_inline_function): Real start of function + is FIRST_PARM_INSN, not FIRST_FUNCTION_INSN. + + * tree.c (build_string): String contents must be saveable (for + inline fcn). + + * cse.c (cse_insn): Don't forget to set dest_hash_code when dest + is a stack slot (and so its address is not being optimized). + + * emit-rtl.c (restore_reg_data_1): reg_rtx_no must be 1+ largest REGNO. + + * m68k.md (non-SImode bit-field insns): Change constraint to "o,d" + so a nonoffsetable memref is handled by reloading its address + but a register can still be handled. + + * toplev.c (main): Execute OVERRIDE_OPTIONS, if it's defined. + +Sat Apr 2 00:55:21 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (convert_move): Handle a SUBREG in direct truncation case. + + * cse.c (lookup_for_remove): Don't test machine mode of registers: + Storing in (REG:SI 0) invalidates (REG:DF 0). + + * decl.c (pushlevel): New arg, nonzero means this level is for + variables only, not for tags. All calls changed. + (lookup_tag): Even if THIS_LEVEL_ONLY, skip variables-only levels. + (pushtag): Define it in the first non-variables-only level. + + * dbxout.c (dbxout_type): Undo Mar 29 change, in the DBX_NO_XREFS case. + So now each struct or union will contain only nameless cross-refs + to any others it uses. The prior change is still in effect when + DBX_NO_XREFS is not defined. + + * Implement variable array bounds for parameters. + * decl.c (poplevel): Don't crash if DECL_NAME gives 0. + * typecheck.c (comptypes): A variable array bound matches anything. + * parse.y (parmlist): Call pushlevel, then pushdecl each parm as it + is parsed; then poplevel after using get_parm_types to extract the + results of the parmlist. + * decl.c (get_parm_types): New function; reverse the current decls, + put them in last_function_parms, and return a list of their types. + (grokparms): Arg is now an idlist or a typelist. Do nothing if latter. + (push_parm_decl): New function, like {start,finish}_decl combined + for a parm in a parmlist. + + * dbxout.c (dbxout_symbol): Ignore sym if its DECL_RTL is 0. + + * symout.c (symout_block_symbols): Ignore sym if type is error_mark. + +Fri Apr 1 11:41:21 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (prepare_call_address): New function; given two rtx's + for function and context, copy the context to the right hard reg, + put the function address in the right place and return an rtx for it. + (gen_call_1): No longer do those things. Delete args CONTEXT, PROTECT. + (emit_library_call, expand_call): Call `prepare_call_address'. + In between that and `gen_call_1', USE the parm registers. + + * tm-hp9k320.h (ASM_OUTPUT_*): Flush uses of output_arith_constant. + + * varasm.c (assemble_variable): Use ASM_FORMAT_PRIVATE_NAME + to make the name for a local static variable. + * tm-m68k.h, tm-vax.h, tm-ns32k.h, tm-spur.h: + Define ASM_FORMAT_PRIVATE_NAME. Use `.', not `$', to separate. + + * tm-m68k.h, tm-ns32k.h (FIX_FRAME_POINTER_ADDRESS): + To refer to stack ptr, use stack_pointer_rtx, not a copy. + + * tree.c (build_real_from_string): Function deleted. + * parse.y (yylex): Use build_real and atof. + + * parse.y: Allow string concatenation in arg of asm. + + * parse.y (yylex): Always allow `$' in ident, but warn if pedantic. + * tm-vms.h: Delete DOLLARS_IN_IDENTIFIERS (no longer tested). + + * cccp.c (rescan, do_define, initialize_random_junk): + Always allow `$', but warn if pedantic. + (main): If -t, set `traditional'. + (collect_expansion): If `traditional', no special handling for quotes + and no whitespace added at end of macro definition. + + * expr.c (compare, compare1): Last arg to compare_constants + must be a size in bits. + +Thu Mar 31 00:31:52 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expmed.c (expand_mult, expand_divmod, extract_fixed_bit_field): + Reject function return register as target if may need to read it. + (Reading the return register in an inline function doesn't work.) + + * decl.c (start_function): Delete extra arg to `error'. + + * emit-rtl.c (last_parm_insn): Delete this unused var. + + * make-cc1.com: New version from Kashtan. + + * integrate.c (expand_inline_function): Always set up an INLINE_TARGET + for a function that returns a nonvoid nonBLK value. + Since `pushlevel' and `poplevel' are called, must also call + `expand_{start,end}_bindings' to make a pair of NOTEs. + Let them handle USEs at end of scope of formal parameter copies. + + * integrate.c (expand_inline_function): In a new-style CALL_INSN, + don't change the result reg into INLINE_TARGET. Also, + generate a move insn after the call only if INLINE_TARGET is non-0. + + * integrate.c (copy_decl_tree): Don't crash if DECL_RTL is 0. + + * integrate.c (copy_for_inline): Don't treat `return' rtx's specially. + + * stmt.c (expand_{start,end,emit}_delayed_expr): + New fns to handle ({...})'s in expressions output not where parsed + (such as third expression in a `for' statement). + * parse.y: Call them to handle third expression in a `for'. + + * decl.c (duplicate_decls): Result is `inline' if either OLD or NEW is. + + * emit-rtl.c (emit_note): Return the note, or 0 if none. + * stmt.c (expand_start_bindings): Use emit_note's value. + +Wed Mar 30 12:48:22 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * obstack.c (_obstack_begin): If ALIGNMENT is 0, use default. + Compute default for the alignment of a `double'. + * obstack.h (obstack_{begin,init}): Pass 0 for the alignment. + + * flow.c (mark_used_regs): Discard multiple SUBREGs, STRICT_LOW_PARTs. + + ** Call insns that return values are now represented as + (set (reg ...) (call ...)), not just (call ...). + + * *.md: Define a "call_value" insn pattern. + + * tm-m68k.h, tm-vax.h, tm-ns32k.h: (NOTICE_UPDATE_CC): + These insns invalidate the CC. + + * local-alloc.c (combine_regs): #if 0 special treatment of + function value hard reg. + (wipe_dead_reg): If hard reg, call reg_is_born so that the death + will not be ignored. + (reg_is_set): For reg that dies in this insn, mark it dead from now on + and post_mark it live after this insn only. + + * combine.c (try_combine): Don't allow a call insn as I1 or I2. + + * loop.c (count_loop_regs_set): Move CALL_INSN into a separate + clause. When finding regs that are function addresses, handle + both old and new format call insns. + + * flow.c (insn_dead_p): A SET that contains a CALL can't be dead. + (volatile_refs_p): Any CALL constitutes a volatile ref. + (mark_used_regs): If setting a reg from a volatile ref, + treat it like setting a reg whose value will be used. + + * expr.c (gen_call_1): New arg VALREG if nonzero means generate + a call_value insn which stores in VALREG. + (expand_call): Use `hard_function_value' to make the VALREG arg + unless expression has type `void'. + + * expr.c (emit_library_call): New 2nd arg OUTMODE is mode of result. + (So can give gen_call_1 the proper value-register.) + All callers (here and optabs.c) pass this arg. + + * cse.c (canon_hash): Consider all CALL rtx's volatile. + + ** end of change in representation of call insns. + + * stmt.c (expand_asm_operands): Replace complex lvalues with + SAVE_EXPRs here + * typecheck.c (c_expand_asm_operands): rather than here. + + * typecheck.c (pointer_diff): Fix typo preventing use of FLOOR_DIV_EXPR + when dividing by power of 2. + (build_c_cast): Flush unused locals. + (store_init_value): likewise. + (process_init_constructor): Delete unused 4th arg `for_static'. + + * toplev.c (fatal_io_error): Arg to fprintf was missing. + + * tm-m68k.h (LEGITIMIZE_ADDRESS): Flush extra arg to `emit_move_insn'. + + * decl.c: Delete some unused local vars. + + * stor-layout.c (layout_decl): `packed_size' now unsigned. + +Tue Mar 29 14:47:07 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * Version 1.19 released. + + * loop.c (may_trap_p): Nonzero if X is a division that might trap. + (scan_loop): If insn might trap, move only if loop always executes it. + + * dbxout.c (dbxout_type): Never output a cross-ref for + a type whose definition is known. Sun dbx won't accept them. + +Mon Mar 28 12:34:46 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * tm-vms.h (TARGET_DEFAULT): Default is PCC alignment. + The VMS compile driver controls the real default. + + * typecheck.c (c_expand_return): Don't ignore return value + when its type is void. + + * final.c (final): Forget the condition codes after an `asm'. + + * typecheck.c (build_binary_op_nodefault): Warn about ptr < 0 + even if not pedantic, but not if traditional. + + * typecheck.c (convert_for_assignment): Don't warn about + pointers volatile * vs nonvolatile * if -fvolatile specified. + + * decl.c (store_parm_decls): Among the old-style parm decls + there can legitiately be other decls! For example, if a parm + is declared `enum {foo, bar} x;', there are decls for `foo' and `bar'. + Don't let anything but a PARM_DECL match a parm name; + pass all the other decls through into the lexical context. + + * jump.c (jump_optimize): When deleting stack adjusts before a + jump-to-return, don't be fooled by intervening NOTEs. + + * tm-sequent.h (PRINT_OPERAND): Output (MEM (MEM (REG))) properly. + * output-ns32k.c (print_operand_address): Output (MEM (REG)) + properly; output stack-pointer as `tos'. + + * flow.c (find_use_as_address): Reject uses within operand 0 + of a ZERO_EXTRACT or SIGN_EXTRACT reference. It's hard to reload + an autoincrement inside these because they can refer to multiple bytes. + + * reload.c (find_reloads): `o' in constraint means any memref + (except auto-increment) is acceptable with reloading. + Braino: Clear BADOP, not BAD. + + * reload.c (push_reloads): Use rtx_equal_p (via macro MATCHES) + when considering reuse of an old reload. Otherwise equal values + may get reloaded into different registers, and two MEMs that + originally matched may fail to match once reloaded. + + * m68k.md (sign_extract and zero_extract insns): + If operand 0 is QI or HImode, don't allow register--only `o' + (except in some bftst patterns where bitpos is < 8). + And change `m' to `o' in all these patterns. + +Sun Mar 27 15:32:54 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (expand_expr, case CONSTRUCTOR): + Not all aggregates are BLKmode; use the type's mode. + + * gcc.c: Pass -y* to ld. + + * cse.c (struct hash): New member `equivalence_only'. + (insert): Initialize it. + (cse_insn): Set it to 1 when src_eqv is inserted. + When finding cheapest equivalent of something, + skip elts that are marked with `equivalence_only'. + + * decl.c (duplicate_decls): Don't call `layout_type' + if the type is `error_mark_node'. + + * decl.c (implicitly_declare): If decl will be file-scope, + make sure it's a permanent node, and its associated data too. + +Sat Mar 26 15:48:50 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * flow.c (insn_dead_p, mark_used_regs): Storing a reg via a + ZERO_EXTRACT or SIGN_EXTRACT is dead if the reg isn't needed afterward. + + * stmt.c (expand_start_function): Set current_function_name + to the name of this function. + * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Use current_function_name. + + * expr.c (expand_increment): A SUBREG in op0 can also a be a copy. + + * ns32k.md: Correct range of args for `adjspb' insn. + Use `adjspw' when appropriate. + New pattern for `lprd' insn. + Change some `const_int' predicates to GET_CODE tests. + + * expr.c (expand_call): Eval function before copying args to hard regs. + + * tree.c (make_node, copy_node): Don't get length of a REAL_CST + from tree_code_length. + + * expmed.c (extract_fixed_bit_field): In memory-word case, abort + if tm.h parms say word could fail to be well-aligned. + * tm-ns32k.h: Define STRUCTURE_SIZE_BOUNDARY so they will be aligned. + * tm-vax.h: Define STRUCTURE_SIZE_BOUNDARY since Unix CC seems to. + + * tm-vms.h (CPP_PREDEFINES): Predefine __GNU__ and __GNUC__. + +Fri Mar 25 13:23:27 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * gcc.c (main): Handle SIGHUP, SIGTERM. + + * expmed.c (expand_bit_and): Don't clobber OP1 when trying andcb. + +Thu Mar 24 21:59:09 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * stmt.c (assign_parms): Get size of BLKmode local from the type, + not the mode. + (expand_function_start): Init frame_offset before calling assign_parms. + +Wed Mar 23 23:50:37 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (emit_push_insn): When making a move insn, + go via emit_move_insn; else fails to put constants into memory. + +Tue Mar 22 15:45:10 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (expand_increment): Flush special case for register_operand; + actually call the predicate whatever it is. + + * genemit.c (gen_expand): Make `operands' a local variable, + not a global static one, in the `gen_...' function. + Avoids lossage when one `gen_...' fcn calls another indirectly. + + * genoutput.c (output_epilogue): Don't give printf a null string. + +Mon Mar 21 15:41:42 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expmed.c (store_bit_field) [HAVE_insv]: + Force VALUE1, not VALUE, into a register. + + * expmed.c (store_fixed_bit_field): Width of mask for clearing + the bit-field depends on mode of OP0. + + * ns32k.md (branch and store-flag insns): + Test cc_prev_status, not cc_status. + + * expmed.c (extract_bit_field): Delete unused var `omode'. + + * dbxout.c (dbxout_type, dbxout_tag): Use the main variant + of the specified type. + + * reload.c (find_reloads): When an alternative succeeds without reload, + initialize goal_alternative_matches from this_alternative_matches. + +Sun Mar 20 17:58:00 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * tm-sun*.h: Don't predefine `m68k'; Sun's compiler does not. + +Fri Mar 18 13:48:29 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * reload.c (find_reloads): Set up goal_alternative_matches + *after* the label `finish'. + + * stmt.c (assign_parms): GET_MODE_SIZE needs a mode, not an rtx. + + * recog.c (constrain_operands): Set global var `which_alternative' + to indicate which of the alternatives this insn matches. + + * typecheck.c (commontype): long int vs unsigned int + gives long unsigned, if long and int are the same width. + +Thu Mar 17 15:39:45 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * emit-rtl.c, tree.c: include local version of varargs.h. + + * decl.c (start_function): Clear TREE_EXTERNAL and set TREE_STATIC + here rather than in finish_function. Affects the case of + `extern foo (); static foo (a) {...}' + + * gcc.c: Handle -fnostdinc and -fnostdlib switches in specs. + + * cccp.c (main): Handle -fnostdinc: don't put default dirs + on the chain to be searched. + + * cccp.c (error, warning, error_with_line): No longer print + charpos within file; lineno is enough. + +Wed Mar 16 16:56:36 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expmed.c (expand_inc, expand_dec): Handy new subroutines + to generate x+=y or x-=y, given x and y as rtl. + * expmed.c (expand_divmod): Use them instead of gen_{add2,sub2}_insn. + + * expr.c (emit_move_insn): Return the move insn emitted. + Eliminate the code here to move a DImode or DFmode by pieces. + + * emit-rtl.c (emit_insn): Return-value was wrong if emit_to_sequence; + cannot use `last_insn' in that case. + + * regclass.c, stupid.c, local-alloc.c, global-alloc.c: + Some vars of type HARD_REG_SET should be `register' only + if HARD_REG_SET is a macro (ie a scalar). + + * expr.c (move_block_from_reg): New function, converse of + move_block_from_reg. + * stmt.c (assign_parms): If a BLKmode arrives in regs, + copy to a stack slot using move_block_from_reg. + +Tue Mar 15 17:33:22 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * regclass.c (regclass): Don't convert to two-operand insns + unless optimizing. + + * varasm.c (decode_rtx_const, const_hash_rtx): Fix typos. + + * stmt.c (fixup_var_1): Don't alter insn moving VAR to or from + a subreg of a register. + + * cse.c (fold_rtx): Don't fold if result is not LEGITIMATE_CONSTANT_P. + Construct all results in new local variable NEW; then test that + and decide whether to return it or the original rtx. + + * cse.c (cse_insn): When SRC_EQV is non-0 but set[0] has been + cleared, don't insert SRC_EQV in hash table. + + * All insns emitted by a define_expand become part of the SEQUENCE: + * SEQUENCE now contains a vector of insns, not of bodies. + * insn-emit.c (add_insn): If `emit_to_sequence' nonzero, add the + insn to a separate chain, `sequence_first_insn'. + (gen_sequence): Take everything on that chain and make a SEQUENCE. + (emit_insn): Handle SEQUENCE differently since elts are now insns. + (emit_insn_{before,after}): Handle SEQUENCE. + (classify_insn): #if 0. + * genemit.c (gen_expand): emit all the insns, then call gen_sequence + to make the return value. + Define two macros DONE and FAIL for use in a DEFINE_EXPAND: + Use DONE to inhibit emission of the pattern of the DEFINE_EXPAND. + Use FAIL to make the gen_... function return 0. + +Mon Mar 14 12:47:28 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (expand_expr): Extend the don't-sign-extend-enums hack + to COMPONENT_REF. (See 3 March.) + + * tm-*.h (FUNCTION_ARG, etc.) New argument NAMED + is nonzero for a named arg, zero for an anonymous extra arg. + * expr.c (expand_call): Pass 1 for NAMED if appropriate. + * expr.c (emit_library_call): Pass 1 for NAMED. + * stmt.c (assign_parms): Pass 1 for NAMED. + + * cccp.c: Test __GNUC__, not __GNU__. + + * integrate.c (copy_and_substitute_rtx): + Replacing a MEM parm with the parm value, convert mode if mismatch. + Always use VOIDmode when generating SETs. + Take heed of FIRST_PARM_OFFSET and distinguish arg-pointer + from frame-pointer when they are different. + (expand_inline_function): Handle (RETURN) insns, by creating a + return_label which is output after the integrated code. + + * parse.y (yylex): Condition for ignoring `inline' was backwards. + + * flow.c (mark_used_regs): Ignore STRICT_LOW_PART, so that + an insn that sets STRICT_LOW_PART (and its source values) may be dead. + (propagate_block): Always pass 1 for strict_low_ok to insn_dead_p. + + * optabs.c (emit_unop_insn): Don't make a REG_RETVAL note. + Change above deletes dead STRICT_LOW_PART stores without one. + + * optabs.c (expand_binop, expand_unop): If the library address + is to be put in a pseudoreg, do it here, and make the REG_RETVAL + note point after that. + + * expr.c (emit_library_call): Never defer stack-pops. + Deletion of the library call by flow.c loses if they are deferred. + + * cse.c (cse_insn): Handling of 68k's zero-extend was broken: + it made the actual source and the REG_EQUAL source equivalent. + * If dest is a STRICT_LOW_PART, ignore the actual source and use + the REG_EQUAL source in its place. src_eqv's mode may be different + from src's, so use proper mode in lookups or inserts for src_eqv. + * Don't forget to set src_eqv_elt if src_eqv already has an elt. + * On use_related_value for src_eqv, use src_eqv_elt. + + * toplev.c (main_input_filename): Name of file mentioned in first + #-line in the input. + (compile_file): Pass it to dbxout_init as 2nd arg. + * dbxout.c (dbxout_init): Use 2nd arg to make the N_SO symbol. + * parse.y (check_newline): Store main_input_filename. + + * expr.c (move_block_to_reg): New function, copies a MEM:BLK + to consecutive registers. + (use_regs): New function to emit a USE for each reg in a series. + (expand_call): Use the two new functions when a precomputed BLKmode + arg is passed entirely in regs. + (emit_push_insn): Use move_block_to_reg when PARTIAL > 0. + Also, don't subtract USED from SIZE twice. + Use plus_constant to add ARGS_SO_FAR so can use indexing on stack ptr. + + * varasm.c (assemble_integer_zero): Use rtx 0, not tree 0, + to go with prev change in ASM_OUTPUT_INT. + +Sun Mar 13 01:16:17 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * varasm.c (const_hash, compare_constant_1, record_constant_1): + Handle NOP_EXPR and CONVERT_EXPR in constant expressions. + + * optabs.c (expand_binop, expand_unop): When widening operands, + those with VOIDmode (like CONST_INT) may be left alone. + +Sat Mar 12 01:09:24 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * varasm.c (assemble_variable): When making a .comm or .lcomm, + round size up to multiple of BIGGEST_ALIGNMENT. + + * obstack.c (_obstack_newchunk): Eliminate fencepost causing copying + to access the word past the end of the existing object. + + * tm-vax.h, tm-ns32k.h: Define {INIT_,}CUMULATIVE_ARGS + and upgrade FUNCTION_ARGS for new calling convention. + + * gcc.c: If -O, define __OPTIMIZE__. + (do_spec_1): %c now scans SIGNED_CHAR_SPEC: define __CHAR_UNSIGNED__ + when appropriate whether or not it is the default. + +Fri Mar 11 16:49:25 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * parse.y: Define YYDEBUG. + + * rtl.c (rtx_unstable_p): New function, same as old rtx_varies_p. + * explow.c (stabilize): Use rtx_unstable_p. + * rtl.c (rtx_varies_p): Ignore `unchanging' (undoing previous change + in this function) because `unchanging' doesn't enable cse to compare + the value with any particular constant value. + * rtl.c (insn_store_addr_varies_p): Delete, since not used. + + * hard-reg-set.h (COPY_HARD_REG_SET, etc.) non-scalar case: + Rename and rearrange temp variables to avoid name conflicts with args. + + * regclass.c (reg_class_record): Don't smash class to GENERAL_REGS + and don't exit prematurely, when `r' or `g' is seen. Must merge + GENERAL_REGS with previously determined desired class. + + * expr.c (expand_call) [no PUSH_ROUNDING]: When pushing the arg + block, try to reuse some of the pending_stack_adjust. + + * cse.c: qty_const can now hold values (PLUS frame_pointer integer). + Effect is that storing into a structure doesn't invalidate + mem refs to scalar stack variables via addresses in registers. + (insert): Load such values into qty_const, like true constants. + (fold_rtx): Ignore qty_const if it isn't really a constant. + + * expr.c (expand_expr) VAR_DECL: Copy DECL_RTL before calling + change_address, so it isn't permanently clobbered. + + * stmt.c (fixup_var_refs_1): Make sure the stack slot address + is valid by calling fixup_stack_1 each time it is substituted. + + * stmt.c (fixup_stack_1): Return the altered rtx. + If it's a MEM in the stack, return a copy of it. + + * stmt.c (fixup_stack_slots): #if 0. + * stmt.c (expand_finish_function): Don't call fixup_stack_slots + because fixup_stack_1 is called elsewhere when necessary. + + * reload.c (find_reloads_address): New arg is location of the MEM + whose address is being reloaded. So we copy the MEM if it + is one that can be shared. New arg 0 means no need to copy the MEM. + All callers pass the new arg. + + * stmt.c (assign_parms): Determine parm stack-size from + the DECL_ARG_TYPE, not from the TREE_TYPE. + Else loses when parm is declared `float' but passed as `double'. + + * emit-rtl.c (make_safe_from): Constants are already safe. + Use proper machine mode for temp reg when needed. + +Thu Mar 10 14:35:14 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (emit_push_insn): Don't pass wrong type to plus_constant + (case where there is no PUSH_ROUNDING). + + * expr.c (expand_call): Round partial[i] down to multiple of + PARM_BOUNDARY before subtracting it from arg size on stack. + Compute these sizes just once and keep them in vector `arg_size'. + * expr.c (emit_push_insn): Handle `partial' uniformly, in accord + with this new convention for how it affects the stack size. + * stmt.c (assign_parms): Round NREGS down to PARM_BOUNDARY likewise. + + * obstack.h (obstack_free macro) [Not __GNUC__ but __STDC__]: + Don't cast result of (obstack_free) to (int); just ignore it. + + * reload.c (find_reloads): Initialize operand_reloadnum. + + * optabs.c (emit_unop_insn): New argument CODE, used to make + a REG_EQUAL note from operand OP0 if more than one insn results. + Also a REG_RETVAL note. + * expr.c (convert_move): Pass CODE arg to emit_unop_insn. + * flow.c (propagate_block): Use insn_dead_p to decide whether + to handle a REG_RETVAL note by skipping some insns. + Always pass 1 for STRICT_LOW_OK for an insn that has a REG_RETVAL note. + Handle case where REG_RETVAL points at an insn that's deleted. + * flow.c (insn_dead_p): New operand STRICT_LOW_OK says an insn + that sets STRICT_LOW_PART may be considered dead. + + * expr.c (expand_expr): Once again canonicalize X-C to X+(-C). + Change on March 1 made it stop doing this. + +Wed Mar 9 01:25:35 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * loop.c (move_movables): Don't always mark the moved reg + as equivalent to a constant value: not if it is being cleared + to zero-extend something or if it is used outside the loop. + + * expr.c (move_by_pieces_1): Finish last change. + + * stmt.c (assign_parms): Update stack_args_size properly. + Figure FIRST_PARM_OFFSET when making the stack mem refs. + + * cse.c (insert): Build the related_value lists in the opposite order + so that the oldest element in the chain is the one that follows + the most basic element. + + * expr.c (expand_expr): COMPONENT_REF case: criterion for + converting the the result is if MODE1 (its mode of arrival) isn't + a mode we want. + + * toplev.c (rest_of_compilation): Fix typo setting TREE_ASM_WRITTEN. + +Tue Mar 8 13:18:37 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * cse'ing of library calls. + + * expr.h: type `optab' is now a ptr to a struct. + The old contents are now the `handlers' element. + The `code' element gives the RTL code for the kind of expression + this optab makes (PLUS for add_optab, etc.) + Every var formerly declared `struct optab *' is now just `optab'. + + * optabs.c (init_optab, init_optabs): New function to init an optab + and set its `code'. Used in init_optabs. + + * optabs.c (expand_binop, expand_unop): Use the `code' field + to add a REG_EQUAL note to the insn that copies a libcall's + value into a pseudo. Also a REG_RETVAL note pointing at the + first insn for setting up args for the call. + + * cse.c (cse_insn): Process REG_EQUIV and REG_EQUAL datum almost like + another set-src; put the actual src into the equivalence class of that. + + * flow.c (propagate_block): If a dead insn has a REG_RETVAL reg-note, + either ignore or delete all the insns back to the insn the REG_ARG + note points to. + + * local-alloc.c (block_alloc): Don't refrain from allocating a + "constant" register if the constant value isn't ok for an immediate op. + + + * dbxout.c (CONTIN): If DBX_CONTIN_LENGTH is <= 0, do nothing. + + * cccp.c: Extra default include dirs for C++. + * cccp.c (main): For -M, strip dirs from object file name. + + * rtl.c (find_reg_note): New function. + + * expmed.c (store_fixed_bit_field): Don't AND with VALUE + if VALUE's original mode had no more bits than we want. + + * expr.c (emit_library_call): Use varargs. + + * integrate.c (copy_and_substitute_rtx): Recognize arg_pointer_rtx + and translate it just like frame_pointer_rtx. + +Mon Mar 7 00:48:33 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expmed.c (extract_fixed_bit_field): + Shift counts were wrong for narrow MODE in signed case. + Do the sign-extending shifts in the narrowest mode possible. + Reduce big-endian case to little-endian case. + Delete SLOW_ZERO_EXTEND conditional. + + * Implement constants in memory for RISC machines + with limited abilities for immediate args and constant addresses. + + * genoutput.c (output_epilogue): Empty predicate-name + is output as 0 in insn_operand_predicate. + + * expr.c (expand_expr): Change 4th arg to an `enum expand_modifier' + Value EXPAND_SUM corresponds to old nonzero 4th arg. + Value EXPAND_CONST_ADDRESS means ok to return an invalid MEM + whose address is a constant. Changes for this case in ADDR_EXPR, + COMPONENT_REF and ..._DECL. + + * varasm.c (output_arith_constant): Function deleted. + * tm-*.h: (ASM_OUTPUT_{INT,SHORT,CHAR}): 2nd arg is now an RTX + and output it using `output_addr_const'. + * varasm.c (output_constant): Change uses of those macros. + + * varasm.c (init_const_rtx_hash_table): Initialize constant pool + for a new function. Called from `expand_function_start'. + * varasm.c (force_const_mem): Turn a constant rtx into a MEM rtx + which refers to the constant pool. Other new subroutines too. + (force_const_double_mem): Use force_const_mem to make the MEM. + (immed_real_const): No longer record the REAL_CST node in the rtx. + + * explow.c (force_reg): If arg is a constant and not legitimate, + put it in the constant pool with force_const_mem. + Mark the register as equivalent to the constant value. + * expr.c (emit_move_insn): Likewise. + * explow.c (break_out_mem_refs): Use force_reg to put into a reg. + * explow.c (memory_address): Likewise. + * expr.c (expand_expr): ADDR_EXPR case: likewise. + + * expr.c (expand_call): Do force_reg on each register-operand + so it will go through a pseudo and can be cse'd. + + * recog.c (immediate_operand, nonmemory_operand, general_operand): + For constant operands, use LEGITIMATE_CONSTANT_P to decide value. + * tm-*.h: Define LEGITIMATE_CONSTANT_P. + + * reload1.c (reload): Invalid constants can't go in reg_equiv_constant. + +Sun Mar 6 22:49:06 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * reload.c (push_reloads): If IN occurs within OUT, + don't reuse an existing input-only reload. Otherwise would lose on + (set (mem (plus R C)) (plus R C1)) if R is available in a spill reg. + + * reload1.c (choose_reload_targets): Don't choose an inherited + reload register that's in use for another reload. + Without this, above change doesn't have an effect. + + * Implement the `unchanging' flag in MEM and REG rtx's. + Also simplify code with a new subroutine `change_address'. + + * emit-rtl.c (change_address): Return new memory ref like an old + one but with specified mode and address. + * expmed.c (extract{,_split,_fixed}_bit_field): Use change_address. + (store{,_split,_fixed}_bit_field): Likewise. + * expr.c (store_expr, expand_expr): Likewise. + + * expr.c (move_by_pieces): Args now memrefs, not addresses. + Eliminate the FROM_VOL and TO_VOL args since the memrefs indicate. + Change the structure `struct move_by_pieces' similarly. + (move_by_pieces_1): Same changes; use change_address. + (emit_block_move, emit_push_insn): Calls to move_by_pieces changed. + + * integrate.c (copy_rtx_and_substitute): Use change_address; + handle ->unchanging field. + + * rtl.c (rtx_varies_p): Regs or memrefs with ->unchanging don't vary. + (copy_rtx): Perserve ->unchanging. + (print_rtx): Print ->unchanging as /u. + + * stmt.c (expand_decl): Set ->unchanging on `const' decls. + (fixup_memory_subreg): Use change_address. + (assign_parms): Record in the rtl which parms are volatile or const. + + * varasm.c (assemble_variable): Set ->unchanging on `const' decls. + (output_constant_def): Always set ->unchanging for constant refs. + + * cse.c (canon_hash): Don't treat a MEM as "in memory" + if its ->unchanging bit is set. + + * loop.c (invariant_p): A REG or MEM with ->unchanging is invariant + (for a MEM, the address must be invariant). + +Sat Mar 5 13:22:11 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * genconfig.c (walk_insn_part): DO consider MATCH_DUPs + when calculating MAX_RECOG_OPERANDS. + (gen_expand): define_expand is now different from define_insn. + Compute max # SETs or CLOBBERs for any one sub-insn in a define_expand, + instead of summing them all. And don't count the MATCH_DUPs at all. + + * genemit.c (max_operand_1): Record largest opno in a MATCH_DUP + separately from largest in a MATCH_OPERAND. + (gen_expand): An operand # with only MATCH_DUPs gets + a local variable in the gen_ function we output. + + * integrate.c (save_for_inline): Delete vestige of NOTE_INSN_IS_DECL. + + * cse.c (invalidate): Handle subregs. + (cse_ins, invalidate_from_clobbers): Do call `invalidate' for subregs. + (insert_regs): When assigning one subreg from a like one, + make the two regs equivalent. + (cse_insn): Do call insert_regs when dest is a subreg. + + * expr.c (expand_call): Precompute all args going via hard regs + since even arithmetic could require a library call. + +Fri Mar 4 15:48:17 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * stor-layout.c (layout_parms): Function deleted. + * stmt.c (expand_function_start): Don't call it. + + * stmt.c (assign_parms): + stack_args_size counts size of args so far passed on stack. + Use PARM_BOUNDARY when counting it; derive stack offsets from it. + Set current_function_args_size from it. + + When an arg is split between regs and stack, make stack space + for the rest of it, and count it. + In a varargs function, push the last arg onto the stack. + When an arg is passed in regs alone, don't remember a stack slot + for it, and if it needs one, use assign_stack_local. + + Set DECL_OFFSET to the stack offset, or -1 if parm came in regs. + + * expr.c (expand_call): Anonymous args of a varargs function + are always passed on the stack. + + * varasm.c (force_const_double_mem): Copy the MEM rtx + if it may need to be smashed by reloading. + + * genemit.c (gen_expand): define_expand must have nonempty pattern + even though, due to `return' statements in the code-to-run, + that pattern may not be used to generate code. + +Thu Mar 3 17:08:43 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (expand_expr): If supposed to sign-extend an enum + which is never negative, zero-extend instead (unless SLOW_ZERO_EXTEND). + (store_expr): Likewise. + + * reload.c (find_reloads): 'm' for CONST_DOUBLE: clear BADOP, not BAD. + After force_const_double_mem, do find_reloads_toplev on the MEM. + (find_reloads_address): Handle constant addresses (on machines + that don't allow them). + + * final.c (set_current_gdbfile): New fn, get the gdbfile structure + for specified filename. + (output_source_line): Use set_current_gdbfile for the file. + * varasm.c (assemble_variable): Call set_current_gdbfile + for the declaration's source file, so GDB won't ignore the file. + + * varasm.c (force_const_double_mem): Build a new REAL_CST node + and get its data type from the machine mode of the CONST_DOUBLE. + (immed_real_const): Don't save the REAL_CST tree node. + * typecheck.c (get_floating_type): Return float type for given mode. + + * integrate.c (expand_inline_function): Ignore the (USE (REG...)) + (for the return-register) at the end of the inline function. + After a CALL_INSN, imagine the (SET (REG ...) (REG ...)) for + the return-register if the return-register isn't explicitly used. + +Wed Mar 2 22:08:49 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * typecheck.c (build_array_ref): Do default_conversion on INDEX. + +Tue Mar 1 15:49:34 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (expand_call): Always get a SYMBOL_REF for a fixed function. + If may be alloca, set may_call_alloca. + (gen_call_1): Never put a SYMBOL_REF through `memory_address'; + but if function cse is wanted, just copy it to a register. + If NO_FUNCTION_CSE is defined, never do function cse. + + * expr.c (init_expr): New function, does init_queue and inits + other things. + + * stmt.c (expand_function_start): Call init_expr, not init_queue. + + * optabs.c (expand_binop): Don't clobber OP0 and OP1 + if may call delete_insns_since later. + + * expr.c (emit_library_call): PUSH_ARGS_REVERSE test was backwards. + + * cse.c (cse_insn): Do canon_reg on the size and position operands + in a ZERO_EXTEND or SIGN_EXTEND that is a destination. + + * tm-*.h: Define SLOW_BYTE_ACCESS. + * expmed.c ({store,extract}_fixed_bit_field): + If SLOW_BYTE_ACCESS, get/set all bit fields from full words. + + * combine.c (subst): Simplify + (zero_extend:SI (subreg:QI (zero_extract ...))). + * combine.c (simplify_and_const_int): Simplify + (and (zero_extract ...) (const_int ...)). + + * local-alloc.c (qty_compare{,_1}): Test of qty_phys_sugg was reversed. + (combine_regs): If one pseudo gets two suggested hard regs + (one at birth and one at death), prefer the one from birth + unless we see at death that it's no good. + + * expr.c (expand_expr): Ignore sum_ok unless mode is Pmode. + Don't use force_operand unless sum_ok is set. + +Mon Feb 29 19:23:50 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (emit_move_insn): When a CONST_DOUBLE needs moving + by pieces, force it into memory, unless it is dconst0_rtx, + in which case each piece is const0_rtx. + (emit_push_insn): Likewise. Also, write code for pushing a + non-BLK mode which has no "mov" insn defined, but only + in the case where there is no PUSH_ROUNDING. + + * expr.c (do_tablejump): Put constant term in address last. + + * toplev.c (xrealloc): On error, call fatal instead of abort. + + * optabs.c (emit_cmp_insn): If genning from tst_optab, + make the operand fit its predicate. + + * optabs.c (expand_float): Don't adjust stack between cmp and jump. + + * optabs.c (expand_binop): Recursive calls can return 0; handle + that event by deleting any preparatory insns. Also don't smash + TARGET when this happens. + + * reload.c (push_reload): If IN != *INLOC, set reload_nocombine. + (combine_reloads): Don't combine an input reload with reload_nocombine. + + * jump.c (jump_optimize): Don't delete stack adjusts unless + EXIT_IGNORE_STACK is nonzero. + * expr.c (clear_pending_stack_adjust): Likewise. + * tm-*.h: When EXIT_IGNORE_STACK is defined, give it `1' as defn. + + * expr.c (expand_call): Initialize args_size. + Don't push a block if args_size is 0. + (emit_library_call): Don't include register-args (or reg-parts + of partial ones) in args_size. + Don't push a block if args_size is 0. + + * expr.c (expand_expr): For DECLs in memory, check the address + validity with memory_address_p, and preserve volatility info. + + * stmt.c (expand_function_end): fixup_gotos needs 2 args. + + * jump.c (mark_jump_label): If INSN is 0, don't set its JUMP_LABEL. + Inside an ADDR_VEC or ADDR_DIFF_VEC, recurse with 0 for INSN. + + * varasm.c (force_const_double_mem): Must zero TREE_CST_RTL + before output, or nothing will happen. + +Sun Feb 28 01:08:53 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * optabs.c (emit_unop_insn): Generate and emit an insn + given the insn-code and the two operands (one out, one in). + Can move the operands into registers when needed for various + reasons. + * expr.c (convert_move): Use emit_unop_insn for outputting the + conversion insns. + + * expr.c (emit_library_call): Use arg's nominal mode to choose + a reg to pass it in, not actual mode (which can be VOIDmode). + + * insn-emit.c (emit_insn): If arg is empty SEQUENCE, do nothing. + + * genemit.c (gen_expand): Scan the rtl-pattern for predicates + and machine modes of the operands. + + * m68k.d (dbra patterns): Add HPUX_ASM conditionals. + + * rtl.c (reg_mentioned_p): Use "equal", not "eq", when + REG isn't a register. + * reload.c (combine_reloads): Verify not reg_mentioned_p even if + the input reload's value isn't a register. + + * reload.c (operands_match_p): If successful and 2nd arg + has a pre-increment that matches a non-increment, return 2. + + * reload1.c (reload): At end, clobber a pseudoreg to a MEM + even if it's an out-of-range address. It doesn't affect the + assembler code in this case, but it makes the dbx output correct. + + * recog.c (constrain_operands): When operands_match_p returns 2, + in the constraint alternative that is ultimately successful, + copy the output operand from the input that it matched + so that the assembler insn that is output shows the pre-increment. + +Sat Feb 27 15:16:47 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * combine.c (subst): When optimizing + (set (zero_extract ...) (and (zero_extract ...) const)) + must arrange to have 1's, not 0's, shifted into low bits of const. + + * decl.c (grokdeclarator): When return-type defaults to int, + don't warn, just set warn_about_return_type. + (start_function): See that variable and warn, after starting function. + + * toplev.c (count_error): No longer print newline if not quiet. + (report_error_function): If not quiet, print a newline if + printing anything, and don't print the function name. + + * reload1.c (choose_reload_targets): + Fix the loop that checks for consecutive available spill regs. + Set `have_groups' nonzero if any reload wants a group. + In that case, for non-group reloads, prefer a reg that can't be in + group, or else one that has only one available neighbor. + + * reload1.c (reload): Find separately the max need for each class + for single registers, groups of registers, and single registers + not in any group. (The last one counts non-group reloads + in insns that have at least one group reload.) + Then make sure enough of each kind are found. + + * expmed.c: Now needs flags.h and recog.h (therefore insn-config.h). + + * expmed.c (store_bit_field): + Delete redundant protect_from_queue. + Force VALUE out of memory if -fforce-mem. + If insv's predicate for VALUE wants a register, put it there. + + * expmed.c (extract_bit_field): + Force TARGET out of memory if -fforce-mem. + If insv's predicate for TARGET wants a register, put it there. + +Fri Feb 26 00:12:48 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * reload1.c (eliminate_frame_pointer): Don't check for pushes + unless PUSH_ROUNDING is defined. + + * reload.c: Don't define REG_OK_FOR_{INDEX,BASE}_P + (since the tm file is supposed to do it). + + * expr.c (emit_push_insn, expand_call): + Don't use PUSH_ROUNDING if it's not defined. + + * expr.c (preexpand_calls): Do nothing for constants and decls. + + * expr.c (expand_call, emit_library_call): When PUSH_ROUNDING + is not defined, use ROUND_CALL_BLOCK_SIZE to round the size + of the block of arguments. + + * expr.c (expand_call): Don't count register-args in ARGS_SIZE. + + * rtl.h, emit-rtl.c: Create static_chain_incoming_rtx + and struct_value_incoming_rtx. + * stmt.c (expand_function_start): Use ..._incoming_rtx where needed. + + * expr.c (expand_call): Use new macros INIT_CUMULATIVE_ARGS, + CUMULATIVE_ARGS and FUNCTION_ARG_ADVANCE to update data + on args scanned so far. + (emit_library_call): Likewise. + * stmt.c (assign_parms): Likewise. + * tm-spur.h, tm-m68k.h: Define these macros. + + * rtl.h (NUM_MACHINE_MODES): NUM_MACHINE_MODE renamed. + * rtl.c, genrecog.c: Change places it is used. + + * cccp.c (output_line_command): line_cmd_buf should be chars, not ints. + +Thu Feb 25 13:33:29 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * genemit.c (gen_expand): Don't lose if pattern is empty-vector. + + * genconfig.c (gen_insn): Don't lose if pattern is empty-vector. + + * expr.c (expand_expr): For COMPONENT_REF, don't convert to tmode + unless the mode we get is unacceptable. + + * loop.c (scan_loop, move_movables): New field `partial' is 1 for + zero-extending clr insn; don't make the reg invariant when it's moved. + + * optabs.c (expand_unop, expand_binop, emit_cmp_insn): + mode-argument to predicates was missing. + + * optabs.c (expand_binop): If gen-function returns 0, this means + the insn wasn't available. + + * reload.c (find_reloads): Don't make optional reloads for operands + that match other operands. + + * reload.c (combine_reloads): Reject optional output reload. + + * reload.c (find_equiv_reg): Know that CALL_INSNs clobber memory. + + * typecheck.c (build_binary_op_nodefault): + If doing a short shift, leave the shift-count as a fullword. + +Tue Feb 23 14:43:46 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * combine.c (subst): Count, in n_occurrences, # times FROM is seen. + (try_combine): Refuse to combine x=*y++ into z = x*x. + + * loop.c (invariant_p): Frame pointer and arg pointer are invariant. + (move_movables): Don't forget to set ->done! + When moving the matching movables, don't forget to set n_times_set. + + * expmed.c (expand_shift): Reorder strategies for logical shift; + if widening, try all ashift strategies before extzv. + + * typecheck.c (build_binary_op_nodefault): + Always return error_mark if either operand is one. + + * recog.c (nonmemory_operand): New predicate. + + * optabs.c (expand_unop, expand_binop, emit_cmp_insn): + Don't treat `register_operand' as special. Apply the predicate + to the rtx; if the predicate fails, use a register instead. + +Mon Feb 22 22:37:32 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * expr.c (expand_calls): Preexpand all calls in arguments + that are passed in regs before copying any of them into the regs. + + * expr.c (emit_push_insn): Three more args. + EXTRA for extra space to leave. + ARGS_ADDR and ARGS_SO_FAR for using move-insns on machines + that lack true push insns. + + * expr.c (emit_library_call, expand_call): + Use the new arguments of `emit_push_insn'. + + * expr.c (PUSH_ARGS_REVERSED): defined if handle args last-to-firs. + +Sun Feb 21 12:17:59 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * toplev.c (rest_of_compilation): Set TREE_ASM_WRITTEN + when a function is really output as assembler code. + Don't do inlining of a function that is already made inline; + instead, output it as assembler code, because this must be + the second call for that function. + + * decl.c (finish_compilation): Delete it. + * toplev.c (compile_file): Output pending inline functions at the end + in the same way tentative-defined variables are output. + + * emit-rtl.c (restore_reg_data): New fn: given chain of insns, + restore emit-rtl's data on registers from the regs they use. + + * integrate.c (output_inline_function): Use restore_reg_data. + (fill_regno_reg_rtx_as_needed): Now restore_reg_data_1 in emit-rtl.c. + + * tree.c (build_decl): Function moved from decl.c. + No longer set attributes of function decls specially. + + * decl.c (implicitly_declare, builtin_function, grokdeclarator): + Don't expect build_decl to set attributes of FUNCTION_DECL. + + * tree.c (preserve_data): New fn, make all data now on + maybepermanent_obstack last permanently. + + * cse.c (cse_insn): Remove a STRICT_LOW_PART from the dest rtx + before putting it in the hash table. + + * symout.c (symout_block): Fix the args to `symout_block_symbols'. + +Sat Feb 20 00:07:52 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + Start of changes for inline functions. + Changes received from Tiemann, then slightly rearranged for simplicity. + + * integrate.c: New file (Tiemann's rtl2.c). + * integrate.c (function_cannot_integrate_p): + New fn, only checks whether current fn is safe and good to inline. + Returns an error message string if not. + + * expr.c (current_args_size): Var made static. + (store_expr): Fn no longer static. + (stack_pointer_rtx): Use this var for all refs to the stack pointer. + (struct_value_rtx, static_chain_rtx): Likewise + + * expr.c (expand_call): Detect calls to integrable functions + and integrate them. + **If fn is not named "alloca" then assume it is not `alloca'. ** + + * emit-rtl.c (max_label_num): New fn, returns number for next label. + (get_first_label_num): New fn, returns first label of current fn. + (init_emit): Save first label number of this fn. + + * emit-rtl.c (gen_inline_header_rtx): New fn, make an INLINE_HEADER. + + * emit-rtl.c (emit_declaration): New fn to emit new kind of NOTE. + + * emit-rtl.c (init_emit_once): New fn. + Move inits of unique rtl objects here, from init_emit. + + * decl.c (finish_compilation): New fn to compile separately + any nonglobal inline functions that need to be addressable. + + * decl.c (grokdeclarator): Handle `inline' kwd among the declspecs. + Set TREE_INLINE if it's safe. + + * decl.c (finish_function): If fn was inlined, don't clear + the DECL_ARGUMENTS or DECL_RESULT or DECL_INITIAL. + + * gen*.c: Provide rtl_obstack, not current_obstack. + + * rtl.c (rtl_obstack): Variable: ptr to obstack to use for making rtl. + * rtl.c (rtx_alloc, rtvec_alloc): Use that obstack. + * rtl.c (copy_rtx): Copy the `integrated' flag. + * rtl.c (print_rtx): Print that flag as `/i'. + + * rtl.def: New rtx code INLINE_HEADER. + + * rtl.h (struct rtx_def): Add `integrated' field. + * rtl.h: Define macros for fields in an inline_header rtx. + + * stmt.c (max_parm_reg_num, get_first_function_insn): + New fns, return info on parm regs and the insns that init them. + + * stmt.c (expand_decl): Simplify with new local `type'. + + * stmt.c (stack_pointer_rtx): Replace all refs to stack pointer + with this shared rtx. + * stmt.c (struct_value_rtx): Likewise. + + * stmt.c (expand_start_function): Call init_pending_stack_adjust + instead of clear_pending_stack_adjust. + If not using a return-label, set `return_label' to 0. + + * stmt.c (expand_null_return, expand_end_function): + Call clear_pending_stack_adjust unconditionally. + + * expr.c (clear_pending_stack_adjust): Move the conditionals here. + For now, this fn is a no-op, since it's not safe in an inline fn + and the stack adjusts are deleted by jump.c in if optimizing. + + * expr.c (init_pending_stack_adjust): New fn. + +Fri Feb 19 14:30:13 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * toplev.c (main): Decode -finline-functions, -fkeep-inline-functions. + + * toplev.c (rest_of_compilation): + At start, save the rtl if function should be inline. + For inline function, if we don't yet know whether it should be + compiled on its own, don't do so. + + * toplev.c (compile_file): Clear, and later print, `integration_time'. + Call `init_emit_rtl' when starting. + Call `finish_compilation' at the end. + + [Add an extra arg to the error and warning functions?] + + * tree.c ({push,pop,clear}_momentary): + Change momentary_stack from a char ** to a struct momentary_level *. + + * tree.c (build_pointer_type): Put temporary type in `saveable_obstack' + * tree.c (build_type_variant): Likewise. + * tree.c (make_node): Likewise. Also put decls and LET_STMTs there. + * tree.c (type_hash_canon): Free a temporary type in `saveable_obstack' + + * tree.c (perm_tree_cons): Like `tree_cons' but on perm. obstack. + + * tree.c (init_tree, {{end_,}temporary,permanent}_allocation): + Handle `maybepermanent_obstack' and `saveable_obstack' and + `rtl_obstack'. + + * tree.h (TREE_INLINE): New attribute macro. + * tree.h (DECL_SAVED_INSNS, DECL_FRAME_SIZE): + New components in a FUNCTION_DECL. + Delete the `unused` slot in a `struct tree_decl'. + + * typecheck.c (mark_addressable): Set TREE_ADDRESSABLE + even in FUNCTION_DECLs. + + * typecheck.c (build_function_call): + If function is a FUNCTION_DECL, avoid setting TREE_ADDRESSABLE + when taking its address. + + * parse.h: Define RID_INLINE. + * parse.y: Define keyword `inline'; set up ridpointers for it. + (yylex): Don't recognize `inline' of -fno-asm or -ftraditional. + + * flags.h: New vars flag_inline_functions + and flag_keep_inline_functions. + + End of changes for inline functions. + + * tree.c (convert): If EXPR's type is an error_mark, return error_mark. + + * Makefile (install): Don't strip the executables. + + * jump.c (delete_insn): Deleting a label's target + can delete either NEXT and PREV! So must search for a + following nondeleted insn to return. + + * typecheck.c (build_function_call): Typo in validating + data type of function. + + * genoutput.c (gen_expand): Must create a `struct data' even + for a define_expand, so we can output the proper insn_gen_function + and leave zeros in the other tables. + + * loop.c (scan_loop): Replace the code for handling zero-extends + with unconditional code that checks for a pair of insns. + + * m68k.md: Do zero-extend using define_expand to generate + a pair of insns, to set all to zero and then copy the low part. + +Thu Feb 18 15:54:00 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * emit-rtl.c (emit_insn): If arg is a SEQUENCE, emit several insns. + * emit-rtl.c (classify_insn): Given an RTX, return the rtx-code for + an insn containing it: CODE_LABEL, INSN, JUMP_INSN or CALL_INSN. + + * rtl.def: New RTX types DEFINE_EXPAND and SEQUENCE. + * gen*.c: Handle DEFINE_EXPAND. Only genemit.c does real work. + + * make.com, make-cc1.com, make-cccp.com: New, VMS command files. + + * tm-vms.h: New file, used as tm.h to generate VMS code. + + * tm-vax.h (FUNCTION_PROLOGUE): Turn off no bits in the mask; + let call_used_registers alone control this. + Call MAYBE_VMS_FUNCTION_PROLOGUE, and define that as no-op. + + * tm-vax.h (TARGET_VAXC_ALIGNMENT): New target-flag bit. + BIGGEST_ALIGNMENT, EMPTY_FIELD_BOUNDARY and POINTER_BOUNDARY use it. + + * varasm.c (assemble_function): Use ASM_DECLARE_FUNCTION_NAME + if it is defined. + + * varasm.c (assemble_variable): On an external, + use ASM_OUTPUT_EXTERNAL if defined. Default is do nothing, as before. + + * toplev.c: + Use FATAL_EXIT_CODE and SUCCESS_EXIT_CODE. + Don't include time.h and resource.h on VMS. + (main) Define __VERSION__ if not already defined. + Conditionalize setrlimit on RLIMIT_STACK. + Test __GNUC__, not __GNU__. + Don't do `ps v' on VMS. + (gettime): Conditional code for VMS. + + * gcc.c: Define __GNUC__ as well as __GNU__. + __GNU__ will be deleted in a future version. + + * symout.c (symout_finish) [VMS]: Don't refer to `getwd' on VMS. + * symout.c (symout_init) [VMS]: Fatal error; GDB syms not supported. + + * parse.y (yylex): Handle DOLLARS_IN_IDENTIFIERS. + + * genoutput.c (gen_insn): Workaround for VMS printf %s bug. + + * gen*.c: Include config.h. Whenever exiting, use + SUCCESS_EXIT_CODE or FATAL_EXIT_CODE. + + * config-*.h: Define SUCCESS_EXIT_CODE and FATAL_EXIT_CODE. + * config-vms.h: New file, mostly like config-vax.h. + +Wed Feb 17 13:35:34 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * cccp.c: VMS support from Kashtan. + Some #include files are conditional. + Use file_size_and_mode instead of fstat. + When reading file contents, the size we get from that + is just an upper bound; don't assume it must match. + Replacement definitions of read and write for VMS. + Different default include directories. + Conditionalize the setrlimit code on RLIMIT_STACK. + Use SUCCESS_EXIT_CODE when exiting if no errors; + both that and FATAL_EXIT_CODE are not #defined if already defined. + + Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS. + Rename the `delete' function as `delete_macro' + to avoid VMS name conflict. + + * cexp.y: Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS. + + * stmt.c (fixup_memory_offset): Do big-endian compensation + only within a word, not for DImode vs SImode. + + * stmt.c (fixup_var_refs): Don't fix up the insn to load the var + from its own stack slot; delete it instead. + + * tm-ns32k.h (MODES_TIEABLE_P): DImode is like DFmode. + + * tree.c (MAX_HASH_TABLE): 1009 (more prime) instead of 1008. + + * decl.c (duplicate_decls): If merged type is OLD's type, + keep OLD's DECL_SIZE and DECL_SIZE_UNIT. + + * gen*.c (xmalloc, xrealloc): Call `fatal' if memory is full. + + * reload1.c (choose_reload_targets): If a mode doesn't fit the + reload register, and the insn is an ASM_OPERANDS, ignore the reload. + Otherwise, final would crash. + + * expmed.c (expand_shift): Two new strategies for lshr on short/char: + widen and do ashr, or widen and do extzv. + + * vax.md (peepholes): Use dead_or_set_p to check for eliminable + intermediate result, rather than requiring a match with final result. + + * local-alloc.c (block_alloc): Testing frame_pointer_needed is + enough; no need to test FRAME_POINTER_REQUIRED, etc. + * global-alloc.c (find_reg): Likewise. + * reload1.c (reload): Likewise for flag_omit_frame_pointer + + * jump.c (delete_insn): If not `optimize', don't complain + about finding an already-deleted insn in the chain. + +Tue Feb 16 17:14:54 1988 Richard Stallman (rms at wheaties.ai.mit.edu) + + * final.c: Don't define N_SOL and N_SLINE if already defined. + + * final.c (output_source_line): + Typo calling ASM_OUTPUT_SOURCE_FILENAME. + + * flow.c (INSN_VOLATILE): fix a typo. + +Fri Feb 12 16:48:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * final.c (final): for `asm' without operands, output literally. + +Thu Feb 11 12:44:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * symout.c (symout_record_fields): Handle nameless fields. + * symout.c (symout_record_field_names): Likewise. + + * typecheck.c (require_complete_type): `void' is a complete type. + * typecheck.c (build_function_call): Don't complain if result is void. + + * tm-hp9k320.h: Change definition of ASM_SPEC to +X, not -X. + + * cccp.c (main): Expected object file name for foo.cc is foo.o. + +Wed Feb 10 16:04:58 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * reload1.c (reload): Initialize `regmask' to zero. + Class number is in I, not in CLASS, when setting its elements. + Don't let J+K be too large. + + * reload1.c (potential_reload_regs): Make it a `short' + since that can't be unsigned. + + * cccp.c (warning): New function, called like `error'. + * cccp.c (do_define): Make redefinition just a warning. + +Tue Feb 9 13:28:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * decl.c (grokdeclarator): Don't be fooled by ERROR_MARK as a declspec. + + * toplev.c (compile_file): Strip final .c or .co from .sym file name. + + * gcc.c: When running `as', specify the .sym file if -gg. + +Mon Feb 8 11:26:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * expmed.c (store_fixed_bit_field): Don't try gen_lowpart on VALUE + if it's a subreg since it might lose; use convert_to_mode instead. + + * tm-hp9k320.h: Define TARGET_MEM_FUNCTIONS. + * expr.c (emit_block_move, emit_push_insn, clear_storage): + If TARGET_MEM_FUNCTIONS, generate calls to memcpy and memset + instead of bcopy and bzero. + * optabs.c (emit_cmp_insn): Likewise for memcmp vs bcmp. + + * stmt.c (expand_goto): New temp var to avoid RT/PC compiler bug. + +Sun Feb 7 12:20:23 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * flow.c (mark_used_regs, mark_set_regs): + Handle hard regs in multiword modes: set the bits for each + distinct register-number that makes up the multiword mode. + Necessary because function arg registers can inevitably + live across basic blocks. + + * cse.c (canon_hash): Function arg and value registers no longer + considered volatile, because flow should now handle the code that + can result from cse'ing them. + + * cse.c (make_regs_eqv): Abort if OLD is invalid. + * cse.c (reg_invalidate): Abort if reg already invalid has eqvs. + +Sat Feb 6 16:25:32 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * gcc.c (main): Specific error msg if no input files. + +Fri Feb 5 17:56:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * stmt.c (expand_decl, put_var_into_stack, assign_parms): + Set in_struct on a MEM if the variable is an aggregate or union. + * varasm.c (assemble_variable): Set in_struct on aggregate vars. + +Thu Feb 4 11:52:30 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * m68k.md (movsf): Correct two fmove.x to fmove.s. + + * expmed.c (extract_fixed_bit_field): + Must always generate an `and' to mask the bitfield + unless its width is the same as the output machine mode. + + * version 1.18 released. + +Wed Feb 3 08:41:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * fold-const.c (fold): Convert EXPR's operands before returning them. + +Tue Feb 2 15:35:18 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * reload.c (find_reloads_address_1): + + * typecheck.c (default_conversion): Handle COMPOUND_EXPR arrays. + +Mon Feb 1 18:53:05 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * ns32k.md: operand 0 of all unsigned divide/modulus insns + is now register_operand. + + * stdarg.h: Make va_list be char *, not char *[1]. + Latest draft doesn't say it must be an array type. + +Sun Jan 31 11:14:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * flow.c (find_basic_blocks): Add temp var to avoid Sequent + compiler bug. + + * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Don't allow pushes or pops + since there are special insn patterns for them. + Resubroutinize and add temp vars to make expressions smaller. + * ns32k.md: Add a few more special stack insns; now there are enough. + + * tm-sequent.h: Definitions of DBX_NO_XREFS and DBX_CONTIN_LENGTH. + + * reload1.c (choose_reload_targets): Handling of reload_strict_low + is needed for input reloads as well as output, since a strict_low_part + operand is normally a read-write operand. + + * reload1.c (reload): The mode a reload needs is the wider of + the input and output modes--just as it is in choose_reload_targets. + + * reload.c (find_dummy_reload): If IN and OUT have different widths + and one of them exceeds a word, don't find any dummy reload. + + * toplev.c (compile_file): Allocate enough space for .jump2 filename. + +Sat Jan 30 10:35:46 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * output-ns32k.c (print_operand_address): + Print addresses of the form C1+(N*REG+C2) which currently + are accepted as legitimate memory addresses. + + * tm-sequent.h: Simple bugs in PRINT_OPERAND, TARGET_DEFAULT + and SEQUENT_ADDRESS_BUG. + + * gen*.c: Must explicitly exit; returning from `main' fails + to indicate nonzero status due to bug in Unix. + + * parse.y (check_line_number): Ignore entire line of unrecognized + #-directive; no error if it is `pragma'. + +Fri Jan 29 06:46:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * genrecog.c, genextract.c, genoutput.c: Define bcopy and/or bzero. + + * cccp.c (do_define): Make defn->argnames long enough in no-args case. + + * reload1.c (reload): Make basic_block_needs 0 until after the + frame pointer reg is spilled, so that ALL pseudos in it are spilled. + + * typecheck.c (truthvalue_conversion): + Strip a NOP_EXPR only if it extends, not if it truncates. + (build_unary_op): For TRUTH_NOT_EXPR, call invert_truthvalue + to simplify. + + * Fixes for HPUX support from cph: + * tm-hp9k320.h: Correct names of floating-point registers. + Fix typos in ASM_OUTPUT_OPCODE; also convert `fmove' to `fmov'. + * Makefile (comments for HPUX): + cph says -Wd,-X isn't needed in CFLAGS, nor -lBSD in CLIB. + Also that -g can't be used in CFLAGS with HP's pcc. + * conf-hp9k320.h: New file, like config-m68k.h but with + #defines for the bstring functions. + * m68k.md: Add else-clauses to the HPUX_ASM conditionals on cmp insns. + Reinsert mistakenly-deleted MOTOROLA conditionals around + some OUTPUT_JUMPs. + +Thu Jan 28 09:51:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * jump.c (jump_back_p): If TARGET is unconditional, return 0. + +Wed Jan 27 04:18:29 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * combine.c (subst): Simplify (plus (plus x c1) c2). + + * expr.c (emit_push_insn): Don't use small-block push-insns for BLKmode + when one of them would be affected by PUSH_ROUNDING. + Instead, make all the space and then copy. + * expr.c (expand_call): Don't apply PUSH_ROUNDING if BLKmode. + + * Allow `asm' with operands to be marked volatile. + * cse.c (canon_hash): Don't record ASM_OPERANDS that has `volatil'. + * loop.c (invariant_p): ASM_OPERANDS with `volatil' can't be invariant. + * flow.c (volatile_refs_p): Note ASM_OPERANDS that are volatile. + * stmt.c (expand_asm_operands): New arg VOL; mark ASM_OPERANDS as vol. + * typecheck.c (c_expand_asm_operands): New arg VOL. + * parse.y: allow a TYPE_QUAL after ASM. + + * Make cse handle `asm' with operands: + * cse.c (canon_hash): Hash string operands by contents, not address. + * cse.c (exp_equiv_p): Compare string operands with strcmp. + * rtl.c (rtx_equal_p): Compare string operands with strcmp. + + * decl.c (init_decl_processing): Once sizetype is set, + correct the type of the sizes of types already made. + + * cccp.c (do_defines): Don't reject #define foo{a}. + +Tue Jan 26 04:53:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * reload.c (find_reloads): Now that `asm' is limited to + MAX_RECOG_OPERANDS, eliminate dynamic allocation of `constraints' + and `constraints1', and go back to `recog_operand' instead of + `operands'. + + * typecheck.c (c_expand_asm_operands): New fn to handle `asm' for C. + Calls expand_asm_operands, and handles output operands that + the other function cannot handle. + + * parse.y: Call that function. + + * stmt.c (expand_asm_operands): Error if too many operands. + #include insn-config.h to get MAX_RECOG_OPERANDS. + + * expr.c (expand_assignment): Use store_field to handle + structure fields and array elements. + + * output-m68k.c (output_move_double): PUSHOP and POPOP were swapped. + Handle insns that push an sp-relative address onto sp; + these can arise with -fomit-frame-pointer. + BUG? Do unoffsetable mem refs using sp and fp lose? + + * m68k.md (movdi,movdf): Allow unoffsetable mem refs + only if the other operand is a register. + + * m68k.md (zero_extendqisi2): SGS conditionals deleted. + Supposedly the MOTOROLA syntax works for those addresses. + + * typecheck.c (default_conversion): + If flag_traditional, preserve unsignedness when promoting ints, + and promote float to double. + + * typecheck.c (build_binary_op_nodefault): + Allow comparisons between pointers and ints. + If not -traditional, warn about them. + +Mon Jan 25 02:11:18 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * expmed.c ({extract,store}_split_bit_field): + Functions {extract,store}_split_reg_bit_field now work for memory + also, and therefore are renamed. + * ({extract,store}_fixed_bit_field): Call those fns when a field + is split across two words. + Also, preserve the `volatil' bit on memory refs. + + * output-m68k.c (output_move_double): Handle nonoffsetable mem refs. + * m68k.md: Relax constraints on movdi, movdf. + + * decl.c (init_decl_processing): Define `int' and `char' first. + Set `sizetype' explicitly. + + * stmt.c (fixup_var_refs_1): May not just return when a SET + doesn't have VAR as its src or dest. + + * varasm.c: Don't include c-tree.h. + + * decl.c (build_struct): Split this function into three: + `xref_tag', `start_struct' and `finish_struct'. + `xref_tag' subsumes `xref_enum'. + + * parse.y (structsp): When parsing `struct foo {...}', define the tag + as a cross-ref before parsing the components. Use the three new fns. + + * regclass.c (regclass): Recognize new-format ASM_OPERANDS insns + with `asm_noperands', and scan their operands as usual. + + * cse.c: In numerous functions such as canon_hash, rtx_cost, etc. + that do tree-walk on rtx, handle vectors of subexpressions. + + * loop.c (invariant_p): Likewise. + + * jump.c (delete_insn): Two bugs: + If insn already deleted, return the first following nondeleted. + Deleting a jump's label can delete NEXT. Make sure return value + is always the first insn following INSN and not yet deleted. + +Sun Jan 24 02:27:49 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * rtl.def (ASM_OPERANDS): Change the rtl expression of an + `asm' with operands so it looks like this for one output operand: + (set OUTPUT (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT + 0 INPUTS INPUTCONSTRAINTS)). + and like this for multiple outputs: + (PARALLEL [ + (set OUTPUT0 (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT + 0 INPUTS INPUTCONSTRAINTS)). + (set OUTPUT1 (asm_operands:OUTPUTMODE1 INSNSTRING OUTPUTCONSTRAINT1 + 1 INPUTS INPUTCONSTRAINTS))]) + + * parse.y: Change parsing of `asm' to distinguish input and output + operands. Separate them with colon; separate the string with colon. + + * stmt.c (expand_asm_operands): Receive inputs and outputs separately. + Generate the new rtl format. + + * recog.c (asm_noperands, decode_asm_operands): New fns + for extracting the operands and constraints from these insns. + + * final.c (final): Recognize and output the new rtl format + using those new functions. + + * reload.c (find_reloads): Recognize and get constraints + from the new rtl format using those new functions. + New variable `operand_modes' holds the machine modes of the + operands, obtained one way for ASM_OPERANDS insns and another + for other insns. + + * rtl.c (note_stores): Calling convention + is changed: the first arg FUNCTION now receives as its 2nd arg + 1 if clobbering, 0 if setting. Used to be the CLOBBER or SET rtx. + + * local-alloc.c (reg_is_set): This fn is called from note_stores; + change its arguments. + + * tm-m68k.h (FIXUP_FRAME_POINTER_ADDRESSES): + Use frame_pointer_rtx to recognize intended frame-pointer refs + and not recognize pseudo-regs that were allocated to the frame + pointer register. + + * emit-rtl.c: All refs to frame pointer use a single rtx, in + frame_pointer_rtx. Likewise arg_pointer_rtx for the arg pointer. + If they are the same register, these are the same rtx. + Initialize them in init_emit. + * rtl.h: Declare these vars. + + * stmt.c (assign_parms, assign_stack_local): Use those rtx's. + +Sat Jan 23 00:32:10 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) + + * reload.c (find_reloads): Don't combine_reloads if `&' constraint + was used. + + * parse.y: Parse `asm' with operands. + * stmt.c (expand_asm_params): New fn: generate an ASM_OPERANDS for + `asm' with operands. + * final.c (final): Output an ASM_OPERANDS insn-body. + * regclass.c (regclass): Ignore ASM_OPERANDS, like ASM_INPUT. + + * reload.c (find_reloads): Handle reloading of ASM_OPERANDS. + The number of operands can no longer be bounded. + For example we can't always put the operands in recog_operands. + + New locals OPERANDS and OPERAND_LOCS point to alloca'd vectors of + operands and their locations. New locals CONSTRAINTS and CONSTRAINTS1 + hold alloca'd vectors of constraints. + + Unfortunately this isn't enough; every vector with length + MAX_RECOG_OPERANDS needs to be dynamically allocated. + Would this be too slow? For now, a cheap "solution" is to delete + any insn that has too many operands. + + * rtl.def: Delete VOLATILE, UNCHANGING and UNDESCRIBED. + Add ASM_OPERANDS. + + * regclass.c (reg_class_record): Delete ref to UNCHANGING. + * loop.c (invariant_p): + * rtl.c (rtx_varies_p): + + * cccp.c: Define __VERSION__. + + * decl.c (shadow_tag): TYPE_NAME doesn't work to get the tag-name + of a struct, so use new function lookup_tag_reverse. + * decl.c (lookup_tag_reverse): Given a type, return its tag name. + + * symout.c (symout_source_file): Output one `struct source'. + * symout.c (symout_lines): Output all of them, and the sourcevector. + * gdbfiles.h: New file for communication between final.c and symout.c. + + * final.c (output_source_line): New arg WRITE_SYMBOLS says write + new GDB-format linenumber info. Assigns a filenum to each source + file name and keeps track of the correspondence. + + * cccp.c (do_include): Output the -M info after searching the dirs; + include the actual dir name. Don't generate "./" for current dir. + +Fri Jan 22 04:10:10 1988 Richard Stallman (rms at frosted-flakes) + + * tm-news800.h: Delete override of INDIRECTABLE_1_ADDRESS. + Output is faster if it doesn't use 32-bit displacements. + + * reload.c (combine_reloads): New function. + If possible, find an input reload + and an output reload that can be turned into one input-output reload. + The old output-reload is marked as inoperative: reload_out + and reload_in both zero. This is called from find_reloads. + + * reload1.c (reload, choose_reload_targets): Ignore inoperative + reloads. + + * Print warnings for variables that could be clobbered by `longjmp'. + * expr.c (expand_call): Generate a NOTE_INSN_SETJMP whenever + `setjmp' or `_setjmp' is called. + * flow.c (propagate_block): When NOTE_INSN_SETJMP is seen, + record the live regs in `regs_live_at_setjmp'. + * stmt.c (uninitialized_vars_warning): Warn about vars that have regs + that are set more than once and are marked in `regs_live_at_setjmp'. + Works through function `regno_clobbered_by_longjmp'. + * rtl.h: Define NOTE_INSN_SETJMP. + + * genrecog.c (try_merge_2): When enforce_modes, keep all the + alternatives segregated by modes and keep the modes in numerical order. + * genrecog.c (write_tree): Make conditions for switch-on-modes + know what difference enforce_mode makes. + +Thu Jan 21 00:12:35 1988 Richard Stallman (rms at frosted-flakes) + + * tm-ns32k.h: Use Stein's definitions of PRINT_OPERAND{,_ADDRESS}; + move the Sequent definitions info tm-sequent.h. + Handle %$ in both old and new PRINT_OPERAND. + Define CPP_PREDEFINES. + + * ns32k.md: Merge some features from Jan Stein's port: + strict_low_part insns, smart output of booleans with small + constant args, acbd insns generalized for other increments. + Use %$ wherever there is an explicit immediate. + Fix shortcomings of adjsp insns: use adjspd in general, + and use adjspb in all the cases that allow it. + Don't bother explicitly clearing CC_REVERSED. + For tstsf/tstdf, output the floating-zero constants + using {f,d}const0_rtx. + + A problem still remains, which is that the Sequent and the + other ns32k assembler syntax require different + + * typecheck.c (unary_complex_value): Use correct datatype for + compound-exprs. + + * gen*.c (main): Use obstack_init instead of obstack_begin. + + * vax.md: define_peephole for andl3 x,y,z; extzv z,....,z + + * m68k.md (tstsi): Use cmpw instead of cmpl to test addr reg. + + * tm-m68k.h: Bugs for 68000 when frame size is over 64k. + For FUNCTION_PROLOGUE, just subtract from sp instead of fp. + For FUNCTION_EPILOGUE, must put the size into a0 and then + all insns must be indexed by a0. And do this even on 68020. + + * tm-isi68.h: Similar changes. + * tm-news800.h, tm-hp9k320.h: Similar changes. + +Wed Jan 20 04:38:21 1988 Richard Stallman (rms at frosted-flakes) + + * cccp.c (error_with_line): New function. + Use it to report the "unterminated whatever" errors. + + * typecheck.c (build_unary_op): Recursive call had missing arg. + + * m68k.md (movhi): If MOTOROLA, the insn that fetches from a + case-dispatch table now defines the LI label as .+2. + * tm-news800.el, tm-hp9k320.h (PRINT_OPERAND_ADDRESS): + Don't subtract 2 when outputting the address in that insn. + +Tue Jan 19 00:02:33 1988 Richard Stallman (rms at frosted-flakes) + + * cse.c (cse_basic_block): Abort if more qtys were used than allocated. + +Mon Jan 18 04:44:28 1988 Richard Stallman (rms at frosted-flakes) + + * cccp.c (special_symbol): tm_mon is origin-0, not origin-1. + + * final.c (output_asm_insn): If %LETTER with no digits, + pass null pointer as the operand. + + * output-m68k.c (singlemove_string): Get rid of %e. + + * stmt.c (fixup_memory_subreg): Convert (SUBREG (MEM a)) to (MEM a'). + * stmt.c (fixup_var_ref_1): Use that fn for operands of + SIGN_EXTRACT and ZERO_EXTRACT, since (SUBREG:SI (REG:QI...)) + could have turned into (SUBREG:SI (MEM:QI...)), which is unsafe. + + * rtl.c (debug_rtx): Print an rtx on stderr, for debugging. + +Sun Jan 17 04:37:20 1988 Richard Stallman (rms at frosted-flakes) + + * gcc.c: options -M* treated like -M. + + * stmt.c (pushcase): Do nothing if the case index has error_mark type. + + * expr.c (expand_increment): Don't use queue for post-inc on memory + if the add insn requires register args. (Better code for RISCs.) + +Sat Jan 16 02:10:22 1988 Richard Stallman (rms at frosted-flakes) + + * ns32k.md: Change register_operand to general_operand. + * ns32k.md (udivmoddisi4): Use match_dup where required. + Comment it out because it can't accept two independent output args. + +Fri Jan 15 00:02:35 1988 Richard Stallman (rms at frosted-flakes) + + * toplev.c: Include sys/time.h only for BSD. For USG, use time.h. + This is correct for HPUX; don't know about others. + + * gcc.c (execute): Eliminate `union wait'. Make `status' an int. + * gcc.c (execute) [USG]: Use fork instead of vfork. + + * final.c (output_source_line): Use ASM_OUTPUT_SOURCE_{FILENAME,LINE} + if they are defined. + + * tm-hp9k320.h: New name for tm-hpux.h. + * tm-hp9k320.h (ASM_OUTPUT_LOCAL): Add 3rd arg to `lcomm' statements. + * tm-hp9k320.h (ASM_OUTPUT_{DOUBLE,FLOAT}): Use `double' and `float'. + * tm-hp9k320.h (CALL_USED_REGISTERS): Don't save any 68881 regs. + * tm-hp9k320.h (CPP_PREDEFINES): different names defined. + * tm-hp9k320.h (HPUX_ASM, NO_DBX_FORMAT, ASM_SPEC): define these. + * tm-hp9k320.h (ASM_OUTPUT_OPCODE): Convert `ftst' to `ftest'. + * tm-hp9k320.h: Define ASM_OUTPUT_SOURCE_{FILENAME,LINE}. + + * m68k.md: Rename `hpux' conditionals to `HPUX_ASM'. + * m68k.md: Reverse `fcmp' args if HPUX_ASM. + + * cccp.c (print_deps): 2 means give all files, 1 means only user files. + * cccp.c (do_include): Support that. + * cccp.c (main): -MM sets 1, -M alone sets 2. + * cccp.c (main): Give fatal error if I/O error in writing. + + * toplev.c (fatal_io_error): Report I/O error on given filename, + and exit. + + * toplev.c (compile_file): Detect error writing asm_out_file. + Always put asm file's name in asm_file_name for err msg. + * symout.c (symout_finish): Detect error writing symfile. + * symout.c (symout_init): Save filename in symfile_name for err msg. + + * gen*.c: Return 1 if ferror (stdout)--in case disk is full. + + * local-alloc.c (block_alloc): Don't crash if 1st rtx + in a PARALLEL is not a SET. + + * tm-m68k.h, tm-news800.h (PRINT_OPERAND). Eliminate code `%e'. + * m68k.md: Change `%e' to `e' everywhere. + * tm-hpux.h (ASM_OUTPUT_OPCODE): Output `move' as `mov'. + + * tm-m68k.h, tm-news800.h, tm-hpux.h (PRINT_OPERAND): + New code `%!' is output as the name for the cc register. + * m68k.md (insns that use andi to ccr): Use `%!' to avoid + conditionals. + + * cse.c: Record in qty_const_insn the insn that stored the + constant value of a qty. When making a REG_WAS_0 note, + store in it the insn that established the value 0. + + * vax.md (movsi): When checking a REG_WAS_0 note, + verify that the insn it points to hasn't been deleted or made a NOTE. + +Thu Jan 14 00:01:35 1988 Richard Stallman (rms at frosted-flakes) + + * toplev.c: Eliminate error_with_line and warning_with_line. + * parse.y, decl.c: Change remaining calls to those two. + + * tree.c (get_unwidened, get_narrower): To see if a COMPONENT_REF + is unsigned, look at the FIELD_DECL, not at the COMPONENT_REF. + + * rtl.c (print_rtx): Print /v for the `volatil' bit. + * expr.c (expand_assignment expand_expr): If handling a COMPONENT_REF, + note whether it is volatile. + + * fold-const.c (fold): a call to split_tree missed an argument. + + * flow.c (volatile_refs_p): Scan an rtx for volatile mem refs. + * flow.c (life_analysis): Record in INSN_VOLATILE which insns + have any volatile mem refs. + * flow.c (mark_used_regs): Always mark an insn with volatile mem refs. + Always pass INSN as an arg. New arg FINAL now says whether + this is the last time scanning. + * flow.c (propagate_block): Don't delete insns with volatile mem refs. + + * flow.c: Remove all refs to `obey_regdecls'. + Calling this with -noreg just doesn't help -W. + +Wed Jan 13 01:13:07 1988 Richard Stallman (rms at frosted-flakes) + + * decl.c (finish_decl): Error if auto var's size isn't known. + Change type to error_mark_node to avoid crash if the var + is used in an expression, since it has no DECL_RTL. + + * output-m68k.c (output_move_const_single): % -> %% for sprintf. + + * parse.y (yylex): Store token_buffer properly after ellipsis. + + * decl.c (duplicate_decls): Don't call layout_decl + for FUNCTION_DECL or TYPE_DECL. + + * toplev.c (warning_with_decl): New warning function with decl as arg. + * (error_with_decl): similar. + + * decl.c: Replace most `yylinerror' calls with `error_with_decl'. + + * decl.c (build_struct): Reform code to detect erroneous bit-fields. + All such errors are now detected here. + Promote bit-fields to int if appropriate. + If traditional, make all int bit-fields unsigned. + Set DECL_ALIGN for members that are not bit-fields. + + * decl.c (grokfield): Don't set DECL_ALIGN here. + + * stor-layout.c (layout_decl): Don't promote the type of a bit-field. + Use TREE_PACKED to distinguish a bit-field. + Don't check the width because build_struct did that. + + * m68k.md (cmpm): Reject if either operand (address) is a constant. + +Tue Jan 12 15:11:20 1988 Richard Stallman (rms at frosted-flakes) + + * cse.c (canon_reg): Never replace ANY hard reg from reg_rtx + because that could alter the machine mode. + + * tm-news800.h: Redefine INDIRECTABLE_1_ADDRESS only if MOTOROLA. + +Mon Jan 11 13:15:45 1988 Richard Stallman (rms at frosted-flakes) + + * jump.c (follow_jumps): If we find a cycle, make it a jump to self. + + * cse.c (predecide_loop_entry): Give up if chase more than 10 jumps. + +Sun Jan 10 14:52:42 1988 Richard Stallman (rms at frosted-flakes) + + * reload1.c (reload): basic_block_needs (new vector) gets 1 + for each basic block that needs a reload. + * reload1.c (spill_hard_reg): Don't spill pseudos that are + confined to a basic block which has no need for any reloads. + * reload1.c (reload): Each cycle that any element of basic_block_needs + changes from 0 to 1, must re-spill all previously spilled regs. + + * regclass.c (record_address_regs): + Skip the charging of ICOST if it is 0. + + * flags.h, toplev.c: New flag -fvolatile. + * typecheck.c (build_indirect_ref): If flag_volatile, + every INDIRECT_REF is marked with TREE_THIS_VOLATILE. + + * fold-const.c (fold): Test in TRUTH_NOT_EXPR case was backward. + Also result type is always `int'. + +Sat Jan 9 04:16:11 1988 Richard Stallman (rms at rice-krispies) + + * flags.h (flag_traditional): New flag. + * toplev.c: recognize -ftraditional and -traditional. + * parse.y (yylex): If flag_traditional, don't recognize + `signed', `const' or `volatile'. + + * decl.c (pushdecl): If flag_traditional, any extern decl + takes effect at top level. + + * tree.c (lvalue_or_else): New 2nd arg for use in error message. + * typecheck.c: All callers pass 2nd arg. + + * global-alloc.c: allocno_preferred_reg can specify a preferred + hard reg for each allocno. If so, try it first (new call to find_reg). + + * global-alloc.c (find_reg): New arg PREFREG specifies reg to try + first. + + * decl.c (build_struct): if :0 bit field at the end, round the + structure size to multiple of EMPTY_FIELD_BOUNDARY. + + * cse.c (make_regs_eqv): Was testing for reg_next_eqv[lastr] == 0 + and should be == -1. + + * reload1.c (reload_as_needed): Fix invalid optimization deleting + the previous store into a pseudo-reg that feeds an input-reload. + It is not safe because a later insn may look in the pseudo's stack + slot for the value. Delete the store only if we can eliminate the + pseudo entirely or if the current insn stores a new value there. + Also verify that reload_in[j] is a REG. + + * reload1.c (reload_as_needed): When doing an input reload from a + pseudo that was stored by the previous insn (not as a reload), + redirect the previous insn into the reload register, if this lets + us eliminate the pseudo entirely. + + * reload1.c (reload_as_needed): In both of the above cases, it's + impossible to prevent a stack slot since one was already assigned, + so don't alter reg_n_refs. Instead, set reg_renumber to record + that this pseudo did get a hard reg. + + * stmt.c: Set `volatil' in pseudo-regs for the user's variables. + + * jump.c (delete_insn): Do nothing if insn already deleted. + + * tm-sun{2,3}.h: #define STRUCTURE_SIZE_BOUNDARY 2 + for compatibility with Sun PCC. Note that 4.3 vax PCC + does not want this. + + * fold-const.c: Replace truncate_unsigned with force_fit_type + which truncates unsigned types and sign-extends signed types. + + * expr.c (do_jump): emit_queue before outputting the jump insns + that use the comparison. + + * stmt.c: Error message for any goto that jumps into a + binding contour that restores a stack level. + + TREE_PACKED (label) means label was defined inside + such a binding contour that is now exited. Using such a label + is an error. + + TREE_ADDRESSABLE (label) means label was used from a place + outside all such binding contours. If this is 1 when + TREE_PACKED is set to 1, it is an error. + + Any other invalid goto must have a fixup. fixup_gotos detects + such invalid gotos. fixup_gotos takes a second arg, which + is the first insn of the contour now being exited. + + * GNU C version 1.17. + +Local Variables: +mode: indented-text +left-margin: 8 +fill-column: 76 +version-control: never +End: diff --git a/ChangeLog.1 b/ChangeLog.1 new file mode 100644 index 0000000..b0f29ab --- /dev/null +++ b/ChangeLog.1 @@ -0,0 +1,9207 @@ +Thu May 10 22:48:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.def (DEFINE_DELAY): Change description to describe annulling. + + * genattr.c (main): Write out definitions for annulling, if present. + + * genattrab.c (expand_delays): Build internal attributes for + which insns can be annulled in a delay slot. + (gen_delay): Validate number of elements in DEFINE_DELAY list. + (write_eligible_delay): Write out routines for validating annulled + insns as well as those in normal delay slot. + (main): Call write_eligible_delays to output annulling information, + if it exists for this machine. + + * out-m68k.c (not_sp_operand): New function. + * m68k.md (andsi3): Don't allow sp as ourput to avoid reload + inefficiency. + + * calls.c (struct arg_data): Delete field STORED; add fields + PASS_ON_STACK and SAVE_AREA. + (prepare_call_address): Static chain value can't have QUEUED. + (expand_call): Rework to support additional calling sequence options. + + Major changes include: + Call FUNCTION_ARG_PASS_BY_REFERENCE to determine whether an + object should be passed by invisible reference. + Handle arguments passed both on stack and in a register; this can be + used to allow arguments that are hard to compute directly into + registers to be passed. + Support option (ACCUMULATE_OUTGOING_ARGS) where the largest amount + of stack for outgoing arguments is computer and pushed during the + function prologue. Stack space usage is tracked and any location + that would need to be reused will be saved and restored. + If preallocating arg block, compute address where each arg will be + placed and pass it as target to expand_expr. + + Other changes: + Use virtual regs to see if structure value address isn't stable. + If inlined, return TARGET if TARGET and TEMP are equivalent. + UNNAMED_ARGS_IN_REGISTERS is redundant with the NAMED parameter to + FUNCTION_ARG and has been deleted. + Use virtual_outgoing_stack_rtx instead of FIRST_PARM_CALLER_OFFSET. + Use locate_and_pad_parm to compute any needed padding for argument. + If REG_PARM_STACK_SPACE is defined, allocate backing stack locations + for args passed in registers; these are not included in the length + of stack space required unless OUTGOING_REG_PARM_STACK_SPACE is also + defined. + When precomputing register parameters, can stop computation when we + obtain any rtx, not necessarily a register. + No longer need code to protect data written below bottom of stack; + this is taken care of by preexpanding calls in argument. + target_for_arg no longer needed; its function is performed by + store_one_arg. + Always copy function return result to our target since they cannot + possibly be the same. + (target_for_arg): No longer used. + (store_one_arg): Save and restore in-use argument list location. + Support args passed both in register and on stack. + No need for explicit code for preallocated area; now pass location + as target to expand_expr; only copy if result in different place. + Put sequence point after expanding one value. + + * cse.c (struct write_data): Add bit to indicate stack pointer changed. + (canon_hash): Allow recording of stack pointer. + (cse_insn): Indicate stack pointer invalidated by subroutine calls. + Pass stack push and pop operations to note_mem_written. + Process stack pointer assignment as normal operation. + Finish change of April 7th that excludes ap and fp from being marked + as clobbered by calls. Also exclude sp; if it is clobbered by a + call, an explicit CLOBBER will be written. + (note_mem_written): Look for adjustment of stack pointer. + (invalidate_from_clobbers): Invalidate stack pointer, if required. + + * emit-rtl.c (gen_inline_header_rtx): Add field for outgoing args size. + (copy_rtx_if_shared): Check for any virtual register instead of frame + or argument pointer. + (init_emit): Start normal pseudos after virtual pseudos. + Copy the unique virtual regs into regno_reg_rtx. + (init_emit_once): Incoming and outgoing static chain can be the same; + inlining of nested functions won't need the distinction. + Create unique copies of virtual registers. + + * explow.c (memory_address): Don't worry about refs to fp or ap; + force_reg knows how to handle them correctly. + (fix_lexical_addr): Moved to function.c + (adjust_stack, anti_adjust_stack): Do nothing for adjustment of zero. + (allocate_dynamic_stack_space): New function copied from + expand_builtin. Handle STACK_POINTER_OFFSET via + virtual_stack_dynamic_rtx. When STACK_POINTER_OFFSET is defined, + perform alignment by always reserving a multiple of STACK_BOUNDARY + stack bits. This avoids concern about whether sp itself or the top of + stack needs to be aligned; if we start with an aligned stack, we keep + it aligned. + (round_push): Use ADD and AND rather than DIV and MULT. + + * expr.c (init_expr): Initialize some more vars. + (push_block): Use virtual_outgoing_args_rtx so don't need + STACK_POINTER_OFFSET here. + Merge extra and size more efficiently; no need to call force_operand + since memory_address is called. + (emit_push_insn): Pass type for FUNCTION_ARG_PADDING. + Use REG_PARM_STACK_SPACE instead of FIRST_PARM_CALLER_OFFSET. + To see if must copy address, check if it is a virtual register that + will be mapped to sp; only need check if not accumulating space + space for outgoing parms. + Ignore EXTRA if argument block has already been allocated. + (emit_library_call): Major rework to support calling sequences similar + to expand_call in calls.c, but only support a very small subset of + the conventions; abort if something outside our subset occurs. + Abort if incorrect mode is passed; we can't convert here since we don't + know the signedness. + (store_field): Check for virtual registers instead of hard registers + when seeing if stable. + (safe_from_p): Location in outgoing stack area is known to be safe. + (expand_builtin, BUILT_IN_ALLOCA): Use allocate_dynamic_stack_space. + + * expr.h: Define current_function_outgoing_args_size and + locate_and_pad_parm; delete definition of get_structure_value_addr. + (ARGS_SIZE_RTX): Always return a valid operand. + (ARGS_SIZE_TREE): New macro. + (FUNCTION_ARG_PADDING): Accept MODE and TYPE like other + FUNCTION_ARG_... macros. + (FUNCTION_ARG_BOUNDARY): Provide default for new macro. + (MUST_PASS_IN_STACK): New macro. + (allocate_dynamic_stack_space): New function. + * tm-3b1.h, tm-3b1g.h, tm-apollo68.h, tm-crds.h, tm-mot3300.h: + Change definition of FUNCTION_ARG_PADDING to use TYPE instead of SIZE. + + * function.c (current_function_outgoing_args_size): New var. + (arg_pointer_save_area, virtuals_instantiated): Likewise. + (invalid_stack_slot): No longer used. + (push_function_context, pop_function_context): Save and restore + outgoing args size and arg pointer save area. + No longer save or restore invalid_stack_slot. + (pop_function_context): Set up variables whose value is constant + throughout rtl generation. + (get_frame_size): No longer adjust by STARTING_FRAME_OFFSET. + (assign_stack_local): Use virtual_stack_vars_rtx instead of fp + until virtuals have been instantiated, then use fp. + Remove reference to obsolete invalid_stack_slot. + Can no longer be called with size == 0. + (assign_outer_stack_loc): Use virtual_stack_vars_rtx instead of fp. + Remove references to obsolete invalid_stack_slot. + Push to obstack of containing function when allocating rtx. + (put_var_into_stack): Only switch obstacks around making of + queue entry. + Replace call to parm_stack_loc with reference to info in proper + function. + (fixup_stack_1): Handle any virtual register instead of handling + just fp. + (instantiate_virtual_regs, instantiate_virtual_regs_1): New functions. + (use_variable, use_variable_after): Check for virtual register + instead of checking against ap and fp. + (parm_stack_loc): Function deleted. + (assign_parms): No longer need internal_arg_pointer. + Accept SECOND_TIME argument that suppresses rtl generation and + assignments to DECL_RTL. Used by integrate.c to recompute vars. + Don't use FIRST_PARM_OFFSET here; use virtual_incoming_args_rtx. + Replace test for nonstable incoming arg pointer. + If structure value address is treated as the first argument, add + it into the list of arguments; this means we can have a RESULT_DECL + in with the PARM_DECL's. + DECL_OFFSET is no longer needed by integrate.c. + Handle args passed by invisible reference. + Support new macro, SETUP_INCOMING_VARARGS, to save all registers used + for args including and beyond those for the current arg. Used for + non-ANSI varargs. + Pass locate_and_pad_parm data it needs to handle reg->stack boundary + if register parameters have assigned stack space. + If we received the function's incoming structure pointer as a + normal argument, update DECL_RTL of DECL_RESULT. + Round total argument size if required; similarly, always use at + least REG_PARM_STACK_SPACE bytes if defined. + (locate_and_pad_parm): Do not need PARM. + Major rework to do much of the job of aligning and padding stack + location. Now a void function wich is passed pointers to struct + args_size vars that are set to the argument position, size, and + initial offset. + Accept flag denoting if a parm was passed in a register and also + the current function declaration. + If register parameters are assigned stack locations and there is a + minimum required size for the area assigned to register parameters, + pad the stack position when a parameter not assigned to a register + is encountered. + Remove redundant code in MAX_PARM_BOUNDARY case. + (lookup_static_chain): Use virtual_stack_vars_rtx instead of fp. + (fix_lexical_addr): Move from explow.c. + If referencing variable that lives in the incoming argument area + of its parent and a separate ap is required, allocate a save area in + the parent for it and use it here. If no separate ap is require, + compute offset between ap and fp. + (trampoline_address): No need to push obstacks here. + (init_function_start): Initialize new vars; delete obsolete vars. + (expand_function_start): Don't need to handle case where incoming + structure return address is passed as hidden parameter here; now done + completely in assign_parms. + (expand_function_end): Save ap if a save area was made for it. + Set REG_FUNCTION_VALUE_P when copying address of returned + structure. + Be consistent in use of FUNCTION_... macros vs. hard_function_value. + + * function.h (outgoing_args_size, arg_pointer_save_area): New fields. + (invalid_stack_slot): Obsolete, deleted. + + * integrate.c: Major rework and simplification. + Split up vars into two classes. Those used for expand_inline_function + and children are now part of struct inline_remap. Most of the others + are for save_for_inline and its children. + (function_cannot_inline_p): The only type of arguments that will + cause us to reject inlining are variable-sized arguments; also + reject functions that return variable-sized objects. + For now, don't inline a nested function. We'll support this shortly. + Use current_function_returns_pcc_struct instead of duplicating test. + (save_for_inline): No need to set TREE_VOLATILE for parms. + Save outgoing args size in header. + Use unique copy of virtual reg rtx's. + Handle any required fixups for INSN_LIST forward-references. + Don't bother resetting dead static vars when we are done. + Need not save current_function_pretend_args_size. + (copy_for_inline): First copy all insns, then all REG_NOTES to avoid + problems with forward references. + (struct inline_remap): Move all previously-static vars used by + expand_inline_function and children into this structure. This avoids + potential problems due to recursive calls to expand_inline_function. + (expand_inline_function and children): Allocate a struct inline_remap + and pass to all children. + (expand_inline_function): Rework parameter handling by looking at + DECL_RTL and using it to determine what types of mappings need to be + done. Support objects passed by invisible reference. Put any + constant memory addresses into const_equiv_map. parm_map is no longer + used. + Likewise for the return value: consult DECL_RTL (DECL_RESULT)). + Don't allocate space for called function's frame until referenced. + No longer need special handling for insn following CALL. + Ignore USE whose argument has REG_FUNCTION_VALUE_P true. + Ignore setting function register if we don't have a mapping for it + (e.g., we are ignoring the result of the call). + Look at new SET_SRC for constant equivalences. Some new ones may + have resulted from constant folding. + Pass both new and old rtx to try_constants. + Discard NOTE_INSN_DELETED notes. + Copy insns first, then REG_NOTES, to avoid problems with forward refs. + (copy_parm_decls): Compute new address of parameter using the + constant equivalence map, which will contain the remapping of + the frame and argument pointer. + (copy_decl_tree): Likewise. + (copy_rtx_and_substitute): Handle references to frame and argument + pointers by allocating a space equal to the size of the frame and + incoming arguments, respectively, and setting a pseudo to point to + the start of each area. Set up an equivalence in CONST_EQUIV_MAP + between fp or ap and the actual address. Return the pseudo. + Don't need to deal with possibility of (SUBREG (CONST_INT)) since + we are only replacing register with other registers here. + No longer need to special-case PLUS and MEM; subst_constants will do + this work. + Update detection of sets of ap and fp. + (try_constants, subst_constants): Accept old and new rtx. They will + be isomorphic, with only register numbers changed. Use old rtx to + look up register in CONST_EQUIV_MAP and new rtx for substitution. + Correctly handle SUBREG of CONST_INT and CONST_DOUBLE. + Fix typos in handling of PLUS. + (access_parm_map, copy_address): Delete functions. + (try_fold_cc0): Handle both compare and test. + (fold_out_cnst_cc0): Rework to simplify and remove dubious cases. + (output_inline_function): Call assign_parms to perform any needed + setups. + Need not restore pretend arg size (will be computed by assign_parms). + Restore outgoing argument size. + + * output.h (current_function_outgoing_args_size): New var. + + * rtl.h (OUTGOING_ARGS_SIZE): New field in INLINE_HEADER. + (PRETEND_ARGS_SIZE): No longer needed. + (virtual_..., VIRTUAL_...): Define virtual register numbers and rtx. + + * rtlanal.c (rtx_equal_p): Update comment on use of + REG_FUNCTION_VALUE_P. + + * stmt.c (expand_goto): Just restore fp; non-local goto handler + will restore ap if needed. + (expand_return): Don't use STARTING_FRAME_OFFSET here. + (expand_end_bindings): Adjust fp in nonlocal-goto handler. If needed, + reload ap from its save area in the frame; allocate save area if none. + (expand_decl): Use new function allocate_dynamic_stack_space. + + * toplev.c (rest_of_compilation): Instantiate virtual registers. + Clear rtx_equal_function_value_matters immediately after possibly + saving current routine for inlining. + + * stupid.c (stupid_life_analysis): Don't try to allocate virtual + registers (which don't exist any more). + +Thu May 10 13:59:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (modes_equiv_for_class_p): Don't compare HARD_REGNO_NREGS. + + * combine.c (subst): Simplify + (sign_extend:M (subreg:N (ashiftrt:M (sign_extend:M (any:N ...))))). + + * fixincludes: Verify that a link leads back to /usr/include + by checking name of dir it arrives in. If so, use rest of dirname + as target for new link. + + * Makefile.in (tmpgnulib): Put dummy entry in loop with LIBFUNCS_EXTRA + so loop is never null. Then ignore that entry when it comes up. + + * gcc.c (default_compilers): Add explicit suffix to arg of -dumpbase. + +Tue May 8 13:54:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-ultrix.h: New file. + +Mon May 7 18:47:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (test... recognizers): Output symbolic constant first. + +Sun May 6 22:51:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * function.c (fixup_memory_subreg): Make a sequence if -fforce-addr. + + * fixincludes: When going to directory of link name, don't lose + if name has no directory. + Move the code to fix netinet/ip.h; was in the middle of something. + + * Makefile.in (tmpgnulib): Test LIBFUNCS_EXTRA for nonempty. + +Sun May 6 08:29:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (LIBFUNCS): Remove extraneous "\". + + * Makefile.in (stamp-gnulib2): Move "-" to proper line. + + * gnulib2.c (clear_cache): Ignore routine unless INSN_CACHE_SIZE + is defined (avoids cpp-detected divide-by-zero). + + * expr.c (safe_from_p): Don't blow up when passed a null tree. + + * varasm.c (get_pool_size): New function to return constant pool size. + +Fri May 4 16:11:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (safe_from_p): If EXP has some rtx, just check it. + Handle TREE_LIST, RTL_EXPR, and WITH_CLEANUP_EXPR. + Note that CALL clobbers memory and hard registers. + Look at enclosed object for SUBREG, but SUBREG of a hard reg is unsafe. + + * expr.c (store_constructor): Now that safe_from_p has been applied + to the target, need not avoid hard register targets. + Abort if called with neither ARRAY_TYPE or RECORD_TYPE. + + * reload.c (find_equiv_reg): Handle goal of (plus (sp) (const)). + + * Makefile.in (STAGESTUFF): Include hard-params. + +Fri May 4 15:33:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (add_prefix): New arg WARN. Record in prefix_list. + (main): Calls changed. Pass nonzero for -B prefixes. + Later, call unused_prefix_warning. + (unused_prefix_warning): Warn about prefixes never used. + +Thu May 3 16:56:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (print_node): Align the `align' line with the others. + + * expmed.c (store_bit_field): Maximum size for loading mem struct + into reg comes from the mode of the value to be stored. + Alignment is no restriction if it matches BIGGEST_ALIGNMENT. + Always do the real work in SImode if couldn't use MEM. + (extract_bit_field): Likewise. + + * combine.c (subst): Handle (sign_extend:M (subreg (sign_extract:M))) + on big-endian machine like corresponding zero_extend case. + + * combine.c (try_combine): Use rtl_equal_p instead of == when + testing for sources and destinations that match. + + * pyr.md (bitw recognizer): Set CC_NO_OVERFLOW. + +Thu May 3 13:03:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Can always use original + target if specified. + In "X ? A + B : A" case, use safe_from_p to see if target conflicts + with B. + + * cse.c (cse_insn): Don't rewrite (set REG0 REG1) if REG1 is a hard + register even if is REG0 cheaper. + +Thu May 3 12:04:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (reload): Handle multiple size groups for one class. + + * stdarg.h: Typo in conditional. + +Wed May 2 16:34:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sun3.h (CC1_SPEC): Ignore -target. + (WORD_SWITCH_TAKES_ARG): Define it. + * tm-sparc.h (CC1_SPEC): Ignore -target and -dalign. + (WORD_SWITCH_TAKES_ARG): Define it. + +Wed May 2 09:38:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): Always replace registers with oldest equivalent, + including the case when the destination is present in the source. + +Tue May 1 15:55:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__adddi3, __subdi3): New, simpler algorithm. + +Tue May 1 14:48:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in: Insert "else true;" in *_ALLOCA macros. + + * stor-layout.c (mode_for_size): No longer static. + Accept LIMIT parameter to limit mode to MAX_FIXED_MODE_SIZE. + (layout_decl, layout_type): Pass appropriate limit parameter to + mode_for_size. + +Tue May 1 13:09:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (assign_parms): Don't make entry_parm and stack_parm valid. + Leave them explicit stack slots. + * explow.c (validize_mem): Copy it, don't alter it. + + * out-m68k.c (standard_68881_constant_p): Handle HOST_WORDS_BIG_ENDIAN. + + * integrate.c (save_for_inline): Copy reg notes after all insns. + + * combine.c (subst): When checking reg_last_set, verify nonzero. + + * gcc.c (default_compilers): Use %b, not %i, after -dumpbase. + + * stor-layout.c (make_unsigned_type): Change like make_signed_type. + +Tue May 1 07:36:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Allocate space + for local variables even if no frame pointer; adjust size to account + for place where old frame pointer would have been placed. + (INITAL_FRAME_POINTER_OFFSET): Add frame size instead of subtracting + it and perform adjustment described above. + + * expr.c (validate_subtarget): Deleted. + (expand_expr): Replace calls to validate_subtarget with safe_from_p. + +Mon Apr 30 01:39:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (install-headers): Simplify loop by cd'ing to srcdir. + + * stor-layout.c (layout_type): Get alignment of all scalar types + from the mode. + (make_signed_type): Get rid of ptr_size_node, function_size_node. + * tm-*.h (POINTER_BOUNDARY): Deleted. + + * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, + mark the PLUS_EXPR constant if appropriate. + (parser_build_binary_op): Record C_SET_EXP_ORIGINAL_CODE here. + (build_binary_op): Not here. + + * fold-const.c (size_int): Make arg unsigned. + + * varasm.c (output_addressed_constants): Fixed typo. + + * cccp.c (macarg1): `\' not special outside strings. + + * c-typeck.c (build_unary_op): In increment ops, + typo checking for ptr to void/function. + Check original type for this and for amount of increment. + +Sat Apr 28 16:43:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_indirect_ref): Error if target is incomplete type. + +Fri Apr 27 13:56:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (order_regs_for_reload): Count multi-word pseudos right. + +Thu Apr 26 17:52:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (handle_directive): Don't pass directive through if no_output. + + * c-parse.y (yylex): Large hex constants are signed if -traditional. + +Tue Apr 24 13:57:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i860.md, m88k.md: Add missing = in some output constraints. + + * tm-ns32k.h (POINTER_BOUNDARY): Now 32. + + * out-*.c (output_move_double): Use split_double. + * final.c (split_double): New function, handles byte-order differences. + + * stmt.c (expand_decl): Check size for integer, not "constant". + * stor-layout.c (layout_decl, layout_type): Likewise. + * c-decl.c (finish_decl): Likewise. + * c-typeck.c (digest_init): Likewise. + * varasm.c (assemble_variable, output_constructor): Likewise. + (decode_addr_const): Distinguish getting rtl by code alone. + (output_addressed_constants): No need to abort. + In ADDR_EXPR case, check TREE_CODE_CLASS. + + * c-tree.h (C_DECLARED_LABEL_FLAG): New flag. + * c-parse.y (label declarations): Set it. + * c-decl.c (pop_label_level, lookup_label): Use it. + + * expr.c (string_constant): Accept variable offsets. + (expand_expr): Check for explicit integers, not constants, in sizes. + (safe_from_p): No need to check TREE_CONSTANT. + + * Makefile.in (prefix): Now replaces /usr/local instead of adding on. + +Mon Apr 23 02:01:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cplus-tree.h (DECL_FRIENDLIST): Use DECL_INITIAL. + + * expr.c (expand_assignment): Use expr_size to compute size. + +Sun Apr 22 21:53:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_assignment, expand_expr): Check for COMPONENT_REF + before testing DECL_BIT_FIELD. + + * stor-layout.c (convert_units): Deleted. All calls eliminated. + + * TREE_CONSTANT renamed from TREE_LITERAL. + * TYPE_READONLY split off from TREE_READONLY. + * TREE_SIDE_EFFECTS renamed from TREE_VOLATILE. + * TYPE_VOLATILE split off from TREE_VOLATILE/TREE_THIS_VOLATILE. + +Sun Apr 22 15:26:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (strength_reduce): Avoid problems in biv elimination by not + being forced to use giv's that have complex new_reg values while the + underlying giv is marked maybe_dead; clear maybe_dead in this case. + + * loop.c: Make verification of loops take linear, not quadratic, time. + (verify_loop, can_jump_in_range_p): Deleted. + (prescan_loop): New function, contents are from old verify_loop. + (scan_loop): Call prescan_loop. + (find_and_verify_loops, mark_loop_jump): New functions. + (loop_optimize): Allocate new tables and call find_and_verify_loops + once instead of calling verify_loop for each loop. + Use data from find_and_verify_loops instead of scanning all insns. + + * expr.c (safe_from_p): New function. + (validate_subtarget): Use safe_from_p. + (expand_expr, case CONSTRUCTOR): Likewise. + + * expr.c (store_expr): Handle cases where EXP is a compound + or conditional expression specially to avoid unnecessary temporaries. + +Sun Apr 22 00:15:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_type): Delete size_unit. + (struct tree_decl): Delete size_unit and voffset_unit. + Reduce lang_flags to save 1 word. + + * function.c (init_function_start): Don't use DECL_RESULT_TYPE. + * integrate.c (expand_inline_function): Likewise. + * c-decl.c (start_function, duplicate_decls): Likewise. + * tree.h (struct tree_decl): Delete voffset. + (DECL_RESULT_TYPE): Deleted. + + * objc-actions.c (encode_field_decl, objc_copy_list): + Switch to DECL_FRAME_SIZE. + * cplus-class.c (finish_struct): Likewise. + * cplus-decl2.c (grokbitfield): Switch to DECL_BIT_FIELD. + * c-parse.y, cplus-parse.y, objc-parse.y: Likewise. + + * tree.h (TYPE_NO_FORCE_BLK): New flag in types. + * stor-layout.c (layout_type): Use it. + * tree.h (DECL_TOO_LATE): New flag. + * stmt.c (expand_end_bindings, expand_goto_internal): Use it. + * tree.h (TREE_PACKED): Deleted. + + * cplus-typeck.c (unary_complex_lvalue): Confusing use of + DECL_SIZE_UNIT; not clear what to do. + * cplus-tree.c (layout_vbasetypes): Likewise. + * cplus-class.c (modify_vtable_entry): Likewise. + + * cplus-parse.y (YYDEBUG): Force it on. + (print_parse_statistics, init_parse): No-op if not YYDEBUG. + + * fold-const.c (fold): REAL_INFINITY affects reals, not ints. + + * protoize.c (edit_fn_declaration): Make arg volatile to stop warning. + +Sat Apr 21 03:04:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (store_bit_fields): Adjust for elimination of BImode. + + * c-parse.y (simple_if, stmt): Store stmt_count in proper place, + which is slot 1 of the if. + (simple_if, lineno_stmt, stmt): Output the note at beginning of + stmt, not in lineno_stmt. Use emit_line_note. + (simple_if): Set if_stmt_*, then use lineno_stmt directly. + (lineno_stmt): Before most uses, call skip_white_space. + (finput): Move to top of file. + + * cplus-class.c (build_instantiated_decl): Fix typo. + + * cplus-tree.h (C_TYPE_FIELDS_READONLY): Use lang_flag_1. + (TYPE_HAS_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, TYPE_NEEDS_CONSTRUCTOR): + (TYPE_NEEDS_DESTRUCTOR): Advance each to next lang_flag. + * tree.h (TREE_LANG_FLAG_5, TREE_LANG_FLAG_6): Define them. + + * config.gcc: Delete ./Makefile.in iff not in the source dir. + + * Makefile.in (for-bootstrap): New target. + + * dbxout.c (dbxout_finish_symbol, dbxout_type, dbxout_prepare_symbol): + Add temporary conditionals on WINNING_GDB. + + * print-tree.c (print_node): Print the TYPE_SYMTAB_ADDRESS. + + * Makefile.in (protoize.o, unprotoize.o, SYSCALLS.c.X): + Include from or look in dir $(srcdir). + +Fri Apr 20 16:30:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (output_constructor): Backward test for bit-field. + + * Makefile.in (stamp-*): Delete .c or .h from these names. + +Fri Apr 20 15:56:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cplus-typeck.c (compparms, comp_target_parms, build_modify_expr_1): + (build_modify_expr): Clean parens in complicated if. + * cplus-decl.c (finish_decl, grokdeclarator): Likewise. + +Fri Apr 20 14:42:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-3b1.h (ASM_SPEC, PRINT_OPERAND_ADDRESS): Support 68020, 68881. + Useful even though this isn't one. + (ASM_OUTPUT_OPCODE): Convert fbne to fbneq. Don't change ftst. + (REGISTER_NAMES): Define it. Fpreg names not same as hp. + + * stor-layout.c (mode_for_size): Don't check MAX_FIXED_MODE_SIZE. + (layout_type): Check it here when appropriate. + + * loop.c (strength_reduce): Clean parens in complicated if. + + * fold-const.c (mul_double, const_binop): Add parens around shifts. + +Thu Apr 19 03:03:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * machmode.def: Delete unused modes. + + * stor-layout.c (mode_for_size): Accepts mode class as arg. + Calls changed. + (layout_type): Can now use mode_for_size for floating types. + + * stor-layout.c (layout_type): Get mode of function type from size. + * c-decl.c, cplus-decl.c (grokdeclarator): Don't worry about + mode of a function type. + * calls.c (prepare_call_address): No values contain static chains. + + * tree.h (struct tree_decl, struct tree_common): Rename the flag bits. + * cplus-tree.h: References here changed. + + * tree.h (DECL_BIT_FIELD): New macro, with new flag. + * print-tree.c: Print it. + * stor-layout.c (layout_decl): Use on input instead of TREE_PACKED. + Clear it if field happens to be aligned. + * expr.c, tree.c, varasm.c, symout.c, objc-actions.c, c-typeck.c: + Use this to distinguish bit-fields. + * c-decl.c, cplus-class.c (finish_struct): Set this for bit-fields. + + * c-typeck.c (build_binary_op): Make NON_LVALUE_EXPR, not NOP_EXPR. + + * out-sparc.c (find_addr_reg): Avoid using frame pointer. + + * config.gcc: Delete all formfeeds from Makefile. + + * stor-layout.c (layout_decl): Delete `bitsize'. + (layout_record): Test size for CONST_INT, not TREE_LITERAL. + (layout_type): Simplify array case. + + * fold-const.c (size_binop): Division not special case. + +Wed Apr 18 16:05:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (datatype): Function deleted. + (build_binary_op_nodefault, pointer_int_sum, pointer_diff): + Don't use it. + * cplus-typeck.c (build_binary_op_nodefault, pointer_int_sum): + (pointer_diff): Likewise. + (convert_for_assignment): Likewise. Took some work. + (datatype): Function deleted. + + * c-typeck.c (common_type): Renamed from commontype. + (function_types_compatible_p): New function. + (compparms): Deleted. + (self_promoting_args_p): Renamed from compparms1. + * cplus-typeck.c (common_type, self_promoting_args_p): Likewise. + * c-typeck.c (build_function_call): Eliminate local value_type. + + * c-typeck.c (parser_build_binary_op): Detect +/- within boolean. + + * c-typeck.c (convert_arguments): Renamed from actualparameterlist. + Push results on front, and reverse at end. + * cplus-typeck.c: Likewise. All calls changed. + + * tree.h (STMT_BIND_SIZE): Deleted. + (struct tree_bind_stmt): Deleted that slot. + * tree.c (build_let_stmt): Don't set it. + + * print-tree.c (print_node): Call print_lang_identifier. + * c-decl.c, cplus-ptree.c (print_lang_identifier): New function. + + * gnulib2.c (__clear_cache): New function. + +Tue Apr 17 16:57:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cplus-tree.c (build_member_type): Use TYPE_HASH, not TREE_UID. + (TYPE_HASH): Use the address. Delete the duplicate definition. + + * c-typeck.c (build_unary_op): Bug in pedantic warning about ++. + + * tree.h (TYPE_SEP, TYPE_SEP_UNIT): Deleted. + * stor-layout.c (layout_type): Don't set them. + (mode_for_size): New name for agg_mode; code cleaned up. + * c-tree.h (C_TYPE_FIELDS_READONLY): Use TREE_LANG_FLAG_1. + + * fold-const.c (size_int, size_binop): New names for build_int + and genop, moved here. All callers changed. + (const_binop): New name for combine, and now static. + * stmt.c (expand_end_case, group_case_nodes, node_has_low_bound): + (node_has_high_bound): Don't call `combine' directly. + + * tree.h (DECL_VOFFSET, DECL_VOFFSET_UNIT): Deleted. + * tree.c (staticp): Don't use DECL_VOFFSET. + * stor-layout.c (layout_*): Don't use it or set it. + (layout_record): Simplify: Keep all sizes in units of 1. + + * tree.c (debug_tree, print_node, print_node_brief, indent_to): + New functions to print a tree. + * c-decl.c (print_lang_decl, print_lang_type): Define as no-op. + * cplus-ptree.c (print_lang_type): Complete rewrite. + Most other functions deleted. + * tree.c (print_node): Call print_lang_* unconditionally. + + * tree.c (TYPE_HASH): Now use the address. + +Mon Apr 16 16:27:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c: Check LEAF_REGISTERS, not LEAF_REGS. + + * real.h (*_FLOAT_FORMAT): Change enums to macros. + (REAL_INFINITY): Define it if IEEE format. + + * c-decl.c (c_decode_options): Handle -Wconversion here. + * toplev.c (main): Not here. + + * tm-*.h (INITIAL_FRAME_POINTER_OFFSET): Count get_frame_size. + +Mon Apr 16 15:05:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (eliminate_biv): Build COMPARE with VOIDmode, not mode + of operands. + +Mon Apr 16 14:55:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c: Include real.h. + +Sun Apr 15 20:30:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-typeck.c (pedantic_lvalue_warning): New function. + (build_component_ref): Handle COMPOUND_VALUE and COND_EXPR by moving + reference inside it and calling pedantic_lvalue_warning. + (build_unary_op): Incrementing a cast-expression is warning, not + error; call new pedantic_lvalue_warning. + (unary_complex_lvalue): Use of compound or conditional expression as + lvalue is warning, not error. + (build_modify_expr): Likewise. + * cplus-typeck.c: Likewise. + +Sun Apr 15 12:27:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx, fold_cc0): Check TARGET_FLOAT_FORMAT, + not FLOAT_NOT_IEEE. + * jump.c (jump_back_p): Likewise. FLOAT_NOT_IEEE is now gone. + + * cccp.c (collect_expansion): Handle warn_stringify. + (main): Set it for -Wtraditional. + + * function.c (init_function_start): + Set current_function_returns_pointer here. + (expand_function_start): Not here. + + * expr.c (emit_library_call): Precompute reg and partial of all parms, + to do it in proper order. + + * final.c (final_scan_insn): Typo in deleting obvious no-ops. + + * expr.c (emit_push_insn): Change #if to ordinary if. + +Sat Apr 14 13:20:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (do_jump): In COMPONENT_REF, check TYPE is nonzero. + + * tm-i386.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete spurious `abort ()'. + + * emit-rtl.c (reverse_comparison): New function. + (get_last_insn_anywhere): New function. + * i386.md (ble, blt): New define_expands. + + * Makefile.in (LANGUAGES): New parameter chooses languages to build. + (native): Use that. + (c, c++, objc): Targets for use in LANGUAGES. + + * Makefile.in (install): Split up. + (install-cross, install-headers, install-gnulib, install-proto): + (install-man, $(libsubdir)): New targets. + + * Makefile.in (native): New target, split from start.encap. + (tmpgnulib): Split out from gnulib.portable. + (gnulib.convert): Makes tmpgnulib, then converts. + (LIBCONVERT): New parameter. + (GCC_FOR_TARGET): New parameter. + (hard-params.o, hard-params, stamp-gnulib2): Use that. + + * cse.c (fold_cc0): Compare equivalence classes of non-constants. + Waiting for papers from Steven McCanne. + +Fri Apr 13 14:12:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): If record is BLKmode because not + aligned, set TREE_PACKED. Don't force BLKmode due to field + with TREE_PACKED. + + * cse.c (fold_rtx): Use dconst1, not atof. + * varasm.c (output_constant): Likewise. + + * c-parse.y (yylex): Handle SIGFPE in atof. + + * tm-tti68k.h: New file. + + * toplev.c, flags.h (flag_pretend_float): New flag. + + * regclass.c (reg_class_record): Handle `E' constraint, for float + constants but only if can examine their bits. + * reload.c (find_reloads): Likewise. + * recog.c (constrain_operands): Likewise. + * out-m68k.c (output_move_double): Abort on float constant + if can't examine the bits. + (standard_68881_constant_p): Fail if can't examine the bits. + (standard_sun_fpa_constant_p): Likewise. + + * m68k.md (DFmode move recognizers): Use `E', not `F'. + * tm-m68k.h (PREFERRED_RELOAD_CLASS): Handle float constants. + + * tm-next.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_FLOAT_OPERAND): + (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE_ISINF. + * tm-sun3.h, tm-sparc.h: Likewise. + + * xm-vax.h (HOST_FLOAT_FORMAT): Define it. + * tm-vax.h (TARGET_FLOAT_FORMAT): Define it. + + * real.h (enum float_format): Define codes for formats. + (HOST_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): New macros, defaulted here. + (REAL_IS_NOT_DOUBLE, REAL_VALUE_TYPE): Override if formats differ. + (REAL_VALUE_ISINF): New macro. + * xm-vax.h (isinf): Define as macro. + + * Makefile.in (LIBFUNCS_EXTRA): New variable. + (gnulib.portable): Compile those files. + + * Makefile.in (AUX_OUTPUT2): New variable. + (OBJS): Use it. + (aux-output2.o): New target. + + * Makefile.in (RANLIB, RANLIB_TEST): New variables. + + * Makefile.in (AR_FLAGS, OLDAR_FLAGS): New variables. + (gnulib.portable, stamp-gnulib2): Use them. + + * i386.md: Add patterns for `bt' insns. + +Fri Apr 13 12:54:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-decl.c (builtin_function): Now returns decl that was made. + + * config.gcc: Support both -host= and +host=. + +Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Changes from Data General. + + * syms.h: New file. + * sdbout.c: Include that if not USG. + + * tree.h (enum built_in_function): Added BUILT_IN_STRCPY and + BUILT_IN_STRCMP. + * c-decl.c (init_decl_processing): Create additional pointer and + function types. Declare strcpy, strcmp, memcpy, memcmp built-in. + * expr.c (expand_builtin): Support strcpy, strcmp, memcpy, memcmp. + If special handler breaks out of switch, do library call. + By default, print error message and do library call. + (get_pointer_alignment, string_constant): New functions. + + * dbranch.c: Put entire contents in conditional on HAVE_DELAYED_BRANCH. + (init_flags, enote): Clear and set memr. + (enote): Don't move a store across a fetch. + (insn_eligible_p): Check enote before volatility and dependencies. + Check for volatility if memw or memr. + (loads_from_mem_p): New function. + + * Makefile.in (dbranch.o): New target. + (OBJS): Add dbranch.o. + +Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * calls.c (expand_call): Count args in order written, with argpos. + +Thu Apr 12 22:01:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (synth_mult): Ensure OPS is always valid in returned alg. + + * local-alloc.c (block_alloc): If we have an operand that is an + address, look inside it for registers to combine with. + + * reload.c (combine_reloads): If the output reload is for an + earlyclobber operand, can't combine it. + Try to use a register that dies in an insn for a single output reload + if the insn has only one output. + +Thu Apr 12 21:27:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): Preserve DECL_INITIAL from old + function def to new one. + +Thu Apr 12 07:55:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_assignment): Order of source and destination to + bcopy/memcpy was reversed. + +Wed Apr 11 17:29:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386.h (ABC_REGS): New register class. + (REG_CLASS_CONTENTS, REG_CLASS_NAMES, enum reg_class): Changed. + * i386.md (divsi3, etc.): Exclude register d from constraints. + + * c-parse.y (save_filename, save_lineno): New nonterminals + to record text location at start of statement. + (lineno_stmt): New nonterminal, outputs line note before statement. + (lineno_decl): Likewise for decl, to avoid conflicts. + (stmt): Don't emit line notes at start of statement. + (simple_if): Collect file and line using save_filename, save_lineno. + + * Changes from Data General. + + * cccp.c (main, do_include): Implement -H to print header names. + + * c-parse.y (component_decl_list): Parse even if final `;' missing. + +Wed Apr 11 16:49:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gcc.c: Fix miscellaneous typos. + +Wed Apr 11 12:59:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc: Typos in setting pass1done, testing it, + and calling sed for usage msg. + + * cccp.c (macroexpand): Count Newline Space as part of whitespace + sequence when stringifying. + + * expmed.c (expand_mult): Handle synth_mult returning no operations. + +Tue Apr 10 21:08:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (do_line): No error if string follows number without space. + +Tue Apr 10 20:52:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c (apply_change_group): Return a zero if rejected changes. + + * loop.c (update_giv_derive): If a giv is only set conditionally, it + may only derive other givs in its own basic block. + +Tue Apr 10 13:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-ctix.h: New file. Waiting for papers from Ronald Cole. + csusac!unify!dbrus.rjc@ucdavis.ucdavis.edu. + + * cse.c (rtx_cost): Use new macro RTX_COSTS. + (COSTS_N_INSNS): New macro for use in RTX_COSTS. + + * config.gcc: Fix typos in conditionals and case. Also usage message. + Missing backslashes in `echo | tee'. + Unset various vars after pass 1. + + * c-typeck.c (build_c_cast): Complain if function type specified. + + * expmed.c (synth_mult): Accept max_cost as arg and cut off there. + Pass it along recursively, making it smaller. + Eliminate quadratic loop, thus postponing powers of 2. + Costs are now signed. Initialize best_alg->cost from max_cost + and change to -1 only before returning. + (expand_mult): Pass cost of multiply as max cost. + Use synth_mult only if optimizing. + In alg_compound case, sign was backward. + Use TEM as target for force_operand there, to get better output. + +Tue Apr 10 07:09:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Add missing argument to + operand_equal_p. + Check for (X ? unop A : A) in addition to (X ? A + B : A). + + * Makefile.in (protoize, unprotoize): Compile with GCC, not just link. + + * fold-const.c (fold): Fix typo in converting conditional to COND. + + * expr.c (expand_expr): Treat (A ? 1 : 0) as A when A is a comparison. + (do_jump): Special-case (A ? 1 : 0) and (A ? 0 : 1). + + * expr.c (store_expr): Fix typo in checking mode of target. + +Mon Apr 9 18:33:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Clear out parm_copies. + +Mon Apr 9 18:00:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tree.def: SAVE_EXPR now has three operands. + * tree.h: Add new field SAVE_EXPR_CONTEXT; SAVE_EXPR_RTL remains last. + * tree.c (save_expr): Set context to current function. + (decl_function_context): Context is in SAVE_EXPR_CONTEXT if SAVE_EXPR. + * calls.c (expand_call): Call make_tree to build an RTL_EXPR instead + of explicitly making SAVE_EXPR. + * cplus-typeck.c (c_expand_return): Use make_tree instead of SAVE_EXPR. + * c-parse.y, objc-parse.y: Don't call mark_addressable here. + * expr.c (expand_expr, ..._DECL cases): If non-local, make addressable. + (expand_expr, case SAVE_EXPR): If defined in containing function, put + put into stack. + * function.c (put_var_into_stack): Use SAVE_EXPR_RTL for SAVE_EXPR. + * print-tree.c (dump): SAVE_EXPR_RTL is now third operand. + * stmt.c (expand_asm_operands): Call save_expr instead of making + tree node directly. + +Mon Apr 9 00:08:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (install): Turn off x bit on SYSCALLS.c.X. + + * i860.md (cmpeqsf, etc.): Change opcode name to pfeq.ss, etc. + + * tm-m68k.h (PRINT_OPERAND_PRINT_FLOAT): Delete spurious backslash. + + * c-decl.c (store_parm_decls): Don't do storedecls in prototype case. + That was discarding the enumerators already pushdecl'd. + + * gcc.c (exec_prefix, startfile_prefix): Record prefix search paths. + (find_a_file): New function to search a path. + (find_exec_file): Deleted; find_a_file used instead. + (find_file): Just call find_a_file. + (add_prefix): Add name to a prefix path. + (process_command): Call that. + + * gcc.c (spec_list): Generalize asm_spec, etc., to arbitrary names. + (set_spec): New function. Set the old specific vars and spec list. + (do_spec_1): Handle `%(' and `%[' for general specs. + + * ns32k.md (ashlhi3): Use %0, not %1. + + * cplus-tree.h (TREE_ANON_UNION_ELEM, DECL_ANON_UNION_ELEM): + regdecl_attr is now in decl, not common. + (TREE_PARMLIST): Use external_attr. + (TREE_VIA_PUBLIC): Use static_attr. + +Sun Apr 8 23:43:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const (fold): Two conversions in a row are needed if from a + pointer type to an integer type of a different precision. + + * flow.c (mark_used_regs): When replacing addition with register + in auto-increment creation, mark that insn must be re-recognized. + +Sun Apr 8 13:56:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-m68k.h (ASM_OUTPUT_FLOAT): Defn depends on CROSS_COMPILER. + (PRINT_OPERAND): Depends on CROSS_COMPILER and HOST_WORDS_BIG_ENDIAN. + (PRINT_OPERAND_EXTRACT_FLOAT, PRINT_OPERAND_PRINT_FLOAT): + These new subroutines contain the code that depends. + + * xm-m68k.h, xm-mips.h, xm-pyr.h, xm-tahoe.h (HOST_WORDS_BIG_ENDIAN): + New macro, defined in these files. + + * config.gcc: Define macro CROSS_COMPILE if making cross-compiler. + * Makefile.in (INTERNAL_CFLAGS): Include CROSS. + + * config.gcc: Decode -host argument. Set $host and $target. + Rename vars for files to link to, to tm_file, xm_file, etc. + Let $host override xm_file value. + Mention $host in messages and config.status if diff from $target. + Check for errors in args at beginning of processing. + + * expmed.c (expand_shift): Make no insns if count is 0. + + * cse.c (rtx_cost): Increase default cost of mult and div. + + * expmed.c (synth_mult): New function. Finds best way to multiply + by given constant, and the cost. + (expand_mult): Use that. + (init_expmed): Init new vars add_cost, shift_cost, mult_cost, + and negate_cost. mult_is_cheap has been deleted. + + * expmed.c (store_bit_field): Don't use insv if unit for copying + mem to reg won't hold the entire field. + +Sun Apr 8 12:54:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Add OK_DEFER_POP to path with + only OK_DEFER_POP. + +Sun Apr 8 12:50:54 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (insv): Use SImode for operand 0. + +Sat Apr 7 15:24:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * emit-rtl.c (gen_lowpart, gen_highpart): When checking mode class, + check for not MODE_FLOAT. + * cse.c (fold_rtx): Likewise when avoiding x-x -> 0 for IEEE float. + * jump.c (jump_back_p): Likewise. + * optabs.c (emit_cmp_insn): Likewise, comparing result of libcall. + * expr.c (move_block_to_reg, emit_push_insn): Likewise, + when putting floats in memory. + + * machmode.def (PSImode, PDImode): Class is now MODE_PARTIAL_INT. + * expr.c (convert_to_mode): Don't treat them as ints. + + * fixincludes: When making directory links, assume any relative path + is within /usr/include. + +Sat Apr 7 14:56:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.c (assign_stack_local, assign_outer_stack_local): + Don't use division for rounding to avoid problems with negative + dividends; use logical operations instead. + No need to ever align stricter than BIGGEST_ALIGNMENT. + +Sat Apr 7 14:38:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr, case CONSTRUCTOR:): Finish Jan 12 change + in store_expr by calling store_constructor if target is a temp. + + * cse.c (cse_insn): For regs invalidated by calls, go back to + checking for fp and ap explicitly, not fixed_regs. + +Sat Apr 7 14:06:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.h: Define num_validated_changes and cancel_changes. + * recog.c (validate_change, apply_change_group, cancel_changes): + Support changes both within an insn and within a MEM. + +Sat Apr 7 00:45:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (addcc and subcc patterns): Set CC_NO_OVERFLOW. + +Fri Apr 6 15:20:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cccp.c (lookup_import): Return -1 for not found to agree with + the open system call. Use -2 for duplicate. + (do_include): -2 now means duplicate; previously, -1 meant not found + from open and duplicate from lookup_import. + +Fri Apr 6 00:06:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (poplevel): Use DECL_INITIAL to detect undef label. + + * sparc.md (peephole for returning sum): Use more restrictive preds. + + * reload1.c (choose_reload_regs): When testing reload reg + for HARD_REGNO_MODE_OK, use SImode instead of VOIDmode. + +Thu Apr 5 14:00:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main, include_defaults): Use STANDARD_INCLUDE_DIR + instead of /usr/include. + * Makefile.in (cccp.o): Specify STANDARD_INCLUDE_DIR. + + * varasm.c (assemble_variable): No sdb output for initialized global. + * toplev.c (compile_file): Output it here, at end of run. + + * stdarg.h (va_start): Round initial pointer value down + to double boundary. This is to eliminate big-endian adjustment. + + * fixincludes: Delete netinet/ip.h and sundev/vuid_event.h + if no changes are needed. + + * c-typeck.c (build_c_cast): Reject array types for result. + * cplus-typeck.c (build_c_cast): Likewise. + + * tm-*.h (ASM_OUTPUT_SKIP): Print size as unsigned. + (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise. + + * fold-const.c (fold): Simplify double truncation, double extension, + or extension followed by truncation. + + * fixincludes: Don't ignore errors when making dirs. + But check whether dir already exists. + + * cse.c (fold_rtx): Don't simplify real*0, because of nans. + + * real.h (dconst0, dconst1, dconstm1): Declare them. + * tree.c (real_zerop, real_onep): New functions. + * fold-const.c (fold): Check for trivial +, -, * with reals. + Also use dconst0 instead of computing with REAL_VALUE_ATOF. + +Tue Apr 3 22:52:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md (32-bit bit fields): Special patterns added. + (push byte and adjust stack by 2): New peephole. + These from Bruce Robertson. + + * c-decl.c (grokdeclarator): Complain if fn defn has `typedef' etc. + +Tue Apr 3 21:39:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (preexpand_calls): Reinsert check to not expand calls + already preexpanded. + +Mon Apr 2 07:05:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-typeck.c (digest_init): Don't blow up on null list. + + * Makefile.in (cc1obj): Link OBJC_OBJS instead of C_OBJS. + * objc-actions.c: Correct compilation errors. + * objc-parse.y: Likewise. + +Mon Apr 2 03:33:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * objc-actions.h: Define the objc tree codes. + Declare doing_objc_thang. + +Fri Mar 30 17:28:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * sdbout.c (PUT_SDB_EPILOGUE_END): Write out assembler name for + function (i.e., usually include leading "_"). + + * sdbout.c (PUT_SDB_...): Use new macro SDB_DELIM; it defaults to ";". + +Fri Mar 30 15:25:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (prev_active_insn, next_active_insn): New functions. + These skip USEs and CLOBBERs. + (jump_optimize): Use them instead of ..._real_insn + for the simple optimizations. + + * integrate.c (expand_inline_function): Always index const_equiv_map + with regno from current function. And set up the map only after + creating all the pseudos we will need for the parms. + This requires intermediate tables parm_equivs and parm_copies. + Make const_equiv_map big enough to handle all the pseudos we + expect to make. Record actual size, and don't look in it + for regnos too large. + (subst_constants, const_equiv): Don't access const_equiv_map + if regno is too large. + + * function.c (trampoline_address): Push and pop obstacks around + call to assign_outer_stack_local. + + * function.c (push_function_context, pop_function_context): + Save and restore max_parm_reg and parm_reg_stack_loc. + * function.h (struct function): Make slots. + + * c-decl.c (c_build_type_variant): New function. + (grokdeclarator): Call that, for ARRAY_TYPE only, in fields and vars. + * c-decl.c, c-typeck.c: All calls to build_type_variant use that now. + + * emit-rtl.c (reinstate_emit_status): Unused function deleted. + +Thu Mar 29 15:35:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (rtl_in_current_obstack): New function. + * toplev.c (rest_of_compilation): Call that. + This makes it true that rtl is allocated in current_obstack + during optimization. + + * reload1.c (eliminate_frame_pointer): Scan equivalent addresses + of pseudo-regs, and eliminate frame-pointer there too. + (reload): Don't do this here. + + * c-decl.c (build_enumerator): Return pair of decl and value. + (finish_enum): Go through the list replacing decls with names. + + * function.c (fixup_var_refs): Eliminate all but first arg. + Use current sequence_stack, insn chain and rtl_expr_chain. + (put_var_into_stack): Don't pass those args. + If var is nonlocal, don't do it now; put it on fixup_var_refs_queue. + (pop_function_context): Do fixup_var_refs on vars queued up. + + * tree.c (function_maybepermanent_obstack): Make a separate + saveable obstack for each nested function level. + (init_tree): Init this variable. + (save_tree_status, restore_tree_status): Save and restore it. + Create and free a new obstack for the purpose. + (temporary_allocation, resume_temporary_allocation): Use this var. + (preserve_data, preserve_initializer): Use this var. + (make_node): Use this var for PARM_DECL nodes. + + * tree.c (push_obstacks): New name for push_obstack. + Additional arg specifies saveable_obstack. All calls changed. + (pop_obstacks): New name for pop_obstack. All calls changed. + + * config.gcc: Add `3300'. + (genix): Fix typo in name of makevar file. + * tm-mot3300.h, xm-mot3300.h: New files. + * math-3300.h: New file. + + * output.h: Fix typo in SDB_DEBUGGING_INFO. + + * tm-sun386i.h (LINK_SPEC): Moved here, and -static handled. + * xm-sun386i.h: Moved from here. + * tm-alliant.h (LINK_SPEC): Moved here, from xm-alliant.h. + + * tm-convex.h, tm-i860.h, tm-spur.h, tm-vax.h, tm-tahoe.h, tm-pyr.h: + Delete FIX_FRAME_POINTER_ADDRESS. + + * tm-sparc.h, tm-m88k.h: Turn off FIX_FRAME_POINTER_ADDRESS. + INITIAL_FRAME_POINTER_OFFSET could be written later. + + * tm-m68k.h, tm-ns32k.h, tm-alliant.h, tm-i386.h, tm-mips.h: + Define INITIAL_FRAME_POINTER_OFFSET. + + * toplev.c (compile_file): Remove .m and .cc suffixes, like .c. + + * final.c (end_final): For basic block profiling, don't output + source file name. Instead, append ".d", and remove ".c". + * gnulib2.c (__bb_init_func): New name for __bb_init_function. + Conditionalize on mc68000, not m68k. + Fix other typos. + +Wed Mar 28 16:07:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c, cplus-decl.c (duplicate_decls): Preserve DECL_FRAME_SIZE + from definition past subsequent declarations. + + * c-decl.c (xref_tag): If global_binding_level, make nodes permanent. + + * expmed.c (init_expmed): Set up mult_is_very_cheap. + (expand_mult): Never use shifts if mult_is_very_cheap. + + * expr.c (store_expr): When copying through new temporary, + allocate temporary first and use as target. + + * tm-m68k.h (HARD_REGNO_MODE_OK): Abort on VOIDmode. + + * reload1.c (fix_frame_pointer_address): New function. + (alter_frame_pointer_addresses): New arg INSN. Calls changed. + Use that function instead of macro FIX_FRAME_POINTER_ADDRESS + which is now obsolete. + (eliminate_frame_pointer): Use macro INITIAL_FRAME_POINTER_OFFSET + to initialize depth. Abort if that macro is missing. + + * expmed.c (store_bit_field): If loading MEM into a reg, use the + mode of the MEM if that is not BLKmode. + (extract_bit_field): Likewise. + + * tm-mips.h (STRUCTURE_SIZE_BOUNDARY): Changed from 16 to 8. + + * calls.c (expand_call): Handle STACK_BOUNDARY when using push insns. + + * function.c (assign_parms): Note how PUSH_ROUNDING affects stack + parm size. + +Tue Mar 27 19:40:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (poplevel): Output inline nested functions if needed. + * cplus-decl.c: Likewise. + + * i386.md (insv): New pattern added for the moment. + +Tue Mar 27 17:47:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.c (lookup_outer_static_chain): Deleted, no longer used. + (trampoline_address): RTL for trampoline, rather than its address, is + stored in trampoline list. + Just add entry to list; don't fill in the trampoline here. + (expand_function_end): Fill in any required trampolines here. + (expand_function_start): Move tail recursion entry to after + creation of display list; size computations come next. + +Tue Mar 27 14:09:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md (movsi, movhi, movstricthi, movqi, movstrictqi): + Avoid both clr and st on volatile mem, but only on 68000. + (SImode store 0 recognizer): Likewise. + + * stor-layout.c (agg_mode): Don't consider PSImode, etc. + +Mon Mar 26 21:12:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (combine_regs): Only set suggested bit for first + register if multi-word quantity. + (find_free_reg): Look at suggested regs for first in set, then use + all available for subsequent regs. + +Mon Mar 26 15:01:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (start_enum): Don't lay out the type. + (finish_enum): Always lay it out, and always set the precision. + Change the type of the enumerators if int is too narrow. + + * tm-m68k.h (NOTICE_UPDATE_CC): addq and subq do update cc's + even if destination is an address register. + + * c-parse.y, objc-parse.y (check_newline): Call HANDLE_PRAGMA if def. + * out-next.c: New file. + (handle_pragma): New function. + * tm-next.h (HANDLE_PRAGMA): Define it. + + * Makefile.in (GNULIB2): New variable. + (gnulib2): Use it. + (gnulib2.portable): New name for old rule. + (install-headers): Split out part of install rule. + (INSTALL_HEADERS): New variable. + + * make-next: New file. + + * function.c (assign_parms): Get type from proper place. + internal_arg_pointer is now an arg. Compute arg_pointer_copied + from that. Fix typos. + (expand_function_start): Compute internal_arg_pointer here. + Fix typos handling incoming struct value address. + + * cccp.c (do_include): Ignore null strings found in stackp. + + * cccp.c (discard_comments): Handle backslash-newline. + +Mon Mar 26 07:18:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.h (temp_slot, temp_slot_level): Now saved by function.c. + * function.c (struct temp_slot): Move from stmt.c. + (push_function_context, pop_function_context): Save/restore temp slots. + (assign_parms): Pass type to locate_and_pad_parms. + (locate_and_pad_parms): Accept TYPE. + Don't need STACK_OFFSET. + (expand_function_start): Pass type to locate_and_pad_parms. + (init_function_start): Initialize temp_slot info. + * stmt.c (temp_slot, init_stmt_for_function, save_stmt_status, + restore_stmt_status): Delete temp_slot stuff from here. + +Sun Mar 25 20:21:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_move_insn): Turn memory address checking back on, + but allow push_operand for x. + + * ns32k.md (movstrsi): If UTEK_ASM, output $0 operand in movsd. + (movsi): Handle UTEK_ASM like GNX_V3. + * out-ns32k.c (print_operand_address): Add UTEK_ASM conditionals. + * tm-merlin.h: New file. + + * tm-ns32k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): + Use save and restore insns if no frame pointer. + + * cccp.c (handle_directive): Discard backslash-newline within <...>. + +Sat Mar 24 13:23:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (default_compilers): Add entry for .m files, for Objective C. + Always pass some -lang... option to cpp. + + * cccp.c (do_include): Support #import as well as #include. + (lookup_import, add_import, import_hash): New functions. + (main): Handle options -lang-c++ and -lang-objc and -lang-c. + Set variables cplusplus and objc. + (enum node_type, directive_table): Add #import. + (handle_directive): Treat #import as undefined unless objc is nonzero. + (initialize_builtins): If objc, define __OBJC__. + + * Makefile.in (lang-objc, cc1obj): New targets. + (objc-parse.o, objc-parse.c, objc-actions.o): New targets. + (C_OBJS): Add c-lang.o. + + * objc.gperf: New file. + * objc-parse.y, objc-actions.c, objc-actions.h: New files. + + * c-lang.c: New file. + * c-decl.c (c_decode_option): New name for lang_decode_option. + Used from c-lang.c and objc-actions.c. + + * toplev.c (compile_file): Call lang_init and lang_finish. + * c-lang.c, objc-actions.c, cplus-decl.c: Define those functions. + + * c-typeck.c (comptypes): Call maybe_objc_comptypes for record types. + * c-lang.c, objc-actions.c (maybe_objc_comptypes): New functions. + + * c-decl.c (implicitly_declare, finish_decl, finish_struct): + Call maybe_objc_check_decl before rest_of_decl_compilation. + * c-lang.c, objc-actions.c (maybe_objc_check_decl): New functions. + + * function.c (assign_stack_local): Align each slot only as needed. + Normally don't round size up, just align first. + New argument ALIGN specifies alignment, or 0 for that of MODE. + All callers changed. + (assign_outer_stack_local): Likewise. + * final.c (final_start_function): Round frame size to STACK_BOUNDARY. + + * function.c (assign_stack_temp, preserve_temp_slots): + (free_temp_slots): Moved from stmt.c. + + * stmt.c (expand_decl): Use convert_units to avoid overflow. + +Fri Mar 23 00:52:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Warn if array element is incomplete. + + * varasm.c (assemble_variable): Use convert_units to compute + size in bytes. + (output_constructor): Likewise, for non-bit fields. + + * c-typeck.c (check_format, my_strchr): New functions. + (build_function_call): Call check_format. + * c-decl.c (lang_decode_options): Handle -Wformat. + * c-tree.h (warn_format): New flag. + + * xm-hp9k320.h (USE_C_ALLOCA): Define if not compiling with GCC. + +Thu Mar 22 23:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (get_parm_info): Void parm is special only if no name. + + * loop.c (may_not_optimize): Static var replaces local `may_not_move'. + (strength_reduce): Don't accept those regs as givs. + +Thu Mar 22 06:45:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Compute delta to frame + from the address at which it was allocated. + +Wed Mar 21 17:36:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c: Increase number of changes saved for validate_change. + (validate_change): If INSN == 0 and in group, add to group; if not, + always OK. + (apply_change_group): If INSN == 0, change is always OK. + + * cse.c (cse_basic_block): If extending block, don't call + cse_end_of_basic_block with null insn if we got to end of function. + +Wed Mar 21 14:08:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * calls.c (expand_call): Don't reuse pending_stack_adjust for argblock + if inhibit_defer_pop. + + * expr.c (push_block): New argument EXTRA. All callers changed. + (emit_push_insn): Use that for the padding when using push_block. + + * tm-sparc.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): + Only word-aligned BLKmodes can go in registers. + (FUNCTION_ARG_PARTIAL_NREGS): Likewise. + * tm-spur.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): Likewise. + * expr.c (expand_call): If encounter a stack parm before offset + gets up to zero, make it zero. + * function.c (assign_parms): Likewise. + + * ns32k.md (stack adjust insn): Don't use cmpd or cmpqd on Sequent. + * tm-sequent.h (SEQUENT_ADJUST_STACK): Define this. + + * make-hp9k320g (AR): Define it. + * Makefile.in (gnulib): Use OLDAR. + (OLDAR): New variable. + + * make-iris: New file. + + * xm-iris.h: Undef alloca before defining it. + + * Makefile.in (stage1, ...): Always copy gnulib, never link. + + * cccp.c (main): Use -d...M... as option for macro dump. + * gcc.c (default_compilers): Pass -d* to cpp. + +Tue Mar 20 01:41:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (datadef): Error message fix. + * cplus-parse.y: Likewise. + +Mon Mar 19 15:26:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Save static chain value. + (copy_rtx_and_substitute): Substitute it where called function + copies its static chain. + * emit-rtl.c (init_emit_once): Make static_chain_incoming_rtx + distinct. + + * function.c (current_function_contains_functions): New variable. + (init_function_start): Initialize it. + (pop_function_context): Set it to 1. + * integrate.c (function_cannot_inline_p): + Don't inline fn with nested fns. + + * integrate.c (copy_rtx_and_substitute): Don't replace fp + as destination of assignment. + + * assert.h (__assert) [not __GNUC__]: Rename arg to avoid stringify. + + * function.c (expand_function_start): If struct_value_incoming_rtx + is 0, get the address from first parm reg or first stack slot. + (assign_parms): In that case, skip the space it occupies. + + * calls.c (expand_call): If STRUCT_VALUE is 0, pass address as parm + even if that means using a register. + +Mon Mar 19 07:43:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (function_cannot_inline_p): Check for non-ANSI varargs + as well as ANSI varargs. + Allow inlining of functions with large frames now that we can share + them between inlined functions. + (expand_inline_function): Save static vars in case we were called + recursively. + Make sure we don't free temporary stack slot used for argument. + + * tree.def: Add new code types '<', '1', and '2' for comparison, + unary arith, and binary arith, resp. Change some 'e' types to those. + * expr.c (init_comparisons): Delete fn. + (expand_expr): Handle X ? A binop B : A with copy and conditional op. + In X ? A : B, if A and B both simply, do with only one jump. + Remove existing test for things like x = y | (a == b). + (preexpand_calls): Handle new code types for expressions. + * optabs.c (init_optabs): No longer call init_comparisons. + * fold-const.c (operand_equal_p): No longer static. + Ignore NON_LVALUE_EXPR. + Only require constants if new operand ONLY_CONST is non-zero. + (fold): Treat tree code types '<', '1', and '2' as 'e'. + Handle cases where an arithmetic operation is applied to a compound, + conditional, or comparison operation by distributing the arithmetic + operation inside the compound, conditional, or comparison operation. + Update calls to operand_equal_p. + Convert A ? B : B to (A, B). + * expmed.c (make_tree): No longer static. + * tree.h: Define new macro TREE_CODE_CLASS. + Define extern make_tree. + * print-tree.c (prtypeinfo): New new macro TREE_CODE_CLASS. + (dump): Use new macro and treat types '<', '1', and '2' as 'e'. + * cplus-lex.c (init_lex): Likewise. + * tree.c (make_node, copy_node): Ditto. + +Mon Mar 19 00:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (main): Trap SIGPIPE. + +Sat Mar 17 13:09:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Also delete no-op insns to store bit fields. + + * sparc.md (patterns for addcc, subcc, andcc, andncc, orcc, orncc): + (and xorcc, xorncc): Use arith32_operand as predicate. + +Fri Mar 16 15:19:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-vms.h (NO_DOLLAR_IN_LABEL): Define this. + + * function.c (assign_parms): Use INIT_CUMULATIVE_INCOMING_ARGS + if that is defined. + + * c-decl.c (duplicate_decls): `static' always prevails, for functions. + * cplus-decl.c (duplicate_decls): Likewise. + + * sparc.md (patterns for andncc, orncc, xorncc): + Delete `%' from constraint. + (patterns for addcc, andcc, orcc, xorcc): Use symmetrical predicates. + (peephole for returning sum): Likewise. + +Thu Mar 15 22:02:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (expand_mult_add): Handle either x or mult having VOIDmode. + Always pass both args to type_for_mode. + + * expmed.c (extract_bit_field, store_bit_field): + When changing mode of a reg to SImode, also do big-endian correction. + Consistently use BYTES_BIG_ENDIAN to decide how bits are numbered. + Fix stray ref to CODE_FOR_extzv in case for extv. + + * c-typeck.c (build_unary_op): Allow function type args to `!', + since they convert to pointers. + * cplus-typeck.c (build_unary_op): Likewise. + +Thu Mar 15 06:30:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (convert_to_mode): Don't copy constant to register. + Use GET_MODE_CLASS instead of integer_mode_p. + (integer_mode_p): Delete obsolete fn (only use above). + + * loop.c (product_cheap_p): Don't crash if no insns need to multiply; + that case is cheap. + +Thu Mar 15 02:11:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * regclass.c (init_reg_sets_1): Set n_non_fixed_regs. + * loop.c (scan_loop, strength_reduce): Set threshold from num of regs. + +Wed Mar 14 19:31:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (function_cannot_inline_p): Allow BLKmode parms. + Allow address of aggregate parm. + (expand_inline_function): Create and maintain const_equiv_map + and const_age_map. Increment const_age at basic blocks. + Don't substitute constant values for parm regs; + instead, call try_constants for each insn copied. + When structure_value_addr in't 0, check aggregate_value_p too. + Round size of parm_map up. + Don't init inline_fp_rtx unless it is used. + Don't use emit_move_insn when copying a SET insn. + (copy_rtx_and_substitute): Handle inline_target being used when 0. + Don't build a SUBREG of a CONST_INT. + For PLUS of constant, do plus_constant whether mem address or not. + Set up inline_fp_rtx if we need it. + Clear RTX_UNCHANGING_P in all MEMs. + (try_constants, subst_constants): New functions. + (access_parm_map): No big-endian offset for BLKmode parms. + Do change_address if mode doesn't match. + (const_equiv): New function. + (try_fold_cc0): Use that function. + In "small win" case, extract CODE_LABEL out of LABEL_REF for emit_jump. + (output_inline_function): Set return_label to 0. + + * recog.c (cancel_changes, num_validated_changes): New functions. + +Tue Mar 13 17:30:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (constrain_operands): Define `V' constraint. + +Tue Mar 13 17:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cplus-lex.c (operator_name_string, init_lex): Cast enums to ints + to avoid errors from some C compilers. + + * cplus-init.c (expand_aggr_vbase_init): Make declarations consistent. + +Sun Mar 11 18:37:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (movsi): Flush spurious arg to abort. + + * Makefile.in (gnulib.portable, stamp-gnulib2): Ignore error in ranlib. + +Sat Mar 10 19:38:36 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.h: Add new fields temp_slots and temp_slot_level. + * stmt.c (struct temp_slot): New structure. + (init_stmt_for_function): Initialize temp slot info. + (save_stmt_status, restore_stmt_status): Save and restore temp slots. + (expand_asm_operands): Remove redundant assignment to LAST_EXPR_TYPE. + Free any temporaries made. + (assign_stack_temp, preserve_temp_slots, free_temp_slots): New fns. + (expand_expr_stmt): If last expression had a value (i.e., in ({..}) + grouping), maybe preserve temporaries. + (expand_return, tail_recursion_args): Free any temporaries allocated. + (expand_start_bindings): Push temporary stack level. + (expand_end_bindings): Pop temporary stack level. + (expand_decl): Use kept temporary slots for automatic variables. + Free temporary slots after computing size. + (expand_decl_init, expand_cleanups, expand_end_case): Free any + allocated temporaries. + * calls.c (expand_call): Use assign_stack_temp instead of + get_structure_value_addr. + Make a new temporary level while expanding a call and free + temporaries as soon as we know they aren't going to be reused. + (store_one_arg): Free any temporary slots made for arg being stored. + * function.c (get_structure_value_addr): Delete fn. + (init_function_start): No longer initialize structure value addr. + * integrate.c (expand_inline_function): Use temporary slot for + inlined function's frame. + Free temporaries needed while evaluating arguments. + * expr.c (expand_assignment, do_jumps): Free temps no longer needed. + (store_expr): Don't check for structure value addr. + (save_noncopied_parts, expand_expr): Call assign_stack_temp + instead of assign_stack_local. + (preexpand_calls): No longer special-case fns returning structures. + * c-typeck.c (c_expand_asm_operands): Free any temporaries made. + * cplus-typeck.c (c_expand_asm_operands): Ditto. + * cplus-decl2.c (finish_file): Ditto. + * cplus-init.c (expand_aggr_init_1): Ditto. + * cplus-type2.c (make_merged_ref): Preserve result and free + other temporaries. + * cplus-parse.y (stmt): Free any temporaries in EXCEPT clause. + +Sat Mar 10 16:07:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (other_reg_use_p): New name for only_reg_use_p. + Return 0 if IN == EXPR. + (check_eliminate_biv): Re-invert the test using other_reg_use_p. + +Fri Mar 9 18:34:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (init_optabs): Handle PSImode insns. + +Fri Mar 9 18:24:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (local_alloc): Clear qty_phys_sugg and _has_sugg + when doing loop, not just when doing bzero. + Add new vars qty_phys_copy_sugg and _has_copy_sugg. + (block_alloc): Rework detection of possible tied registers to use + extracted insn operands rather than trying to parse operands from + RTL description. + Don't tie registers if output has earlyclobber. + For REG_NO_CONFLICT, check commutativity of expression in REG_EQUAL, + rather than of operation of attached insn. + If insn is a simple copy, pass that info to combine_regs. + (combine_regs): For multi-word items, mark all registers actually + used as preferred. + If the insn is a simple copy, record hard reg suggestions in + qty_phys_copy_sugg instead of qty_phys_sugg. + (find_free_reg): Correctly check for all registers used. + If qty_phys_has_copy_sugg is non-zero, use that register set. If + none of them couldn't be allocated, try the other suggest set if + it exists. + +Thu Mar 8 02:17:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Detect tablejumps that always go to + the same place, and change to unconditional jumps. + + * fold-const.c (fold): Simplify comparison of integer value with self. + + * rtl.h (FUNCTION_FLAGS...): Additional flag bits for saving + current_function_returns_pointer, and several others. + (FUNCTION_PRETEND_ARGS_SIZE): New component in inline header. + * integrate.c (save_for_inline): Record these flags. + (output_inline_function): Get them out again. + Also restore current_function_args_size and ..._pretend_... + + * ns32k.md (movsi, movdi): Handle floating point registers. + + * dbxout.c (dbxout_prepare_symbol): New function, output N_SOL stab. + (dbxout_symbol, dbxout_parms, dbxout_reg_parms): Call it. + * final.c (output_source_file): New function. + + * reload.c (find_reloads_toplev): Do BYTES_BIG_ENDIAN offset + only within a word. + + * stdarg.h: Use _VA_LIST_ as macro to indicate already loaded. + + * fixincludes: Supply missing semicolon in netinet/ip.h. + + * tm-alliant.h (FUNCTION_PROLOGUE): Use `linkl' on 68020. + + * regclass.c (init_reg_sets): For subunion, keep largest candidate. + +Wed Mar 7 00:37:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * emit-rtl.c (in_sequence_p): New function. + + * expr.c (expand_builtin): For BUILT_IN_SAVEREGS, insert after + the initial NOTE insn. + + * dbxout.c (dbxout_finish_symbol): New argument is a decl or 0. + Output line number in desc field. + All callers changed to pass the argument. + + * tree.h (TREE_PUBLIC): Move back to tree_common. + + * dbxout.c (dbxout_init): Output working dir in a N_SO symbol. + + * expr.c (emit_library_call): Handle PUSH_ROUNDING. + + * explow.c (break_out_memory_refs): Use same mode as the MEM has. + + * out-mips.c (output_load_immediate): Let the assembler do the work. + +Tue Mar 6 22:20:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (macroexpand): Fix bug in scanning strings for stringify. + + * stmt.c (expand_goto_internal): Adjust stack after cleanups. + (expand_end_bindings, fixup_cleanups): Likewise. + + * tm-alliant.h (STATIC_CHAIN_REGNUM): Use 10. + +Tue Mar 6 15:23:11 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu) + + * config.gcc: Accept srcdir & vint with either '-' or '+'. + + * c-parse.y (hash, is_reserved_word): Use __inline so it can + be compiled with `gcc -traditional'. + +Tue Mar 6 14:52:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-parse.y (compstmt): Don't return null tree for empty group. This + will cause the compiler to dump core on a ({}) construct. + * cplus-parse.y (compstmt): Ditto. + +Tue Mar 6 14:33:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (TREE_STATIC): Move back to common. + +Tue Mar 6 06:04:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.h (expr_stmts_for_value): New field. + * stmt.c (init_stmt_for_function): Initialize vars for expression + statements. + (save_stmt_status, restore_stmt_status): Save and restore value of + expr_stmts_for_value. + + * cse.c (record_jump_equiv): Ensure previous insn is an INSN before + testing it (it might be a NOTE). + +Tue Mar 6 00:26:20 1990 Richard Stallman (rms at geech) + + * tm-ns32k.h (NOTICE_UPDATE_CC): Use abort in case + that shouldn't happen. + +Mon Mar 5 23:11:57 1990 Richard Stallman (rms at geech) + + * Makefile.in (cplus-tab.h): Say expect 12 reduce/reduce conflicts. + + * genoutput.c (output_prologue): Include insn-attr.h. + + * pyr.md (addsi3, mulsi3, umulsi3, andsi3, iorsi3, xorsi3): + Make input arg predicates symmetrical. + (adddi3, anddi3, iordi3, xordi3): Likewise. + (addsi3): Use immediate subtract if suitable. + +Sat Mar 3 21:08:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (move_block_to_reg, emit_push_insn): Don't treat double 0.0 + as two words of zero. + Handle DImode constants as two integers. + Support CONST_INT (currently only called with const0_rtx). + + * expr.c (convert_move): Can only use slt if STORE_FLAG_VALUE == -1. + +Sat Mar 3 15:03:00 1990 Richard Stallman (rms at geech) + + * function.c (setjmp_protect_args, setjmp_args_warning): New functions. + * toplev.c (rest_of_compilation): Call setjmp_args_warning. + * c-decl.c (finish_function): Call setjmp_protect_args. + + * flow.c (regno_clobbered_at_setjmp): Argument registers + are in effect set at start of function. + + * tm-sparc.h (ASM_OUTPUT_DOUBLE): Replace missing line. + + * print-tree.c (prtypeinfo): Don't check DECL-only + flags for other nodes. + + * toplev.c: Eliminate `#ifdef 0'. + + * dbxout.c (print_int_cst_octal): New function. + (dbxout_type): Use that for long long types. + + * Makefile.in (start.encap, rest.encap): Split all.internal. + + * tahoe.md: Adjust formatting. + + * tahoe.md (ashlsi3, lshlsi3): Don't clobber a const_int. + Instead, use %s to convert shift count to multiplier. + * tm-tahoe.h (PRINT_OPERAND): Handle %s. + + * tm-tahoe.h (CONST_COSTS): Specify cost of MULT. + +Fri Mar 2 01:00:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (rtx_cost): By default, multiply and divide are expensive. + + * expmed.c (expand_mult_add): Use type_for_mode. + Allow ADD to have a different mode. + * c-typeck.c (type_for_mode): New function. + (get_floating_type): Function deleted. + * cplus-typeck.c: Likewise. + + * jump.c (jump_optimize): Simplify `if (x) goto foo; else goto foo;'. + +Thu Mar 1 17:41:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-mips.c (tree_code_name): Declaration deleted. + + * stmt.c (expand_expr_stmt): No "no side effects" warning for (void)0. + + * assert.h (__assert): Don't call abort; use 0 as value. + * gnulib2.c (__eprintf): Call abort here. + + * c-decl.c (pushdecl): Don't warn if shadowing error_mark_node. + + * optabs.c: Use GET_MODE_WIDER_MODE instead of INC_MODE. + + * machmode.def: Set up next-wider-mode for floating modes. + +Wed Feb 28 18:58:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (expand_goto_internal): Add missing stack adjust. + (expand_fixup): Don't do stack adjust if fixup isn't for current pos. + + * stmt.c (expand_start_stmt_expr, expand_end_stmt_expr): No need to + save result from start_sequence in RTL_EXPR. + + * stmt.c (expand_end_loop): Correctly see if NOTE_INSN_LOOP_CONT + was written. + + * stmt.c (expand_decl): Omit move to OLDADDR if it would be noop. + + * expr.c (expand_expr): Don't use variable TYPE in subblocks that + hides TYPE at function level. + + * expr.c (force_operand): Always generate PLUS for constant. + Use negate_rtx to negate constant. + + * expr.c (expand_expr): Ensure that type is not wider than + HOST_BITS_PER_INT when assuming that constant is entirely in + TREE_INT_CST_LOW. + Simplify EXPAND_SUM code for PLUS_EXPR and MINUS_EXPR. + Call preexpand_calls at binop instead of all places that branch to it. + + * expmed.c (expand_shift): Skip widening try for rotates; avoid + passing UNSIGNEDP == -1 to expand_binop. + + * expr.c (expand_builtin): Use a sequence instead of reorder_insns. + + * tree.c (save_expr): Ignore NON_LVALUE_EXPRs. + Mark as TREE_VOLATILE so won't be inadvertently deleted. + (build): Special-case LENGTH == 1 also. + +Wed Feb 28 12:57:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (convert_move): Handle conversions to and from PSImode. + + * stor-layout.c (layout_type): For integer types, don't consider + PSImode, etc. + + * expmed.c (init_expmed): Typo: test was backwards. + + * Makefile (install): When installing $${eachfile}, use basename. + +Tue Feb 27 14:48:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_common): Delete certain attributes. + external, public, static, nonlocal, regdecl, inline. + (struct tree_decl): Insert them here. + + * combine.c (try_combine): Avoid generating nested SUBREGs for + operands when handling case where I2 or I1 is a SUBREG assignment. + Never combine with an insn that sets a register to itself if it has + a REG_EQUAL note. + (subst): Correct errors in changing (minus (x) (c)) to (plus (x) (-c)). + Recompute CODE before second switch. + Case NOT: in second switch failed to set undobuf.storage. + (gen_lowpart_for_combine): Don't allow multi-word modes; do allow + null conversions. + +Tue Feb 27 07:13:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Don't combine when doing so would + replace destination that is being modified, as opposed to replaced. + + * function.c (fixup_var_refs_1): Rework to correctly support + bit-field insns that don't allow memory operands. + Correctly detect insns that simply copy a variable to or from a + register. + (optimize_bit_field): Use a sequence rather than reorder_insns. + * Makefile.in (function.o): Update dependancies. + + * recog.h: Delete obsolete insn_machine_info. + + * function.c (assign_parms): Use move_block_from_regs to place + first part of parameter partially in registers into memory. + +Mon Feb 26 19:02:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Find only .h files when looking for headers. + + * function.c (expand_function_start): Save arg ptr reg + if there are nonlocally-referenced parms. + +Fri Feb 23 13:21:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (readescape): For x, avoid overflow when shifting in if. + +Thu Feb 22 19:14:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Delete directories before creating them. + When making internal symbolic directory links, chase + chain of existing links to the end. + + * dbxout.c (dbxout_type): Always use main variant (until + there is code to report the distinctions usefully). + +Wed Feb 21 13:20:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * math-68881.h (hypot): New function. + + * optabs.c (expand_binop): Swap operands if that makes modes match. + + * expr.c (expand_expr): For ARRAY_EXPR, when converting to + multiplication and addition, use type of index for product. + + * gcc.c (LIB_SPEC): Link with -lg if -g specified. + * tm-isi68.h, tm-next.h, tm-sparc.h, tm-sun3.h, tm-sun386i.h: Likewise. + * tm-mips.h (LIB_SPEC): Override to avoid using -lg. + + * toplev.c (main): Warn for -g if not supported. + + * c-decl.c (grokdeclarator): Do pedantic checks for const functions + where function decls and variant function types are made. + +Mon Feb 19 20:06:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c: Restore Feb 13 change. + + * varasm.c (readonly_data_section): New fn. + (assemble_variable, get_or_assign_label, output_constant_pool): + Use new fn instead of text_section. + * final.c (end_final): Write profiling table to read-only section. + (get_attr_length, shorten_branches): Address vectores take no space + if not in text section. + Vectors are in operand 0 for ADDR_VEC but 1 for ADDR_DIFF_VEC. + (final_scan_insn): Merge cases for ADDR_VEC and ADDR_DIFF_VEC. + Put vector tables in read-only section. + +Sun Feb 18 13:58:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__shtab): New vector. + * Makefile.in (LIB2FUNCS): Add that member. + + * *tahoe*: New versions of these files. + + * optabs.c: File was deleted. Copied last backup. + Feb 13 change lost. + + * tm-sparc.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Handle nans. + Don't output more digits than the numbers have. + * tm-sun3.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Likewise. + (ASM_OUTPUT_DOUBLE_OPERAND): Don't output excess digits. + + * m68k.md (movqi): Don't use clrb or st if dest is volatile. + + * expmed.c (expand_mult): Don't use sum of shifts if mult is cheaper. + (init_expmed): Set mult_is_cheap based on rtx_cost. + * toplev.c (compile_file): Call init_expmed. + * cse.c (rtx_cost): Not static. + + * tm-mips.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL): + Start name with $. + + * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-news.h, tm-seq386.h: + * tm-sequent.h, tm-spur.h, tm-sun2.h, tm-tahoe.h, tm-vax.h: + (LIB_SPEC): Put in -lc with appropriate alternatives. + + * toplev.c (rest_of_compilation): + Clear rtx_equal_function_value_matters just before final. + + * cccp.c (rescan): If don't find paren after macro, back up over space. + +Sat Feb 17 20:58:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-hp9k320.h (CPP_SPEC): Remove _INCLUDE__STDC__. + +Wed Feb 14 09:06:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (struct movable): Add SET_DEST and SET_EQUAL fields. + (single_set): New fn. + (scan_loop, force_movables, move_movables, consec_set_invariant_p): + Use new fn to look for insns that contain a single set. + Use new fields in struct movable. + (scan_loop, strength_reduce): Pass number of registers to + strength_reduce. + (libcall_benefit): New fn. + (scan_loop, strength_reduce, consec_sets_giv): Use it. + (skip_consec_insns): Correctly count insns to be skipped when + NOTEs are present. + (combine_movables): In some cases, combine regs that load CONST_INTs + even if the modes of the destination differ. This requires starting + the inner loop from the start of the movable list. + Use find_reg_note to search for notes. + Don't choose a use of an equivalence instead of the insn that sets + the register directly (hence setting up the equivalence). + Set DONE for the matched movable to ensure it isn't duplicated. + (replace_call_address): No longer used. + (move_movables): When moving a LIBCALL block where the address of + the fn is in a register, emit an insn to move the actual address + in case the original move was CSE'ed out of the block. + Emit AND insn via expand_binop instead of explicit RTL. + Search for matching from start of list, not from movable being matched. + If mode of combined movables differ, use SUBREG to replace narrower. + (replace_regs): Don't replace register if it is the destination. + (count_nonfixed_reads): Mem ref is fixed if addres is loop invariant. + (can_jump_into_range_p): Speed up common cases. + (count_loop_regs_set): Do same thing for parts of PARALLEL as when + they occur standalone. + (struct induction): Delete fields forces, forces2, and consec. + Store dest and src reg rtx instead of register number. + Add new fields always, cant_derive, combined_with, maybe_dead, and + derive_adjustment. + (struct iv_class): Add new fields initial_test, init_set, incremented. + (all strength reduction routines): Use single_set and use new + struct induction fields; forces is no longer used. + (record_biv): New fn. + (strength_reduce): Use it. + (record_initial, valid_initial_value_p): New fns. + (strength_reduce): Scan for bivs in loop order. + Refine handling of maybe_never. + A reg isn't a biv if it is never incremented. + Use note_stores and record_initial to correctly note all changes + to a biv's register prior to the start of the loop. + We may know biv's initial value if it was tested NE before the loop. + Use new valid_initial_value_p. + Ensure giv's insn is the last in a LIBCALL block or if consec. + Don't set maybe_never on jump back to top of loop. + Don't delete any insns setting givs; flow will eliminate them as + dead. Ditto for biv updates when biv can be eliminated. + If giv's last use is in a computation of another giv, mark that it + might be dead. + Make two passes over givs. In first pass, handle non-matched + givs. In second pass, handle the matched givs. + (only_reg_use_p): Now static. + (delete_insn_forces): Fn deleted; no longer used. + (update_giv_derive): New fn. + (strength_reduce): Call it for every insn and label. + (record_giv): If giv never used, ignore it. + (basic_induction_var): Always set *MULT_VAL to something. + A set of a biv from an invariant MEM is allowed. + (simplify_giv_expr, expr_cost): New fns. + (general_induction_var): Rewrite to use them. More types of + expressions are now recognized as givs. + Use results produced by update_giv_derive to ensure that giv derivation + works correctly when spanning biv update. + (consec_sets_giv): Can allocate temporary induction struct on stack. + Skip insns that set irrelevant items between two updates to giv. + (gen_iv_mult, emit_iv_init_code): Replace with emit_iv_add_mult. + (update_reg_last_use): New fn. + (emit_iv_add_mult): Call it for all operands. + (express_from, combine_givs_p, combine_givs): New fns. + (strength_reduce): Call them to combine givs. + (product_cheap_p): Rewrite to handle more cases. + Free any memory allocated. + (get_condition): New fn. + (strength_reduce, check_dbra_loop): Use it. + (check_dbra_loop): Use emit_move_insn instead of writing explicit SET. + Use emit_cmp_insn/emit_jump_insn to write out replacement test. + (check_eliminate_biv): Use single_set. + Refine test for insns that use biv only to calculate giv. + Return non-zero if can eliminate biv; don't set eliminable. + (can_eliminate_biv_p): Remove some duplicate code and allow + all constants in some cases where only CONST_INT was allowed. + Don't replace biv with giv that might be dead. + (eliminate_biv): Compute whether to put an invariant before insn + in which the biv is being eliminated or at the start of loop. + Allow more types of constants. + Don't replace biv with giv that might be dead. + Use validate_change when substituting into insn. + (strength_reduce): Change calls to check_eliminate_biv and + eliminate_biv. Call the former again after maybe_dead has possibly + been set on some givs. + +Tue Feb 13 19:58:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (function_obstack): New variable. + (init_allocation): Init it to temporary_obstack. + (save_tree_status): Save it, make new obstack for it. + (restore_tree_status): Free new obstack, restore old. + (temporary_allocation, resume_temporary_allocation): Use that one. + * function.h (struct function): Slot for saved function_obstack. + * tree.c (push_obstack, pop_obstack): New functions. + These implement a stack for obstack selection. + * function.c (put_var_into_stack): If var is nonlocal, + switch to obstacks of the function it is in. + +Tue Feb 13 17:52:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_no_conflict_block): During reload, don't do + any encapsulation or add notes. + Allow single insn or no insns in sequence. + +Tue Feb 13 12:51:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (build_int): Increase limits of cache size. + + * sdbout.c (sdbout_symbol): Force output of symbol's type. + +Tue Feb 13 08:28:37 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * toplev.c (rest_of_compilation): Don't skip compilation of function + if TREE_INLINE but no saved insns (e.g., if not -O). + + * rtlanal.c (replace_rtx): New function. + * rtl.h: Define it. + +Tue Feb 13 00:02:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_struct): Lay out any existing array types + of newly completed struct. + (layout_array_type): New subroutine. + +Mon Feb 12 11:33:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * function.c (assign_parms): If not -O, keep all parms in memory. + + * expr.c (clear_pending_stack_adjust): Ignore TREE_INLINE if not -O. + + * out-i386.c (output_fix_trunc): New function. + (fp_pop_int): Re-enabled. Handle more modes, individually. + (print_operand): Handle %D. + * i386.md (fix_truncdfdi2, fixuns_truncdfdi2): New patterns. + These changes from James Van Artsdalen. + + * gnulib2.c (__builtin_vec_delete): Use __builtin_delete, not free. + + * sdbout.c (sdbout_field_types): Do look through pointer types. + +Sat Feb 10 19:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (plain_type_1): Don't output tag until known. + (sdbout_one_type): Don't record tag in KNOWN_TYPE_TAG until end. + Reenable output of member types before original structure. + + * expr.c (expand_expr): Convert post-inc to pre-inc if result ignored. + +Sat Feb 10 14:35:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (movsf): Convert double constant to float. + +Fri Feb 9 00:02:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): Don't lose alignment of OLDDECL. + + * cccp.c (handle_directive): Keep comments by copying them explicitly. + + * cccp.c (rescan): When scanning for open-paren after macro name, + discard comments if appropriate. + +Fri Feb 9 18:26:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): Suppress infinite loop when associating + operations in cases where a reg, R, is equal to "R OP const1" and + we are looking at "R OP const2" for some associative operator OP. + +Thu Feb 8 14:19:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (build_enumerator): Pedantic warning if value not an int. + Access default value after checking for constant specified, + as it should no longer be possible to have NON_LVALUE_EXPR + in the default. + + * c-typeck.c (default_conversion): Don't truncate wide enums. + + * tm-hp9k320.h (CPP_SPEC): Define _INCLUDE__STDC__ if not traditional. + * tm-hp9k310.h (CPP_SPEC): Likewise. + +Wed Feb 7 12:59:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (emit_insns_before): New fn. + (init_emit_once): Add uses of new macros to support static chain + passed in memory. + * calls.c (prepare_call_address): Rework to set static chain for + languages that have EPmode function addresses and for nested + functions in C. + Emit USE insn for static_chain_rtx into list of USE insns to be + placed later. + (emit_call_1): USE_INSNS is now a list of insns, not a SEQUENCE. + (expand_call): Remove gratuitous forcing of FUNEXP to Pmode (it + might have been EPmode). + Make USE_INSNS a list, rather than a SEQUENCE. + Use prepare_call_address to emit load into static chain. + * expr.c (emit_library_call): Update call to prepare_call_address. + * function.c (expand_function_start): Use incoming static chain rtx + instead of outgoing form (was correct in one place, wrong in one). + * stmt.c (expand_goto): Set static_chain rtx after stack pointer + in case it uses the stack pointer. + Only write one USE for stack_pointer_rtx. + +Tue Feb 6 17:26:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (jump_optimize): Suppress optimization of `if (...) x = 1; + else {...} if (x) ...', when a label is present between the + assignment to X and the unconditional jump. + +Mon Feb 5 23:22:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): If I2 or I1 is a PARALLEL, ignore only + CLOBBER parts when combining. Previously used to ignore USE parts + also but the latter can indicate that the insn needs some setup that + isn't shown in its rtl. + +Mon Feb 5 13:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * vax.md (addhi3, addqi3): Fix typo checking for dec insn. + + * cccp.c (struct file_buf): New field `nominal_fname' is name spec'd + in #line command; `fname' is name of actual input file. + Many functions now use or set this field as well or instead. + + * c-decl.c (grokdeclarator): Fix missing paren. + +Sun Feb 4 12:37:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-3b1g.h: New file. + * config.gcc (3b1g, 3b1-gas): New alternative. + + * loop.c (move_movables): Skip USE insns when checking for + the insn that loads the address of a library function. + + * combine.c (combine_instructions): Compute total_distrib_*. + + * final.c (final): Do basic block profiling at end of function. + (final, final_scan_insn): Run CC_STATUS_INIT after block profiling. + (final_scan_insn): Detect cond jumps that use PARALLEL. + +Sun Feb 4 00:04:22 1990 Richard Kenner (rms at sugar-bombs.ai.mit.edu) + + * function.c (assign_stack_local): Use plus_constant to avoid + PLUS when offset is zero. + (assign_outer_stack_local): Ditto. + +Sun Feb 4 00:04:22 1990 Ron Guilmette (rms at sugar-bombs.ai.mit.edu) + + * explow.c (fix_lexical_addr): Fix typo. + + * tree.c (build_type_variant): Special handling for protoize. + + * protoize.c: New file. + + * toplev.c (flag_gen_aux_info): Define it. + (f_options): Recognize the flag. + (compile_file): Open and close the aux_info file. + + * flags.h (flag_gen_aux_info): Declare it. + + * c-typeck.c (comptypes): Handle equivalent variant types for protoize. + + * c-decl.c (implicitly_declare): Call gen_aux_info_record. + (start_decl, store_parm_decls): Likewise. + (pushdecl): For protoize, distinguish different names for same type. + (grokdeclarator): For protoize, don't always get main variant. + (finish_function): Take the main variant here. + + * c-aux-info.c, SYSCALLS.c: New files. + + * Makefile.in (proto, protoize, unprotoize): New targets. + (protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize): More new. + (c-aux-info.o): Also new. + (STAGESTUFF): Add protoize, unprotoize. + (install): Install protoize, unprotoize and SYSCALLS.c.X. + +Sat Feb 3 17:09:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (digest_init): Allow conversion of array exp to pointer. + Constructors with types are simply expressions, so don't treat as + initializers. + + * Makefile.in (uninstall): New target. + + * Makefile.in (include/README): Target deleted. + (include): Deleted. + (INSTALL): Create include dir here. + + * Makefile.in (all.internal): Enable compiling cc1plus. + (lang-cplus): New target. + (*.o): Add some missing dependencies. + (STAGESTUFF): Add cc1plus. + +Fri Feb 2 18:21:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tree.c (decl_function_context): Don't abort when passed ERROR_MARK. + +Fri Feb 2 17:04:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (copy_for_inline): Use real width of rtunion in bcopy. + * emit-rtl.c (copy_rtx_if_shared): Likewise. + + * assert.h (assert) [__STDC__]: Use comma operator to avoid warning. + + * c-decl.c (grokdeclarator): Traditionally change return type float + to double. + + * cse.c (predecide_loop_entry): Give up unless simple jump enters loop. + +Thu Feb 1 19:32:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex, skip_white_space): CR is not whitespace. + +Thu Feb 1 17:18:33 1990 Richard Kenner (kenner at sugar-bombs.ai.mit.edu) + + * tm-m68k.h (PREFERRED_RELOAD_CLASS): Never return DATA_REGS for + ADDR_REGS, even for QImode. + + * cse.c (cse_insn): If source equivalent is not in table, but + source is, put equivalent in same class as source. But do not + do this if the destination has a STRICT_LOW_PART. + (cse_main): Call init_recog instead of init_recog_no_volatile. + +Thu Feb 1 17:18:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (cplus-tab.c, cplus-tab.h): Renamed from cplus-parse.*. + (TAGS, realclean): Renamed these files. + (cplus-decl2.o, cplus-type2.o, cplus-search.o): New targets. + (cplus-except.o, cplus-expr.o): New targets. + (new-method.o): Target deleted. + (CPLUS_OBJS): Add and delete object files. + (CPLUS_TREE_H): Change header names. + (INTERNAL_CFLAGS): Set the MERGED flag. + + * calls.c (expand_call): Flush junk in assign of CONTEXT. + + * expr.c (expand_expr): LOOP_STMT is just an infinite loop. + Handle EXIT_STMT. + * tree.def (EXIT_STMT): Change meaning: exit if expression is true. + * stmt.c (warn_if_unused_value): Do nothing for EXIT_STMT. + +Thu Feb 1 14:10:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_no_conflict_block): Accept optional expression + to be placed in REG_EQUAL note on last insn emitted. + Just emit insns if TARGET is not a register. + (expand_binop, expand_unop): Change calls. + +Thu Feb 1 01:03:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.def (NON_LVALUE_EXPR): New tree code. + * fold-const.c (non_lvalue): No longer static. + Make NON_LVALUE_EXPR. Do nothing if arg certainly not lvalue. + * c-typeck.c (build_c_cast): Call non_lvalue. + (default_conversion, build_function_call, actualparameterlist): + (build_binary_op_nodefault, truthvalue_conversion, build_modify_expr): + (convert_for_assignment, digest_init): Strip NON_LVALUE_EXPR from args. + (build_unary_op, build_modify_expr): No longer need to check for + NOP_EXPR that indicates not an lvalue. + (build_compound_expr, build_c_cast): Don't strip NON_LVALUE_EXPR + * expr.c (expand_expr, do_jump): Handle NON_LVALUE_EXPR. + * c-decl.c (build_enumerator, grokdeclarator): Strip them. + * c-parse.y (case label): Strip them. + + * limits.h (INT_MIN): Define so it has type `int', not unsigned. + (CHAR_MIN, SCHAR_MIN, SHRT_MIN): Put arens around value. + + * reload1.c (inc_for_reload): Forget reg_last_reload_reg + for the reg being inc'd. + +Wed Jan 31 17:37:53 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) + + * cplus-*: New files. + + * tree.def (TARGET_EXPR): New name for NEW_EXPR. + * tree.c (simple_cst_equal): Change NEW_EXPR to TARGET_EXPR. + + * stmt.c (estimate_case_costs): Check all nodes against ASCII range. + + * stmt.c (warn_if_unused_value): Delete obsolete node types. + + * recog.c (validate_change): Fix one-off bug testing recog_memoized. + + * local-alloc.c (local_alloc): Initialize qty_phys_reg. + + * fold-const.c (non_lvalue): Propagate TREE_LITERAL, TREE_VOLATILE. + + * expr.c (expand_expr): Delete DELETE_EXPR. + Call lang_expand_expr for any unknown tree code. + Handle IF_STMT, LOOP_STMT, LET_STMT for real. + + * dbxout.c (dbxout_type): Output args for method type. + Treat OFFSET_TYPE as int if not using GDB extensions. + +Wed Jan 31 17:32:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (node_has_high_bound, node_has_low_bound): + Use integer_one_node, not new node. + + * expr.c (do_jump): In comparisons against zero, used unsigned, rather + than signed, extensions, as that is more likely to be the faster one. + +Wed Jan 31 14:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (rest_of_compilation): Ignore TREE_INLINE if not -O. + + * out-mips.c (mips_prologue): Handle big stack frames > 2**16. + + * tree.h (struct tree_type): Rename `max' field to `maxval'. + (TYPE_MAX_VALUE, TYPE_OFFSET_BASETYPE, TYPE_METHOD_BASETYPE): + Use new name. + + * reload1.c (reload): Reject fixed regs when spilling large groups. + + * c-decl.c (start_function): + Optionally warn if non-proto defn without previous prototype. + + * Makefile.in: New rule to make .../include subdir. + New rule to run fixincludes into it. + Rule `install' depends on them. + + * assert.h (assert) [no NDEBUG]: Split into versions with/out __STDC__ + (_assert) [__STDC__]: Pass expression and file separately to _eprintf. + (_assert) [not __STDC__]: Likewise, but implemented differently. + * gnulib2.c (__eprintf): Handle 3 args plus format string. + + * tm-i386.h (STACK_BOUNDARY): Define it. + +Tue Jan 30 16:24:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (install): Fix typo in name of varargs file. + + * combine.c (try_combine): Don't allow combine to violate machine's + alignment restriction. + +Sun Jan 28 03:53:28 1990 Michael Tiemann (tiemann at rio) + + * stmt.c (warn_if_unused_value): Don't warn for LOOP_STMT, IF_STMT, + or LET_STMT. + + * toplev.c (compile_file): Code to mention symbol that was not + written to asm file is now #if 0'd out. What good is it telling the + debugger about a symbol it cannot see? + + * dbxout.c (dbxout_type): Change METHOD_TYPE print character from + '@' to '#'. Also, don't try to output CONST_DECLs. GDB doesn't + understand them, and they don't have DECL_OFFSETs. + + * sparc.md (floatsidf2): Changed constraint from "rfm" to "rm" for + second operand. + + * toplev.c (lang_expand_expr): New variable is pointer-to-function + which expands language-specific tree codes. Its default is + `fancy_abort'. + +Sat Jan 27 10:18:44 1990 Michael Tiemann (tiemann at rio) + + * gcc.c (main): Initialize COMPILERS before calling + `validate_all_switches'. + + * tree.c (decl_{type,function}_context): Handle LET_STMT. + + * stmt.c (expand_decl_cleanup): New function. + + * stmt.c (expand_decl): No longer takes CLEANUP parameter. + All callers changed. + + * tree.c (build_{loop,if,goto,compound}, etc): Turn these tree + constructors back on. + + * tree.def: Delete DELETE_EXPR, PUSH_EXPR, POP_EXPR. + + * c-typeck.c (max): New macro. + + * c-decl.c (maybe_build_cleanup): New function. + + * tree.c ({value,purpose}_member): New functions. Returns first + element of LIST that matches respective components with ELEM. + + * varasm.c (first_global_object_name): Variable defined. + +Sat Jan 27 23:31:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (reload): Reject fixed regs when completing group of 2. + +Fri Jan 26 17:28:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (do_jump): Don't use CONST0_RTX when value to be tested is + CONST_INT. + +Fri Jan 26 13:39:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (main): Warn about bad switches at beginning, not at end. + +Thu Jan 25 22:03:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (general_induction_var): Reject widening multiply. + + * cccp.c (grow_outbuf): Always return 0. + +Thu Jan 25 07:04:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst): Correctly reference length in + (zero_extract (zero_extend ... )) combinations. + + * c-decl.c: Define warn_traditional. + (build_enumerator): Remove NOP_EXPRs from default value also. + + * fold-const.c (fold): Strip NOP_EXPRs when looking for constants. + +Thu Jan 25 01:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (install): Clear execute bit for nonexecutable files. + + * i860.md (andsi3): Truncate xop2 constant to 16 bits. + +Wed Jan 24 22:32:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genemit.c (main): Include output.h in insn-emit.c. + * genpeep.c (main): Similar. + * genrecog.c (main): Ditto. + * Makefile.in (insn-emit.h, insn-peep.h, insn-recog.h): Add dependancy. + +Wed Jan 24 20:13:08 1990 Richard Stallman (rms at albert.ai.mit.edu) + + * cccp.c (do_define): Report error for duplicate macro args. + +Mon Jan 22 07:52:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (alter_reg): Rework change of January 7th to allow + for no previous insn and clear equivalence information of correct + pseudo. + +Mon Jan 22 01:22:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (fold): Don't simplify non-lvalue to an lvalue. + (non_lvalue): New fn; makes a NOP_EXPR with readonly flag. + * c-typeck.c (build_unary_op, build_modify_expr): Reject such. + +Sun Jan 21 20:53:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (lvalue_p): Don't call language_lvalue_valid. + Don't bother with looking for NEW_EXPR or REFERENCE_TYPE. + (language_lvalue_valid): Deleted. + +Sat Jan 20 19:50:15 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) + + * expr.c (expand_expr): Implemented language-independent expansion + for NEW_EXPR. + +Thu Jan 18 14:29:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (rescan): Set beg_of_line when string ends at newline. + (skip_quoted_string): Don't swallow newline that ends a string. + (handle_directive): No need to back up here. + Pass LIMIT as second arg to skip_quoted_string. + +Thu Jan 18 12:50:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (gen_lowpart): Verify CONST_DOUBLE is integer mode. + (gen_highpart): Add support for CONST_INT and CONST_DOUBLE. + + * recog.c (general_operand): Don't allow nested SUBREGs. + (nonmemory_operand, memory_operand, register_operand): Ditto. + + * emit-rtl.c (gen_reg_rtx): Don't allow creation of pseudos + during or after reload. + +Thu Jan 18 11:41:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (actualparameterlist): -Wconversion warns if + representation or width is changed. + +Thu Jan 18 01:09:47 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) + + * dbxout.c (various places): Don't assume that DECL_NAME of a + PARM_DECL is non-zero. It might be empty for anonymous parms. + +Thu Jan 18 00:06:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (local_alloc): qty_phys_sugg is now an array of + HARD_REG_SETs. Initialize new variable qty_phys_has_sugg. + (block_alloc): Don't test for nonlocal gotos here. + Test qty_phys_has_sugg instead of qty_phys_sugg to see if + quantity needs early allocation. + (qty_compare, qty_compare_1): No longer consider whether a quantity + has a hard register suggestion as part of its priority. + (combine_regs): We now record multiple hard register suggestions + in qty_phys_sugg. + (find_free_reg): Test here for nonlocal gotos. + Support new meaning of qty_phys_sugg by restricting to those + registers if just_try_suggested. + Check for no registers available prior to looping over registers. + + * global-alloc.c (prune_preferences): New fn. + (global_alloc): No longer keep a single vector of which registers + someone prefers; instead keep this record one per allocation number. + Record registers not saved over calls as already used for register + allocation purposes, so we can feel free to allocate them with no + cost. + Call new fn to prune preferences and build list of registers + preferred by earlier allocnos. + find_reg no longer gets preference information as argument. + (find_reg): Don't take preferred registers as argument; get the + info from global variables. + (set_preference): Remove regs_someone_prefers. + (dump_conflicts): Print register preferences in dump file. + +Wed Jan 17 16:00:59 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) + + * tree.c (decl_function_context): New function, returns the + innermost DECL_CONTEXT of FNDECL when that context is a + FUNCTION_DECL. + * tree.c (decl_type_context): New function, returns the + innermost DECL_CONTEXT of FNDECL when that context is a + TYPE_DECL. + * All callers changed to use `decl_function_context' when handling + nested functions. + * All C++ callers changed to use `decl_type_context' when handling + member functions. + + * expr.c (fixed_type_p): New function says whether the compiler + guarantees that it knows the true type of an object. + * expr.c (expand_expr): Call that function for INIT_EXPR and + MODIFY_EXPR. Also, for MODIFY_EXPR, check both RHS and LHS. + + * tree.h (DECL_ARG_TYPE): Use INITIAL, not ARGUMENTS slot in + `tree_decl. Now reserving ARGUMENTS slot for VAR_DECL and + PARM_DECL for language-specific features. + + * tree.c (build_decl): Don't set DECL_PRINT_NAME by default. + + * assert.h: Assume that undefined __GNUC__ implies `assert' must + rely on printf. + +Wed Jan 17 15:31:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (rescan): If traditional, end preproc number after expt sign. + +Wed Jan 17 15:18:25 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) + + * stmt.c: Extended struct nesting to hold exception handling + contours. New functions: + + expand_start_try, expand_end_try, in_try_block + expand_start_except, expand_end_except, in_except_block + expand_start_catch, expand_end_catch, expand_catch_default + expand_raise, expand_escape_except, in_exception_handler + +Wed Jan 17 13:48:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Typo, had `includes' for `include'. + Always increment p. + + * reload1.c (alter_reg): Delete spurious `break'. + + * local-alloc.c (block_alloc): Delete ref to undef var first_time. + +Wed Jan 17 13:35:47 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) + + * toplev.c: Unmerge all changes of Bryan Boreham--no papers (yet). + +Wed Jan 17 12:33:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): Struct requires BLKmode if any field + crosses a word boundary. + +Wed Jan 17 12:04:18 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) + + * stor-layout.c (layout_type): Unterminate comment terminated. + + * tree.c (lvalue_p,lvalue_or_else): Remove these functions from this + file. + * c-typeck.c (lvalue_p,lvalue_or_else): Put them in this file. + +Wed Jan 17 00:46:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (pushdecl): Delete garbage accidentally added before. + + * tree.c (set_identifier_size): SIZE is size in bytes. + * tree.c (get_identifier): If `set_identifier_size' has not been + called, abort. + * c-decl.c (init_decl_processing): Don't call `set_identifier_size' + from here. + * c-parse.y (init_lex): Call `set_identifier_size' from here. + + * varasm.c (force_const_mem): Save DESC's label on the + saveable_obstack. (Note, saveable is misspelled.) + + * listing: New file. + +Tue Jan 16 20:43:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (convert_sequence): Put in #if 0. + +Tue Jan 16 17:25:43 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) + + * toplev.c: Merged Bryan Boreham's undumping code. + + * print-tree.c (dump): Handle TREE_VEC. + + * varasm.c (output_constant_pool): When done, set FIRST_POOL, + LAST_POOL to zero. + + * varasm.c (first_global_object_name): New variable. Records the + name of the first global declaration (variable or function) whichi + is written to the assembly file. + + * tree.h (tree_code_name): Add declaration. + +Tue Jan 16 17:06:29 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (block_alloc): Make an initial pass to try to + allocate registers that have suggested hard registers. + (find_free_reg): Add new argument to only try suggested hard register. + +Tue Jan 16 15:54:06 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) + + * tree.h (tree_vec): Added. + + * tree.def (IDENTIFIER_NODE): Default length is 2. + * tree.def (TREE_VEC): Define it. + * tree.def ({NEW_,DELETE_,REFERENCE_}EXPR): fixed comments. + + * tree.c (preserve_initializer): New function. Like + `preserve_data', but saves nodes on momentary_obstack as well. + * tree.c (make_tree_vec): New function. Allocates a TREE_VEC node. + * tree.c (copy_node): Support added for TREE_VEC. + * tree.c (build_parse_node): New function. Builds tree node on + TEMP_DECL_OBSTACK. + +Tue Jan 16 15:23:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.h: Eliminate definitions of andcb_optab and expand_bit_and. + * expmed.c (expand_bit_and): Eliminate function. + (store_fixed_bit_field, extract_fixed_bit_field, expand_divmod): + Replace expand_bit_and with call to expand_binop. + * expr.c (expand_expr): Handle TRUTH_AND_EXPR and BIT_AND_EXPR + as normal binary operations. + (do_store_flag): Replace expand_bit_and with expand_binop. + * optabs.c (expand_binop, init_optabs): Eliminate andcb_optab. + + * expmed.c (expand_shift): Don't use extzv for rotate. + If all three tries at a shift operation failed, delete the + insns made during the last try. + Handle failure of extzv operation. + Call protect_from_queue before convert_to_mode for op1. + +Tue Jan 16 10:38:28 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) + + * tree.c: Added temp_decl_obstack for building declarators without + needing to use permanent_obstack at top level. + * tree.c (init_tree): Init temp_decl_obstack. + * tree.c (permanent_allocation): Free nodes allocated on + temp_decl_obstack. + * tree.c (build_decl_list,decl_tree_cons): New functions. Like + `build_tree_list' and `tree_cons', but for building on + temp_decl_obstack. + * tree.c (build1): New function. Builds tree node for unary tree + node kinds; doesn't use varargs. + * tree.c (simple_cst_equal): Interface changed to return 1 if + arguments are equal, 0 if not, and -1 if arguments were not + understood by the function. + * tree.c (build_{method,offset}_type): TYPE_*_BASETYPE is the + TYPE_MAIN_VARIANT of BASETYPE. + +Mon Jan 15 01:50:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cexp.y (exp): Accept unary +. + + * Makefile.in (hard-params): Compile with GCC. + (hard-params.o): Likewise, and depend on the GCC executables. + + * tm-sparc.h (CONST_COSTS): Give 1, not 0, for immed consts. + +Sun Jan 14 14:38:10 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) + + * stmt.c (estimate_case_costs): New function. Case code no longer + assumes that all case values are equally likely for all types. In + particular, when the type of argument for the switch statement does + not look like it is not ASCII text, we assume that it might be, and + assign a weight to its value based on frequency distribution of + characters in ASCII text. + * stmt.c (balanace_case_nodes): If case values look like ASCII text, + then use the cost table. Otherwise, do not. Using the cost table + means that the otherwise almost-balanced binary tree may be skewed + in hopes of picking up common values more quickly than just + log(n). This is done at the direct expense of the less common + values, which will be reached at more than log(n). + * stmt.c (emit_case_nodes): If using COST_TABLE and the most likely + case value is on one side of the tree or another, hand-pick boundary + tests so that condition codes can be reused (if possible). + * stmt.c (expand_end_cast): If optimizing, and the type of + ORIG_INDEX is not an enumeral type, then call `estimate_case_costs.' + +Sun Jan 14 12:18:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (lshift_double, rshift_double, lrotate_double): + (rrotate_double): Don't shift more than width of operand. + +Fri Jan 12 12:17:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (next_insns_test_no_inequality): Return 1 at end of rtl. + + * expr.c (store_expr): No special handling for constructor + unless value is going in struct value block. + + * stor-layout.c (layout_type): Use common nodes for sizes of ptrs, fns. + (make_signed_type, make_unsigned_type): Create those nodes. + (layout_record): Just ignore VAR_DECL if not static. + +Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (lang_decode_option): Decode -Wtraditional. + * c-decl.c (implicitly_declare): Warn if extern decl previously seen. + * c-typeck.c (c_expand_start_case): Warn if switch exp is long. + + * c-typeck.c (actualparameterlist): Optionally warn on truncation. + * toplev.c (main): Handle -Wconversion. + + * cccp.c (skip_if_group): Skip strings even if -traditional. + (handle_directive): Likewise, when handling copy_command. + +Thu Jan 11 14:15:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): Only check for REG_EQUAL notes and make + REG_EQUAL notes instead of REG_EQUIV notes. + * explow.c (force_reg): Make REG_EQUAL note instead of REG_EQUIV + note. Check for and reuse old note if present. + * local-alloc.c (block_alloc): Convert REG_EQUAL to REG_EQUIV for + constant when register is only set once. + * loop.c (combine_movables, move_movables): Check for REG_EQUAL notes + instead of REG_EQUIV notes. + * optabs.c (expand_binop): Correct typo in writing REG_EQUAL note. + (emit_no_conflict_block): Suppress REG_NO_CONFLICT notes for + non-registers. + +Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i860.md (movsf): Ensure F to f is reloaded via r. + + * expr.c (expand_increment): Don't call stabilize. + +Wed Jan 10 15:03:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): If old fn decl follows new ellipsis decl, + warn only if pedantic. + + * loop.c (loop_skip_over): Do nothing if don't find expected compare. + +Tue Jan 9 21:31:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. + The later call to find_equiv_reg can malfunction if CLOBBERs are + deleted. + +Mon Jan 8 17:48:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (link_command_spec): Always check gnulib both first and last. + +Mon Jan 8 17:07:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (expand_unop): Perform multi-word logical negation one + word at a time. + (expand_binop, expand_unop): Insert REG_EQUAL note on last insn of + multi-insn sequence. + Use TARGET_PIECE instead of TARGET in multi-word logical operations. + (emit_no_conflict_block): New fn. + (expand_binop, expand_unop): Call it. + (gen_add2_insn, gen_sub2_insn): Abort if operands do not match those + of the predicates for the appropriate generators. + + * expr.h: Fix typo and define emit_no_conflict_block. + +Mon Jan 8 15:33:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtl.h (REG_UNSET): Fix the code. + * rtl.c (reg_note_name): Add REG_UNSET. + + * c-decl.c (struct binding_level): parm_flag now 2 for def, 1 for decl. + (declare_parm_level): New parm distinguishes them. All calls changed. + (pushdecl): Don't warn about shadowing with parm name in fn decl. + +Mon Jan 8 15:15:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_basic_block): Allow NOTEs between LOOP_BEG and jump to + end test. + (predecide_loop_entry): Accept JUMP_INSN rather than LOOP_BEG NOTE. + + * reload1.c (gen_input_reload): When adding constant to register, + move the constant into the output, then add the register, rather than + the other way around. + +Mon Jan 8 12:20:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (components): Don't allow to be empty. + (component_decl): Special cases if empty, to call shadow_tag. + Recognize the semicolon here. + (component_decl_list): No semicolon here. + + * c-decl.c (shadow_tag): Print warning if nameless structure defined. + +Sun Jan 7 19:09:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (output_constant): Use size of machine mode + to choose how to output the constant. + + * varasm.c (immed_real_const_1): Detect 1 as well as 0. + + * reload1.c (reload): When deleting reg_equiv_init insn, + also delete the prev insn if it is no longer needed. + + * real.h (REAL_VALUE_FROM_CONST_DOUBLE, CONST_DOUBLE_FROM_REAL_VALUE): + New macros. + + * reload.c (find_reloads_address_1): Preserve original X value + in case we replace it with new memory reference. + + * optabs.c (expand_binop): Handle case of no previous insns. + + * jump.c (jump_back_p): Check for floating point if not IEEE. + + * global-alloc.c (dump_global_regs): Break the line occasionally. + + * flow.c (mark_used_regs): Recognize post-decrement properly. + It looks like (plus REG -CONST), not (minus REG CONST). + Also, patch out old insn as a note in the usual way. + + * calls.c (emit_call_1): Arg to RETURN_POPS_ARGS is FUNTYPE itself. + + * expr.c (STACK_PUSH_CODE): New macro, which config.h can override. + (gen_push_operand): Use it. + (emit_push_insn): Reverse padding if pushing is post-increment. + (expand_expr): For MINUS, sign-extend negated value. + + * emit-rtl.c (init_emit_once): Initialize new variables + fconst1_rtx, dconst1_rtx, dconst0, dconst1, dconstm1. + + * cse.c (fold_rtx): For COMPARE and MINUS, test for floating zero arg. + Also handle equal floating args if FLOAT_NOT_IEEE. + For NEG, eliminate silly temp var. + For MULT and DIV, handle more cases with floating point. + Change division by floating constant into multiplication. + + * config.gcc: Add i386-mach. + * xm-i386.h: Use built-in alloca if compiling with GCC. + + * Makefile.in (c-parse.tab.o): Delete -o switch. + (cexp.o): Put in explicit command. + + * combine.c (record_dead_and_set_regs): Ignore stack pushes. + +Sat Jan 6 15:33:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-mips.c (function_arg, function_arg_advance): + Define typedef for CUMULATIVE_ARGS, and use it here. + + * c-parse.y (yylex): Put 0 at end of wide string. + + * tm-mips.h (CC1_SPEC): Don't distort meaning of -O. + +Fri Jan 5 12:12:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c, expr.h: All use of umul_optab deleted. + * gnulib.c (__umulsi3): Deleted. + + * gcc.c (link_command_spec): If LIBS_COMPILED_WITH_GCC, gnulib is last. + + * Makefile.in (INTERNAL_CFLAGS): New parameter. + (ALL_CFLAGS): New variable, replaces CFLAGS when compiling. + (HOST_CFLAGS): Define from ALL_CFLAGS. + + * Makefile.in (insn-*.o, cccp.o, others): Use CPPFLAGS. + + * Makefile.in (gnulib): Add null command. + +Fri Jan 5 08:11:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst): When applying De`Morgan's law, compute NOT + of constant. + + * integrate.c (save_constants, restore_constants): Clean up fns + by passing in a pointer to an rtx so that insns can be modified + in place. + (save_for_inline): Change call to save_constants. + Apply save_constants to REG_NOTES. + (expand_inline_function): Use emit_move_insn instead of generating + an explicit SET. + Apply copy_rtx_and_substitute to REG_NOTES. + (output_inline_function): Change call to restore_constants. + Apply restore_constants to REG_NOTES. + +Thu Jan 4 23:58:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (c-parse.tab.o): Add explicit compilation cmd. + +Thu Jan 4 22:48:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (insert_regs, insert, use_related_value): Don't assume REG is + first in class. + (HASH): Handle register with HASHREG macro for speed. + (insert): No longer need equivalence_only. + Use COST macro. + (use_related_value): No longer need to check for valid address. + (find_best_addr): New function. + (fold_rtx): Remove copyflag argument and replace with insn. + Check for common cases before making recursive call. + Call validate_change to ensure change is valid, but always return + simplified expression. + Replace operand with folded operand, or constant operand, whichever + is cheaper and is valid. + Call find_best_addr for MEMs. + (fold_cc0): Add insn operand to pass to calls to fold_rtx. + (cse_insn): Rework to enumerate all possible equivalences and replace + source with cheapest valid. + Simplify associative operations with constants where an operand is + equivalent to the same operation with another constant. + Use validate_change for all changes. + +Thu Jan 4 17:58:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_end_loop): Put NOTE_INSN_LOOP_CONT at top by default. + + * c-typeck.c (actualparameterlist): + Convert parmnum to origin-1 to print. + + * Makefile.in (USER_H): Add float.h. + +Wed Jan 3 00:27:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib.c (__extendsfdf2): Delete unused var. + + * reload1.c (alter_reg): Undo big-endian conversion from + assign_stack_local. + + * calls.c (store_one_arg): Round size up for move_block_to_reg. + (expand_call): Round up when emitting USE insns. + * function.c (assign_parms): Round size up for move_block_from_reg. + + * Makefile (install): Use nested foreach-loop to expand va*.h. + +Tue Jan 2 16:01:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md (call_value): Ignore calls to __builtin_saveregs. + + * tm-mips.h (STARTING_FRAME_OFFSET): Change from -8 to 0. + (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Use new fns in out-mips.c. + * out-mips.c (prologue_looks, mips_prologue, mips_epilogue): New. + + * gnulib2.c: Everything except arithmetic support moved from gnulib.c. + * Makefile.in (LIB2FUNCS, LIBFUNCS): Likewise. + +Sun Dec 31 20:10:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_common): Declare `code' as char, not int. + +Thu Dec 28 13:49:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (includes): Set variable LIB. Run from `./'. + +Wed Dec 27 18:54:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (eliminate_frame_pointer): Special case for reg = reg2+fp. + + * loop.c (can_eliminate_biv_p, eliminate_biv): If add_val non zero, + it must be a constant or register. + +Wed Dec 27 18:11:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i860.md (load DF constant to reg): Typo: extra percent sign. + (floatsidf2): Two words of a double were backwards. + +Mon Dec 25 16:32:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * emit-rtl.c (emit_note_before): New function. + * stmt.c (expand_end_loop): Output NOTE_INSN_LOOP_CONT if none. + ** Above change turned off. + +Mon Dec 25 00:02:31 1989 Torbj|rn Granlund (tege at zevs.sics.se) + + * tm-pyr.h (CONST_COSTS): Define more optimal costs. + + * tm-pyr.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Should not be defined. + The cvtdw instruction causes a trap for floating point values + that are out-of-range for a signed int. + + * tm-pyr.h (CONST_DOUBLE_OK_FOR_LETTER_P): Don't accept any + special constraint chars, since we don't use any. + + * tm-pyr.h (CONSTANT_ALIGNMENT): Correct comment. + + * out-pyr.c (weird_memory_memory): Flush decl of unused variables. + + * out-pyr.c (has_direct_base): Don't accept 0 as a base, if there + is a register displacement. This is a workaround of a bug in + /bin/as. (/bin/as changes things like "cmpw 8(reg),0(reg)" into + "cmpw 8(reg),(reg)", which is invalid assembler.) + +Sun Dec 24 12:01:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_struct): Ok to define nameless union in parms. + * c-typeck.c (compparms): Allow union vs its member's type, + but only if same size & union is nameless. + (comptypes): In that case, for a parm, prefer the member's type. + (actualparameterlist): Nameless union parm casts all its memb types. + + * integrate.c (copy_decl_tree, copy_parm_decls): Set TREE_INLINE. + * c-decl.c (pushdecl): No shadow-warning if TREE_INLINE is set. + + * dbxout.c (current_sym_code): Declare as enum; avoid warnings. + +Sat Dec 23 10:54:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Under NOT, move it inside AND and IOR. + Under XOR, move NOT out. + + * toplev.c (set_target_switch): Handle multiple entries for one name. + + * ns32k.md (adjust stack): Distinguish processor subtype at run-time. + (extract byte from register): Likewise. + * tm-ns32k.h (TARGET_32532, TARGET_32332): New target options. + * tm-encore.h, tm-sequent.h (TARGET_DEFAULT): Default them. + +Fri Dec 22 20:33:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (all): Move above where make-MACHINE is inserted. + (all.internal): Definition of `all' indirects through this. + (GNULIB): Variable allows rule for gnulib to be redirected. + (gnulib.portable): Name for the standard rule for gnulib. + + * tm-mips.h (ASM_OUTPUT_SOURCE_FILENAME): New macro. + (REG_CLASS_SUBUNION, REG_CLASS_SUBCLASSES, REG_CLASS_SUPERCLASSES): + Obsolete macros deleted. + +Thu Dec 21 16:20:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (fold): Bug taking assignments out of conversions: + Use language-independent method. + + * reload1.c (alter_reg): + Always do big-endian correction on slot address. + + * i386.md (float push recognizers): Don't pop fpreg if not dead. + +Wed Dec 20 10:54:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * assert.h: Cast value to void. + +Tue Dec 19 09:42:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (link_command_spec): Put %l first. + +Tue Dec 19 08:59:43 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) + + * genattrtab.c (get_attr_value): Initialize has_asm_insn field when + making a new attr_value. + +Sun Dec 17 12:06:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (digest_init, process_init_constructor, store_init_value): + Give error for each invalid element seen in an initializer. + New arguments say whether context wants error messages. + * c-parse.y (cast_expr): Pass new args. + * Unfortunately, this doesn't do the job, since the whole initializer + is parsed before any is digested. + + * c-decl.c (duplicate_decls): Source loc of definition is + more important than that of declaration. + + * cccp.c (include_defaults): On unos, also search /include. + + * m68k.md (movsi, movhi, store-0 recognizer): Conditional for CRDS. + (mulhi3, mulhisi3, umulhi3, umulhisi3): Add % and CRDS conditional. + (zero-extend recognizers): Put % before period in clr insns. + (divide and modulus recognizers): Likewise for and, ext, swap and div. + (dbra recognizers): Likewise for sub and clr insns. + (tablejump recognizer): Conditional for CRDS. + * tm-crds.h, xm-crds.h: New files. + + * gcc.c (read_specs): Don't include trailing newline in data + read from specs file. + (skip_whitespace): Empty line is a delimiter in specs data. + + * cccp.c (grow_outbuf): Change value back to int. + + * cse.c (cse_end_of_basic_block): Fix unterminated comment. + + * cccp.c (main): Add `.C' as known suffix for deps output. + + * expr.c (do_jump): Cast vector length to int in case will subtract. + + * tm-att386.h (ASM_OUTPUT_LOCAL): Revert last change: put it data seg. + + * reload.c (decompose): Make a separate case for SUBREG. + + * Makefile.in (HOST_RTLANAL): Define like HOST_RTL. + (genattrtab): Use that to get at rtlanal.o. + ($(HOST_PREFIX_1)rtlanal.o): New rule for cross-compilation. + (STAGESTUFF): Typo in stamp-attrtab.c. + + * tm-hp9k320.h (CPP_PREDEFINES): Add __hp9000s300, _HPUX_SOURCE. + + * stupid.c (reg_order): Make it int, in case reg # is large. + (stupid_reg_compare, stupid_life_analysis): Implement this. + + * gnulib2.c (__floatdidf): Define WORD_SIZE. + + * flow.c (find_basic_blocks): Don't clobber stack if no basic + blocks. + +Sat Dec 16 12:38:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (can_eliminate_biv_p, eliminate_biv): Check in case + neither side of a compare is the biv by itself. + (check_eliminate_biv): Test of only_reg_use_p was backwards. + (general_induction_var): If V is 0 and G is not, + combine additive terms with plus_constant, provided + either one of them is an integer. + Check both operands of a sum for being givs in their own right. + (strength_reduce): When eliminating a biv, don't mung insns that use + it via a giv that will be handled later. + (loop_skip_over): Duplicate an endtest that takes several insns. + + * loop.c (strength_reduce): When writing insn to init a biv, + update life range of reg used to init it. + + * combine.c (try_combine): Do combine (y = x, x = y). + + * loop.c (strength_reduce): When finding initial value of a biv, + notice assignments to subregs of it, etc. + + * m68k.md (all shift patterns): Require register_operand for ops 0, 1. + + * reload1.c (alter_reg): + Don't set spill_stack_slot_width if from_reg is -1. + + * cse.c (cse_main): Delete local redef of flag_cse_follow_jumps. + + * reload1.c (new_spill_reg): Fatal error if fixed reg is spilled. + (order_regs_for_reload): Make sure all the regs are in spill_regs. + + * mips.md (movsf): Fix wrong opcode moving genreg to fpreg. + + * toplev.c: Undef FFS after including param.h. + + * final.c (final_scan_insn): Delete label reinsert_compare. + + * expmed.c (store_bit_field): Move var value1 inside HAVE_insv. + (extract_bit_field): Similar for bitsize_rtx, bitpos_rtx. + + * c-typeck.c (pointer_diff): Delete unused var. + * expr.c (emit_push_insn): Likewise. + * gcc.c (execute): Likewise. + * genrecog.c (try_merge_2): + * loop.c (skip_consec_insns, scan_loop): + * recog.c (asm_noperands, memory_operand): + * function.c (expand_function_end): + * stmt.c (emit_jump_if_reachable): + * toplev.c (error_for_asm): + * varasm.c (assemble_string): + + * integrate.c (fp_addr_p): Var deleted. + + * regclass.c (regclass_init): Now returns void. + * emit-rtl.c (emit_insns): Likewise. + * stmt.c (emit_nop): Likewise. + * out-sparc.c (output_eager_then_insn): Likewise. + + * reload1.c (reload_reg_reaches_end_p, reload_reg_free_before_p): + (reload_reg_free_p): Abort if switch drops through. + + * cccp.c: Supply a return type for every function (usually void). + (grow_outbuf): Now returns void. + (line_for_error): Abort if the loop terminates. + * gcc.c: Supply a return type for every function (usually void). + + * jump.c (jump_optimize): Leave block-beg, block-end notes + in old context when swapping two ranges of insns. + (squeeze_block_notes): New function. + + * calls.c (expand_call): Compute valreg from pointer type + in case of pcc struct return. + + * gnulib2.c (__builtin_saveregs): Use __ names for machine types. + + * fold-const.c (fold): + Move constant out of assignment, within conversion. + +Fri Dec 15 00:42:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (assemble_variable): Use new macro DATA_ALIGNMENT if def. + (get_or_assign_label): Use this instead of CONSTANT_ALIGNMENT. + + * integrate.c (save_constant, restore_constant): Handle naked + constant-pool SYMBOL_REF. + (copy_for_inline, copy_rtx_and_substitute): Ditto. + + * integrate.c (expand_inline_function): + Put caller's line number after inline stuff. + Put callee's line number before parm manipulation. + + * tree.c (make_node): Have a DECL_SOURCE_FILE in every decl. + + * m68k.md (fpa float and float-trunc): Accept general_operand. + + * calls.c (expand_call): Do INIT_CUMULATIVE_ARGS just once. + + * calls.c (expand_call): If struct ret addr is passed as parm, + count it in structure_value_addr_parm. + + * If local-alloc assumes a reg does not conflict, + don't use it as dummy reload. + * local-alloc.c (wipe_dead_reg): Add REG_UNSET note. + * reload.c (find_dummy_reload): Check for that note. + + * jump.c (jump_optimize): Realize that more things can follow + the NOTE_INSN_FUNCTION_END note. Change in two places, + for optimized and one for unoptimized. + +Thu Dec 14 23:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (install, libsubdir): Change $(machine) to $(target). + +Tue Dec 5 07:35:57 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h: Declare emit_jump_insn_before and emit_jump_insn_after. + + * reload.c (reg_class_subset_p): Delete duplicate copy. + local-alloc.c (reg_class_subset_p): Move from here. + regclass.c (reg_class_subset_p): Move to here. + + * combine.c (try_combine): Fix placement and content of LAST_CALL_CUID + test to elminate memory faults. + + * final.c (asm_insn_count): New fn. + (get_length_attr, shorten_branches): Rework length + computation of insns with INSN_CODE == -1. Call above fn to more + accurately obtain length of ASM insn. + + * genattrtab.c (check_attr_value): Allow CONST_INT to specify + numeric values for attributes. Also, prevent memory faults + on errors when ATTR is null. + (make_canonical): Convert CONST_INT to appropriate CONST_STRING. + (write_attr_case): Correctly check for ASM insns. + (make_numeric_value): Generalize to all positive integers. + + * jump.c (jump_optimize): Set JUMP_LABEL on jump added + in "{ ... x = 1;} if (x)" optimization and add to jump_chain. + + * local-alloc.c (no_conflict_p): Tighten up code to prevent + memory faults. + + * reload.c (find_reloads): Fix typo in EXTRA_CONSTRAINT call. + +Tue Nov 28 11:20:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * expr.c (save_noncopied_parts): Rename stack_loc as target. + Make the stack slot address correct. + +Mon Nov 27 15:39:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * math-convex.h: New file. + + * c-decl.c (grokdeclarator): Don't test size of error_mark_node + as type of a field. + +Sun Nov 26 12:36:01 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * tm-mips.h (CONST_OK_FOR_LETTER_P): Delete extra paren. + +Fri Nov 24 12:36:29 1989 Chris Smith (csmith at mozart) + + * tm-convex.h (OVERRIDE_OPTIONS): remove target=host default. + * out-convex.c (override_options): remove. + + * tm-convex.h (*_TYPE_SIZE): define type sizes as the usual values. + * convex.md (movstrictsi): new, for field insertion in DImode regs. + + * tm-convex.h (LEGITIMATE_CONSTANT_P): allow all CONST_DOUBLES. + (PREFERRED_RELOAD_CLASS): reload nonimmediates from memory (NO_REGS). + * convex.md (movdi, movdf): use 'G' to handle nonimmediates. + (anddi3, iordi3, xordi3): allow immediates if high word is identity. + + * convex.md (tstdi): Finally figure out how to allocate a temp reg + in a way that won't get optimized away; remove hardwired use of s1. + + * convex.md (cmpqi): don't sign extend to SImode because operands + might be unsigned. Must compare bytes in registers instead. + + * convex.md (movtf): new. + + * convex.md (ash*, lsh*): rewrite to use shift vs. shiftrt. + Better code because no need to sign or zero extend when going left. + (shift, mask & test peephole): test next_insn_tests_no_inequality. + (similar with lshiftrt): New peephole. + + * tm-convex.h: add g++ defines FASCIST_ASSEMBLER, VTABLE_USES_MASK. + +Sun Nov 26 11:39:13 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * reload.c (decompose): Handle SUBREGs. + +Wed Nov 22 11:26:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * pyr.md (mode conversion peepholes): Set CC_NO_OVERFLOW. + * out-pyr.c (consecutive_operands): Don't expect wrap from reg15 to 16. + + * make-pyr: Find the alloca which comes with the system. + + * tm-mips.h (CONST_OK_FOR_LETTER_P): Define `K'. + (SMALL_INT): Range is 16 bits, not 17. + (SMALL_INT_UNSIGNED): New macro. + * mips.md (andsi3, iorsi3, xorsi3): Use `K', not `I'. + + * mips.md (negsi2): Accept general_operand as input. + + * stor-layout.c (build_int): Defend against negative arguments. + + * varasm.c (MAX_HASH_TABLE): Change to a prime. + +Tue Nov 21 10:58:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md (one_cmpl*): Accept general_operand as input. + +Mon Nov 20 11:18:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (emit_cmp_insn): New arg, COMPARISON. + (emit_float_lib_cmp): New subroutine, handles soft-float comoare + of floating point values. Chooses ibrary fn from COMPARISON. + * expr.c, expmed.c, stmt.c, optabs.c: All calls changed. + * gnulib.c (__eqdf2, __nedf2, __gtdf2, etc.): New functions. + (__eqsf2, __nesf2, __gtsf2, etc.): New functions. + + * cse.c (fold_rtx): Simulate negative shift counts. + +Sun Nov 19 14:36:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-pyr.c (notice_update_cc): Set CC_NO_OVERFLOW in many cases. + + * cse.c (fold_rtx, fold_cc0): Handle float trap. + +Sat Nov 18 00:17:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (output_constant): Handle float trap in fprintf. + * toplev.c (float_signal): Don't print message. + * fold-const.c (combine): Print it here. + + * sparc.md (extend patterns): Handle CONST_INT as operand. + * out-sparc.c (output_block_move, output_mul_by_constant): + (output_eager_then_insn): Delete unused vars. + + * varasm.c (decode_rtx_const): Add a cast in SYMBOL_REF case. + + * tm-i386.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE) + (INITIALIZE_TRAMPOLINE): New macros. + * i386.md (indirect_jump): New pattern. + + * out-i386.c (singlemove_string): Fix paren error. + +Fri Nov 17 12:19:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_increment): For pre-increment, copy the rtx to return. + + * c-parse.y (compstmt): There may be implicit decls, so check + and maybe keep the level. + + * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): + Use call_used_regs, not a private copy. + +Thu Nov 16 00:28:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c: Keep track of paradoxical subregs of each pseudo, + and make extra stack space for their sake. + (reload): Record max size paradoxical subreg for each pseudo. + (scan_paradoxical_subreg): New subroutine for that. + (reload): Make stack slots big enough for that size. + + * tm-i860.h (ASM_DECLARE_FUNCTION_NAME): Define it, + so we can output a no-op before each function. + + * tm-pyr.h (INIT_CUMULATIVE_ARGS): Simplify. + Pass function type to aggregate_value_p. + + * fold-const.c (fold): + For foo++ > const, don't change if foo++ could overflow. + + * loop.c (eliminate_biv): + Fix typo; check both coeffs when comparing givs. + +Wed Nov 15 00:12:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdbout_end_function, sdbout_end_block, sdbout_begin_block): + Don't allow line numbers < 1. + + * integrate.c (copy_for_inline): `break' was missing for case 'u':. + + * sdbout.c (plain_type_1): Output .dim X,Y...; for multi-dim array. + (sdbout_array_dim): New recursive subroutine. + (PUT_SDB_DIM): Macro eliminated. + (PUT_SDB_START_DIM, PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM): New macros. + * tm-3b1.h: Override PUT_SDB_START_DIM. + + * jump.c (delete_insn): Extra test for PREV != 0. + +Tue Nov 14 17:31:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-m68k.h (WORDS_BIG_ENDIAN): Define it. + * out-m68k.c (output_move_double): Adapt CONST_DOUBLE case to that. + + * varasm.c (decode_rtx_const): For SYMBOL_REF, use addr of string. + + * tm-pyr.h (INIT_CUMULATIVE_ARGS): + If -fpcc-struct-return, always do the scalar thing. + + * tm-sun3.h (LINK_SPEC): Specify -L to control choice of -lm. + + * function.c (expand_function_end): Use FUNCTION_OUTGOING_VALUE. + +Sat Nov 11 00:18:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * calls.c (prepare_call_address): If NO_RECURSIVE_FUNCTION_CSE, + don't do function cse on calls to same function. + (emit_call_1): Don't call memory_address for SYMBOL_REF. + + * tm-att386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE. + (ASM_OUTPUT_LOCAL): Likewise. Also, generate .lcomm + rather than a .data area symbol. + * tm-sun386.h: Likewise. + + * tm-bsd386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE. + (ASM_OUTPUT_LOCAL): Likewise. + + * cexp.y (parse_escape): Delete unused var `count' from case 'x'. + +Fri Nov 10 15:04:15 1989 Richard Stallman (rms at rice-chex) + + * caller-save.c (emit_mult_restore, emit_mult_save): + Improve arithmetic for address to save at. + +Thu Nov 9 00:14:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-pyr.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): + Don't use obsolete pushw and popw insns. + (ASM_OUTPUT_ALIGN): Ensure arg in range 2 to 5. + * pyr.md (tstdi): Pattern deleted. + (SImode test recognizer): Output ucmpw if jump is unsigned. + + * out-sparc.c (operands_satisfy_eager_branch_peephole): + Check for moves between FP and non-FP regs; they take two insns. + * sparc.md (eager branch peepholes): Likewise. + (Ordinary delayed branch peepholes): Similar check. + * out-sparc.c (single_insn_extra_test): New subroutine. + + * final.c (final_scan_insn): + Rearrange to avoid calling BLOCK_PROFILER for a jump table. + + * reload1.c (choose_reload_regs): Split up a hairy if. + +Wed Nov 8 00:48:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * calls.c (expand_call): Handle UNNAMED_ARGS_IN_REGISTERS. + + * toplev.c (main): Handle -gsdb to make sdb output when that and dbx + are both supported. + + * combine.c (subst): In (sign_extend:M (subreg:N (and:M .. ) 0)) + insist that constant be positive in mode N. + Also test mode N in similar zero_extend case. + + * c-typeck.c (build_modify_expr): When assigning to COND_EXPR + put cast to void around precomputed rhs. + + * calls.c (emit_call_1): Make funexp a valid address. + +Tue Nov 7 18:57:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_move_insn): If args in memory, make addresses valid. + + * rtl.h: Undefine FFS in case it was defined by the system. + + * c-parse.y (combine_strings): Ignore warn_write_strings + if -traditional or -fwritable-strings. + + * Makefile.in (gnulib2): Fix syntax in shell conditionals. + + * stmt.c (expand_return): Handle COND_EXPR specially. + +Mon Nov 6 14:43:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_float): Check sign of FROM; may be faster than TO. + + * fold-const.c (fold): If REAL_INFINITY, allow division by zero. + * tm-sun3.h (REAL_INFINITY): Define it. + + * tm-i860.h, tm-m88k.h, tm-pyr.h, tm-spur.h (INIT_CUMULATIVE_ARGS): + Test aggregate_value_p, not just BLKmode. + + * gnulib2.c (__builtin_saveregs): Moved from gnulib.c. + Code added for mips. + + * pyr.md (conditional branch recognizers): Don't simplify if not -O. + + * out-pyr.c (extend_and_branch): Handle two constant operands. + + * integrate.c (function_cannot_inline_p): Don't inline if alloca used. + +Sun Nov 5 02:59:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Always make a LET_STMT and notes for the top level of a function + if it has any subblocks. + * c-decl.c (struct binding_level): New field keep_if_subblocks. + (poplevel): Obey the new field. + (keep_next_if_subblocks): New variable. + (pushlevel): Use that variable. + (store_parm_decls): Set that variable. + (compstmt): Pass nonzero to expand_end_bindings + for the new kept binding levels. + (kept_level_p): New function. + + * xm-mips.h: Define USE_C_ALLOCA if compiling with CC. + + * tm-alliant.h (CHECK_FLOAT_VALUE): Define this. + + * calls.c (expand_call): Make valreg 0 if passing structure address. + +Sat Nov 4 23:27:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * caller-save.c (emit_mult_save, emit_mult_restore): + Test regs for suitability as address before using as temps. + + * cccp.c (make_definition, do_define): Better error checks for name. + +Fri Nov 3 01:05:04 1989 Torbj|rn Granlund (tege at echnaton) + + * pyr.md (tstdi): New pattern. Use 64-bit shift with count zero. + + * tm-pyr.h: -mretd pops args with the retd insn. + + * pyr.md (peep-holes for loop optimizations): Use the R output + format in PRINT_OPERAND, don't use output_branch. + * out-pyr.c: No need for functions output_branch, output_inv_branch. + + * tm-pyr.h (ASM_OUTPUT_ALIGN): Don't truncate alignment to two. + +Wed Nov 1 00:38:27 1989 Torbj|rn Granlund (tege at echnaton.sics.se) + + * out-pyr.c (output_inv_branch): When reversing test operands, ne + remains ne, and eq eq eq. + + * pyr.md: Cleanup output code for compare patterns. + + * pyr.md (return): Adjust frame pointer if + current_function_pretend_args_size != 0. + + * pyr.md (extendsidi2): Use general_operand for the input operand. + + * pyr.md, out-pyr.c: Output shift insns with output_shift. + + * tm-pyr.h, out-pyr.c: Make NOTICE_UPDATE_CC understand how + condition codes are really set. Define flag CC_VALID_FOR_UNSIGNED + with to make it possible not to reset cc after each compare or + test. + * pyr.md: Don't use CC_STATUS_INIT for most patterns. + + * out-pyr.c (already_sign_extended): Cleanup, correct, optimize. + + * out-pyr.c: rename radr_diff to constant_diff. + + * out-pyr.c (movdi_possible): Don't combine moves from memory to + memory, because of possible address aliasing. Don't combine moves + with register destination if the source operands are depending on + the destination of the first move, as in + + movw (pr3),pr3 + movw 4(pr3),pr4. + + * out-pyr.c (consecutive_operands): Handle SUBREG in addition to REG. + + * out-pyr.c (output_move_double): movl of immediate *sign* extends. + +Tue Oct 31 22:51:39 1989 Torbj|rn Granlund (tege at echnaton.sics.se) + + * pyr.md (cmpsi): Don't expand this. It's just slower. + + * out-pyr.c (extend_and_branch): Handle only QImode and HImode. + Flush code specific for SImode. + + * out-pyr.c (extend_and_branch): To make zero extensions to HImode + of constants not crash: + * out-pyr.c (ensure_extended): Call extend_const if it's a + CONST_INT. Don't call extend_const from extend_and_branch. + * pyr.md, out-pyr.md: Use global variable test_mode to determine the + mode of tests and compares. Set in define_expands for tests and + compares. Used in extend_and_branch. + * out-pyr.c: Pass mode between extend_and_branch and ensure_extended. + + * out-pyr.c (extend_and_branch): Accept SUBREG whereever REG is + accepted. + * out-pyr.c (weird_memory_memory): Accept SUBREG whereever REG is + accepted. + +Thu Nov 2 16:23:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (lshrdi2, and other shifts): Take second arg as long long. + + * combine.c (subst): + Simplify (zero_extract (subreg:SI (lshift:QI (mem:QI ...)) 0) ...) + + * expr.c (do_jump): Don't discard NOP_EXPR from around COMPONENT_REF. + Put one on, if that allows extracting the component in natural mode. + + * final.c (get_attr_length): Omit the body if no length attribute. + + * Makefile.in (genattrtab): Use host-rtlanal.c as dep and to link. + (insn-attrtab.o): Use $(INCLUDES). + + * cse.c: Include stdio.h. + + * c-decl.c (finish_enum): Local `value' was declared and set wrong. + + * Makefile.in (gen*.o): Find source files in $(srcdir). + (LIBDEPS, HOST_LIBDEPS): Don't use USE_ALLOCA. + +Wed Nov 1 00:05:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (init_function_start): Init max_parm_reg. + + * varasm.c (compare_constant_1): For ADDR_EXPR, compare symbol name. + For PLUS_EXPR, etc., don't record code twice. + (record_constant_1): Likewise. + + * expr.c (expand_assignment): Allow for overlap when storing into a + structure value area supplied by the caller. + + * cse.c (remove): Handle an elt in the wrong bucket. + + * function.c (fixup_stack_1): Avoid using move insn for address arith. + + * out-sparc.c (output_mul_by_constant): Constant zero is legitimate. + + * caller-save.c (emit_mult_restore, emit_mult_save): + Handle stack addresses which are invalid. + + * cse.c (use_related_value): Don't abort if offset is 0. + +Tue Oct 31 15:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (pyramid): Set $machine to pyr. + + * calls.c (expand_call): Don't OK_DEFER_POP in is_const case. + +Mon Oct 30 17:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (shorten_branches, init_insn_lengths): + Define unconditionally; conditionalize the contents, perhaps. + +Mon Oct 30 03:23:52 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (shorten_branches): New function. + (init_insn_lengths, get_attr_length): New functions. + * function.c (init_function_start): Call init_insn_lengths. + * recog.c (constrain_operands): Call alter_subreg if nec. + * toplev.c (rest_of_compilation): Call shorten_branches. + (compile_file): Init and print shorten_branch_time. + +Mon Oct 30 03:23:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (spill_regs): Make it short, not char. + +Sun Oct 29 00:53:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (final_scan_insn): Delete no-op moves, even without -O. + + * c-parse.y (yylex): Prevent warning for numbers that underflow. + + * stmt.c (assign_parms): Convert stack addresses to valid addresses. + (validize_mem): New subroutine. + + * c-decl.c (finish_enum): If -fshort-enums, round size up to match + some ordinary C integer type. + Compute precision properly when some values are negative. + Make type double precision when necessary. + + * c-decl.c (lang_decode_option): Accept and ignore -fnotraditional. + + * gcc.c (default_compilers): Pass -ftraditional to cpp as -traditional. + + * DOLLARS_IN_IDENTIFIERS now has three values. 1 is now the default. + It means enable $ only with -traditional. 2 means enable unless -ansi. + * c-decl.c (lang_decode_option): Implement that. + * cccp.c (main): Likewise. + * tm-vms.h, tm-apollo68.h, tm-convex.h, tm-next.h: + Define DOLLARS_IN_IDENTIFIERS as 2. + * tm-pyr.h: Define it as 0. + * cexp.y (initialize_random_junk): Test DOLLARS_IN_IDENTIFIERS + for nonzeroness. + + * stmt.c (check_for_full_enumeration_handling): Accept enum type + as argument (since was finding it incorrectly). + Delete special case for constant index. + (expand_end_case): Pass enum type; check for constant index. + +Sun Oct 29 00:53:46 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (force_const_double_mem): Remove redundant code. + (record_constant_rtx): Use normal obstack since temporary data. + (force_const_mem): Don't output constant immediately. Instead, + save it for new fn to write. Also, make hash table mapping + internal label to desired constant. + (output_constant_pool): New fn to write constant pool. + (assemble_function): Call it. + (init_const_rtx_hash_table): Initialize new hash table and pool + chain and offset. + (find_pool_constant): New fn to map internal label SYMBOL_REF to + data about constant. + (get_pool_constant, get_pool_mode, get_pool_offset): New fns + using above fn to return data about constant pool labels. + * rtl.h: Define last three new fns. + + * integrate.c (save_constants): New fn to convert constant pool + references to recognizable representation of constant that was + being used. + (save_for_inline): Call it. + (copy_for_inline, output_inline_function): Undo this for copy to + be compiled. + (restore_constants): New fn used in output_inline_function. + (copy_rtx_and_substitute): Make new constant pool entries for + constants in pool when fn was inlined. + + * cse.c (cse_end_of_basic_block): Optionally make a "basic block" + that follows branches. Now takes previous block as argument and + computes which branch to follow/fall through next. + (cse_main, cse_basic_block): Make compatible with above. + + * toplev.c: Add new flag, -fcse-follow-jumps. + (rest_of_compilation): Pass dump file to cse_main. + + * flags.h: Add flag_cse_follow_jumps. + +Sat Oct 28 01:24:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (emit_cmp_insn): Default MODE before computing CLASS. + +Fri Oct 27 16:25:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-next.h (__inline): define as macro for old 1.34 Next uses. + +Thu Oct 26 01:05:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md (compare/branch peepholes): Combine using match_operator. + * out-mips.c (relop, frelop, frelop_reversed): New functions. + * tm-mips.h (PRINT_OPERAND): New codes `C' and `N' for comparisons. + (ASM_OUTPUT_SOURCE_LINE): Output .loc--MIPS likes that. + (EXTENDED_COFF, NO_UNDERSCORES, USE_COLLECT): Define, for collect.c. + (COFF): Undefine, for collect.c. + + * getattrtab.c: Rename define_asm_insn to define_asm_attributes. + * rtl.def: Likewise. + +Wed Oct 25 00:52:12 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.def: Add new RTL codes for insn attributes. + Change last operand of DEFINE_INSN and DEFINE_PEEPHOLE. + + * rtlanal.c (rtx_equal_p): Add support for "V", "n", and "s" types. + + * genoutput.c (output_epilogue): No longer output machine_info + stuff. + (process_template): New function. + (gen_insn, gen_peephole): Call process_template. + (fatal): Add more args. + + * final.c: Allow called configuration macros to use attribute data. + +Wed Oct 25 00:52:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtlanal.c (rtx_equal_p): Handle operand types n, V, S. + + * optabs.c (floattab): Record unsigned-float insns. + (can_float_p): New arg UNSIGNEDP. + (expand_float): Use those insns if available. + +Tue Oct 24 19:23:11 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattr.c, genattrtab.c: New files. + * Makefile.in (insn-attr.h, insn-attrtab.c): + New files made by those two. + + * Makefile.in (insn-*.[ch]): Name the temp file `tmp-foo.c', etc., + not `tmp-insn-foo.c'. + + * combine.c (subst): Generalize simplification of + (zero_extend:M (subreg:N (zero_extract:M ...) 0)) and similar. + +Tue Oct 24 19:23:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't move a volatile asm. + +Mon Oct 23 01:45:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't install a subreg relating two modes + that aren't tieable. + + * gnulib2.c (__fixdfdi): Declare __fixunsdfdi. + + * combine.c: Make uid_cuid an int *. + (combine_instructions): Allocate as such. + * loop.c: Make uid_luid an int *. + (loop_optimize): Allocate as such. + +Sun Oct 22 20:35:55 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Call simplify_set_cc0_and for SIGN_EXTEND. + (subst): Start by putting constant last in commutative operations + and convert MINUS of a constant to PLUS. + Put CONST around any PLUS with 2 constants. + Simplify (minus (and (const_int -pow2))). + Handle (zero_extend (and ...)) when the and is nontrivial. + Convert (XOR (NOT x) (NOT y)) to (XOR x y). + Simplify (abs (neg )). + Simplify abs of something known positive. + Handle (zero_extend (truncate...)) using gen_lowpart. + Do it for sign_extend too. + Simplify (ZERO_EXTRACT (AND x) ...). + Simplify (ZERO_EXTRACT (ZERO_EXTEND z) ...), etc. + Extend "Extracting a single bit from result of shift" to SIGN_EXTRACT. + (ashiftrt (*shift ) ) can be (sign_extend ) + (lshiftrt (*shift ) ) can be (zero_extend (subreg )) + Do (lshift (sign_extend )) on non-regs using gen_lowpart. + Eliminate AND in (lshift (and ) ). + Use gen_lowpart in (lshift:m1 (zero_extend:m2 ) ). + Use gen_lowpart in (and x const) => (zero_extend (subreg x 0)). + (simplify_set_cc0_and): Ignore outermost SIGN_ or ZERO_EXTEND. + Handle constant bit number. + Try to get into SImode for bitfield jumps. + + * recog.c (apply_change_group, validate_change): New functions. + +Sat Oct 21 00:51:49 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_end_of_basic_block): Optionally make a "basic block" + that follows branches. Now takes previous block as argument and + computes which branch to follow/fall through next. + (cse_main, cse_basic_block): Make compatible with above. + + * cse.c (new_basic_block): Don't assume sizeof (rtx) == sizeof (int). + + * cse.c (make_new_qty, canon_hash): Add sanity checks. + + * cse.c (lookup_as_function): Don't assume VOIDmode == 0. + + * cse.c (exp_equiv_p): For commutative operations, check both orders. + Detect unexpected operand-type letters. + Mode is significant for all codes. + + * cse.c (fold_rtx): CONST_DOUBLE can also appear in DImode. Verify + that floating-point is used before folding it. + Verify that the host's INT width is wide enough to do folding. + + * cse.c (cse_insn): Treat each component of PARALLEL exactly the same + way as if it were standing alone. + + * combine.c (combine_instructions): If an insn explicitly references + CC0, try to combine it with the previous insn. Also, enable + combining an insn with two different insns whose results it uses. + + * combine.c (try_combine): Ignore USE or CLOBBER parallel parts in + I2 and I1 as they are not functional. + +Sat Oct 21 00:51:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-pyr.c (extend_and_branch): Allow SUBREG like REG. + * pyr.md (mem-reg and reg-mem HI, QI patterns): + Don't match unless one arg is MEM. + +Sat Oct 21 00:28:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_decl): No more need to avoid >1 wd in one reg. + + * tree.c (build_index_type): Copy precision from sizetype. + + * reload.c (find_reloads_toplev): Don't truncate constant if bigger + than host word size. + + * gnulib2 (__floatdidf, __fixunsdfdi): Use WORD_SIZE, not BITS_PER... + (WORD_SIZE): # of bits in a `long' on the target. + + * genextract.c (gen_peephole): Use sizeof (rtx) copying operands. + + * fold-const.c (force_fit_type): Use POINTER_SIZE for pointers. + + * final.c (end_final, final_scan_insn): In sizes and aligns of + profiling vars and tbls, use INT_TYPE_SIZE for size of an int, + or give max alignment. + + * expr.c (do_jump): Comparing constant arg vs 0, take # sig bits + from mode of data type. + + * gcc.c: Add CC1PLUS_SPEC like CC1_SPEC. + (validate_all_switches, do_spec_1, process_command, read_specs): + Handle it. Use %2 to use it. + (default_compilers): Pass %2 to cc1plus. + + * out-sparc.c (output_fp_move_double): Use ldd only when safe, + on same conditions used for std. + + * Makefile.in (USE_ALLOCA): New var is $(ALLOCA) if compiling with + cc, null otherwise. Use this to refer to alloca. + + * Makefile.in (gnulib): Test vrbl HPUX_GAS to decide whether to run + hpxt instead of ranlib. + (stamp-gnulib2): Don't ranlib if HPUX_GAS. + * make-hp9kgas: New file, sets HPUX_GAS. + +Fri Oct 20 13:33:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (store_bit_field, extract_bit_field): + Use mode whose size is UNITS_PER_WORD for struct in reg. + (store_fixed_bit_field, extract_fixed_bit_field): + Handle bigger constant masks. + (mask_rtx, lshift_value): New subroutines. + + * c-parse.y (combine_strings): Use correct width of `int'. + + * varasm.c (make_decl_rtl): Warn for volatile explicit register vars. + +Fri Oct 20 00:27:00 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (reload_as_needed): Set new variable reload_in_progress + and clear it after reload complete. + + * reload1.c (choose_reload_regs): + Don't count deleted reloads vs number of spill regs. + + * reload1.c (choose_reload_regs): Arg of HARD_REGNO_MODE_OK + was the pseudo; should be the reload reg. + + * reload1.c (gen_input_reload): Don't generate a move with a PLUS + as an operand. + + * reload.c (find_reloads): Ignore unconstrained operands + when looking for conflict with an earlyclobber. + + * reload.c (subst_indexed_address): + Replace and canonicalize more thoroughly. + (form_sum): New subroutine. + + * out-i386.c (singlemove_string): Handle ordinary constants as input. + + * tm-decstatn.h (CPP_PREDEFINES): Add bsd4_2, ultrix, MIPSEL, + host_mips, R3000, LANGUAGE_C, SYSTYPE_BSD. + * tm-mips.h (CPP_PREDEFINES): Add host_mips, R3000, MIPSEB, LANGUAGE_C. + (CPP_SPEC): Remove those from here. + Define __SYSTYPE_*__ always. Define SYSTYPE_* only if not -ansi. + No CPP_SPEC needed for decstation. + Correct typos in option tests. + + * c-parse.y (unary_expr): Handle EXTENSION here, not in primary. + +Thu Oct 19 18:16:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-m68k.h, tm-alliant.h (PRINT_OPERAND): + Don't print :l for address if :w was already printed. + + * Allow elided braces with unions. + * c-typeck.c (digest_init): Treat unions more like records. + (process_init_constructor): Handle union types. + + * c-parse.y (program): Pedantic warning for empty file. + +Wed Oct 18 22:28:21 1989 Torbj|rn Granlund (tege at echnaton.sics.se) + + * out-pyr.c (extend_const, extend_and_branch): Make sure all const + are CONST_INT. + + * out-pyr.c (movdi_possible): Handle combination of two immediate + moves correctly. (Pyramid immediate move to a DImode operand + (movl) work by SIGN extension of the 32 bit immediate source.) + * Handle CONST tagged addresses. + + * out-pyr.c (already_sign_extended): Skip harmless JUMP_INSN when + scanning after extension insn. + * Check for right mode of extension. + * Delete redundant register number test. + + * pyr.md (anonymous SImode test pattern): Predicate need to accept + any operand that can be generated for corresponding compare. Used + to reject "foo(p) int *p {int a=0; return *p==a;}". + + * pyr.md (shift patterns): Condition bogus if no insn really output. + + * pyr.md: Flush obsolete comment about conversion. + + * tm-pyr.h (FUNCTION_PROLOGUE): Don't really set up a frame pointer + if it's never referenced. Also, don't round up frame size to a + multiple of 32, since input args and alloca nevertheless breaks + such alignment attempts. + * tm-pyr.h (FUNCTION_EPILOGUE): Goodbye. Use (define_insn "return" + ..) in md instead. + * pyr.md (return): Use "ret" or "retd" depending on the existense + of a freme pointer. + * tm-pyr.h (EXIT_IGNORE_STACK): Ensure the stack pointer is + preserved even when the frame pointer is not really set up. + + * pyr.md: Reinsert move-and-test peep-hole optimization. + + * pyr.md: Flush silly peep-hole optimizations for loops. They were + inverted optimizations. + + * tm-pyr.h (NOTICE_UPDATE_CC): Make it identify the most important + cases when set conditions codes can be used, without an explicit + test. + +Wed Oct 18 13:01:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (default_compilers): Support -E on .h file. + + * tm-mips.h (FUNCTION_PROLOGUE): Get rid of __0__gcc macro. + Store that value in frame_stack_difference. + (FUNCTION_EPILOGUE): Get rid of __0__gcc macro. + (FIX_FRAME_POINTER_ADDRESS): Use frame_stack_difference. + * out-mips.c (frame_stack_difference): Define here. + + * gcc.c (default_compilers): Define __GNUG__ for g++. + +Tue Oct 17 01:17:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i860.h (HAVE_PRE_INCREMENT): Undefine this. + + * mips.md (movsf): New alternatives for r registers. + * tm-mips.h (FUNCTION_PROLOGUE): Handle big stack frames. + * out-mips.c (function_arg): Handle mode distinction for floating args. + + * pyr.md (mtstsw pattern): Accept general_operand. + + * Makefile.in (gcc): Force-move when installing new gcc. + (realclean): Delete Makefile. + + * i860.md (movsf): New alternatives: allow loading r from F. + Prefer f-reg as reload when moving m from F. + * tm-i860.h (PRINT_OPERAND): Handle CONST_DOUBLE if SFmode. + +Sun Oct 15 14:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i860.md (movhi, movqi): Support moves to/from fp regs. + + * stmt.c (expand_goto): USE both stack ptr and static_chain_rtx + just before jumping. + + * sparc.md (tablejump peepholes): Fix paren error that no-op'd them. + + * tm-sparc.h (*TRAMPOLINE*): Defined macros, but defns are wrong. + * sparc.md (indirect_jump): New pattern; plus peepholes. + + * sparc.md (cse'd multiply): New pattern for mult. by -1. + + * out-i860.c (load_opcode, store_opcode): Handle DImode and fp reg. + + * toplev.c (compile_file): Always test TREE_USED and TREE_ADDRESSABLE + in identifier as well as in decl. + * c-decl.c (poplevel): Preserve TREE_ADDRESSABLE from local externs. + * c-typeck.c (mark_addressable): Don't set bit in identifier here. + +Fri Oct 13 00:12:46 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) + + * flow.c (life_analysis): No need to think abt CONSIDER on first pass. + + * flow.c (propagate_block): Remove duplicated code to update OLD. + + * flow.c (mark_set_1): Handle nested SUBREG, SIGN_EXTRACT, + STRICT_LOW_PART, etc. Also, always set subreg_p when setting + a bit field, even if modes are same. + + * expr.c (expand_expr): Check for |= or &= of two bitfields of size 1. + Convert to test followed by assignment. + + * rtl.def (INLINE_HEADER): Correct erroneous field types. + + * rtl.h: Add definitions for saving flags in INLINE_HEADER. + + * emit-rtl.c (gen_inline_header): Correct out-of-date arguments. + Add support for saving flags. + + * integrate.c (save_for_inline): Save function flags. + Update comments. + (expand_inline_function, output_inline_function): Let machine-dependant + code view (or possibly modify) inlined insn, if desired. + + * function.c (assign_stack_local): Don't set frame_pointer_needed or + invalid_stack_slot if assigning zero-sized area. + + * stmt.c (fixup_var_refs_1): If the machine's SIGN_EXTRACT or + ZERO_EXTRACT insns can't accept a memory operand, fix them up. + + * expr.c (do_jump): Look inside EQ_EXPR or NE_EXPR if one arg is 0. + Be smart about PLUS_EXPR, MINUS_EXPR, ABS_EXPR, REFERENCE_EXPR, + NEGATE_EXPR, rotation, CONVERT_EXPR. + + * jump.c (reverse_condition): Make non-static. + (swap_condition): New routine. + + * final.c (alter_cond): Use new swap_condition. + + * expr.c (expand_expr): In cases where a jump will be generated, use + original_target because the registers won't be able to be merged due + to the jump. + + * expr.c (expand_expr): Put constant last for PLUS. + +Fri Oct 13 00:12:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (constrain_operands): Add case for `&'. + + * tm-vax.h (TRAMPOLINE_TEMPLATE): Add a .word 0 at beginning. + (TRAMPOLINE_SIZE): Increase by 2. + (INITIALIZE_TRAMPOLINE): Copy reg mask from pure code to trampoline. + Jump into the pure code after the reg mask. + + * expmed.c (expand_divmod): Use divmod insn for quotient if no div. + + * expmed.c (extract_bit_field): With structure reg fetched from mem, + don't put in subreg if mode already correct. + (store_bit_field): Typo: had extzv, wanted insv. + + * recog.c (init_recog): Set volatile_ok to 1. + (init_recog_no_volatile): Similar, but set volatile_ok to 0. + (recog_memoized): Don't set volatile_ok. + * reload1.c (reload): Call init_recog. + * combine.c (combine_instructions): Call init_recog_no_volatile. + * loop.c (loop_optimize): Likewise. + * cse.c (cse_main): Likewise. + * function.c (expand_function_start): Call init_recog_no_volatile + for the sake of predicates called from optabs.c. + + * toplev.c (compile_file): Warn if fun declared static and used + but never defined. + +Thu Oct 12 01:48:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (macarg1): Count newlines even after backslash. + + * c-decl.c (pushdecl): Don't warn for explicit extern + followed by static. That case is useful for incomplete arrays. + + * c-decl.c (grokdeclarator): Delete some junk about Pmode vs EPmode. + + * tm-sparc.h (SELECT_RTX_SECTION): Test was backwards. + + * reload.c (reg_class_subset_p): New function. + +Wed Oct 11 00:35:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * vax.md (indirect_jump): New pattern. + + * c-parse.y (primary): Turn off pedantic after `__extension__'. + (hash, is_reserved_word, etc.): Recognize `__extension__'. + + * expr.c (emit_library_call, expand_call): Make a SEQUENCE for + any needed USE insns and pass them to emit_call_1. + (emit_call_1): Place the passed SEQUENCE immediately before the + generated CALL_INSN even if gen_call made more than one insn. + + * tm-seq386.h (DBX_DEBUGGING_INFO): Override this. + (HARD_REGNO_MODE_OK): Override this. + + * c-typeck.c (build_conditional_expr): Supply missing layout_decl arg. + + * dbxout.c (dbxout_symbol): Handle nested functions. + +Wed Oct 11 00:35:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c: Update jump_chain when insns change. + (jump_optimize): Leave room in jump_chain for some extra labels. + Record length in max_jump_chain. Check this when updating. + When optimizing jump-to-return, delete from one chain and add to other. + When cross-jumping turns cond jump to simple one, add to new chain. + Zero jump_chain at end, so redirect_jump won't change it further. + (redirect_jump): Delete from one chain, add to another. + (do_cross_jump): Likewise. + (delete_from_jump_chain): New subroutine. + + * cse.c: If `if (x != y) goto l;' fails to jump, assume x==y. + (reg_invaliate): Add new argument for when value isn't + changing, just its class. + (invalidate): Update reg_invalidate call. + (record_jump_equiv): New function. + (cse_insn): Call it. + + * cse.c (cse_insn): Delete previous test based on + prev_insn_explicit_cc0 just as based on prev_insn_cc0. + +Tue Oct 10 00:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (push_reload, combine_reloads): Let two reloads share + if one's regclass is a subset of the other. + + * Makefile.in: What depends in expr.h, depends on insn-codes.h also. + +Mon Oct 9 19:11:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (finclude): Close descriptor as soon as text is read. + Eliminate `success'; return directly after successful processing. + (do_include): Don't close descriptor here. + + * tm-i386.h (REG_CLASS_FROM_LETTER): Don't define `S' letter. + It wasn't used; and now it means something else. + + * tm-ns32k.h (REG_CLASS_FROM_LETTER): Don't define `r' here. + `r' is standard. + +Mon Oct 9 01:09:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (life_analysis): Ignore USEs and CLOBBERs when finding + redundant register copies. + * jump.c (jump_optimize): Do the same thing here. + + * jump.c (mark_jump_label): Loop NOTEs aren't relevant after loop + optimization. + + * integrate.c (copy_for_inline): Correctly handle RTL type "u". + * final.c (output_operand_lossage): Make non-static. + + * recog.c (constrain_operands): Treat N, O, P like I, J, K, L, M. + For Q...U, use EXTRA_CONSTRAINTS if defined. + * reload.c (find_reloads): Likewise. + + * rtl.c (copy_rtx, read_rtx, print_rtx): Handle operand type `V'. + + * rtlanal.c (note_stores): Use variable Y instead of equivalent + slower expression. + + * rtlanal.c (dead_or_set_p): Hard regs don't always have same RTX. + + * rtlanal.c (may_trap_p): Don't use const0_rtx here. + So we can use this file in programs that don't have const0. + +Mon Oct 9 01:09:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Support language-specific tree codes. + * tree.c (standard_tree_code_type, standard_tree_code_length): + Renamed tables. tree_code_type and tree_code_length are now pointers. + * tree.c (init_tree): Copy the tables to allocated memory. + * tree.c (tree_code_name): Move here from print-tree.c + and define like tree_code_type. + + * rtl.c (print_rtl): Handle 0 as operand. + + * emit-rtl.c (save_emit_status): Don't call init_emit here. + * function.c (push_function_context): Do it here. + + * emit-rtl.c (reinstate_emit_status): New function. + * function.c (trampoline_address): Use this around + INITIALIZE_TRAMPOLINE. + + * function.c (trampoline_address): Use fp->tail_recursion_reentry + when trampoline is in outer function. + + * Save and restore stack levels in nonlocal gotos. + * function.c: New variable nonlocal_goto_stack_level. + (init_function_start, push_function_context, pop_...): Init, push, pop. + (delete_handlers): Delete insns to set or use this slot. + * stmt.c (declare_nonlocal_label): Create this stack slot. + (expand_goto): Restore stack ptr from it. + (expand_end_bindings, expand_decl): When setting stack ptr, + store new value here. + * expr.c (expand_builtin): Likewise, for alloca. + * calls.c (expand_call): Likewise. + + * varasm.c (make_function_rtl): Rename nested functions for assembler. + * c-decl.c (start_function): Clear TREE_PUBLIC for nested function. + + * tm-i860.h (*TRAMPOLINE*): Define macros. + + * i860.md (movdi): accept F source in 2nd alternative. + Accept G source in 3rd. + (adddi3, subdi3): Typo in opcode of output. + + * i860.md (indirect_jump): Added pattern. + + * c-decl.c (lookup_label): Shadow label if it's wrongly inherited. + Set DECL_CONTEXT here, since nondeclared labels must be local. + +Sun Oct 8 01:38:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * function.c (expand_function_start): Copy static chain to pseudo + reg if chain is used. + + * tm-mips.h (ASM_SPEC): Pass -nocpp to as. + + * c-decl.c (grokdeclarator): Ignore variant differences + when preserving typedef types from being altered. + + * Allow inner label scopes for ({...}). + * c-decl.c (push_label_level, pop_label_level): New functions. + * c-parse.y (stmt exprs): Call them. + + * c-decl.c (lookup_label): Set DECL-SOURCE-LINE to locus of reference. + (poplevel): Use locus of reference in err msg for undef label. + (define_label): Use DECL_INITIAL as flag that label has been defined. + + * function.c (expand_end_function): Delete nonlocal goto handlers + if no nonlocal gotos are actually received. + (delete_handlers): New function. + + * flow.c (find_basic_blocks): Treat blocks as reachable + if headed by labels with LABEL_PRESERVE_P. + (insn_dead_p): Don't delete insns to set the frame pointer or arg ptr. + + * m68k.md (indirect_jump): New pattern. + +Sat Oct 7 00:46:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (lookup_label): If label is nonlocal and wasn't declared so, + report error and return 0. + (shadow_label): New function. + * c-parse.y (goto stmt): Handle 0 returned by lookup_label. + (label_decl, label_decls): Parse forward-declarations of labels. + (pushlevel): Allow label declarations at start of compound stmt. + + * rtl.h (LABEL_PRESERVE_P): New flag in CODE_LABEL. + * jump.c (jump_optimize): Increment LABEL_NUSES if that flag is set. + + * stmt.c (any_pending_stack_level): New function. + (expand_end_bindings): If block has stack level or cleanups, + and this function has any nonlocal labels, make a nonlocal goto handler + for the block, and put it in effect during the block. + Set LABEL_PRESERVE_P on the handler's label. + (expand_goto): For a nonlocal label, restore its stack frame + and jump to current handler. + + * function.c: New var nonlocal_labels lists labels ok for nonlocal. + Initted in init_function_start, pushed and popped with fcn context. + * stmt.c (declare_nonlocal_label): Put a LABEL_DECL on this list. + + * output.h: Declare current_function_has_nonlocal_label + and sdb_begin_function_line. + * final.c: Don't declare them. + + * function.c (current_function_has_nonlocal_label): New var. + (init_function_start): Init it. + (push_function_context, pop...): Save and restore it. + * flags.h: Declare current_function_has_nonlocal_label. + * stmt.c (expand_goto): Set it if nonlocal label. + * local-alloc.c (combine_regs): Don't tie call-crossing reg + to a non-call-crossing reg, if receive nonlocal gotos. + (block_alloc): Don't allocate pseudos that cross calls, + if receive nonlocal gotos. + * global-alloc.c (global_alloc): Don't even make an allocno for + a reg that crosses calls, if receive nonlocal gotos. + + * function.c (init_function_start): Init function_call_count. + (push_function_context, pop_...): Save and restore it. + * calls.c (expand_call): Increment function_call_count. + * stmt.c (expand_{start,end}_bindings): Use this var + to determine whether there are any function calls in a block. + No need for a nonlocal goto handler if block has no calls. + + * c-decl.c (define_label): Set DECL_CONTEXT. + Maybe push label on shadowed_labels. + (pop_c_function_context): Clear out labels in named_labels + and reinstall those in shadowed_labels. + Restore shadowed_labels. + (push_c_function_context): Push shadowed_labels. + (start_function): Clear shadowed_labels. + + * function.c: New file, split from stmt.c. + + * xm-mips.h: Use __builtin_alloca. + +Fri Oct 6 00:30:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Optimization of + `if (...) x = 1; else {...} if (x) ...' got sense wrong sometimes. + + * Makefile.in (stamp-gnulib2): depend on gcc, cc1, cpp via + gnulib2-indirect. + + * tm-vax.h (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE,TRAMPOLINE_TEMPLATE): + Define macros. + + * m68k.md (addsi3): Change ! to ? in lea alternatives. + Put them before the add-to-register alternative. + + * reload.c (find_dummy_reload): Use PREFERRED_RELOAD_CLASS here + as in push_reload, so we make accurate predictions. + + * c-decl.c (pushdecl): Don't set DECL_CONTEXT for function declaration + that isn't a definition. + + * explow.c (fix_lexical_addr): Handle address that's just a base reg. + + * expr.c (expand_expr, case VAR_DECL): No need for static chain + if var is static. + + * reload.c (find_equiv_reg): Do let xregno be a pseudo reg, + but don't call HARD_REGNO_NREGS in that case. + + * local-alloc.c (combine_regs): Set reg_qty[sreg] even if it was <0. + + * c-decl.c (start_function): Clear named_labels. + +Thu Oct 5 00:30:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_equiv_reg): Don't let xregno be a non-hard reg. + Don't do OVERLAPPING_REGNO_P on a pseudo reg number. + + * Handle addresses of nested functions. + * New tm macros TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, + ALLOCATE_TRAMPOLINE, TRAMPOLINE_TEMPLATE. + * expr.c (expand_expr, case ADDR_EXPR): Handle addresses of nested fns. + * stmt.c (trampoline_address): New function. + * varasm.c (assemble_trampoline_template): New function. + + * i386.md (trunchiqi2, etc.): Output %1 with size of destination. + * out-i386.c (PRINT_REG): Support 'b' as CODE. + + * combine.c (try_distrib): Make sure we don't move a reg use + across a store into that reg. + + * reload1.c (order_regs_for_reload): Rate fixed regs at LARGE+2, + and explicitly used regs at LARGE+1. + + * stor-layout.c (layout_record): Support BIGGEST_FIELD_ALIGNMENT. + * tm-vax.h (BIGGEST_FIELD_ALIGNMENT): Define it. + (BIGGEST_ALIGNMENT): Now always 32. + + * stor-layout.c (build_int): When memoizing, make permanent nodes. + +Wed Oct 4 19:40:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * xm-i860.h: Missing file added. + + * integrate.c (function_cannot_inline_p): Don't inline if > 100 bytes + of stack space, unless declared inline. + +Tue Oct 3 00:16:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (assign_outer_stack_local): New function. + (put_var_into_stack): Allocate stack slot in fn the variable is in. + + * stmt.c (put_var_into_stack): If variable-size object is nonlocal, + put the pseudo with its address into the stack. + + * calls.c: New file, split out from expr.c. + (expand_call): Pass static chain if fn wants it. + + * Make put_var_into_stack handle vars of containing function. + * stmt.c (put_var_into_stack): Find the rtl chains for the + function that the variable belongs to. + (fixup_var_refs): New args FIRST_INSN, STACK and RTL_EXPS. + + * Make DECL_CONTEXT the function a var is in, and set it right away. + * c-decl.c (store_parm_decls): Use DECL_RESULT, not DECL_CONTEXT, + as the flag for duplicate names or missing names. + * c-decl.c (start_function): Don't set current_function_decl + till after calling pushdecl. + * c-decl.c (pushdecl): Set DECL_CONTEXT to current_function_decl. + (poplevel): Used to set it here, to the LET_STMT. Don't. + * stmt.c (init_function_start): Test for a FUNCTION_DECL in + DECL_CONTEXT, not for a LET_STMT. + + * c-parse.y (primary <- identifier): Set TREE_NONLOCAL if appro. + Also call mark_addressable. + + * stmt.c (expand_function_start): Store static chain into stack frame. + Fetch static chains of containing functions into pseudos. + (lookup_static_chain): Moved here; and really does something. + * expr.c (expand_expr): Handle nonlocal variable. + * explow.c (fix_lexical_addr): New function. + + * out-i386.c (fp_pop_int): Use %L0 in fistp insn. + + * global-alloc (find_reg): Fix typo marking new hard reg conflicts. + + * stmt.c (pushcase, pushcase_range, expand_end_case): + When warning about insns at start of case, don't mind NOTEs. + + * local-alloc.c (combine_regs): + Transfer all pseudos from SREG's old qty to its new qty. + + * Support nested functions: + * stmt.c (push_function_context, pop_function_context): New functions. + * tree.c (save_tree_status, restore_tree_status): New functions. + * stor-layout.c (save_storage_status, restore_storage_status): Ditto. + * expr.c (save_expr_status, restore_expr_status): Ditto. + * emit-rtl.c (save_emit_status, restore_emit_status): Ditto. + * c-decl.c (push_c_function_context, pop_c_function_context): Ditto. + (start_function, finish_function): New arg NESTED. + * c-parse.y (nested_function, notype_nested_function): New nonterms. + (decl): New alternative to use them. + + * tree.h: Declare lineno. + * c-decl.c (finish_function): Don't expect lineno as arg. + * c-parse.y (fndecl, *nested_function): Don't pass it. + + * expr.c (init_expr, expand_call): Delete may_call_alloca. + * tm-m88k.h, tm-sparc.h, tm-spur.h: Use current_function_calls_alloca. + * tm-mips.h: It wasn't really used; delete its declaration. + +Mon Oct 2 16:26:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): Reject any OLDEQUIV that is + in use in any other reload of this insn. + + * expr.c (expand_call): Don't put on notes for const functions + if there aren't real insns to hold them. + +Sun Oct 1 19:50:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Handle PARALLEL in CALL_INSNs + when setting follows_call. + + * mips.md (call_value): Change to a straightforward define_insn + with just one action--no PARALLEL. + + * i860.md (pfeq, pfgt and pfle patterns): Add f0 as 3rd arg. + + * integrate.c (save_for_inline): Don't delete NOTE_INSN_FUNCTION_END. + + * c-parse.y (simple_if): Return $$ as value of stmt_count. + (stmt (if statement)): Warn if $$ was not incremented in the body. + (stmt (else statement)): Likewise. + (stmt): All alternatives except null statement increment stmt_count. + +Fri Sep 29 08:56:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * regclass.c (reg_class_record): If move between CLASS and GENERAL_REGS + is costly, charge that cost to GENERAL_REGS and its subclasses. + * tm-alliant.h, tm-m68k.h (REGISTER_MOVE_COST): New macro. + + * regclass.c (regclass): When a reg is a parm equiv to a stack slot, + decrease its memcost, since the insn to load it would go away. + + * global-alloc.c (find_reg): Rewrite two-pass hard reg preference code. + Uses regs_used_so_far to avoid allocating a reg not used elsewhere + in the first pass. Also updates regs_used_so_far. + (global_alloc): Initialize regs_used_so_far. + + * tm-next.h (LINK_SPEC): Typo for -Z option. Don't pass -M option + to ld, since that is for cpp. + + * Support -MD and -MMD options. + * gcc.c (default_compilers): Pass them to cpp in special way. + Don't inhibit compilation for them, only for -M and -MM. + * cccp.c (main): Handle them like -M and -MM except take arg + which is file name to write deps in. + + * toplev.c: #if 0 around everything for GDB_DEBUG. + * symout.c: File removed from distribution. + * Makefile.in: Don't try to compile or link it. + + * tm-hp9k320.h (ASM_FILE_START): Output a `version' pseudo-op. + [! HPUX_ASM] (ASM_SPEC): Don't use the -V option. Recognize -mc68000. + (CALL_USED_REGISTERS): Redefinition deleted. HPUX 6.5 doesn't need it. + * tm-hp9k310.h, tm-hp9k310g.h: New files. + +Thu Sep 28 12:57:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (pushcase, pushcase_range): Warn if code was emitted inside + case stmt before 1st label is seen. + (expand_start_case): New arg is string to use in that warning. + (struct nesting): New fields printname and seenlabel. + * c-typeck.c (c_expand_start_case): Pass new arg to expand_start_case. + + * gcc.c: Can now read compilation specs, and asm_spec (etc), from file. + (cpp_spec, asm_spec, etc.): New variables, initted to corresp. macros. + (do_spec_1, validate_all_switches): Use the variables, not the macros. + (link_command_spec): New name for old link_spec. + (compilers, n_compilers): Now a pointer, with size of vector ptd to. + (default_compilers): New name for old `compilers' vector. + (read_specs): Given file name, read specs and add to `compilers'. + Also set cpp_spec, asm_spec, etc. + (skip_whitespace): New subroutine. + (main): Initialize `compilers' from `default_compilers'. + Find a specs file and call read_specs. + Search thru `compilers' from back to front. + * Makefile.in (install): Use gcc -dumpspecs to write a specs file. + + * Support multiple installed compilers; find them by + target machine and version. + (STANDARD_EXEC_PREFIX): Change to `.../gcc/'. + (standard_exec_prefix_1): Change to `.../gcc/'. + (process_command): Options -b and -V set spec_machine, spec_version. + Option -dumpspecs writes specs file to define cpp_spec, asm_spec, etc. + Option -dumpversion writes version number. + (main): Set machine_suffix from spec_machine and spec_version. + * Makefile.in (libsubdir): New variable, made from libdir. + (gcc.o): Define DEFAULT_TARGET_MACHINE macro in compilation. + Change value of STANDARD_EXEC_PREFIX as above. + (cccp.o): Use libsubdir. + (install): Install files under $(libsubdir), after making that dir. + + * reload.c (decompose): Handle case of pseudo with no hard reg. + +Wed Sep 27 01:20:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * global-alloc.c: #if 0 handling of REG_NO_CONFLICT notes. + + * c-typeck.c (build_c_cast): Implement cast to union type. + + * Edit the makefile automatically when necessary. + * config.gcc: Produce Makefile by editing Makefile.in with sed. + * Makefile.in: New name for file `Makefile'. + Comments on editing the file deleted. + * config/make-*: Various files are inserted by sed into Makefile. + + * Provide a way for languages to control printing of function names. + * toplev.c (error, fatal, announce_function, etc.): + Use value of decl_printable_name to compute what name to print. + * stmt.c (init_function_start): Likewise. + * toplev.c (main): Init that variable. + (decl_name): New function, used by default. + + * explow.c (round_push): Fix typo: return fast if ALIGN is 1. + + * flow.c (dump_flow_info): Delete excess arg to fprintf. + * gcc.c (fatal): Delete excess arg to delete_temp_files. + + * expr.c (convert_move): Handle absence of integer truncate insns + by copying value to a reg (and then using subreg). + + * final.c (final_start_function): Do leaf-function register renumbering + if that is defined for this machine. + (leaf_renumber_regs, only_leaf_regs_used, leaf_function_p): New fns. + + * varasm.c (in_text_section): New function. + * tm-3b1.h (ASM_OUTPUT_SKIP): Use that. + + * stmt.c (case_index_expr_type): New function. + + * c-parse.y (maybe_attribute): Don't fail to return a value. + +Tue Sep 26 02:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Do auto-increments for hard regs. + * flow.c (mark_used_regs): Do set reg_next_use for hard regs. + When making an auto-increment for a hard reg, don't mess with + reg_n_refs or reg_n_sets. + (try_pre_increment_1): Likewise. + + * gcc.c (compilers): -undef inhibits predefined symbols. + + * combine.c (subst): In case EQ, prefer ZERO_EXTRACT, not SIGN_EXTRACT. + * vax.md (jbs, jbc patterns): Write with ZERO_EXTRACT. + * m88k.md: Likewise. + + * Merge C++ changes in stmt.c: + * Set up an obstack, stmt_obstack. + (ALLOC_NESTING): Allocate a `struct nesting' on that. Callers changed. + (POPSTACK): Use the obstack. + (init_stmt): New fn: init the obstack. + (any_pending_cleanup): New fn. + (expand_start_bindings): Leave outer_cleanups 0 if nothing in it. + (expand_end_bindings): Preserve some global vars around cleanups. + After cleanups, if no stack level to restore, do pending pops. + (fixup_cleanups): Do pending pops after the cleanups. + (expand_start_case): Don't output a NOTE if already have one. + (assign_parms): Speed up sizetree computations in common case. + (init_function_start): Use lang_printable_name for current_function_name. + (expand_function_end): Don't set REG_FUNCTION_VALUE_P + for a pseudo reg used to copy into the real return. + * toplev.c (compile_file): Call init_stmt. + + * c-typeck.c (commontype): If one arg is error_mark_node, return other. + +Mon Sep 25 12:13:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_binop): Handle boolean ops on >SImode with + several one-word insns. Put out REG_EQUAL and REG_NO_CONFLICT notes. + * global-alloc.c (global_conflicts): For each insn, record + in no_conflict_pairs all the REG_NO_CONFLICT notes of the insn. + (record_one_conflict): Don't mark a conflict between such a pair. + * local-alloc.c (block_alloc): Do combine_regs on the sequences + made by expand_binop for multi-word boolean ops. + (combine_regs): New arg ALREADY_DEAD is 1 if UREG died prior to INSN. + (no_conflict_p): New subroutine. + * combine.c (try_combine): Move REG_NO_CONFLICT notes like REG_INC. + * flow.c (life_analysis): Don't delete no-op moves + if they carry REG_EQUAL notes. These insns are needed later. + * reload.c (find_dummy_reload): Use actual operands (which may be + subregs) for most purposes, including checking for overlap. + (hard_reg_set_here_p): Handle a range of regnos, not just one. + + * loop.c (move_movables): Use special techniques to move regs + used for zero-extension. Don't combine matching regs; instead, + just record them in pairs in regs_may_share. + * global-alloc.c (global_alloc): Digest regs_may_share into a + vector, reg_may_share. Then assign matching regs the same allocno. + (global_alloc): Initialize allocno_n_refs, allocno_live_length, + allocno_calls_crossed. + (allocno_compare): Use those new vectors; don't use allocno_reg. + (find_reg): Use those new vectors. + Assign hard reg to all the pseudos that share the allocno. + + * jump.c (jump_optimize): Two new cases simplify jumping to or + falling into a test-and-branch after setting the register being tested. + * jump.c (get_label_before, get_label_after): New functions. + (do_cross_jump): Use get_label_before. + +Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__fixunsdfsi): Defined here, not in gnulib.c. + * Makefile (LIBFUNCS, LIB2FUNCS): Corresponding change. + + * tm-i860.h (SDB_DEBUGGING_INFO): Define this, not SDB_... + + * gcc.c (link_spec): Don't specify -lg. + * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-isi68.h, tm-news.h + * tm-pyr.h, tm-seq386.h, tm-sequent.h, tm-sparc.h, tm-spur.h + * tm-sun2.h, tm-sun3.h, tm-sun386i.h, tm-tahoe.h, tm-vax.h: + Make LIB_SPEC link with -lg. + * tm-harris.h, tm-vaxv.h, tm-vms.h: Turn off inherited LIB_SPEC. + + * recog.h (insn_*): Declare these tables `const'. + (const): Define this as nothing, if not __STDC__. + * expr.h (insn_gen_function): Declare `const'. + (const): Define this as nothing, if not __STDC__. + * genoutput.c (main): In insn-output.c, don't define `const' if + already defined. + + * recog.c (offsettable_nonstrict_memref_p): New function. + * stmt.c (fixup_var_refs_1): Use that, not offsettable_memref_p. + * reload.c (find_reloads): Likewise. + + * integrate.c (save_for_inline): Set in_nonparm_insns when arrive + at the first nonparm insn. + (copy_for_inline): Set TREE_READONLY only if in_nonparm_insns. + + * Makefile (float.h): Make hard-params an ordinary dependency. + + * c-decl.c (poplevel): When popping a local extern decl, + save the TREE_USED bit in the identifier. + * toplev.c (compile_file): Check that, printing "not used" warnings. + + * c-parse.y (init_lex): Discard undesired reserved words from table. + (yylex): No need to check for them at lookup time. + + * tree.c (make_node): Always put PARM_DECL in saveable_obstack. + + * toplev.c (floor_log2, exact_log2): Rewritten for speed. + + * tree.c (listify): New function. + + * c-typeck.c (convert_for_assignment): New args for function being + called and argument number. Used in error messages. + (actualparameterlist): Pass those args usefully. + (wrn_for_assignment): New function. + + * loop.c (general_induction_var): Handle give copied from a biv. + + * i386.md (div*i3, udiv*i3): New patterns. + (divmodhi4, udivmodhi4): New patterns. + + * combine.c (subst): + Simplify (sign_extend:M (subreg:N (lshiftrt:M REG CONST) 0)) + when REG was assigned from (zero_extend:M (any:N ...)). + Make the similar (zero_extend:M ...) case share code. + + * expr.c (store_field): A frame-pointer-relative address is stable. + + * expr.c (expand_expr): Effectively pass on IGNORE for 2nd op of comma. + +Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.36 released. + + * genextract.c (main): Pass `insn' as arg to `fatal_insn_not_found'. + + * tahoe.md (casel patterns): Use %@ for operand of .align. + * tm-tahoe.h (PRINT_OPERAND): %@ prints `1'. + * tm-harris.h (PRINT_OPERAND): Redefine it; %@ prints `2'. + + * config.gcc (decstation): New entry. + + * tm-harris.h: New file, using tm-tahoe.h. + + * tm-decstatn.h, tm-mips-bsd.h, tm-mips-sysv.h: New files. + +Sat Sep 23 00:28:14 1989 Alain Lichnewsky (lich at glenlivet) + + * added -Zxxx flag in tm-mips.h. (-Z stands for systype) + + used as -ZSYSV or -ZBSD43 on RISC_OS. I suppose + that at somepoint -ZPOSIX might be required for Ultrix. + + * changed command issued to loader to set -systype and to get + crt1 crtn instead of crt0. + + * changed predefines for cpp to agree with RISC-OS + + * tm-mips.h checks for machine type ( defined(ultrix) == DECSTATION) + so that user does not have to go in and change tm-mips.h anymore + + * cpp defines mips host_mips unix and SYSTYPE_SYSV + or SYSTYPE_BSD43. + +Fri Sep 22 00:31:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * pyr.md (andsi3): Flush spurious paren. + + * Makefile (hard-params): Don't use LIBS or LIBDEPS. + + * rtl.c (init_rtl): + Use malloc to allocate the string for format of CONST_DOUBLE. + Don't fail to store in rtx_format. + +Thu Sep 21 00:33:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (dump): Move decl of P in REAL_CST case. + + * fold-const.c (fold): For ABS_EXPR, handle REAL_IS_NOT_DOUBLE. + + * c-convert.c (convert_to_real): Use REAL_VALUE_ATOF to make 0. + + * mips.md (movdi): Handle constant with or without WORDS_BIG_ENDIAN. + For alternative 2, output just 2 store insns, not 3. + + * dbxout.c (dbxout_symbol): Optionally go to .data for + a static file-scope variable. + * tm-vax.h: Define DBX_STATIC_STAB_DATA_SECTION to request this. + + * varasm.c (output_constant, force_const_mem): + ASM_OUTPUT_DOUBLE_INT now takes rtx as argument. + + * gvarargs.h [__NeXT__]: Undefine macros defined by stdardg.h. + Define _VARARGS_H. + + * stddef.h (size_t): Don't define it if _SIZE_T macro is defined. + (NULL): Undef any previous defn. + + * cexp.y (NULL): Don't define if already defined. + + * emit-rtl.c (force_next_line_note): New function. + * stmt.c (expand_function_start): Call that just before returning. + +Wed Sep 20 01:22:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (asm_clobbers): + Allow string concatenation: call combine_strings. + +Mon Sep 18 00:04:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_call): If calling const function, don't defer + pops for this call. + + * c-parse.y (yylex): When float constant ends in `f', + actually truncate to a single-float. + +Sun Sep 17 01:36:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (SWITCH_TAKES_ARG): -A takes an arg. + (link_spec): Inhibit start files when -A. + + * convex.md (call, call_value): Supply dummy arg to RETURN_POPS_ARGS. + + * gnulib2.c (__fixunsdfdi): After removing top half, A can be neg. + (__cmpdi2, __ucmpdi2): Was misusing macros HIGH and LOW-- + use .s.high and .s.low to extract words from long_long. + + * Makefile (gnulib2): Run `./gcc'. + + * Makefile (float.h): Use `make', not `$(MAKE)'. + (hard-params.o): Use `$(srcdir)' in deps as in commands. + + * out-tahoe.c (output_move_double): Handle constant operand 1. + +Sat Sep 16 01:15:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): Put death note for input reload reg + even if reload was inherited. + + * out-i860.c (output_block_move): Typo loading size of block. + + * m68k.md (dbra patterns): Do CC_STATUS_INIT. + + * cse.c (fold_rtx): Check GET_MODE_CLASS before floating negate. + +Fri Sep 15 00:39:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Don't combine (subreg (mem)) + if subreg's mode is wider than mem's mode. + +Thu Sep 14 04:33:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (clean): Delete temp files used in making gnulib. + + * tm-next.h (LINK_SPEC): Pass -Z and -seglinkedit options. + +Tue Sep 12 01:06:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for ints. + + * mips.md (cmpsi + bleu peephole): Should output unsigned insn. + + * expmed.c (store_bit_field, extract_bit_field): If loading mem + into reg for bit field insn, don't use a larger mode than insn wants. + + * Makefile (stamp-gnulib2): Depend on gcc, cc1, cpp to avoid + wrong order of making when parallel. + + * Makefile (float.h): Do use $(MAKE) to run recursive make. + +Mon Sep 11 00:49:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Test for missing arg after -o, etc. + + * tm-next.h: Nearly completely new. + + * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move after config.h. + + * cccp.c: Cast some args to strcpy and strcat. + + * genoutput.c (error): Declare arg S. + + * tm-pyr.h, pyr.md, out-pyr.c, xm-pyr.h: New files. + * config.gcc: New item for pyr. + + * gvarargs.h: If __pyr__, use va-pyr.h. + +Sun Sep 10 00:48:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (inc_for_reload): Really return the first of the insns. + + * stor-layout.c (build_int): Memoize size nodes for sizes <= 32. + + * loop.c (check_dbra_loop): Don't reverse a biv that is used + in between its update and the loop endtest insn. + +Sat Sep 9 02:10:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (genop): Don't use `combine' for nonexplicit constants. + Handle some identity elements, etc., directly. + (layout_basetypes): Function deleted. + (layout_record): Ignore any TYPE_DECLs in the fieldlist. + Don't do PCC_BUTFIELD_TYPE_MATTERS hack on field with ERROR_MARK type. + (layout_union): Delete error check for base types. + Ignore any TYPE_DECLs in the fieldlist. + (layout_type): Copy layout info directly into all variants of type. + Delete unused local `x'. + + * mips.md (movdi): Handle constant source operand. + (movsi): Some output code moved to output_load_immediate. + * out-mips.c (output_load_immediate): New function. + + * config.gcc (iris): Use tm-iris.h and xm-iris.h. + + * integrate.c (copy_for_inline): Copy all nonconstant MEM addresses. + + * tm-3b1.h (ASM_OUTPUT_SPACE): New override defn, to output explicit + bytes of 0 if in text segment. + +Fri Sep 8 19:15:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't do i3dest stuff if i3 isn't a SET. + +Thu Sep 7 00:16:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (function_cannot_inline_p): Fn is "not even close" + only if > 3 * max_insns. + + * toplev.c (fatal_insn_not_found): New fn. + * genextract.c (main): Make insn_extract call that fn. + + * integrate.c (expand_inline_function): Don't abort about bad offset + in a parm whose type is error_mark_node. + Make another syntax level to hold parm destructors. + + * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): + Increment push_loc after, not before, each reg save or restore. + When storing reg 9 or 29, use offset tsize-4. + Make tsize larger by 4 initially. + (STARTING_FRAME_OFFSET): -8, not -4. + + * gcc.c (choose_temp_base): Make use of TMPDIR and P_tmpdir + if they exist. + + * toplev.c, gcc.c, cccp.c, gen*.c (fancy_abort): + New function which can be used to replace `abort'. + + * toplev.c (main): Save argv, argc in save_argv, save_argc. + + * jump.c (delete_insn): Always advance NEXT across deleted insns, + in case not optimizing. Fixes setting current_function_returns_null. + + * symout.c: Include stddef.h with <...>. + +Wed Sep 6 00:39:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (find_exec_file): Was using `argbuf[0]' where wanted `prog'. + + * combine.c (combine_instructions): Dont call record_dead_and_set_regs + if insn has become a NOTE. + + * reload.c (combine_reloads): Update reload_when_needed. + + * jump.c (delete_insn): If delete label on ADDR_VEC, delete table too. + (jump_optimize): If ADDR_DIFF_VEC label has 1 ref, delete it and table. + + * gunlib2.c (__fixunsdfdi, __floatdfdi): Make the long long, + and/or its two halves, unsigned. + + * reload1.c (reload): When setting double_reg_address_ok, + require it to be offsettable. + * out-sparc.c (output_fp_move_double): Now safe to use std + for all reg+reg addresses. + + * vax.md: Add another simplified-casesi pattern for operand 0 constant. + + * cse.c (fold_rtx): Don't truncate VAL at end if WIDTH is 0. + Don't alter WIDTH for that purpose based on the operands. + + * stmt.c (warn_if_unused_value): && or || is ok if 2nd op has effect. + + * c-parse.y (ALIGNOF unary_expr): Find a larger value if possible. + + * reload.c (combine_reloads): Don't combine an output address reload. + (find_reloads): Call combine_reloads after setting reload_when_needed. + (find_reloads_address): Update OPERAND if copy the operand. + + * cccp.c (macroexpand): Missing arg no error in 1-arg macro if -trad. + +Tue Sep 5 14:12:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_dummy_reload): Don't use the output reg if it is + a fixed reg which can overlap with other regs. + + * cse.c (exp_equiv_p): Two vectors must have same length. + + * tree.def (WITH_CLEANUP_EXPR): Print-name string was wrong. + + * optabs.c (expand_fix): Undo previous change (unsigned conversion). + It doesn't work. + + * gcc.c: Pass -i option to cpp. It takes an arg. + + * cccp.c (cplusplus_include_defaults) [VMS]: Typo in array indices. + + * Makefile (gnulib): Create it in tmpgnulib, then rename at the end. + + * i860.md (movdi from constant pattern): Fix `st' opcode typos. + + * Makefile (hard-params*): Use CCLIBFLAGS, not CFLAGS. + +Fri Sep 1 03:43:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386gas.h (ASM_OUTPUT_ALIGN): .align arg isn't a log, in gas. + (ASM_OUTPUT_ALIGN_CODE): Align labels, etc. to 4-byte boundary. + + * integrate.c (save_for_inline): Delete NOTE_INSN_DELETED notes. + + * Makefile (clean): Delete dbr and jump2 dumps. + + * Makefile (gnulib, gnulib2): Compile in main dir, not libtemp subdir. + This avoids trouble with -I options, etc. + +Thu Aug 31 15:07:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): + Be specific moving REG_DEAD notes to an output reload. + Sometimes move them to output-operand-address reloads. + + * out-sparc.c (output_fp_move_double): Very cautious about std. + Use it only for something visibly aligned, or for an array element. + + * cccp.c (main) [VMS]: Remove dirs and extension from PROGNAME. + (pfatal_with_name) [VMS]: Return VMS system call error code as status. + (cplusplus_include_defaults) [VMS]: Add GNU_GXX_INCLUDE. + + * xm-vms.h (FATAL_EXIT_CODE): Now (44 | 0x10000000). + + * expr.c (do_store_flag): Allow more values of STORE_FLAG_VALUE. + + * gnulib2.c (__fixunsdfdi): Explicitly cast doubles to `long int' + to avoid infinite recursion. + +Wed Aug 30 13:28:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (skip_consec_insns): Skip NOTEs. + + * loop.c (general_induction_var): If G or V is a nonreplaceable giv, + give up. If G is allocated here, consider it replaceable. + + * stupid.c: Make uid_suid, reg_where_born and reg_where_dead + vectors of ints, not short. + +Tue Aug 29 00:21:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-iris.h: Fix typo in formfeed char. + + * out-i860.c (singlemove_string): Add missing `.l' to `st', `ld'. + + * loop.c (general_induction_var): Don't set G from 2nd op. of MINUS, + since that would negate the result. + +Mon Aug 28 00:16:36 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * dbxout.c (dbxout_symbol): When we need a pointer type, don't + record it in TYPE_POINTER_TO, lest it not live as long as its target. + + * tm-hp9k320.h (CPP_PREDEFINES): Delete __hp9000s300 and _HPUX_SOURCE. + + * Makefile (gnulib): Deleted stamp-gnulib2 in wrong dir. + (hard-params.o): Copy it into current dir before compiling. + (STAGESTUFF): Include the stamp-*.[ch] files. + +Sun Aug 27 13:59:39 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * out-i860.c (output_size_for_block_move): Typo in CC_KNOW_HI_R31. + + * integrate.c (expand_inline_function): Ignore insns to set value reg + if we don't want the value. + + * varasm.c (make_function_rtl, make_decl_rtl): Use DECL_ASSEMBLER_NAME. + + * Makefile (stamp-gnulib2): Don't explicitly delete old members, + just replace them. + + * m68k.md, alliant.md (trunchiqi): Use movew if moving from memory + or from a const_int. + + * integrate.c (expand_inline_function): Set first_parm_offset + later on, after computing the args, in case those args + contain inline function calls. + + * alliant.md (movqi): Like recent change in m68k.md. + +Sat Aug 26 00:26:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * tm-hp9k320.h (CPP_PREDEFINES): Take out m68k and mc68000. + * tm-news.h (CPP_PREDEFINES): Add mc68000. + +Fri Aug 25 15:37:35 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * optabs.c (expand_fix): Can convert to unsigned int + by subtracting 2**(N-1), converting to signed, and adding 2**(N-1). + + * reload.c (find_reloads_address): For out-of-range stack slot, + reload the displacement into a reg. + (find_reloads_toplev): For subreg of a reg with a reg_equiv_address, + turn the whole thing into a memref. + +Thu Aug 24 14:07:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * c-decl.c (grokdeclarator): If function is declared `extern inline', + set current_extern_inline. + (start_function): In that case, set TREE_EXTERN in function decl. + * toplev.c (rest_of_compilation): In that case, don't really compile. + (compile_file): Don't output such functions at the end either. + + * c-typeck.c (build_function_call): Do set NAME if we have one. + + * Prevent any variability in results of qsort. + * stupid.c (stupid_reg_compare): Compare by regno as last resort. + * global-alloc.c (allocno_compare): Same idea. + * local-alloc.c (qty_compare_1): Same idea. + * reload1.c (hard_reg_use_compare, reload_reg_class_lower): Same idea. + + * cccp.c (macroexpand): If read one arg, but it's whitespace, + consider that 0 args for checking number of args. + Improve plurals in error messages. + + * expr.h (inhibit_defer_pop): New name for current_args_size, + now declared here. + (NO_DEFER_POP, OK_DEFER_POP): Moved here. + * expr.c: Names related to current_args_size renamed. + (clear_current_args_size): Deleted. + * stmt.c (expand_function_start): Init inhibit_defer_pop here. + + * stmt.c (expand_start_stmt_expr): Do NO_DEFER_POP. + (expand_end_stmt_expr): Do OK_DEFER_POP, and don't do deferred pops. + + * Makefile (c-parse.tab.c): Pass -o option to Bison. + +Wed Aug 23 23:14:06 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * expmed.c (store_bit_field, extract_bit_field): + Use GET_MODE_WIDER_MODE to scan possible modes for bestmode. + + * Makefile (stamp-gnulib2): Discard error messages from `ar d'. + +Tue Aug 22 00:31:51 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * final.c (output_source_line): In COFF, don't output `.ln 0'. + + * Makefile (stamp-gnulib2): Depend on gnulib. For parallel make. + + * stmt.c (uninitialized_vars_warning): Don't crash if DECL_RTL is 0. + + * i386.md (truncdfsf2): Pay attention whether stack top is dead. + +Mon Aug 21 22:02:40 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * reload1.c (choose_reload_regs): Don't use regno uninitialized, + in the code that does find_equiv_reg. + +Sun Aug 20 00:06:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * m68k.md (movqi): Was outputting bad code for areg->mem and mem->areg. + + * explow.c (memory_address): Handle a hard reg in wrong reg class. + + * stmt.c (expand_function_end): Set REG_FUNCTION_VALUE_P in return + reg when returning address of structure value block. + + * integrate.c (save_for_inline): Preserve integrated bit on insns. + +Sat Aug 19 14:20:07 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * combine.c (subst): Don't change (subreg:M (mem:N ...)) to + (mem:M ...) if address is mode-dependent. + + * config.gcc: Copy and alter Makefile for any srcdir except `.'. + In that case, make a .gdbinit as well. + + * sparc.md (andcbsi3, iorcbsi3, xorcbsi3): These are not commutative. + + * vax.md (cmpv and cmpzv patterns): Use COMPARE, not MINUS. + +Fri Aug 18 12:24:52 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * alliant.md (movqi): Change move to mov in assembler code. + + * integrate.c (expand_inline_function): + Handle args passed in regs and copied to slots reached via arg ptr. + + * out-sparc.c (output_delayed_branch): + Do alter_subreg on operands of delay insn. + + * reload1.c (choose_reload_regs): Look for a reg to share + before one that we won't share. + + * expr.h: Define OPTAB_MUST_WIDEN. + * optabs.c (expand_binop): Handle that case. + * expmed.c (expand_shift): Use that when widening lshift to ashift. + + * optabs.c (emit_cmp_insn): Use CONST0_RTX, not individual vars. + + * gnulib2.c (lsh*di3, ash*di3): Return right away if count is zero. + Otherwise tried to shift by 32. + Also replace constant 32 by something symbolic. + + * final.c (output_source_line): Output line number in COFF + even if wrong file. + +Thu Aug 17 15:16:34 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * Makefile (version.o): Make this a target; specify source file. + (obstack.o): Likewise. + + * config.gcc (i860): New alternative. + + * i860.md (movstrsi): Record the alignment as operand 3. + Renumber following (internal) operands. + * out-i860.c (output_block_move): Rewrite as in out-sparc.c. + (output_size_for_block_move): Likewise. And don't + subtract alignment from the size. + +Wed Aug 16 13:27:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * loop.c (combine_movables): Don't combine zero-extend + registers that live outside the loop. + + * integrate.c (expand_inline_function): Use copy_to_mode_reg + to set up this_struct_value_rtx, to handle sums right. + + * Makefile: Use $(srcdir) in bison output files used as deps. + Supply some missing deps. + (*.info, doc): *.info files go in srcdir. + +Tue Aug 15 00:11:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * i860.md, tm-i860.h, out-i860.c: New files. + + * c-decl.c (duplicate_decls): Fix bug determining whether NEWDECL + is a definition or just a decl. + Combine code to preserve various things from old definition + through a declaration. + + * config.gcc: Scan all args at beginning, setting variables. + Arg of form -srcdir=... sets srcdir explicitly. + srcdir now doesn't contain a slash, and is used with a slash. + + * Makefile (install): Copy header files and gcc.1 from srcdir. + But copy float.h from current dir. (Remove that from USER_H.) + (various): Use new variable INCLUDES to get the -I options. + Add -I. at the beginning of these. + (gnulib, gnulib2): Likewise, use SUBDIR_INCLUDES. + Also, get source file from srcdir. + Also, depend on $(CONFIG_H). + (alloca.o): Get alloca.c from srcdir. + + * reload1.c (emit_reload_insns): Bug in last change: + don't fail to set this_reload_insn. + + * Makefile (Bison rules): Specify $(srcdir) for target and source. + (Explicit C rules): Specify $(srcdir)/ for source in commands. + Use sed to eliminate `./' in normal case. + (insn-*.c): Use $(srcdir) to run move-if-change. + + * config.gcc: Check . and .. for the sources. + If in .., use that when making links. + Also, copy Makefile, alter srcdir in it, and add a VPATH. + + * stmt.c (expand_end_case): When converting CONST_INT index + to an INTEGER_CST, sign-extend if signed type. + +Mon Aug 14 13:51:08 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * c-decl.c (duplicate_decls): Warn for qualifier mismatch + only if pedantic; don't consider it a type mismatch. + Merge the qualifiers of the two decls if the types match. + + * expmed.c (store_bit_field): For insv, memref displacement + always counts in bytes, regardless of unit fetched. + When checking predicate of op0, accept any mode. + + * optabs.c (expand_float): One call to can_float_p had args backwards. + + * loop.c (check_dbra_loop): Set the JUMP_LABEL of the new jump insn. + Increment label's use count rather than storing 2. + + * Makefile: Instead of $<, which fails in certain makes, + use $@ and then substitute in the name with sed. + + * out-sparc.c (output_scc_insn): Handle CC_REVERSED for ordered tests. + Use orcc insns to store the result and set cc's for it. + + * sparc.md (scc combination patterns): + Use operands[0] as basis for recorded cc value. + + * gnulib2.c (floatdidf, fixdfdi, fixunsdfdi): New functions. + + * gnulib.c (floatdidf, fixdfdi, fixunsdfdi): Deleted. + (union longlong, union double_di): Deleted. + (HIGH, LOW): Deleted. + These were deleted because most did not handle full range of DI + and they didn't use the right calling convention for DI. + +Sun Aug 13 13:06:45 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * c-typeck.c (comptypes): Qualifiers must match. + (Was already true for scalars.) + Also, array elt qualifiers must match. + + * tm-apollo68.h (STRUCT_VALUE): Make it 0. + (This was done before and lost.) + * out-i386.c (function_epilogue): Use ret $4 to pop structure address. + (This was done before and lost.) + + * out-i386.c (call_top_dead_p): Don't fail to check + the rtx code of the insns themselves. + (This was done before and lost.) + + * out-sparc.c (output_block_move): If align is 8, make it 4. + + * typeclass.h: New file. + * expr.c: Include it. + (expand_builtin): Use those codes in __builtin_classify_type. + + * Makefile (all, lang-c): Reinstall gnulib2. + + * Makefile (gnulib2): Don't give up if `ar d' fails. + + * expr.c (emit_library_call): New 2nd arg NO_QUEUE. + All callers changed to pass it. + * optabs.c (expand_binop, expand_unop): Don't call emit_queue. + Instead, pass 1 for NO_QUEUE to emit_library_call. + +Sat Aug 12 12:05:22 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * reload1.c (emit_reload_insns): Decision for where to put input + reload insn is now common to ordinary case and auto-increment. + Likewise, updating these positions afterward. + + * stmt.c (assign_parms): Treat last named arg as nameless. + * expr.c (expand_call): Likewise. + + * explow.c (copy_to_mode_reg): Use force_operand for PLUS or MULT. + (copy_addr_to_reg): Use copy_to_mode_reg. + + * expmed.c (store_bit_field): Handle case where insv rejects memrefs. + + * tm-convex.h (ASM_OUTPUT_ALIGN): Magic to handle the fact + that this is not called when LOG is 0. + +Fri Aug 11 16:39:51 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * emit-rtl.c (get_lowpart): For multi-word, in error check, + test the unit size of the containing mode. + + * cccp.c (macroexpand, dump_all_macros): Return void. + (macroexpand): Cast sprintf arg to char*. + (error, warning, error_with_line): Declare first arg char*. + +Thu Aug 10 21:42:13 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * expr.c (expand_call): + Use force_operand to copy arithmetic to register. + + * dbxout.c (dbxout_symbol): Go back to N_FUN for const variable. + + * integrate.c (expand_inline_function): Use proper machine mode + for a structure value in memory at address passed by caller. + +Wed Aug 9 15:21:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc: Delete unnecessary variable assignments in case stmt. + (isi68-nfp): New alternative. + + * combine.c (try_combine): Don't substitute for a register + which is being explicitly clobbered. + + * This change was requested for C++. + * varasm.c (decode_reg_name, make_decl_rtl): Arg ASMSPEC now char *. + * toplev.c (rest_of_decl_compilation): Likewise. + * c-decl.c (finish_decl): Change call to rest_of_decl_compilation. + + * tree.h (struct tree_decl): Pack machine_mode into 8 bits. + + * explow.c (memory_address, copy_to_reg): + Use force_operand to copy arithmetic to register. + + * tm-isi68-nfp.h: New file. + * tm-isi68.h: Allow overriding TARGET_DEFAULT, and let that + change CPP_SPEC and LINK_SPEC. + (ASM_FILE_START): No `.globl fltused' if soft-float. + +Tue Aug 8 21:50:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (const_hash): For constructor, mask TREE_TYPE to HASHBITS + bits and take modulo, so we don't get negative numbers. + + * varasm.c (record_constant_1, compare_constant_1): + Record and compare the width of an integer. + + * varasm.c (assemble_function, assemble_variable, get_or_assign_label): + (force_const_mem): Don't call ASM_OUTPUT_ALIGN if boundary is 1. + + * c-decl.c (duplicate_decls): Consider const and volatile as part of + type when checking for match and when installing new type into OLDDECL. + + * expr.c (do_store_flag): Make sure target fits operand predicate. + Also, omit the AND insn when true-value is 1 + and the mode we get is wider than the one we want. + + * genrecog.c (main): Make insn-recog.c include real.h. + +Mon Aug 7 16:58:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genemit.c (main): Define `operands' as `emit_operands', + not `recog_operands'. + + * reload1.c (emit_reload_insns): Don't copy back a dead output reg. + +Sun Aug 6 13:56:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (plain_type_1, sdbout_one_type): Use the main variant. + (sdbout_type_fields): No need to check TREE_ASM_WRITTEN here, + since sdbout_one_type does that. + + * expr.c (do_store_flag): Ensure the CLOBBER doesn't clobber an input. + + * fold-const.c (fold_convert): Attempt to avoid overflow + when converting real to integer. Use unsigned conversion for + low part; always convert as positive and then change sign; + subtract high part before converting low part. + Also, check for real values out of range for chosen int type; + warn and do not convert. + + * tm-hp9k320.h (CPP_SPEC) [not HPUX_ASM]: Don't define mc68000 here. + (CPP_PREDEFINES): Remove mc68k, add m68k and mc68000. + [HPUX_ASM]: Define CPP_SPEC here as in the other case, + but add __HPUX_ASM__ to each alternative. + + * tm-m68k.h (FUNCTION_EPILOGUE): Call new hook FUNCTION_EXTRA_EPILOGUE. + * tm-altos3068.h (FUNCTION_EXTRA_EPILOGUE): Define it. + + * Makefile: Use $< wherever appropriate. + Also put definitions of customization vars before the comments + saying how to override them. + +Sat Aug 5 14:15:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (sne): Typo in opcode name. + + * tree.h (struct tree_identifier): Delete redundant/unused error_locus. + +Fri Aug 4 00:04:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (const_hash, compare_constant_1, record_constant_1): + Compare types only for record constructors, not for array constructors. + + * dbxout.c (dbxout_parms): When outputing parm from home in local slot, + with address from the RTL, don't do big-endian correction on it. + + * c-typeck.c (build_unary_op): Do default conversion for unary +. + + * cccp.c (rescan): Accept comments between macro and its args. + + * c-decl.c (lang_decode_option): -traditional implies writable strings. + + * cccp.c (trigraph_pcp): Make warning msg more accurate. + + * c-typeck.c (c_expand_asm_operands): Delete the default promotion + which was inserted mysteriously since 1.35. + + * global-alloc.c (global_conflicts): Allocate regs_set only once. + Make it twice as big since clobbers are stored twice. + + * sparc.md (block move patterns): Record and use alignment operand. + * out-sparc.c (output_block_move): Get alignment from there. + (output_size_for_block_move): Greatly simplified. + + * tm-i386v.h (PCC_BITFIELD_TYPE_MATTERS): Define it. + + * stor-layout.c (layout_record): Anonymous bitfields don't affect + overall structure alignment, in PCC_BITFIELD_TYPE_MATTERS case. + + * loop.c (strength_reduce): Prevent hard reg from becoming biv or giv. + + * combine.c (subst): Simplify (eq (neg ...) (const_int 0)). + +Thu Aug 3 13:08:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx): For (op var const) special cases, also check + for constant as first argument. + + * c-decl.c (pushtag): For global_binding_level, make permanent nodes. + + * expr.c (do_store_flag): Put the CLOBBER before the comparison. + + * expr.c (emit_push_insn): Conditionalize recent changes + on no FIRST_PARM_CALLER_OFFSET, so they don't happen on sparc. + + * out-sparc.c (gen_scc_insn): + Don't be confused by CLOBBER emitted by do_store_flag. + Skip past such insns looking for last_insn. + Don't alter last_insn; instead, patch it to a NOTE and emit new insn. + + * varasm.c (const_hash, compare_constant_1, record_constant_1): + For a CONSTRUCTOR, hash/compare/record type as well as elts. + + * cse.c (cse_insn): July 18 change was wrong. + Now, invalidate at the beginning any regs explicitly clobbered + so they will not be substituted for if they appear as inputs. + * sparc.md (movstrsi): Copy addresses to temp regs, then use them. + + * loop.c (record_giv): When comparing life spans for setting + ->forces, use luids consistently, not uids. + + * sparc.md (ashlsi3, ashrsi3, lshrsi3): Truncate constants mod 32. + +Wed Aug 2 17:50:30 1989 Richard Stallman (rms at sugar-bombs) + + * mips.md (patterns to move a subreg): Deleted. + +Sun Jul 30 19:23:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (process_command): Skip `-b' like `-B', in 2nd scan. + + * xm-sunos4.h: Deleted. + * tm-sparc.h, tm-sun3.h: Define LINK_SPEC here instead. + * tm-sun4os3.h: Undef it here. + * tm-sun3os3.h, tm-sun3os3nf.h: New files to undef LINK_SPEC. + * config.gcc: Use those new files where needed. + + * config.gcc: Delete sun3-fpa and sun3-os4-fpa. + * tm-sun3-fpa.h: Deleted. + + * cccp.c (do_include): Mention even non-ex files for -M. + + * out-mips.c (addr_compensate): Handle HImode. + * mips.md (Set HI from subreg of SI rule): + Allow operand in memory. + + * mips.md (cmpqi, cmphi): Patterns deleted. + (cmpsi, cmpsf, cmpdf): Change predicates to register_operand. + + * cexp.y (rule for ?:): Result is unsigned if either operand is. + + * expr.c (emit_push_insn): If PARTIAL > 0, load the partial regs + at the end, in case the rest of the push does a function call. + + * reload1.c (alter_frame_pointer_addresses): + After altering a PLUS, re-fetch CODE before scanning subexps. + + * stmt.c (assign_parms): Don't copy the arg pointer value + if it is also the frame pointer. If we do copy it, + inhibit REG_EQUIV notes for parms copied into pseudo regs + + * integrate.c (copy_for_inline, copy_rtx_and_substitute): + Set up filename and lineno fields of copy of ASM_OPERANDS. + +Sat Jul 29 18:58:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Handle struct-value-addr + passed in memory just like that passed in reg: + in either case, translate the pseudo-reg made in + expand_function_start. + (function_cannot_inline_p): Permit inlining in that case. + But reject it if using pcc-style return convention. + + * stor-layout.c (layout_type): Consider STRICT_ALIGNMENT + for ARRAY_TYPE just as for RECORD_TYPE. + +Wed Jul 26 12:54:59 1989 Richard M. Stallman (rms at mipos3) + + * cse.c (fold_rtx): If WIDTH is zero for binary operator, + look at the modes of the original operands. + + * cse.c (cse_insn): Set prev_insn_explicit_cc0, for (set (cc0) INT). + (predecide_loop_entry): Likewise. + (fold_rtx): Look at it, for (if_then_else (cc0) ...). + + * expr.c (expand_builtin): Pass back return value from + __builtin_saveregs. + + * stmt.c (assign_parms): Allow arg pointer reg not to be fixed. + If it is not, copy it to a pseudo reg and use that later on. + +Tue Jul 25 15:42:04 1989 Richard M. Stallman (rms at mipos3) + + * expr.c (expand_builtin): New builtin __builtin_classify_type. + * tree.h, c-decl.c: Additional support. + + * flow.c (mark_used_regs): Treat arg pointer like stack pointer. + + * expr.c (emit_library_call): + Pass (tree)0 as TYPE arg to FUNCTION_ARG, etc. + +Mon Jul 24 11:18:10 1989 Richard M. Stallman (rms at mipos3) + + * loop.c (regs_match_p): Fix braino. + + * integrate.c (copy_for_inline, copy_rtx_and_substitute): + Make ASM_OPERANDS constraint vector be shared like operand vector. + + * xm-iris.h: New file. + + * Makefile (stage4): New target. + + * gnulib2.c (badd, bsub, bmul, bdiv): If want long value from + arithmetic, widen the operands first. + (__div_internal aka bdiv): Rename to __bdiv. + + * sparc.md (seq combination patterns): Fully initialize cc_status. + + * expr.c (emit_push_insn): Like July 19 change, for BLKmode. + + * stmt.c (expand_function_end): Stack-restore for alloca + is now done after the return_label. + + * loop.c (scan_loop): Set MAYBE_NEVER for conditional jump to loopbeg. + + * integrate.c (copy_rtx_and_substitute): Allow mapping of hard regs. + (expand_inline_function): Always create parm_map. + Handle structure value that way if nec. even if no parms. + Otherwise, find the pseudo used in the function to hold the + structure address, and map it to a new pseudo. + + * expr.c (expand_call): + Use mark_addressable to make FNDECL addressable. + * c-typeck.c (mark_addressable): No longer static. + + * cse.c (cse_insn): Modify last change: don't canon_reg + for hard regs inside clobbers. + + * expr.c (expand_assignment): ALIGN arg to store_field comes from + the structure, not from the value stored. + +Fri Jul 21 16:23:45 1989 Richard M. Stallman (rms at mipos3) + + * stmt.c (warn_if_unused_value): Don't warn for a cast + around a MODIFY_EXPR. + + * tm-hp9k320.h (PCC_STATIC_STRUCT_RETURN): Undefine it. + (CPP_PREDEFINES): Add some. + + * combine.c (simplify_and_const_int): + Simplify (and (ashiftrt (zero_extend FOO) N) M). + + * optabs.c (expand_binop): When widening, + for some operations we need not actually extend. + +Thu Jul 20 16:16:35 1989 Richard M. Stallman (rms at mipos3) + + * Makefile (insn-emit.o): Depend on insn-codes.h. + + * stmt.c (check_for_full_enumeration_handling): + Handle all cases for TYPE_NAME of enum type. + +Wed Jul 19 17:00:39 1989 Richard M. Stallman (rms at mipos3) + + * fold-const.c (fold_convert): Don't fail to force_fit_type. + + * expr.c (emit_push_insn): When pushing only part of scalar on stack, + adjust stack offset not to count the words not pushed. + + * stmt.c (expand_function_end): Always put return structure address + in return register. + + * c-typeck.c (process_init_constructor): Assume 0 for nameless field. + + * recog.c (general_operand, memory_operand): + Check validity of mem address using the mode of the MEM. + + * fixincludes: When calling egrep, use redirect, not -s. + +Tue Jul 18 11:18:55 1989 Richard M. Stallman (rms at mipos3) + + * Makefile (bootstrap*): Pass value of libdir down. + + * cse.c (cse_insn): Do canon_reg on any CLOBBERs and USEs. + + * cse.c (cse_insn): Don't use no_labels_between_p to check + for jump to following label; find following label and compare. + + * combine.c (try_combine): Don't substitute into subreg(x)=y + if modes of x and y are not tieable. + + * out-i386.c (call_top_dead_p): Don't fail to check + the rtx code of the insns themselves. + + * i386.md (tstsf, tstdf): Don't discard TOS if not dead. + + * stupid.c: Don't use regs with PRESERVE_DEATH_INFO_REGNO_P + for pseudos which live across jumps or labels. + (stupid_life_analysis): Update last_jump_suid, last_label_suid. + (stupid_mark_refs): Use those to set reg_crosses_blocks. + (stupid_find_reg): Check that data, passed from stupid_life_analysis. + + * toplev.c (main): Avoid using caddr_t. + + * mips.md (inverted bgeu peephole): Typo in opcode. + +Mon Jul 17 12:29:45 1989 Richard M. Stallman (rms at mipos3) + + * i386.md (mulb patterns): Turned off due to assembler bug. + + * rtl.c (read_name): Use 0, not NULL, for character. + + * alliant.md (movqi): Typos in mov opcodes. + + * tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P): + Use CONST_DOUBLE_LOW, etc. + + * stmt.c (expand_function_end): Check value of EXIT_IGNORE_STACK, + not just whether defined. + + * i386.md (seq, etc.): New patterns. + * expr.c (do_store_flags): If result is wrong mode, + ensure rest of bits are cleared. + Before storing low part of TARGET, emit a CLOBBER for it. + + * i386.md (load address): Use an immediate add if possible. + + * i386.md (ashlsi3): Don't generate leal; shift is faster. + + * Now struct_value_rtx is 0 to treat it as a parm. + * expr.c (expand_call): Implement that. + * integrate.c (expand_inline_function): Don't freak out. + * tm-apollo68.h (STRUCT_VALUE): Make it 0. + + * On 386, called function must pop the structure value address. + * tm-i386.h (STRUCT_VALUE): Don't change this. + Address is now pushed but not counted as a parm. + * out-i386.c (function_epilogue): Use ret $4 to pop that address. + * output.h: Declare the current_function_... variables. + * final.c: Include output.h. + + * varasm.c (make_decl_rtl): Insert missing `else', validating reg decl. + +Fri Jul 14 14:12:17 1989 Richard M. Stallman (rms at mipos3) + + * out-sparc.c, out-spur.c (output_move_double): + Fixed typo, addreg0 => addreg1. + + * c-decl.c (lang_decode_option): Handle -fshort-enums. + (finish_enum): In that case, give enum minimum number of bytes. + * toplev.c (main): Default flag_short_enums. + * toplev.c, flags.h (flag_short_enums, flag_signed_char): + Define those flags here, not in c-decl.c and c-tree.h. + + * i386.md (mulqi3, umulqi3): New patterns. + + * c-convert.c (convert_to_integer): Tighter restrictions on + distributing truncation through max, min, and multiplication. + If operands were extended from unsigned, make the operation + unsigned. + + * cccp.c (main): Fix bug where #include <...>, when -I- was used, + failed to search standard dirs and/or searched some dirs + intended only for #include "...". + + * tm-mips.h (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): + Increment push_loc after store or load, not before. + +Thu Jul 13 11:24:30 1989 Richard M. Stallman (rms at mipos3) + + * emit-rtl.c (add_insn_after): Don't update last_insn + if insn is in a sequence. Instead, update end of sequence. + + * stmt.c (fixup_var_refs): Update end of stacked sequence. + + * stmt.c (expand_function_start): Set result rtl before assign_parms. + + * optabs.c (emit_unop_insn): Set PREV_INSN after preliminaries. + + * stmt.c (warn_if_unused_value): Do CONVERT_EXPR like NOP_EXPR. + + * stmt.c (expand_function_start): Make sure parm_birth_insn + is a NOTE. + + * Makefile (clean): Delete tmp-insn-*. + +Wed Jul 12 14:24:12 1989 Richard M. Stallman (rms at mipos3) + + * i386.md (mulqi3): Restrict operand 2 to `q' reg. + + * reload1.c (choose_reload_regs): Check HARD_REGNO_MODE_OK + for regs to be inherited. + Also check HARD_REGNO_MODE_OK at end for modes of both + reload_in and reload_out as well as reload_mode. + + * Makefile (maketest): Update for config subdir. + +Tue Jul 11 16:29:57 1989 Richard M. Stallman (rms at mipos3) + + * integrate.c (copy_decl_tree): Copy TREE_USED of each LET_STMT. + + * make-cc1.com: Changes by Angel Li. + Define variables CC, CFLAGS, LDFLAGS, LIBS. + Use LIBR library, not LIB. Specify a /INC in CFLAGS. + Use MCR to run the gen* files. Add some comments. + * make-cccp.com: Similar. + * config-gcc.com: New file. + + * stmt.c (assign_parms): Compute parm alignment from passed type. + + * c-typeck.c (actualparameterlist): Instead of truncating + and then promoting for PROMOTE_PROTOTYPES, go straight to int. + + * c-parse.y (setspecs): Save old current_declspecs on a stack. + (decl, component_decl): Restore from that stack. + +Wed Jul 5 15:01:00 1989 Richard Stallman (tiemann at yahi) + + * tm-aix386.h, xm-aix386.h: New files. + + * loop.c (check_dbra_loop): Handle either test or compare + for insn two before loop end; detect and reject anything else. + + * expr.c (expand_call, expand_builtin): If alloca is done, + set current_function_calls_alloca. + * stmt.c (expand_function_end): If so, generate code to save and + restore the stack pointer, if not EXIT_IGNORE_STACK. + + * ns32k.md (movsi): Fixes for moving from fp or sp. + + * tm-mips.h (ASM_OUTPUT_ASCII): Start new .ascii every 256 chars. + +Tue Jul 4 11:01:00 1989 Richard Stallman (tiemann at yahi) + + * reload1.c (choose_reload_targets): Don't depend on + reload_spill_index when cancelling invalid inheritance. + Also, abort if trying to preserve death info + on a spill reg used in operand addressing. + + * fold-const.c (fold): Don't fold "foo"[n] here. + * expr.c (expand_expr): Do it here. + Handle wide strings correctly. + + * i386.md (movsf,movdf): Disallow mem-mem moves. + Enable mem-to-reg moves. + + * c-decl.c (finish_{struct,enum}): Warn if inside parm decls. + (in_parm_level_p, declare_parm_level): Record when inside. + * c-parse.y (parmlist, parmlist_or_identifiers): Call + declare_parm_level. + + * c-decl.c (parmlist_tags_warning): Revise warning message text. + + * tm-hp9k320.h (ASM_SPEC): Pass -V switch to assembler. + + * tm-sun386.h (ASM_START_FILE): Truncate filename to 14 chars. + + * c-typeck.c (decl_constant_value): Use only literal values. + +Sat Jul 1 17:29:54 1989 Richard Stallman (tiemann at yahi) + + * integrate.c (copy_rtx_and_substitute): Don't make nested SUBREGs. + + * stmt.c (expand_function_start): Set new global + current_function_returns_pointer. + + * stmt.c (get_frame_size): Return the size, not the offset. + * integrate.c (expand_inline_function): When setting FP_DELTA, + compensate for this change. + * tm-alliant.h,tm-mips.h,tm-sparc.h,tm-tahoe.h + (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Compensate. + + * out-mips.c (function_arg): Return 0 for BLKmode. + + * tm-mips.h (FUNCTION_INCOMING_ARG): Delete; no register windows. + * out-mips.c (function_inarg): Delete; no longer used. + + * mips.md (addsi3): Use register_operand for operands 0,1. + (load address): New pattern, following movsi. + (fix_trunc*): Use trunc insn, not cvt. + (cmpfs + bgt peephole): Operands were backwards in template. + + * gcc.c (main): Record in explicit_link_files which input files go + straight to linker. If linker is not run, complain about them. + (execute): Increment execution_count, to show we were called. + + * gcc.c (validate_all_switches): Check ASM_SPEC, CC1_SPEC, etc., + so we find all switches that could be valid. + + * varasm.c (output_constructor): Position fields according to + DECL_OFFSET; don't try to compute alignment here. + + * tm-sparc.h (PCC_BITFIELD_TYPE_MATTERS): Define this. + + * reload1.c (emit_reload_insns): Fix stupid error in last change. + + * c-decl.c (duplicate_decls): If redeclaring builtin, give error is + type mismatched; otherwise warn only if -W. + + * jump.c (jump_back_p): Verify that PREV is not null. + +Mon Jun 26 13:50:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_regs): If number of reloads needing + spill regs exceeds n_spills, don't inherit any reloads. + + * sdbout.c (sdbout_record_type_name): Dumb error in last change. + + * reload1.c (emit_reload_insns): Extend last change: don't use + equiv reg if reg is in use at same stage of insn, either. + +Sun Jun 25 00:00:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): Don't use an equivalent register + to reload from, if that register was used for reloading + earlier in this insn. + + * sdbout.c (sdbout_record_type_name): Handle a TYPE_DECL as the + type name. Get rid of TYPE_TAG_NAME as separate macro. + + * optabs.c (emit_cmp_insn): Args to memcmp are addresses, not blocks. + + * reload1.c (choose_reload_regs): Typo, clearing reload_override_in. + + * tm-i386.h: Add register classes SIREG and DIREG. + (enum reg_class, REG_CLASS_NAMES): Define class names. + (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Define their contents. + (REG_CLASS_FROM_LETTER): Define letters `S' and `D'. + +Sat Jun 24 00:17:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (keep_next_level): New function. + (struct binding): New slot `keep' says make a LET_STMT for this level. + (pushlevel, poplevel): Implement that. + * c-parse.y (stmt exprs): Call keep_next_level. + + * sdbout.c (plain_type_1): Handle REFERENCE_TYPE, METHOD_TYPE. + Correct for size less than 0. + (plain_type): Correct for size less than 0. + + * global-alloc.c (mark_reg_set): For CLOBBERs, call mark_reg_clobber. + + * reload1.c (order_regs_for_reload): Among regs explicitly used, + prefer those used less often. + + * reload1.c (choose_reload_regs): If we find alternate place + to reload from, verify it after all reloads assigned. + New variable reload_override_in used for this. + + * combine.c (record_dead_and_set_regs): Look inside SIGN_EXTEND and + STRICT_LOW_PART for place being set. + (subst): When using reg_last_set to find what a register contains, + verify the entire register was set. + + * toplev.c (rest_of_decl_compilation): Report invalid register name. + +Fri Jun 23 13:19:41 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-hp9k3bsd.h: New file. + * config.gcc: New target hp9k320-bsd. + + * gcc.c (record_temp_file): Don't add a name twice to one queue. + + * stmt.c (expand_expr_stmt): Call warn_if_unused_value. + (warn_if_unused_value): Code extracted from expand_expr_stmt. + Recurse to handle COMPOUND_EXPR. Don't warn about COND_EXPR. + + * tm-encore.h (DBX_REGISTER_NUMBER): Override tm-ns32k.h; + return operand unchanged. + + * reload1.c (emit_reload_insns): Don't use recog_memoized + on an asm. + + * jump.c (delete_insn): Update last_insn. + * emit-rtl.c (set_last_insn): New function. + + * reload1.c (reload): Put a note at end of insn chain. + + * gcc.c: Put cpp output of .S file into a .s file. + +Thu Jun 22 22:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_binop, expand_unop): Emit queue before library call. + It is done within emit_library_call, and cse screws up if there is a + queued insn in the middle of a cse-able sequence. + +Wed Jun 21 11:57:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-mips.h (CPP_PREDEFINES): Define -Dunix. + + * reload.c (combine_reloads): Combined reload needed for entire insn. + + * c-parse.y (yylex): Braino checking for out-of-range escape seq. + + * stor-layout.c (layout_union): Handle PCC_BITFIELD_TYPE_MATTERS. + (layout_struct): Don't let a bitfield cross the storage unit + of its type, if PCC_BITFIELD_TYPE_MATTERS. + +Tue Jun 20 00:03:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (get_or_assign_label): Let CONSTANT_ALIGNMENT specify + alignment of the constant. + CONSTANT_ALIGNMENT is a new optional macro. + + * varasm.c (force_const_mem, get_or_assign_label): + Make buffer bigger. + + * toplev.c (print_target_switch_defaults): New fn called for -version. + + * toplev.c (compile_file): Detect error closing output file. + + * stor-layout.c (fixup_unsigned_type): Don't shift by 32. + + * stmt.c (emit_case_nodes): Pass UNSIGNEDP along to emit_cmp_insn. + + * stmt.c (expand_end_case): If index is narrow and cannot be + directly compared, widen it just once. + + * c-parse.y (yylex): Support multi-character constants. + Thorough rewrite of char constant parsing. + + * c-decl.c (pushdecl): Replace local extern function decl with + previous global decl if latter is inline, or builtin, or has + more arg type info. + + * hard-params.c (xmalloc): Define it, for alloca.c. + + * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Override -D in Makefile. + + * expmed.c (store_fixed_bit_field): Avoid shift by 32. + + * stmt.c (expand_function_start): Emit a NOTE_INSN_FUNCTION_BEG. + * final.c (final_scan_insn): For SDB output, do the + sdbout_begin_function at that note. + + * reload1.c (choose_reload_regs): If a reload reg inherits + from a previous reload, verify safety after all reloads are assigned. + + * c-decl.c (build_enumerator): Remove no-op casts. + + * reload.c (find_reloads): If an earlyclobber operand matches + an input operand it is constrained to match, that's not a problem. + If an earlyclobber operand loses due to earlyclobber, its matching + input operand also loses. + + * reload1.c (choose_reload_regs): Don't use result of find_equiv_reg + if that reg is used for reloading in an earlier part of the insn. + + * cse.c (fold_rtx): If WIDTH is 0, don't try sign-extending ARG0, ARG1. + + * Makefile (hard-params*): Use $(OLDCC). + + * c-typeck.c (c_alignof): No warning for -pedantic. + + * c-parse.y (readescape): Don't have both error and warning + on one hex escape. + + * c-parse.y (yylex): Treat vertical tab as white space. + (skip_white_space): Likewise. + + * c-parse.y (datadef): If pedantic, warn for stray semicolon. + + * expr.c (expand_increment): Pass accurate unsignedp arg + to expand_binary_op. + +Mon Jun 19 13:36:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (news, news-gas): Use xm-m68k.h. + + * final.c (output_asm_label, output_addr_const): Make buf bigger. + + * cexp.y (main): Handle EOF on input. + (lookup, warning): Provide as a dummy. + (is_idchar, is_idstart): Declare as unsigned char. + + * cexp.y (parse_escape): Use TARGET_NEWLINE, etc., as values. + Support hex escapes. Warn if octal or hex escape doesn't fit in char. + + * cexp.y (yylex): Sign-extend char constants if appropriate. + + * genemit.c: Make insn-emit.c include insn-flags.h. + + * gcc.c: Move record_temp_file past page which declares vflag. + + * integrate.c (expand_inline_function): If copying an insn with + a REG_EQUIV note, make a similar note. + + * Allow reload regs to be reused for parts of an insn. + * reload.c (find_reloads): Classify each reload for which part + of the insn it is needed in. + (find_reloads_address, etc.): Pass down the overall operand + that this is part of, to record it on address reloads. + (push_reload): Record that for each reload. + * reload1.c (reload): Compute maximum needs of any part of the insn. + (choose_reload_regs): Part of old choose_reload_targets. + Hairier criteria for inheriting reloads and for which ones are + available for the next insn to inherit. + (emit_reload_insns): The rest of old choose_reload_targets. + Emit reload insns in proper order according to where they are needed. + * Record `reload_reg_in_use' separately for each part of the insn. + (mark_reload_reg_in_use): New function. + (reload_reg_free_p, reload_reg_free_before_p): New functions. + (reload_reg_reaches_end_p): New function. + + * expr.c (expand_expr): Emit queue in X+=(Y?Z:A) optimization. + + * rtlanal.c (rtx_equal_p): Check vectors have same length. + +Sun Jun 18 12:16:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_expr_stmt): Maybe warn if top-level operator + makes an unused result. + + * gcc.c (delete_temp_files, delete_failure_queue): + If -v, report failures in unlink. + + * Makefile (includes): New target to run fixincludes. + (install): Swap arms of if-statement. + +Sat Jun 17 12:41:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_union): Arg to error_with_decl was missing. + + * ns32k.md (movsf): Use CONST_DOUBLE_LOW to extract from CONST_DOUBLE. + + * loop.c (consec_sets_giv): Change type of force, force2. + + * combine.c (dump*): Declare arg as FILE*. + + * Makefile (clean): Delete hard-params. + + * flow.c (life_analysis): Use a special obstack for the temporary + regsets. + + * m68k.md (clr pattern): On 68000, use moveq to clear data reg. + + * gvarargs.h: File varargs.h renamed. + The old name conflicted with , now that -I. is used. + * tree.c, expr.c, emit-rtl.c: Change #include commands. + * Makefile (install): Install gvarargs.h under name varargs.h. + * gcc.c: Include gvarargs.h, not system's varargs.h. + + * Makefile: Use -I$(srcdir) before -I$(srcdir)/config. + * config/tm.h: Deleted; didn't work if config was a symlink. + + * cse.c (cse_insn): Record location of inner_dest + so it can be replaced properly if a new MEM rtx is made. + +Fri Jun 16 14:17:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * make-cc1.com: Compile and link rtlanal.c. + + * c-typeck.c (build_array_ref): Call fold on the array ref. + * fold-const.c (fold): Simplify array ref of string constant. + + * stmt.c (expand_asm_operands): Fix error message. + + * Makefile (gnulib2): Remove old members before compiling new. + Fix stupid errors. + * gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions. + + * genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete. + Add 3 to MAX_RECOG_OPERANDS. + + * cse.c (fold_cc0): Extra arg specifies machine mode. + Callers changed. + (cse_insn): Record original mode of each src for this purpose. + +Thu Jun 15 12:35:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c. + Use long long for argument type. + + * rtlanal.c (may_trap_p): Moved here from loop.c. + Return 1 for division by explicit zero. + + * reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses): + Rerecognize insns which are changed by this. + + * i386.md (call_value): Don't return prematurely. + + * alliant.md (movqi): Handle moving Aregs to mem and vice versa. + (bftst -> btst): Restrict to bitpos less than 8 + so operand may be non-offsettable. + (nop): New pattern. + (return): Was disabled; now deleted. + * tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it. + * out-alliant.c (output_btst): Same change as in out-m68k.c + + * alliant.md, out-alliant.c: Offsetable -> offsettable. + + * c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile. + + * c-decl.c (duplicate_decls): Don't save inline function data + from previous definition if a new *definition* is seen. + + * integrate.c (access_parm_map): Handle subregs and constants. + + * stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0. + + * tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it. + + * tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h. + +Fri Jun 9 01:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (float.h): Avoid using $(MAKE). + + * Don't cram two things into STMT_BODY of a LET_STMT. + * tree.h (struct bind_stmt): New field, subblocks. + (STMT_SUBBLOCKS): New macro to access it. + * print-tree.c (walk): Print new field. + * tree.c (build_let_stmt): Store the old BODY arg into subblocks field. + * c-parse.y (stmt expr rule): Put rtl expr alone into body field. + * dbxout.c (dbxout_block): Recurse on subblocks, not body. + * sdbout.c, symout.c: Likewise. + * integrate.c (copy_decl_tree): Likewise. + * stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise. + * expr.c (expand_expr): For LET_STMT, simply use its body. + + * machmode.def: Add sixth arg to each entry. + * tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE. + * rtl.h (GET_WIDER_MODE): New macro; table in rtl.c. + * expr.c (expand_expr): Use that for widening multiply. + + * stmt.c (fixup_var_refs_1): When converting MEM to QImode for + bit field, adjust the address if possible to make bitpos + less than 8. + * m68k.md (bftst -> btst): Restrict to bitpos less than 8 + so operand may be non-offsettable. + + * cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file. + + * out-m68k.c (output_btst): Handle COUNT bigger than size of unit. + + * cccp.c (CHECK_DEPTH): Macro to detect instack overflow. + (finclude, macroexpand, expand_to_temp_buffer): Use that. + + * cccp.c (rescan): Don't check for disabled macro if traditional. + (macroexpand): Don't disable macro if traditional. + + * sdbout.c (sdbout_one_type): Take out last change; assembler barfs. + + * c-parse.y (maybe_attribute): Eliminate #-syntaxes. + Make ATTRIBUTE the name for __attribute. + + * c-parse.gperf: Add __attribute{,__} and __signed{,__}. + * c-parse.y: Install results of that change. + + * Fix bug in sizeof ({...}). + * c-decl.c (poplevel): Set TREE_USED. Return the LET_STMT. + * c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT, + clear its TREE_USED, and use it as the result. + * expr.c (expand_expr): Allow LET_STMT as an expr. + Set its TREE_USED and expand the TREE_VALUE of its body. + * dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set. + * sdbout.c, symout.c: Likewise. + +Thu Jun 8 00:06:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0 + to 0.0e0 as well. + + * flow.c (life_analysis): Prevent allocation of regs live at setjmp + on certain machines. Controlled by LONGJMP_RESTORE_FROM_STACK. + Sets reg_live_length to -1. + * local-alloc.c (block_alloc): Be prepared for that. + * tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it. + + * gnulib2.c (all interfaces): Declare args and values as long long, + and split them using unions. + + * loop.c (check_dbra_loop): Don't reverse loop if there are two + refs to varying addresses. Consider foo[i] = foo[i-1]. + (count_nonfixed_refs): Subroutine to count them. + + * cexp.y: Distinguish signed and unsigned. + An integer value is now represented by a struct. + All rules for arithmetic changed. + (yylex): Adapt to change in yylval data type. + + * limits.h (LONG_MIN): Make sure it's a signed long. + + * sdbout.c (sdbout_one_type): Output types of fields first, + if they are structs. Don't go through pointers. + (sdbout_field_types): Subroutine for that + +Wed Jun 7 13:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Switch to /usr/include before doing vuid_event.h. + Use $2 as output directory for sed. + + * tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx. + * tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling. + + * expr.c (expand_increment): Typo testing for BImode component. + + * convex changes from csmith: + * tm-convex.h: use EXTRA_SECTIONS to do .bss. + out-convex.c: set_section, align_section are now unused. + * convex.md: add pattern to pick an A-reg destination for sums + whose source involves a dedicated A reg (frame or arg pointer) + * convex.md: immediate and, or, xor instructions store a 32-bit + result. Fix instructions that assumed it was 64. + + * mips.md (probe): New pattern to create stack space. + + * Makefile (float.h): Ignore errors from hard-params. + Specify ./ to run it. + +Tue Jun 6 15:45:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-tahoe.c: Rename `offsetable' to `offsettable'. + + * tahoe.md (nop): New pattern. + + * i386.md (umul...): Constrain operand 1 as `0', not `a'. + `a' sometimes wanted two a-regs for operands 0 and 1. + + * cccp.c: Forward-declare some structs. + + * c-decl.c: Rearrange fcn fwd decls and struct decls. + + * expr.c: Move some fcn fwd decls after structs their args use. + * genpeep.c, genextract.c: Likewise. + + * loop.c: Forward-declare some structs. + + * stmt.c: Move decls of structs before those of static functions. + + * loop.c (strength_reduce): Delete extra arg to check_eliminate_biv. + + * integrate.c (expand_inline_function): Supply missing arg + to convert_to_mode. + + * gcc.c (handle_braces): Supply missing arg to do_spec_1. + + * explow.c (lookup_static_chain): Accept a context arg. + + * expmed.c (store_split_bit_field): Pass ALIGN arg + to extract_fixed_bit_field. + + * expr.c (expand_assignment): Convert TYPE_ALIGN to bytes. + (store_constructor, expand_expr): Likewise. + + * tm-m68k.h: NO_ADDSUB_Q conditionals turn off all addq, subq insns. + (Fully supported only with MOTOROLA and HPUX_ASM flags.) + + * jump.c (do_cross_jump): Don't die if LABEL is 0. + + * tm-mips.h (PRINT_OPERAND_PUNCT_VALID_P): New macro. + * tm-iris.h: New file. Unsplit lines accidentally split. + +Mon Jun 5 15:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (output_inline_function): Call init_function_start, + not expand_function_start. + * emit-rtl.c (restore_reg_data): No need to init reg_rtx_no. + + * stmt.c (init_function_start): Set current_function_returns_struct. + + * rtlanal.c (reg_set_between_p): New fn analogous to reg_used_between_p + * loop.c (strength_reduce): Reject biv initial value which is altered + subsequently before actual loop start. + + * rtlanal.c: New file split out from rtl.c. + Has things not used in the gen files. + + * loop.c (strength_reduce): Reject biv initial value in a hard reg + clobbered by an intervening function call. + + * tree.c (get_identifier): New flag needed to enable id-clash warnings. + (start_identifier_warnings): Set that flag. + * c-decl.c (init_decl_processing): Call that, after making built-ins. + +Sat Jun 3 14:41:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (final_scan_insn): No basic block profiling at jump tables. + + * stmt.c (expand_decl): Probe the stack to make pages exist. + * expr.c (expand_builtin): Likewise, for alloca. + + * move-if-change: Specify /bin/sh. + + * tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): Don't accept PLUS + with constant operands but not inside CONST. + + * integrate.c (output_inline_function, save_for_inline): + Save stack_slot_list, and restore it for actual output. + * emit-rtl.c (gen_inline_header_rtx): New arg for this. + + * emit-rtl.c (restore_reg_data): Initialize reg_rtx_no. + (restore_reg_data_1): Handle reg_rtx_no jumping past + reg_pointer_flag_length. + + * reload1.c (alter_reg): Do nothing if regno_reg_rtx has 0. + + * integrate.c (copy_rtx_and_substitute): Typos for stack parm + addresses in PLUS case. + + * genoutput.c (gen_insn, gen_peephole): Make output_n fns static. + (output_prologue): Use new macro DEFAULT_MACHINE_INFO if defined. + + * tree.h (enum machine_mode): Define MAX_MACHINE_MODE as in rtl.h. + +Fri Jun 2 15:40:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (do_include): A file included via a system header file + counts as a system header file for -M. + + * gnulib2.c: Support boolean ops and shifts. + + * loop.c (emit_iv_inc): Use emit_iv_init_code. + + * rtl.h (CONST0_RTX): Don't try to cast abort. + + * tm-news.h (PRINT_OPERAND_ADDRESS): Fix typo `reg_name'. + Delete two garbage lines. + + * loop.c (eliminate_biv): Use emit_iv_init_code to compute comparison + value. If value is constant, recognize the insn, and if that fails, + put the value in a register. + +Thu Jun 1 16:56:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (dump): Don't die if rtx components are null. + + * expmed.c (expand_mult_add): New fn to do A * X + B. + (make_tree): New subroutine. + * loop.c (emit_iv_init_code): Use that. Much simpler now. + +Tue May 30 17:20:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (fold): Use TREE_SET_CODE to store in tree codes. + + * tree.h (struct tree_common): Make `code' an unsigned int. + (TREE_CODE, TREE_SET_CODE): Put in casts. + + * optabs.c (emit_cmp_insn): Supply all the args in recursive calls. + + * toplev.c (report_error_function): Fix typo; METHOD_TYPE missing. + + * fixincludes: Add code to make internal non-directory links. + +Mon May 29 21:36:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (find_exec_file): Try both with and without machine_suffix. + (find_file): Use machine_suffix here too. + +Sat May 27 00:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (decompose): OFFSET wasn't initialized. + + * cse.c (cse_main): Assign monotonic cuids. + (make_regs_eqv, CHEAPER): Use cuids, not uids. + (cse_end_of_basic_block): Return a cuid, not a uid. + + * expr.c (expand_builtin): For BUILTIN_SAVEREGS, range of regs + moved included one extra previous insn. + + * emit-rtl.c (emit_line_note): Don't check -g here. + (emit_note): For line number when no -g, increment cur_insn_uid anyway. + * stmt.c (expand_start_case): Always output a NOTE_INSN_DELETED. + + * loop.c (loop_optimize): Don't count line-number NOTEs for luids. + Prevents -g from affecting optimization decisions. + +Fri May 26 17:31:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (block_alloc): Don't count notes in insn_number. + Prevents -g from affecting order of allocation. + +Thu May 25 14:12:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (block_alloc): Clear full length of regs_live_at. + + * ns32k.md (cmpsi): Make this the first cmp pattern. + + * jump.c (do_cross_jump): Skip NOTEs while checking for existing label. + + * cse.c (cse_insn): When no-oping a jump, decrement use count of label. + (cse_basic_block): If label use count is 0, go past it. + + * integrate.c (access_parm_map): New fn, broken out of + copy_rtx_and_substitute, handles case of mem ref to stack arg. + (copy_rtx_and_substitute): Call it. + Also use it for address of a stack arg. + + * gen*.c (fatal): Declare 1st arg as string. + +Wed May 24 00:13:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (init_optabs): Handle movdi and movdf insns. + + * final.c (end_final): Realign locn ctr after outputting string. + + * tm-sparc.h (LINK_SPEC): Link bb_link.o before standard lib. + + * tm-sun386i.h (LINK_SPEC): Accept and ignore -sun386. + + * gcc.c (find_exec_file): Use machine_suffix. + (process_command): Set that for -b option. + + * integrate.c (function_cannot_inline_p): No size limit + for functions declared inline. + + * loop.c (skip_consec_insns): New fn, skip several insns or libcalls. + (force_movables): New fn, part of scan_loop broken out. + (ignore_some_movables): New fn, ignore a movable whose insn + is within another movable's libcall. + (scan_loop): Call those three. + Don't handle m->consec for zero-extend movables, since always 0. + +Tue May 23 12:58:24 1989 Joe Weening (weening at gang-of-four.stanford.edu) + + * config/alliant.md: + Removed operand classes 'x', 'y', 'G', 'H'. + Added "%." to many opcodes to simplify comparison with m68k.md. + Changed TARGET_68881 to TARGET_CE. + Changed floating-point insns to better describe the Alliant CE. + Most args to floating-point insns are now nonimmediate_operand. + Removed special insns for pushing doublewords onto stack. + Added non-CE versions of movsf and movdf to avoid using FP + registers in this case. + (float*i*f2): Don't allow immediate ops. + (sne): Fix typo, fsne => fsneq. + (call, call_value): Changed to always pop args from stack + upon return; this gives better code than before and conforms + to Alliant calling standard. + Incorporated some recent changes to m68k.md. + + * config/out-alliant.c: + (regno_reg_class): Removed FPA reg classes. + (output_move_const_double): Function not needed, removed. + + * config/tm-alliant.h: + Removed FPA registers and reg classes. + Target flags: changed TARGET_68881 to TARGET_CE, removed + TARGET_RTD, TARGET_REGPARM, TARGET_FPA. + Removed TARGET_CE test in several places since we need to + use FP regs even for non-CE programs. + (TARGET_VERSION, CPP_SPEC): Define for Alliant. + (CONDITIONAL_REGISTER_USAGE): Removed, not needed. + (FRAME_POINTER_REQUIRED): Defined. + (RETURN_POPS_ARGS): Defined. + (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): + Use fp0 to return floating-point values. + (FUNCTION_ARG): Remove TARGET_REGPARM code. + (FUNCTION_ARG_PARTIAL_NREGS): Always 0. + (FUNCTION_PROFILER): Define for Alliant. + (FUNCTION_EPILOGUE): Remove use of rtd instruction. + Renamed CC_IN_68881 to CC_IN_FP. + (NOTICE_UPDATE_CC): Incorporate changes that were made + in tm-m68k.h. + + * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. + +Tue May 23 12:58:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c: Don't include c-tree.h. + + * tree.c (build_index_type): Use sizetype for min and max values. + Convert maxval rather than clobbering it. + + * tm-hp9k320.h: Finish unterminated comment. + + * sdbout.c (sdbout_parms): Use gen_fake_label for anonymous parm. + +Sun May 21 12:58:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (aggregate_value_p): New fn says whether expression is a type + that functions cannot return as a scalar. + (assign_parms, expand_function_start): Use that. + * expr.c (expand_call): Likewise. + + * gcc.c (delete_failure_queue): New subroutine. + (delete_temp_files): No longer delete the failure queue. + (main): Delete failure queue after each failing compilation. + +Sat May 20 13:16:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (force_const_mem): New optional macro SELECT_RTX_SECTION. + + * mips.md: Change %u0 to %:. + (movsi): Add constraint alternative accepting address arg. + + * fold-const.c (mul_double): Special case for 2nd arg 2, 4, 8. + (combine): Special case shortcuts for plus, minus, mult, div. + + * stmt.c (expand_function_start): Simplify hairy statement for 3B1. + * expr.c (expand_call): Likewise. + + * math-68881.h: New file. + + * m68k.md (movqi): Handle moving aregs to mem and vice versa. + + * dbxout.c (dbxout_type): Don't test use_gdb_dbx_extensions + in cases that occur in C. + + * stmt.c (expand_function_{start,end}): Make DECL_RESULT's rtl 0 + when function returns no value. + + * tree.c (build_decl): Initialize DECL_PRINT_NAME, DECL_ASSEMBLER_NAME. + + * c-decl.c (store_parm_decls): Call init_function_start. + +Thu May 18 00:41:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_null_return_1): New arg USE_GOTO says jump to + return_label even if could otherwise use a return insn. + Make a return_label if we need one and don't have one already. + If have parm cleanups, always jump to cleanup_label. + (expand_null_return): Pass 1 for USE_GOTO if cleanups pending. + (expand_return): Set LAST_INSN if have local cleanups or parm cleanups. + Use that if jumping to tail-recursion label. + Optimization for returning a comparison is safe for local cleanups + but don't do it if there are parm cleanups. + Calling expand_null_return_1, pass 1 for USE_GOTO if local cleanups. + (this_contour_has_cleanups_p): New function. + + * stmt.c (init_function_start): New function, beginning of + expand_function_start broken out. + Use DECL_PRINT_NAME to get function's name. + (expand_function_start): Now two args, function and PARMS_HAVE_CLEANUPS + Compute RETURN_LABEL sooner; make one if parm cleanups. + If parms have cleanups, put scalar return value in pseudo-reg. + Don't mark that pseudo with REG_FUNCTION_VALUE_P. + (expand_function_end): Simplify decisions about output of return_label + and return insn. + If DECL_RESULT is pseudo-reg, copy it to real return reg. + + * stmt.c (expand_function_end): Handle ordinary struct values + like pcc, but only if unoptimized. + (expand_function_start): Make a return_label for ordinary struct value. + + * stor-layout.c (layout_type): Handle METHOD_TYPE like FUNCTION_TYPE. + (layout_decl): Allow TYPE_DECL. + + * stor-layout.c (layout_basetypes): Code for basetypes broken + out of layout_record. Sets the type size tentatively. + (layout_record): Start with that tentative size. + Also, don't do anything with CONST_DECL members. + + * stor-layout.c (layout_union): Simpler error report for static memb. + + * reload1.c (eliminate_frame_pointer): Reduce PUSH_ROUNDING + conditional to apply only to push instructions. + + * expr.c (expand_call): Fix stupid errors handling MAX_PARM_BOUNDARY. + * stmt.c (assign_parms): Likewise. + + * toplev.c (announce_function, report_error_function): + (error_with_decl, warning_with_decl): Use DECL_PRINT_NAME. + + * toplev.c (compile_file): Subtract integration_time from parse_time. + + * toplev.c (compile_file): Don't output read-only static variables + at end of compilation if address was not used. + + * toplev.c (rest_of_compilation): Handle flag_syntax_only. + + * toplev.c (main): Handle -g0 and -G0 options. + For -g and -G, set use_gdb_dbx_extensions. + + * toplev.c (main): Set `progname'. + (pfatal_with_name, fatal_io_error, {error,warning}_with_file_and_line): + (sorry): Print value of `progname', not "cc1". + + * tree.def: Delete FRIEND_DECL. Add PUSH_EXPR and POP_EXPR. + + * tree.c (simple_cst_equal): Handle INDIRECT_REF. + + * tree.c (lvalue_p): Handle METHOD_TYPE. Handle NEW_EXPR. + + * tree.c (copy_list): New function. + + * tree.h (struct tree_decl): New fields print_name and assembler_name. + (DECL_PRINT_NAME, DECL_ASSEMBLER_NAME): New accessors. + + * c-decl.c (LONG_DOUBLE_TYPE_SIZE): New compilation parameter. + +Wed May 17 22:07:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * dbranch.c (emit_delay_sequence): Reset insn code to -1 when + turning insn into a sequence so that it won't think that it matches + something in the md file. + + * dbranch.c (insn_eligible_p): Call refers_to_regno_p with a + non-zero range. + + * dbranch.c (pnote): Modified to make sure instruction clobbered + register is a set, rather than, say, a clobber. + +Wed May 17 14:01:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdbout_parms): Handle parm with no name. + + * loop.c (combine_movables): Test for overlap of zero-extend regs + was screwed up. + + * c-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, + since c defines sizeof (char) as 1. + (pointer_int_sum, pointer_diff): Use c_sizeof{,_nowarn}. + +Tue May 16 16:27:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_targets): Don't reuse regs + mentioned in reload_reg_rtx. + + * tm-tahoe.h, tahoe.md, out-tahoe.c, xm-tahoe.h: New files. + +Mon May 15 16:25:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Exit with explicit status 0 at end. + cd to /usr/include before cd to subtree root in case of relative link. + Create dir $LIB earlier. + When checking for a link, treat .. like an absolute target. + + * symout.c (symout_block_symbols): Give every local decl a typespec. + * cexp.y (parse_number): + * flow.c (life_analysis, dump_flow_info): + + * loop.c (consec_sets_invariant_p): Logic error accepted consec sets + of which only one was invariant. + + * expr.c (expand_expr): Use no subtargets inside loops. + * stmt.c (inside_loop): New function. + +Sun May 14 00:11:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h: Declare long long types. + + * c-parse.y (combine_strings): Make string contents saveable. + + * tree.c (savealloc): New function. + + * m68k.md (movdi): % missing in fmove%.d. + + * c-parse.y (yylex): Detect overflow past 64-bits. + Detect specially numbers not fitting in signed long long. + +Sat May 13 13:16:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (alter_frame_pointer_addresses): Preserve volatility. + + * varasm.c (output_constructor): Die if BITS_PER_UNIT is too big + for this function to work. + + * genpeep.c (match_rtx): For match_operator, match the operands, too. + + * varasm.c (output_constant): Use ASM_OUTPUT_DOUBLE_INT for DImode. + + * stor-layout.c (make_signed_type, make_unsigned_type): + (fixup_unsigned_type): Use HOST_BITS_PER_INT. + + * stor-layout.c (layout_type): Use TFmode if appro. + + * optabs.c (emit_cmp_insn): Use mode sizes to check cmpstrqi, cmpstrhi. + + * c-typeck.c (get_floating_type): Compare MODE against modes of types. + (signed_type, unsigned_type, signed_or_unsigned_type, type_for_size): + Handle long long types. + (digest_init): Don't assume width of `char' is BITS_PER_UNIT. + + * c-parse.y (yylex): For truncating chars, use width of `char' type. + Allow `ll' in int constants and make long long. + Also make long long if constant won't fit in an int. + + * c-decl.c (SHORT_TYPE_SIZE): Round up when dividing. + +Fri May 12 22:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * real.h: Allow multiple inclusion. + + * tm-sun386i.h (DBX_REGISTER_NUMBER): Bizarre renumbering. + +Thu May 11 00:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Fix non-ansi declaration of sprintf in X11/Xmu.h + + * c-parse.y (stmt from expr): Do default conversion if useful + for sake of ({...}). + + * sparc.md (andcc recognizer): Operand missing in subreg. + +Wed May 10 17:20:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtl.c (read_name): Error if name is missing. + (dump_and_abort): Don't print char args if -1. + + * i386.md (umulqihi3): Operand numbers were missing. + + * reload1.c (choose_reload_targets): Allow spill reg in find_equiv_reg + if it's free and correct class. + + * cse.c (canon_hash): Handle empty strings. + + * cccp.c (macroexpand): Newline newline treated like real white space + when stringifying. + + * Rename *offsetable* to *offsettable*. + +Tue May 9 22:54:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_type): Layout any variants of the type. + +Tue May 9 12:30:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * final.c (final_scan_insn, final): Added an argument to + final_scan_insn to disallow peephole processing (to turn it off + during delayed branch scheduling). + + * final.c (final_scan_insn): Made insn not matching any MD rtl a + criteria for delayed branch case. Moved delayed branch case to just + before real insn recognition to reduce the number of insns on which + recog_memoized is called. + +Mon May 8 15:02:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes (LIB): Allow overriding. + + * cccp.c: Don't search /usr/include/CC by default. + +Mon May 8 13:09:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * print-tree.c (dump): Fixed typo; IDENTIFIER ==> IDENTIFIER_NODE. + +Sun May 7 12:44:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (dump): TYPE_NAME may be IDENTIFIER or TYPE_DECL. + +Sat May 6 00:13:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.def: Define EXACT_DIV_EXPR, for when remainder known as 0. + * fold-const.c (combine, fold, div_and_round_double): Handle new code. + * expr.c (expand_expr): Likewise. + * c-typeck.c (pointer_diff): Use EXACT_DIV_EXPR. + + * integrate.c (expand_inline_function): Use size of passed type + for allocating stack slot with that type. + + * c-parse.y (maybe_attribute, attribute*): New syntax for Apollos. + These tokens currently not generated. + +Fri May 5 18:43:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c [USG]: Undefine FLOAT for sake of sys/param.h on hpux. + + * optabs.c (expand_binop): If backtracking, don't delete insns made + for -fforce-mem. + +Thu May 4 01:57:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_reloads): Don't compare an earlyclobber operand + with itself. + + * reload.c (immune_p): Constants and stack slots don't overlap. + + * Put no-ops in front of loops and labels, + to prevent confusion in the debugger. + * c-parse.y (loops and labels): Call emit_nop. + * stmt.c (emit_nop): New function--sometimes emit a no-op. + * *.md (nop): New insn. + + * expr.c (expand_call): Typo in arg to FIRST_PARM_CALLER_OFFSET. + +Wed May 3 01:34:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (scan_loop): Scanning around end of loop + should not set maybe_never. + + * Rename SELECT_VARIABLE_SECTION to SELECT_SECTION. + * varasm.c (get_or_assign_label): Use SELECT_SECTION if defined. + * varasm.c: Use EXTRA_SECTION_FUNCTIONS if defined (new macro). + + * mips.md: Change %u to %u0 to avoid error check. + + * tm-mips.h (TARGET_VERSNUM): Inc. to 1 08. + (TARGET_VERSION): Change strings. + (AL_DEBUG): Don't define it. + (HARD_REGNO_MODE_OK): Add some casts to int. + (STACK_ARGS_ADJUST): Name was misspelled. + (PRINT_OPERAND_ADDRESS): Just abort for MEM, POST_INC, etc. + (EXTRA_SECTIONS, SELECT_VARIABLE_SECTION, SELECTORS_EXTRA_SECTIONS, + SELECT_VARIABLE_CONST_SECTION): New macros. + (ASM_FILE_END): Change function name. + * out-mips.c (function_arg_advance): Delete debugging printfs. + (function_inarg, function_arg): Likewise. + (compare_collect, compare_restore): Add some. + + * reload1.c (reload): Fix handling of caller_save_needed. + + * stmt.c (expand_function_start): Clear caller_save_needed. + + * stmt.c (emit_case_nodes): Some compiler has trouble with calling + a function pointer. + * gnulib.c: likewise. + +Tue May 2 15:32:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (combine_movables): For zero extend, + do each from-mode separately. + +Mon May 1 00:18:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-apollo68.h: New file. + + * c-parse.y (is_reserved_word, hash): Add keywords `__asm__', etc. + * c-parse.gperf: Corresponding changes. + + * c-parse.y (check_newline): Set main_input_filename before + considering optional arguments. + + * final.c (final_scan_function): Return next insn to process. + Usually that's the following insn; occasionally, previous compare. + + * c-decl.c (DOUBLE_TYPE_SIZE): Wrong value. + + * reload.c (decompose): Failed to return value. + + * Support local specified-register variables. + * varasm.c (decode_reg_name): New function, cvt asmspec to regnum. + (make_decl_rtl): Call that. + * toplev.c (rest_of_decl_compilation): Handle local specified-register + declarations. + + * i386.md (tstqi, trunc*qi): Constrain to `q' regs. + + * loop.c (scan_loop, move_movables): ->global for zero-extend register + now means register is used outside range from where it is set + to the following label. Non-global zero-extend regs + may be entirely cleared. + + * loop.c (combine_movables): Loop that combines matching movables + broken out from scan_loop. + Now also combine non-global zero-extend registers with each other + if their lifespans don't overlap. + + * c-typeck.c (build_unary_op, ADDR_EXPR of a COMPONENT_REF): + Always convert to desired result type. + +Sun Apr 30 12:58:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (init_decl_processing): New macros parameterize int types. + CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE, + FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE. + + * fixincludes: Use sed instead of ex. No problem with split lines. + + * print-tree.c (dump): Print type's name, if any. + + * c-parse.y: Use __inline, not plain inline. + + * toplev.c: New option -fdelayed-branch. + (compile_file): Open and close dbranch dump file. + Collect and print dbranch time. + (rest_of_compilation): Optionally do dbranch scheduling, + only if HAVE_DELAYED_BRANCH. + (main): Handle -dd. + + * rtl.c (copy_rtx): Handle null pointers as code `e'. + + * final.c (dbr_sequence_length): New function. + (final_scan_insn): Most of `final' broken out. + Add support for SEQUENCE insns. + last_ignored_compare and new_block now top-level static. + + * c-parse.y (MAX_WORD_LENGTH): Long enough for __volatile. + +Sat Apr 29 13:03:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (asm statements): Output line numbers. + + * loop.c (emit_iv_init_code, emit_iv_inc, eliminate_biv): Copy + additive term rtx's to prevent sharing between insns. + + * c-parse.y (check_newline): Increment input_file_stack_tick. + * toplev.c (report_error_function): Describe input stack only if + changed. + + * c-decl.c (finish_struct): Reject zero width for named field. + + * tm-sun3.h (CC1_SPEC): Prevent error on `-sun3'. + * tm-sparc.h (CC1_SPEC): Prevent error on `-sun4'. + + * Makefile (cleanconfig): cleanlinks renamed; also delete gnulib. + (gnulib): Delete stamp-gnulib2 since gnulib2 should be redone after. + +Fri Apr 28 00:38:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (genix): Correct xm file name. + + * tm-genix.h: Undefine ASM_SPEC inherited from tm-encore.h. + + * Makefile: Make float.h using hard-params. + (clean): Delete float.h. + + * hard-params.c: New program. + + * varasm.c (assemble_variable): Use SELECT_VARIABLE_SECTION if defined. + (in_section): Use EXTRA_SECTIONS if defined. + + * toplev.c (compile_file): Call ASM_FILE_END if defined. + + * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Let config override. + + * loop.c (emit_iv_init_code): Force A to a reg if it isn't. + +Thu Apr 27 12:51:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-mips.h (ASM_START_FILES): Don't call print_options. + Don't call the funny abort-functions. + * out-mips.c: Delete funny debugging functions and aborts. + (print_options): #if 0. + (compare_restore): Test for COMPARE, not MINUS. + (mips_section_get, mips_output_external, mips_asm_final): New fns. + + * input.h: New file with *input_filename, lineno and input_file_stack. + Included in toplev.c and c-parse.y. + * c-decl.c (finish_function): LINENO is now arg. + * c-parse.y: Calls changed. + + * c-parse.y (check_newline): Handle `1' or `2' from cpp + by pushing or popping input_file_stack. + * toplev.c (compile_file): Push main input file on input_file_stack. + (report_error_function): If in include file, print the chain + of include-locations. + + * cccp.c (output_line_command): New arg says whether entering or + leaving a file. Output `1' or `2' on #-line if so. Callers changed. + + * gnulib2.c: Little-endian fixes from csmith@convex.com. + + * fixincludes: Wrong quoting in `echo' command. + + * tm-mips.h (REG_P): Duplicate defn deleted. + (PRINT_OPERAND): `\' was missing. + +Wed Apr 26 02:44:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (handle_directive): Preprocess even #pragma, but copy + to output file afterward. + (do_pragma): Use standard calling convention. + (install_builtins, special_symbol): Define __INCLUDE_LEVEL__. + + * cccp.c (do_include): Don't forget to close file. + + * final.c (output_asm_insn): Use PRINT_OPERAND_PUNCT_VALID_P + to validate punctuation after percent. + * tm-m68k.h, tm-alliant.h, tm-ns32k.h, tm-vax.h, tm-i386.h: + Define PRINT_OPERAND_PUNCT_VALID_P. + + * Version 1.35 released. + + * c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants. + +Tue Apr 25 15:47:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_reloads_address_1): Always return a value. + + * flow.c (mark_set_1): Look inside zero_extract, sign_extract. + + * expr.c (emit_library_call) [STACK_ARGS_ADJUST]: + Fix typo for `struct args_size'. + +Mon Apr 24 00:12:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * flow.c (mark_set_1): Look inside strict_low_part. + + * c-typeck.c (decl_constant_value): Don't use var's init if volatile. + + * print-tree.c (dump): Don't call walk on rtx's. + + * integrate.c (expand_inline_function): Convert expanded arg from + passed mode to nominal mode. + +Sun Apr 23 13:14:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: fix _IO macros if split across two lines. + Fix typo: EOF was indented. + + * gnulib2.c: New file with DImode library routines. + * Makefile (gnulib2): Put them into gnulib. + Must be explicitly requested. + +Fri Apr 21 13:45:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall; + use -trigraphs for that. + + * cccp.c (main): Use -trigraphs to enable trigraphs. + * gcc.c: Pass -trigraphs to cpp; don't pass -T. + + * Makefile: Variable srcdir relates location of sources + to current directory. Default is `.'. + + * integrate.c (expand_inline_function): When copying expanded arg, + use mode it's passed in, not arg's nominal mode. + + * dbxout.c (dbxout_block): Print generated name with assemble_name. + +Thu Apr 20 12:36:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stdarg.h: check __sparc__ instead of sparc. + +Tue Apr 18 18:58:03 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-next.h (STARTFILE_SPEC): Define it. + +Mon Apr 17 19:56:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format + the labels LBB... and LBE... + +Sun Apr 16 23:57:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md: Change MINUS to COMPARE where appropriate. + +Sat Apr 15 16:11:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_struct, redeclaration_error_message): + Rename variables named OLD and NEW. + + * sparc.md (cse'd mult pattern): Handle memory operands. + Optimize small integer operands. + + * stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles + are properly aligned, despite unaligned STACK_POINTER_OFFSET. + +Fri Apr 14 10:59:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_call): Bugs treating struct value address as param: + do so only if it's supposed to be pushed; + decode value of FUNCTION_ARG properly. + + * tm-altos3068.h (CPP_SPEC): Some braces were dropped. + + * gcc.c (pexecute): Print message when exec fails. + (perror_exec): New fn. + (perror_with_name,pfatal_with_name): Change message syntax. + + * tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op. + +Wed Apr 12 00:20:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (cse_insn): Can record constant value being stored in + a bit field, if we can tell that truncation won't change it. + + * m68k.md (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT + since the cc's are set from the old contents. + + * gcc.c (compilers): Running `as', put -o option before input file. + + * gcc.c: Delete output file only if that file's compilation fails. + * gcc.c (record_temp_file): Changed args: always_delete, fail_delete. + (store_arg): Likewise. Callers changed. + (clear_failure_queue): Called after each compilation. + +Tue Apr 11 01:18:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const)) + optimization was sometimes invalid. + + * tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns + does not set the cc's usefully. + + * Makefile (cleanlinks): Just do `clean', not `realclean'. + (realclean): Delete config links also. + + * expr.c (expand_call): Handle case where return value is in memory + but TARGET is a register. + + * c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE + is passed to binary_op_error instead of CODE. + All callers changed. + (binary_op_error): CODE = NOP_EXPR is new special case. + (truthvalue_conversion): Call build_binary_op_nodefault directly + and specify NOP_EXPR for the error code. + + * c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum. + +Mon Apr 10 19:44:48 1989 Chris Smith (csmith at mozart) + + * tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't, + but set it anyway. It makes for better code on this + word machine. + + * convex.md (one_compl*): add not:QI and not:HI, which + do get used after all. + + * tm-convex.h (A_REG_P, S_REG_P): define new macros + convex.md: use them + + * convex.md (addsi3): tidy up constraints. + + * tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok. + + * convex.md: add a pattern to push REG+CONST so we can + prefer an A reg. + + * tm-convex.h (tstqi): should sign extend, not zero extend. + + * expr.c (convert_move): Extending narrow to DI via SI, + operand of extendsidi2 was wrong. + + * emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE. + +Mon Apr 10 05:19:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (nonmemory_operand): Test constant operands + as general_operand does. + + * tm-m68k.h (PRINT_OPERAND): Limit effect of code `d' + to constant addresses. + + * loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with + nonconstant coefficients, since the coeffs could be zero. + + * loop.c (can_eliminate_biv_p): Check each giv for ! ignore + before assuming it can be used. + (check_eliminate_biv): New fn, a piece of strength_reduce broken out. + + * cccp.c (error_from_errno): New fn, like error and perror_with_name. + (do_include): Call that if open fails. + (finclude): Print I/O error msg before closing desc. + + * c-decl.c (shadow_tag): If more than one tag or structure, + or anything other than a tag, warning. + + * c-parse.y (components): Just warn if memb decl has no member, + and only if pedantic. + + * loop.c (strength_reduce): Print uids, not luids, for dump. + (record_giv): giv_count field counts only DEST_REG givs. + (check_dbra_loop): src_two_before_end was set wrong. + + * loop.c (record_giv): New arg LOOP_END; all callers changed. + Don't mark giv replaceable if used past LOOP_END. + (find_mem_givs): New arg LOOP_END; all callers changed. + + * out-i386.c (FP_CALL): Make this a `return' stmt. + +Fri Apr 7 11:56:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr, case ..._DECL): Preserve mode thru + calling change_address. + + * expr.c (emit_library_call): Typo: ARGNUM => COUNT. + + * expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY. + * stmt.c (assign_parms): Likewise. + * integrate.c (function_cannot_inline_p): Likewise. + + * STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should + be updated in place. + * tm-mips.h: Define it. + * expr.c (expand_call): Adapt to this. Assume padding comes after args + so turn off the feature of changing the args' offsets. + (emit_library_call): Adapt to this. + + * tm-mips.h (PRINT_OPERAND): Use CONST_DOUBLE_{LOW,HIGH}. + Truncate SFmode constants to single precision. + + * c-typeck.c (mark_addressable): Fix test for local vs global reg var. + + * config.gcc: Change `:-' to `-' in var refs. + Shell on convex doesn't handle `:-'. + +Thu Apr 6 00:09:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Compare actual's mode + against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode. + + * c-decl.c (implicitly_declare): Make the decl permanent if + in global binding level. (Can happen for certain invalid input.) + + * c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR + containing an ERROR_MARK. + + * config/tm.h: New file. + + * loop.c (only_reg_use_p): Fix bugs in recursion, add some fast + special cases. Comment on return value was backwards. + (strength_reduce): Negate the value of only_reg_use_p. + + * genoutput.c (output_prologue): Output `#include hard-reg-set.h'. + * Makefile: insn-output.o depends on that. + + * toplev.c (main): Typo recognizing -Wswitch. + + * config.gcc (mips): New alternative. + * tm-mips.h, out-mips.c, mips.md, va-mips.h: New files. + * varargs.h: Include va-mips.h if on mips. + +Wed Apr 5 16:58:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL. + + * stmt.c (expand_function_start): Ref subr instead of + current_function_decl; should make no difference. + + * stmt.c (assign_parms): Do extra padding for some parms, + controlled by MAX_PARM_BOUNDARY. + * expr.c (expand_call): Same thing for caller side. + Note this is implemented only for machines that lack push insns. + Also, in both cases, it doesn't handle variable-size args. + +Tue Apr 4 12:22:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too. + + * varasm.c (make_decl_rtl): Delete never-executed clause. + + * spur.md (movqi, loadhi, extend*, zero_extendhisi): + Make subregs with C code, not RTL patterns, so we can + avoid generating subreg of subreg. + + * optabs.c (emit_cmp_insn): Not all clauses always succeed, + so stop using `else' structure. + + * stmt.c (expand_return): Avoid moving void to void, in cleanups case. + +Mon Apr 3 18:04:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md (cmphi): Don't allow a-reg vs a-reg, since that sign-extends. + If there is one a-reg, make sure it is not last. + +Sun Apr 2 13:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (agg_mode): Use highest mode that has desired size. + Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE. + (That defaults to the size of DImode.) + + * machmode.def: Add PSI, PDI and XF, CXF modes. + +Sat Apr 1 00:50:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (ashd, lshd): Delete patterns that logand the count with 31. + The shift count is not truncated on this machine. + + * combine.c (subst): Simplify nested or's, nested xor's. + (try_distrib): XOR doesn't distribute through anything. + + * rtl.c (rtx_equal_p): Don't die on null pointers. + + * loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare. + + * loop.c (invariant_p): Mem refs in constant pool are invariant. + + * c-decl.c (redeclaration_error_message): If -traditional, allow + redeclarations of typedef provided they agree. + + * c-decl.c (start_decl): Do expand_decl on the decl that pushdecl + returns. If there was a prev. decl with a different type, + we have changed its type and cleared its old rtl, so it need new rtl. + +Sat Apr 1 00:50:11 1989 Matthew Self (rms at sugar-bombs.ai.mit.edu) + + * expr.c (convert_move): Modified to use mode classes + instead of refering to specific machine modes. + + * expr.c (do_jump): Converted to use CONST0_RTX macro. + do_jmp no longer refers to any machine modes directly except + for VOIDmode! + + * expr.c (compare, compare1): Modified to use CONST0_RTX + macro. No longer refers to any machine modes directly + except VOIDmode and BLKmode! + + * machmode.def: Documented assumptions made about the order + of machine modes during mode widening. + + * optabs.c (expand_binop, expand_twoval_binop, expand_unop, + emit_cmp_insn): Added mode widening which is independent of + specific machine modes. It assumes that we may widen to any + higher numbered mode of the same mode class. + NOTE: the checks for VOIDmode ops which were present in + QI and HI to SI widening are now present in all widening. + I assume this is correct. Also, widening is now possible + from QI to HI. This may or may not be a good thing.... + + * rtl.h (CONST0_RTX): Added definition of new macro + CONST0_RTX (mode). + + * rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros. + * rtl.c (note_insn_name, reg_note_name): New tables. + * rtl.def (NOTE): Change last field from `i' to `n'. + * rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note. + Print operand code `n' as name of kind of note. + (read_rtx): treat `n' like `i'. + + * loop.c (struct induction): Add `mode' field. + (strength_reduce, record_giv): Set the `mode' field in V. + (can_eliminate_biv_p, eliminate_biv): Use that field. + + * loop.c (struct iv_class): `init_insn' records what inits the biv. + Replaces `init_val_set' flag. + (strength_reduce): Update and test `init_insn' instead. + Use of a biv between its init and the start of the loop + does not preclude its elimination from the loop. + Setting a giv is ok for eliminating a biv, even if giv is "ignore", + since that just means giv will be combined with another. + Handle some DEST_ADDR givs for that purpose. + Test for giv-setting before check can_eliminate_biv_p. + New error check for replaceable giv whose value needed after loop. + (only_reg_use_p): New fn. + + * expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM: + Associate even harder. + + * loop.c (strength_reduce): Treat all constant biv init vals like ints. + + * loop.c (strength_reduce): Clear all_reduced when v->ignore is set; + the code to check this later didn't always do the job. + + * loop.c (verify_loop): Set loop_continue. + (scan_loop): mention its value. + * rtl.h: Define NOTE_INSN_LOOP_CONT. + * stmt.c (expand_loop_continue_here): Output one. + +Fri Mar 31 10:08:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like + void *. + + * rtl.c (rtx_addr_varies_p): Don't die on null exp. + * cse.c (refers_to_mem_p, refers_to_p): Likewise. + + * gcc.c (validate_switches, validate_all_switches): New fns. + Mark a switch as valid if any compiler spec or the linker spec + matches it, even for languages not being used. + +Thu Mar 30 00:22:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (loop_optimize, move_movables): when moving a `clr' insn used + in zero-extension, sometimes change it to an `and' so that the + significant low bits are not clobbered. + + * cccp.c: Implement __BASE_FILE__ and #once. + (savestring): New fn. + (struct file_name_list): new name for struct directory_stack. + (enum node_type): Add T_ONCE, T_BASE_FILE. + (directive_table): Add #pragma once. + (initialize_builtins): Add __BASE_FILE__. + (special_symbol): Handle __BASE_FILE__, together with __FILE__. + (do_include): Ignore the file if it's on the #pragma once list. + (do_once): New fn; add current file to #pragma once list. + + * cccp.c (do_include): Don't add non-ex files to list of deps. + + * config.gcc: Use {...:-...}, not {...=...}. + + * c-parse.y: Add precedence for IF/ELSE, and for parens; + avoids some conflicts. + + * tm-newsgas.h: Include tm-news.h and define USE_GAS. + + * tm-news.h: New name for tm-news800.h. + If not USE_GAS, define SONY_ASM. + Don't define USE_GAS by default. + (CPP_PREDEFINES): Various alternatives depending on processor type. + (ASM_FORMAT_PRIVATE_NAME): Override this. + (ASM_IDENTIFY_GCC): Override; output nothing. + (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Round fsize up to % 4. + Max for halfword link insn is 32k, not 64k. + (FUNCTION_EPILOGUE): Don't output move.l if no regs to restore. + (PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses. + * m68k.md (movhi): Add SONY_ASM conditional. + + * cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT + + * gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF. + +Wed Mar 29 09:54:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that + -Tdata can be handled right. + + * stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch + (expand_end_case): Call it, if orig index was enum. + * toplev.c (main): Handle -Wswitch. + * c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case. + + * tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't + define any duplicates. + * final.c: Delete reg_name. + + * c-parse.y (is_reserved_word): Add keywords __asm and __inline; + also __const and __volatile. + (yylex): Keywords that start with `__' are recognized regardless of + -traditional or -ansi. + + * c-parse.y (check_newline): Always recognize #ident. + Macro IDENT_DIRECTIVE is no more. + If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident. + * tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT. + * tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h: + Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in + default way. + + * expr.h (RETURN_IN_MEMORY): New macro, default defn here. + * expr.c (expand_call): Use it to control where to return value. + * stmt.c (expand_function_start): Likewise. + + * out-sparc.c (find_addr_reg): Abort if none found. + Eliminate confusion; do only one change between tests for PLUSness. + (output_move_double): Arg to find_addr_reg is address, not mem ref. + * out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise. + + * jump.c (find_cross_jump): Don't let either E1 or E2 be included + in the range of matching insns preceding the other (E2 or E1). + + * c-parse.y (check_newline): No error for `#pragma\n'. + + * Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here. + + * stmt.c (walk_fixup_memory_subreg): handle null. + + * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn, + to avoid conflict with final.c. + +Tue Mar 28 15:23:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (do_include): If fail, print system error message. + (perror_with_name): Use more standard error format. Inc. `errors'. + + * dbxout.c (dbxout_function): Output any temporary types + that were made by dbxout itself. + + * stmt.c: always use an epilogue if pcc-struct-return. + (expand_function_start): Compute return_label after testing that. + (expand_function_end): Output a return insn after pcc-struct-return + processing, if there is a return insn. + (expand_null_return): Don't output a return insn, in that case. + Simplify the conditions--depends entirely on HAVE_return. + + * tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call. + + * reload.c (find_reloads): Certain mem addresses will be offsetable + after reloading; in particular, those where reg_equiv_address applies. + + * loop.c (check_dbra_loop): Change MINUS to COMPARE. + + * c-typeck.c (convert_for_assignment): Return THE standard error_mark. + +Thu Mar 23 09:39:02 1989 Richard M. Stallman (rms at watson) + + * c-parse.y (components): Error if empty. + + * dbxout.c (dbxout_symbol): Output const variables as N_STSYM. + + * varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd. + + * c-decl.c (grokdeclarator): Warn about `long long long'. + + * reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P. + * final.c (alter_subreg): Preserve volatile bit of MEM. + + * m68k.md (cmpsi, cmphi): Permit cmpm. + + * gcc.c (find_file): Use standard_startfile_prefix_2. + Now search /usr/local/lib/, /lib/ and /usr/lib/. + + * tm-m68k.h (PRINT_OPERAND): Support code `d'. + * m68k.md (cmpsi, cmphi, cmpqi): Use it for all mem addresses. + + * final.c (output_asm_insn): Don't allow %LETTER without an + operand number. + * tm-m68k.h, m68k.md, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s. + * tm-alliant.h, alliant.md: Likewise. + * i386.md, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R. + + * stmt.c (expand_end_stmt_expr): Pop pending stack args. + + * varasm.c (assemble_variable): For 0-size common variable, + allocate at least 1 byte. + + * tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l, + for doubles. + +Mon Mar 13 10:24:56 1989 Richard M. Stallman (rms at ccvi) + + * out-i386.h (function_prologue, function_epilogue): + Use call_used_regs, not a copy, so -f options work. + Save regs in the opposite order. + Save regs even starting from 0 if they happen to be call-saved. + + * Bug fixes from Rob McMahon. + + * loop.c (strength_reduce): When inserting insn to set + nonreplaceable giv, put it after all the consecutive insns + that compute it. + + * reload.c (find_reloads): When forcing const to mem, + use the insn's operand mode, not the const's mode. + + * reload1.c (choose_reload_targets): Use wider of inmode and outmode + when determining have_groups. + + * reload1.c (choose_reload_targets): typo checked wrong insn with + constraint_accepts_reg_p. + + * reload1.c (choose_reload_targets): Enable #if-0'd code for + forgetting old reloads in case of output reload from a non-spill-reg. + +Sun Mar 12 00:04:49 1989 Richard M. Stallman (rms at ccvi) + + * c-parse.y (yyerror): Add forward-decl here. + * c-tree.h: Delete decl here. + + * New macro USE_C_ALLOCA. + * cse.c (cse_main): Do alloca (0) to clear out C alloca. + * flow.c (life_analysis): + * local-alloc.c (local_alloc): + * reload1.c (reload_as_needed): likewise. + + * loop.c (emit_iv_init_code, eliminate_biv): + Always put constant in a PLUS last. + + * gcc.c (make_switch): Unused function deleted. + + *gcc.c (switches): Each switch has a `used' field. + (process_command): Init it to 0 when making `switches'. + (do_spec_1, handle_braces, give_switch): Set to 1 when switch is used. + (main): If it remains 0 at the end, print error message. + + * expr.c (convert_move, convert_to_mode): Don't truncate a MEM in + place if it is volatile. + + * loop.c (strength_reduce): When reducing a giv, if the biv is + incremented between the giv's creation and its use, increment + the reduced giv var *after* its use. + + * c-decl.c (duplicate_decls): Warn about proto vs nonproto + only if no other errors apply. + + * jump.c (invert_exp): Don't crash if arg is null. + + * alliant.md (float*i*f2): Don't allow immediate ops. + (sne): Fix typo, fsne => fsneq. + + * expr.c (store_one_arg, expand_call): When size doesn't matter, + pass const0_rtx, not (rtx) 0. + + * expr.c (do_jump): Args to invert_exp were missing. + + * gcc.c (store_arg): Now 2 separate args for delete-on-success + and delete-on-failure. All calls changed. + (do_spec_1): DELETE_THIS_FILE is meaningful for output files. + + * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. + +Sat Mar 11 10:30:41 1989 Richard M. Stallman (rms at ccvi) + + * tm-*.h, xm-*.h, *.md: Moved to subdir `config'. + * output-*.c: Moved to `config/out-*.c'. + * Makefile (.c.o): Define rule to use -Iconfig when compiling. + (various): Delete the commands from some compilation rules. + Put -Iconfig in other compilation commands. + Also some reordering of variable defs and comments for cleanliness. + (realclean): Change a shell comment to a Make comment. + + * fold-const.c (fold): Simplify and extend TRUTH_... operators + knowing that args must be ints and values will be 0 or 1. + + * gcc.hlp: New file (for VMS). + + * reload1.c (reload): Don't let two 2-groups overlap. + + * reload.c (push_reloads): When a plain reg matches a reload + for an increment, don't change the reload_in to a plain reg. + Leave the increment there. + + * integrate.c (expand_inline_function): Don't try to inline + unless the parm machine modes really match what's expected. + + * stmt.c (emit_case_nodes): default_label is an rtx, not tree. + + * tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1. + + * output-sparc.c (output_move_double): Don't trust random structs + to be double-word aligned. + + * gcc.c: Pass -Wcomments to cpp. + + * rtl.def (ASM_OPERANDS): New operands, source file and line. + * rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS. + * stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes. + * toplev.c (error_for_asm): likewise. + * rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE. + + * combine.c (try_combine): Check explicitly for volatility in I2, I1. + +Fri Mar 10 19:30:10 1989 Richard M. Stallman (rms at ccvi) + + * c-parse.y (GOTO stmt): Set TREE_USED for the label. + * c-decl.c (poplevel): Warn about unused label. + + * c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars. + (lang_decode_options): Options to set them. + * c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target. + * c-decl.c (grokparms): Maybe warn if nonprototype fn decl. + + * flags.h, toplev.c (warn_shadow): New flag. + * toplev.c (main): Decode it. + * c-decl.c (pushdecl): Maybe warn about any shadowing. + Existing parm-shadowing warning now disabled if shadowing decl + is also a parm. + + * flags.h, toplev.c (warn_id_clash, id_clash_len): New flags. + * toplev.c (main): Decode -Wid-clash-LEN. + * tree.c (get_identifier): Implement warning if two idents match. + + * toplev.c (compile_file): Warn about statics defined and unused. + + * rtl.h (CONST0_RTX): New macro. + + * recog.c (offsetable_address_p): New 1st arg says whether to demand + a strictly valid address. + (offsetable_memref_p): Pass nonzero. + * stmt.c (optimize_bit_field): Pass zero. + + * cccp.c (main): Allow -Wcomment like -Wcomments. + * c-decl.c (lang_decode_options): Likewise. + +Sun Mar 5 15:02:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * m68k.md [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3, + sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure + that the test function's in the match_operands of the define_expand + and define_insn's matched, and made that test function + "register_operand" when both define_insn's really needed registers + in that spot. + +Sat Mar 4 00:25:37 1989 Richard M. Stallman (rms at c2v) + + * expr.c (emit_push_insn): Don't ever bypass the big-endian + padding at the end. + + * cccp.c (deps_output): Break line if would otherwise exceed 75 chars. + Make a name for that value 75. + + * combine.c (subst): Handle general case of (subreg (sign_extend X)). + + * tm-sun386i.h (CPP_PREDEFINES): Define `sun'. + + * fixincludes: change `find' calls to find dirs thru symlinks. + + * flow.c (mark_set_1): (set (subreg (reg N))...) + does make reg N significant for this basic block. + +Fri Mar 3 13:55:25 1989 Richard M. Stallman (rms at c2v) + + * c-decl.c (parmlist_tags_warning): Print an explanation + for the first such warning. + + * i386.md (extendsfdf): Let op 1 match op0 if that is an fp reg. + + * expr.c (expand_call): Fix stupid errors copying pcc struct value. + + * varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast. + +Thu Feb 23 05:55:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.34 released. + + * c-typeck.c (build_c_cast): If EXPR is an error mark, return that. + + * fold-const.c (div_and_round_double): Abort if divisor is 0. + (combine): Likewise, for real constants. + (real_zerop): New subroutine. + (fold): Don't try to fold division if divisor is 0. + Don't try to fold reals if can't do arithmetic on them. + Don't try to compare reals for TRUTH_..._EXPR if can't do arith. + Use real_zerop to test reals for zeroness. + For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on + first operand alone. + + * c-typeck.c (store_init_value): Fix error msg text. + + * tm-sparc.h (FUNCTION_PROFILER): Use `mcount'. + * tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'. + +Wed Feb 22 04:33:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of + -Dmc68000 depend on TARGET_DEFAULT. + + * tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf. + + * integrate.c (expand_inline_function): Don't map struct-value-address + in memory if fn does not use it. + + * c-parse.y (check_newline): At skipline, detect eof. + + * stmt.c (uninitialized_vars_warning): Change text of warning. + +Tue Feb 21 03:58:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_mul_insn): Handle case of both args + in reg 8, or both in reg 9. + + * tm-sparc.h (ASM_SPEC): Define, to handle -pipe. + + * tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args. + (BLOCK_PROFILER): Likewise. Use tempvar. + + * m68k.md (QImode btst): Allow nonoffsetable mem refs. + +Mon Feb 20 00:32:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * flow.c (mark_used_regs): Don't record about global reg vars. + + * config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h. + + * tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN. + + * gcc.c (compilers): Pass `-a' to cc1. + * tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'. + + * expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy; + old method of preadjustment is broken by changes in emit_library_call. + + * c-decl.c (finish_decl): New temp `temporary'; don't get confused + about whether allocation was temporary. + +Sun Feb 19 17:03:35 1989 Chris Smith (csmith at mozart) + + * tm-convex.h: define PCC_STATIC_STRUCT_RETURN + + * convex.md: + remove pshea patterns, movsi does it better. + add ashift:DI abs:DF abs:SF + (tstdi): use a clobbered register instead of a bogus DImode zero. + (trunchiqi2): delete noninstruction cvth.b + (udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now. + (call, call_value): delete stupid call/ret -> jump optimization. + (call, call_value): flush call_ap_check, use reg_mentioned_p instead. + + * convex.md: (movxx): swap constraint alternatives so that the + leftmost alternative is (set =g r). This makes (set mem const) + get combinable input reloads of const instead of uncombinable + output reloads to mem. They still do not combine, but wtf, + I'll inch up on it. + + * output-convex.c: (const_double_{high,low}_int): new routines + to pick apart const_doubles for assembler. + +Sun Feb 19 01:40:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (shift memory right 24 bits): Another `a1' typo. + + * config.gcc (convex-*): Delete troublesome whitespace. + + * c-decl.c (grokparms): Delete redundant `parm != 0' tests. + + * stmt.c (fixup_memory_subreg): Slight simplification. + + * tm-sparc.h (FUNCTION_PROFILER): Fill delay slot. + (FUNCTION_BLOCK_PROFILER): Use sethi. + (BLOCK_PROFILER): Use %g2, not %g0. Use sethi. + +Sat Feb 18 02:11:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): Ignore const array's initial value + if it's an error_mark. + * c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark + if the decl is a permanent node. + + * cccp.c (rescan): If traditional, if macro ends inside string, + keep scanning for the end of the string. + (handle_directive): A line of just `#' becomes blank. + (collect_expansion): \ in strings traditionally doesn't hide macro arg. + + * m68k.md, alliant.md (addsi3): New alternative a=r+a, in addition + to old a=a+r, needed since reload-insns are not commuted. + +Fri Feb 17 03:15:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it. + * toplev.c, flags.h: New var flag_pcc_struct_return. + * stmt.c (expand_function_start): Obey new flag and new variable. + * expr.c (expand_call): Obey new flag and new variable. + * varasm.c (assemble_static_space): New function. + + * stmt.c (expand_return): If we need cleanups, compute retval first + into pseudo reg, then do the cleanups, then copy it to return reg. + +Thu Feb 16 02:59:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined. + + * expr.c (expand_call): Handle conflict between two precomputed + args that are both function calls returning structures. + + * loop.c (move_movables): Bkwds test of m->partial, for a matching reg. + + * expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST. + +Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (flag_caller_saves): New var, for -fcaller-saves. + DEFAULT_CALLER_SAVES controls initial value. + * global-alloc.c (find_reg): Do caller saves only if flag set. + * local-alloc.c (find_free_reg): Do caller saves only if flag set. + * tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES. + +Wed Feb 15 01:59:15 1989 Chris Smith (rms at sugar-bombs.ai.mit.edu) + + * caller-save.c: New file. + * regs.h (CALLER_SAVE_PROFITABLE): New macro. + (reg_n_calls_crossed): new int-vector replaces reg_crosses_calls. + * flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info): + Use reg_n_calls_crossed. + * stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise. + * global-alloc.c (find_reg): Sometimes allocate call-clobbered regs + for call-crossing pseudos. + New arg ACCEPT_CALL_CLOBBERED; callers changed. + * local-alloc.c (find_free_reg): Similar changes. + (qty_n_calls_crossed): New int-vector replaces qty_crosses_calls. + (alloc_qty, local_alloc, combine_regs, find_free_reg): change that var. + * regclass.c (call_fixed_regs, call_fixed_reg_set): new vars. + (init_reg_sets_1): Initialize them. + * reload1.c (reload): Call caller-saves processing if needed. + +Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): INTEGER_CST for DImode: don't handle + endianness here. So CONST_DOUBLE_LOW is always the low word. + * varasm.c (force_const_mem): Handle it here. + + * expr.c (convert_move): widening followed by extendsidi2 had braino. + + * integrate.c: Don't include ctype.h; not needed and kills Sun cpp. + + * m68k.md (cmpsf, cmpdf and their recognizers): + Replace MINUS with COMPARE. + Also, use VOIDmode for COMPAREs, not SF or DF. + + * optabs.c (sign_expand_binop): Handle ops such as division where + an unsigned char could be widened and handled with signed int insns. + * expmed.c (expand_divmod): Use that. + + * c-typeck.c (digest_init): Allow for type variants in validating + initialization from a string constant. + + * c-typeck.c (decl_constant_value): Disable opt. if pedantic or + outside functions, so that validity of program is never affected. + + * fold-const.c (fold): Signedness-test for ABS_EXPR was backwards. + +Tue Feb 14 01:30:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Don't omit normal output, if we want deps on + a separate stream. + + * c-decl.c (grokdeclarator): Don't record any arg types for functions + if -traditional. + + * print-tree.c (prtypeinfo): Mention permanent attribute. + + * tm-next.h: New file. + + * c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK. + + * c-decl.c (duplicate_decls): For fns, new static decl overrides + old non-static one. + + * emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we + preserve volatility, etc. + + * stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno + as file and line for any warning. + * emit-rtl.c (emit_line_note): Set those vars. + + * c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl. + + * recog.c (offsetable_address_p): Use strict_memory_address_p, + since called from reload.c. + +Mon Feb 13 03:11:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (compare-to-reg patterns): Some still had MINUS. + + * toplev.c (main): Warn if `-a' on system that can't handle it. + + * stmt.c (expand_asm_operands): Delete unused local `val'. + (pushcase_range): Likewise for `value'. + (fixup_var_refs): Likewise for `insn'. + * emit-rtl.c (start_sequence): Likewise for `save'. + * loop.c (scan_loop): Likewise for `before_start'. + * expr.c (expand_expr): Delete label `binop1'. + + * reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs. + +Sun Feb 12 05:37:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib.c (__bb_init_func): New function + + * tm-m68k.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): Defined. + +Sat Feb 11 00:05:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sparc.h (FUNCTION_PROFILER): Make it really work. + (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. + + * final.c (final): Use BLOCK_PROFILER at start of each basic block. + (final_start_function): Use FUNCTION_BLOCK_PROFILER if -a. + (end_final): New fn to output the block-profiling tables. + * toplev.c (profile_block_flag): Set if -a. + (compile_file): Call end_final. + + * combine.c (try_combine): Avoid combining in most cases if I3 + has an inc or dec and I1 or I2 uses the same register. + + * tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant. + + * c-typeck.c (actualparameterlist): Error if parm type is incomplete. + + * expr.c (expand_call): Ignore args that have incomplete type. + +Fri Feb 10 02:26:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (case stmts): strip dummy NOP_EXPRs. + + * reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here, + (choose_reload_targets): not here. + +Thu Feb 9 01:35:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_mul_by_constant): Forget cc status. + + * stmt.c (assign_parms): Don't put volatile parms in regs. + + * vax.md (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers. + + * cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)). + + * c-typeck.c (default_conversion, digest_init): For static const + nonvolatile scalar variable, use its initial value if known. + + * expr.c (expand_expr: case COMPONENT_REF): If containing structure + comes out volatile, leave the component MEM volatile too. + + * hard-reg-set.h: Fix multi-word case macros to swallow semicolon. + + * c-typeck.c (default_conversion): In array=>ptr, volatility + of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE. + + * reload1.c (forget_old_reload_1, choose_reload_targets): + New array reg_is_output_reload is converse of reg_has_output_reload. + forget_old_reload_1 needs both. + +Wed Feb 8 01:26:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads. + Do process a spill reg if it isn't used for reloading in this insn. + (forget_old_reloads): Deleted, replaced with note_stores. + (reload_as_needed): Undo Feb 1 change. + Call forget_old_reloads_1 on pseudos autoincremented and not reloaded. + + * c-typeck.c (convert_for_assignment): Handle variant types. + + * c-decl.c (lang_decode_option): -Wall implies -Wunused. + +Tue Feb 7 01:32:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't try adding outputs to an asm_operands. + + * cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo. + + * stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0. + + * c-decl.c (parmlist_tags_warning): New fn. + * c-parse.y (parmlist, parmlist_or_identifiers): Call it, + to warn about any tags defined inside the parmlist. + * c-decl.c (grokparms): Don't warn about ptr to incomplete type. + The new warning is better. + +Mon Feb 6 01:11:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (store_constructor): Incorrect ALIGN arg in store_field calls. + + * c-parse.y (%union): Delete unused alternative. + + * c-decl.c (grokparms): Use main variant to test for ptr to incomplete. + + * c-decl.c (finish_enum): Delete superfluous init for `pair'. + + * cse.c (fold_rtx): Optimize X+0, X-0 in floating point. + Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against. + (equiv_constant): Allow CONST_DOUBLE. + + * cse.c: Optimize past if-statements that are known to fail. + (cse_insn): If condjump becomes uncond to end of this block, + set cse_skip_to_next_block. + (cse_basic_block): If that happens, ignore rest of block, and maybe + treat next block as part of this one (if tables have room). + Resume insn that starts next basic block to be scanned. + (cse_main): Make room for at least 500 qtys. + (cse_end_of_basic_block): Subroutine broken out of cse_main. + + * c-parse.y (hash, is_reserved_word): Rewrite: new hash technique. + + * c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch + involving a function definition. + +Sun Feb 5 17:31:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * alliant.md (movdi): Typo in `fmoved'. + (ftruncsf2): Handle moving into fp reg. + + * jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P. + + * reload1.c (choose_reload_targets): Move all death notes to the + output reload insn. + + * m68k.md (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern. + + * loop.c (delete_insn_forces): Use presence of REG_RETVAL to check + for value-of-library-call insn. + +Sat Feb 4 18:17:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Make addresses of stack + slots valid somehow. + + * tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib. + + * expmed.c (store_bit_field): Avoid (subreg (mem)) when converting + VALUE1 to SImode. + + * jump.c (jump_optimize): Do delete USE and CLOBBER insns. + This is needed for proper jump optimization. + + * rtl.def (COMPARE): New code. + * *.md (compare and related patterns): Use COMPARE, not MINUS:VOID. + * loop.c (eliminate_biv, can_eliminate_biv_p): Likewise. + * cse.c (fold_rtx, fold_cc0, cse_insn): + * output-m88k.c (output_{f,}compare, output_store): + * output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p): + * combine.c (subst): + * jump.c (jump_back_p): + +Fri Feb 3 18:34:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-i386.c (notice_update_cc): If arith insn sets the cc's, + discard all remnants of previous cc value and flags. + + * sparc.md (ashiftrt mem by 24): Fix typo `a1'. + +Thu Feb 2 14:55:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_mul_insn): Clear the CC status. + +Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.33 released. + + * reload1.c (reload_as_needed): On entering new basic block, + if it didn't need reload regs, forget all inherited contents of those. + + * tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's. + Also delete the clauses and tests for FPA regs. + +Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc: Handle convex-c1, convex-c2. + * tm-convex1.h, tm-convex2.h: New files that include tm-convex.h. + * tm-convex.h: Define switches -mnoc1, -mnoc2. + + * config.gcc: rename `nofp' to `nfp', to match the file names. + +Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_delay_insn): Extract the operands, + call alter_subreg, constrain_operands and NOTICE_UPDATE_CC. + So callers other than output_eager_then_insn don't lose. + (output_eager_then_insn): No need to do that stuff. + + * symout.c (symout_block_symbols): Handle (MEM (REG)) for + variable-sized arrays. + + * tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage. + +Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}. + + * combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt. + now limited to within the context of (set (cc0) ...). + +Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs. + (fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)). + + * output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant. + + * tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case. + + * Makefile (bootstrap2): Don't use bootstrap3 as subroutine. + + * varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain + if its MEM is stored in it; so it can be cleared at end of function. + + * stmt.c (emit_case_nodes): Put a compare before each cond-jump. + Two cond-jumps after one cond is invalid and makes cse produce garbage. + +Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881. + + * c-decl.c (start_decl): Don't expand_decl if DECL already has rtl. + (grokparms): If just declaring fcn, incomplete parm type is just + a warning, and don't discard the specified type. + + * expmed.c (expand_divmod): Be smarter about not clobbering args + with intermediate results; one mem can clobber another, and a reg + can clobber a mem. + + * tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now. + * tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h. + This means changing asm syntax. + #undef DBX_NO_XREFS and DBX_CONTIN_LENGTH. + + * sparc.md (eager branch peepholes): Don't forget 2nd arg to + safe_insn_src_p. + Don't print warnings. + * output-sparc.c: (strict_single_insn_op_p): Return 0 for floating + REG or MEM, since copying that may take 2 insns. + (operands_satisfy_eager_branch_peephole): require delay insn to + be strict_single_insn_op_p as well as safe_insn_src_p. + (operand_clobbered_before_used_after): Don't print warnings. + + * varasm.c (decode_rtx_const): Clear entire structure incl. gaps. + Avoids spurious hash mismatches. + (force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field. + Also look in that field rather than hashing, to save time. + + * c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so. + (store_init_value): Change error msg. + + * c-decl.c (duplicate_decls): Classify prototype vs nonprototype + mismatches better. + + * tm-3b1.h: Fix comment. + +Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (cleanlinks): Use -f. + +Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (canon_hash): Fix paren error in last change. + + * varasm.c (immed_real_const_1): Missing arg to bcmp. + +Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): BLKmode elts force array to be BLKmode. + + * genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output. + + * stmt.c (expand_expr_stmt): No "no effect" warning for error-mark. + + * varargs.h: Rename implicit arg name to __builtin_va_alist + which triggers code in assign_parms. Does this really matter? + + * sparc.md (sne): New define_expand. + (seq recognizers): Handle sne as well. + * output-sparc.c ({strict_,}single_insn_src_p): + Some NEG and MINUS insns are actually 2 asm insns. + (safe_insn_src_p): No floating arith is safe; they can trap. + (eq_or_neq): New fn, for seq/sne recognizers. + + * c-decl.c (grokdeclarator, size of array type): + Strip from SIZE any NOP_EXPRs that don't change anything. + + * reload.c, recog.c: Include real.h so constraint macros can examine + CONST_DOUBLEs. + +Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (init_decl_processing): Define __builtin_saveregs. + * tree.h: likewise. + * expr.c (expand_builtin): Handle it. + + * tm-sparc.h: Define TARGET_EAGER and -meager. + * sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER. + Change fb insns to use %F. Delete `,a' from some of them. + * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. + + * xm-vms.h (const): Define it as empty. + + * make-cccp.com: Move the rename of cexp_tab.c. + Compile cccp.c with no macro definitions. + + * cccp.c (main): VMS conditional for setting max_include_len. + +Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varargs.h (va_start): On sparc, call __builtin_saveregs. + Delete the old conditional that used va-sparc.h. + Rename macros and locals to start with two underscores. + * va-sparc.h: File deleted. + + * c-decl.c (store_parm_decls): Initialize OTHERS. + + * stmt.c (assign_parms): Obey layout_decl. + +Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address + to 16 bits. + + * tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed. + +Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (mark_addressable): For global reg var, report error. + Now returns an int; value of 0 means caller should fail. + All calls (in this file) changed. + + * stor-layout.c (layout_decl): Don't let an more than 1 word + of any aggregate go in any 1 register. (Needed for machines whose + integer regs are 64 bits). + + * tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files. + + * expr.c (convert_move): Use extendqidi2, etc. for converting + small ints to double ints. Use zero_extendsidi2 rather than + clearing the high half. + +Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (make_decl_rtl): If global `register' decl is invalid, + make ordinary non-register rtl. + + * output-sparc.c (operand_clobbered_before_used_after): new fn. + (reg_clobbered_p, safe_insn_src_p): New fns. + (single_insn_src_p): Treat constants all as ok, even though not + always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs. + (strict_single_insn_src_p): New fn, like above but is strict + about constants and constant memory addresses. + (relop): New fn. + (output_move_double): Don't make a MEM, and don't use %m. + (output_delayed_branch): New name for output_delay_insn. + Now handle non-small constant operands. + Avoid duplicate loads of g1 for constant addresses. + Use recog_operand directly for output of the delay insn. + (output_delay_insn): Now a completely new fn. + (output_eager_then_insn, next_real_insn_no_labels): New fns. + (operands_satisfy_eager_branch_peephole): New fn. + + * sparc.md: New peepholes for testing a recently used operand. + New peepholes for delayed branches, incl. conditional ones. + ** Some of them commented out because they seem not to work. + (andcc recognizer): Fix typo, missing %. + (bgt): Change bgt to bg in output. + (reversed jumps): Replace with one pattern using match_operand. + It uses %F to output the condition. + (movsi): For round-valued immed const, use just a sethi. + For other immed, use explicit sethi and or. + (movhi, movqi): use `move' for reg source or small int source. + For other immed, use explicit sethi and or. + (movsi, etc.): Handle all constant addresses like SYMBOL_REFs. + (movsf): Delete never-used duplicate code for constant addresses. + (addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set. + (andsi3, iorsi3, xorsi3): Likewise. + (jump): Make an annulled branch. + + * tm-sparc.h (PROMOTE_PROTOTYPES): Define this. + (GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses; + also cleaned up. + (NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory. + Assume all PARALLEL insns are peepholes. + (PRINT_OPERAND): New codes C and N for outputting conditions, + either forward or reversed. Also F for reversed floating. + + * jump.c (delete_for_peephole): New function to delete range of insns. + * genpeep.c (gen_peephole): Output code to use this. + + * Makefile (install): Fix typo, had $${name} for $${file}. + +Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (ashlsi3): Use addl or leal for special cases. + + * c-decl.c (grokdeclarator): Make a non-global VAR_DECL public + if it is external. + + * masm386.c: Clean up formatting. + + * cse.c (fold_rtx): Typo simplifying x|0 or x^0 + when the 0 comes second. + + * expmed.c (store_fixed_bit_field): For halfwords, verify that + the field fits in an *aligned* halfword. + (extract_fixed_bit_field): likewise. + + * expmed.c (store_split_bit_field): New arg align, passed in from + store_fixed_bit_field and passed back to it. + (extract_split_bit_field): likewise. + + * expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3. + Also changes from Dec 23, Dec 28 and Dec 29. + + * tm-i386.h: Likewise for changes from Dec 30. + + * c-typeck.c (build_component_ref): If field's type is error-mark, + return an error-mark. + +Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genpeep.c (main): Output code to exit early if insn is followed + by a barrier. + (gen_peephole): Reject barriers just like labels. + + * stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn. + Caller changed. Now static. + + * final.c (final): Set INSN_DELETED_P in insns when output. + + * final.c (final): Re-set BODY if peephole does anything. + + * c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list. + (store_parm_decls): If we had a prototype, separate out anything other + than a PARM_DECL declared in it, and pushdecl those at the end, + after DECL_ARGUMENTS is set. + + * stmt.c (expand_end_case): Do stack adjusts after computing index. + + * expr.c (store_one_arg): Handle padding for case of BLKmode + for which space was preallocated. + + * integrate.c (copy_rtx_and_substitute): When copying asm insn, + preserve sharing of the input-operand vectors. + (expand_inline_function): Clear {orig,copy}_asm_operands_vector + to make that mechanism work. + (save_for_inline, copy_for_inline): Likewise. + + * stmt.c (expand_asm_operands): Reject `+' in constraints. + Every output constraint requires `='; inputs reject it. + + * stmt.c (expand_function_end): Arg to fixup_gotos was missing. + +Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c, gcc.c (main): Handle SIGPIPE. + (pipe_closed): New fn; report suitable fatal error. + + * loop.c (loop_optimize): Initialize moved_once. + + * gcc.c (do_spec): Don't call `execute' if value != 0. + Delete redundant second call to do_spec_1. + + * toplev.c (compile_file): Make declared-but-not-defined warnings + only if -Wunused. + + * stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat. + + * tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong. + + * gcc.c (env_exec_prefix refs): Don't try to open via it if it's null. + + * output-sparc.c (output_store, output_load_{fixed,floating}): + Fixed confusions between the mem ref and its address. + + * cse.c (canon_hash): global_regs has entries only for hard regs. + * flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise. + + * cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR + DIV and shifts with one arg 0 or 1. + +Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays. + + * fixincludes: Make all subdirs in advance, so no need for `dirname'. + + * genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES; + instead, clear JUMP_LABEL for any jumps being deleted. + No need to test INSN1 for being a label, since not called then. + [If any of the matched insns is a JUMP_INSN, set want_jump, + and in that case make the matched peephole a JUMP_INSN itself.] + That's in an #if 0 now; it's good in jump, but not in final. + + * jump.c (jump_optimize): Don't do peepholes here. + * final.c (final): Do them here. + + * jump.c (jump_optimize): In optimizing `if (foo) bar; else break;', + don't try to invert anything but a standard-looking conditional jump. + + * jump.c (jump_optimize): Do peepholes on ALL BUT the first pass. + + * gcc.c (env_exec_prefix): New var used like user_exec_prefix + but set from envvar GCC_EXEC_PREFIX. + +Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genpeep.c (gen_peephole): Test INSN1 for a label at the very start, + then test following insns at the end of the loop. + + * sparc.md (call recognizers): do CC_STATUS_INIT, for %g1. + +Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (make_decl_rtl): Recognize more error cases for reg vars: + BLKmode, or initializer given. + Distinguisn missing asm from invalid name. + + * expr.c (expand_call): Never return 0; return const0_rtx instead. + This makes expand_expr more uniform. + + * c-decl.c (grokparms): For ptr to incomplete type, just warn; + don't change the parm's type. + + * stmt.c (expand_return): Set RETVAL_RHS so as to recognize + tail-recursive fcn returning void. + Unconditionally test value of expand_expr for being a REG. + + * reload.c (find_reloads): Don't process insns that have + no constraint alternatives. No more need for have_constraints. + + * recog.c (constrain_operands): New local var nalternatives. + Don't bother checking the insn if nalternatives is 0. + +Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Implement global register decls. + + * varasm.c (make_decl_rtl): Handle global register vars. + (make_function_rtl): Set function_defined: after 1st function dfn. + (assemble_variable): Ignore global register vars. + + * c-decl.c (grokdeclarator): Don't reject global register decls. + (builtin_function): Use make_decl_rtl, not make_function_rtl, + to avoid setting function_defined. + + * regclass.c (init_reg_class{,_1}): Init and process global_regs. + They are fixed, and call-clobbered. + + * flow.c (insn_dead_p): Storing one of global_regs is never dead. + (mark_used_regs, mark_set_1): A global reg is never dead. + + * cse.c (canon_hash): Consider global regs volatile. + + + * expr.c (do_jump): Know how to invert jumps which are sequences. + + * dbxout.c, symout.c, final.c: On USG, use our own stab.h. + + * tm-i386gas.h: New file for GAS on sysV (with DBX debugging info). + + * m68k.md (bfchg and bfins patterns): Make # alternatives uniform. + * alliant.md: Likewise; also in movdf patterns. + + * genoutput.c (output_epilogue): Spurious `break' disabled + error check for mismatched # of alternatives. + (output_epilogue, scan_operands): Errors in input are not fatal. + + * flow.c (regno_uninitialized): Avoid crash if no basic blocks. + + * sparc.md (move insns): Delete special patterns that handled + symbolic constant addresses. The main move patterns now do this. + * output-sparc.c (output_store, output_load_{fixed,floating}): + Subroutines to do the work for this; has the code from those + special patterns. Also fixed bugs in testing against cc_status.mdep. + + * output-sparc.c (output_delay_insn): Clear the CC status. + This is necessary for %g1 in the case of a call insn. + + * tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP. + (REGNO_REG_CLASS): Corresponding change. + (REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used. + + * optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode. + All callers changed. + Pass alignment (as rtx) as 4th arg to cmpstr gen functions. + Use cmpstrhi if available. + * expr.c (compare): Only this call passes a nonzero ALIGN. + + * expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx) + as 4th arg to movstr gen functions. + +Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): Use BLKmode, if a struct isn't + aligned well enough for a scalar mode. + + * expr.c (expand_expr): For static CONSTRUCTOR, ensure memory + address is made valid. + + * genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands. + +Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (output_constant): Split strings every 2000 chars. + + * stmt.c (expand_end_case): Test bkwds, handling constant switch arg. + +Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_delay_insn): Add parens to first if test. + (output_move_double): Turn addr for `sethi' into MEM for %m. + + * c-typeck.c (convert_for_assignment): move test for ERROR_MARK. + + * c-parse.y (unary_expr): Allow cast_expr as arg of unary op. + + * stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl; + assemble_variable is called after this. + + * c-parse.y (primary -> identifier): Separate case for undeclared + identifier outside of functions; avoids confusing error msgs. + +Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (install): Ignore errors in all `if' commands. + Create $(libdir) if nec. + + * Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make. + + * stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps. + Arg INDEX is an rtx, not a tree. + (expand_end_case): Pass that arg. + (node_has_{low,high}_bound): check for overflow, avoid confusion. + +Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (movdi, movdf): Use `&' constraint when loading reg from; + otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))). + + * expr.c (emit_push_insn): For memory scalar partially going in regs, + copy each word to reg before pushing. Avoids memory-to-memory move. + Make the displaced address valid. + Also delete unfinished STACK_OFFSET variable. + + * c-parse.y (check_newline): Read just one #-directive and return. + This prevents lossage when toplev.c calls it to get the main input file + name, and it gets a following #ident as well. + + * c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual. + * c-typeck.c (build_c_cast): Issue some warnings if set. + + * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'. + +Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_library_call): Do force_operand on each operand + if it isn't a REG, MEM or constant. + Do this, or mode conversions, earlier, before loading any hard regs. + + * m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'. + + * c-typeck.c (default_conversion): Don't lose `const' or `volatile' + when converting array type to pointer. + +Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (store_bit_field, store_fixed_bit_field): New arg, + alignment in bytes the structure is known to have. + (store_fixed_bit_field): Handle working in halfwords, + in case the pointer isn't known to have fullword alignment. + * expmed.c (extract_bit_field, extract_fixed_bit_field): likewise. + (extract_bit_field): fix unsignedp arg to extract_fixed_bit_field. + * expr.c (store_field): New arg, passed to {store,extract}_bit_field + (expand_assignment, store_constructor): Pass that arg. + (expand_expr): Pass new arg to extract_bit_field. + + * m68k.md (casesi_2 recognizer): Offset always 6 for 3b1. + + * c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs + put on by build_c_cast (to make the result not an lvalue). + (build_modify_expr, build_compound_expr): likewise. + (build_conditional_expr): likewise. + (actualparameterlist, build_function_call): likewise. + (default_conversion, truthvalue_conversion): likewise. + + * loop.c (move_movables): If reg has moved out of one loop, + divide `savings' by 2. + +Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (truthvalue_conversion): Distribute the conversion + into the arms of a COND_EXPR. + + * cse.c (fold_rtx): Don't fold a MINUS with VOIDmode + into a symbolic constant--it's incorrect. + + * cse.c (cse_insn): If SRC is a subreg with known value, simplify it. + + * integrate.c (copy_rtx_and_substitute): Allow a ref to a part of + MEM parm whose actual parm is a reg, provided it refs + the low part of the MEM. + (function_cannot_inline_p): Don't inline functions which have + aggregate parameters and take their addresses. This could produce + refs to non-low-parts, which copy_rtx_and_substitute can't handle. + + * c-typeck.c (build_modify_expr): If lhs is COND_EXPR, + make a COMPOUND_EXPR to ensure the rhs is computed before the branch. + + * Implement -pipe. + * gcc.c (do_spec_1): `|' is now a special delimiter + which goes in the argbuf. + When a newline is preceded by a `|', delete it if no -pipe. + Otherwise, don't execute yet, and keep scanning. + (do_spec): At end, if we have stuff with no newline, execute it. + (handle_braces): Implement %{|foo:...}. + (execute): If argbuf contains some `|'s, run several processes + and pipe them together. + (pexecute): new subroutine to make one of the processes. + (find_exec_file): new fn to search for program to execute. + (record_temp_file): new arg FAIL_ONLY. + (store_arg): 2nd arg == 3 means delete file on failure. + This is used for output files. + (delete_temp_files): delete certain files only if fail. + + * cccp.c (include_defaults): /usr/include before /usr/local/include. + + * recog.c (asm_noperands): 1-off in loop checking CLOBBERS + when no output operands and PARALLEL. + + * expmed.c (negate_rtx): Sign-extend the high bits rather than clear. + + * cse.c (fold_rtx): fold negation of real values. + (fold_cc0): fold comparisons on real values. + + * Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H. + + * Handle floating-point problems for cross-compilation. + + * real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE. + * varasm.c (immed_double_const, decode_rtx_const): Use these. + ({force,clear}_const_double_mem): Likewise. + * output-*.c (output_move_double): Use these. + * output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise. + * tm-*.h (PRINT_OPERAND): Use these. + * output-i386.c (print_operand): Use these. + * final.c (output_addr_const): Likewise. + * emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE. + + * real.h (union real_extract): Portable type for storing real as ints. + * varasm.c (immed_double_const, decode_rtx_const): Use these. + + * varasm.c (immed_real_const_1, decode_rtx_const): + Don't assume REAL_VALUE_TYPE is 2 ints long. + * emit-rtl.c (init_emit_once): Likewise. + + * real.h (REAL_VALUE_TYPE): Define as `double' if not defined. + (REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used. + (REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined. + (REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise. + * tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value. + + * rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE + needs more space. Change the rtx_format element to match. + * varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE. + (force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE. + * emit-rtl.c (init_emit_once): Likewise. + And use REAL_VALUE_ATOF to get a floating zero. + * optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP. + * c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF. + * fold-const.c (split_tree): Don't accept REAL_CSTs. + (combine, fold_convert, fold): Use REAL_ARITHMETIC if defined; + else don't fold reals if they are not doubles. + * tree.c (build_real_from_int_cst): Likewise. + * print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value + in hex, since we don't know how to do it right. + +Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL, + DIVSI3_LIBCALL, MODSI3_LIBCALL. + * tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct. + + * tm-sun3-nfp.h, tm-sun3-fpa.h: New files. + +Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Certain envvars specify a file to write deps info to. + + * toplev.c (compile_file): Warn about undefined fns declared static. + + * m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards. + * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'. + + * reload1.c (count_occurrences): New function. + (choose_reload_targets): Don't delete a reload if the same reg + is used elsewhere in the current insn. + (delete_output_reload): code split out from choose_reload_targets. + + * c-typeck.c (build_c_cast): Always put on some operator, + so the cast is never an lvalue for strict ANSI. + + * c-typeck.c (initializer_constant_valid_p): Don't depend on + distinction between NOP_EXPR and CONVERT_EXPR. + + * c-convert.c: Fns reordered; new comments. + + * fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR, + return a NOP_EXPR. + New var TYPE holds type of expr. + + * c-parse.y (expr_no_commas): Split off cast_expr and unary_expr, + to reject `sizeof (int) foo'. + + * toplev.c (main): Treat plain `-' as input filename. + + * final.c (final): If an insn's output routine returns 0, + it means to output the deleted compare insn immediately preceding. + + * m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP + rather than explicitly clearing the overflow flag. + + * tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort. + * i386.md (branch insns): Put real data (sometimes 0) in 3rd arg + of OUTPUT_JUMP. 0 means preceding test may not be deleted. + (lea pattern): Clear the cc's. + * output-i386.c (notice_update_cc): various arith insns set the cc's. + +Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_decl_init): Do nothing for static decls. + + * reload.c (find_reloads_address{,_1}): Return 1 iff entire arg + was reloaded as a whole, else 0. + (find_reload): If find_reloads_address returns 1, don't let that MEM + satisfy a `>' or `<' constraint. + + * m68k.md (cmpmb): Delete special pattern, make cmpqi handle it. + The special pattern couldn't handle reloading the incremented register. + + * integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN, + not BITS... + + * combine.c (subst): Consider big-endian correction + when simplifying (subreg (mem ...) ...). + + * reload.c (find_reloads): Don't crash if matching operands in `asm' + are both read or both write. + + * expr.c (emit_push_insn): Address for movstr must be XINNER, not X. + + * toplev.c (main): Typo parsing `-fno...'. + +Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (rest_of_compilation): `volatile' fns need jump_optimize + for warnings, as if -Wreturn-type. + * c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn. + * c-decl.c (finish_function): Warn if `volatile' fn can drop thru end. + + * cse.c (canon_reg): Handle nulls as subexpressions. + (fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise. + * loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p, + {basic,general}_induction_var): Likewise. + + * expr.c (expand_call): Handle `const' functions: + Local IS_CONST is 1 if function is const. + Attach REG_RETVAL and REG_LIBCALL notes around the call. + Copy fn address to register outside of those notes. + Likewise precompute all parms outside them. + + * expr.c (expand_call): If fn is volatile, emit barrier after the call. + + * c-decl.c (grokdeclarator): Allow function declared const or volatile. + +Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING + or STRUCT_VALUE is defined, can't inline functions returning BLKmode. + +Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (store_constructor): Compute array's size + with int_size_in_bytes. + + * varasm.c (assemble_variable): If shared data, go to data section + before outputting an uninitialized symbol. + + * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash. + (SHARED_SECTION_ASM_OP): Macro defined. + * tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined. + + * c-typeck.c (c_expand_asm_operands): Warn if output op is `const'. + + * Fix problem where a stmt expr in an initialization + refers to the variable it is initializing. + * stmt.c (expand_decl_init): New fn split out from `expand_decl'. + * c-decl.c (finish_decl): Call that. + Don't call expand_decl if already done. + (start_decl): Call expand_decl if type is complete already. + + * Makefile (install): Typo in ranlib command. + +Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (tree_identifier): New field. + (IDENTIFIER_ERROR_LOCUS): Accessor for it. + * c-parse.y (primary => IDENTIFIER): + Undeclared variable gets one err msg per function it appears in. + + * ns32k.md (andsi3): Delete extra brace. + + * alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files. + + * combine.c (SUBST, SUBST_INT): Store new field `is_int'. + (copy_substitutions): Don't copy an int as an rtx. + + * Makefile (INSTALL): Install gcc.1 properly. + + * tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE): + Add missing backslashes. + +See file ChangeLog.0. diff --git a/ChangeLog.10 b/ChangeLog.10 new file mode 100644 index 0000000..a7d3837 --- /dev/null +++ b/ChangeLog.10 @@ -0,0 +1,10110 @@ +Sun Mar 31 05:10:10 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_decl): Don't make a bitfield an integral mode + if the mode of the field type is not MODE_INT. + + * sched.c (schedule_block): CALL_INSNs don't affect fixed regs. + * flow.c (propagate_block): CALL_INSNs don't kill fixed regs. + +Sat Mar 30 03:32:48 1996 Torbjorn Granlund + + * expmed.c (expand_divmod, case TRUNC_DIV_EXPR): Move some code + to avoid shifting by a too large count. + +Fri Mar 29 15:45:51 1996 Doug Evans + + * configure (i[3456]86-*-sunos5*): Delete, config.sub converts + sunos5 to solaris2. + (sparc-*-sunos5*): Likewise. + (sparc64-*-{solaris2*,sunos5*}): Delete. Stick with sparc-*-solaris2*. + + * sparc.h (FUNCTION_PROFILER): Save/restore %g2 around mcount call. + +Fri Mar 29 14:20:31 1996 Stan Cox + + * i386.c (notice_update_cc): Clear cc_status if ref modified MEM. + +Fri Mar 29 09:37:52 1996 Jeffrey A. Law + + * calls.c (expand_call): Remove current_call_is_indirect nonsense. + Add additional argument to INIT_CUMULATIVE_ARGS. + (emit_library_call): Likewise. + (emit_library_call_value): Likewise. + * expr.c (expand_builtin): Likewise. + * function.c (assign_parms): Likewise. + * pa.h (hppa_args): New field "indirect". + (INIT_CUMULATIVE_ARGS): Initialize "indirect" field. + (FUNCTION_ARG): Check "indirect" field, rather than + "current_call_is_indirect". + * a29k.h (INIT_CUMULATIVE_ARGS):New arg, INDIRECT. + * alpha.h (INIT_CUMULATIVE_ARGS): Likewise. + * arm.h (INIT_CUMULATIVE_ARGS): Likewise. + * clipper.h (INIT_CUMULATIVE_ARGS): Likewise. + * convex.h (INIT_CUMULATIVE_ARGS): Likewise. + * dsp16xx.h (INIT_CUMULATIVE_ARGS): Likewise. + * elxsi.h (INIT_CUMULATIVE_ARGS): Likewise. + * fx80.h (INIT_CUMULATIVE_ARGS): Likewise. + * gmicro.h (INIT_CUMULATIVE_ARGS): Likewise. + * h8300.h (INIT_CUMULATIVE_ARGS): Likewise. + * i370/mvs.h (INIT_CUMULATIVE_ARGS): Likewise. + * i386.h (INIT_CUMULATIVE_ARGS): Likewise. + * i860.h (INIT_CUMULATIVE_ARGS): Likewise. + * i960.h (INIT_CUMULATIVE_ARGS): Likewise. + * m68k.h (INIT_CUMULATIVE_ARGS): Likewise. + * m68k/mot3300.h (INIT_CUMULATIVE_ARGS): Likewise. + * m88k.h (INIT_CUMULATIVE_ARGS): Likewise. + * mips.h (INIT_CUMULATIVE_ARGS): Likewise. + * ns32k.h (INIT_CUMULATIVE_ARGS): Likewise. + * pdp11.h (INIT_CUMULATIVE_ARGS): Likewise. + * pyr.h (INIT_CUMULATIVE_ARGS): Likewise. + * romp.h (INIT_CUMULATIVE_ARGS): Likewise. + * rs6000.h (INIT_CUMULATIVE_ARGS): Likewise. + * sh.h (INIT_CUMULATIVE_ARGS): Likewise. + * sparc.h (INIT_CUMULATIVE_ARGS): Likewise. + * spur.h (INIT_CUMULATIVE_ARGS): Likewise. + * tahoe.h (INIT_CUMULATIVE_ARGS): Likewise. + * vax.h (INIT_CUMULATIVE_ARGS): Likewise. + * we32k.h (INIT_CUMULATIVE_ARGS): Likewise. + * mips.c (mips_expand_prologue): Add extra arg to + INIT_CUMULATIVE_ARGS call. + +Thu Mar 28 18:45:49 1996 Richard Kenner + + * alpha.c (summarize_insn): Fix three "off-by-one" bugs in loop bounds. + +Thu Mar 28 16:50:10 1996 Doug Evans + + * ginclude/inl-sparc.h: Deleted. + +Thu Mar 28 12:07:31 1996 Jeffrey A. Law + + * va-h8300.h (va_arg): Don't assume sizeof (int) == 4. + + * pa.c (hppa_legitimize_address): Don't lose for + (plus (plus (mult (A) (shadd_const)) (B)) (C)) if + B + C isn't a valid address for indexing. + (basereg_operand): Only accept base registers after + cse has completed. Don't accept the frame pointer if + it's likely to be eliminated. + * pa.md (unscaled indexing patterns): Add variants with + basereg and index register reversed. + (HImode and QImode loads): Add zero extended variants. + +Wed Mar 27 07:45:27 1996 Richard Kenner + + * expmed.c (negate_rtx): Fix typo in previous change. + +Tue Mar 26 13:50:43 1996 Jim Wilson + + * calls.c (expand_call): In convert_to_mode call, use word_mode + not SImode. + +Tue Mar 26 13:44:34 1996 Doug Evans + + * configure: Delete unnecessary special handling of --with-cpu. + +Tue Mar 26 10:41:57 1996 Jeffrey A. Law + + * expr.c (emit_push_insn): When doing a partial push, emit + a CLOBBER so that flow doesn't think the entire register + is live. + +Tue Mar 26 10:00:52 1996 Richard Kenner + + * alpha.c (summarize_insn, default case): Properly use format_ptr. + +Tue Mar 26 09:51:09 1996 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.h (output_move_simode_const): New extern declaration. + * m68k.c (output_move_simode_const): New function. + (singlemove_string): Call it. + * m68k.md (fullword move): Likewise. + +Tue Mar 26 05:43:06 1996 Torbjorn Granlund + + * vax.md (insv matcher): Call CC_STATUS_INIT. + * vax.h (NOTICE_UPDATE_CC): Handle ZERO_EXTRACT destination. + +Mon Mar 25 19:18:08 1996 Jason Merrill + + * function.c (expand_function_start): Don't set up context_display + unless current_function_needs_context. + +Mon Mar 25 18:48:18 1996 Philippe De Muyter + + * fold-const.c (fold, case BIT_IOR_EXPR): Recognize rotates + with variable count. + +Mon Mar 25 18:05:28 1996 Jim Wilson + + * Makefile.in (libgcc1-test): Undo Feb 12 change. + +Mon Mar 25 08:09:59 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc/thread-single.c (objc_mutex_unlock): Properly declare thread_id. + +Mon Mar 25 08:02:50 1996 Philippe De Muyter + + * configure (m68k-motorola-sysv*): Fixed indentation. + +Sun Mar 24 08:16:42 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expmed.c (negate_rtx): Don't try to negate a constant ourself; + instead call simplify_unary_operation. + +Sun Mar 24 07:29:06 1996 Richard Henderson + + * gcc.c (process_command): Instead of hardcoding non-empty + switches_need_spaces to turn on "o" and "L", make the string + contain the switches that need the spaces. + * m68k/ccur-GAS.h (SWITCHES_NEED_SPACES): Change definition + correspondingly. + +Sat Mar 23 18:34:44 1996 Harry Dolan + + * i860/paragon.h (LIB_SPEC): Always output -lmach. + +Sat Mar 23 18:25:39 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * c-typeck.c (set_init_index): Check for use outside an array + initializer. + + * defaults.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete. + * pdp11.h (ASM_OUTPUT_ADDR_DIFF_ELT): Don't define. + +Sat Mar 23 15:55:35 1996 Doug Evans + + * combine.c (make_extraction): In BITS_BIG_ENDIAN correction of POS, + need to treat MEM and REG differently. + + * sparc.h (SPARC_SIMM{10,11,13}_P): Define. + (SMALL_INT): Use SPARC_SIMM13_P. + (CONST_OK_FOR_LETTER_P): Support new letters L,M. + * sparc.c (arith11_operand): Use SPARC_SIMM11_P. + (arith10_operand): Use SPARC_SIMM10_P. + * sparc.md (*mov{qi,hi,si,di}_cc_sp64): Fix constraints. + (*mov{qi,hi,si,di}_cc_reg_sp64): Likewise. + +Sat Mar 23 07:47:19 1996 Andreas Schwab + + * m68k/linux.h (TRAMPOLINE_TEMPLATE): Correct first instruction. + * m68k/m68kv4.h (TRAMPOLINE_TEMPLATE): Likewise. + +Sat Mar 23 07:06:55 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * bc-emit.c (bc_emit_instruction): Add missing va_end call. + + * c-typeck.c (build_array_ref): Give error if subscripting a function. + +Fri Mar 22 09:11:45 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * local-alloc.c (optimize_reg_copy_1): Only update reg_live_length + if it is non-negative. + +Thu Mar 21 14:42:26 1996 Doug Evans + + * sparc/splet.h (STARTFILE_SPEC,LINK_SPEC): Define. + +Wed Mar 20 17:23:18 1996 Jim Wilson + + * cse.c (note_mem_written): Delete obsolete code for handling + (mem (scratch)). + + * mips.c (mips_expand_prologue): In initialization of fnargs, delete + special treatment of METHOD_TYPE. + +Wed Mar 20 17:07:45 1996 Doug Evans + + * sparc/sol2.h (ASM_CPU_SPEC): Recognize -mcpu=v8plus, not v9. + Fix typo in ultrasparc entry. + * sparc.h (CPP_CPU_SPEC): Add v8plus entry. + (ASM_CPU_SPEC): Likewise. + + * sparc.c (fcc_reg_operand): Ensure correct mode. + (icc_or_fcc_reg_operand): Likewise. + (gen_v9_scc): IF_THEN_ELSE must have a mode. + (print_operand): New operand code `x' for all condition codes. + New operand codes `c,d' for reversed conditional moves. + * sparc.md (movqicc,movhicc): New named patterns. + (movdicc): if_then_else must have a mode. + (movsicc,movsfcc,movdfcc,movtfcc): Likewise. + Change condition to TARGET_V9, not TARGET_ARCH64. + Fail if DImode compare and ! TARGET_ARCH64. + (conditional move matchers): Rewrite. + +Wed Mar 20 16:12:29 1996 Stan Cox + + * i386.h (HARD_REGNO_MODE_OK): Relax QImode constraint to + avoid a reload problem. + +Wed Mar 20 13:12:22 1996 Jeffrey A. Law + + * pa.c (hppa_legitimize_address): Don't lose for x[n-const] + when n-const will not be shifted. Don't pessimize code for + x[n-const] when const is small. + +Wed Mar 20 11:42:32 1996 Markus Theissinger + + * m68k/sun3.h (LIB_SPEC): Don't link /usr/lib/bb_link.o with `gcc -a'. + (__bb_init_func): Deleted. + (BLOCK_PROFILER_CODE): Don't set macro to nothing. + + * m68k/xm-sun3.h: New file. + * configure (m68k-sun-sunos*): Use it. + + * xm-linux.h (HAVE_POPEN): New define. + +Wed Mar 20 11:28:37 1996 Andreas Schwab + + * m68k/linux.h (ASM_SPEC): Deleted. + (STRUCT_VALUE_REGNUM): Redefine as register a0. + (STATIC_CHAIN_REGNUM): Redefine as register a1. + (TRAMPOLINE_TEMPLATE): Redefine to use the right register. + +Wed Mar 20 08:04:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (__dummy): New function. + * Makefile.in (LIB2FUNCS): Add __dummy. + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Call "setjmp" + pattern, if any. + Call dummy function pointed to by static chain pointer. + (expand_builtin, case BUILT_IN_LONJMP): Ignore second expression. + Set address of __dummy into static chain pointer. + Copy the label to return to into a pseudo earlier. + + * stupid.c (last_setjmp_suid, regs_crosses_setjmp): New variables. + (stupid_life_analysis, stupid_mark_refs): Use them to track which + regs are live over a setjmp; don't allocate such regs. + +Tue Mar 19 22:02:07 1996 Jason Merrill + + * cplus-dem.c (demangle_template): Fix for non-mangled pointer + arguments. + +Tue Mar 19 13:54:06 1996 Jeffrey A. Law + + * pa.c (compute_frame_size): Update comments to reflect reality. + (hppa_expand_prologue): Don't save registers which aren't + used, even if it creates holes. Partially undoes changes from + early March. + (hppa_expand_epilogue): Likewise. + +Tue Mar 19 08:25:17 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * stmt.c (struct case_node): New member balance. + (add_case_node): New function. + (pushcase, pushcase_range): Use it. + (case_tree2list): New function. + (expand_end_case): Use it. + +Tue Mar 19 07:44:22 1996 Stephen L Moshier (moshier@world.std.com) + + * regstack.c (move_for_stack_reg): Avoid stack overflow while + storing XFmode from fp reg to memory. + +Tue Mar 19 07:38:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * m68k.h (MASK_*): New macros. + (OVERRIDE_OPTIONS): Use them. + (TARGET_SWITCHES): Likewise. + Treat -m68332 like -m68000. + +Mon Mar 18 20:04:13 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * expmed.c (emit_store_flag): If expanding (GE X 0) will need two + insns, don't use subtarget for the result of the first insn. + Move a likely constant to the start of a condition. + +Mon Mar 18 19:48:14 1996 Philippe De Muyter + + * m68k.h (CONST_OK_FOR_LETTER_VALUE): New constraint 'M'. + * m68k.c (output_function_epilogue): Restore registers using sp+ + instead of fp(n) in leaf functions. + (USE_MOVQ, use_movq): Function replaced by macro. + * m68k.md (pushexthisi_const, movsi_const0): New names. + (andsi3, iorsi3): Allow only 'M', not 'K' constants, if dest is 'd'. + +Mon Mar 18 19:33:20 1996 Fila Kolodny + + * i370/t-mvs: New file. + * configure (i370-*-mvs*): Use it. + * i370/mvs.h (FUNCTION_PROLOGUE): LE/370 takes 120 bytes for DSA. + Have only one copy of timestamp and PPA2 per object module. + Only have unnamed CSECT to match IBM C. + +Mon Mar 18 19:26:21 1996 Paul Russell (Rusty.Russell@adelaide.maptek.com.au) + + * combine.c (simplify_if_then_else): Allow for case that + condition might no longer be a condition. + +Mon Mar 18 19:14:42 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (build_conditional_expr): If OP1 is null, set + both OP1 and ORIG_OP1 to IFEXP. + + * c-iterate.c (iterator_loop_epilogue): Don't clear DECL_RTL + for a static decl. + +Mon Mar 18 08:02:25 1996 Stephen L Moshier + + * alpha.c (summarize_insn, case SUBREG, CONST_*): New cases. + +Sun Mar 17 16:55:00 1996 Doug Evans + + * combine.c (find_split_point): Handle NULL return from + make_extraction. + (make_field_assignment): Likewise. + +Sat Mar 16 18:56:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (substitute_in_expr, case COMPONENT_REF): Ignore + if inner PLACEHOLDER_EXPR has not yet been initialized. + + * i386.c (standard_80386_constant_p): -0.0 is not 0.0. + * i386.md (insv): Restore missing end of comment. + + * combine.c (make_extraction): Correct typo in force_to_mode + call in previous change. + Return 0 if pos+len out of range of want desired mode. + +Sat Mar 16 16:20:43 1996 David Mosberger-Tang + + * alpha.md (trap): New attribute. + Modify patterns for all floating-point trap generating instructions. + * alpha.h (CPP_SPEC): Added -mieee and -mieee-with-inexact. + (alpha_trap_precision, alpha_fp_rounding_mode, alpha_fp_trap_mode): + New enum types. + (target_flags, alpha_tp, alpha_fprm, alpha_fptm): New external vars. + (alpha_fprm_string, alpha_fptm_string, alpha_tp_string): Likewise. + (TARGET_IEEE{,_WITH_INEXACT,_CONFORMANT}): New macros. + (MASK_IEEE{,_WITH_INEXACT,_CONFORMANT}): Likewise. + (MASK_FP, MASK_FPREGS, + (TARGET_SWITCHES): Added "ieee-conformant", "ieee", and + "ieee-with-inexact"; use MASK symbols. + (TARGET_OPTIONS): New macro. + (OVERRIDE_OPTIONS, FINAL_PRESCAN_{INSN,LABEL}): New macros. + (PRINT_OPERAND_PUNCT_VALID_P): Allow operand codes for FP insns. + (CC1_SPEC): New macro. + * alpha.c (alpha_tp, alpha_fprm, alpha_fptm): New variables. + (alpha_tp_string, alpha_fprm_string, alpha_fptm_string + (trap_pending): Likewise. + (override_options, summarize_insn, final_prescan_insn): New functions. + (print_operand): Handle cases '&', '\'', ')', and '+'. + (output_prolog): Emit ".eflag 48" if TARGET_IEEE_CONFORMANT. + (output_epilog): Call final_prescan_insn before emitting epilog. + + * final.c (final_scan_insn, case CODE_LABEL): Invoke + FINAL_PRESCAN_INSN if FINAL_SCAN_LABEL is defined. + + * alpha/{linux.h,x-linux,xm-linux.h}: New files. + * configure (alpha-*-linux*): New case. + * alpha.c (output_prolog): Set alpha_function_needs_gp if profiling + and TARGET_PROFILING_NEEDS_GP defined. + +Thu Mar 14 22:28:20 1996 David Edelsohn + + * rs6000.h (LEGITIMATE_OFFSET_ADDRESS_P): Fix last change. + * aix41.h (LINK_SPEC): add -bnoentry if shared and no explicit entry. + +Thu Mar 14 12:47:33 1996 Jim Wilson + + * mips.h (ASM_OUTPUT_DOUBLE_INT): Use 'X' if CONST_INT and + HOST_BITS_PER_WIDE_INT == 64. + + * mips.c (mips_expand_prologue): Change TYPE_NEEDS_CONSTRUCTING to + TREE_ADDRESSABLE; + +Thu Mar 14 11:21:37 1996 Michael Meissner + + * rs6000.h (LEGITIMATE_OFFSET_ADDRESS_P): For 32-bit mode, + allow TImode variables with int offsets, so that structures + greater than 8 bytes and less than or equal to 16 bytes can be + instantiated correctly. + + * rs6000.c (rs6000_valid_type_attribute_p): Add exception + attribute for Windows NT. + + * win-nt.h (ASM_OUTPUT_FUNCTION_PREFIX): Delete, merge into + ASM_DECLARE_FUNCTION_NAME. + (ASM_DECLARE_FUNCTION_NAME): Add support for exception attribute + setting fields 3 & 4 of the structured exception handling table. + +Thu Mar 14 01:53:19 1996 Jeffrey A. Law + + * pa.h (ASM_DECLARE_FUNCTION_NAME): Change TYPE_NEEDS_CONSTRUCTING + to TREE_ADDRESSABLE. From Jim Wilson. + +Wed Mar 13 13:40:32 1996 Jim Wilson + + * c-tree.h (warn_sign_compare): Add extern to declaration. + +Wed Mar 13 13:37:00 1996 Doug Evans + + * configure: Use cross-make and build-make if building + cross compiler with cross compiler. + +Wed Mar 13 12:00:34 1996 Michael Meissner + + * i386/cygwin32.h (ASM_OUTPUT_ALIGN): Correct defination. + + * rs6000/{win-nt,cygwin32}.h (STARTFILE_SPEC): Add crti.o before + all objects. + (ENDFILE_SPEC): Add crtn.o after all objects. + + * configure (powerpcle-*-cygwin32): Use t-winnt, not t-cygin32 + * rs6000/t-cygwin32: Delete, no longer used. + + * rs6000/t-winnt ({,INSTALL_}LIBGCC): Build and install crti.o and + crtn.o. + + * rs6000/win-nt.h (EXTRA_SECTION_FUNCTIONS): Add ctors_section and + dtors_section. + (INVOKE__main): Define, so that __main is called. + (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Define to put pointers to + the constructor/destructor in the appropriate section. + + * nt-c{i,n}.asm: New files to be linked before/after all of the users' + objects. + +Wed Mar 13 00:42:17 1996 Per Bothner + + * dbxout.c (dbxout_type): Better "variant" handling to ignore + const/volatile but not typedef names. Improves Feb 12 change. + +Tue Mar 12 17:25:14 1996 David Mosberger-Tang + + * glimits.h (__LONG_MAX__): On Alpha, use 64 bit value. + +Tue Mar 12 15:07:49 1996 Torbjorn Granlund + + * m68k.c (valid_dbcc_comparison_p): Don't test cc_prev_status here. + (flags_in_68881): New function. + * m68k.md (dbra peepholes): Use flags_in_68881. + +Tue Mar 12 13:54:15 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sparc.md (nonlocal_goto): Emit barrier after jump. + (setjmp{,_64,_32}): New patterns. + +Tue Mar 12 12:43:27 1996 Jim Wilson + + * i960.h (ROUND_TYPE_SIZE): Return round_up result instead of + COMPUTED. + + * expr.c (expand_expr, case COMPONENT_REF): For unaligned object in + an aligned union, delete check for EXPAND_SUM. + + * expr.h (clear_storage): Add comment terminator. + +Mon Mar 11 19:07:50 1996 Jeffrey A. Law + + * recog.c (constrain_operands, case 'V'): Don't call + offsettable_memref_p before reload has completed. + +Mon Mar 11 16:06:13 1996 Doug Evans + + * h8300.h (SP_AND_G_REGS): Renamed from SP_AND_G_REG. + (CC_DONE_CBIT): Delete. + (CC_OVERFLOW_0,CC_OVERFLOW_UNUSABLE,CC_NO_CARRY): Define. + * h8300.c (cond_string): Delete CC_DONE_CBIT handling. + (notice_update_cc): Delete CC_CBIT, CC_WHOOPS. Add CC_SET_ZN_C0. + (restore_compare_p): New function. + (shift_one): Use shll instead of shal so overflow bit is usable. + Set cc_valid bits to cc_status.flags values. + (emit_a_shift): Set cc_status.flags. + * h8300.md (attr cc): Delete whoops,cbit. Add set_zn_c0. + (all patterns) Update cc attr setting. + (tstqi,tsthi,tstsi): Delete CC_DONE_CBIT handling. + (addhi3,subhi3): Change define_expand to define_insn. + (branch_true,branch_false): Check if compare needs to be restored. + +Mon Mar 11 13:55:23 1996 Michael Meissner + + * rs6000.h (CONST_DOUBLE_OK_FOR_LETTER_P): Add 'H' for movdi + patterns in 32 bit that generate 3 instructions. + (num_insns_constant): Add declaration. + + * rs6000.c (num_insns_constant{,_wide}) Functions to determine the + number of insns it takes to generate an integer constant. + (easy_fp_constant): Allow DImode in easy constants. Use + num_insns_constant_wide. + (input_operand): Allow any CONST_{INT,DOUBLE}'s for {SI,DI}mode. + + * rs6000.md (movdi): Generate a normal movdi using a CONST_DOUBLE + for 32 bit mode rather than using SUBREG's. For 64 bit mode, + break large integer constants into smaller pieces. Add various + define_splits to handle loading the various DImode constants. + +Mon Mar 11 06:54:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (make_extraction): Use proper mode for INNER in all cases. + (simplify_comparison, case ZERO_EXTRACT): For bits big endian and + no extzv, use BITS_PER_WORD. + * fx80.md, gmicro.md, i386.md, m68k.md, tahoe.md, vax.md: + Use proper modes and predicates for {sign,zero}_extract. + +Sun Mar 10 06:23:52 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * emit-rtl.c (free_insn): New variable. + (init_emit, restore_emit_status): Clear it. + (gen_sequence): Store insn in free_insn when sequence length is 1. + (make_insn_raw): Use free_insn if available and still in the + rtl generation phase. + +Fri Mar 8 15:37:31 1996 Mike Stump + + * expr.c (expand_expr, case TARGET_EXPR): Delay putting the cleanup + on the cleanup chain until after the subexpression has been expanded. + +Fri Mar 8 16:14:51 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.c (ix86_binary_operator_ok): One memory operand is OK. + This is independent of commutativity. + +Fri Mar 8 14:07:43 1996 Jim Wilson + + * expr.c (store_constructor_field): Call store_field if bitpos is + nonzero and target is not a MEM. + + * jump.c (jump_optimize): When handle a USE insn before an + unconditional jump, disable the optimization if the USE is the + only insn in the loop. + + * sh.c (reg_unused_after): Return 0 if see a JUMP_INSN. + +Fri Mar 8 12:08:36 1996 Doug Evans + + * sparc/lynx.h (CPP_SPEC): Use %(cpp_cpu). + + * sparc/sparc.md (move_pic_label_si,move_label_di): Rewrite length + attr calcs to be more conservative. + +Thu Mar 7 19:14:21 1996 Doug Evans + + * sparc/t-splet: New file. + * sparc/splet.h: New file. + * configure (sparclet-*-aout*): Use them. + + * sparc.h (MASK_LIVE_G0,TARGET_LIVE_G0): Define. + (FIRST_PSEUDO_REGISTER): Add 1 for %icc (now 101). + (FIXED_REGISTERS,CALL_USED_REGISTERS): Update. + (FIXED_REGISTERS): %g0 is fixed by default. + (SPARC_{FIRST,LAST}_V9_FCC_REG): Define. + (SPARC_{ICC,FCC}_REG): Define. + (CONDITIONAL_REGISTER_USAGE): Don't fix %fcc0 if v8. + (REG_CLASS_CONTENTS): Reg 0 is an int reg, reg 100 is %icc. + (REGNO_REG_CLASS): Rewrite to use global `sparc_regno_reg_class'. + (REG_ALLOC_ORDER,REG_LEAF_ALLOC_ORDER,LEAF_REGISTERS): Add %icc. + (REG_CLASS_FROM_LETTER): Handle 'c' for FPCC_REGS in non-v9 case. + (REGNO_OK_FOR_{BASE,INDEX}_P): Treat %g0 as a normal reg. + (REG_OK_FOR_{BASE,INDEX}_P,EXTRA_CONSTRAINT): Likewise. + (REGISTER_NAMES): Add %icc. + (ADDITIONAL_REGISTER_NAMES): Use SPARC_ICC_REG. + * sparc.c (leaf_reg_remap): Add %icc=100. + (reg_or_0_operand): Don't allow 0 if TARGET_LIVE_G0. + (fcc_reg_operand): Renamed from ccfp_reg_operand. + Use SPARC_FCC_REG. Don't treat reg 0 as an fcc reg. Don't match + modes if `mode' argument is VOIDmode. + (icc_or_fcc_reg_operand): New function. + (gen_compare_reg): Use SPARC_FCC_REG for v8 fp compares. + Use SPARC_ICC_REG for int compares. + (eligible_for_epilogue_delay): Don't allow anything if TARGET_LIVE_G0. + Delete unnecessary test for %g0. + (emit_move_sequence): Don't emit (set (mem) (const_int 0)) if + TARGET_LIVE_G0. + (output_scc_insn): Label moved to operand 3. Condition code reg + moved to operand 2. + (sparc_mode_class): Enum C_MODE renamed to CC_MODE. + (hard_32bit_mode_classes): Set reg 0 to S_MODES. Add entry for %icc. + (hard_64bit_mode_classes): Set reg 0 to D_MODES. Add entry for %icc. + (sparc_regno_reg_class): New global. + (sparc_init_modes): Initialize it. + (output_cbranch): Delete fp_cond_reg argument. + (print_operand, MEM op): Don't print "%g0+" if TARGET_LIVE_G0. + (sparc_flat_eligible_for_epilogue_delay): Don't allow anything if + TARGET_LIVE_G0. + * sparc.md (live_g0): New attribute. + (*): Integer condition code register is now reg 100. + Use SPARC_ICC_REG instead of hardcoding reg 100 where possible. + Non-v9 floating point condition code register is now reg 96. + (*cmp{sf,df,tf}_{fpe,fp}_sp{32,64}): Combine v9/non-v9 cases. + (*{normal,inverted}_{,fp,fpe}_branch): Update call to output_cbranch. + (*mov{qi,hi,si}_insn): Don't use if TARGET_LIVE_G0. + (*mov{qi,hi,si}_insn_liveg0): New patterns. + (*mov{si,di,sf,df,tf}_ccfp{,e}_sp64): ccfp_reg_operand renamed to + fcc_reg_operand. + (*negdi2_sp32,negsi2,one_cmplsi2,ffssi2): Ensure %%g0 is 0 if + TARGET_LIVE_G0. + (*one_cmpldi2_sp32): Move operand 1 to rs1 and use 0 as rs2. + (patterns that use %g0 in rs2): Use 0 immediate value instead. + (patterns that read %g0): Don't use if TARGET_LIVE_G0. + +Thu Mar 7 15:39:16 1996 Jim Wilson + + * sh.h (PASS_IN_REG_P): Change < to <=. + * va-sh.h (va_start): Change __SH3E___ to __SH3E__. + (va_arg): Add little-endian SH3E support. Fix big-endian version + to work for arguments smaller than the word size. + +Thu Mar 7 10:37:37 1996 Jeffrey A. Law + + * lib2funcs.asm: Remove entry/exit routines. Move them into... + * ee.asm: New file. Entry/exit code. + * ee_fp.asm: New file. Entry/exit code with frame pointer. + * t-pa: Corresponding changes. + * t-pro: Corresponding changes. + + * pa.c: Fix misc small typos/thinkos in recent changes. + +Wed Mar 6 17:36:03 1996 Jason Merrill + + * cplus-dem.c (demangle_template): Fix for address-of-extern arguments. + +Wed Mar 6 15:12:55 1996 Jeffrey A. Law + + * t-pro (dp-bit rule): Fix typo. + + * lib2funcs.asm (__outline_prologue): Remove frame pointer + support. + (__outline_prologue_fp): Out of line prologue with frame pointer. + (__outline_epilogue, outline_epilogue_fp): Similarly. + * pa.c (compute_frame_size): Allocate enough space to avoid holes + in the callee register saves. Remove some special handling of %r3. + (hppa_expand_prologue): Don't do an out of line prologue/epilogue + if it would take more insns than an inline prologue/epilogue. + Don't leave holes in the callee register save set. + (hppa_expand_prologue): Corresponding changes. Pass stack size + to out of line epilogue code. + * pa.h (FRAME_POINTER_REQUIRED): Revert last change. + * pa.md (outline_prologue_call): Handle outline prologues which + don't need frame pointers. + (outline_epilogue_call): Similarly. + * t-pro: Reenable multilib code. Build a set of libraries that + optimize for space. + +Wed Mar 6 14:28:14 1996 Jim Wilson + + * Makefile.in (USER_H): Add ginclude/va-sh.h. + * ginclude/stdarg.h, ginclude/varargs.h: Use va-sh.h. + * ginclude/va-sh.h: New file. + + * sh.h (PASS_IN_REG_P): Fix typo in last change. + +Wed Mar 6 11:42:06 1996 David Edelsohn + + * rs6000.h (enum processor_type): Remove PROCESSOR_PPC602. + (RTX_COSTS): Remove PROCESSOR_PPC602. PPC603 MULT cost depends + on constant and domain. + * rs6000.c (processor_target_table): 602 uses PROCESSOR_PPC603. + (get_issue_rate): Remove CPU_PPC602. + * rs6000.md (function units): Remove PPC602. Add store and + fpstore type attribute values. Update patterns. + +Tue Mar 5 18:43:43 1996 Richard Henderson + + * m68k/coff.h (ASM_OUTPUT_SECTION_NAME): New define. + + * m68k/{aux-crt1.c,aux-crt[2n].asm}: New files. + * m68k/{aux-exit.c,aux-low.gld,aux-mcount.c}: More new files. + * m68k/{aux.h,auxgnu.h,auxstd.h}: Even more new files. + * m68k/{t-aux,xm-aux.h}: The rest of the new files. + * m68k/sgs.h (ASM_OUTPUT_CASE_END): Add missing semicolon. + (switch_table_difference_label_flag): Make extern. + * fixincludes (sys/param.h): Fix c89 __asm statements. + * configure (m68k-apple-aux*): New target. + +Tue Mar 5 17:38:19 1996 Doug Evans + + * sparc.md (*mov{qi,hi,si}_insn): Simplify length attribute. + (*movsi_insn): Use fpload/fpstore attributes for fp loads/stores. + %r1 -> %1 for fpstore alternative. + (*movsf_insn,*movsf_no_f_insn): %r1 -> %1. + +Tue Mar 5 17:19:17 1996 Jason Merrill + + * expr.c (expand_expr, case *_DECL): If we make a non-local + reference from a function with DECL_NO_STATIC_CHAIN set, abort. + (expand_expr, case ADDR_EXPR): We don't need a trampoline for a + function with DECL_NO_STATIC_CHAIN set. + * function.c (lookup_static_chain): If we're checking on a function + that doesn't need a static chain, return 0. + (init_function_start): We don't need context if DECL_NO_STATIC_CHAIN + is set. + * tree.c (staticp): Check DECL_NO_STATIC_CHAIN on nested functions. + +Tue Mar 5 15:04:29 1996 Jim Wilson + + * sh.md (push_e, pop_e): Add TARGET_SH3E to condition. + * sh.h (JUMP_TABLES_IN_TEXT_SECTION): Define. + * sh.c (find_barrier): Set si_limit to 1018 instead of 1020, and + hi_limit to 510 instead of 512. + +Tue Mar 5 13:39:44 1996 Doug Evans + + * loop.c (init_loop): Use pseudo reg in add_cost computation + so cost doesn't vary depending on whether reg 0 happens to be + fixed or not. + +Tue Mar 5 09:32:24 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * reg-stack.c (record_label_references): Check for undefined label. + +Tue Mar 5 09:22:20 1996 Scott Christley (scottc@net-community.com) + + * objc/objc-api.h, objc/runtime.h: Include objc/thread.h. + * objc/class.c (__objc_init_class_tables): Surround sarray access + with mutex lock/unlock. + (__objc_add_class_to_hash, objc_lookup_class): Likewise. + (objc_get_class, objc_get_next_class): Likewise. + (__objc_resolve_class_links, class_pose_as): Likewise. + * objc/init.c (__objc_runtime_mutux, __objc_runtime_thread_alive): + New variables. + (objc_init_statics, __objc_init_protocols): Surround sarray access + with mutex lock/unlock + (__objc_exec_class): Likewise. + Initialization for thread-safe global variables. + Declarations for thread-safe functions and global variables + * objc/sendmsg.c (get_imp, __objc_responds_to): + Surround sarray access with mutex lock/unlock. + (__objc_init_install_dtable): Likewise. + (__objc_update_dispatch_table_for_class): Likewise. + (__objc_print_dtable_stats): Likewise. + * objc/selector.c (sel_get_typed_uid, sel_get_any_typed_uid): Likewise. + (sel_get_any_uid, sel_get_name, sel_register_name): Likewise. + (sel_register_typed_name): Likewise. + * objc/sarray.h (union sversion): New. + (struct sarray): Maintain multiple versions. + (sarray_remove_garbage): Add prototype. + * objc/sarray.c (sarray_{remove,free}_garbage): New functions. + (sarray_at_put, sarray_new, sarray_lazy_copy): + Modify/copy sarray structure/data in a thread-safe manner + (sarray_{realloc,free}): Reallocate/free sarray structure/data in a + thread-safe manner. + + * objc/THREADS, objc/thread.c, objc/thread.h: New files. + * objc/thread-{decosf1,irix,solaris,win32,single}.c: New files. + * objc/objc-list.h: Renamed from objc/list.h. + * objc/Makefile: Changes to compile new files and name renaming. + * objc/makefile.dos: Likewise. + +Tue Mar 5 07:51:31 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * bc-emit.c, bc-optab.c (free): Delete declaration of library function. + + * c-decl.c (duplicate_decl): If making decl non-external, copy + context from old to new. + +Tue Mar 5 02:27:35 1996 Jeffrey A. Law + + * sparc.md (*cmp{si,di}_insn): %r0 -> %0. + (DFmode move define_split): Ensure registers not extended v9 fp regs. + (*mov{sf,df,tf}_cc_reg_sp64): %r3 -> %3. + +Mon Mar 4 18:46:37 1996 Manfred Hollstein + + * Makefile.in (CRT0STUFF_T_CFLAGS): New macro. + (stamp-crt0, crt0.o, mcrt0.o): New goals. + (STAGESTUFF): stamp-crt0 added. + + * collect2.c (main): Check new define DEFAULT_A_OUT_NAME. + + * m68k.c (print_operand): Emit .l as scale factor #ifdef MOTOROLA. + * m68k/mot3300-crt0.S, m68k/mot3300Mcrt0.S: New files. + * m68k/mot3300g.h: Deleted. + * m68k/mot3300.h (FUNCTION_PROFILER): Emit label references + corresponding to those generated by ASM_OUTPUT_INTERNAL_LABEL. + (MOTOROLA, MOTOROLA_BSR, ...): Define #ifndef USE_GAS. + (ASM_SPEC): Define properly #ifdef USE_GAS. + (LIB_SPEC): -L/usr/lib/libp deleted. + (STARTFILE_SPEC): -L/usr/lib/libp added. + (DEFAULT_A_OUT_NAME): Define. + (LINK_SPEC): Pass -v if GNU ld is used. + (LOCAL_LABEL_PREFIX): Local labels start with .L using GAS, else L%. + (USER_LABEL_PREFIX): Undefine. + (FUNCTION_PROFILER): Call asm_fprintf instead of normal fprintf. + (ASM_APP_ON, ASM_FILE_START): GAS supports it. + (CTORS_.../DTORS_...): Define if GNU ld is used. + (ASM_FILE_START): Define properly for Motorola and GNU as syntax. + (TARGET_VERSION): Re-define only #ifndef USE_GAS. + (CALL_USED_REGISTERS): Deleted. + (GLOBAL_ASM_OP): Re-define only #ifndef USE_GAS. + (ASM_{LONG,SHORT,CHAR,BYTE,BYTE_OP}): New macros. + (ASM_OUTPUT_{DOUBLE,LONG_DOUBLE,FLOAT,INT,SHORT}): Use them. + (ASM_OUTPUT_{CHAR,BYTE,ASCII,FLOAT_OPERAND,DOUBLE_OPERAND}): Likewise. + (ALIGN_ASM_OP, SKIP_ASM_OP): New macros. + (ASM_OUTPUT_{ALIGN,SKIP}): Use them. + (ASM_OUTPUT_SOURCE_FILENAME): Define only if not using GNU as. + (ASM_{GENERATE,OUTPUT}_INTERAL_LABEL): Provide proper definitions for + Motorola and GNU as syntax. + (ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT): Changed for portability between + Motorola and GNU as syntax. + (ASM_OUTPUT_{CASE_LABEL,OPCODE}): Define only if not using GNU as. + (ASM_OUTPUT_CASE_FETCH, ASM_RETURN_CASE_JUMP): New macros. + (ASM_OUTPUT_{COMMON,LOCAL}): Proper defns for Motorola and gas syntax. + (SDB_...): Define only for Motorola as. + (ALT_LIBM): New define to tell g++.c about an alternative name for + `-lm'. + (MATH_LIBRARY, NEED_ATEXIT, HAVE_ATEXIT, EXIT_BODY): New macros. + * m68k/t-mot3300, m68k/t-mot3300-{gald,gas,gld}: New files. + * m68k/x-mot3300-gas: New file. + * m68k/xm-mot3300.h (USG): Set to 1. + * configure (m68k-motorola-sysv*): Keep track of new different + combinations (--with-gnu-...), and provide proper definitions for + tm_file, xmake_file, tmake_file, use_collect2, and extra_parts. + + * gbl-ctors.h (HAVE_ATEXIT): Define if NEED_ATEXIT is defined. + (atexit): Use `int atexit' prototype also if NEED_ATEXIT is defined. + (on_exit): According to man on_exit on the Sun it returns int not void. + * libgcc2.c (L_bb/atexit, onexit): Declarations replaced by + #include'ing "gbl-ctors.h". + (L_exit/atexit): New function. + (L_exit/exit): Call any registered functions. + +Mon Mar 4 18:03:38 1996 Bryan Ford (baford@cs.utah.edu) + + * configure (i[3456]86-moss-msdos*): New target. + * i386/moss.h: New file. + +Mon Mar 4 17:38:50 1996 Jim Wilson + + * sh.h (PASS_IN_REG_P): Don't reject BLKmode for SH3e. + For SH3e, do reject parameter that won't fit entirely in registers. + + * sh.md (mulhisi3-2, mulhisi3-1, mulsidi3_i, umulsidi3_i, + smulsi3_highpart, umulsi3_highpart): Renames operands 1/2 to 0/1. + (mulsidi3, umulsidi3): Add support for TARGET_LITTLE_ENDIAN. + + * sh.c (machine_dependent_reorg): In TARGET_RELAX code, when scan + forward from LINK, fail if pass a CODE_LABEL before finding INSN. + Fail if SCAN not INSN is a JUMP_INSN. + +Mon Mar 4 11:27:10 1996 Michael Meissner + + * rs6000.h (CALL_LONG): Change CALL_xx values from an enumeration + to bitmasks. Add CALL_LONG to support longcall attributes. + (rs6000_args): Call_cookie field is now an int. + (rs6000_longcall_ref): Add declaration. + + * rs6000.c (init_cumulative_args): Add support for longcall + attributes to always call through a pointer. + (function_arg): Ditto. + (rs6000_valid_type_attribute_p): Ditto. + (rs6000_longcall_ref): New function for long calls. + + * rs6000.md (call insns): Add support for longcall attributes. + +Mon Mar 4 08:42:14 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * real.c (significand_size): Don't test the modes, but their sizes. + + * dwarfout.c (xstrdup): Moved from here. + * toplev.c (xstrdup): New function. + * tree.h (xstrdup): Declare. + * bc-emit.c (bc_xstrdup): Delete. + * expr.c (bc_strdup): Delete. + (bc_load_externaddr_id): Use xstrdup instead of bc_xstrdup. + * function.c (bc_expand_function_start): Likewise. + * 1750a.c (strdup): Delete. + (float_label): Use xstrdup instead of strdup. + * 1750a.h (xstrdup): Declare instead of instead of strdup. + (ASM_OUTPUT_LABEL): Use xstrdup instead of strdup. + (FIX_FRAME_POINTER_ADDRESS): Don't use DEPTH in string. + +Mon Mar 4 08:23:23 1996 Richard Kenner + + * xm-we32k.h (NO_WAIT_H): Deleted. + + * collect2.c: Never include wait.h. + +Sat Mar 2 22:43:07 1996 Torbjorn Granlund + + * configure (code for making links): Work around sh bug on FreeBSD. + +Sat Mar 2 13:40:29 1996 Jeffrey A. Law + + * h8300.h (BIGGEST_FIELD_ALIGNMENT): Replace uses of + TARGET_ALIGN_STRUCT_300 with TARGET_ALIGN_300. + (BIGGEST_ALIGNMENT): Likewise. + +Sat Mar 2 08:04:50 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): If passing by invisible ref, not const. + + * sparc.c (SKIP_CALLERS_UNIMP_P): Make agree with test used in call. + + * expr.c (do_jump, case COMPOUND_EXPR): Call preserve_temp_slots. + + * fold-const.c (fold, case *_DIV_EXPR): Ignore SAVE_EXPR if has RTL. + +Fri Mar 1 17:59:17 1996 Jeffrey A. Law + + * optabs.c (emit_cmp_insn): Immediately copy the return + value from the library call into a pseudo register. + (emit_float_lib_cmp): Likewise. + +Fri Mar 1 14:37:40 1996 Michael Meissner + + * rs6000/sysv4.h (BSS_SECTION_ASM_OP): Define. + (*_SECTION_ASM_OP): Change tab after .section into a space. + (ASM_OUTPUT_INT): Ditto. + (ASM_OUTPUT_ALIGNED_LOCAL): Rewrite to use bss_section. + (ASM_OUTPUT_ALIGNED_BSS): Define to use ASM_GLOBALIZE_LABEL and + ASM_OUTPUT_ALIGNED_LOCAL. + + * rs6000/win-nt.h (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_ALIGNED_LOCAL): Define. + (ASM_OUTPUT_LOCAL): Don't define any more. + (ASM_OUTPUT_ALIGNED_BSS): Define to use ASM_GLOBALIZE_LABEL and + ASM_OUTPUT_ALIGNED_LOCAL. + +Thu Feb 29 17:33:12 1996 Jim Wilson + + * c-typeck.c (push_init_level): When output padding to align structure + field, set constructor_unfilled_fields. + + * dbxout.c (dbxout_type, case METHOD_TYPE): Add CHARS (1) call + after emitting second '#' character. + +Thu Feb 29 13:59:27 1996 Doug Evans + + * h8300.h (ASM_OUTPUT_BSS): Define. + * m68k/coff.h (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_ALIGNED_BSS): Define. + * m68k/m68k-aout.h (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_BSS): Define. + +Thu Feb 29 13:39:39 1996 Per Bothner + + * varasm.c (compare_constant_1): For a SET_TYPE CONSTRUCTOR, + first extract and compare the set length. + + * varasm.c (record_constant_1): For SET_TYPE CONSTRUCTOR, + permanent_obstack.next_free is *end* of available space. + +Thu Feb 29 13:14:14 1996 Jeffrey A. Law + + * pa.h (TARGET_SWITCHES): Add new flags "-mlong-load-store" and + "-mno-long-load-store". + (TARGET_LONG_LOAD_STORE): Define. + * pa.md (symbolic high part): Handle TARGET_LONG_LOAD_STORE. + +Thu Feb 29 11:39:30 1996 Stan Cox + + * i386.md (cmpxf*): XF compare cannot have mem operands. + (casesi expand): Put (minus:SI..) into subsi3 format. + * i386.c (i386_return_pops_args): Cleanup extra argument + used as address of a returned structure. + +Wed Feb 28 22:24:28 1996 Doug Evans + + * varasm.c (enum in_section): Define in_bss if BSS_SECTION_ASM_OP + is defined. + (bss_section,asm_output_bss,asm_output_aligned_bss): New functions. + (assemble_variable): Delete redundant test for too large an object. + Rewrite test for uninitialized variables. Use new macros + ASM_OUTPUT{,_ALIGNED}_BSS if defined to output global uninitialized + but not common variables. + * bytecode.h (BC_OUTPUT_BSS): Define. + * lynx.h (EXTRA_SECTIONS): Delete in_bss. + (EXTRA_SECTION_FUNCTIONS): Delete BSS_SECTION_FUNCTION. + * svr3.h (EXTRA_SECTIONS): Likewise. + (BSS_SECTION_FUNCTION): Delete. + * convex.h (EXTRA_SECTIONS,EXTRA_SECTIONS_FUNCTIONS): Delete. + * dsp16xx.h (EXTRA_SECTIONS): Delete in_bss. + (EXTRA_SECTION_FUNCTIONS): Delete bss_section. + * gmicro.h (EXTRA_SECTIONS,EXTRA_SECTIONS_FUNCTIONS): Delete. + * i386/aix386ng.h (EXTRA_SECTION_FUNCTIONS): Delete + BSS_SECTION_FUNCTION. + * i386/att.h (BSS_SECTION_FUNCTION): Delete. + * i386/sco5.h (EXTRA_SECTIONS): Delete in_bss. + (EXTRA_SECTION_FUNCTIONS): Delete BSS_SECTION_FUNCTION. + (BSS_SECTION_FUNCTION): Delete. + * i386/seq-sysv3.h (BSS_SECTION_FUNCTION): Delete. + * i386/svr3gas.h (EXTRA_SECTIONS): Delete in_bss. + (EXTRA_SECTION_FUNCTIONS): Delete BSS_SECTION_FUNCTION. + (BSS_SECTION_FUNCTION): Delete. + * i860/paragon.h (EXTRA_SECTIONS,EXTRA_SECTIONS_FUNCTIONS): Undef. + * m68k/crds.h (EXTRA_SECTIONS,EXTRA_SECTIONS_FUNCTIONS): Delete. + (BSS_SECTION_ASM_OP): Define. + * m68k/m68k.h (BC_OUTPUT_BSS): Define. + * mips/iris6.h (EXTRA_SECTIONS): Delete in_bss. + * pa.h (EXTRA_SECTIONS): Delete in_bss. + (EXTRA_SECTION_FUNCTIONS): Delete bss_section. + * sparc/litecoff.h (EXTRA_SECTIONS): Delete in_bss. + +Wed Feb 28 14:12:25 1996 Jim Wilson + + * sh.h (FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P): Include FP + registers only when TARGET_SH3E. + (PASS_IN_REG_P): Exclude BLKmode only when ! TARGET_SH3E. + +Wed Feb 28 12:03:26 1996 Michael Meissner + + * rs6000.c (rs6000_trampoline_{template,size}): Change Windows NT + trampoline template so it doesn't require making stack executable. + Add support for 64 bit systems. + (rs6000_initialize_trampoline): Ditto. + +Tue Feb 27 16:42:00 1996 David Edelsohn + + * rs6000.c (print_operand): New code 'H'. + * rs6000.md (insv, extzv): Add DImode patterns. Use 'h' + consistently for masking SImode shifts. + (rotldi3, ashldi3, lshrdi3, ashrdi3): Use 'H'. + (movsf split): Generate CONST_INT instead of SUBREG. + +Tue Feb 27 15:02:17 1996 Doug Evans + + * sh.h (HANDLE_PRAGMA): Delete `return'. + +Tue Feb 27 08:18:12 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (aof_text_section): Remove pseudo read-only hack. Doesn't + take a parameter any more. + * arm/aof.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Remove + readonly data sections. + (READONLYDATA_SECTION, READONLY_DATA_SECTION): Delete. + + * arm.h (enum arm_cond_code): New enum. + (ARM_INVERSE_CONDITION_CODE): Moved here from arm.c. + (SELECT_CC_MODE): Call arm_select_cc_mode to do the work. + (PREDICATE_CODES): Add dominant_cc_register; delete + reversible_cc_register. + * arm.c (arm_current_cc): Now an enum. + (ARM_INVERSE_CONDITION_CODE): Moved to arm.h + (revsersible_cc_register): Delete. + (dominant_cc_register): New function. + (select_dominance_cc_mode): New function. + (arm_select_cc_mode): New function. + (output_return_instruction): New parameter REVERSE, used to + reverse the condition of a conditional return. All callers + changed. + (arm_print_operand case 'D'): Only suppress condition printing + if the operand is a NULL pointer. + (get_arm_condition_code): Now a static function returning + enum arm_cond_code. Handle dominance expressions. Return enum + values rather than integers. + * arm.md (*addsi3_compare0_scratch): New insn. + (*movsi_compare0, *cmpsi_insn, *cmpsi_shiftsi): Make sure the + compare has mode CC. + (cmp{si,sf,df,xf} expands): Just provide sufficient information + to allow the parameters to be matched properly. + (*cmpsi_negsi): Delete (of dubious validity). + (*cmpsi_shiftsi_swp): New pattern. + (*condbranch_reversed): No longer needs to check REVERSIBLE_CC_MODE. + (mov{si,sf,df}cc, *mov{si,sf,df}{,_hard,_soft}_insn): The mode of the + IF_THEN_ELSE must be appropriate to the target (not void). + (*and_scc): Match cc_register, not reversible_cc_register. + (*ior_compare_compare): Delete. + (split for ior_compare_compare + condjump): Delete. + (*impossible_cond_compare): Delete. + (*condition_compare_ior): Delete. + (*cond_move): Mode for the IF_THEN_ELSE must be SImode. + (*and_scc_scc): Delete. + (split for and_scc_scc + condjump): Delete. + (*impossible_cond_branch_and): Delete. + (*cmp_ite0, *cmp_ite1): New patterns. + (if_compare_not): Should be an anonymous pattern. + (Peephole for move and compare): Compare mode must be mode CCmode. + (Split pattern for comparing shifted reg then branch): Delete. + (*loadqi_compare): Delete, replaced with a split pattern to do + the same thing. + (*cond_move_not): Match cc_register, not reversible_cc_register. + + * arm.c ({load,store}_multiple_sequence): New functions. + (emit_{ldm,stm}_seq): New functions. + * arm.md (load/store multiple peepholes): Rewrite using the above + functions. + (all patterns taking immediate_operand): If the code later assumes + this is a CONST_INT, then match const_int_operand instead. + +Mon Feb 26 17:26:13 1996 Doug Evans + + * sparc.md: Add sparclet scheduling parameters. + (compare define_insn's): Move closer to compare define_expand's. + (32 bit multiply patterns): Use for TARGET_SPARCLET. + (*smacsi,*smacdi,*umacdi): Multiply/accumulate patterns for the + sparclet. + +Sat Feb 24 19:13:29 1996 David Edelsohn + + * rs6000.md (movsf split): Fix typo in last patch. + +Sat Feb 24 10:02:55 1996 Michael Meissner + + * toplev.c (fatal_insn): Flush stdout/stderr. + +Sat Feb 24 02:03:28 1996 Jeffrey A. Law + + * pa.md (abssi2): Rework to avoid matching constraints. + +Fri Feb 23 11:21:43 1996 Jeffrey A. Law + + * pa.c (override_options): Warn if both PIC code generation and + profiling are requested. + +Fri Feb 23 08:47:38 1996 Richard Kenner (kenner at vlsi1) + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Set CONST_CALL_P + on NOTE_INSN_SETJMP instead of emitting USE insns for call-saved regs. + * reload1.c (reload): For special CONST_CALL_P NOTE_INSN_SETJMP, + mark all call-saved regs as used. + * sched.c (sched_analyze): Record NOTE_INSN_SETJMP if no + CALL_INSN as prev; preserve CONST_CALL_P bit. + (reemit_notes): Restore CONST_CALL_P. + +Thu Feb 22 17:45:12 1996 Doug Evans + + * configure (sparclet-*-aout*): Set extra_headers. + * ginclude/inl-sparc.h: New file. + +Wed Feb 21 20:39:53 1996 Doug Evans + + * configure (sparc64-*-solaris2*): Merge with sparc-*-solaris2*. + * sparc.h (enum processor_type): Declare. + (sparc_cpu_attr): Define. + (TARGET_OPTIONS): Add -mtune=. + (sparc_select): Declare. + (sparc_cpu_string): Delete. + (FIRST_PSEUDO_REGISTER): Set to 100. + ({FIXED,CALL_USED}_REGISTERS): Merge !v9/v9 cases. + (CONDITIONAL_REGISTER_USAGE): Mark %g5 as fixed if !v9. + Mark %g1 as fixed if v9. Fix v9-only regs if !v9. + Mark fp{16..47} as call-saved if v9. + (enum reg_class): Merge !v9/v9 cases. + (REG_CLASS_NAMES,REG_CLASS_CONTENTS,REGNO_REG_CLASS): Likewise. + (REG_ALLOC_ORDER,REG_LEAF_ALLOC_ORDER,LEAF_REGISTERS): Likewise. + (FP_REG_CLASS_P,SPARC_REGISTER_NAMES): Likewise. + (REG_CLASS_FROM_LETTER): Test TARGET_V9 at runtime. + * sparc.c (sparc_cpu_string): Delete. + (sparc_select): New global. + (sparc_override_options): Handle -mtune=xxx. + * sparc.md (cpu attr): Add sparc{lite,let} implementations. + * sparc/sp64-sol2.h: Deleted. + + * arm.md (consttable_end): Delete call to text_section. + (align_4): Delete call to readonly_data_section. + +Wed Feb 21 14:29:06 1996 Ian Lance Taylor + + * cplus-dem.c (demangle_template): Initialize is_bool. Correctly + handle 0 as a pointer value parameter. + +Wed Feb 21 14:13:29 1996 Jason Merrill + + * tree.c (decl_function_context): Do decl_function_context right for + function-local classes. + +Wed Feb 21 12:42:52 1996 Jeffrey A. Law + + * c-typeck.c (initializer_constant_valid_p): Don't dereference + a null pointer on partial structure initialization. + +Wed Feb 21 11:49:58 1996 David Edelsohn + + * rs6000.h (ASM_OUTPUT_EXTERNAL): Append section info + even when verbatim symbol prefix '*' present. + * rs6000/aix3newas.h (ASM_OUTPUT_EXTERNAL): Same. + * rs6000/aix41.h (ASM_OUTPUT_EXTERNAL): Same. + * rs6000/powerpc.h (ASM_OUTPUT_EXTERNAL): Same. + * rs6000/win-nt.h (ASM_OUTPUT_EXTERNAL): Same. + +Wed Feb 21 03:55:32 1996 Paul Eggert + + * cccp.c (validate_else): Don't loop given `#endif /'. + Handle multiple adjacent backslash-newlines correctly. + Accept a new parameter LIMIT to specify end of input; + this prevents confusion when the input contains '\0' characters. + (collect_expansion): Fix off-by-1 error when searching for `*/' + at end of a comment used for traditional token concatenation. + (macarg1): Fix off-by-1 error when skipping past `*/' + at end of comment. + +Tue Feb 20 16:12:31 1996 Doug Evans + + * hard-reg-set.h (twice unrolled GO_IF_HARD_REG_EQUAL): Add missing \. + +Tue Feb 20 14:21:16 1996 Jeffrey A. Law + + * pa.h (DBX_CONTIN_LENGTH): Define to 4000 characters. + + * pa.c (hppa_expand_epilogue): Always emit a blockage insn + before cutting back the stack. + +Mon Feb 19 19:42:15 1996 Brendan Kehoe + + * sparc.h (TARGET_SWITCHES): Add -m{,no-}impure-text. + (MASK_IMPURE_TEXT, TARGET_IMPURE_TEXT): Define. + (LINK_SPEC): Only add `-assert pure-text' if -mimpure-text wasn't used. + +Mon Feb 19 19:20:15 1996 Doug Evans + + * configure (sparc-aout): sparc-aout.h renamed to aout.h. + (sparclet-aout): Likewise. + (sparclite-*-aout*): Renamed from sparclite-*-*. + Don't set use_collect2. + (target_cpu_default): Set to TARGET_CPU_ for sparc. + + * sparc.h (TARGET_CPU_sparc{,let,lite,64}): Define. + ({CPP,ASM}_DEFAULT_SPEC): Set from TARGET_CPU_foo. + (SPARC_ARCH64 CPP_PREDEFINES): Define __arch64__. + (CPP_SPEC): Add %(cpp_cpu). + (CPP_CPU_SPEC): Define. + (CC1_SPEC): Convert -m to -mcpu=. + (ASM_SPEC): Add %(asm_cpu). + (ASM_CPU_SPEC): Define. + (EXTRA_SPECS,SUBTARGET_EXTRA_SPECS): Define. + (OVERRIDE_OPTIONS): Call SUBTARGET_OVERRIDE_OPTIONS after + sparc_override_options. + ({MASK,TARGET}_SUPERSPARC): Delete. + ({MASK,TARGET}_SPARCLET): Define. + (MASK_ISA): Renamed from MASK_CPUS. + (TARGET_SWITCHES): Delete no-{v8,sparclite}. + (sparc_cpu,sparc_cpu_string): Declare. + ({SUB,}TARGET_OPTIONS): Define. + (FIXED_REGISTERS): Add definitions for sparc64 in 32 bit mode. + (CONDITIONAL_REGISTER_USAGE): Don't set fixed_regs[234] if sparc64. + Don't set call_used_regs[48..80] for sparc64 in 32 bit mode. + Don't clobber fixed_regs[234] if -ffixed- was passed. + (ADJUST_COST): Change test for supersparc. + * sparc.c (sparc_cpu_string,sparc_cpu): New globals. + (sparc_override_options): Set ISA and CPU from sparc_cpu_string. + Delete tests for v9 only switches if not v9. + Error if -mcpu=v9 and v9 support not compiled in. + * sparc/sol2.h (CPP_SPEC): Use %(cpp_cpu). + (ASM_SPEC): Likewise. + (ASM_{DEFAULT,CPU}_SPEC): Use Solaris syntax for sparc64. + * sparc/sysv4.h (ASM_SPEC): Add %(asm_cpu). + * sparc/t-sparcbare (MULTILIB_*): -mv8 renamed to -mcpu=v8. + * sparc/t-sparclite (MULTILIB_*): Delete msoft-float and mno-flat, + they're the defaults. Add -mcpu=f934 as synonym for -mfpu. + * va-sparc.h (__arch64__): Renamed from __sparc_v9__. + + * sparc/lite.h: #include aoutos.h. + (TARGET_DEFAULT): Use MASK_FOO values. + * sparc/sp64-aout.h: #include aoutos.h. + (TARGET_DEFAULT): Add MASK_APP_REGS. + (JUMP_TABLES_IN_TEXT_SECTION,READONLY_DATA_SECTION): Delete. + * sparc/sp64-elf.h (TARGET_DEFAULT): Add MASK_APP_REGS. + (CPP_PREDEFINES): Define __arch64__. + * sparc/sp64-sol2.h (TARGET_DEFAULT, SUBTARGET_SWITCHES): Delete. + (ASM_SPEC): Delete. + + * sparc.h ({MASK,TARGET}_FRW): Delete. + (FRAME_POINTER_REQUIRED,INITIAL_FRAME_POINTER_OFFSET, + BASE_{INCOMING_ARG,OUTGOING_VALUE}_REG,INCOMING_REGNO,OUTGOING_REGNO, + FUNCTION_{PROLOGUE,EPILOGUE},DELAY_SLOTS_FOR_EPILOGUE): TARGET_FRW + renamed to TARGET_FLAT. + + * sparc.md (cpu attr): Add all cpu variants. + (negtf2,negdf2,abstf2,absdf2): Use isa attr, not arch attr, in + determining insn lengths. + + * sparc/aout.h: Renamed from sparc-aout.h. + (CPP_PREDEFINES): Delete __GCC_NEW_VARARGS__. + Add -Acpu(sparc) -Amachine(sparc). + +Mon Feb 19 17:49:08 1996 David Edelsohn + + * rs6000.md (movsf split): Use SUBREG, not operand_subword. + (movdf split): operand_subword TARGET_32BIT and new split using + SUBREG for TARGET_64BIT. + * rs6000.c (easy_fp_constant): Rewrite to not use operand_subword. + (input_operand): Remove final add_operand test made irrelevant by + Dec. 8 change. + (output_toc): Handle DImode values. + +Mon Feb 19 13:38:00 1996 Lee Iverson + + * i386/sol2.h (SWITCH_TAKES_ARG): Restore -R. + * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise. + +Mon Feb 19 08:19:00 1996 Michael Meissner + + * hard-reg-set.h (HARD_REG macros): If more than + HOST_BITS_PER_WIDE_INT hard registers and less than or equal to + 4*HOST_BITS_PER_WIDE_INT hard registers, unroll loops by hand. + +Mon Feb 19 07:35:07 1996 Torbjorn Granlund + + * rs6000.md (not:SI with assign and compare): Fix typo. + (not:DI with assign and compare): Likewise. + +Mon Feb 19 07:17:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sparc.md (nonlocal_goto): No longer need USE of %o0. + (goto_handler_and_restore): Show uses %o0. + + * combine.c (force_to_mode, case IOR): Fix typo in commuting + IOR and LSHIFTRT. + + * alpha.c (call_operand): If in REG, only reg 27 valid. + +Mon Feb 19 06:57:34 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * emit-rtl.c (operand_subword): For 32-bit targets, return + the appropriate subword of extended precision CONST_DOUBLEs. + + * arm.c (offsettable_memory_operand): New function. + (alignable_memory_operand): New function. + (gen_rotated_half_load): New function. + (get_arm_condition_code): Extract the mode of the comparison and + use it to generate the correct return value. + * arm.h (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Zmode. + (SELECT_CC_MODE): return CC_Zmode if the operand is QImode. Allow LT + and GE comparisons in CC_NOOVmode. + (PREDICATE_CODES): add offsettable_memory_operand and + alignable_memory_operand. + * arm.md (*zeroextract[qs]i_compare0_scratch): Use const_int_operand + for operands 1 and 2. + (split patterns for aligned memory half-word operations): New patterns. + (movhi): Handle memory accesses where the alignment is known in a more + efficient manner. + (*compareqi_eq0): Use CC_Zmode. + +Mon Feb 19 05:34:08 1996 Jason Merrill + + * toplev.c (lang_options): Add -W{no-,}sign-compare. + + * c-tree.h: Declare warn_sign_compare. + + * c-typeck.c (build_binary_op): Check warn_sign_compare rather + than extra_warnings to decide whether to warn about comparison of + signed and unsigned. + + * c-decl.c (c_decode_option): Handle warn_sign_compare. -Wall + implies -Wsign-compare. + +Sun Feb 18 21:13:44 1996 Pat Rankin (rankin@eql.caltech.edu) + + * c-lex.c (yylex, case '0'..'9','.'): For cases '0' and '1', + check for single digit constant before resorting to general + number processing. + +Sun Feb 18 19:29:44 1996 J.T. Conklin + + * m68k.h (TARGET_68060): New macro. + (TARGET_SWITCHES): Add -m68060. + * m68k.md (const_umulsi3_highpart): Disable for TARGET_M68060. + (ftruncdf2, ftruncsf2, muldf3, mulsidi3): Likewise. + (smulsi3_highpart, umulsi3_highpart, umulsidi3): Likewise. + + * {m68k,ns32k,sparc}/netbsd.h (DBX_NO_XREFS): Removed. + +Sun Feb 18 13:29:56 1996 Charles M. Hannum (mycroft@netbsd.org) + + * c-common.c (check_format_info): Warn about `L' if -pedantic. + +Fri Feb 16 20:13:23 1996 Paul Eggert + + * c-typeck.c (convert_for_assignment): + Bring back conversion to union without a cast, + undoing the Jan 16 change, but with the following differences: + - The union must have the transparent_union attribute. + - The conversion must be for a function argument. + - Warn consistently about such conversions if pedantic. + - Do not warn about an assignment incompatibility for one union member + if another union member is compatible with no warning. + +Fri Feb 16 12:06:21 1996 Stan Cox + + * i386.c (ix86_*_binary_operator*): Allow CONST_INT as operand1 + of MINUS. + * i386/dgux.h (OPTIMIZATION_OPTIONS): Call optimization_options. + +Fri Feb 16 08:39:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Change stdout report when have multiple files in + tm_file, host_xm_file, or build_xm_file. + (a29k-*-bsd): Use both a29k.h and unix.h. + (a29k-*-udi): Rename a29k-udi.h to udi.h; + use a29k.h, dbxcoff.h, and it. + (a29k-*-vxworks): Use a29k.h, dbxcoff.h, a29k/udi.h, and a29k/vx29k.h. + (alpha-dec-osf[23456789]*): Use alpha.h, not osf2.h. + (alpha-dec-osf1.2): Use alpha.h and alpha/osf12.h. + (alpha-*-osf*): Add explicit assignment of tm_file. + * a29k/udi.h: Renamed from a29k-udi.h. + Don't include a29k.h or dbxcoff.h. + * a29k/unix.h: Don't include a29k.h. + * a29k/vx29k.h: Don't include a29k-udi.h. + * alpha.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int. + * alpha/osf2.h: Deleted. + * alpha/osf12.h: Don't include alpha.h. + (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use short unsigned int. + * alpha/win-nt.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use short unsigned int. + +Thu Feb 15 18:26:04 1996 Michael Meissner + + * rs6000/ntstack.asm (__allocate_stack): Round up length to 16 + byte boundary. + + * rs6000.md (allocate_stack): On Windows NT, call set_sp to + indicate to CSE stack pointer changes with call to __allocate_stack. + (set_sp): New pattern. + +Thu Feb 15 16:49:15 1996 Jim Wilson + + * integrate.c (save_for_inline_copying): Allocate reg_map with size + based on regno_pointer_flag_length instead of max_reg+1. + +Thu Feb 15 07:48:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fixincludes (rpc/types.h): Remove spurious "ls" command. + + * reload1.c (eliminate_regs, case USE): If using a register that + is source of elimination, show can't be eliminated. + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Shows clobbers FP + and all caller-save registers. + Set current_function_has_nonlocal_goto. + +Wed Feb 14 13:51:55 1996 David Edelsohn + + * rs6000.md (fix_truncdfsi2): Use SUBREG not operand_subword. + (movdi): Test HOST_BITS_PER_WIDE_INT at build time. + * collect2.c (scan_libraries): Append '/' to import path if missing. + +Wed Feb 14 09:01:55 1996 Michael Meissner + + * rs6000.md (movdi): Use HOST_WIDE_INT, not long long. + +Tue Feb 13 19:36:21 1996 Per Bothner + + * expr.c (store_constructor): Fix flow control thinko (merge error). + * expr.c (store_constructor): Pass correct value to recursive call. + +Wed Jan 31 11:34:45 1996 Mike Stump + + * expr.c (expand_expr, case TARGET_EXPR): We must always store + into the allocated slot for TAREGT_EXPRs. + +Tue Feb 13 18:27:05 1996 Philippe De Muyter + + * configure (powerpc-ibm-aix3): Look for 3.2.x, not 3.2x. + + * fixincludes (memory.h): Fix it also on sysV68. + +Tue Feb 13 17:59:03 1996 Lee Iverson + + * gcc.c (DEFAULT_SWITCH_TAKES_ARG): New macro, from SWITCH_TAKES_ARG. + (SWITCH_TAKES_ARG): Use it. + * i386/{osfrose,sol2}.h (SWITCH_TAKES_ARG): Likewise. + * mips/{gnu,mips}.h (SWITCH_TAKES_ARG): Likewise. + * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise. + * config/svr4.h (SWITCH_TAKES_ARG): Likewise. + +Tue Feb 13 17:43:46 1996 Jim Wilson + + * integrate.c (save_constants_in_decl_trees): New function. + (save_for_inline_copying, save_for_inline_nocopy): Call it. + +Tue Feb 13 17:40:27 1996 Richard Kenner + + * expr.c (convert_move): Fix typo in extendqfh2 case. + + * reload1.c (reload): Make some non-group code no longer + conditional on SMALL_REGISTER_CLASSES. + +Tue Feb 13 17:30:45 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * pdp11.c: #include flags.h + (output_function_prologue, function_epilogue): Remove declarations + of call_used_regs and frame_pointer_needed. + + * c-common.c (overflow_warning): Fix typo in warning message. + + * c-decl.c (finish_decl): TREE_ASM_WRITTEN says if duplicate_decls + modified declaration to match an outside file scope declaration. + + * stmt.c (expand_end_case): Don't use ADDR_DIFF_VEC for PIC if + ASM_OUTPUT_ADDR_DIFF_ELT is not defined. + * a29k.h, romp.h (ASM_OUTPUT_ADDR_DIFF_ELT): Remove. + +Tue Feb 13 13:36:36 1996 Michael Meissner + + * rs6000/cygwin32.h (CPP_PREDEFINES): Do not define PPC, just + define __PPC__. Also define _ARCH_PPC to be compatible with the + other rs6000/powerpc ports. + * rs6000/win-nt.h (CPP_PREDEFINES): Ditto. + + * rs6000/cygwin32.h (LIBGCC_SPEC): Don't define, always link in. + (SDB_DEBUGGING_INFO): Undef. + (DBX_DEBUGGING_INFO): Define. + (PREFERRED_DEBUGGING_TYPE): Define as DBX_DEBUG. + + * rs6000/t-{cygwin32,winnt} (MULTILIB*): Remove multilib support. + + * rs6000/x-cygwin32 (LANGUAGES): Delete, don't override. + + * rs6000/ntstack.asm: New file to provide __allocate_stack, which + guarantees all pages in a dynamically allocated stack frame are + touched in order, so that the stack is properly grown. + + * rs6000/cgywin32.asm: Delete unused file. + + * rs6000/t-{cygwin32,winnt} (LIB2FUNCS_EXTRA): Add ntstack.S + to libgcc2 build. + + * rs6000.md (allocate_stack): For NT, call __allocate_stack to + bump the stack if the size is large or variable. + + * libgcc1-test.c (mainCRTStartup,__start): New startup functions + to silence more linkers. + +Tue Feb 13 13:30:53 1996 Jim Wilson + + * expr.c (store_constructor_field): Only call change_address if + bitpos is nonzero. + +Tue Feb 13 08:21:01 1996 Fila Kolodny + + * i370/mvs.h (CPP_SPEC): Add '-trigraphs' because IBM's h files + contain them. + +Tue Feb 13 08:17:52 1996 Bernd Schmidt + + * c-typeck.c (quality_type prototype): Typo, rename as + qualify_type. + (build_binary_op): Fix precedence errors. + * combine.c (force_to_mode, num_sign_bit_copies, simplify_comparison): + Fix precedence errors. + * emit-rtl.c (gen_lowpart): Could return without a value. + * jump.c (jump_optimize): Fix potential infinite loop. + * reg-stack.c (record_reg_life_pat): Fix precedence error. + * reload1.c (emit_reload_insns): Fix precedence errors. + * stmt.c (bc_pushcase): Fix precedence error. + +Mon Feb 12 23:14:02 1996 Jason Merrill + + * toplev.c (rest_of_compilation): Also set RTX_INTEGRATED_P when + we aren't going to emit the inline just yet. + +Mon Feb 12 21:31:02 1996 Jim Wilson + + * rtl.h (INLINE_REGNO_POINTER_FLAG, INLINE_REGNO_POINTER_ALIGN): + Add one to array index. + +Mon Feb 12 20:55:39 1996 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure (i[345]86-*-linux*): Set tmake_file t-linux. + Add crtbeginS.o and crtendS.o to extra_parts. + * i386/linux.h (CC1, LIB_SPEC): Deleted. + * config/linux.h (STARTFILE_SPEC): Add crtbeginS.o if -shared. + (CC1_SPEC): New. + (LIB_SPEC): Remove %{mieee-fp:-lieee}; use -lc_p for -profile. + * config/t-linux: New file. + +Mon Feb 12 20:42:11 1996 Randy Smith + + * i386/x-osfrose (XCFLAGS{,_NODEBUG}): Remove $(SHLIB). + (XCFLAGS): New variable. + (libdir, mandir, bindir): Delete. + * i386/t-osf: New file. + * i860/paragon.h (STARTFILE_SPEC): Make gcc find crt0.o, not loader. + (LIB_SPEC): Remove /usr/lib. + * Makefile.in (TCFLAGS): New variable. + (GCC_CFLAGS): Add $(TCFLAGS). + (LIBGCC2_CFLAGS): Add -D for __GCC_FLOAT_NOT_NEEDED. + (libgcc1-test): Remove -nostdlib. + (float.h-cross): Don't give error #ifdef __GCC_FLOAT_NOT_NEEDED. + * enquire.c: Define __GCC_FLOAT_NOT_NEEEDED. + * configure (i[3456]86-*-osfrose): Add t-osf as tmake_file. + +Mon Feb 12 18:43:54 1996 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.c (add_1_to_mem): Corrected. + +Mon Feb 12 18:23:35 1996 Doug Evans + + * configure (sparclet-*-aout*): New configuration. + +Mon Feb 12 14:43:50 1996 Per Bothner + + Changes to distinguish typedef from original type in debug output. + * tree.h (DECL_ORIGINAL_TYPE): New macro. + * tree.c (copy_node): Zero out type.symtab union. + * c-decl.c (pushdecl): Set DECL_ORIGINAL_TYPE for typedef origin. + * dbxout,c (dbxout_type): Don't canonicalize typedef type to base. + +Mon Feb 12 12:01:16 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.h: (CPP_SPEC): Define __ARMEB__, __ARMEL__, and + __ARMWEL__ depending on the endian flags passed to the compiler. + (ARM_FLAG_LITTLE_WORDS): Define. + (TARGET_SWITCHES): Add option -mwords-little-endian. + (TARGET_LITTLE_WORDS): Define. + (WORDS_BIG_ENDIAN): Select based on the endian switches. + (LIBGCC2_WORDS_BIG_ENDIAN): Define based on run-time endian + defines. + * arm.c (output_move_double): Cope with both word-endian + alternatives. Remove extraneous parameters from calls to + output_mov_immediate. + (arm_print_operand): New print code 'Q' for the least significant + register of a DImode operand. Make code 'R' always print the + most significant register, rather than the highest numbered. + * arm.md (all DImode output patterns): Use print code + 'Q' to access the least significant word. Make sure the + patterns are fully aware of the word endianness. + + * arm/semi.h (CPP_SPEC): Define __ARMEB__, __ARMEL__, and + __ARMWEL__ depending on the endian flags passed to the compiler. + (LINK_SPEC): Pass -EB to the linker if compiling for big-endian + mode. + (ASM_SPEC): Likewise for the assembler. + * arm/semiaof.h (CPP_SPEC): Define __ARMEB__, __ARMEL__, and + __ARMWEL__ depending on the endian flags passed to the compiler. + +Mon Feb 12 10:15:29 1996 Ian Lance Taylor + + * configure: Permit tm_file and xm_file to be a list of header + file names, rather than just a single file. For many targets, + handle --with-stabs by adding dbx.h to tm_file, rather than using + a different tm_file. + * dbx.h: New file. + * alpha/gdb-osf2.h, alpha/gdb-osf12.h, alpha/gdb.h: Deleted. + * i386/sysv4gdb.h, mips/iris{5gdb,4gl,4gdb,3gdb}.h: Likewise. + * mips/dec-gosf1.h, mips/news{4,5}-gdb.h, mips/svr4-t-gdb.h: Likewise. + * mips/ultrix-gdb.h, mips/bsd-{4,5}-gdb.h: Likewise. + * mips/svr{4-5,4-4,3-5,3-4}-gdb.h, mips/mips-5-gdb.h: Likewise. + * mips/ecoff{,l}-gdb.h, mips/mips-4-gdb.h: Likewise. + +Mon Feb 12 07:22:20 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (save_for_inline_copying): Put virtual regs into + new regno_reg_rtx copy. + +Sun Feb 11 18:53:12 1996 Torbjorn Granlund + + * i386.md: Delete spurious integer subtract patterns. + Delete % from subtract operand constraints. + +Sun Feb 11 19:17:24 1996 Jeffrey A. Law + + * m68k.md (movqi): Call CC_STATUS_INIT when loading to/from + an address register via a data register. + +Sun Feb 11 08:44:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (check_format_info): Handle missing type in format + when terminated by a new `%'. + +Sat Feb 10 15:14:22 1996 J.T. Conklin + + * cross-make (STMP_FIXPROTO): Moved from here to build-make. + * build-make (STMP_FIXPROTO): Moved here from cross-make. + +Sat Feb 10 08:39:05 1996 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (movstrqi): Corrected. + (zero_extendqihi2): Taken out, let GCC synthesize. + (movhi-1): Added insn to move HImode small constant to memory. + (movhf-1): Added insn to move HFmode zero to memory. + (movtqf-1): Added insn to move TQFmode zero to memory. + (numerous insns): Taken out B (Base Reg with Index) mode. + + * 1750a.c (movcnt_regno_adjust): Corrected. + (mov_memory_operand, zero_operand): Added. + (b_mode_operand): Corrected. + (simple_memory_operand, add_1_to_mem): Added. + (print_operand_address): Corrected case of 'Q' output modifier. + + * 1750a.h (REG_ALLOC_ORDER): Changed back to natural order. + (CONST_DOUBLE_OK_FOR_LETTER_P): Added letter 'G'. + (EXIT_IGNORE_STACK): Set to 0. + (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Use corresponding REGNO_OK. + (MOVE_MAX, MOVE_RATIO): Defined. + +Sat Feb 10 08:28:12 1996 Martin Anantharaman + + * configure (m68k-*-psos*): New configuration. + * psos.h: New file. + * m68k/m68k-psos.h: New file. + +Sat Feb 10 08:07:52 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sched.c (flush_pending_lists): Add new arg, ONLY_WRITE. + (sched_analyze_{1,2,insn}): Add new arg to flush_pending_lists. + (sched_analyze): Always flush pending write list for call, even const. + + * integrate.c (save_for_inline_copying): Put reg_map in function's + maybepermanent obstack instead of using alloca; set regno_reg_rtx + to it; delete recently-added copying of this later. + +Sat Feb 10 00:49:58 1996 Doug Evans + + * sched.c (add_dependence): Add test for next != CODE_LABEL. + +Fri Feb 9 16:10:04 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * i386.md (fp, integer): Added function units for pentium. + (cmp*,mov*,add*,sub*,mul*,div*,extend*,trunc*,and*,ior*,xor*,neg*, + abs*,sqrt*,sin*,cos*,not*,ash*,lsh*,rot*,sub): Tightened constraints, + added attribute support, and made changes for new `binary' and + `unary' functions. + + * i386.c (processor_costs): New variable. + (optimization_options, ix86_expand_binary_operator, + ix86_binary_operator_ok, ix86_expand_unary_operator, + ix86_unary_operator_ok, is_mul, is_div, copy_all_rtx, rewrite_address, + last_to_set_cc, doesnt_st_condition_code, sets_condition_code, + str_immediate_operand, is_fp_insn, is_fp_dest, is_fp_store, + agi_dependent, reg_mentioned_in_mem): New functions. + + * i386.h (OPTIMIZATION_OPTIONS, ALIGN_DFmode, IS_STACK_MODE, + IX86_EXPAND_BINARY_OPERATOR): New macros. + (RTX_COSTS, REGISTER_MOVE_COST, ADJUST_BLOCKAGE) Changed for pentium. + +Fri Feb 9 14:47:27 1996 Doug Evans + + * sparc.c (sp64_medium_pic_operand): New function. + (move_pic_label): Delete. + (legitimize_pic_address): Simplify using some named patterns. + (finalize_pic): Add preliminary sparc64 support. + (emit_move_sequence): Reorganize. + * sparc.md (pic_lo_sum_si,pic_sethi_si,get_pc_sp32,get_pc_sp64, + move_pic_label_si,move_label_di,sethi_di_sp64): Make named patterns. + (sethi_di_sp64_const,sethi_di_medium_pic): New anonymous patterns. + (move_pic_label_si,move_label_di): Optimize for near labels. + (tablejump): Use for TARGET_MEDANY. + (casesi): Delete. + +Fri Feb 9 13:48:45 1996 Jim Wilson + + * mips.md (probe+2, probe+4): New conditional move patterns. + (movsicc): Don't truncate comparison if it is DImode. + + * sh.h (CPP_SPEC): Add defines for -m1, -m2, and -m3. + +Fri Feb 9 09:11:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (rest_of_compilation): Set RTX_INTEGRATED_P in + INLINE_HEADER iff function is inlineable. + * calls.c (expand_call): Test RTX_INTEGRATED_P in DECL_SAVED_INSNS. + +Thu Feb 8 01:11:15 1996 Jeffrey A. Law + + * pa.md (floatunssisf2 expander): Don't use "general_operand". + (floatunssidf2 expander): Likewise. + +Wed Feb 7 16:59:31 1996 Michael Meissner + + * rs6000/{sysv4,win-nt,netware,cygwin32}.h ({ASM,LINK}_SPEC): + Don't use %{V} for either linker or assembler. + +Tue Feb 6 17:22:29 1996 Per Bothner + + * dbxout.c (dbxout_range_type): Emit non-range INTEGER_TYPE + as a sub-range of itself (so gdb can tell the difference). + +Tue Feb 6 17:01:44 1996 David Edelsohn + + * rs6000.md (addsi3 and adddi3 split): Use cleaner computation + and portable HOST_WIDE_INT. + (iordi3 split): Use HOST_WIDE_INT. + (movdi): Add TARGET_64BIT support and generate 64 bit constants. + (movdi matcher, TARGET_POWERPC64): Add immediate constraint handled + by new define_split. + (allocate_stack): Use TARGET_32BIT. + (tablejump): Add TARGET_64BIT support using ... + (tablejumpsi): Rename original tablejump pattern. + (tablejumpdi): New pattern. + +Tue Feb 6 15:29:22 1996 Per Bothner + + * stor-layout.c (layout_type): Use same code to layout CHAR_TYPE + as for INTEGER_TYPE (instead of hard-wiring in QImode). + +Tue Feb 6 15:13:38 1996 Jeffrey A. Law + + * pa.md (various patterns): Avoid using "general operand" in + define_insn patterns. + +Sun Feb 4 21:37:05 1996 Michael Meissner + + * rs6000/eabi{,sim}.h (LINK_START_SPEC): Bump the default start address + for the simulator to 0x10000074 so that we don't waste a page in the + linked file. + +Fri Feb 2 19:44:10 1996 Michael Meissner + + * rs6000/eabi-c{i,n}.asm (.sdata2, .sbss2): Put these in the + read-only section, not read-write. + + * libgcc2.c (__unwind_function, rs6000/powerpc): Use _ARCH_PPC + being defined to indicate to use PowerPC mnemonics. + + * config/rs6000/t-cygwin32 (MULTILIB*): Add software floating + point support. + +Thu Feb 1 09:10:02 1996 Steve Chamberlain + + * {i386,rs6000}/cygwin32.{asm,h}: New templates. + * {i386,rs6000}/{t,x}-cygwin32: Ditto. + * {i386,rs6000}/xm-cygwin32.h: Ditto. + * configure (powerpcle-*-cygwin32, i[3456]86-*-cygwin32): New. + +Fri Feb 2 17:42:40 1996 Paul Eggert + + * c-decl.c (finish_struct): + Fix typo in transparent union warning that led to core dump. + + * c-parse.in (stmt): Warn about `goto *expr;' if pedantic. + (label): Warn about `case expr ... expr:' if pedantic. + +Fri Feb 2 11:05:27 1996 Doug Evans + + * h8300.h (TARGET_ALIGN_300): Renamed from TARGET_ALIGN_STRUCT_300. + (TARGET_SWITCHES): Rename -malign-struct-300 to -malign-300. + (BIGGEST_ALIGNMENT): Use TARGET_ALIGN_300. + +Fri Feb 2 08:25:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * flow.c (jmp_uses_reg_or_mem): Renamed from uses_reg_or_mem. + Don't look into condition of an IF_THEN_ELSE; also make faster. + (find_basic_blocks): Use new name. + +Fri Feb 2 06:49:56 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * reload.c (debug_reload): Fix typo for reload_noncombine. + +Thu Feb 1 21:49:02 1996 Jeffrey A. Law + + * pa-pro.h (TARGET_DEFAULT): Turn on TARGET_SOFT_FLOAT by + default for all pro targets. + * t-pro: Delete all multilib references. + +Thu Feb 1 17:50:02 1996 Doug Evans + + * c-lex.c (check_newline): Return result of HANDLE_PRAGMA. + * h8300.h (HANDLE_PRAGMA): Pass result back to caller. + * i960/i960.h (HANDLE_PRAGMA): Likewise. + * sh.h (HANDLE_PRAGMA): Likewise. + * nextstep.h (HANDLE_PRAGMA): Likewise. + +Wed Jan 31 19:26:03 1996 Doug Evans + + * m68k/m68k-none.h: Rewrite to use EXTRA_SPECS. + * m68k/vxm68k.h (CPP_SPEC): Delete. + (SUBTARGET_EXTRA_SPECS): Define. + +Wed Jan 31 15:10:59 1996 David Edelsohn + + * rs6000.c (output_epilog): Fix PPC64 typos and use TARGET_32BIT. + (output_prolog): Same. + (rs6000_trampoline_template, rs6000_trampoline_size): Use TARGET_32BIT. + * rs6000.md (movdf TARGET_POWERPC64 matcher): Fix std typo. + (movdi TARGET_POWERPC64 matcher): Same. + +Wed Jan 31 09:46:11 1996 Richard Earnshaw (rearnshaw@armltd.co.uk) + + * regs.h (regno_pointer_align, REGNO_POINTER_ALIGN): Delete from here. + * rtl.h (regno_pointer_align, REGNO_POINTER_ALIGN): Put them here. + +Wed Jan 31 08:26:12 1996 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) + + * m68k/linux.h (STRICT_ALIGNMENT): Define to zero. + (LEGITIMATE_PIC_OPERAND_P): Match definition from m68kv4.h. + + * m68k.h (TRAMPOLINE_{TEMPLATE,SIZE}): Avoid need for helper function. + (INITIALIZE_TRAMPOLINE): Likewise. + (TRAMPOLINE_ALIGNMENT): Renamed from TRAMPOLINE_ALIGN. + * m68k/next.h (INITIALIZE_TRAMPOLINE): Adjusted accordingly. + + * m68kv4.h (STATIC_CHAIN_REGNUM): Redefine to use register a1. + (TRAMPOLINE_TEMPLATE): Likewise. + + * m68k/linux.h, m68kv4.h (LIBCALL_VALUE): Return XFmode value in fp0. + * m68k.c (init_68881_table): Use SFmode for the first six + constants and DFmode for the seventh. + + * m68k.md (movqi): Use moveq if possible. + +Wed Jan 31 08:18:15 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_builtin, case BUILT_IN_NEXT_ARG): Strip off + INDIRECT_REF when checking second arg. + + * calls.c (struct arg_data, expand_call): Test STRICT_ALIGN with #if. + +Wed Jan 31 07:47:56 1996 Tim Wright (timw@sequent.com) + + * configure (i[345]-sequent-sysv*): Change to sysv3*; add i686. + (i[3456]86-sequent-ptx4*, i[3456]86-sequent-sysv4*): New cases. + * fixinc.ptx (sys/mc_param.h): Remove embedded asm. + * fixinc.svr4 (__STDC__): Add one more case. + * i386/ptx4-i.h, ptx4.h: New files. + +Wed Jan 31 07:15:23 1996 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.h (MACHINE_STATE_{SAVE,RESTORE}): Allow MOTOROLA syntax. + + * m68k.md ({adddi,subdi}_sexthishl32): 'a' and 'd' versions merged + and fixed; do not generate 'add/sub a,m'. + + * gcc.c (warn_std_ptr): Initialize with 0 instead of NULL_PTR. + +Tue Jan 30 13:29:05 1996 Ian Lance Taylor + + * dbxout.c: Don't include . + Don't compare strchr result to NULL. + + * config/svr4.h (ASM_FINAL_SPEC): Use %|, not ${pipe:-}. + +Tue Jan 30 06:48:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (nonzero_bits, case REG): Ignore REG_POINTER_ALIGNMENT. + Restore old code for SP, but use it for all pointers to + defined locations in the frame. + +Mon Jan 29 11:25:28 1996 Ian Lance Taylor + + * dbxout.c (dbxout_type_methods): Don't use #ifndef inside call to + strchr. + +Sun Jan 28 14:44:09 1996 Doug Evans + + * config/dbxcoff.h (*): #undef first. + +Sat Jan 27 21:46:16 1996 David Edelsohn + + * rs6000.c (rs6000_sync_trampoline): Add cmpdi to 64bit case. + (rs6000_initialize_trampoline): CSE of Pmode to pmode. + * rs6000.md (movdf): Handle move between FPR and 64 bit GPR. + (movdi matcher): Handle SPR move to itself and add "mr." combiner. + +Sat Jan 27 10:06:31 1996 Michael Meissner + + * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Redefine, put small + data items in .sbss if -msdata. + (SWITCH_TAKES_ARG): Add 'B', 'b', and 'V'. + +Sat Jan 27 07:59:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (enum built_in_function): Add BUILT_IN_{SET,LONG}JMP. + * expr.c: Include hard-reg-set.h. + (arg_pointer_save_area): New declaration. + (expand_builtin, case BUILT_IN_{SET,LONG}JMP): New cases. + * Makefile.in (expr.o): Includes hard-reg-set.h. + * c-decl.c (init_decl_processing): Add definitions for + __builtin_setjmp and __builtin_longjmp. + * cccp.c (initialize_builtins): Add def of __HAVE_BUILTIN_SETJMP__. + + * expr.c (expand_expr, case COMPONENT_REF): Pass EXPAND_INITIALIZER + to recursive call. + +Fri Jan 26 17:24:07 1996 Doug Evans + + * sparc.h (sparc_arch_type): Delete. + ({,TARGET_}MASK_DEPRECATED_V8_INSNS): Define. + (ARCH64_SWITCHES): Renamed from V9_SWITCHES. + * sparc.c (sparc_arch_type): Delete. + (sparc_init_modes): Likewise. + (output_move_quad): Don't use ldq/stq unless TARGET_HARD_QUAD. + * sparc/sp64-sol2.h (TARGET_DEFAULT): Add MASK_DEPRECATED_V8_INSNS. + (SUBTARGET_SWITCHES): Add -m{no-,}deprecated-v8-insns. + * sparc.md (arch attribute): Rewrite. + (isa): New attribute. + (32 bit multiply/divide patterns): Use if TARGET_DEPRECATED_V8_INSNS. + (32 bit divide patterns): V9 doesn't require delay after y reg write. + +Fri Jan 26 12:08:43 1996 David Edelsohn + + * rs6000.h (TARGET_32BIT): Define. + (BITS_PER_WORD, UNITS_PER_WORD): Invert so 32bit expected case. + (LONG_TYPE_SIZE, POINTER_BOUNDARY, PARM_BOUNDARY): Likewise. + (RS6000_REG_SAVE, RS6000_SAVE_AREA, RS6000_VARARGS_SIZE): Likewise. + (RETURN_ADDRESS_OFFSET, CASE_VECTOR_MODE, MOVE_MAX): Likewise. + (Pmode, FUNCTION_MODE): Likewise. + (LEGITIMATE_OFFSET_ADDRESS_P): Handle TARGET_64BIT. + (GO_IF_LEGITIMATE_ADDRESS, LEGITIMIZE_ADDRESS): Likewise. + (GO_IF_MODE_DEPENDENT_ADDRESS): Same. + +Fri Jan 26 10:37:52 1996 Stan Coxs + + * m88k.md (umulsidi3): Added for the 88110 + +Fri Jan 26 09:35:42 1996 Michael Meissner + + * rs6000/sysv4.h (STRIP_NAME_ENCODING): Deal with names that have + both @ and * prefix characters. + (ASM_OUTPUT_LABELREF): Ditto. + +Thu Jan 25 10:03:34 1996 Michael Meissner + + * rs6000.h (LEGITIMIZE_ADDRESS): Rewrite to use HOST_WIDE_INT, not + plain int. + (optimize,flag_expensive_optimizations): Provide declaration for + expander functions. + + * rs6000.md (movsi): Correct code in splitting an address into + load from the TOC, and add low/high integer parts. If expensive + optimizations, and reload hasn't started, use separate pseudo regs + for each step. + + * rs6000.c (small_data_operand): Don't use the function + eliminate_constant_term, unwind code directly. + (input_operand): SYMBOL_REF/CONST of small data operand is valid. + (print_{,address_}operand): Add @sda21(0) in appropriate cases for + small data. + %L, etc. so that if the item is in small memory, the appropriate + relocation is used. + (rs6000_select{,_rtx}_section): Don't put floating point constants + or small strings in .sdata2 since we can't tell from the pointer + whether it is in the small data area or not. + + * rs6000.h (EXTRA_CONSTRAINT): Add 'U' for small data references. + (LEGITIMATE_SMALL_DATA_P): Test explicitly for SYMBOL_REF or CONST + before calling small_data_operand. + + * rs6000.md (movsi): Handle the addresses of small data items. + + * rs6000/sysv4.h (g_switch_{value,set}): Add declarations. + (SDATA_DEFAULT_SIZE): Default to 8. + (SUBTARGET_OVERRIDE_OPTIONS): If -G was not set, set it to + SDATA_DEFAULT_SIZE. + (CC1_SPEC): Pass -G nn to the compilers. + (SWITCH_TAKES_ARG): Add -G nn support. + (LINK_SPEC): Pass -G nn to the linker. + +Thu Jan 25 09:16:34 1996 Doug Evans + + * configure (sparc64-*-solaris2*): New target. + * sparc.h (SPARC_{V9,ARCH64}): Default value is 0. + (*): Replace SPARCV9 with SPARC_{V9,ARCH64}. + (MASK_CPUS): Define. + ({MASK,TARGET}_ENV32): Delete. + ({MASK,TARGET}_ARCH64,TARGET_ARCH32): Define. + (TARGET_SWITCHES): Reset cpu flags first for each variant. + (CONDITIONAL_REGISTER_USAGE): If 32 bit v9 system, unfix g1-g4, + fix g5, and make %f48-%f80 call used. + * sparc/sp64-aout.h (SPARC_{V9,ARCH64}): Define. + (TARGET_VERSION): Define. + (TARGET_DEFAULT): Add MASK_ARCH64, delete MASK_ENV32. + (JUMP_TABLES_IN_TEXT_SECTION): Define. + (READONLY_DATA_SECTION): Make text_section. + * sparc/sp64-elf.h (SPARC_{V9,ARCH64}): Define. + (TARGET_DEFAULT): Add MASK_ARCH64. + (ENDFILE_SPEC): No longer need to check for -nostartfiles. + (ASM_IDENTIFY_GCC): Define as empty. + * sparc/sp64-sol2.h: New file. + * sparc.c (*): Replace TARGET_V9 with TARGET_ARCH64. + (hard_32bit_mode_classes): Add v9 regs. + (gen_v9_scc): Handle 32 bit v9 case. Call v9_regcmp_p. + * sparc.md (*): Replace TARGET_V9 with TARGET_ARCH64 in places + requiring 64 bit environment. + (multf3_extend): Require TARGET_HARD_QUAD. + +Thu Jan 25 00:33:25 1996 Ian Lance Taylor + + * dbxcoff.h (DBX_USE_BINCL): Define. + (DBX_CONTIN_LENGTH): Define if not defined. + +Wed Jan 24 18:00:12 1996 Brendan Kehoe + + * alpha.c (alpha_write_verstamp): Only emit MS_STAMP and LS_STAMP, + not the extra numbers. + +Wed Jan 24 15:18:15 1996 Michael Meissner + + * rs6000.c (init_cumulative_args): Rewrite to use DEFAULT_ABI + runtime tests, instead of V.4 #ifdefs. + (function_arg{,_advance,_partial_nregs,_pass_by_reference}): Ditto. + (setup_incoming_varargs): Ditto. + (init_cumulative_args): Set call_cookie field to CALL_NORMAL or + CALL_NT_DLLIMPORT. + (function_arg): Add support for DLL imports. + (rs6000_valid_{decl,type}_attribute_p): New functions for NT + attributes cdecl, stdcall, dllimport, and dllexport. + (rs6000_comp_type_attributes): New attribute support. + (rs6000_set_default_type_attributes): Ditto. + (rs6000_dll_import_ref): Ditto. + + * rs6000.h (FP_ARG_{AIX,SYSV}_MAX_REG): Move here from sysv4.h. + * sysv4.h (FP_ARG_{AIX,SYSV}_MAX_REG): Move to rs6000.h. + + * rs6000.h (rs6000_call_cookie): New enum to describe the integer + that is the 2nd argument to call insns and 3rd argument to + call_value insns. Add support for NT DLL imports. + (rs6000_args): Add call_cookie field. + (VALID_MACHINE_{DECL,TYPE}_ATTRIBUTE): Define to call C functions. + ({COMP_TYPE,SET_DEFAULT_TYPE}_ATTRIBUTES): Ditto. + (rs6000_valid_{decl,type}_attribute_p): Add declarations. + (rs6000_comp_type_attributes): Ditto. + (rs6000_set_default_type_attributes): Ditto. + (rs6000_dll_import_ref): Ditto. + + * win-nt.h (ASM_DECLARE_FUNCTION_NAME): Add support for dllexport + attribute. + + * rs6000.md (call insns): Add support for NT dllimport functions, + and fix up NT indirect calls. Also correctly set the flag + rs6000_save_toc_p on NT indirect calls. + + * aix41.h (LINK_SPEC): Use new extra specs to avoid separate + versions for native and cross compilation. + * rs6000.h (LINK_SPEC): Ditto. + * sysv4.h (LINK_SPEC): Ditto. + + * rs6000.h (EXTRA_SPECS): Add link_syscalls, link_libg, link_path, + link_specs, and also allow target to define more with the macro + SUBTARGET_EXTRA_SPECS. + (LINK_{LIBG,SYSCALLS}_SPEC): Define as fixed pathnames if native + compilation, and currently nothing if cross compiling. + (LINK_START_SPEC): If not defined, define as empty. + * eabi{,sim}.h (LINK_START_SPEC): Add default -Ttext for + simulator. + + * eabi{aix,le}.h (MULTILIB_DEFAULTS): Add -mno-sdata default. + * sysv4{,le}.h (MULTILIB_DEFAULTS): Ditto. + + * rs6000.c (small_data_operand): New function to return true if + the operand lives in small data under eabi. + (rs6000_select{,_rtx}_section): New functions to determine whether + to put global and static items in the V.4/eabi small data areas if + -msdata. + + * rs6000.h (LEGITIMATE_SMALL_DATA_P): Call small_data_operand it + if V.4. + (GO_IF_LEGITIMATE_ADDRESS): If LEGITIMATE_SMALL_DATA_P, the item + is a valid address. + (ASM_OUTPUT_LABELREF): Use fputs, not fprintf. + (small_data_operand): Declare function. + + * sysv4.h (TARGET_SWITCHES): New switch -msdata to use V.4 and + eabi defined small data sections. + (SUBTARGET_OVERRIDE_OPTIONS): Don't allow -msdata and + -mrelocatable or -mcall-aix options. + (EXTRA_SECTION{S,_FUNCTIONS}): Add .sdata, .sdata2, and .sbss + sections. + (SELECT{,_RTX}_SECTION): Call (rs6000_select{,_rtx}_section). + (ASM_SPEC): The -msdata switch passes -memb to the assembler. + (ENCODE_SECTION_INFO): Prepend a '@' to the name, if the item + lives in a small data region. + (STRIP_NAME_ENCODING): Strip '@' in addition to '*'. + (ASM_OUTPUT_LABELREF): Strip a leading '@'. + + * t-{ppc,eabi}gas (MULTILIB*): Add support for libraries built + with/without -msdata. Drop support for -mcall-aixdesc libraries. + +Wed Jan 24 15:18:15 1996 Kim Knuttila + + * rs6000/win-nt.h (LIB_SPEC): Change options to GNU ld style. + (From Jason Molenda) + +Wed Jan 24 14:32:48 1996 Jim Wilson + + * reload1.c (used_spill_regs): New variable. + (reload): Set it. + * reorg.c (find_dead_or_set_registers): New function. + (mark_target_live_regs): Delete loop looking forward from target + and instead call find_dead_or_set_registers. + (fix_reg_dead_note): New function. + (fill_slots_from_thread): Call it. + + * loop.c (scan_loop): Correct comment. + (strength_reduce): Correct comments. Don't set maybe_multiple when + pass branch to scan_start. Don't set not_every_iteration after + passing a CODE_LABEL, or after passing a branch out of the loop. + When outputting DEST_ADDR giv increments, put them next to the memory + address on machines with auto-increment addresses. + (record_biv): Set new field always_executed. + (record_giv): Set new fields always_executed and auto_inc_opt. + (maybe_eliminate_biv_1): Reject biv with auto_inc_opt optimization + in some cases. + * loop.h (struct induction): New fields always_executed and + auto_inc_opt. + + * c-typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not + POINTER_SIZE to agree with expr.c. + +Tue Jan 23 15:17:30 1996 Doug Evans + + * sparc/sol2.h (ASM_OUTPUT_ALIGNED_LOCAL): Delete, use svr4.h's. + +Tue Jan 23 03:28:01 1996 Paul Eggert + + * cexp.y: Use preprocessor arithmetic instead of C arithmetic + to avoid warnings on some compilers. + (HOST_WIDE_INT_MASK): Remove. + (MAX_CHAR_TYPE_MASK, MAX_WCHAR_TYPE_MASK): New macros. + (yylex): Use them. + +Mon Jan 22 18:39:21 1996 Per Bothner + + * cppexp.c (cpp_parse_expr): Set HAVE_VALUE flag for unary + minus, even if skip_evaluation is true. + +Mon Jan 22 16:53:48 1996 David Edelsohn + + * rs6000.h (BIGGEST_ALIGNMENT): Increase to 64 always. + (BIGGEST_FIELD_ALIGNMENT): Define. + (GO_IF_LEGITIMATE_ADDRESS): Merge PRE_INC and PRE_DEC cases. + (LEGITIMIZE_ADDRESS): Use Pmode not SImode. + (CASE_VECTOR_MODE): Depend on TARGET_64BIT. + (ASM_OUTPUT_COMMON): Delete. + (ASM_OUTPUT_ALIGNED_COMMON): Define. + * rs6000/sysv4.h (BIGGEST_FIELD_ALIGNMENT): Undefine. + * rs6000.md (adddi3, subdi3, negsi2): New PowerPC64 patterns. + (ashldi3, lshrdi3, ashrdi3, anddi3, iordi3, xordi3): Same. + (moddi3, cmpdi, tablejump matchers): Same. + (divdi3): Update PowerPC64 patterns. + * rs6000.c (rs6000_initialize_trampoline, case ABI_AIX): Use Pmode + not SImode. + +Sun Jan 21 23:33:24 1996 Ian Lance Taylor + + * dbxout.c: Include + +Fri Jan 19 17:17:00 1996 Per Bothner + + * tree.h (CONSTRUCTOR_TARGET_CLEARED_P): Removed. + * expr.c (is_zeros_p, mostly_zeros_p): Handle SET_TYPE CONSTRUCTORs. + (store_constructor_field): New helper function. + (store_constructor): Take 'cleared' parameter. + (expand_expr): Fix store_constructor_call to pass 'cleared' of 0. + + * expr.c (store_constructor, SET_TYPE): Fix off-by-one-error. + Also, devide start byte by BITS_PER_UNIT before passing to memset. + (store_constructor): `continue' in wrong place. + + * expr.c (store_constructor): If storing into a range of array + elements, and the range is small, or the target it not memory, + unroll the loop (and use store_field, which handles REGs). + (store_constructor): Handle RANGE_EXPR in array index. + +Fri Jan 19 16:52:25 1996 Doug Evans + + * svr4.h (SWITCH_TAKES_ARG): Add 'x'. + * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise. + +Fri Jan 19 15:18:38 1996 Ian Lance Taylor + + * dbxout.c (flag_minimal_debug): Initialize to 0 if both + NO_DOLLAR_IN_LABEL and NO_DOT_IN_LABEL are defined. + (dbxout_type_methods): If the mangled method name uses the special + C++ marker character, pass show_arg_types as 1 when calling + dbxout_type. + +Fri Jan 19 11:48:28 1996 Michael Meissner + + * rs6000/eabi-ci.asm (_SDA_BASE_): Move the default definition + from the .got section to the .sdata section. Do not add 32768. + (_SDA2_BASE_): Provide a default definition. + + * rs6000/eabi-cn.asm (.got.blrl): Don't define this section any + more, linker now directly creates the blrl instruction at + _GLOBAL_OFFSET_TABLE_-4. + +Fri Jan 19 05:12:31 1996 Richard Earnshaw + + * arm/lib1funcs.asm (__divsi3, __modsi3, __udivsi3, __umodsi3): + Replace with smaller, faster versions. + +Thu Jan 18 17:41:46 1996 Jim Wilson + + * sh.c (ctype.h): Delete. + (regno_reg_class, reg_class_from_letter): Add SH3e support. + (prepare_scc_operands, broken_move, push, pop, push_regs): Likewise. + (calc_live_regs, sh_expand_prologue, sh_expand_epilogue): Likewsie. + (initial_elimination_offset, arith_reg_operand): Likewise. + (sh_builtin_saveregs, fp_zero_operand, fp_one_operand): New functions. + (sh_function_arg, sh_function_arg_partial_nregs): Delete. + * sh.h (CPP_SPEC, CONDITIONAL_REGISTER_USAGE): Add SH3E support. + (TARGET_SWITCHES, OVERRIDE_OPTIONS, FIRST_PSEUDO_REGISTER): Likewise. + (FIXED_REGISTERS, CALL_USED_REGISTERS, HARD_REGNO_MODE_OK): Likweise. + (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise. + (REG_ALLOC_ORDER, CONST_DOUBLE_OK_FOR_LETTER_P, NPARM_REGS): Likewise. + (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Likewise. + (FUNCTION_ARG_REGNO_P, CUMULATIVE_ARGS, ROUND_REG): Likewise. + (INIT_CUMULATIVE_ARGS, FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise. + (FUNCTION_ARG_PARTIAL_NREGS, LEGITIMATE_CONSTANT_P): Likewise. + (MODE_DISP_OK_4, REGISTER_MOVE_COST, REGISTER_NAMES): Likewise. + (DBX_REGISTER_NUMBER, enum processor_type): Likewise. + (SH3E_BIT, TARGET_SH3E, FPUL_REG, FIRST_FP_REG, LAST_FP_REG): New. + (FIRST_FP_PARM_REG, FIRST_FP_RET_REG, BASE_RETURN_VALUE_REG): New. + (BASE_ARG_REG, enum sh_arg_class, struct sh_args): New. + (GET_SH_ARG_CLASS, PASS_IN_REG_P, sh_builtin_saveregs): New. + (EXPAND_BUILTIN_SAVEREGS, DOUBLE_TYPE_SIZE): New. + (TARGET_SWITCHES): Delete broken -m3l option. + * sh.md (cpu, movsi_i, movsf_i, blt, bge, sle, sge): Add SH3E support. + (push_e, pop_e, movsi_ie, movsf_ie, addsf3, subsf3): New patterns. + (mulsf3, macsf3, divsf3, floatsisf2, fix_truncsfsi2): New patterns. + (cmpgtsf_t, cmpqesf_t, cmpsf, negsf2, sqrtsf2, abssf2): New patterns. + (abssf2+9, abssf2+10): Add SH3e support to peepholes + (abssf2+11, abssf2+12): New peepholes for SH3e. + * t-sh (MULTILIB_OPTIONS): Add SH3E support. + (MULTILIB_DIRNAMES): Define to empty. + +Thu Jan 18 11:29:11 1996 Ian Lance Taylor + + * cplus-dem.c (cplus_demangle_opname): Change type of opname + parameter to const char *. + (cplus_mangle_opname): Change return type and type of opname + parameter to const char *. Don't cast return value. + * demangle.h (cplus_demangle_opname): Update declaration. + (cplus_mangle_opname): Likewise. + +Thu Jan 18 10:07:33 1996 Michael Meissner + + * gcc.c (extra_specs): If EXTRA_SPECS is defined, define + extra_specs array to hold the extra specs the machine description + defines. + (set_spec): If EXTRA_SPECS is defined, handle the extra + specifications. + (process_command, main, validate_all_switches): Likewise. + + * rs6000/{rs6000.h,powerpc.h,aix41.h} ({CPP,ASM}_SPEC): Use common + specs with EXTRA_SPECS, only modifying things in the target that + needs to be modified, rather than having tons of mostly duplicate + definitions. + * rs6000/{sysv4{,le}.h,}netware.h,lynx.h,} ({CPP,ASM}_SPEC): Ditto. + * rs6000/eabi{le,aix}.h,aix3newas.h}} ({CPP,ASM}_SPEC): Ditto. + +Wed Jan 17 19:38:24 1996 Paul Eggert + + * cexp.y (HOST_WIDE_INT_MASK): Renamed from LONG_MASK; + use HOST_WIDE_INT. + (HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT): Put back. + (parse_c_expression, expression_value, parse_escape, left_shift, + right_shift, struct constant, exp, parse_number, yylex): + Replace `long' with `HOST_WIDE_INT'. + * cccp.c (PTR_INT_TYPE): Remove obsolete define to `long'. + (parse_escape, parse_c_expression, eval_if_expression, get_lintcmd, + do_line, do_if, do_elif): Replace `long' with `HOST_WIDE_INT'. + (trigraph_pcp): Don't assume a pointer difference fits in an int. + +Wed Jan 17 18:56:31 1996 Jim Wilson + + * expmed.c (extract_bit_field): For multi-word bitfield, clobber + target before storing to it. + +Wed Jan 17 14:19:34 1996 J.T. Conklin + + * sparc/{t-sol2,t-sunos40,t-sunos41}: Define away LIBGCC1_TEST + so that cross compilers targeted at these systems will build. + +Wed Jan 17 09:51:58 1996 Doug Evans + + * sparc.h (v9 INIT_CUMULATIVE_ARGS): Fix typos. + + * gcc.c (process_command): New local lang_n_files, and use + it in test of -c with -o. Move test of -save-temps. + Test for trailing NUL in -c. + + * i386/t-go32: New file. + * i386/xm-go32.h: New file. + * configure (i[345]86-*-go32*): Define xm_file and tmake_file. + +Wed Jan 17 07:47:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cccp.c (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Put back. + (pcfinclude): Use HOST_WIDE_INT for casting pointer to integer. + +Wed Jan 17 05:25:06 1996 Jeffrey A. Law + + * va-pa.h (__gnuc_va_list): Use a "void *". + +Tue Jan 16 18:45:23 1996 Per Bothner + + * cppexp.c (cpp_lex): Do cpp_pop_buffer after CPP_POP so retried + cpp_skip_hspace will actually work. + + * cppexp.c (SKIP_OPERAND): New macro. + (cpp_parse_expr): Suppress evaluation and diagnostics in + unevaluated subexpressions. + Corresponds to Eggert's Fri Jun 9 17:58:29 1995 change. + +Tue Jan 16 11:59:07 1996 Mike Stump + + * expr.c (expand_expr, case COND_EXPR): Make sure cleanups live on + the function_obstack as they are used by the exception handling code. + (defer_cleanups_to): Ditto. + (TRUTH_ANDIF_EXPR): Ditto. + (TRUTH_ORIF_EXPR): Ditto. + +Tue Jan 16 13:57:13 1996 Jim Wilson + + * cccp.c (new_include_prefix): Ignore ENOTDIR error from stat. + +Tue Jan 16 12:18:56 1996 Doug Evans + + * i386/t-sol2 (crt[1in].o): Add missing -c. + * sparc/t-sol2 (crt[1in].o,gcrt1.o): Likewise. + Source files are assembler. + + * gcc.c (do_spec_1, case 'W'): Rename local `index' to `cur_index' to + avoid warning on solaris. + +Tue Jan 16 11:42:09 1996 Ian Lance Taylor + + * dbxcoff.h: New file for stabs in COFF support. + * a29k/a29k-udi.h: Use dbxcoff.h. + * h8300.h, i960/i960-coff.h, m68k/coff.h, m88k/m88k-coff.h: Likewise. + * sh.h, sparc/litecoff.h: Likewise. + +Tue Jan 16 08:21:45 1996 Hans-Peter Nilsson + + * optabs.c (expand_fix): Don't copy TARGET to TO if same. + + * expr.c (emit_move_insn_1): Don't emit clobber when moving + by parts and source equals destination. + +Tue Jan 16 08:08:29 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expmed.c (extract_bit_field): Don't abort if not MEM_IN_STRUCT_P. + + * local-alloc.c (memref_referenced_p, case REG): Fix last change. + + * fold-const.c (const_binop): Strip NOPS from both args. + + * regclass.c (regclass): Remove useless cast. + +Tue Jan 16 07:06:03 1996 Paul Eggert + + * cexp.y: General code cleanup in the style of 1995-04-01 change. + Add prototypes for static functions. + Add parentheses suggested by `gcc -Wparentheses'. + Use `long' uniformly, instead of long, int, HOST_WIDE_INT mess. + (struct constant): Use `signedp' flag (with sign bit) instead of + `unsignedp' flag; it's a little more convenient. + + (HAVE_STDLIB_H, STDC_HEADERS, LONG_MASK, __attribute__, PROTO, + VA_START, PRINTF_ALIST, PRINTF_DCL, PRINTF_PROTO, PRINTF_PROTO_1, + vfprintf, SIGNED, UNSIGNED): New symbols. + : Include if HAVE_STDLIB_H. + : New include. + (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Remove. + (yylex, yyerror, expression_value, parse_number, + initialize_random_junk): Now static. + + (overflow_sum_sign): Renamed from possible_sum_sign, with an + extra arg SIGNEDP. + (parse_number): Inline strcmp when checking for "0x". + (yylex): Keep track of mask needed when decoding wide characters. + (parse_escape): New arg RESULT_MASK; use it instead of + assuming char width. + (yylex, parse_escape, parse_c_expression): Store all host + integers as long, not int or HOST_WIDE_INT. + (left_shift): No need to do signed left shifts separately. + + These changes are for the test program (if TEST_EXP_READER): + (pedantic, traditional): Allocate storage. + (main): Set pedantic, traditional, yydebug depending on args. + (is_hor_space, warning, lookup): Change types and implementation + to match rest of program. + (pedwarn, check_assertion, xmalloc): New functions. + + * cccp.c (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Remove. + (parse_escape, parse_c_expression, eval_if_expression): + Change return type to `long'; all callers changed. + (pcfinclude): Use `int', not HOST_WIDE_INT; any integral type will do. + + * cccp.c (skip_quoted_string): If pedantic and not pedantic_errors, + skipped multiline strings elicit a warning, not an error. + (rescan): Minor code reorg to keep it parallel with skip_quoted_string. + + * fold-const.c (left_shift_overflows): Remove; unused. + + * c-typeck.c (convert_for_assignment): Don't automatically convert + from a union member to the union. + +Tue Jan 16 06:26:00 1996 Stefan Vogel (stefan@ssw.de) + + * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Define section attributes + only when a section is defined the first time. + +Tue Jan 16 06:03:27 1996 Thomas Graichen + + * i386/freebsd.h (ASM_WEAKEN_LABEL): Deleted; not supported. + +Mon Jan 15 20:59:49 1996 J. Kean Johnston + + * Makefile.in (LIBGCC2_CLFAGS): Add -DIN_LIBGCC2. + (libgcc1.a): Add -DIN_LIBGCC1. + (stamp-crtS): Remove -fpic, use CRTSTUFF_CFLAGS_S. + * config/t-libc-ok: Add CRTSTUFF_CFLAGS_S. + + * configure (i[3456]86-*-sco3.2v5*): New case. + * i386/sco5.h, i386/t-sco5, i386/x-sco5, i386/xm-sco5.h: New files. + * ginclude/stdarg.h, ginclude/varags.h: Add test for SCO Open Server 5. + +Mon Jan 15 20:44:13 1996 J.T. Conklin + + * m68k/netbsd.h (ASM_SPEC): New macro. + +Mon Jan 15 17:01:16 1996 Doug Evans + + * c-lex.c (check_newline): Pass character after `#pragma' to + HANDLE_PRAGMA. Don't call get_directive_line if at end of line. + * c-common.c (get_directive_line): Watch for EOF. + * h8300.h (HANDLE_PRAGMA): New argument `c'. + Must issue `return' now. + * i960.h (HANDLE_PRAGMA): Likewise. + * sh.h (HANDLE_PRAGMA): Likewise. + * nextstep.h (HANDLE_PRAGMA): Likewise. + * h8300.c (handle_pragma): New argument `ch'. + Simplify pragma processing. Delete support for `#pragma section'. + * i960.c (process_pragma): New argument `c'. Change result to + terminating character. + * nextstep.c (handle_pragma): Likewise. + * sh.c (handle_pragma): Likewise. Also simplified. + + * sched.c (reemit_notes): Add prototype. + (sched_analyze_2): Reorganize comments. Call prev_nonnote_insn. + (sched_analyze): Add abort call. + (schedule_block): Call prev_nonnote_insn. + Move call of reemit_notes to after SCHED_GROUP_P scheduling. + Set `head' to `last'. + +Mon Jan 15 16:12:25 1996 Roland McGrath + + * configure (*-*-gnu*): Use tmake_file=t-gnu. + * config/t-gnu (CRTSTUFF_T_CFLAGS): New file. + * configure (*-*-gnu*): Remove crtbeginS.o and crtendS.o frmo + $extra_parts. Use xmake_file=x-linux. + +Mon Jan 15 15:30:49 1996 Gran Uddeborg + + * i386/svr3{,z}.ifile: Allocate address areas for the "stab" + and "stabstr" sections. + +Mon Jan 15 14:39:14 1996 Paul Eggert + + * c-decl.c (finish_incomplete_decl): Warn if completing an + array that wasn't declared extern. Simplify test for whether + completion is needed. + + * cccp.c (do_xifdef): Warn about `#ifdef 0' if not traditional; + formerly the warning was issued if not pedantic. + +Mon Jan 15 13:24:12 1996 Michael Meissner + + * rs6000.md ({add,sub}di3): Make it work on little endian PowerPC + systems. + + * rs6000/eabi-c{i,n}.asm (.sbss2 section): Don't make .sbss2 a + .bss section just yet, because it confused the linker. + +Mon Jan 15 08:50:31 1996 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (pushdi): Allow "i" for operand 1. + (extendqidi2): Improve 68000 code generation. + (adddi_lshrdi_63): New pattern. + +Mon Jan 15 08:38:40 1996 H.J. Lu {hjl@gnu.ai.mit.edu) + + * configure (i[3456]86-*-linux*): Add extra_parts. + * i386/linux.h (LIB_SPEC): Remove %{mieee-fp:-lieee}. + Use -lc_p for -profile. + (CC1_SPEC): New macro. + * linux.h (STARTFILE_SPEC): Use crtbegin.o for both shared llibrary + and normal executable; use gcrt1.o for -profile. + (ENDFILE_SPEC): Use crtend.o for shared llibrary and normal executable. + * x-linux (INSTALL_ASSERT_H): Unset it. + * configure (i[3456]86-*-linux*oldld*): Set xmake_file to x-linux-aout. + (i[3456]86-*-linux*aout*): Likewise. + * x-linux-aout: New file, copied from config/x-linux. + +Mon Jan 15 07:41:05 1996 Dmitry K. Butskoy (buc@stu.spb.su) + + * varasm.c (in_data_section): New function. + +Mon Jan 15 07:37:13 1996 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) + + * c-typeck.c (build_c_cast): Don't warn about alignment when we + have an opaque type. + +Mon Jan 15 07:22:59 1996 Michel Delval (mfd@ccv.fr) + + * reload.c (find_equiv_reg): Apply single_set, not PATTERN, to WHERE. + +Mon Jan 15 07:02:21 1996 John F. Carr + + * reorg.c (mark_referenced_resources, case TRAP_IF): Set volatil. + +Mon Jan 15 06:20:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (process_commands): Remove inadvertant fallthrough. + + * function.c ({,round_}trampoline_address): TRAMPOLINE_ALIGNMENT is + in bits, not bytes. + + * objc/archive.c (objc_{write,read}_type, case _C_STRUCT_B): Fix typo. + + * expr.c (expand_expr, case COMPONENT_REF): Don't make recursive + call on object with EXPAND_SUM. + + * stmt.c (save_expr_regs): Delete declaration; unused. + +Sun Jan 14 21:44:26 1996 Michael Meissner + + * rs6000/eabi-ci.asm (__EXCEPT_START__): Provide label for start + of g++ exception pointers. + + * rs6000/eabi-cn.asm (__EXCEPT_END__): Provide label for end of + g++ exception pointers. + + * rs6000/eabi.asm (__eabi): Relocate exception pointers unless + they are NULL. + + * va-ppc.h (va_arg): Long longs are always passed in odd registers. + + * rs6000.c (function_arg_boundary): On V.4, long longs are always + passed in odd registers. + + * rs6000.md ({add,sub}di3): Remove restriction for POWER only, + since all of the instructions used are common to both + architectures. + +Sun Jan 14 20:34:03 1996 Jeffrey A. Law + + * expr.c (expand_assignment): Fix alignment parm in emit_block_move. + +Sun Jan 14 19:00:25 1996 Jim Wilson + + * sched.c (schedule_block): Copy RTX_INTEGRATE_P bit when create + a new note. + + * integrate.c (save_for_inline_copying, case NOTE): Copy + RTX_INTEGRATED_P bit. + +Sun Jan 14 17:57:52 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stupid.c (stupid_find_reg): Don't try to allocate reg if live + over more than 5,000 insns. + +Sat Jan 13 23:09:07 1996 Jeffrey A. Law + + * pa.h (STACK_BOUNDARY): Bring back down to 64bits. + + * pa.md (pre_ldwm): Fix bug exposed by recent changes. + Simplify. + (pre_stwm, post_ldwm, post_stwm): Likewise. + (HImode and QImode variants): Likewise. + * pa.c (hppa_expand_prologue): Corresponding changes. + (hppa_expand_epilogue): Likewise. + + * pa.c (hppa_legitimize_address): Generate more indexing + address modes. + +Fri Jan 12 19:03:21 1996 Doug Evans + + * sparc/sol2.h (COMMON_ASM_OP): Delete, use sysv4.h's. + + * sched.c (schedule_block): Maintain a valid chain so + emit_note_before works. + +Fri Jan 12 13:20:01 1996 Michael Meissner + + * rs6000/eabi{,-ci,-cn}.asm: Add support for V.4 .sbss/.sdata, and + eabi .sbss2/.sdata2 sections, loading up r13 and r2 respectively + if the sections were used, and we don't need to relocate the + pointers. + +Thu Jan 11 19:41:07 1996 Per Bothner + + * sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use AGGREGATE_TYPE_P so + QUAL_UNION_TYPE and SET_TYPE are also passed by invisible reference. + * sparc.h (INIT_CUMULATIVE_ARGS for SPARCV9): Return types of + QUAL_UNION_TYPE and SET_TYPE also make invisible 1st argument. + +Thu Jan 11 18:33:50 1996 Doug Evans + + * h8300.h (TARGET_ALIGN_STRUCT_300): New macro. + (TARGET_SWITCHES): Add -malign-struct-300. + (BIGGEST_FIELD_ALIGNMENT): Update. + +Thu Jan 11 12:07:44 1996 J.T. Conklin + + * h8300.h (CPP_PREDEFINES): Delete -D_DOUBLE_IS_32BITS. + +Thu Jan 11 11:09:33 1996 David Edelsohn + + * rs6000.md (mulsf3 !POWERPC): Use dmul attribute. + (divsf3 !POWERPC): Use ddiv attribute. + +Thu Jan 11 11:09:33 1996 Michael Meissner + + * rs6000/eabi-ctors.c (__do_global_ctors): If global variable + __atexit is non-NULL, call it with __do_global_dtors address to + register the function to run destructors. + (__do_global_{c,d}tors): Guard against NULL pointers. + + * rs6000/eabi.asm (__eabi): If the __eabi function was already + called, do nothing. + +Thu Jan 11 11:29:09 1996 Doug Evans + + * fixincludes: Wrap rpc/types.h in extern "C", for osf2.0. + +Wed Jan 10 13:16:03 1996 Doug Evans + + * varasm.c (variable_section): New function. + (assemble_variable): Call it. + +Wed Jan 10 11:27:28 1996 Michael Meissner + + * rs6000/eabi-c{i,n}.asm (__DTOR_{LIST,END}__): Fix typo. + * rs6000/eabi{,sim}.h ({START,END}FILE_SPEC): Add %s to object + files. + + * rs6000/t-{eabi,eabigas,ppc,ppcgas} (MULTILIB_MATCHES): Drop + support for obsolete -mcpu=mpc403. + Add -mcpu=821 and -mcpu=860 to soft-float defaults. + + * rs6000/t-eabi{,gas} (LIBGCC): Add stmp-crt. + (INSTALL_LIBGCC): Add install-crt. + (EXTRA_PARTS): Delete. + (stmp-crt{,-sub}): New rules to build crti.o and crtn.o in a + multilib fashion. + (install-crt): Install the multilib crt values. + +Tue Jan 9 17:30:16 1996 Doug Evans + + * c-tree.h (merge_attributes): Moved from here. + * tree.h (merge_attributes): To here. + * c-typeck.c (merge_attributes): Moved from here. + * tree.c (merge_attributes): To here. + +Mon Jan 8 18:27:38 1996 Arne H. Juul + + * mips/netbsd.h (LINK_SPEC): Change nostdlib to nostartfiles. + (LOCAL_LABEL_PREFIX): Delete. + (ASM_OUTPUT_SECTION_NAME): Define. + +Sun Jan 7 17:11:11 1996 David Edelsohn + + * collect2.c (scan_libraries): Correct Import File ID interpretation. + +Sun Jan 7 16:56:56 1996 Michael Meissner + + * {svr4,mips/elf{,64}}.h (MAX_OFILE_ALIGNMENT): Define as 32768*8. + +Sat Jan 6 15:52:36 1996 Doug Evans + + * a29k/vx29k.h (CPP_SPEC): Define. + + * configure: Recognize any --with/--without option. + + * Makefile.in (MAKEINFOFLAGS): New variable. + (cpp.info,gcc.info): Use it. + + * sparc/t-sol2 (crt1.o,crti.o,crtn.o,gcrt1.o): Use $(GCC_FOR_TARGET). + * i386/t-sol2 (crt1.o,crti.o,crtn.o): Likewise. + +Fri Jan 5 10:44:25 1996 Michael Meissner + + * rs6000/aix{3newas,41}.h ({ASM,CPP}_SPEC): Update for new + processors. + * rs6000/eabi{aix,le}.h ({ASM,CPP}_SPEC): Ditto. + * rs6000/{lynx,netware,powerpc,sysv4}.h ({ASM,CPP}_SPEC): Ditto. + + * rs6000.c (rs6000_override_options): Remove requirement that + -mcpu=common be big endian. + (rs6000_stack_info): If NAME__main is defined, mark this function + as doing a call, even if there are no arguments. + + * rs6000.md (SI*SI->DI splitters): Add reload_completed + condition. + (mulsidi3): If big endian, do move directly, rather than moving by + pieces. + + * rs6000/eabi{,sim}.h (STARTFILE_SPEC): Add crti.o before any + other objects. + (ENDFILE_SPEC): Add crtn.o after any objects. + * rs6000/t-eabi{,gas}: Build crt{i,n}.o from eabi-crt{i,n}.asm. + * rs6000/eabi-crt{i,n}.asm: New files to provide begin/end labels + for all special sections used by eabi as opposed to relying on GLD + to set all of these symbols. + * rs6000/eabi.asm (__eabi): Change to use the new labels provided + above. Don't assume that the .got2, .ctors, .dtors, and .fixup + sections are contiguous. + +Fri Jan 5 10:40:37 1996 David Edelsohn + + * rs6000.md (mulh_call): Remove r4 clobber. + (quoss_call): Remove cr0 and cr1 clobbers. + + * rs6000.md (function units): Add MPC505/821/860 support. + (SF multiply add combiner patterns): Use dmul attribute when limited + to DFmode POWER instructions. + * rs6000.c (processor_target_table): Add MPC505/821/860 support. + Remove MASK_POWER and add MASK_PPC_GFXOPT for PPC602. Always use + new mnemonics for common mode. + (rs6000_override_options): Don't set SOFT_FLOAT based upon + PROCESSOR_DEFAULT. + * rs6000.h (processor_type): Add PROCESSOR_MPCCORE. + (RTX_COSTS): Add PROCESSOR_MPCCORE cases. + (CPP_SPEC): Add new processor support. + +Fri Jan 5 00:32:49 1996 Doug Evans + + * sparc.h (MACHINE_STATE_RESTORE): Add missing .align. + +Wed Jan 3 18:29:32 1996 Doug Evans + + * arm/lib1funcs.asm (__USER_LABEL_PREFIX__): Define if not already. + (CONCAT1,CONCAT2,SYM): Define. + (__udivsi3,__divsi3,__umodsi3,__modsi3,__div0): Use SYM to define + global labels. + +Wed Jan 3 02:41:39 1996 Jeffrey A. Law + + * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Call text_section. + +Tue Jan 2 16:12:13 1996 Jim Wilson + + * sh.c (gen_shifty_op): Output a NOP for a shift by 0. + (find_barrier): New variables si_limit, hi_limit. Set them depending + on whether we are optimizing. Set found_hi if the destination is + HImode. + (machine_dependent_reorg): If not optimizing, then change scan to a + note instead of calling delete_insn. + * sh.h (OVERRIDE_OPTIONS): Don't set optimize or flag_delayed_branch. + + * dbxout.c (gstab.h): Include if cross compiling. + +Mon Jan 1 21:13:43 1996 Arkady Tunik + + * configure (i[3456]-*-solaris2*): Support stabs. + * i386/sol2dbg.h: New file. + +Mon Jan 1 09:08:01 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c: Use DECL_C_BIT_FIELD, not DECL_BIT_FIELD in all tests. + + * global.c (reg_allocno): No longer static. + * reload1.c (reg_allocno): Declare. + (order_regs_for_reload): New arg, GLOBAL. + Bias against regs allocated in local-alloc. + (reload): Pass new parm to order_regs_for_reload. + + * local-alloc.c (reg_equiv_replacement): New variable. + (memref_referenced_p, case REG): Check for reg_equiv_replacement. + (update_equiv_regs): reg_equiv_replacement now file-scope. + + * c-decl.c (finish_struct): Warn if field with enumeral type is + narrower than values of that type. + + * combine.c (rtx_equal_for_field_assignment_p): New function. + (make_field_assignment): Use it. + Expand compound operations on both sides of an IOR. + Properly adjust constand in IOR when computing bit position. + +Sun Dec 31 18:47:22 1995 Doug Evans + + * m68k-none.h (MULTILIB_DEFAULTS): Define. + +Sun Dec 31 15:47:20 1995 Jeffrey A. Law + + * hard-reg-set.h (losing_caller_save_reg_set): Declare. + * regclass.c (losing_caller_save_reg_set): Define. + (init_reg_sets_1): Initialize losing_caller_save_reg_set. + * global.c (find_reg): Avoid caller-saving registers in + losing_caller_save_reg_set. + * local-alloc.c (find_free_reg): Avoid caller-saving registers + in losing_caller_save_reg_set. + (CLASS_LIKELY_SPILLED_P): Delete definition. Moved into regs.h. + * regs.h (CLASS_LIKELY_SPILLED_P): Define if not already defined. + + * reorg.c (fill_simple_delay_slots): Try to fill from the + target of an unconditional branch if necessary. + + * pa.h (REG_ALLOC_ORDER): Allocate PA1.1 caller-saved FP regs + before PA1.0 caller-saved FP regs. + + * sched.c (adjust_priority): Use ADJUST_PRIORITY if its defined. + + * pa.h (ADJUST_PRIORITY): Define to keep lifetimes of registers + that will be allocated to %r1 shorter. + +Sun Dec 31 14:20:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * rtl.h (assign_temp): Add extra arg. + * function.c (assign_temp): Add extra arg, DONT_PROMOTE. + Don't return (const_int 0) for VOIDmode. + * stmt.c (expand_asm_operands): Call assign_temp with extra arg. + * expr.c (save_nocopied_parts, expand_expr): Likewise. + (expand_expr, case SAVE_EXPR): Set TEMP to (const_int 0) + if MODE is VOIDmode. + (expand_expr): Don't use assign_temp for pseudos when might + want to be TMODE. + + * stmt.c (tail_recursion_args): Compare TYPE_MAIN_VARIANTs. + + * calls.c (expand_call): Don't warn about not being able to + inline if -O0. + * expr.c (clear_pending_stack_adjust): Don't do optimization if -O0. + * function.c (instantiate_decls): Check DECL_SAVED_INSNS to see + if obstack change is needed. + * toplev.c (rest_of_compilation): Leave DECL_INLINE set even if + won't inline. + + * tree.h: Add documentation on uses of common area flags. + (DECL_ERROR_ISSUED): New macro. + (DECL_NO_STATIC_CHAIN): New macro; currently unused. + * c-aux-info.c (gen_decl): DECL_REGISTER isn't defined + for FUNCTION_DECL. + * toplev.c (compile_file): Likewise. + * stmt.c (fixup_gotos): Use DECL_ERROR_ISSUED instead + of DECL_REGISTER. + * varasm.c ({bc_,}make_decl_rtl): Don't look at DECL_REGISTER + for functions. + +Sat Dec 30 07:57:11 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sdbout.c (plain_type_1, case ARRAY_TYPE): Subtract lower bound + when writing dimension. + +Fri Dec 29 18:23:58 1995 Paul Eggert + + * cccp.c (eval_if_expression): End expression with '\n', not '\0' + so '\0' can be diagnosed properly. + * cexp.y (yylex, parse_c_expression, main): Likewise. + +Thu Dec 28 18:24:54 1995 Per Bothner + + * tree.h (TYPE_ARRAY_MAX_SIZE): New macro (used by Chill). + * function.c (assign_temp): New function. Can handle Chill-style + variable-sized array with static maximum size. + * rtl.h (assign_temp): New declaration. + * stmt.c (expand_asm_operands): Use new assign_temp function. + * expr.c (save_noncopied_parts, expand_expr): Likewise. + +Thu Dec 28 15:28:47 1995 Per Bothner + + * function.c (assign_parms): Fix thinko for struct value arg. + +Fri Dec 29 12:41:47 1995 Michael Meissner + + * rs6000.md (movdf): Reinstate 12/24 change accidently dropped in + undoing 12/27 changes. + +Thu Dec 28 22:24:53 1995 Michael Meissner + + * rs6000.h: (reg_class): Undo 12/27 changes, except for formatting. + (REG_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS): Likewise. + (REG_CLASS_FROM_LETTER): Likewie. + (PREDICATE_CODES): Delete predicate functions. + (gpc_reg{0,3,4,34}_operand): Delete declaration. + (cc_reg{0,1}_operand): Likewise. + * rs6000.c (gpc_reg{0,3,4}_operand): Delete. + (cc_reg{0,1}_operand): Likewise. + + * rs6000.md (common mode functions): Undo 12/27 changes,and add + appropriate clobbers for common mode calls. Keep define_splits for + powerpc SI*SI->DI. + +Thu Dec 28 11:08:11 1995 Mike Stump + + * sparc.h (RETURN_ADDR_OFFSET): Rename from NORMAL_RETURN_ADDR_OFFSET; + returns offset for the current function specifically. + +Thu Dec 28 07:07:14 1995 Paul Eggert + + * c-lex.c (yylex): Improve error message for bogus numbers. + Consolidate duplicated code. + + * cexp.y (parse_number): Improve error message for bogus numbers. + (yylex): Consider `0xe-1' to be a (bogus) number if not traditional. + + * cccp.c (do_include): In VMS, worry only about EACCES when open fails. + (new_include_prefix): Don't try to stat dir prefixes in VMS. + +Wed Dec 27 14:02:54 1995 Per Bothner + + * fix-header.c: Add EXIT_FAILURE and EXIT_SUCCESS to stdlib.h if + missing. Re-write how errno is added to be done similarly. + (XOPEN_SYMBOL, XOPEN_EXTENDED_SYMBOL): New macros, to mark XPG4 + functions. + (std_include_table): Add a number of functions (mostly XPG4). + +Tue Dec 26 23:18:34 1995 Per Bothner + + * sys-types.h: Add dummy definition for ssize_t. + * sys-protos.h (bcmp, bcopy, gethostname, lockf, read, readlink, + write): Fix prototypes to match Posix and XPG4. + (socket, strcasecmp, strncasecmp): New prototypes (from XPG4). + +Wed Dec 27 15:30:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (_bb_init_prg): Cast arg to bzero to (char *). + + * regs.h (reg_rtx_no, regno_pointer_{flag_length,align): New decls. + (REGNO_POINTER_ALIGN): New macro. + * emit-rtl.c (regno_pointer_align): New variable. + (gen_reg_rtx): Extend regno_pointer_align table. + Allocate tables in saveable obstack. + (mark_reg_pointer): New arg, ALIGN. + (gen_inline_header): New args for reg info. + (set_new_first_and_last_insn): Set cur_insn_uid. + ({save,restore}_emit_status): Save and restore regno_pointer_align. + (restore_reg_data{,_1}): Deleted. + (init_emit): Allocate register tables in saveable obstack. + Set REGNO_POINTER_ALIGN for regs pointing into frame. + * function.c (assign_parms): Set REGNO_POINTER_ALIGN for + parms that are pointers. + * function.h (struct function): New field regno_pointer_align. + * expr.c (expand_expr, case VAR_DECL): Set REGNO_POINTER_ALIGN + when copying address into memory. + (expand_expr, case COMPONENT_REF, case ADDR_EXPR): Set alignment + of register when result or result's address. + (expand_expr, case CONVERT_EXPR): Don't handle -fforce-mem here. + * combine.c (set_nonzero_bits_and_sign_copies): Handle reg even + if only set once and in one basic block. + (nonzero_bits, case REG): Use REGNO_POINTER_ALIGN instead of + explicit alignment of registers pointing into frame. + * stmt.c (expand_decl): Set alignment of register for pointer + variable. + * optabs.c (emit_unop_insn): Don't do -fforce-mem for SIGN_EXTEND. + * cse.c (find_best_addr): Make sure folded address better before using. + * rtl.h (INLINE_REGNO_{RTX,POINTER_FLAG,POINTER_ALIGN}): New macros. + (gen_inline_header): Add three new parms. + * rtl.def (INLINE_HEADER): Add three new fields. + * integrate.c: Include regs.h. + (initialize_for_inline): Pass additional args to gen_inline_header. + (save_for_inline_copying): Make new regno_reg_rtx, regno_pointer_flag, + and regno_pointer_align arrays. + (expand_inline_function): Set alignment of reg for parm if passed + by hidden pointer. + Set regno_pointer_{flag,align} into remap table. + (copy_rtx_and_substitute): Set alignment of pointers into + stack frame. + Copy pointer flag and alignment to regs that are copies of + pointer registers from the original regs. + (output_inline_function): Don't call restore_reg_data. + Restore reg_rtx_no, regno_{reg_rtx,pointer_flag,pointer_align}. + * integrate.h (struct inline_remap): New fields regno_pointer_flag + and regno_pointer_align. + * unroll.c (unroll_loop): Set regno_pointer_{flag,align} in + remap table. + * explow.c (memory_address, allocate_dynamic_stack_space): + Pass additional arg to mark_reg_pointer. + * Makefile.in (integrate.o): Includes regs.h. + + * alpha.c ({non,}aligned_memory_operand): Test REGNO_POINTER_ALIGN. + (reg_or_unaligned_mem_operand): New function. + (get_unaligned_address): Add new arg, EXTRA_OFFSET. + * alpha.h ({CONSTANT,DATA}_ALIGNMENT): Align to at least BITS_PER_WORD. + (PREDICATE_CODES): Add reg_or_unaligned_mem_operand. + * alpha.md (extend{qihi,qisi,hisi}2): Allow unaligned memory + as arg 1 and pass to extend_{q,h}idi2. + (unaligned_extend{q,h}idi): New patterns. + (extend{q,h}idi2): If unaligned memory, call above new patterns. + (ext{q,l,w}h recognizer): Update to proper RTL. + (ext define_split): Comment out for now; wrong and maybe useless. + (unaligned_{load,store}hi): Do similarly to QImode. + (movhi, reload_{in,out}hi): Call unaligned case differently. + +Wed Dec 27 11:38:20 1995 Michael Meissner + + * rs6000.md (mulsidi3{,_common}): Undo previous change using + register classes instead of fixed registers for SI*SI->DI common + mode multiplies. + + * rs6000.c (gpc_reg34_operand): Delete unused function. + * rs6000.h (gpc_reg34_operand): Likewise. + + * rs6000.c (gpc_reg{3,4}_operand): Reorganize code and don't allow + SUBREG's. + + * rs6000.c (rs6000_override_options): Do not allow -mcpu=common on + little endian PowerPC's. + (gpc_reg{0,3,4,34}_operand): New functions to match a specific + register. + (cc_reg{0,1}_operand): Likewise. + + * rs6000.h (reg_class): Add register classes for register 3 by + itself, register 4 by itself, registers 3&4, and CR1. + (REG_NAMES): Add support for new register classes. + (REG_CLASS_CONTENTS, REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise. + (PREDICATE_CODES): Add new predicate functions. + (gpc_reg{0,3,4,34}_operand): Add declaration. + (cc_reg{0,1}_operand): Likewise. + + * rs6000.md (common mode multiplication/division): Move/rename common + mode calls so they are closer to define_expands that call them. + Set attribute type to be jmpreg, rather than integer, so optimizer + knows branch processing unit is used; make SI*SI->DI multiplier use + register classes instead of hardwired registers. + Add appropriate clobbers of CR0/CR1 as mandated by PowerOpen spec. + (PowerPC SI*SI->DI multipliers): Add appropriate define_splits. + + * rs6000/t-{,x}newas (MULTILIB*): Don't build power2 or 601 + specific libraries. + +Tue Dec 26 21:52:18 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold_convert): When converting a NaN to + another type, change the type of the node before returning it. + +Mon Dec 25 17:12:10 1995 Richard Kenner + + * c-typeck.c (mark_addressable): Fix error in last change. + +Sun Dec 24 22:19:49 1995 Jeffrey A. Law + + * pa.c (output_function_epilogue): Use assemble_integer rather + than calling ASM_OUTPUT_INT directly. + * pa.h (ASM_OUTPUT_INT): Use labels for everything in the + exception table section. + + * pa.c (print_operand): Don't call fprintf to output a register + name. Use fputs instead. + + * pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Strip any name encoding + on the section name. + +Sun Dec 24 17:46:03 1995 Markus Theissinger + + * toplev.c (main): Add -ax option. + * gcc.c (struct compilers): Likewise. + * final.c (end_final): Extended header increased to 11 words. + (profile_after_prologue): FUNCTION_BLOCK_PROFILER uses + count_basic_blocks instead of profile_label_no. + + * libgcc2.c (struct bb): Add flags field. + (HAVE_POPEN): Test new define. + (struct __bb, struct bb_{edge,func}): New structs. + (__bb_init_{prg,file},__bb_{init,exit}_trace_func,__bb_trace_ret, + (__bb_trace_func{,_ret},gopen,gclose): New functions. + + * sparc.h, i386.h, m68k.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): + Extension for -ax option (profile_block_flag == 2). + (MACHINE_STATE_SAVE,MACHINE_STATE_RESTORE): New macros. + (FUNCTION_BLOCK_PROFILER_EXIT): New macro. + * sparc.c (output_function_epilogue), i386.c (function_epilogue): + Use FUNCTION_BLOCK_PROFILER_EXIT. + * m68k.c (output_function_epilogue): Likewise. + * xm-sparc.h: Define HAVE_POPEN. + +Sun Dec 24 06:50:30 1995 Barrett Richardson (barrett@iglou.com) + + * floatlib.c (__divdf3): Rewrite to do software divide of two + doubles instead of using __divsf3. + +Sun Dec 24 06:38:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * rs6000.md (movdf): Don't copy a word at a time; nearly always loses. + + * c-tree.h (DECL_C_BIT_FIELD): New macro. + * c-decl.c (finish_struct): Set it when set DECL_BIT_FIELD. + * c-typeck.c (mark_addressable, case COMPONENT_REF): + Give error if taking address of a bit field. + + * gcc.c (unused_prefix_warning): Include machine_suffix if + require_machine_suffix. + (warn_B, warn_std, warn_std_ptr): New variables. + (process_commands): Use them and NULL_PTR as WARN arg to add_prefix. + + * gcc.c (process_command): Give error for -c with -o and + multiple compilations. + (handle_braces): Rename variable "pipe" to "pipe_p". + + * expr.h (clrstr_optab): New declaration. + (clear_storage): New parm, ALIGN. + * tree.h (CONSTRUCTOR_TARGET_CLEARED_P): New macro. + * genopinit.c (optabs): Add "clrstr%a%". + * optabs.c (init_optabs): Initialize clrstr_optab. + * expr.c (struct clear_by_pieces): New structure. + (clear_by_pieces{,_1}, {is,mostly}_zeros_p): New functions. + (clrstr_optab): New optab. + (clear_storage): Rework to try to use clear_by_pieces, then + new clrstr insn, then library call. + (store_constructor): Track if target is already cleared. + Clear target first if CONSTRUCTOR is mostly zeros. + Don't write zeros if target has been cleared. + Add new arg to clear_storage call. + (expand_expr, case CONSTRUCTOR): Don't put static constructor + in memory if mostly zero. + * i386.md (clrstrsi): New pattern and associate anonymous pattern. + +Sat Dec 23 12:21:53 1995 Jeffrey A. Law + + * pa.c (output_move_double): Correctly identify and handle + overlapping moves. + * pa.md (movdi patterns): Eliminate earlyclobbers in mem<->gr cases. + (movdf patterns): Likewise. + +Fri Dec 22 17:29:42 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_constructor): Don't call change_address on REG. + (expand_expr, case CONSTRUCTOR): Likewise. + + * mips.c (expand_block_move): Preserve MEM flags in call to + movstrsi_internal. + + * pa.c (emit_move_sequence): Don't try to set REGNO_POINTER_FLAG + for a SUBREG. + + * reload.c (find_valid_class): New function. + (push_reload): Use it in cases where a SUBREG and its contents + both need to be reloaded. + + * toplev.c (rest_of_compilation): Never defer functions that + contain nested functions. + +Fri Dec 22 15:55:00 1995 Michael Meissner + + * rs6000.md (function units): Add 403 support which deleted + by accident on Nov 21st. Mark all compares from 602, 603, 604, + 620, 403, like was done for rios{1,2} and 601 as needing the bpu, + so that compares are hoisted far enough branches for zero cycle + branch support. + +Fri Dec 22 15:13:47 1995 Stan Cox + + * i386.h (TARGET_UNROLL_STRLEN): New macro. + * i386.c (output_strlen_unroll): New function. + * i386.md (strlensi): New pattern. + +Thu Dec 21 18:53:31 1995 Roland McGrath + + * /gnu.h (GNU_CPP_PREDEFINES): Add missing space after -Amachine(CPU). + +Thu Dec 21 12:23:42 1995 Michael Meissner + + * configure ({powerpc,rs6000}*): Change --enable-cpu to --with-cpu. + * rs6000.c (rs6000_select): Likewise. + + * rs6000/aix41.h (LINK_SPEC): Do not pass -bexport to the linker + if -g and -shared. + +Wed Dec 20 11:23:39 1995 Michael Meissner + + * configure ({powerpc,rs6000}-ibm-aix*): Merge these two into the + same case statement. Aix 4 now generates -mcpu=common by default. + ({powerpc,rs6000}*): Add support for --enable-cpu= to + select the default cpu to compile for. + + * rs6000/aix41.h (TARGET_DEFAULT): Make -mcpu=common default behavior. + (PROCESSOR_DEFAULT): Likewise. + (MULTILIB_DEFAULTS): Set mcpu=common. + + * rs6000.h (TARGET_CPU_DEFAULT): Define to be NULL if not defined. + (PROCESSOR_COMMON): Set this to PROCESSOR_601. + (PROCESSOR_POWERPC): Set this to PROCESSOR_604. + (TARGET_OPTIONS): Add -mtune= switch. + (rs6000_select): New structure to hold -mcpu=, -mtune= switches + and the result of configuring --enable-cpu=. + (OVERRIDE_OPTIONS): Pass TARGET_CPU_DEFAULT to + rs6000_override_options. + + * rs6000.c (rs6000_cpu_string): Delete global variable. + (rs6000_select): Define new global variable. + (rs6000_override_options): Take default_cpu argument, and provide + support for it and -mtune= in addition to -mcpu=. + + * rs6000/{aix{3newas,41},lynx,netware,powerpc}.h (ASM_SPEC): Add + support for -mcpu=power2. + * rs6000/{rs6000,sysv4}.h (ASM_SPEC): Likewise. + + * rs6000/{aix41,eabiaix,eabile,lynx,powerpc}.h (CPP_SPEC): Make + sure all -mcpu=xxx targets are supports. + * rs6000/{rs6000,sysv4,sysv4le}.h (CPP_SPEC): Likewise. + + * rs6000/t-x{newas,rs6000}: New files to be used when making a + cross compiler, to prevent libgcc1-test from being made. + + * rs6000/t-{x,}newas (MULTILIB_*): Build multlilib libraries for + power, power2, 601, powerpc, and common mode processors. + + * rs6000/aix41ppc.h: Delete, no longer used. + +Tue Dec 19 18:31:21 1995 Jim Wilson + + * mips.c (mips_reg_names, mips_sw_reg_names, mips_regno_to_class): + Add entry for new RAP reg. + * mips.h (FIRST_PSEUDO_REGISTER): Increment. + (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES, + DEBUG_REGISTER_NAMES): Add entry for new RAP reg. + (RAP_REG_NUM, RETURN_ADDRESS_POINTER_REGNUM): New macros. + (RETURN_ADDR_RTX): Define. + (ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): + Add RETURN_ADDRESS_POINTER_REGNUM support. + * emit-rtl.c (return_address_pointer_rtx): New global variable. + (gen_rtx, init_emit_once): Add support for it. + +Tue Dec 19 15:08:31 1995 Jason Merrill + + * collect2.c: Remove auto_export functionality. + +Tue Dec 19 10:57:23 1995 Kim Knuttila + + * ppc-asm.h: Do not compile the register macros under winnt. + +Mon Dec 18 19:31:23 1995 Adam Fedor + + * objc/encoding.c (objc_alignof_type): Handle _C_PTR case. + +Mon Dec 18 18:40:34 1995 Jim Wilson + + * combine.c (simplify_rtx, case SUBREG): For SUBREG of a constant, + use <= instead of < when comparing mode sizes. + (force_to_mode, case NOT): Use full mask inside the NOT operation. + + * expr.c (emit_block_move): When call emit_libary_call for bcopy, + pass arguments using correct types and modes. + (emit_push_insn, expand_assignment): Likewise. + (clear_storage, store_expr): Likewise for memset and bzero. + (store_constructor): Likewise for memset. + * optabs.c (emit_cmp_insn): Likewise for memcmp and bcmp. + * convex.c (expand_movstr_call): Likewise for memcpy. + * m88k.c (expand_block_move): Likewise for memcpy and bcopy. + * mips.c (block_move_call): Likewise for memcpy and bcopy. + * mips.h (INITIALIZE_TRAMPOLINE): Likewise for cacheflush. + + * c-common.c (WCHAR_TYPE_SIZE): Add a default definition. + + * sdbout.c (sdbout_symbol, case FUNCTION_DECL): Use DECL_INITIAL + instead of DECL_EXTERNAL to identify declarations. + + * svr4.h (ASM_IDENTIFY_GCC): Don't output stab here. + (ASM_IDENTIFY_GCC_AFTER_SOURCE): Output stab here instead of above. + + * stmt.c (expand_asm_operands): Handle numeric constraints in + with the default case. + +Mon Dec 18 16:49:43 1995 John F. Carr + + * expr.h (expand_mult_highpart_adjust): Declare. + +Mon Dec 18 16:39:41 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_constructor): Fix error in last change: just + copy MEM, but be sure to share address. + (expand_expr, case CONSTRUCTOR): Likewise. + +Mon Dec 18 16:22:46 1995 Michael Meissner + + * rs6000.h (ASM_GENERATE_INTERNAL_LABEL): Put leading '*' in label + string so as to not confuse dbxout.c. + +Mon Dec 18 09:44:56 1995 Mike Stump + + * libgcc2.c (__empty): An empty function used by the C++ frontend for + defaulting cleanup actions. + + * tree.c (save_tree_status, restore_tree_status): Save and restore + temporary_firstobj. + +Mon Dec 18 07:49:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (fixup_var_refs_1): Fix error in last change (when + mode of VAR is not the same as PROMOTED_MODE). + +Sun Dec 17 12:14:37 1995 Jeffrey A. Law + + * pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Don't surround section names + with '$'; that confuses collect2. + (ASM_OUTPUT_SECTION_NAME): Likewise. + + * sched.c (canon_rtx): Recursively look for equivalences; + look for expressions equivalent to MEMs. + (true_dependence): Canonicalize inputs before operating + on their values. + (anti_dependence, output_dependence): Likewise. + + * jump.c (follow_jumps): Don't follow an unconditional jump + that is not a simple_jump. + + * pa.c (override_options): Make 7100 scheduling the default. + + * pa.md: Add 2nd reload peephole somehow omitted from Nov27 changes. + + * regclass.c (regclass): Use SECONDARY_RELOAD_CLASS if it's + defined to avoid useless work. + + * combine.c (find_split_point): Try to split SET_DEST + just like we do for SET_SRC. + +Sun Dec 17 11:37:25 1995 Torbjorn Granlund + + * expmed.c (expand_mult_highpart): When doing widening multiply, + put constant in a register. + (expand_mult_highpart): When mode is word_mode use gen_highpart + instead of right shift by size. + + * expr.c (expand_expr, case MULT_EXPR): Generalize code for widening + multiply to handle signed widening multiply when only unsigned optab + is defined, and vice versa. + +Sun Dec 17 07:35:50 1995 Pat Rankin + + * vax/vms.h (WCHAR_TYPE_SIZE): Define. + +Sun Dec 17 07:08:34 1995 Ronald F. Guilmette . + + * fp-test.c: New file. + +Sun Dec 17 07:06:03 1995 Peter Flass + + * i370.md (cmpqi): Fix generation of literal operand of CLM instruction + to avoid double literals (=X'=F'...). + +Sun Dec 17 06:57:02 1995 Paul Eggert + + * cccp.c: Try harder not to open or stat the same include file twice. + Simplify include file names so that they are more likely to match. + E.g. simplify "./a//b" to "a/b". Represent directories with simplified + prefixes, e.g. replace "./a//b" with "a/b/", and "." with "". + (absolute_filename): New function. + (do_include): Use it. + (read_name_map): Likewise; this makes things more consistent for DOS. + (main, do_include, open_include_file): -M output now contains + operands of -imacros and -include. + (skip_to_end_of_comment): When copying a // comment, don't try to + change it to a /* comment. + (rescan, skip_if_group, skip_to_end_of_comment, macarg1): Tune. + (rescan, skip_if_group, skip_to_end_of_comment, macarg1): + If warn_comments is nonzero, warn if backslash-newline appears + in a // comment. Simplify method for finding /* /* */ comment. + (skip_if_group): Optionally warn if /* /* */ appears between # and + a directive inside a skipped if group. + (macarg): Optionally warn if /* /* */ appears in a macro argument. + (strncat, VMS_strncat, vms_ino_t, ino_t): Remove. + (INCLUDE_LEN_FUDGE): Add 2 if VMS, for trailing ".h". + (INO_T_EQ, INO_T_HASH): New macros. + (struct file_buf): New member `inc'. + (expand_to_temp_buffer): Initialize it. + (struct file_name_list): New member `inc'. + (struct file_name_list): New member `st'. + c_system_include_path is now 1 if not 0. + fname is now an array, not a pointer. + (struct include_file): New members `next_ino', `deps_output', `st'. + Remove members `inode' and `dev'; they are now in `st'. + (INCLUDE_HASHSIZE): Rename from INCLUDE_HASH_SIZE. + (include_hashtab): Rename from include_hash_table. + (include_ino_hashtab): New variable. + (main): Store file status in struct stat, not in long and int pieces. + Use base_name to strip prefixes from file names. + When printing directory prefixes, omit trailing / and print "" as ".". + Fatal error if the input file is a directory. + (main, path_include): Regularize operands of -include, -imacros, + -isystem, -iwithprefix, and -iwithprefixbefore. + Regularize default include directories. + (do_include): + Allocate dsp with alloca, since fname is now dynamically allocated. + Use -3 to represent a never-opened file descriptor. + Make copy of file name, and simplify the copy. + Use base_name to identify the end of fname's directory. + Do not prepend dir for "..." if it matches the search list's first dir. + open_include_file now subsumes redundant_include_p and lookup_import. + Use bypass_slot to remember when to skip directories when including + a file that has already been seen. + Instead of using 0 to represent the working directory, and "" + to represent a directory to be ignored, use "" for the former, + and assume the latter has been removed before we get here. + Assume the directory prefixes have already been simplified. + Report as errors all open failures other than ENOENT. + Fatal error if fstat fails. + Use new deps_output member to avoid printing dependencies twice. + (bypass_hashtab): New variable. + (do_include, open_control_file, record_control_macro): New convention: + control_macro is "" if the file was imported or had #pragma once. + (pragma_once_marker): Remove. + (redundant_include_p, include_hash, lookup_include, lookup_import, + add_import, file_size_and_mode): Remove; subsumed by open_include_file. + (skip_redundant_dir_prefix): Remove; subsumed by simplify_filename. + (is_system_include, read_name_map, remap_include_file): + Assume arg is a directory prefix. + (base_name, simplify_filename, remap_include_file, + lookup_ino_include, new_include_prefix): New functions. + (open_include_file): New arguments `importing' and `pinc'. + Move filename mapping into new remap_include_file function. + First try to find file by name in include_hashtab; + if that doesn't work, open and fstat it and try to find it + by inode and dev in include_ino_hashtab. + (finclude): Get file status from inc->st instead of invoking fstat. + Store inc into fp->inc so that record_control_macro doesn't + need to do a table lookup. + (finclude, record_control_macro): Accept struct include_file * + instead of char * to identify include file. All callers changed. + (check_precompiled): Get file status from new argument `st'. + (do_pragma): Output at most one warning about #pragma implementation. + Always return 0 instead of returning garbage sometimes. + (do_pragma, hack_vms_include_specification): + Use base_name for consistency, and remove redundant code. + + From Per Bothner: + Unify the 3 separate mechanisms for avoiding processing + of redundant include files: #import, #pragma once, and + redundant_include_p to use a single more efficient data structure. + (struct file_name_list): Remove no-longer needed field control_macro. + (dont_repeat_files, all_include_files): Remove, no longer used. + (struct import_file): Renmed to struct include_file, moved earlier + in file, renamed field name to fname, and added control_macro field. + (pragma_once_marker): New constant. + (import_hash_table): Renamed to include_hash_table. + (import_hash): Renamed to include_hash. + (IMPORT_HASH_SIZE): Renamed to INCLUDE_HASH_SIZE. + (main, path_include): Don't clear removed control_macro field. + (lookup_include): New function - look up fname in include_hash_table. + (redundant_include_p): Re-write to use lookup_include. + (lookup_import, record_control_macro): Likewise. + (add_import): Defer fstat to caller. Combine two xmallocs into one. + (do_once): Use pragma_once_marker in include_hash_table. + (do_pragma): Re-implement to scan include_hash_table. + (do_include): Use new lookup_include and add_import. + +Sun Dec 17 06:45:43 1995 John F. Carr + + * configure (savesrcdir): Do not create paths with trailing "/.". + + * combine.c (try_combine): When checking for two sets of the same + register in a split insn, also test for setting a ZERO_EXTRACT, + STRICT_LOW_PART, or SUBREG. + +Sun Dec 17 06:37:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload.c (push_secondary_reload): Don't strip paradoxical SUBREG + if reload_class is CLASS_CANNOT_CHANGE_SIZE. + +Sat Dec 16 18:24:20 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_assignment): Fix alignment parm in emit_block_move. + +Sat Dec 16 18:16:08 1995 John Hassey (hassey@rtp.dg.com) + + * local-alloc.c (optimize_reg_copy_2): Don't attempt + optimization if destination register dies. + +Sat Dec 16 08:31:16 1995 Paul Eggert + + * fold-const.c (fold): Don't record overflow when negating + unsigned constants. + +Sat Dec 16 07:45:11 1995 Gran Uddeborg (uddeborg@carmen.se) + + * configure (i[3456]-*-isc, gas, stabs): Remove crt* from extra_files + +Sat Dec 16 07:03:33 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * stor-layout.c (layout_record): When PCC_BITFIELD_TYPE_MATTERS, + compute bitpos using field_size % type_align instead of field_size. + + * fixincludes (stdio.h): Fix return type of fread and fwrite + on sysV68. + +Sat Dec 16 06:57:14 1995 Thomas Lundqvist (d0thomas@dtek.chalmers.se) + + * function.c (fixup_var_refs_1): Fix two incorrect calls to single_set. + +Fri Dec 15 22:30:27 1995 Torbjorn Granlund + + * i386.h (REGISTER_MOVE_COST): Simplify. + +Fri Dec 15 22:30:27 1995 Stan Cox + + * i386.h (TARGET_CPU_DEFAULT*, PROCESSOR_*, + TARGET_{LEAVE,386_ALIGNMENT,PUSH_MEMORY,ZERO_EXTEND_WITH_AND, + DOUBLE_WITH_ADD,BIT_TEST}): New macros. + * i386.c (ix86_cpu*, ix86_isa*): New global variables. + (override_options): Add -mcpu and -misa support + * i386.md: Use TARGET* macros. + * i386/dgux.{c,h}: New files. + * m88k/t-dgux: (GCC_FOR_TARGET, T_CFLAGS): New macros. + * m88k/t-dguxbcs: New file. + * m88k/x-{dgux,dguxbcs}: (GCC_FOR_TARGET, X_CFLAGS): Removed. + +Fri Dec 15 18:41:50 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (sys/wait.h): Add forward declaration of struct rusage + on AIX 3.2.5. + +Fri Dec 15 18:39:36 1995 Marco S Hyman (marc@dumbcat.sf.ca.us) + + * xm-bsd386.h (DONT_DECLARE_SYS_SIGLIST): Defined. + +Fri Dec 15 18:36:42 1995 Gran Uddeborg (uddeborg@carmen.se) + + * i386/svr3dbx.h (DO_GLOBAL_DTORS_BODY): Delete; obsolete. + +Fri Dec 15 18:21:34 1995 Richard Kenner + + * i386/i386iscgas.h, i386/t-iscscodbx: Deleted; long dead. + +Fri Dec 15 10:01:27 1995 Stan Cox + + * configure (target_cpu_default) Set for 486/586/686 + (m88k-dg-dgux) Use t-dguxbcs instead of x-dguxbcs + (i*86*) Change [345] to [3456] + (i[3456]86-dg-dgux) Added + * Makefile.in (out_object_file) Add MAYBE_TARGET_DEFAULT + +Fri Dec 15 08:05:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (init_temp_slots): New function. + (init_function_start): Code moved to new function and called here. + * toplev.c (rest_of_compilation): Call init_temp_slots. + + * expmed.c (store_bit_field): Don't use insv for BLKmode value. + (store_split_bit_field): Set total_bits to BITS_PER_FOR for + BLKmode value. + +Fri Dec 15 06:35:36 1995 David Edelsohn + + * xcoffout.h (DBX_STATIC_BLOCK_END): Use macro arguments. + (xcoff_begin_function_line, xcoff_current_function_file): Remove + unused extern declarations. + (DBX_OUTPUT_MAIN_SOURCE_FILENAME): Use macro argument. + * xcoffout.c (xcoff_begin_function_line): Make static. + (xcoff_inlining): Likewise. + (xcoff_current_function_file): Likewise. + (xcoff_output_standard_types): Remove TARGET_64BIT dependencies from + int and unsigned int. + +Mon Oct 16 12:25:52 1995 Per Bothner + + * fix-header.c: Support different kinds of functions (ANSI and + Posix1). Enable ANSI proptotypes if __STRICT_ANSI__. + (namelist_end): Removed. + (std_include_table): Divide up functions into kinds. + (add_symbols): New function. + (read_scanfile, write_rbrac, main): Use new data structures. + +Thu Dec 14 19:17:12 1995 Torbjorn Granlund + + * rs6000.md (umulsidi3): New pattern. + +Thu Dec 14 18:08:59 1995 Torbjorn Granlund + + * expmed.c (expand_divmod, case TRUNC_DIV_EXPR): Only reject + larger-than-HOST_BITS_PER_WIDE_INT modes for general constants, + not for powers-of-2. + + * i960.md (andsi3): Match op2 with logic_operand, change constraints + accordingly. Output andnot for negative op2. + (iorsi3, xorsi3): Analogous changes. + * i960.c (logic_operand): New function. + (i960_print_operand): Handle code `C'. + * i960.h (PREDICATE_CODES): Add logic_operand. + (CONST_OK_FOR_LETTER_P): Handle `M'. + * i960.md: Move all plain logical patterns together. + * i960.h (SHIFT_COUNT_TRUNCATED): Define as 0 as appropriate. + + * clipper.md (untyped_call): New pattern. + + * m68k.md (ashrsi_31): New pattern. + +Thu Dec 14 17:22:14 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (output_move_double): Extract DFmode constants using + REAL_VALUE_TO_TARGET_DOUBLE. + +Thu Dec 14 15:05:13 1995 Doug Evans + + * Makefile.in (distclean): Delete float.h. + * configure: Set CROSS_FLOAT_H from float_format. + * config/float-i64.h: New file. + * config/float-i32.h: New file. + * config/float-vax.h: New file. + * arm/cross-float.h: Delete. + * arm/t-semi (CROSS_FLOAT_H): Delete. + +Wed Dec 13 19:16:57 1995 Mike Stump + + * expr.c (expand_expr, case ADDR_EXPR): Ensure op0 isn't QUEUED. + +Wed Dec 13 19:12:21 1995 Paul Eggert + + * gcc.c (my_strerror): Return "cannot access" if errno is 0. + (perror_with_name, pfatal_with_name, perror_exec): Don't assume that + the returned value from my_strerror contains no '%'s. + (sys_nerr): Declare only if HAVE_STRERROR is not defined. + +Wed Dec 13 19:05:47 1995 Alan Modra (alan@spri.levels.unisa.edu.au) + + * Makefile.in (c-parse.y, objc-parse.y): Add warning that file is + automatically generated. + +Wed Dec 13 15:40:30 1995 Mike Stump + + * function.c (identify_blocks): Start with chain of BLOCKs to match + rest of backend (dbxout.c), instead of just one BLOCK. + (reorder_blocks, all_blocks): Likewise. + + * stmt.c (find_loop_tree_blocks): Pass the toplevel list of + blocks, not just the first subblock. + +Wed Dec 13 16:11:18 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expmed.c (expand_divmod): Don't use TARGET if it's the wrong mode. + +Wed Dec 13 15:02:39 1995 Ian Lance Taylor + + * dbxout.c (struct typeinfo): Define. + (typevec): Change to be struct typeinfo *. Change other uses as + appropriate. + (struct dbx_file): Define if DBX_USE_BINCL. + (current_file): New static variable if DBX_USE_BINCL. + (next_file_number): Likewise. + (dbxout_init): If DBX_USE_BINCL, initialize new variables. + (dbxout_start_new_source_file): New function. + (dbxout_resume_previous_source_file): New function. + (dbxout_type_index): New function. + (dbxout_range_type): Use dbxout_type_index. + (dbxout_type): Likewise. If DBX_USE_BINCL, initialize new typevec + fields. + * c-lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols + == DBX_DEBUG, call dbxout_start_new_source_file and + dbxout_resume_previous_source_file when appropriate. + * sparc/sunos4.h (DBX_USE_BINCL): Define. + * svr4.h (DBX_USE_BINCL): Define. + +Wed Dec 13 06:52:40 1995 Michael Meissner + + * rs6000/win-nt.h (ASM_OUTPUT_EXTERNAL): Do not emit .extern for + builtin functions. + +Tue Dec 12 15:37:48 1995 David Edelsohn + + * rs6000.c: Replace many uses of fprintf with putc and fputs. + (output_function_profiler): Use more efficient mnemonics, target + dependent mnemonics, asm_fprintf, and reg_names array. + + * rs6000.h: Replace many uses of fprintf with putc and fputs. + + * rs6000.h (INT_TYPE_SIZE): Remove TARGET_64BIT dependency. + (MAX_INT_TYPE_SIZE): Delete. + +Tue Dec 12 13:58:57 1995 Doug Evans + + * t-h8300 (MULTILIB_{OPTIONS,DIRNAMES}): Add -mint32 support. + +Sun Dec 10 18:51:21 1995 Torbjorn Granlund + + * rs6000.md (matcher for neg:SI (geu:SI ..)): Get ppc syntax right. + +Sun Dec 10 08:47:16 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (simplify_if_then_else): Convert "a == b ? b : a" to "a". + + * expr.c (expand_expr, case CONSTRUCTOR): If TREE_READONLY, + set RTX_UNCHANGING_P in TARGET. + (expand_expr, case COMPONENT_REF): If result is BLKmode, + use that to access object too. + +Sun Dec 10 01:06:57 1995 Jeffrey A. Law + + * pa.md (millicode delay slot description): Remove reference + to defunct TARGET_MILLICODE_LONG_CALLS. + +Sat Dec 9 18:05:03 1995 Jim Wilson + + * expr.c (expand_expr, case INDIRECT_REF): Correct typo in May 8 + change. + + * sh.h (ADDRESS_COST): Define. + * sh.md (subsi3): Rename to subsi3_internal. Add new define_expand + to handle subtracting a register from a constant. + +Fri Dec 8 19:17:30 1995 Mike Meissner + + * rs6000.c (input_operand): Allow any integer constant, not + just integers that fit in 1 instruction. + +Fri Dec 8 10:45:07 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/lib1funcs.asm (RET, RETCOND): Define according to whether we + are compiling for 32 or 26 bit mode. + (all return instructions): Use RET or RETCOND as appropriate. + +Wed Dec 6 06:58:23 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (arm_gen_constant): New function. + (arm_split_constant): Split most of the functionality into + arm_gen_constant. Try to decide which way of handling the constant + is optimal for the target processor. + + * arm.c (arm_prgmode): New enum. + (target_{cpu,fpe}_name, arm_fast_multiply, arm_arch4): New variables. + (all_procs): New table describing processors and capabilities. + (arm_override_options): New function. + (arm_return_in_memory): New function. + (arm_rtx_costs): Adjust the multiply costs to cope with processors + with fast multiplication instructions. + (output_move_double): Use the ldm/stm variants more efficiently. + Delete cases that can no-longer occur. + (output_return_instruction, output_func_epilogue): Use TARGET_APCS_32, + not TARGET_6 for determining the type of return instruction to emit. + (final_prescan_insn case CALL_INSN): Use TARGET_APCS_32, not TARGET_6 + to determine condition preservation. + * arm.h (CPP_SPEC): Add defines for the cpu type, hard or soft floating + point, and the APCS PC size. + (TARGET_*): Restructure. + (ARM_FLAG_*): Many new definitions for different target options, not + all of which are supported yet. + (TARGET_SWITCHES): Use the ARM_FLAG_* definitions instead of explicit + numbers. + (prog_mode_type): New enum. + (floating_point_type): Split emulated floating point into FP_SOFT[23]. + (OVERRIDE_OPTIONS): Call arm_override_options. + (ARM_CPU_NAME): Default to NULL if not defined by a subtarget. + (BYTES_BIG_ENDIAN): Can now be set as a compilation option. + (RETURN_IN_MEMORY, DEFAULT_PCC_STRUCT_RETURN): New definitions. + (GO_IF_LEGITIMATE_OFFSET): Use different HImode offsets if compiling + for an architecture 4 target. The offsets for floating point + constants are the same as for integers if compiling TARGET_SOFT_FLOAT. + (GO_IF_LEGITIMATE_ADDRESS): Don't allow PRE_INC and POST_DEC if + the size is more than 4 bytes. Restrict the range offsets for DImode; + likewise for DFmode when TARGET_SOFT_FLOAT. + (LEGITIMIZE_ADDRESS): Use symbol_mentioned_p, not LEGITIMATE_CONSTANT_P + to determine if a constant address might be better in a register. + Handle DFmode addresses in the same way as DImode if TARGET_SOFT_FLOAT. + (LOAD_EXTEND_OP): If arm_arch4, then HImode also zero-extends. + * arm.md (attributes): Rearrange order, so that condition clobbering + can be automatically determined for call insns. + (attribute cpu): Add new cpu ARM7. + (attribute type): Add new type MULT. + (attribute prog_mode): New attribute. + (attribute conds): Clobbering of call insns can now be determined + using prog_mode attribute. + (function units "write_buf", "write_blockage"): Model the write buffer + as two function units, so that conflicts are avoided more often. + (funcion unit "core"): New function unit, so that elapsed cycles can + be more accurately determined. + (all anonymous patterns): Add names. + (mulsidi3, umulsidi3): New patterns available with fast multiply + variants. + (all call insns): The conds attribute is now determined automatically. + (zero_extendhisi): Expand for architecture 4 variants if appropriate. + (*zero_extendhisi_insn): New pattern. + (extendqi{hi,si}, extendhisi): Expand for architecture 4 variants if + appropriate. + (*extendhisi_insn, *extendqihi, *extendqisi): New patterns. + (storehi_single_op): New expand. + (movhi): Handle architecture 4 expansion. + (*movhi_insn_arch4): New pattern. + (*movhi_*): Adjust applicability conditions to handle architecture 4. + (reload_outdf): Handle pre/post inc/dec reloads. + (tablejump): Delete. + (matcher for optimized tablejump): delete. + (casesi): New expand. + (casesi_internal): New pattern. + * semi.h (EXIT_BODY): Delete. + (TARGET_DEFAULT): Set to ARM_FLAG_APCS_32. + (CPP_SPEC): Define. + arm/cross-float.h: New file, used when building a cross-compiler. + * t-semi: Don't define inhibit_libc when building libgcc2.a. + (CROSS_FLOAT_H): Define. + + * arm.c ({symbol,label}_mentioned_p): New functions. + (add_constant, dump_table, fixit, find_barrier, broken_move): New + support functions for handling constant spilling. + (arm_reorg): New constant spilling pass, for putting unhandlable + constants into the rtl where we can load them efficiently. + (output_load_symbol): Delete. + * arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): No need to handle floating + point constants any more, since arm_reorg will deal with them. + (LEGITIMATE_CONSTANT_P): Is now anything that doesn't contain a + LABEL. + (GO_IF_LEGITIMATE_ADDRESS): Recognize address expressions generated + by arm_reorg, but only after reload has completed. + (MACHINE_DEPENDENT_REORG): Define. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY): There should be nothing left in + the pool, even if it might look like it. + * arm.md (*movsi_insn): Much simpified now that constants are handled + properly. + (movaddr): New expand. + (movsf, movdf): No need to force constants into the pool any more. + (*movdf_hard_insn): Much simplified. + (consttable_4, consttable_8, consttable_end, align_4): New patterns + for supporting embedded constants. + + * configure: New target arm-semi-aof. + * arm.c (strings_fpa): Use a form which is common to both GAS and + ARMASM. + (output_return_instruction, output_func_epilogue): Call + assemble_external_libcall, before trying to generate an abort call + in the assembler. + (arm_asm_output_label): Call ARM_OUTPUT_LABEL, rather than assuming + that labels are followed by a colon. + (aof_text_section, aof_add_import, aof_delete_import, + aof_dump_imports): New functions to support ARMASM assembler + generation. + * arm/aout.h: New file. + * arm/aof.h: New file. + * arm.h (most assembler-specific defines): Move to arm/aout.h. + (CONSTANT_ADDRESS_P): Can't directly access constant strings when + generating assembler for ARMASM. + (ENCODE_SECTION_INFO): Don't define if generating ARMASM assembler. + (ASM_OUTPUT_INTERNAL_LABEL): Generalize, so that it can be used + with all targeted assemblers. + (ASM_OUTPUT_LABEL): Call arm_asm_output_label. + * riscix.h: Include arm/aout.h, not arm/arm.h. + * riscix1-1.h: Likewise. + * semi.h: Likewise. + * arm/semiaof.h: New file. + * arm/t-semiaof: New file. + +Mon Dec 4 22:17:37 1995 Jason Merrill + + * gcc.c (LIBGCC_SPEC): Do link with libgcc when -shared. + * alpha.h (LIBGCC_SPEC): Remove. + * linux.h (LIBGCC_SPEC): Remove. + * svr4.h (LIBGCC_SPEC): Remove. + * i386/t-crtpic (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * t-pa (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * sparc/t-sunos41 (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * sparc/t-sol2 (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * configure (i386-linux): Use i386/t-crtpic. + + * i386/xm-sco.h: #define NO_SYS_SIGLIST. + +Mon Dec 4 21:30:37 1995 Jim Wilson + + * sh.c (shiftcosts): For SH3, max cost of arithmetic right shift is 3. + (expand_ashiftrt): For SH3, if shift cost is more than 3, then + call gen_ashrsi3_d to use shad instruction. + +Mon Dec 4 18:29:08 1995 Jason Merrill + + * c-decl.c (finish_struct): Don't mess with the type of bitfields. + +Mon Dec 4 15:28:02 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_constructor, record): If field is READONLY, + set RTX_UNCHANGING_P in TO_RTX. + +Mon Dec 4 12:59:33 1995 Ian Lance Taylor + + * sparc/t-sol2 (CRTSTUFF_T_CFLAGS): Use -fPIC unconditionally. + +Sun Dec 3 20:55:43 1995 Jeffrey A. Law + + * pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Handle arbitrary sections. + (ASM_OUTPUT_SECTION_NAME): Define. + +Sat Dec 2 22:19:16 1995 Jeffrey A. Law (law@cygnus.com) + + * pa.h: Replace many uses of fprintf with fputs. + * pa.c: Likewise. + * pa-pro.h: Likewise. + + * pa.h (SECONDARY_RELOAD_CLASS): Don't call secondary_reload_class + to handle trivial cases. + * pa.c (secondary_reload_class): Rework to be more efficient. + +Sat Dec 2 07:52:46 1995 Michael Meissner + + * rs6000.md (movsi): Don't split large constants in the + movsi pattern, let the define_split split it later as needed. + +Fri Dec 1 16:00:42 1995 Brendan Kehoe + + * sparc.c (output_double_int): Handle CODE_LABEL's if v9. + +Fri Dec 1 09:13:23 1995 Michael Meissner + + * m68k.md (decrement_and_branch_until_zero): Split into a + define_expand and an anonymous define_insn. + * fx80.md (decrement_and_branch_until_zero): Ditto. + * m88k.md (decrement_and_branch_until_zero): Ditto. + +Thu Nov 30 15:02:16 1995 Jim Wilson + + * sh.c (noncall_uses_reg): New function. + (machine_dependent_reorg): Add support for TARGET_RELAX. + (final_prescan_insn): Likewise. + * sh.h (ASM_SPEC, LINK_SPEC): Pass on -mrelax. + (RELAX_BIT, TARGET_RELAX): New macros. + (TARGET_SWITCHES): Add -mrelax. + + * sh.c (insn-attr.h): Include. + (pragma_nosave_low_regs): New global variable. + (calc_live_regs): If SH3 and pragma_nosave_low_regs, then don't + save registers r0 through r7 for interrupt functions. + (function_epilogue): Clear pragma_nosave_low_regs. + (handle_pragma): Set pragma_nosave_low_regs if see pragma for it. + + * sh.h (FUNCTION_PROFILER): Use trap #33 instead of trap #5. + Put additional .align before trapa instruction. + +Thu Nov 30 14:45:13 1995 Doug Evans + + * sparc.md (seqdi_special_trunc, snedi_special_trunc, + seqsi_special_extend, snesi_special_extend): Delete uses of SUBREG. + Make compare modes match modes of operands. + (snesi_zero_extend, snedi_zero_trunc_sp32, snedi_zero_trunc_sp64, + seqsi_zero_extend, seqdi_zero_trunc_sp32, seqdi_zero_trunc_sp64): + New patterns. + +Thu Nov 30 12:27:22 1995 Michael Meissner + + * genmultilib: Take a 4th argument that says are the exceptions to + the multilibs, so illegal combinations can be eliminated. + + * Makefile.in (multilib.h): Pass $(MULILIB_EXCEPTIONS) as the 4th + argument to genmultilib. + + * configure (powerpc*): Remove little endian and eabiaix versions + of the t-* files. Accept powerpc{,le}-*-sysv in addition to + *-sysv4. + (powerpc{,le}-*-eabisim): Use standard t-eabigas instead of + t-eabisim. + (powerpcle-*-{winnt3,pe}): Add support for Windows NT on PowerPC. + * rs6000/t-{eabiaix,eabisim,eabilegas,ppclegas}: Delete. + + * rs6000/{t-winnt,win-nt.h}: New files for PowerPC Windows NT. + + * ginclude/ppc-asm.h: New file to provide common macros for the + various PowerPC calling sequences. + * rs6000/eabi.asm: Use ppc-asm.h. + + * rs6000/aix3newas.h (CPP_SPEC): Add support for -mcpu=603e, 602, + and 620. + * rs6000/{aix41,powerpc,rs6000,eabi{aix,le}}.h (CPP_SPEC): Ditto. + * rs6000/sysv4{,le}.h (CPP_SPEC): Ditto. + + * rs6000/aix3newas.h (LINK_SPEC): If cross compiling, don't use + absolute paths. + * rs6000/{aix41,aixppc,rs6000}.h (LINK_SPEC): Ditto. + + * rs6000/eabi.h (INVOKE__main): Don't define any more. + (ASM_OUTPUT_INT): Move to sysv4.h. + ({STARTFILE,LIB}_SPEC): If -msim or -mmvme add the appropriate + libraries. + + * rs6000/{eabiaix,eabile,sysv4{,le}}.h (CPP_SPEC): Add support for + -mcall-{aixdesc,nt} directives. + (MULTILIB_DEFAULTS): Define. + + * rs6000/eabi{,le}sim.h (TARGET_DEFAULT, CPP_SPEC): No longer + define, simulator supports floating point. + ({STARTFILE,LIB}_SPEC): If -mvme, use mvme libraries, not + simulator libraries. + + * rs6000/{mach,netware}.h (TARGET_AIX): Define as 0. + + * rs6000/netware.h (RS6000_OUTPUT_BASENAME): Don't redefine + anymore. + (STRIP_NAME_ENCODING): Undef. + + * rs6000.c (rs6000_save_toc_p, rs6000_abi): New globals. + (rs6000_override_options): Add 602, 603e, and 620 support. + (count_register_operand): New function to return true if operand + is the count register. + (easy_fp_constant): All constants are easy if -msoft-float. + (volatile_mem_operand): New function to return true if operand is + in volatile memory. + ({fp_,}reg_or_mem_operand): Call volatile_mem_operand. + (input_operand): Allow support for Windows NT loading SYMBOL_REFs + and LABEL_REFs from the TOC. + (function_arg_boundary): On Windows NT, any argument >= 8 bytes + must be double word aligned. + (function_arg{_advance,}): Call function_arg_boundary to determine + if we need to align to an odd register for large arguments. + Changes to accomidate new method of determining which ABI we're + adhering to. + (expand_block_move_mem): Copy RTX_UNCHANGING_P, and if + MEM_UNALIGNED_P is defined, copy that too. + (expand_block_move): Copy dest/src to registers using + copy_addr_to_reg. + (print_operand): Changes to accomidate Windows NT. + (first_reg_to_save): Ditto. + (rs6000_stack_info): Ditto. + (debug_stack_info): Ditto. + (output_{prolog,epilog,toc,function_profiler}): Ditto. + (rs6000_stack_info): Save main's arguments around __eabi call. + (svr4_traceback): Delete, current V.4 ABI no longer wants + tracebacks in this format. + (output_prolog): Call __eabi here, saving and restoring main's + args if needed. Save the toc pointer if needed. + (get_issue_rate): New function to return # of instructions a + machine can issue at once. + (rs6000_sync_trampoline): Emit instructions to synchronize the + PowerPC caches after a trampoline. + (rs6000_trampoline_{template,size}): New functions to provide + common trampoline support for all ABI's. + (rs6000_initialize_trampoline): Ditto. + + * rs6000.h (TARGET_{WINDOWS_NT,AIX,MACOS}): Define. + (processor_type): Add 602. + (PROCESSOR_COMMON): Assume current processor is a 604, not a 601. + (SUBTARGET_OPTIONS): Define if not defined. + (TARGET_OPTIONS): Include SUBTARGET_OPTIONS. + (COUNT_REGISTER_REGNUM): Define as 66. + (EXTRA_CONTRAINT): Add 'S' and 'T' for Windows NT. + (rs6000_abi): Add ABI_AIX_NODESC, ABI_NT. + (DEFAULT_ABI): Define if not defined. + (rs6000_stack): Add fields for Windows NT support. + (RS6000_SAVE_TOC): Add for Windows NT support. + (FUNCTION_ARG_BOUNDARY): Call function_arg_boundary. + (trampoline macros): Call trampoline functions in rs6000.c. + (RETURN_ADDRESS_OFFSET): Add Windows NT support. + (toc_section): Skip leading '*'. + (PREDICATE_CODES): Add volatile_mem_operand, + count_register_operand. + (MACHINE_issue_rate): Define. + (function decls): Add new function decls from rs6000.c. + + * rs6000.md (cpu attribute): Add 602. + (function units): Update to match reality better. + (calls through pointer): Rework to support Windows NT. + (movsi): Add Windows NT support. + (movstrsi): Remove match_operand predicates, since + expand_block_move does the checking. + (sync_isync): Delete. + (icbi, dcbst, sync, isync): New insns to generate named instruction + for making trampolines on eabi/V.4 properly flush the caches. + (decrement_and_branch_on_count): Rename from + decrement_and_branchsi. Add update of count in insn pattern. + + * rs6000/sysv4.h (TARGET_SWITCHES): Drop -mtraceback. Keep + -mno-traceback but don't do anything with it. Add + -mcalls-{nt,aixdesc}. Add -m{,no-}relocatable-lib. Add -msim, + -mmvme, and -memb. + (TARGET_TOC): Update for use with -mcalls-{nt,aixdesc}. + (SUBTARGET_OVERRIDE_OPTIONS): Update for new switches. + (RS6000_OUTPUT_BASENAME): Delete. + (toc_section): Add support for -mcall-{nt,aixdesc}. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Ditto. + (ASM_DECLARE_FUNCTION_NAME): Use STRIP_NAME_ENCODING instead of + RS6000_OUTPUT_BASENAME. For -mcall-{nt,aixdesc} emit the proper + function descriptor. + (ASM_SPEC): Pass appropriate -mxxx switches to the assembler based + on the -mcpu=xxx options. + (ASM_OUTPUT_INT): Move here from eabi.h. + (ENCODE_SECTION_INFO): If -mcall-{nt,aixdesc} add approriate magic + so function name has two or one leading periods. + (ASM_OUTPUT_SOURCE_LINE): Delete, use version in svr4.h. + (trampoline macros): Call trampoline functions in rs6000.c. + + * t-{eabi,ppc}{,gas} (EXTRA_HEADERS): Add ginclude/ppc-asm.h. + (LIB2FUNCS_EXTRA): Depend on eabi.S, not eabi.s. + (eabi.S): Rename from eabi.asm. + + * t-{eabi,ppc}gas (MULTILIB_*): Add -mcall-aixdesc libraries, but + don't build either little endian or -mrelocatable versions of + those libraries. + +Tue Nov 28 00:10:27 1995 David Edelsohn + + * rs6000.md (divsi3): Reorder so common mode does not negate + power-of-2 shift optimization. + +Wed Nov 29 22:06:11 1995 J.T. Conklin + + * configure (sparc-*-solaris2*): Add gcrt1.o to extra_parts. + * sparc/sol2.h (STARTFILE_SPEC): Link with gcrt1.o with -pg. + * sparc/sol2-g1.asm: New file, startup code for profiled + executables. + * sparc/t-sol2: Add make rule for gcrt1.o. + * sparc/gmon-sol2.c (_mcleanup): Add support for PROFDIR + environment variable. + +Wed Nov 29 21:41:13 1995 Ian Lance Taylor + + * mips/abi64.h (CPP_SPEC): If -msingle-float and not + -msoft-float, pass -D__mips_single_float. Likewise for -m4650 and + not -msoft-float. + * mips/dec-bsd.h (CPP_SPEC): Likewise. + * mips/dec-osf1.h (CPP_SPEC): Likewise. + * mips/elf64.h (CPP_SPEC): Likewise. + * mips/iris3.h (CPP_SPEC): Likewise. + * mips/iris5.h (CPP_SPEC): Likewise. + * mips/mips.h (CPP_SPEC): Likewise. + * mips/netbsd.h (CPP_SPEC): Likewise. + * mips/osfrose.h (CPP_SPEC): Likewise. + * mips/t-ecoff (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, + MULTILIB_MATCHES): Add -msingle-float support. + +Wed Nov 29 17:57:48 1995 Doug Evans + + * toplev.c (main): Invoke OPTIMIZATION_OPTIONS after target_flags + has been initialized so sets of target_flags aren't clobbered. + + * cccp.c (do_include): Recognize c:\foo as absolute path name in DOS. + + * svr4.h (MD_EXEC_PREFIX): Don't use if cross compiling. + (MD_STARTFILE_PREFIX): Likewise. + (LINK_SPEC): Don't use absolute path names if cross compiling. + * svr3.h (LIB_SPEC): Likewise. + + * gcc.c (do_spec_1): Fix typos in version calculation. + +Wed Nov 29 14:06:13 1995 Jim Wilson + + * sh.md (ashrsi3_d): Use %0 not %1 in output pattern. + + * svr4.h (MAX_OFILE_ALIGNMENT): Define. + + * mips/iris5.h (WORD_SWITCH_TAKES_ARG): Define. + (LINK_SPEC): Add rpath. + * mips/iris6.h (LINK_SPEC): Likewise. + + * stupid.c (stupid_mark_regs): For hard registers, use regno+j + instead of just regno in MARK_LIVE_AFTER and SET_HARD_REG_BIT calls. + + * c-common.c (combine_strings): Add support for WCHAR_TYPE as short. + +Wed Nov 29 13:59:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * c-decl.c (duplicate_decls): Add new paramter different_binding_level. + Lots of changes to use new new parameter. + (pushdecl): Delete variable declared_global. New variable + different_binding_level and code to set it. Move extern/static + warning before duplicate_decls call. Don't let global typedefs + conflict with nested extern declarations. Move oldglobal test + inside code for setting IDENTIFIER_LIMBO_VALUE. + (lookup_name_current_level_global): Delete. + * c-tree.h (merge_attributes): New declaration. + * c-typeck.c (merge_attributes): New function. Move code from + common_type to here. + (common_type): Call merge_attributes instead of having inline code. + * integrate.c (integrate_decl_tree): Delete variable newd. + Always set DECL_ABSTRACT_ORIGIN before calling pushdecl. + +Tue Nov 28 21:57:04 1995 Jim Wilson + + * mips.c (mips_function_value): Add check for i > 0 when deciding + if structure should be return in FP registers. + +Tue Nov 28 12:47:52 1995 Jeffrey A. Law + + * pa.md (define split for (plus (reg) (large_constant)): Try + another way to handle this with only 2 insns. From Tege. + +Mon Nov 27 02:05:18 1995 Jeffrey A. Law + + * lib1funcs.asm, pa-pro.h, t-pro.h, xm-papro.h: New PA + target files. + * configure (hppa*-*-pro*): Use new target files. + + * toplev.c (rest_of_compilation): Always call jump_optimize + at least once. + + * pa.h (ASM_OUTPUT_EXTERNAL): Don't let assemble_name clobber + the value of TREE_SYMBOL_REFERENCED. + + * pa-ghpux9.h (LINK_SPEC): Pass "-z" to the linker to enable + trap on null pointer dereference for programs built on hpux9. + * pa-hpux9.h, pa1-ghpux9.h, pa1-hpux9.h: Likewise. + + * pa.c (output_function_prologue): No longer need to keep + track of the total number code bytes when TARGET_GAS && + not TARGET_PORTABLE_RUNTIME. + * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Use .NSUBSPA when + not TARGET_PORTABLE_RUNTIME. + (ASM_OUTPUT_FUNCTION_PREFIX): Define. Prefix functions with + .NSUBSPA when TARGET_GAS and not TARGET_PORTABLE_RUNTIME. + + * pa.md (symbolic high patterns): Use 'H' to print the symbolic + address so that the constant part gets rounded. + * pa.c (print_operand): Handle 'H' operand for high part of a + symbolic address with a rounded constant. + (output_global_address): New argument "rounded_constant". All + callers changed appropriately. + + * x-pa-hpux (FIXPROTO_DEFINES): Add -D_HPUX_SOURCE. + + * pa.h (CPP_SPEC): Only pass -D_HPUX_SOURCE and -D_HIUX_SOURCE if + -ansi is not present. + (CPP_PREDEFINES): Remove -D_HPUX_SOURCE and/or -D_HIUX_SOURCE. + * pa-ghiux.h (CPP_PREDEFINES): Likewise. + * pa-gux7.h (CPP_PREDEFINES): Likewise. + * pa-hiux.h (CPP_PREDEFINES): Likewise. + * pa-hpux.h (CPP_PREDEFINES): Likewise. + * pa-hpux7.h (CPP_PREDEFINES): Likewise. + * pa1-ghiux.h (CPP_PREDEFINES): Likewise. + * pa1-hiux.h (CPP_PREDEFINES): Likewise. + + * pa-hpux.h (LINK_SPEC): If -mlinker-opt, then pass -O to the + linker. + * pa-ghpux.h, pa-hpux9.h, pa-ghpux9.h: Likewise. + * pa1-ghpux9.h, pa1-hpux9.h: Likewise. + * pa.h (LINK_SPEC): Likewise. + (TARGET_SWITCHES): Add -mlinker-opt. + + * pa.md (all peepholes): Disable if TARGET_SOFT_FLOAT. + + * pa.c (pa_reorg): If TARGET_GAS, then emit insns to mark + the beginning and end of the branch table. + * pa.md (begin_brtab): New insn. Just a marker so GCC knows + where to put the .begin_brtab pseudo-op. + (end_brtab): Similarly. + + * pa.h (EXTRA_SECTIONS): Add in_ctors and in_dtors if + CTORS_SECTION_FUNCTION is defined. Else define dummy + versions of CTORS_SECTION_FUNCTION and DTORS_SECTION_FUNCTION. + (EXTRA_SECTION_FUNCTIONS): Add CTORS_SECTION_FUNCTION and + DTORS_SECTION_FUNCTION. + + * pa.md: Add peepholes to improve spill code generated + by reload when we run out of FP registers. + + * xm-pa.h: Remove spurious double-quote. + + * pa.md (call expanders): For indirect calls, load %r22 with the + function's address. + (indirect call patterns): No need to copy the call address into + %r22 anymore. + + * pa.c (output_cbranch): Fix buglet in length handling of + backwards branches with unfilled delay slots. + (output_bb, output_bvb, output_dbra, output_movb): Likewise. + + * pa.md: Fix off-by-one error in length computations for all + conditional branch patterns. + + * pa.h (output_bvb): Declare. + * pa.c (output_bvb): New function to output branch on variable + bit insns. + * pa.md (branch-on-variable-bit): New patterns. + + * pa.h (TARGET_MILLICODE_LONG_CALLS): Delete swtich and all + references. + (output_millicode_call): Declare new function + * pa.md (millicode calls): Update length computation to handle + variable length millicode calls. + (call pattners): Likewise. + (indirect call patterns): Update length compuations and output + templates to handle variable length millicode calls. + (plabel_dereference): Likewise. + * pa.c (override_options): Give warnings when incompatable + options are used. + (output_mul_insn): Call output_millicode_call instead of + output_call, eliminate last argument to output_millicode_call. + (output_div_insn): Likewise. + (output_mod_insn): Likewise. + (output_call): Rewrite long call code to handle variable length + millicode calls. Eliminate support for calling mul, div and mod + millicode routines. + (output_millicode_call): New function for calling mul, div and mod + millicode routines. + + * pa.md (abssi2): New pattern. + + * pa.c (secondary_reload_class): Loads from reg+d addresses into + FP registers don't need secondary reloads. + * pa.h: Delete soem #if 0 code. Update some comments. + (EXTRA_CONSTRAINT, case 'Q'): Only accept valid memory addresses. + + * pa.h (RTX_COSTS): Tege's rewrite. + + * pa.c (hppa_legitimize_address): Generate unscaled indexed + addressing for (plus (symbol_ref) (reg)). + (emit_move_sequence): Set REGNO_POINTER_FLAG appropriately + to encourage unscaled indexing modes. + (basereg_operand): New function for unscaled index address support. + * pa.md (unscaled indexing patterns): New patterns for unscaled + index address support. + + * pa.h (MOVE_RATIO): Define. + * pa.md (movstrsi expander): Refine tests for when to use the + library routine instead of an inlined loop copy. Provide an + additional scratch register for use in the inlined loop copy. + (movstrsi_internal): Name the pattern for ease of use. Add + additional scratch register. + * pa.c (output_block_move): Greatly simplify. Use 2X unrolled + copy loops to improve performance. + (compute_movstrsi_length): Corresponding changes. + + * pa.c (print_operand): Handle 'y' case for reversed FP + comparisons. Delete some #if 0 code. Fix various comment typos. + * pa.md (fcmp patterns): Try and reverse the comparison to avoid + useless add,tr insns. + +Sun Nov 26 14:47:42 1995 Richard Kenner + + * Version 2.7.2 released. + + * function.c (fixup_var_refs_1): Make pseudo for DEST + in PROMOTED_MODE unless in a SUBREG. + + * cse.c (insert): Don't put a REG into qty_const. + + * msdos/top.sed: Change version to 2.7.2. + * winnt/config-nt.sed: Likewise. + +Sun Nov 26 14:41:49 1995 Douglas Rupp (drupp@cs.washington.edu) + + * Makefile.in (stamp-objlist): Change .o to $objext. + + * alpha/win-nt.h (CPP_PREDEFINES): Set __unaligned and __stdcall + to null. + (ASM_SPEC): Add a translation for -g to -Zi. + * winnt/ld.c (main): Don't pass -g to link. + * winnt/oldnames.c: Reformat and add some new functions for gnat1. + * winnt/win-nt.h (LINK_SPEC): Pass -g to ld.exe. + Increase default stack size. + * configure ({alpha-dec,i386-ibm}-winnt3.5): Add oldnames.o + to extra_objs. + * libgcc2.c (trampoline): Add getpagesize and mprotect for WINNT. + +Sun Nov 26 14:25:26 1995 Uwe Seimet (seimet@chemie.uni-kl.de) + + * atari.h (FUNCTION_VALUE): Deleted; incorrect. + +Sun Nov 26 14:23:03 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (curses.h): Allow space or tab after bool keyword, + instead of tab or tab. + +Sun Nov 26 14:14:11 1995 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (pattern for HImode PSHM): Corrected. + (trunchiqi2, zero_extendqihi2, extendhftqf2): Corrected. + (pattern for movhi of CONST_INT to REG): Corrected. + (divmodqi pattern for DISN): Corrected. + (all shift patterns): Corrected. + + * 1750a.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Corrected. + (ASM_OUTPUT_[datatype]): Corrected datalbl[].size computation + for output of arrays. + +Sun Nov 26 14:08:57 1995 Dave Love + + * mips/iris5.h (NO_IMPLICIT_EXTERN_C): Define this again so + that unistd.h doesn't get badly `fixed' for C++. libg++ will now + build with this definition. + +Sun Nov 26 14:02:43 1995 Robert E. Brown (brown@grettir.bibliotech.com) + + * configure: Better workaround for Nextstep bug. + +Sun Nov 26 13:55:07 1995 Torbjorn Granlund + + * rs6000.md (load_multiple matcher): Fix typo in opcode. + +Sun Nov 26 13:51:08 1995 Lee Iverson + + * final.c (final_start_function): Move call to sdbout_begin_function + back to final_scan_insn on MIPS systems so parameter descriptions are + recognized. + +Sun Nov 26 13:43:06 1995 DJ Delorie (dj@delorie.com) + + * msdos/top.sed: Don't insert "go32". + +Sun Nov 26 12:08:23 1995 Jim Wilson + + * combine.c (nonzero_bits, case REG): Put POINTERS_EXTEND_UNSIGNED + code before stack pointer code. Return nonzero at end of stack + pointer code. + + * sparc.h (PRINT_OPERAND_ADDRESS): Handle CONST inside PLUS. + + * Makefile.in (cppalloc.o): Add a rule to build it. + + * alpha.c (alpha_emit_set_const): Don't output SImode sequences + that rely on invisible overflow. Sign extend new when SImode. + Don't recur if new == c. Don't allow shift outside mode. Make + logical right shift be unsigned. + +Sun Nov 26 11:37:50 1995 Arne H. Juul (arnej@idt.unit.no) + + * Makefile.in (compare*): Add "|| true" to avoid spurious + failure messages from some versions of make. + +Sun Nov 26 11:20:09 1995 Dmitry K. Butskoy (buc@stu.spb.su) + + * expr.c (truthvalue_conversion): Add declaration. + +Sun Nov 12 18:09:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Version 2.7.1 released. + + * function.c (put_reg_into_stack): New arg volatile_p. + (put_var_into_stack): Call with new arg. + +Sat Nov 11 08:25:34 1995 Jim Wilson + + * reload.c (output.h): Include it. + * Makefile.in (reload.o): Add dependence on output.h. + +Thu Nov 9 11:24:20 1995 Jim Wilson + + * mips.h (HARD_REGNO_NREGS): If FP_REG_P, always use UNITS_PER_FPREG + to calculate number of words needed. + +Thu Nov 9 11:04:50 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.md (cmphf): Addd Base Reg with Offset address mode (LB,STB,..) + (movqi,movhi,movhf,addqi3,addhf3,subqi3,subhf3,mulqihi3): Likewise. + (mulhf3,divhf3,andqi3,iorqi3): Likewise. + (define_peephole): Remove the Base mode peepholes. Replace the + special addqi define_insn for "LIM Ra,sym,Rb" by a define_peephole. + (ashlqi3): Took out futile 0th alternative. + (lshrqi3, lshrhi3, ashrqi3, ahsrhi3): Correct case of non-constant + shift count. + + * 1750a.h (REG_ALLOC_ORDER): Define. + (REGNO_OK_FOR_BASE_P): Include stack pointer in test against + reg_renumber[REGNO]. + (ASM_OUTPUT_DESTRUCTOR): Remove bogus assembler comment. + +Thu Nov 9 11:01:33 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case ARRAY_REF): Properly convert types + of index, size, and multiplication. + +Wed Nov 8 09:00:22 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (mov*cc_{,soft_}insn): Use match_operator to test the + comparison and check that the condition code register is used. + +Wed Nov 8 08:49:35 1995 Michael Meissner + + * rs6000/sysv4.h (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Undef before + including svr4.h. + +Tue Nov 7 10:58:12 1995 Torbjorn Granlund + + * m68k.md (subxf3): Properly name pattern. + +Tue Nov 7 10:53:09 1995 Michael Meissner + + * libgcc2.c (__{C,D}TOR_LIST): For AIX, initialize these arrays to + 0,0, just like NeXT to avoid a warning message from the AIX 4.1 + linker. + +Tue Nov 7 09:58:34 1995 John F. Carr + + * cppexp.c (cpp_lex): Correctly parse character constants. + +Tue Nov 7 09:52:15 1995 Jason Merrill + + * rs6000.h (ASM_OUTPUT_{DES,CONS}TRUCTOR): Define. + +Mon Nov 6 10:27:15 1995 Doug Evans + + * combine.c (force_to_mode): Fix typo. + +Sun Nov 5 18:37:02 1995 Torbjorn Granlund + + * m68k.md (cmpxf): Don't call force_const_mem, it looses for PIC; + get predicates right instead. Get rid of separate DEFINE_EXPAND. + (addxf3, subxf3, mulxf3, divxf3): Likewise. + (All XFmode patterns): Delete `F' and `G' constraints. + (absxf2, negxf2): Delete spurious condition on TARGET_FPA. + +Sun Nov 5 11:05:44 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (malloc.h): Fix return type of {m,re}alloc. + +Sun Nov 5 11:02:26 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * cse.c (invalidate): For a pseudo register, do a loop to + invalidate all table entries, irrespective of mode. + +Sun Nov 5 10:57:43 1995 Richard Kenner + + * combine.c (force_to_mode): Put in last change properly. + +Sun Nov 5 10:53:49 1995 Jeffrey A Law (law@cygnus.com) + + * pa.h (CONDITIONAL_REGISTER_USAGE): Make sure FP regs + get disabled regardless of PA1.0 vs PA1.1 code generation + when TARGET_SOFT_FLOAT or TARGET_DISABLE_FPREGS is on. + +Sun Nov 5 10:49:43 1995 Doug Evans + + * i960.c (emit_move_sequence): Add a scratch register to + multi-reg stores. + (i960_output_move_{double,quad}): New functions. + (i960_print_operand): Handle new operand types E, F. + * i960.md (movdi matchers): Rewrite. + (store_unaligned_di_reg): New pattern. + (movti matchers): Rewrite. + (store_unaligned_ti_reg): New pattern. + +Sun Nov 5 10:45:24 1995 Ian Lance Taylor (ian@cygnus.com) + + * mips.h (MULTILIB_DEFAULTS): Define. + * mips/elf64.h, mips/iris6.h (MULTILIB_DEFAULTS): Define. + +Sun Nov 5 10:41:48 1995 Jim Wilson + + * reload.c (push_reload): Delete abort for RELOAD_OTHER case added + in last change. + * reload1.c (emit_reload_insns): For RELOAD_OTHER output reloads, + output the reload insns in descending order of reloads. + + * sh.md (mulsidi3-1, mulsidi3, umulsidi3-1, umulsidi3): Enable. + (smulsi3_highpart-1, smulsi3_highpart): New patterns. + (umulsi3_highpart-1, umulsi3_highpart): Likewise. + (movdi-1): Add r/x constraint. + * t-sh (MULTILIB_OPTIONS): Add m2. + (MULTILIB_DIRNAMES): Add m2. + (MULTILIB_MATCHES): Define. + + * sparc.h (RTX_COSTS, case MULT): Check for TARGET_SPARCLITE. + + * abi64.h, elf64.h (CPP_SPEC): Add -EB and -EL support. + +Sat Nov 4 10:36:26 1995 Jim Wilson + + * sh.md (casesi_worker): Change constraint from = to +. + + * svr4.h (ASM_IDENTIFY_GCC_AFTER_SOURCE): Delete. + (ASM_IDENTIFY_GCC): Output stab here. + +Sat Nov 4 10:32:37 1995 John Carr + + * cpplib.c (finclude): Set current input pointer when input + is not a regular file. + + * cppmain.c: Define progname, required by cpplib. + +Sun Oct 29 07:48:36 1995 Michael Meissner + + * xcoffout.h (DBX_FINISH_SYMBOL): Deal with names created via + the __asm__ construct that start with a leading '*'. + * xcoffout.c (xcoff_declare_function): Likewise. + +Sun Oct 29 07:45:41 1995 Jim Wilson + + * stupid.c (stupid_mark_refs): Handle SUBREG of pseudo-reg in a + SET_DEST same as we handle a pseudo-reg in a SET_DEST. + +Sun Oct 29 07:43:15 1995 Pat Rankin + + * libgcc2.c (L_eh: __unwind_function): Implement for VAX. + * vax.h (RETURN_ADDRESS_OFFSET, RETURN_ADDR_RTX): Define. + +Sun Oct 29 12:39:08 1995 Richard Kenner a + + * i386/sol2.h (CPP_PREDEFINES): Add -D__SVR4. + +Sun Oct 29 07:14:36 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * reload.c (find_equiv_reg): Check for nonsaving setjmp. + +Fri Oct 27 15:15:56 1995 Jim Wilson + + * Makefile.in (out_object_file): Depend on TREE_H. + +Fri Oct 27 06:42:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (call_operand): Only allow reg 27 on NT too. + * alpha.md (call_value_nt, call_nt): Force non-SYMBOL_REF + into reg 27, just like for OSF. + + * rs6000.c (struct asm_option): Changed from struct option. + (expand_block_move_mem): Remove erroneously-added line. + + * expr.c (clear_storage): SIZE is now rtx, not int. + (store_constructor): Call clear_storage with rtx. + (get_inner_reference): Convert index to precision of + sizetype, not POINTER_SIZE. + (expand_expr, case ARRAY_REF): Likewise. + * expr.h (clear_storage): Second arg is rtx, not int. + +Fri Oct 27 05:45:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * combine.c (force_to_mode, case ASHIFTRT): Properly handle + mask wider than HOST_WIDE_INT. + + * c-decl.c (pushdecl): Don't test TREE_PUBLIC when deciding whether + to register a duplicate decl in the current block. + +Thu Oct 26 21:55:39 1995 Jason Merrill + + * calls.c (expand_call): Don't trust the callee to copy a + TREE_ADDRESSABLE type. + * function.c (assign_parms): Likewise. + +Thu Oct 26 19:25:05 1995 Mike Stump + + * libgcc2.c (__unwind_function): Provide a default definition for + implementations that don't yet have a function unwinder. + +Thu Oct 26 18:08:19 1995 Paul Eggert + + * cccp.c (handle_directive): Don't treat newline as white + space when coalescing white space around a backslash-newline. + +Thu Oct 26 17:57:34 1995 Ian Lance Taylor + + * mips-tdump.c (enum st): Define st_Struct, st_Union, and st_Enum. + (st_to_string): Handle them. + (type_to_string): Add fdp argument; pass it to emit_aggregate. + (print_symbol): Add fdp argument; pass it to type_to_string. + Handle st_Struct, st_Union, and st_Enum. + (emit_aggregate): Add fdp argument. Handle opaque types. Map + through RFD entries. + (print_file_desc): Pass FDR to print_symbol. + (main): Pass null FDR to type_to_string. + +Thu Oct 26 08:07:10 1995 Michael Meissner + + * configure (powerpc-ibm-aix[456789]*): Use rs6000/t-newas, + not rs6000/t-rs6000. + (rs6000-ibm-aix3.2.[456789]*): Likewise. + (rs6000-ibm-aix[456789]*): Likewise. + + * rs6000/t-newas: Copy from t-rs6000. + * t-rs6000: Don't build -mcpu=common multilib variants of libgcc.a. + + * rs6000.md (load_multiple insn): If address register is among regs, + don't load it with a lwsi instruction, which is undefined on PowerPC. + +Thu Oct 26 08:01:32 1995 Jim Wilson + + * dwarfout.c (output_compile_unit_die): Handle language_string + of "GNU F77". + + * reload.c (find_reloads_address): When check for out of range constant + plus register, accept any hard register instead of just fp, ap, sp. + + * combine.c (distribute_notes): For Oct 19 change, add additional + check to verify that place has a valid INSN_CUID. + + * sparc/t-vxsparc (LIBGCC1_TEST): Define. + + * sh.md (negdi2): Use TARGET_LITTLE_ENDIAN. + + * combine.c (force_to_mode, case ASHIFTRT): Verify mode bitsize is + within HOST_BITS_PER_WIDE_INT before shifting by it. + + * final.c (final_scan_insn): When recur for instruction in delay slot, + add loop around recursive call in case the instruction gets split. + +Thu Oct 26 07:28:45 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * genrecog.c (write_tree_1): Avoid emitting '-2147483648'. + + * jump.c (duplicate_loop_exit_test): Return 0 if found + a NOTE_INSN_LOOP_CONT. + +Tue Oct 24 15:30:14 1995 Jeffrey A Law + + * calls.c (expand_call): Make sure valreg is at least + a full word. + +Sun Oct 22 19:35:41 1995 Jim Wilson + + * sh.h (INIT_SECTION_ASM_OP): Delete. + (HAVE_ATEXIT): Define. + +Sun Oct 22 07:46:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (__fixuns[xds]fsi): #undef MIN and MAX before #include + of limits.h. + + * pa.c (pa_adjust_cost): Use pa_cpu, not pa_cpu_attr. + +Sun Oct 22 07:38:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * alpha.h (CONST_OK_FOR_LETTER_P): Use 'U' for unsigned constants. + * alpha.c (alpha_emit_set_const): Likewise. + * mips.c (gen_int_relational): Likewise. + +Sun Oct 22 07:14:35 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386.c (i386_return_pops_args): Don't need a FUNDECL to + check for type attributes in FUNTYPE. + +Sat Oct 21 18:17:42 1995 Jim Wilson + + * sh.md (define_delay): Don't accept any instruction for an annulled + slot, only accept those for which in_delay_slot is yes. + * sh.c (find_barrier): When hi_const returns true, increment count_si + by two if found_si is true. + Always use get_attr_length to compute length of instructions. + If count_hi or count_si out of range at end, need two PREV_INSN calls + not one. + When create new label, set LABEL_NUSES to 1. + (reg_unused_after): Ifdef out code for handling labels. + (prepare_scc_operands): New local variable mode. Set it from + sh_compare_op0 or sh_compare_op1. Use it instead of SImode in + force_reg calls. + + * optabs.c (expand_float): Emit missing barrier after unconditional + jump. + +Sat Oct 21 14:16:46 1995 Torbjorn Granlund + + * alpha.md (cmpdf): Make conditional on TARGET_FP. + +Fri Oct 20 19:11:12 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * combine.c (distribute_notes): Delete instructions without + side effect that set a subreg of an unused register. + + * m68k.h (PREFERRED_RELOAD_CLASS): Check for !G constants + for DATA_OR_FP_REGS also. + +Fri Oct 20 18:57:10 1995 Ian Lance Taylor + + * genmultilib: Output negations of unused alternatives, even if + one of the alternatives is selected. + +Fri Oct 20 18:48:50 1995 Jeff Law (law@hurl.cygnus.com) + + * integrate.c (output_inline_function): Turn on flag_no_inline + to avoid function integration once we begin writing deferred + output functions. + +Fri Oct 20 18:46:33 1995 Michael Meissner + + * rs6000.c (float_conv_temp): Delete global variable. + (stack_temps): New static array to hold stack temps. + (offsettable_mem_operand): Delete function. + (offsettable_addr_operand, rs6000_stack_temp): New functions. + (output_epilog): Zero stack_temps. + + * rs6000.h (offsettable_addr_operand): Declare instead of + offsettable_mem_operand. + (PREDICATE_CODES): Use offsettable_addr_operand. + (float_conv_temp): Delete variable. + + * rs6000.md (move_to_float insns): Change move_to_float so + that it doesn't have a clobber of the memory address, and instead + passes the stack temp's memory address as one of the unspec args. + (fix_truncdfsi2): Use rs6000_stack_temp to allocate the temp. + (multiply, shift insns): Fix all cases of multiply and shift insns so + that the right mnemonics are used for -mcpu=common with both + -m{old,new}-mnemonics. + +Fri Oct 20 17:58:19 1995 Jim Wilson + + * expr.c (safe_from_p, case RTL_EXPR): Return 0 if RTL_EXPR_SEQUENCE + exists. Delete code to return 0 if exp_rtl is zero. + + * function.c (init_function_start): Don't call init_insn_lengths here. + * toplev.c (rest_of_compilation): Call it here. + +Thu Oct 19 19:19:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (check_format_info): Make test for null pointer + more general. + +Thu Oct 19 18:56:16 1995 Satoshi Adachi (adachi@wisdom.aa.ap.titech.ac.jp) + + * fixincludes (stdlib.h): Be more general in edit to change + declaration of {c,m,re}alloc. + +Thu Oct 19 18:48:53 1995 Torbjorn Granlund + + * libgcc2.c (__udiv_w_sdiv): If we don't have sdiv_qrnnd, define + dummy variant of __udiv_w_sdiv. + +Thu Oct 19 18:45:21 1995 Jim Wilson + + * alpha.h (ASM_SPEC): If GNU as is the default, then pass -g to + the assembler if -malpha-as. If GNU as is not the default, then pass + -g to the assembler is not -mgas. + + * combine.c (distribute_notes): When search for new place to put + REG_DEAD note, call distribute_links if this new place is between + i2 and i3, and i2 uses the register. + +Thu Oct 19 18:41:36 1995 Michael Meissner + + * rs6000.md (float{,uns}sidf2): Rewrite to break the conversion + process into several general insns. + (move_to_float): New insns to move 2 integer regs into a float register + through memory, taking endianess into account. Make sure that the + floating temporary is a valid address. Use one temporary for all + floats converted. + (fix_truncdfsi2): Take endianess into account. + + * rs6000.c ({low_32_bit,offsettable_mem}_operand): The function + low_32_bit_operand is now unused, delete it. New function + offsettable_mem_operand to determine if a memory address is + offsettable. + * rs6000.h ({low_32_bit,offsettable_mem}_operand): Ditto. + (PREDICATE_CODES): Ditto. + + * rs6000.{c,h} (float_conv_temp): New global. + * rs6000.c (output_epilog): Zero out float_conv_temp. + + * Makefile.in (libgcc{1,2}.a): Allow LIB{1,2}FUNCS_EXTRA files to + end in .S as well as .c and .asm. + +Wed Oct 18 17:56:45 1995 Jose Alonso (sidinf@fpsp.fapesp.br) + + * c-typeck.c (parser_build_binary_op): Warn about x^y==z, etc. + +Mon Oct 9 12:38:06 1995 Michael Meissner + + * protoize.c (reverse_def_dec_list): Silence compiler warnings. + +Mon Oct 9 12:35:54 1995 Andrew Cagney + + * ginclude/va-ppc.h (va_arg): Deal with long longs that would be + passed in the 7th register, and are passed in the stack instead. + +Fri Oct 6 13:47:10 1995 Jim Wilson + + * alpha.h (ASM_SPEC): Add -g. + +Fri Oct 6 13:42:50 1995 Richard Kenner + + * alpha.h (alpha_{arg,auto}_offset): Make extern. + +Fri Oct 6 13:24:43 1995 Michael Meissner + + * rs6000.h (RETURN_ADDRESS_OFFSET): Correct previous change. + +Fri Oct 6 13:14:43 1995 Doug Evans + + * rtlanal.c (reg_set_last): Fix call to reg_set_between_p. + +Tue Oct 3 12:31:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_type, case ARRAY_TYPE): Strip MAX_EXPR + from upper bound when computing length if it just protects against + negative length. + + * expr.c (emit_move_insn_1): When doing multi-word move, show + output is clobbered. + +Tue Oct 3 12:26:07 1995 Jim Wilson + + * cse.c (set_nonvarying_address_components, case AND): Add *pend to + end. Add constant to start instead of subtracting it. + +Tue Oct 3 12:23:28 1995 Torbjorn Granlund + + * combine.c (simplify_rtx): In code that attempts to simplify + conditional expressions, if the result is an NE around another + comparison, return the original expression. + + * longlong.h (mips umul_ppmm): Use `l' and `h' constraints; + remove mflo and mfhi instructions. + +Tue Oct 3 12:21:29 1995 Michael Meissner + + * ginclude/va-ppc.h (va_start, stdarg case): Call + __builtin_next_arg, and ignore the result, so that the compiler + can report the proper error, if the second argument is not the + last argument. + +Tue Oct 3 12:02:51 1995 Kohtala Marko + + * function.c (assign_stack_temp): Adjust full_size field of + temp_slot when splitting an unused slot. + +Tue Oct 3 11:51:59 1995 Mike Stump + + * expr.c (expand_builtin_return_addr): Break out functionality + from expand_builtin. + (expand_builtin): Call expand_builtin_return_addr. + * rs6000.h (RETURN_ADDR_RTX): Remove call to copy_to_reg. + Offset to return address is 4 when !TARGET_64BIT and v4_call_p, + 8 otherwise. + * sparc.h (RETURN_ADDR_RTX): Remove call to copy_to_reg. + * alpha.h (RETURN_ADDR_RTX): New definition. + +Sun Oct 1 21:23:30 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (staticp, case INDIRECT_EXPR): Disable case. + + * expr.c (expand_expr, case COMPONENT_REF): If getting component + of union of variable size, propagate TARGET. + +Fri Sep 29 07:48:09 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_expr): When storing promoted value, don't return + MEM if address contains target. + +Thu Sep 28 14:30:03 1995 Paul Eggert + + * cccp.c (rescan): Expand `#if foo && #bar' without a bogus + complaint about preprocessor directives within macro args. + Expand `foo' in `foo#bar' without requiring a space before `#'. + +Thu Sep 28 14:24:26 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (anonymous DImode shift patterns setting cc0): Turned + off due to reload problems. + +Thu Sep 28 14:05:22 1995 Niklas Hallqvist (niklas@appli.se) + + * Makefile.in (USER_H): Move up so can override. + (INSTALL_ASSERT_H): New definition. + (install-headers): Use it. + (stmp-int-hdrs): Handle USER_H being empty. + * config/x-netbsd (INSTALL_ASSERT_H): Define as empty. + + * i386/netbsd.h (WCHAR_{TYPE,UNSIGNED,TYPE_SIZE}): Now int. + * m68k/netbsd.h, ns32k/netbsd.h, sparc/netbsd.h: Likewise. + * vax/netbsd.h: Likewise. + (SIZE_TYPE): Use unsigned int. + + * m68k.c (output_scc_di): Swap operands when needed. + * m68k.h (LEGITIMATE_PIC_OPERAND): Allow SYMBOL_REF_FLAG symref. + * m68k.md: Make both assembler syntaxes do the same for PIC calls. + +Tue Sep 26 16:51:44 1995 Michael Meissner + + * mips.c (override_options): Don't allow anything but integers to + go in the HI/LO registers. + +Tue Sep 26 16:36:18 1995 John F. Carr + + * c-common.c (check_format_info): Don't warn about format type + mismatch if the argument is an ERROR_MARK. + +Mon Sep 25 17:50:50 1995 Craig Burley (burley@gnu.ai.mit.edu) + + * stor-layout.c (put_pending_sizes): New function. + * tree.h (put_pending_sizes): Add declaration. + * tree.c (save_expr): Return original for ERROR_MARK. + +Fri Sep 22 19:20:01 1995 Jeff Law (law@hurl.cygnus.com) + + * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Strip off + all NOP exprs from the source and destination nodes, then + set MEM_IN_STRUCT_P. + +Fri Sep 22 18:50:31 1995 Michael Meissner + + * rs6000/eabi.h (ASM_OUTPUT_INT): Test for whether the integer + being output is also a constant so &sym - &sym2 is not fixed up. + +Fri Sep 22 18:49:07 1995 Peter Flass (FLASS@LBDRSCS.BITNET) + + * i370.md (cmpsi): Add missing constraints to operand 1. + +Fri Sep 22 18:27:33 1995 Torbjorn Granlund + + * i386.h (CONST_OK_FOR_LETTER_P): Make `N' match range 0..255 + for `outb' instruction. + + * pyr.h (PRINT_OPERAND): Handle code `R' for REG. + * longlong.h (pyr umul_ppmm): Use it. + +Fri Sep 22 18:24:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in (enumlist): Propagate error_mark_node. + + * c-aux-info.c (gen_type): Handle ERROR_MARK. + + * alpha.md (movdi): Avoid memory sharing problem when in reload. + +Wed Sep 20 14:27:09 1995 Peter Flass + + * mvs.h (FUNCTION_PROLOGUE): Maintain savearea forward chain + per MVS standards. + +Wed Sep 20 14:20:52 1995 Torbjorn Granlund + + * pyr.md (cmphi recognizer): Make condition match constraints. + (cmpqi recognizer): Likewise. + +Wed Sep 20 12:42:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Do copy something setting + the result register if it is setting it to itself and has a REG_NOTE. + + * integrate.c (set_decl_{origin_self,abstract_flags}): Treat + a DECL_INITIAL of error_mark_node the same as one of NULL_TREE. + +Tue Sep 19 19:30:18 1995 Dave Pitts (dpitts@nyx.cs.du.edu) + + * i370.md (cmphi, movhi, movstricthi, extendhisi2): Correct generation + of short integer (Halfword) + ({add,sub,mul,and,ior,xor}hi3): Likewise. + * i370/mvs.h (MACROPROLOGUE): New macro. + (FUNCTION_{PRO,EPI}LOGUE): Added ability to use IBM supplied function + prologue macros. + (FUNCTION_PROLOGUE): Corrected function "in-line" prologue alignment + problems. + (ASM_DECLARE_FUNCTION_NAME): Changed alignment to FullWord. + (ASM_OUTPUT_{SHORT,ASCII}): Reworked. + +Tue Sep 19 19:22:15 1995 Douglas Rupp (drupp@cs.washington.edu) + + * winnt/win-nt.h: Renamed from winnt/win-nt.h. + (LINK_SPEC): Add -noinhibit-exec. + * {alpha,i386}/win-nt.h: Renamed from {alpha,i386}/winnt.h. + Include winnt/win-nt.h, not winnt/winnt.h. + * winnt/oldnames.c: New file. + * winnt/headers.mak (fixinc-nt.obj): Fix typo. + * winnt/config-nt.bat: Change winnt.h to win-nt.h. + * i386/config-nt.sed: Likewise. + * configure ({alpha,i386}-*-winnt3*): Likewise. + +Mon Sep 18 14:00:45 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.h (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): + Added R2 and R0_1. + (REG_CLASS_FROM_LETTER): New letters 't' and 'z'. + (EXTRA_CONSTRAINT): New letter 'Q'. + +Sun Sep 17 12:39:22 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.h (ASM_DECLARE_FUNCTION_NAME): If a parameter's type + has TYPE_NEEDS_CONSTRUCTING on, then it's passed by invisible + reference. + +Sat Sep 16 17:42:33 1995 Jim Wilson + + * loop.c (find_and_verify_loops): Fix error in last change. + +Sat Sep 16 08:38:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.h (GO_IF_LEGITIMATE_ADDRESS): Disallow SYMBOL_REF for + current function. + + * cse.c (recorded_label_ref): New variable. + (insert): Set instead of cse_jumps_altered. + (cse_main): Initialize it and return 1 if nonzero at end. + +Fri Sep 15 18:26:49 1995 Torbjorn Granlund (tege@matematik.su.se) + + * fold-const (div_and_round_double): Change `carry', `quo_est', + and `scale' from plain int to `unsigned HOST_WIDE_INT'. + +Fri Sep 15 18:24:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (insert): Set cse_jumps_altered when inserting a LABEL_REF. + +Fri Sep 15 17:29:41 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.c (b_mode_operand): New function. + (print_operand): Added code 'Q'. + +Fri Sep 15 17:27:23 1995 Jim Wilson + + * loop.c (find_and_verify_loops): When moving exit blocks out of + the loop, verify that the target of P is within the current loop. + + * reorg.c (fill_slots_from_thread): Update thread if it is split. + +Fri Sep 15 17:06:51 1995 Michael Meissner + + * rs6000.md (decrement_and_branchsi and related insns): Don't use + a "2" to select a register preference for operand 1 if operand 2 + hasn't been seen yet. + Add appropriate clobbers in decrement_and_branchsi. + Add patterns where the pc/label_ref are interchanged. + + * Makefile.in (gnucompare, stmp-multilib-sub): Remove extra . in + front of $(objext). + + * rs6000.c (output_toc): Align DF constants if STRICT_ALIGNMENT. + + * config/fp-bit.c (FLO_union_type): Add words field if double + precision to get at the separate words. + (FLO_union_type, pack_d, unpack_d): Use FLOAT_BIT_ORDER_MISMATCH + to determine when the bitfields need to be reversed, and + FLOAT_WORD_ORDER_MISMATCH when the words need to be reversed. + +Fri Sep 15 16:41:43 1995 Jeff Law (law@snake.cs.utah.edu) + + * reorg.c (fill_simple_delay_slots): When filling insn's delay slot + with JUMP_INSN, don't assume it immediately follows insn on + unfilled slots obstack. + + * Makefile.in (caller-save.o): Depend on insn-codes.h. + +Thu Sep 14 17:41:49 1995 Jim Meyering (meyering@comco.com) + + * protoize.c (do_cleaning): Don't blank out backslash-escaped + newlines in double quoted strings. + +Thu Sep 14 16:20:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * emit-rtl.c (gen_lowpart): If gen_lowpart_common fails + for a REG, load it into a pseudo and try again. + +Thu Sep 14 14:15:16 1995 Stan Cox (coxs@dg-rtp.dg.com) + + * m88k.h (VERSION_INFO1): Removed BCS reference. + * m88k/dgux.h (ASM_SPEC, *_LEGEND): + Added -mno-legend option. -mstandard no longer implies that legend + legend information not be produced. + (LINK_SPEC): Removed -z text + +Tue Sep 12 19:05:39 1995 Jim Wilson + + * cccp.c (is_system_include): Call skip_redundant_dir_prefix. + +Tue Sep 12 18:58:21 1995 John Carr + + * sparc.md: Change `*return "string"' to "string" in patterns. + +Tue Sep 12 18:48:47 1995 Craig Burley (burley@gnu.ai.mit.edu) + + * function.c (put_var_into_stack): For CONCAT case, order of + placement depends on FRAME_GROWS_DOWNWARD, not STACK_GROWS_DOWNWARD. + +Tue Sep 12 18:34:10 1995 Doug Evans + + * va-sparc.h (v9 varargs va_start): Handle __builtin_va_alist + being stack argument. + + * sparc.h (STATIC_CHAIN_REGNUM): Use %g5 for sparc64. + (TRAMPOLINE_TEMPLATE): Rewrite for sparc64. + (TRAMPOLINE_SIZE): Is 40 for sparc64. + * sparc.c (sparc64_initialize_trampoline): Rewrite. + +Tue Sep 12 18:30:22 1995 Douglas Rupp (drupp@cs.washington.edu) + + * cp/Make-lang.in (cc1plus) : Removed unnecessary $(exeext). + + * configure: Added code to handle gcc_extra_objs. + (alpha-winnt): Changed xmake_file to winnt/x-winnt. + Added extra_gcc_objs=spawnv.o; changed extra_programs to ld.exe. + (i386-winnt): Changed xmake_file to winnt/x-winnt. + Added extra_gcc_objs=spawnv.o; changed extra_programs to ld.exe. + * configure.bat: Changed to used common winnt/config-nt.bat. + * Makefile.in: Changed various .o's to .$(objext)'s + (specs): Removed unnecessary $(exeext). + (EXTRA_GCC_OBJS): New variable. + (clean): Removed $(LIB2FUNCS_EXTRA) + * objc/Makefile: Changed archive command for libobjc.a to use $? + for objects. + + * alpha/x-winnt, i386/x-winnt: Deleted. + * alpha/config-nt.bat, i386/config-nt.bat: Deleted. + * alpha/config-nt.sed, i386/config-nt.sed: Moved architecture + independent commands to config/winnt/config-nt.sed. + * alpha/winnt.h: Added -D_M_ALPHA to CPP_PREDEFINES. + Changed LIB_SPEC to be compatible with Gnu ld for NT. + * i386/winnt.h: Added -D_cdecl=__attribute__((__cdecl__)). + Change LIB_SPEC to be compatible with Gnu ld for NT. + * winnt/config-nt.bat, winnt/config-nt.sed: New files. + * winnt/dirent.{c,h}, winnt/fixinc-nt.c, winnt/headers.mak: New files. + * winnt/ld.c: Changed precedence of libraries to look for + libfoo.lib before libfoo.a + Changed to work like Gnu ld for NT. + * winnt/libgcc.mak, winnt/mklibgcc.c: New files. + * winnt/spawnv.c: Changed spawn function entry points to __spawn* + instead of spawn*. + * winnt/x-winnt: New file. + * fixinc-nt.sed: New file. + * fixinc.winnt: Rewritten to use fixinc-nt.sed. + + * gcc.c: Remove fix_argv kludge. + +Tue Sep 12 13:24:17 1995 Michael Meissner + + * rs6000.md (power subdi3 pattern): Fix pattern to have 5 + alternatives, and correct 4th alternative to match reality. + + * rs6000.md (adddi3, subdi3, negdi2): Add constraints so output reg + does not overlap one reg with one of the inputs. + +Tue Sep 12 13:09:48 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.c (output_scc_di): Fixed for non-SGS_CMP_ORDER syntax. + + * collect2.c (scan_libraries): Cast lsyms' alloca to LDSYM*. + +Tue Sep 12 13:04:12 1995 Niklas Hallqvist (niklas@appli.se) + + * stmt.c (expand_start_stmt_expr): Do stack adjust in right place. + + * stdarg.h (__gnuc_va_list): Make char * for NetBSD. + +Tue Sep 12 12:44:46 1995 Jason Merrill + + * ginclude/va-ppc.h (va_arg): Reorganize to avoid BIND_EXPRs of + aggregate or array type. + +Tue Sep 12 12:42:27 1995 Ian Lance Taylor + + * fixincludes: Fix HP/UX for g++ -pedantic-errors. + + * fixincludes (curses.h): typedef bool need not take up entire line. + +Mon Sep 11 19:05:42 1995 Stan Cox (coxs@dg-rtp.dg.com) + + * c-typeck.c (digest_init): Don't recursively call digest_init + when in traditional mode if the type is invalid. + +Mon Sep 11 18:58:26 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.md: Added DLB/DSTB peepholes for HFmode. + Corrected mnemonics for HImode DSTB peephole. + +Mon Sep 11 18:48:06 1995 Michael Meissner + + * config/fp-bit.c (FLO_union_type): Remove bitfields to set sign, + exponent, and mantissa, and add value_raw field, which is an + integer of the appropriate type. If _DEBUG_BITFLOAT is defined, + provide little and big endian bitfields. If the macro + FLOAT_BIT_ORDER_MISMATCH is defined, use explicit bitfields. + (pack_d, unpack_d): Switch to use value_raw and explicit shifts + and masks so that we don't have to worry about whether the target + is big or little endian unless FLOAT_BIT_ORDER_MISMATCH is + defined. If single precision floating point, rename to pack_f and + unpack_f, so there is no confusion in the debugger. + + * rs6000.h (rs6000_abi): New enumeration to describe which + ABI we're conforming to. + (rs6000_stack): Use abi enum, not AIX vs. V.4 boolean. + (ASM_OUTPUT_OPTIONS): New macro to print output options in .s file. + (ASM_FILE_START): Use it. + (output_options,rs6000_float_const): Declare new functions. + + * rs6000.c (output_option{,s}): New functions to write -f, -m, + and -W options to the asm file. + (rs6000_float_const): New function to generate floating point + constants portably used in signed,unsigned -> double conversions. + (rs6000_stack_info,debug_stack_info): Use ABI enumeration instead + of AIX vs. V.4 boolean. + + * rs6000.md (float{,uns}sidf2): Call rs6000_float_const to + portably build the proper floating point constant for conversions. + (movdi): Properly handle movdi of CONST_{INT,DOUBLE} on little + endian systems. + + * rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): Define to be 0/1 + depending on the target endianess. + (ASM_FILE_START): Define, to call output_options in addition to + output_file_directive. + (TRAMPOLINE_SIZE): Correct size to match code. + + * rs6000/eabi{,le}sim.h (CPP_SPEC): Define the correct endian + macro for varargs/stdargs use. + +Mon Sep 11 18:41:58 1995 Jim Wilson + + * c-decl.c (redeclaration_error_message): For TYPE_DECLs, return 0 + if TYPE_MAIN_VARIANT of old type is same as new type. + +Mon Sep 11 17:39:35 1995 Rob Ryan (robr@cmu.edu) + + * xcoffout.c (xcoff_inlining): New variable, used in place of + xcoff_current_include_file when determining whether to use + absolute line numbers. + (xcoffout_source_file): Switched to using xcoff_inlining to + determine when to emit .bi/.ei directives. + +Mon Sep 11 16:55:06 1995 Torbjorn Granlund + + * m68k.md (cmpdi): Change patterns to allocate scratch register at + RTL generation time. + (tstdi): Likewise. + +Sun Sep 3 09:03:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (size_binop): Don't pass 1 to NOTRUNC. + +Thu Aug 31 19:27:00 1995 Roland McGrath + + * libgcc2.c: Include longlong.h. + [L_udivdi3 || L_divdi3 || L_umoddi3 || L_moddi3] (__udivmoddi4): + Define this `static inline' when defining these, so they all + remain leaf functions. + +Thu Aug 31 18:38:21 1995 Paul Eggert + + * c-parse.in (ends_in_label): New %union member. + (stmts, stmt_or_label): Use new member to avoid lexical lookahead hack. + (lineno_stmt_or_labels): New rule. + (lineno_stmt_or_label, stmt_or_label): Yield nonzero if it ends + in a label. + +Thu Aug 31 08:31:40 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (canon_hash, CONST_DOUBLE): Hash integer and real + differently. + * varasm.c (struct rtx_const): Add new field DI to union. + (decode_rtx_const, case CONST_DOUBLE): Use to hash CONST_DOUBLE + representing an integer. + + * va-alpha.h (__gnuc_va_list): Make __offset an int. + * alpha.c (alpha_builtin_saveregs): Properly compute address + of __offset both both OSF and WINNT. + + * xm-alpha.h (sbrk): Don't define here. + * gmon.c (sbrk): Define here for __alpha. + * toplev.c (sbrk): Likewise. + * mips-tfile.c (malloc, calloc, realloc): Don't define for anybody. + + * reload.c (push_reload): Add case for output reload of a SUBREG + of a hard reg when output mode is invalid for that mode. + In both that case and existing case for in, don't remove SUBREG. + * reload1.c (emit_reload_insns): Emit RELOAD_OTHER output reloads last. + +Tue Aug 29 19:16:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (decl_attribute, case A_PACKED): Check is_type first. + (decl_attribute, case A_T_UNION): Likewise. + Don't access TYPE_FIELDS if DECL is zero. + * c-decl.c (finish_struct): If transparent_union attribute + specified, validate it once we finish laying the union out. + +Mon Aug 28 05:58:03 1995 Paul Eggert + + * arm.c (arm_gen_movstrqi): Remove unused variable const_sxteen. + + * bi-lexer.c (buffer, inpoint): Remove unused variables. + + * i370/mvs.h, i370/mvs370.c (mvs_label_emitted): Renamed + from mvs_label_emited. + + * msdos/configur.bat: Fix misspelling of `maintainer-clean'. + +Sat Aug 26 06:57:17 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload.c (push_secondary_reload): If X is a paradoxical SUBREG, + get mode and thing to reload from inside. + * reload1.c (emit_reload_insns): Do nothing for SUBREG whose + operand is unused subsequently. + In secondary reload case, if paradoxical SUBREG for output, reload + thing inside SUBREG, just like gen_reload. + +Fri Aug 25 19:26:53 1995 Paul Eggert + + * c-typeck.c (set_init_label): Don't die if an entire + brace-pair level is superfluous in the containing level. + +Fri Aug 25 19:22:46 1995 Michael Meissner + + * configure (powerpc{,le}-eabisim): Add support for a new target + that works under the PSIM simulator. + * rs6000/eabisim.h, rs6000/eabilesim.h, rs6000/t-eabisim: New files. + + * rs6000/eabi.h (STRICT_ALIGNMENT): If little endian, always set + strict alignment to 1. + +Fri Aug 25 19:22:23 1995 David Edelsohn + + * rs6000.md ({add,sub,mulsi}di3): Support both endian possibilities. + (negdi2): Likewise. + +Fri Aug 25 19:10:41 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.md: Added peephole definitions for Load/Store Base insns + and eliminating redundant load in an equivalent store/load sequence. + +Fri Aug 25 18:33:27 1995 Craig Burley (burley@gnu.ai.mit.edu) + + * toplev.c (report_error_function): Don't attempt to use input + file stack to identify nesting of #include's if file name oflocation + diagnosed is not same as input_filename. + +Fri Aug 25 07:31:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (output_inline_function): Switch to function obstack. + +Mon Aug 21 13:29:54 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.c (arithmetic_comparison_operator): New function. + (print_operand): Take into account that overflow flag is not + set the same as after a compare instruction. + * i386.md (decrement_and_branch_until_zero): Use + arithmetic_comparison_operator to decide if there is comparison + suitable to be expressed by condition code from an arithmetic op. + +Mon Aug 21 13:26:13 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (adddi3, subdi3): "&" added to clobber's constraints. + +Mon Aug 21 12:11:14 1995 Jim Wilson + + * t-sparclite (MULTILIB_*, LIBGCC, INSTALL_LIBGCC): Define. + + * sh.md (movdi-1, movdf-1): Make conditional on reload_completed, + delete conditions checking for pseudo registers and Q addresses. + Add code to handle SUBREG. + + * local-alloc.c (wipe_dead_reg): Make a register mentioned in a + REG_INC note die after the instruction. + + * m68k.md: For all dbra pattern, change constraint from 'g' to 'd*g'. + + * Makefile.in: (underscore.c): Rename rule to stamp-under, and + touch stamp-under at the end. Add new rule for underscore.c that + depends on stamp-under. + + * sh.c (reg_unused_after): For a SEQUENCE, make sure all insns are + safe before returning 1. + + * sh.h (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN): Define. + + * sh.c (output_stack_adjust): Add new argument reg. Use it instead + of stack_pointer_rtx. + (sh_expand_prologue, sh_expand_epilogue): Pass new argument to + output_stack_adjust. + +Sat Aug 19 17:34:15 1995 Jim Wilson + + * sparc/gmon-sol2.c (_mcount): Define. + * sparc/sol2.h (STARTFILE_SPEC, ENDFILE_SPEC): Delete superfluous + -pg tests. + (LINK_SPEC): Add libp directories to -Y when -pg. + + * unroll.c (calculate_giv_inc): Handle increment computed by ASHIFT. + +Sat Aug 19 17:28:56 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (subdi3): Should not be commutative. + (one_cmpldi2): Fixed typo with register operand. + +Sat Aug 19 17:20:43 1995 Michael Meissner + + * rs6000.c (output_prolog): Fixup code to set stack pointer + if stack size > 32k. + * rs6000.md (sync_isync): Renamed from sync; added an isync insn + after the sync to properly deal with PowerPC's with split I/D caches. + * sysv4.h (INITIALIZE_TRAMPOLINE): Sync function now named sync_isync. + +Sat Aug 19 17:07:09 1995 Doug Evans + + * h8300.h (STATIC_CHAIN_REGNUM): Use r3. + (REGISTER_NAMES): Print r7 as sp. + (ADDITIONAL_REGISTER_NAMES): Recognize r7. + (ASM_OUTPUT_ALIGN): Alignment is power of 2. + * h8300.md (fancy_btst,fancy_btst1): Branch target must be + operand 0 for length attribute to work. + +Sat Aug 19 16:43:11 1995 Paul Franklin + + * assert.h: Declare __eprintf with attribute noreturn. + +Sat Aug 19 16:40:12 1995 Jason Merrill + + * stddef.h: Don't define wchar_t if __cplusplus is defined. + +Tue Aug 15 18:01:01 1995 Paul Eggert + + * cccp.c (warning_with_line): Fix typo in declaration when + !HAVE_VPRINTF and defined (__STDC__). + +Tue Aug 15 17:57:54 1995 Stephen L Moshier + + * real.c (ediv, emul): Set sign bit of IEEE -0.0 result. + +Tue Aug 15 17:49:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (safe_from_p): Only safe if EXP is variable-size and X + is BLKmode. + + * stmt.c (fixup_gotos): When some fixups done, reset to point + to next instead of zeroing TREE_VALUE, which may be shared. + +Mon Aug 14 09:15:45 1995 Doug Evans + + * m68k/m68kemb.h (STARTFILE_SPEC): Define as empty. + +Mon Aug 14 09:08:57 1995 Pat Rankin + + * vax.c (vms_check_external): Update `pending_head' properly + when the first list element is removed. + +Mon Aug 14 09:01:32 1995 Jeffrey A. Law + + * pa.md (call expanders): Emit a blockage insn after restoring + %r19 when generating PIC. + +Sun Aug 13 21:58:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (main): Change text of unsupported -g option warning. + +Sun Aug 13 21:47:57 1995 Andrew McCallum + + * objc/selector.c (sel_get_any_typed_uid): New function. + * objc/objc-api.h (sel_get_any_typed_uid): Declare new function. + +Sun Aug 13 21:43:17 1995 John Carr + + * c-typeck.c (c_expand_asm_operands): Check for read-only output + operand where the variable is read-only but the type is not. + +Sun Aug 13 21:16:12 1995 David Edelsohn + + * rs6000.c (direct_return): Epilogue required if CR saved. + +Sun Aug 13 19:09:25 1995 Jeff Law (law@snake.cs.utah.edu) + + * configure (hppa1.?-hp-hpux10): Recognize and treat just like hpux9. + +Sun Aug 13 19:07:23 1995 Doug Evans + + * i960.md (movdi matchers): Fix src/dest order in unaligned + reg->reg case. + +Sun Aug 13 18:49:01 1995 DJ Delorie + + * i386/xm-dos.h (HAVE_STRERROR): New definition. + + * msdos/configur.bat: Add missing carriage return. + +Sun Aug 13 18:40:55 1995 Andrew Cagney + + * Makefile.in (USER_H): Add va-ppc.h. + +Sun Aug 13 18:36:17 1995 M. Warner Losh + + * stmt.c (expand_asm_operands): Type '0'..'4' operands may + allow regs, so move them to the default case. + +Sun Aug 13 18:32:35 1995 Paul Eggert + + * cccp.c (warning_with_line): New function. + (trigraph_pcp): Use it, to avoid reporting line number. + (vwarning_with_line): Don't report line number if zero. + +Sun Aug 13 18:23:08 1995 Jason Merrill + + * toplev.c (vmessage): Support four arguments. + +Sun Aug 13 18:19:51 1995 Michael Meissner + + * ginclude/stdarg.h: Add ppc svr4 calling sequence support. + * ginclude/varargs.h: Likewise. + * ginclude/va-ppc.h: New file. + +Sun Aug 13 18:05:20 1995 Michael Gschwind + + * configure (pdp-*-*): Add support for t-pdp11. + * t-pdp11: New file. + * Makefile.in (LIBGCC2_CFLAGS): Add TARGET_LIBGCC2_CFLAGS. + +Sun Aug 13 14:50:58 1995 Jim Wilson + + * final.c (final_start_function): Always call sdbout_begin_function + and xcoffout_begin_function, even if no line number info. + + * mips/abi64.h (SETUP_INCOMING_VARARGS): In if statement, only + subtract one for stdarg. Don't subtract PRETEND_SIZE from + argument pointer when calculating stack address. + * mips.h (INITIAL_ELIMINATION_OFFSET): For 64 bit ABI, subtract + current_function_pretend_args_size when converting from argument + pointer. + * va-mips.h (va_start): For stdarg, delete separate define for + 64 bit ABI. For varargs, don't subtract 64, and only add -8 when + all argument registers are used. + + * gcc.c (main): When concat gcc_exec_prefix and + standard_startfile_prefix, put machine_suffix in the middle. + + * iris6.h (INIT_SECTION_ASM_OP): Don't define. + (LD_INIT_SWITCH, LD_FINI_SWITCH, HAS_INIT_SECTION): Don't undef. + (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Ifdef out. + * configure (mips-sgi-irix6, mips-sgi-irix5cross64): Define + use_collect2 to yes. + + * combine.c (move_deaths): When have a multi-reg hard register, + if don't find a note, then recur for each individual hard register. + + * cse.c (set_nonvarying_address_components): Handle addresses + which are the sum of two constant pseudo regs. + (cse_rtx_addr_varies_p): Likewise. + + * Makefile.in (gfloat.h): Add a - before the rm command. + + * loop.c (find_and_verify_loops): Set dest_loop only if + JUMP_LABEL (insn) is non-zero. + +Mon Jul 31 14:31:53 1995 Ian Lance Taylor + + * fixincludes: Avoid clobbering VxWorks drv/netif/if_med.h file. + +Sat Jul 29 16:21:42 1995 Jason Merrill + + * collect2.c: (XCOFF_SCAN_LIBS): Define if OBJECT_FORMAT_COFF and + XCOFF_DEBUGGING_FORMAT. + (SCAN_LIBRARIES): Also define if XCOFF_SCAN_LIBS. + +Sat Jul 29 16:19:42 1995 Stuart D. Gathman + + * collect2.c (scan_libraries): Implement for AIX. + +Sat Jul 29 09:59:33 1995 Michael Gschwind + + * configure: (pdp11-*-bsd) New target. + * 2bsd.h: New file. + + * pdp11.c (output_move_double): Handle CONST_INT parameters properly. + * pdp11.h (RTX_COSTS): Fill in missing default values. + * pdp11.md (truncdfsf2, extendsfdf2, floatsidf2, fix_truncdfsi2): + Allow register parameters, required by gcc to generate correct code. + * xm-pdp11.h: Include tm.h. + +Sat Jul 29 09:55:17 1995 Andreas Schwab + + * configure (m68k-*-linux*aout*, m68k-*-linux*): New targets. + * m68k/linux-aout.h, m68k/linux.h, m68k/t-linux, m68k/xm-linux.h: New. + * m68k.md [USE_GAS]: Output `jbsr' instead of `jsr' for normal + function calls and `bsr.l' instead of `bsr' for pic function calls. + +Sat Jul 29 09:44:13 1995 Jim Wilson + + * sh.h (CAN_DEBUG_WITHOUT_FP): Comment out. + + * reload.c (find_reloads_address_1, case PLUS): When handle SUBREG, + add SUBREG_WORD offset to SUBREG_REG register number. + (find_reloads_address_1, case SUBREG): If a pseudo register inside + a SUBREG is larger than the class, then reload the entire SUBREG. + * sh.h (SUBREG_OK_FOR_INDEX_P): New macro. + (INDEX_REGISTER_RTX_P): Use it. + +Sat Jul 29 09:33:19 1995 Doug Evans + + * mips/netbsd.h (CPP_SPEC): Fix typo. + + * configure (a29k-*-vxworks*): Define extra_parts for crt{begin,end}.o. + * t-a29k, t-a29kbase, t-vx29k ({,CROSS_}LIBGCC1): Define as empty. + +Sat Jul 29 09:15:17 1995 Jeffrey A. Law + + * pa/lib2funcs.asm (gcc_plt_call): Rewrite to avoid the need + for being called by _sr4export. Inline expand $$dyncall to + avoid the need for long-call and PIC support. + +Sat Jul 29 07:30:04 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * ms1750.inc (ucim.m, ucr.m, uc.m): New. + * 1750a.md (cmpqi): Account for unsigned comparisons. + (rotrqi3, rotrhi3): Reworked. + * 1750a.c (notice_update_cc): INCM and DECM set condition codes. + (unsigned_comparison_operator, next_cc_user_is_unsigned): New fcns. + * 1750a.h (FUNCTION_EPILOGUE): Local variables freed from SP, not FP. + (ASM_OUTPUT_BYTE): Make distinct from ASM_OUTPUT_CHAR. + (ASM_OUTPUT_CONSTRUCTOR): Add FILE arg to assemble_name. + +Fri Jul 28 09:40:07 1995 Jeffrey A. Law + + * pa.h (DO_GLOBAL_DTORS_BODY): Use an asm statement to keep optimizer + from deleting an assignment it believes dead. + +Fri Jul 28 08:47:51 1995 Jim Wilson + + * unroll.c (unroll_loop): When preconditioning, output code to + execute loop once if initial value is greater than or equal to final + value. + + * configure (lang_specs_files, lang_options_files): Add $srcdir to + file names when adding them to these variables. + + * c-typeck.c (pointer_int_sum): Don't distribute if intop is unsigned + and not the same size as ptrop. + + * function.c (assign_stack_temp): When split a slot, set base_offset + and full_size in the newly created slot. + (combine_temp_slots): Update full_size when slots are combined. + + * sh.c (reg_unused_after): New function. + * sh.md (define_peephole): Add peepholes to use r0+rN addressing mode + for some address reloads. + + * final.c (final_start_function): If SDB_DEBUG, call + sdbout_begin_function. If XCOFF_DEBUG, call xcoffout_begin_function + instead of xcoffout_output_first_source_line. + (final_scan_insn): Don't call sdbout_begin_function or + xcoffout_begin_function. + * xcoffout.c (xcoffout_output_first_source_line): Delete. + (xcoffout_begin_function): Call dbxout_parms and + ASM_OUTPUT_SOURCE_LINE. + + * va-mips.h: Change every occurance of #if __mips>=3 to + #ifdef __mips64. + * mips/abi64.h (CPP_SPEC): Output -D__mips64 when -mips3, or -mips4, + or -mgp64. Output -U__mips64 when -mgp32. + * mips/dec-bsd.h, mips/elf64.h, mips/iris3.h: Likewise. + * mips/iris5.h, mips/mips.h, mips/netbsd.h, mips/osfrose.h: Likewise. + + * i960.c (i960_function_epilogue): Don't clear g14 for functions with + an argument block. + (i960_output_reg_insn): Likewise. + (i960_output_call_insn): Clear g14 for functions wtih an argument + block. + +Fri Jul 28 08:43:52 1995 Doug Evans + + * i960.c (i960_arg_size_and_align): Correct alignment of XFmode + values in library calls. + * i960.md (movdi matchers): Support odd numbered regs. + +Fri Jul 28 08:37:25 1995 Michael Gschwind + + * pdp11.md (divhi3, modhi3, divmodhi4): Rewrite. + +Wed Jul 26 10:15:52 1995 Hallvard B Furuseth (h.b.furuseth@usit.uio.no) + + * collect2.c (end_file): Fix typo in error message text. + +Wed Jul 26 09:22:22 1995 Jeff Law (law@snake.cs.utah.edu) + + * xm-pa.h (USE_C_ALLOCA): Always define. + * xm-pahpux.h (USE_C_ALLOCA): Likewise. + + * x-pa (CC): Remove useless definition. + * xm-pa.h (HAVE_STRERROR): Define. + (__BSD_NET2__): Define. + +Wed Jul 26 09:10:25 1995 Jason Merrill + + * expr.c (preexpand_calls): Don't look past a CLEANUP_POINT_EXPR. + +Wed Jul 26 08:43:42 1995 Jim Wilson + + * cse.c (cse_insn): When do special handling for (set REG0 REG1), + must delete REG_EQUAL note from insn if it mentions REG0. + + * loop.c (find_and_verify_loops): When moving blocks of code, verify + that the just destination is not in an inner nested loop. + (mark_loop_jump): Don't mark label as loop exit if it jumps to + an inner nested loop. + +Wed Jul 26 08:40:31 1995 Paul Eggert + + * cccp.c (do_include, read_name_map): Omit leading "./" and + trailing "/" when it makes sense. + (skip_redundant_dir_prefix): New function. + +Wed Jul 26 08:36:41 1995 Michael Meissner + + * stmt.c (emit_nop): Do not emit a nop if there is a single + insn before a label or at the start of a function. + +Wed Jul 26 08:21:21 1995 Doug Evans + + * Makefile.in (gfloat.h): Delete previous copy before updating. + +Wed Jul 26 08:18:29 1995 Roland McGrath + + * Makefile.in (STAGESTUFF): Add stamp-crtS. + (crtbeginS.o, crtendS.o, stamp-crtS): New rules; just like + crtbegin.o et al, but compiled using -fPIC. + * configure (*-*-gnu*): Add crtbeginS.o and crtendS.o to $extra_parts. + +Wed Jul 26 08:11:52 1995 Michael Gschwind + + * pdp11.md: Fixed typos ('bhos' -> 'bhis'). + +Wed Jul 26 08:05:41 1995 Jim Wilson + + * hp320.h, m68k.h, m68kv4.h (LEGITIMATE_PIC_OPERAND_P): Reject + CONST_DOUBLE with MEM with invalid pic address. + * reload1.c (real.h): Include it. + * Makefile.in (reload1.o): Depends on real.h. + +Wed Jul 26 07:58:22 1995 Ian Lance Taylor + + * gcc.c (MULTILIB_DIRS): Provide default if not defined. + (multilib_defaults): New static variable. + (default_arg): New static function. + (set_multilib_dir): Ignore default arguments. + (print_multilib_info): Ignore entries which use default arguments. + +Tue Jul 25 10:06:09 1995 Michael Meissner + + * rs6000.md (allocate_stack): Don't copy the LR register to + the new stack end. + * rs6000.c (rs6000_stack_info): Correctly store the LR in + the caller's frame, not the current frame, for V.4 calls. + * rs6000/eabi.asm (_save*, _rest*): Provide all mandated V.4 save + and restore functions, except for the save*_g functions which + return the GOT address. + +Fri Jul 21 14:24:25 1995 Michael Meissner + + * rs6000/eabi.h (__eabi): Load up r13 to be the small data + pointer, unless -mrelocatable. + + * rs6000/aix3newas.h (LINK_SPEC): Import machine independent + functions if -mcpu=common. + * rs6000/milli.exp: Import file referenced in aix3newas.h. + + * rs6000/eabi.asm (__eabi): Support for fixing up user initialized + pointers when -mrelocatable is used. + * rs6000/eabi.h (ASM_OUTPUT_INT): Record any pointers initialized + by the user if -mrelocatable, to be fixed up by __eabi. + (CONST_SECTION_ASM_OP): If -mrelocatable, put read-only stuff in .data, + not .rodata, to allow user initialized pointers to be updated by __eabi. + + * rs6000.h (TARGET_SWITCHES): Add -mdebug-{stack,arg}. + (TARGET_{ELF,NO_TOC,TOC}): Add defaults for non system V. + (rs6000_stack): New structure to describe stack layout. + (RS6000_{REG_SAVE,SAVE_AREA,VARARGS_*}): New macros used to + support both AIX and V.4 calling sequences. + (FP_ARG_*, GP_ARG_*): Ditto. + (FP_SAVE_INLINE): Ditto. + (STARTING_FRAME_OFFSET): Modify to support both AIX and V.4 + calling sequences. + (FIRST_PARM_OFFSET): Ditto. + (REG_PARM_STACK_SPACE): Ditto. + (STACK_POINTER_OFFSET): Ditto. + (FUNCTION_ARG_REGNO_P): Ditto. + ({,INIT_}CUMULATIVE_ARGS): Ditto. + (LEGITIMATE_LO_SUM_ADDRESS_P): Ditto. + (FUNCTION_ARG{,_ADVANCE,PARTIAL_NREGS,PASS_BY_REFERENCE}): Ditto. + (SETUP_INCOMING_VARARGS): Ditto. + (EXPAND_BUILTIN_SAVEREGS): Ditto. + (CAN_ELIMINATE): Ditto. + (INITIAL_ELIMINATION_OFFSET): Ditto. + (LEGITIMATE_CONSTANT_POOL_{BASE,ADDRESS}_P): Ditto. + (GO_IF_{LEGITIMATE_ADDRESS,MODE_DEPENDENT_ADDRESS}): Ditto. + (LEGITIMIZE_ADDRESS): Ditto. + (CONST_COSTS): Ditto. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Ditto. + (ASM_OUTPUT_REG_{PUSH,POP}): Use reg_names to print registers. + (function declarations): Add new rs6000.c function declarations, + and delete decls of deleted functions. + (SHIFT_COUNT_TRUNCATED): Parenthesize the expression. + + * rs6000.c (init_cumulative_args): New function to support AIX + and V.4 calling sequences. + (function_arg{,_advance,partial_nregs,pass_by_reference}): Ditto. + (setup_incoming_varargs): Ditto. + (expand_builtin_saveregs): Ditto. + (rs6000_stack_info): Ditto. + (debug_stack_info): Ditto. + (direct_return): Changes to support AIX and V.4 calling sequences. + (first_reg_to_save): Ditto. + (svr4_traceback): Ditto. + (output_{prolog,epilog}): Ditto. + (print_operand): Use reg_names to print registers. Add support + for V.4 HIGH/LO_SUM address modes. + (must_save_cr): Function deleted, in rewrite of AIX/V.4 calling + sequence support. + (rs6000_sa_size): Ditto. + (rs6000_pushes_stack): Ditto. + (output_toc): Add abort if no toc. + + * rs6000.md (call insns): Add a new argument to flag a V.4 + function needs to set bit 6 of the CR. + (elf_{low,high}): New V.4 functions to create addresses via HIGH + and LO_SUM patterns. + (movsi): Use elf_{low,high} if appropriate. + (mov{si,di}_update): Name these patterns for allocate_stack. + (allocate_stack): Support for V.4 stack layout. + (sync): New pattern for V.4 trampolines to issue the sync + instruction. + + * rs6000/sysv4.h (TARGET_SWTICHES): Add -mcall-{aix,sysv}, and + -mprototype. Remove separate flag bit for -mno-toc. + (SUBTARGET_OVERRIDE_OPTIONS): Don't test for -mno-toc. + (FP_ARG_*): Adjust for V.4 calling sequences. + (RS6000_*): Ditto. + (FP_SAVE_INLINE): Ditto. + (toc_section): Eliminate use of AIX style full TOC. + (TRAMPOLINE_{TEMPLATE,SIZE}): Redefine for V.4 support. + (INITIALIZE_TRAMPOLINE): Ditto. + + * rs6000/eabi.h (CPP_SPEC): Define _CALL_SYSV or _CALL_AIX, + depending on whether -mcall-sysv or -mcall-aix was used. + * rs6000/eabile.h (CPP_SPEC): Ditto. + * rs6000/sysv4le.h (CPP_SPEC): Ditto. + + * rs6000/t-eabigas (MULTILIB_{OPTIONS,DIRNAMES}): Delete no-toc + libraries, explicit big endian libraries. + * rs6000/t-ppcgas (MULTILIB_{OPTIONS,DIRNAMES}): Ditto. + + * rs6000/t-eabiaix: New file for eabi, using -mcall-aix as the + default. + * rs6000/eabiaix.h: Ditto. + + * rs6000/t-eabilegas: New file for eabi on little endian systems. + * rs6000/t-ppclegas: New file for V.4 on little endian systems. + + * rs6000/t-rs6000 (MULTILIB_{OPTIONS,DIRNAMES}): Build libgcc.a + for -mcpu=common. + + * configure (powerpc-*-eabiaix): New configuration for defaulting + to old-style AIX calling sequence. + (powerpcle*): Use new t-{eabi,ppc}legas files, to avoid building + explicit little endian multilib libraries. + +Fri Jul 21 13:23:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (main): Don't define sbrk #ifdef __alpha__. + +Tue Jul 18 19:23:44 1995 Paul Eggert + + * cccp.c (do_include): Prefix -H output lines with spaces, not dots. + (output_dots): Remove. + + * cccp.c (main): cplusplus_comments now defaults to 1. + But clear it if -traditional or the new option -lang-c89 is given. + * gcc.c (default_compilers, cpp): Specify -lang-c89 if -ansi is given. + This turns off C++ comment recognition. + +Tue Jul 18 19:16:38 1995 Jim Wilson + + * va-sparc.h (va_arg): Add support for 128 bit long double type. + +Tue Jul 18 19:11:18 1995 Jorn Rennecke (amylaar@meolyon.hanse.de) + + * c-common.c (decl_attributes, case A_ALIGNED): Handle is_type + case properly. + +Tue Jul 18 19:03:02 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold, case CONVERT_EXPR): Don't merge conversions + if outer is to handle a type with differing precision. + +Mon Jul 17 14:37:35 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vax/vms.h (HAVE_ATEXIT): Define. + (DO_GLOBAL_CTORS_BODY): Don't call atexit; let __do_global_ctors do it. + * vax/xm-vms.h (HAVE_VPRINTF): Define. + +Mon Jul 17 06:41:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c ({unsigned,signed}_type): Handle intXX_type_node types. + + * xm-alpha.h (sbrk): Add declaration. + + * convert.c (convert_to_integer): If TYPE is a enumeral type or + if its precision is not the same as the size of its mode, + convert in two steps. + + * m68k.md (tstdi, cmpdi): Use match_scratch, not match_operand. + +Fri Jul 14 19:23:42 1995 Andreas Schwab + + * c-decl.c (field_decl_cmp): Rewritten to make sure that a null + name always sorts low against other names. + * c-typeck.c (lookup_field): Change name comparison to match what + field_decl_cmp does. + +Fri Jul 14 18:46:24 1995 Michael Meissner + + * rs6000.md (movsi): Convert a CONST_DOUBLE into a CONST_INT of + the low part. + +Fri Jul 14 18:30:52 1995 Doug Evans + + * toplev.c (main): Reword dwarf/c++/-g warning. + +Fri Jul 14 18:19:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.h (NO_DEFER_POP): Remove last change. + * expr.c (stor_expr): Force stack adjust before NO_DEFER_POP. + (expand_expr, case COND_EXPR): Likewise. + * stmt.c (expand_start_stmt_expr): Likewise. + +Fri Jul 14 07:58:35 1995 Jim Wilson + + * function.c (struct temp_slot): New fields base_offset, full_size. + (assign_stack_temp): For !FRAME_GROWS_DOWNWARD, set p->size to size. + Set new fields base_offset and full_size. + (combine_temp_slots): Use new fields base_offset and full_size instead + of slot and size. + + * loop.c (loop_number_exit_count): New global variable. + (loop_optimize): Allocate space for it. + (find_and_verify_loops, mark_loop_jump): Set it. + (strength_reduce, check_dbra_loop): Use loop_number_exit_count + instead of loop_number_exit_labels. + * loop.h (loop_number_exit_count): Declare it. + * unroll.c (find_splittable_{regs,givs}, final_[bg]iv_value): Use + loop_number_exit_count instead of loop_number_exit_labels. + (reg_dead_after_loop): Check loop_number_exit_count, and fail + if the count doesn't match loop_number_exit_labels. + + * cse.c (cse_insn): Ifdef out code that pre-truncates src_folded. + + * sparc.md (sethi_di_sp64): Return null string at end. + + * function.h (struct function): Add stdarg field. + * function.c (current_function_stdarg): New global variable. + (push_function_context_to): Save it. + (pop_function_context_from): Restore it. + (assign_parms): Set it. + (init_function_start): Clear it. + * output.h (current_function_stdarg): Declare it. + * i960.md: Modify all patterns which handle stores to memory to also + check current_function_varargs and current_function_stdarg. + + * reorg.c (fill_simple_delay_slots): When trying to take instruction + from after the branch, don't continue past target label. Local + variables passed_label and target_uses are no longer necessary. + +Thu Jul 13 19:30:04 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.c (output_bb): Fix error in long backwards branch with + nullified delay slot. + +Thu Jul 13 19:26:13 1995 Jim Wilson + + * expmed.c (SHIFT_COUNT_TRUNCATED): Use #ifdef not #if. + +Mon Jul 10 20:16:44 1995 Paul Eggert + + * cccp.c (rescan): Don't address outside of array when + preprocessing C++ comments. + +Mon Jul 10 20:05:46 1995 Michael Meissner + + * rs6000.c (expand_block_move): Remove #if 0 conditionals + against using larger block moves. + + * t-rs6000 (EXTRA_PARTS): Copy milli.exp to release dir. + (milli.exp): Copy to build dir from machine dependend dir. + +Mon Jul 10 20:03:29 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (matcher for (shiftable_op (cond-exp) (reg))): If + shiftable_op is minus, then subtract from zero when cond fails. + +Mon Jul 10 19:58:26 1995 John F. Carr + + * sparc.h (SELECT_SECTION): Use TREE_CODE_CLASS instead of directly + referencing tree_code_type. + +Mon Jul 10 19:54:31 1995 Jim Wilson + + * protoize.c (reverse_def_dec_list): Delete const qualifiers from + local variables, and delete casts which were casting away const. + +Mon Jul 10 19:14:39 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-lang.c (finish_file): Add missing parm to start_function call. + + * jump.c (jump_optimize): Pass outer_code arg to rtx_cost. + + * varasm.c (assemble_name, bc_assemble_integer): Call + bc_emit_labelref with proper args. + + * function.c (setjmp_args_warning): Remove bogus arg. + +Mon Jul 10 18:20:54 1995 Fergus Henderson (fjh@cs.mu.oz.au) + + * gcc.c (p{fatal,error}_with_name, perror_exec): Quote filename. + +Mon Jul 10 18:12:51 1995 Gran Uddeborg (uddeborg@carmen.se) + + * i386/iscdbx.h (STARTFILE_SPEC): Handle -Xp. + +Wed Jul 5 02:42:17 1995 Per Bothner (bothner@spiff.gnu.ai.mit.edu) + + * cpphash.h (enum node_type): Remove unneeded and non-standard + forward declaration. + +Sat Jul 1 20:15:39 1995 Jim Wilson + + * mips/t-mips, mips/t-mips-gas (MULTILIB_*, LIBGCC, INSTALL_LIBGCC): + Delete. + + * sparc/sol2.h (LINK_SPEC): Revert March 16 change. Do not add -R + for each -L. + + * collect2.c (libcompare): Verify that file name extensions are valid. + Put files with invalid extensions last in the sort. + + * integrate.c (integrate_decl_tree): Set DECL_ABTRACT_ORIGIN before + pushdecl call for local variables. + +Sat Jul 1 08:13:38 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * cpplib.c (output_line_command): If not emitting #line directives + delay returning until after adjust_position has been called. + + * arm.md (mov{si,sf,df}cc): Call gen_compare_reg to generate + the condition code register. + +Sat Jul 1 06:55:09 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (decode_field_reference): New parm PAND_MASK. + (unextend): New parm MASK. + (fold_truthop): Pass new parms to decode_field_reference and unextend. + + * va-alpha.h (__va_tsize): Use __extension__ to avoid warning + on use of `long long'. + + * expr.h (NO_DEFER_POP): Do any pending stack adjusts. + + * recog.c (register_operand): Disallow subreg of reg not allowed to + change size. + +Thu Jun 29 05:51:57 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.md (reload addsi3): New pattern to avoid reload lossage + with register eliminations. + + * pa.c (output_cbranch): When checking for a jump to the given + insn's delay slot, handle the case where JUMP_LABEL for the + given insn does not point to the first label in a series of + labels. + (output_bb, output_dbra, output_movb): Likewise. + +Wed Jun 28 18:04:56 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.h (PIC_OFFEST_TABLE_REGNUM_SAVED): Define to %r4. + (CONDITIONAL_REGISTER_USAGE): Make it fixed when compiling + PIC code. + (INIT_EXPANDERS): Delete. + * pa.c (hppa_save_pic_table_rtx): Delete variable. + (hppa_expand_prologue): For PIC generation, copy the PIC + register into a fixed callee register at the end of the + prologue of non-leaf functions. + * pa.md (call expanders): Reload the PIC register from the + fixed callee saved register. Don't try to save the PIC + register before the call. + +Wed Jun 28 18:01:14 1995 Stan Cox (coxs@dg-rtp.dg.com) + + * m88k/dguxbcs.h (ASM_SPEC): Removed -h flag. + * m88k/dgux.h (ASM_SPEC): Likewise. + +Wed Jun 28 17:01:58 1995 David Edelsohn + + * rs6000.c (processor_target_table): Remove CPU name synonyms. + * rs6000.h (CPP_SPEC): Likewise. + * rs6000/sysv4.h (CPP_SPEC): Likewise. + (ASM_SPEC): Likewise. + * rs6000/sysv4le.h (CPP_SPEC): Likewise. + * rs6000/eabile.h (CPP_SPEC): Likewise. + * rs6000/powerpc.h (CPP_SPEC): Likewise. + (ASM_SPEC): Set assembler target according to compiler target. + * rs6000/aix3newas.h (CPP_SPEC): Likewise. + (ASM_SPEC): Likewise. + * rs6000/aix41.h (CPP_SPEC): Likewise. + (ASM_SPEC): Likewise. + +Wed Jun 28 16:25:53 1995 Gran Uddeborg (uddeborg@carmen.se) + + * i386/x-isc3 (INSTALL_HEADERS_DIR): Delete; done by configure. + +Wed Jun 28 16:10:47 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * xm-rs6000.h (alloca): Extern decl added for non-GNU compiler. + +Wed Jun 28 11:31:30 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cpplib.c (progname): Remove definition from here. + + * final.c (final_scan_insn): Fix error in last change. + + * rtlanal.c (reg_set_p_1): Now static; add extra parm. + + * stmt.c: Delete redundant forward decls. + (expand_anon_union_decl): Correctly call expand_decl. + + * toplev.c (strip_off_ending): Strip off any ending; don't + pretend we know what valid endings are. + + * svr4.h (ASM_OUTPUT_SECTION_NAME): Don't crash if DECL is null. + + * rs6000.md ({load,store}_multiple): Don't use indirect_operand + in define_insn; use explicit MEM of register_operand instead. + +Tue Jun 27 11:42:56 1995 Stephen L Moshier + + * i386/i386.c (print_operand, case `J'): Use jns for GE and js for + LT. + +Tue Jun 27 07:58:55 1995 Jason Merrill + + * expr.c (expand_expr, TARGET_EXPR): Only use original_target + if !ignore. + +Tue Jun 27 07:27:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold_truthop): Commute unextend and convert on + l_const and r_const. + + * c-common.c (decl_attributes, case A_CONSTRUCTOR, A_DESTRUCTOR): + Set TREE_USED. + + * final.c (final_scan_insn): Don't call alter_cond unless + condition is on cc0. + + * stmt.c (expand_asm_operands): Handle input operands that may not + be in a register. + +Mon Jun 26 19:23:05 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/lib1funcs.asm (L_dvmd_tls): Renamed from L_divmodsi_tools. + * arm/t-semi (LIB1ASMFUNCS): Rename _dvmd_tls from _divmodsi_tools. + +Mon Jun 26 19:18:06 1995 Jim Wilson + + * unroll.c (find_splittable_regs): When completely unrolling loop, + check for non-invariant initial biv values. + +Mon Jun 26 19:13:54 1995 Gran Uddeborg + + * configure (i[345]86-*-isc*): Fix misspelled "rfile" to "ifile". + +Mon Jun 26 18:58:22 1995 Mike Stump + + * expr.c (expand_expr, case COND_EXPR): Protect the condition from + being evaluated more than once. + (do_jump, case TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Likewise. + +Mon Jun 26 18:52:36 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (string.h): Fix return value for mem{ccpy,chr,cpy,set} + and str{len,spn,cspn} on sysV68. + +Mon Jun 26 06:54:50 1995 Michael Meissner (meissner@cygnus.com) + + * i386/osfrose.h (LONG_DOUBLE_TYPE_SIZE): Go back to making long + double == double. + +Thu Jun 22 19:14:41 1995 Pat Rankin (rankin@eql.caltech.edu) + + * make-cc1.com (if DO_LINK): Skip c-parse.* processing when + only relinking. + (gas_message): Update to reflect current version, and give + a different message if/when no version of gas is found.xo + +Thu Jun 22 18:52:37 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/lib1funcs.asm (___modsi3): Correctly set SIGN register for + modulo involving negative numbers. + +Thu Jun 22 18:32:27 1995 Uwe Seimet (seimet@chemie.uni-kl.de) + + * xm-atari.h (HZ): Now 100 and don't define if already defined. + +Thu Jun 22 18:26:12 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * calls.c (expand_call): Correctly handle returning BLKmode + structures in registers when the size of the structure is not + a multiple of word_size. + * stmt.c (expand_return): Likewise. + + * pa-gux7.h (LIB_SPEC): Undefine before redefining. + * pa-hpux.h (LIB_SPEC): Likewise. + * pa-hpux7.h (LIB_SPEC): Likewise. + + * genmultilib: Work around hpux8 /bin/sh case bug. + + * pa.h (LIB_SPEC): Define to avoid -lg. + +Thu Jun 22 18:19:09 1995 Jason Merrill + + * expr.c (expand_expr, TARGET_EXPR): Use original_target. + + * collect2.c (locatelib): Fix parsing of LD_LIBRARY_PATH. + +Thu Jun 22 18:15:54 1995 Paul Eggert + + * configure: Create an empty Makefile.sed first, to work + around a Nextstep 3.3 bug. + +Thu Jun 22 18:03:44 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Makefile.in (STAGESTUFF): Add stamp-crt. + (crtbegin.o, crtend.o): Now depend on stamp-crt. + (stamp-crt): New rule, to actually build crt{begin,end}.o. + + * collect2.c (main): Unlink export_file before we return. + +Thu Jun 22 14:25:56 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000.h (STRIP_NAME_ENCODING): Store NAME and strlen(NAME) into + local variables; cast result of alloca to avoid compiler warnings. + +Tue Jun 20 18:25:29 1995 Douglas Rupp (drupp@cs.washington.edu) + + * alpha/config-nt.sed, i386/config-nt.sed: Edit to add + a missing $(exeext) for CCCP. + +Tue Jun 20 18:18:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * protoize.c (default_include): Use name and two ints to be + compatible with definition of INCLUDE_DEFAULTS. + +Mon Jun 19 19:24:29 1995 Ted Lemon + + * mips/netbsd.h (ASM_DECLARE_FUNCTION_NAME): Don't emit function label. + +Mon Jun 19 18:34:55 1995 Jason Merrill + + * fixincludes: Don't define wchar_t under C++. + +Mon Jun 19 17:12:41 1995 Paul Eggert + + * cccp.c (collect_expansion): Work around enum bug in vax + ultrix 4.3 pcc. + * tree.c (simple_cst_equal): Likewise. + +Mon Jun 19 16:53:00 1995 Douglas Rupp (drupp@cs.washington.edu) + + * winnt/spawnv.c: New file. + +Mon Jun 19 16:30:29 1995 Glenn Brown + + * caller-save.c (save_call_clobbered_regs): If AUTO_INC_DEC, mark + register indicated by REG_INC notes as live so they will be saved. + +Mon Jun 19 16:21:12 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * pa.h (PRINT_OPERAND_ADDRESS, case LOW_SUM): Fix logic bug + in last change. + +Mon Jun 19 14:11:49 1995 Jim Wilson + + * integrate.c (integrate_decl_tree): Only set DECL_ABSTRACT_ORIGIN + if the decl returned by pushdecl is the one we started with. + + * mips.h (current_function_name): Delete declaration. + (ASM_DECLARE_FUNCTION_NAME): Don't set current_function_name. + * gnu.h (ASM_DECLARE_FUNCTION_NAME): Likewise. + * mips.c (current_function_decl): Delete declaration. + (function_prologue): New variable fnname. Use it instead of + current_function_name. + (function_epilogue): Likewise. + +Mon Jun 19 13:13:15 1995 Richard Kenner + + * alpha.h (ASM_OUTPUT_ASCII): Always reset line count when + starting new line. + + * scan-decls.c (scan_decls): Fix typo when resetting PREV_ID_START. + + * i386/config-nt.sed, alpha/config-nt.sed: Change version to 2.7.1. + +Mon Jun 19 13:06:14 1995 DJ Delorie (dj@delorie.com) + + * msdos/top.sed: Support new build variables. + * msdos/configur.bat: Make options.h and specs.h. + Change realclean to maintainer-clean. + +Fri Jun 16 06:54:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Version 2.7.0 Released. + + * obstack.c: Always enable this code for now. + + * alpha.c (alpha_builtin_saveregs): Use ptr_mode and conversions + when need so works for both OSF and NT. + * va-alpha.h (__va_tsize): Round to long long not long. + +Thu Jun 15 17:54:52 1995 Bdale Garbee + + * configure (a29k-*-coff): Synonym for a29k-*-udi. + +Thu Jun 15 17:51:21 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (assign_parms): Do all conversions in CONVERSION_INSNS. + +Thu Jun 15 17:36:49 1995 Michael Meissner + + * reg-stack.c (record_reg_life): Call record_reg_life_pat with 0 + for douse argument so that USE's created to mark variables within + blocks don't get marked as set. + +Thu Jun 15 06:28:15 1995 Dennis Glatting (dennisg@CyberSAFE.COM) + + * configure: Change one sed command to work around m68k-next bug. + +Wed Jun 14 22:14:39 1995 Jason Merrill + + * collect2.c (main): Don't turn off auto_export because of -g. + (main): Ignore the argument to -o. + + * alpha.h (LINK_SPEC): Don't pass -init __main anymore. + * alpha/osf12.h (LINK_SPEC): Ditto. + * mips/iris5.h (LINK_SPEC): Ditto. + + * collect2.c (main): Place o_file after an initial .o (like crt0.o). + If we have LD_INIT_SWITCH, use init and fini functions for + executables, too. Specify the unique function names. + (write_c_file_stat): Fix the case of destructors but no constructors. + Don't include the generic-named functions for executables. + (write_c_file): If we have LD_INIT_SWITCH, always use + write_c_file_stat. + + * collect2.c (main): Also add _GLOBAL__D? to export list. + + * ginclude/iso646.h: Do nothing if compiled as C++. + +Wed Jun 14 17:39:10 1995 Roland McGrath (roland@gnu.ai.mit.edu) + + * c-common.c (format_char_info, case 'm'): Set type to void. + (check_format_info): If type is void, ignore operand. + +Wed Jun 14 17:04:10 1995 Paul F. Kunz (Paul_Kunz@SLAC.Stanford.EDU) + + * expr.c (expand_builtin_apply_args): Put back original + register save and restore order. + +Wed Jun 14 16:56:22 1995 Michael Meissner + + * rs6000/eabi.h (INVOKE__main): Define, so __eabi is called after + main's arguments are saved. + + * rs6000.c (output_prolog): Don't call __eabi here, let + compiler call it after the arguments to main are saved. + (output_{prolog,epilog}): Don't use functions under V.4 to save + and restore floating point registers. + +Wed Jun 14 16:52:12 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k/mot3300.h (PCC_BITFIELD_TYPE_MATTERS): Defined. + +Wed Jun 14 16:48:53 1995 Jerry Frain (jerry@tivoli.com) + + * Makefile.in (stage[1-4]): Correctly link `as', `ld', and `collect2'. + +Wed Jun 14 05:52:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc-act.c (hack_method_prototype): Set DECL_CONTEXT of parms. + + * expmed.c (emit_store_flag): Always set LAST. + + * c-decl.c (start_function): New parameter for attributes. + * c-tree.h (start_function): Likewise. + * c-lang.c (finish_file): Pass extra parm to start_function. + * objc-act.c (build_module_descriptor, really_start_method): Likewise. + * c-parse.in (fndef, nested_function, notype_nested_function): + Likewise. + + * function.c (assign_parms): Use convert_to_mode instead of + gen_lowpart when converting incoming parm. + +Tue Jun 13 19:10:32 1995 Richard Kenner + + * rs6000.md (decrement_and_branch): Finish last fix; update matching + constraint. + +Tue Jun 13 18:32:51 1995 Torbjorn Granlund + + * fold-const.c (fold): When converting a COND_EXPR to an ABS_EXPR, + get the types right for ABS_EXPR to work. + +Mon Jun 12 17:09:55 1995 Michael Tiemann (tiemann@axon.cygnus.com) + + * reorg.c (fill_simple_delay_slots): Set MAYBE_NEVER according to + code of TRIAL_DELAY, not TRIAL. + +Mon Jun 12 15:02:37 1995 Doug Evans + + * configure: Restore code to make ld symlink if ! use_collect2. + + * gcc.c (link_command_spec): Undo patch of May 11. + -nostdlib implies -nostartfiles again. + * dsp16xx.h (CROSS_LINK_SPEC): Likewise. + * i386/freebsd.h (LINK_SPEC): Undo patch of May 24. + Don't pass "-e start" if nostdlib. + * i386/sun.h (LINK_SPEC): Likewise. + * m68k/sun2o4.h (LINK_SPEC): Likewise. + * m68k/sun3.h (LINK_SPEC): Likewise. + * m68k/vxm68k.h (LINK_SPEC): Likewise. + * mips/netbsd.h (LINK_SPEC): Likewise. + * config/netbsd.h (LINK_SPEC): Likewise. + * rs6000/mach.h (LINK_SPEC): Likewise. + * sparc.h (LINK_SPEC): Likewise. + * sparc/vxsparc.h (LINK_SPEC): Likewise. + + * gcc.c (link_command_spec): New argument -nodefaultlibs. + +Sun Jun 11 20:47:53 1995 Stephen L Moshier (moshier@world.std.com) + + * Makefile.in (fix-header.o): Depends on xsys-protos.h. + +Sun Jun 11 15:07:58 1995 Tim Carver (timc@ibeam.intel.com) + + * reload1.c (emit_reload_insns): Don't call HARD_REGNO_NREGS + on psuedo when clearing reg_last_reload_reg. + +Sun Jun 11 14:07:05 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md ({add,sub}di{_mem,3}): Patterns merged. + +Sun Jun 11 13:43:26 1995 Torbjorn Granlund + + * m68k.md (cmpdi matcher): Set cc_status before returning. + + * config/xm-freebsd.h (DONT_DECLARE_SYS_SIGLIST): Define. + +Sun Jun 11 13:38:49 1995 Jason Merrill + + * fixincludes (math.h): Keep declaration of abs on HPUX. + +Sun Jun 11 12:31:42 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (variable_size): Do nothing if SIZE is constant. + + * stmt.c (expand_asm_operands): See if output operand permits + register. If not, mark output addressable, call expand_operand + on it, and give error if not MEM. + + * function.c (assign_parms): Handle promotions of both + passed and nominal modes separately and insert needed conversions. + (promoted_input_arg): Return 0 if nominal and passed modes differ. + + * stmt.c (all_cases_count, case INTEGER_TYPE): Fix typo in checking + for integer bounds. + +Sat Jun 10 08:55:25 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (_floatdidf): Correctly set float sizes. + + * c-decl.c (c_decode_option, case "-Wall"): Don't set extra_warnings. + + * Makefile.in (cpplib.o, fix-header.o): Update dependencies. + (cpperror.o, cppexp.o, cpphash.o): New rules, to show .h dependencies. + +Fri Jun 9 18:06:10 1995 Doug Evans + + * cse.c (cse_basic_block): Fix test for whether block ends with a + barrier. Return next insn, not 0, if block ends in a barrier. + +Fri Jun 9 17:58:29 1995 Paul Eggert + + * fold-const.c (lshift_double): Replace `&' with `%' to fix typo. + ([lr]shift_double): Truncate shift count only if SHIFT_COUNT_TRUNCATED. + Remove unnecessary `count >= prec' test. + + * cexp.y (left_shift): Ignore integer overflow. + + * cexp.y (skip_evaluation): New variable. + (&&, ||, ?:): Increment it in unevaluated subexpressions. + (/, %, integer_overflow): Suppress diagnostics if skip_evaluation != 0. + (yyerror): Clear skip_evaluation. + +Fri Jun 9 17:49:05 1995 Torbjorn Granlund + + * m68k.md (tstdi): Rewrite. + +Fri Jun 9 17:28:55 1995 Per Bothner + + * scan-decls.c (scan_decls): Handle declarations with + multiple comma-separated declarators. + +Thu Jun 8 19:16:12 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (mov[sd]f expands): Don't allow fp constants in pseudos + when TARGET_SOFT_FLOAT. + +Thu Jun 8 19:11:43 1995 Jim Wilson + + * expmed.c (store_split_bit_field): When adjust arg in + BYTES_BIT_ENDIAN case, use number of bits in arg for MEM operands + and BITS_PER_WORD for other operands. + (extract_fixed_bit_field): Undo last change. + + * unroll.c (verify_addresses): New function. + (find_splittable_givs): Use it instead of memory_address_p. + +Thu Jun 8 18:58:18 1995 Torbjorn Granlund + + * expmed.c (expand_divmod): Always check result of emit_store_flag. + +Thu Jun 8 12:02:34 1995 David D Zuhn (zoo@armadillo.com) + + * cpplib.c (cpp_push_buffer): Include filename in error message. + +Thu Jun 8 11:53:45 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (assign_parms): Don't call promote_mode on arg + unless PROMOTE_FUNCTION_ARGS defined. + + * rs6000.md (decrement_and_branch): Ensure label is operand 0. + + * rs6000.md (aux_truncdfsf2): New pattern. + (movsf): Use it instead of invalid SUBREG and truncdfsf2. + + * varasm.c (assemble_name): Disable warn_id_clash around + get_identifier call. + +Wed Jun 7 17:22:25 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * configure (gdb_needs_out_file_path): New variable. + (m68k-motorola-sysv): Set gdb_needs_out_file_path if not using gas. + (.gdbinit): If gdb_needs_out_file_path is set, add a 'dir' command + for $(out_file). + +Wed Jun 7 17:17:19 1995 Torbjorn Granlund + + * fold-const.c (fold): When folding `<' type nodes, make true_value + and false_value have correct types. + +Wed Jun 7 05:06:42 1995 Jason Merrill + + * collect2.c (COFF scan_prog_file): Use the AIX duplicate entry. + +Tue Jun 6 18:43:09 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * pa.h (FUNCTION_ARG_CALLEE_COPIES): Define. + +Tue Jun 6 18:21:18 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Consider two types + identical if their TYPE_MAIN_VARIANTs are the same. + + * c-decl.c (start_decl): Set DECL_COMMON before calling + decl_attributes. + + * a29k.c (print_operands): Cast args to bcopy to char *. + + * c-decl.c (duplicate_decls): Don't clear DECL_CONTEXT of + new decl if it is a function. + +Tue Jun 6 17:57:44 1995 Eberhard Mattes (mattes@azu.informatik.uni-stuttgart.de) + + * gcc.c (do_spec_1, case 'g'): Handle %O as suffix if MKTEMP_EACH_FILE. + +Tue Jun 6 17:53:05 1995 Michael Meissner + + * rs6000.c (expand_block_move): Update source and destination pointers + inside the loop moving the bytes, not outside. + +Tue Jun 6 14:58:37 1995 Andreas Schwab + + * m68k.h (CONDITIONAL_REGISTER_USAGE): Don't mark pic reg as fixed. + * m68k.c (finalize_pic): Emit USE insn at start and end of function. + +Tue Jun 6 13:46:57 1995 Jim Wilson + + * sh.c (print_operand): Check for annulled branches. + (output_movedouble): Handle SUBREG addresses. + (output_branch): Handle annulled branches. + (sh_expand_prologue): Correct number of saved registers for + varargs functions. + * sh.h: Add some comments. + * sh.md: Add some comments. Cleanup formatting. + (type attribute): Add pstore and call. + (return define_delay): Reorganize to make clearer. + (call/sfunc define_delay): Define. + (cbranch define_delay): Define to have annul-true delay slot. + (subsi3): Use arith_reg_operand for operand 2. + (shift patterns): Use const_int_operand instead of immediate_operand + for shift counts. + (push): Add pstore constraint case. + (movsi_i): Move t/z constraint pair to the front of the list. + (calli, call_valuei): Add "call" attribute. + +Mon Jun 5 19:23:13 1995 Jim Wilson + + * sched.c (attach_deaths): In last change, use find_reg_note instead + of find_regno_note. + +Mon Jun 5 19:17:31 1995 Tom Quiggle (quiggle@lovelace.engr.sgi.com) + + * mips/iris5.h (MACHINE_TYPE): Say "IRIX 5.x", not "5.0". + (NO_DOLLAR_IN_LABEL): Undefine. + * mips.h (sdb_begin_function_line): New declaration. + (PUT_SDB_FUNCTION_END): New definition. + +Mon Jun 5 18:56:10 1995 Michael Meissner + + * rs6000.c (expand_block_move): Don't do block moves where we clobber + fixed numbers of regs, instead move just 1-8 bytes at a time. + + * Makefile.in (STAGESTUFF): Copy files produced by -da and + -save-temps to the stage subdirectories. + +Mon Jun 5 08:18:46 1995 Torbjorn Granlund + + * combine.c (reg_dead_at_p): When scanning backwards, stop at BARRIER. + + * m68k.c (print_operand): Handle 'R' for registers. + * m68k.md (cmpdi): Rewrite to avoid bogus matching constraints. + + * optabs.c (expand_binop): In last change, don't defererence TARGET + if it is 0. + + * pa.md (movsicc): Use MATCH_DUP for operand 4 and 5. + +Mon Jun 5 08:14:56 1995 Jeffrey A Law (law@cs.utah.edu) + + * pa.c (hppa_encode_label): Allocate stuff on permanent_obstack + rather than via malloc. + + * c-common.c (decl_attributes): Fix typo in size passed to alloca. + +Mon Jun 5 08:10:55 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.md: Use "some_operand" for patterns valid only during + reload and meant to handle adding more PLUS operators during + register elimination. + +Mon Jun 5 07:31:53 1995 Stephen L Moshier (moshier@world.std.com) + + * cse.c (simplify_unary_operation, case FLOAT, UNSIGNED_FLOAT): + Truncate to requested mode. + +Sat Jun 3 22:08:51 1995 Jim Wilson + + * sched.c (attach_deaths): Don't add a REG_DEAD note if a REG_UNUSED + note is already present. + +Sat Jun 3 18:36:57 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa.h (hppa_builtin_saveregs): Add declaration. + +Sat Jun 3 18:11:26 1995 Jason Merrill + + * Makefile.in (scan-decls.o): Depends on cpplib.h. + +Fri Jun 2 19:23:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * optabs.c (expand_binop): Don't use non-REG TARGET in 2-word case. + +Thu Jun 1 19:30:30 1995 Tor Egge (tegge@flipper.pvv.unit.no) + + * m88k.h (RETURN_POPS_ARGS): New argument. + * m88k/dolphin.ld: Added start of comment. + +Thu Jun 1 19:12:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (a29k-*-bsd*): Fix typo in last change. + +Thu Jun 1 18:51:53 1995 Jim Wilson + + * expmed.c (extract_fixed_bit_field): For REG case, compute total_bits + from mode instead of assuming BITS_PER_WORD. + +Thu Jun 1 18:34:31 1995 Michael Meissner + + * rs6000.h (FIXED_R13): Default to 0. + ({FIXED,CALL_USED}_REGISTERS): Use FIXED_R13 for register 13. + * sysv4.h (FIXED_R13): Define to be 1. + +Wed May 31 20:57:26 1995 Torbjorn Granlund + + * m68k.md ([su]mulsi3_highpart): Pass correct number of arguments to + const_uint32_operand. + * m68k.c (const_uint32_operand): Reject negative numbers. + + * expmed.c (expand_mult_highpart): Use wide_op1 for all multiplies. + (expand_divmod): Undo Nov 12 change. Instead, add special case + for division by MIN_INT in signed TRUNC_DIV_EXPR case. + +Wed May 31 20:44:21 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (one_cmpldi2): New pattern. + ({a,l}shrdi{3,_const}): Allow 63 as shift count. + +Wed May 31 14:56:31 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_start_function, assemble_variable): + Make sure first_global_object_name is in permanent obstack. + + * reload1.c (alter_reg): Clean up setting of RTX_UNCHANGING_P + when making a MEM. + + * reorg.c (struct resources): New field unch_memory. + (CLEAR_RESOURCES, mark_target_live_regs, dbr_schedule): Clear it. + (mark_{referenced,set}_resources, redundant_insn): Set it. + (fill_simple_delay_slots): Likewise. + (resource_conflicts_p): Test it. + + * unroll.c (copy_loop_body): Fix typo in call to sets_cc0_p. + + * integrate.c (output_inline_function): Don't call expand_function_end. + + * calls.c (prepare_call_address): Only call use_reg on + static_chain_rtx if it is a REG. + + * configure (a29k-*-bsd*): Use t-a29k. + * t-a29k: New file. + * a29k/t-a29kbare (LIBGCC1_TEST): New null definition. + * a29k/t-vx29k (LIBGCC1_TEST): Likewise. + +Wed May 31 14:17:42 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * configure (hppa*-*-bsd*): Do not run fixincludes. + (hppa*-*-osf*): Likewise. + (hppa*-*-lites*): Likewise. + + * pa.h (PRINT_OPERAND_ADDRESS): Use "RR'" rather than "R'" for + symbolic addresses. + * pa.md (symbolic HIGH patterns): Likewise. + (symbolic LO_SUM pattern): Likewise. + +Wed May 31 14:11:53 1995 Michael Meissner + + * rs6000.md (all movstri recognizers): Eliminate updating the pointers. + * rs6000.c (expand_block_move): Don't pass argument of # bytes to + increment pointers by to movstrsi expanders. + + * rs6000.c (rs6000_override_options): Fix typo with -mstring handling. + + * rs6000.h (TARGET_SWITCHES): Set MASK_STRING_SET explicitly + if -mno-string, so that it can override the processor default. + +Wed May 31 07:31:53 1995 Jason Merrill + + * c-common.c (truthvalue_conversion, BIT_AND_EXPR): Make sure that + the result has boolean_type_node. + +Tue May 30 19:03:21 1995 J.T. Conklin + + * stddef.h: Undefine _BSD_XXX_T_ if _GCC_XXX_T is defined on BSD + Net/2 derived systems. + +Tue May 30 08:17:37 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (decrement_and_branch_until_zero): Operand 0 constraint + changed from "+g" to "+d*am". + (similar anonymous HImode pattern): Likewise. + + * m68k.md (tstdi): Use tst/subx #0 instead of neg/negx. + Allow "a" and ">" for operand 0. + +Mon May 29 19:24:43 1995 Niklas Hallqvist (niklas@appli.se) + + * m68k.md (addsi_lshrsi_31): Use match_dup, not constraint "1", + for matching inputs. + +Mon May 29 12:39:58 1995 Allen Briggs + + * i386/isc.h ({STARTFILE,LIB,CPP}_SPEC): Handle -Xp like -posix. + * i386/x-isc3 (X_CFLAGS): Add -Xp. + +Mon May 29 12:28:41 1995 J.T. Conklin (jtc@cygnus.com) + + * configure (sparc-*-netbsd): Add missing asterisk at end. + +Mon May 29 08:55:48 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (recog_for_combine): New parm PADDED_SCRATCHES; set it. + (try_combine): Accumulate number of scratches and update max_scratch. + (simplify_set): Add extra parm to recog_for_combine. + + * romp.md (call): Put USE for r0 in CALL_INSN; call call_internal + to emit insn. + (call_internal): New name for anonymous call. + (call_value, call_value_internal): Likewise. + + * winnt/xm-winnt.h: Protect most definitions with #ifndef. + * alpha/xm-winnt.h: Include alpha/xm-alpha.h, then winnt/xm-winnt.h. + (POSIX): Undefine. + * xm-alpha.h: Don't include alloca.h for winnt. + +Sun May 28 18:34:01 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Make sed commands more uniform. + + * Makefile.in: Properly use $(srcdir) for files that have it + in their reference as a target of a rule. + (libgcc1.a): Add missing RANLIB_TEST use. + + * stmt.c (expand_computed_goto): Call do_pending_stack_adjust. + +Sun May 28 18:08:41 1995 Torbjorn Granlund + + * m68k.md (divmodhi4, udivmodhi4): Use "dmsK" for operand 2. + +Fri May 26 17:01:22 1995 Paul Eggert + + * fixincludes: Fix bogus recursive in NEWS-OS 4.0C. + +Fri May 26 08:02:14 1995 Michael Meissner (meissner@cygnus.com) + + * c-typeck.c (initializer_constant_valid_p): For the CONSTRUCTOR + case, if the type is a record, recurse, just like for unions. + +Thu May 25 07:56:14 1995 Paul Eggert + + * fixincludes: Add `sel', `tahoe', `r3000', `r4000' to the + list of pre-ANSI symbols that need to be surrounded with __ __. + Allow white space between `#' and `if' when looking for lines to patch. + + * objc/sarray.h (PRECOMPUTE_SELECTORS, struct soffset): + Use #ifdef __sparc__, not sparc. + + * m68k.md (addsi_lshrsi_31, ashldi_const, ashrdi_const, lshrdi_const): + Replace `mov' with `move'. + +Thu May 25 07:35:37 1995 Allen Briggs + + * libgcc2.c (L_eh, i386): Remove in-line comments in assembly + code--the '#' character is not valid for the SYSV as. + +Thu May 25 07:28:54 1995 Pat Rankin (rankin@eql.caltech.edu) + + * Makefile.in (BC_ALL): Restore it from May 22 change; vms uses it. + (STAGESTUFF): Use it. + +Thu May 25 07:11:56 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_emit_set_const): Don't call expand_binop for + other than add if SImode and can't create pseudos. + +Wed May 24 21:38:24 1995 Jim Wilson + + * sched.c (reemit_notes): New function. + (schedule_block): Call reemit_notes twice. Reorganize code for + handling SCHED_GROUP_P insns, so that reemit_notes works. + + * sh/sh.c (shiftcosts, genshifty_op): Add SH3 support. + * sh/sh.md (ashlsi3, lshrsi3): Add SH3 support. + (ashlsi3_d, ashrsi3_d, lshrsi3_d): New patterns for SH3. + (ashrsi2_31): Remove r/!r constraint. + +Wed May 24 17:00:47 1995 Jason Merrill + + * tree.c (type_list_equal): Call simple_cst_equal before checking + types. + +Wed May 24 16:49:49 1995 Douglas Rupp (drupp@cs.washington.edu) + + * Makefile.in (libgcc2.a): Handle case of separate srcdir. + +Wed May 24 16:22:01 1995 Paul Eggert + + * configure: Define $(MAKE) if `make' doesn't. + +Wed May 24 15:50:51 1995 Doug Evans + + * dsp16xx.h (CROSS_LINK_SPEC): ENDFILE_SPEC moved to -nostartfiles. + * i386/freebsd.h (LINK_SPEC): Don't pass "-e start" if nostartfiles + rather than nostdlib. + * i386/sun.h (LINK_SPEC): Likewise. + * m68k/sun2o4.h (LINK_SPEC): Likewise. + * m68k/sun3.h (LINK_SPEC): Likewise. + * m68k/vxm68k.h (LINK_SPEC): Likewise. + * mips/netbsd.h (LINK_SPEC): Likewise. + * config/netbsd.h (LINK_SPEC): Likewise. + * rs6000/mach.h (LINK_SPEC): Likewise. + * sparc.h (LINK_SPEC): Likewise. + * sparc/vxsparc.h (LINK_SPEC): Likewise. + + * m88k/m88k.h (FUNCTION_ARG_BOUNDARY): Use GET_MODE_BITSIZE. + +Wed May 24 15:44:04 1995 Jason Merrill + + * fold-const.c (fold): Make sure that a folded TRUTH_NOT_EXPR + retains the same type. + + * c-common.c (truthvalue_conversion): Also accept TRUTH_NOT_EXPR. + +Wed May 24 15:41:51 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cplus-dem.c (strstr, strncmp, strlen): Remove declarations. + + * tree.c (type_list_equal, simple_cst_list_equal, index_type_equal): + Check for simple_cst_equal return value of -1. + +Wed May 24 10:05:24 1995 Michael Meissner + + * libgcc1-test.c (start, _start): Provide declarations, so that + the GNU linker doesn't give a warning message about defaulting the + start address. + + * rs6000/sysv4.h (STRIP_NAME_ENCODING): Redefine back to the + original defination, rather than the defination used in rs6000.h. + (ASM_OUTPUT_SOURCE_LINE): Use STRIP_NAME_ENCODING. + * rs6000.h (STRIP_NAME_ENCODING): Skip leading '*'. + + * rs6000.h (MASK_STRING_SET, TARGET_STRING_SET): Add target + flags bit for whether -mstring was actually used. + (TARGET_SWITCHES): Add MASK_STRING to all power targets. Set + MASK_STRING_SET for -mstring and -mno-string. + (TARGET_DEFAULT): Add MASK_STRING. + + * rs6000.c (rs6000_override_options): Add MASK_STRING to + all power targets. Make an explicit -mstring/-mno-string override + the -mcpu=processor default. + + * rs6000/eabile.h (CPP_SPEC): Copy from sysvle.h to provide the + appropriate little endian defaults. + + * rs6000/sysv4.h (ASM_OUTPUT_SOURCE_LINE): Use assemble_name to + output the canonical name. + +Wed May 24 01:21:15 1995 Jason Merrill + + * rs6000.h (STRIP_NAME_ENCODING): Define. + (RS6000_OUTPUT_BASENAME): Use it. + +Tue May 23 19:54:21 1995 Doug Evans + + * gcc.c (link_command_spec): Move ENDFILE_SPEC from -nostdlib + to -nostartfiles. + +Tue May 23 17:01:50 1995 Jim Wilson + + * alpha.md (negsi2-2): Change output pattern to #. + + * mips.c (embedded_pic_offset): Output RTL to initialize + embedded_pic_fnaddr_rtx. + (mips_finalize_pic): Delete. + * mips.h (mips_finalize_pic): Delete declaration. + (FINALIZE_PIC): Delete. + (INIT_EXPANDERS): Clear embedded_pic_fnaddr_rtx. + * mips.md (get_fnaddr): Add = to output contraint. + + * sh.c (shift_amounts): Correct entry for shifts by 29. + * sh.md (sett): New pattern. + (movsi_i): Change source constraint for move to T reg to be 'z'. + + * mips/ecoff.h (STARTFILE_SPEC): Define to null string. + * mips/elfl.h, mips/elfl64.h: Correct typo in comment. + + * mips/elflorion.h, mips/elforion.h (MIPS_CPU_DEFAULT): Delete. + * mips.c (override_options): Delete #ifdef MIPS_CPU_DEFAULT code. + Add #ifdef MIPS_CPU_DEFAULT_STRING code before the first + mips_cpu_string test. + +Tue May 23 07:22:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * romp.c (hash_rtx): Avoid warning on int-to-pointer conversion. + (output_fpops): Cast args to bcopy to char *. + + * cpplib.c (initialize_builtins): Add missing parm to timestamp call. + + * Makefile.in (install-libobjc): Don't depend on libobjc.a. + + * c-parse.in: Objc shift/reduce conflicts now 48. + (parm): Use setspecs/restore here. + (parmlist_or_identifiers): Not here. + +Mon May 22 19:30:30 1995 Doug Evans + + * h8300.md (movsf_h8300h): Add missing post-inc case to constraints. + +Mon May 22 14:38:36 1995 Michael Meissner + + * rs6000.c (rs6000_override_options): Do SUBTARGET_OVERRIDE_OPTIONS + here. + * rs6000.h (OVERRIDE_OPTIONS): Not here. + + * rs6000.c (expand_block_move): Handle moves without string + instructions by generating a series of loads and stores. + (output_prolog): Support -mno-toc on V.4 and eabi systems. + + * rs6000/sysv4.h (TARGET_SWITCHES): Add -mtoc and -mno-toc. + (SUBTARGET_OVERRIDE_OPTIONS): Add some warnings for incompatible + switches. + (TOC_SECTION_FUNCTION): Make -mno-toc like -mrelocatable in that + we don't put the minimal toc pointer in the global toc section. + (LINK_SPEC): Use -oformat to set link output format, not -m. + + * rs6000/t-eabigas (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Build + libgcc.a variants with -mno-toc support. + * rs6000/t-ppcgas (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Ditto. + +Mon May 22 07:10:52 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cplus-dem.c (mystrstr): Replacement for strstr. + + * configure: Split up long sed command. + * Makefile.in (SYMLINK): Deleted; unused. + (oldobjext): Deleted; no longer used. + (FLAGS_TO_PASS): Include objext and exeext. + (STAGESTUFF, protoize.o, unprotoize.o): Use $(objext), not .o. + (test_protoize_simple, compare{,3}, gnucompare{,3}): Likewise. + (STAGESTUFF, specs, gcc-cross, collect2): Add missing $(exeext). + (libgcc1.null, libgcc[12].a, stage[1-4]): Likewise. + (xgcc, cc1, cc1obj, enquire): Use $@ instead of filename for -o value. + (collect2, mips-tfile, mips-tdump, gen*): Likewise. + (bi-arity, bi-opcode, bi-opname, cccp, cppmain): Likewise. + (protoize, unprotoize, gen-protos, fix-header): Likewise. + (crtbegin.o, crtend.o): Don't use -o; move output to proper + filename (using objext) instead. + (BI_ALL, BC_ALL, bytecode): Deleted; unused. + (bi-*.o, cexp.o, stamp-{proto,fixinc}): Remove unneeded $(srcdir). + (getopt{,1}.o, SYSCALLS.c.X): Likewise. + (install-driver): New target. + (install-normal): Depend on it. + (install-common): Don't depend on xgcc. + (maketest): Deleted; no longer used. + (stage[1-4]): Use name collect-ld, not real-ld. + (risky-stage[1-4]): Use stage[1-4] as dependencies; don't copy. + * alpha/config-nt.bat, i386/config-nt.bat: Make {,h,t}config.h + and tm.h by writing a single #include line. + Update way specs.h and options.h are written. + * alpha/config-nt.sed, i386/config-nt.sed: Set new variables + into Makefile. + Build winnt.obj. + Edit CCCP definition. + * alpha/x-winnt, i386/x-winnt (oldobjext): Deleted. + Add rules for .c.obj, .adb.obj, and .ads.obj. + (LIB2FUNCS_EXTRA, spawnv.o): New rules. + * i386/x-winnt (objext): Now .obj, not .o. + + * gcc.c (HAVE_OBJECT_SUFFIX): New macro. + (process_command): Convert x.o to x.foo for OBJECT_SUFFIX of ".foo". + (do_spec_1): Avoid shadow variable "i" and always use for loop var. + + * c-decl.c (finish_decl_top_level): Removed; no longer used. + * objc-act.c: Numerous formatting changes. + (NULLT): Deleted; all uses changed to NULL_TREE. + (get_{static,object}_reference, objc_add_static_instance): + Use push_obstacks instead of saving obstacks manually. + (build_{selector,class}_reference_decl): Likewise. + (build_objc_string_decl, build_protocol_reference): Likewise. + (comp_{method,proto}_with_proto): Likewise. + (create_builtin_decl, synth_module_prologue): Set DECL_ARTIFICIAL + for internal objects. + (build_{selector,class}_reference_decl, add_objc_decls): Likewise. + (generate_objc_symtab_decl, build_module_descriptor): Likewise. + (build_protocol_reference): Likewise. + (build_objc_string_decl, synch_forward_declarations): Likewise. + Delete call to end_temporary_allocation. + (generate_static_references, generate_strings): Likewise. + (build_selector_translation_table, generate_category): Likewise. + (generate_{ivars,protocol}_list, build_protocol_reference): Likewise. + (build_objc_string_object): If next_runtime, put everything in + permanent obstack. + (objc_add_static_instance): Use build_decl instead of start_decl + and finish_decl_top_level. + (build_{class_reference,objc_string}_decl): Clear DECL_CONTEXT. + (start_class): Exit with FATAL_EXIT_CODE, not 1. + (add_objc_decls): Don't set DECL_IN_SYSTEM_HEADER. + + * tree.c (valid_machine_attribute): Handle attribute on + pointer-to-function types. + +Sun May 21 17:16:37 1995 J. T. Conklin + + * mips/netbsd.h (HAVE_STRERROR): Remove. + * mips/xm-netbsd.h: New file. + * mips/t-mips-netbsd: Deleted. + * configure (mips-dec-netbsd): Use xm-netbsd.h and t-libc-ok. + +Sun May 21 17:16:37 1995 Arne H. Juul (arnej@pvv.unit.no) + + * mips/netbsd.h: Use __start as entry point. Ifdef some + paths on CROSS_COMPILE. + +Sun May 21 08:39:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in (datadef, fndef, ivar_decl, mydecls): + Restore declspec_stack since setspecs is used. + (parmlist_or_identifiers): Use setspecs before parsing parms + and restore after parsing parms. + +Sun May 21 01:04:52 1995 Jeffrey A. Law + + * pa.c (hppa_encode_label): New variable "permanent" to + where/how memory is allocated for the new label. All + callers changed. + +Sat May 20 16:53:30 1995 Mike Meissner + + * rs6000.md (insv, extz): Fail if the structure is QI or HI reg to + avoid paradoxical subreg's being created in RTL phase, which uses + SImode to load from memory if structure is later moved to stack. + +Sat May 20 06:44:59 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (udivmodhi4): Output "divu" instead of "divs". + +Sat May 20 06:11:32 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload.c (push_reload): Don't reload inside a SUBREG + when SUBREG_WORD is nonzero. + + * c-decl.c (shadow_tag_warned): Don't warn about useless keyword + if in system header file. + + * tree.c (simple_cst_equal): Don't look at language-specific + nodes since we don't know what's in them. + + * cpperror.c: #include config.h before any other .h file. + * collect2.c: Likewise. + + * i386/config-nt.bat: Add missing ^M on two lines. + Add case for Fortran; fix typo in Ada case. + * alpha/config-nt.bat: Add case for Fortran; fix typo in Ada case. + + * m68k/t-next (LIBGCC1, CROSS_LIBGCC1): Make not, not "libgcc1.null". + (OTHER_FIXINCLUDES_DIRS, LIMITS_H_TEST): Delete from here. + * m68k/x-next (OTHER_FIXINCLUDES_DIR, LIMITS_H_TEST): Move to here. + +Fri May 19 19:30:20 1995 Stan Cox (gcc@dg-rtp.dg.com) + + * crtstuff.c: Added reference to INIT_SECTION_PREAMBLE for systems that + do something which must be undone prior to __do_global_ctors. + +Fri May 19 19:27:08 1995 Alan Modra + + * i386/linux-aout.h (CPP_SPEC): Add defines for -fPIC. + * i386/linux-oldld.h (CPP_SPEC): Likewise. + +Fri May 19 17:46:28 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * collect2.c (strstr): Deleted. + * cplus-dem.c (strstr): Define ifndef POSIX. + +Fri May 19 11:16:51 1995 Per Bothner + + * cpplib.c (collect_expansion): Don't escape '@' inside string. + +Fri May 19 06:59:21 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vmsconfig.com (process_objc_lib, configure_makefile): New routines. + (bc_all.list, ./vax.md, objc-objs.opt, objc-hdrs.list): New files + created at config time. + (bc_all.opt, ./md.): No longer created. + * make-cc1.com: Handle revised filenames from vmsconfig.com; + (DO_OBJCLIB): New variable, plus code to compile objc/*.{c,m}. + +Wed May 17 16:15:31 1995 Torbjorn Granlund + + * i960.c (i960_output_ldconst): New code for XFmode. + Also, move SFmode code to immediately after DFmode code. + (S_MODES, D_MODES): Handle XFmode. + (XF_MODES): Was TF_MODES, handle XFmode instead of TFmode. + (hard_regno_mode_ok): Replace TFmode with XFmode. + (i960_output_long_double): New function. + + * i960.h (DATA_ALIGNMENT): Define. + (ROUND_TYPE_ALIGN): Align XFmode scalars at 128 bit boundaries. + (ROUND_TYPE_SIZE): Round up the size of XFmode objects to 128 bits. + (CONST_DOUBLE_OK_FOR_LETTER_P): Use CONST0_RTX and CONST1_RTX + so that all FP modes are recognized. + (ASM_OUTPUT_LONG_DOUBLE): Define. + + * i960.md: Change all TFmode patterns to have XFmode. + (movxf recognizer, frame version): Use movt, ldt, and stt. + (movxf recognizer, non-frame version): Delete. + (extenddfxf2): Delete * before f constraint. + (extendsfxf2): Likewise. + +Wed May 17 17:53:35 1995 Jim Wilson + + * unroll.c (unroll_loop): Increment copy_start_luid if copy_start + is loop_start. + +Wed May 17 17:44:57 1995 Lee Iverson + + * fold-const.c (invert_truthvalue, case CLEANUP_POINT_EXPR): New case. + +Tue May 16 18:51:16 1995 Michael Meissner + + * rs6000/rs6000.h (TARGET_SWITCHES): Add -mstring to enable string + instructions, and -mno-string to disable them. + (MOVE_MAX): Don't test TARGET_MULTIPLE anymore. + (MAX_MOVE_MAX): Set to 8, not 16. + (expand_block_move): Add declaration. + + * rs6000/rs6000.c (expand_block_move): New function to expand + block moves when -mstring is used. + + * rs6000/rs6000.md (movti): Use TARGET_STRING, not TARGET_MULTIPLE. + (load_multiple, store_multiple): Ditto. + (string insns): Add 8, 6, 4, 2, and 1 register variants for using + the native string instructions if -mstring. + + * rs6000/sysv4.h (CPP_SPEC): If little endian, define + _LITTLE_ENDIAN and set littleendian assertion. If big endian, + define _BIG_ENDIAN and set bigendian assertion. + * rs6000/sysv4le.h (CPP_SPEC): Copy from sysv4.h, and change + default to little endian. + + * rs6000/rs6000.c (override_options): Check for -mmultiple and + -mstring on little endian systems here. + * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Don't do the check + here. + +Tue May 16 18:36:41 1995 Douglas Rupp (drupp@cs.washington.edu) + + * alpha.c: Changed WINNT to _WIN32. + * alpha/config-nt.bat, i386/config-nt.bat: Added commands to + generate specs.h and options.h. + * i386/config-nt.sed: Changed link32 to link. + * winnt/ld.c (main): Removed call to free. + * configure.bat: Added line to echo usage on invalid input. + * gcc.c (fix_argv): Removed call to free. + * gcc.c, getpwd.c, protoize.c, sdbout.c: Changed WINNT to _WIN32. + * toplev.c: Likewise. + +Tue May 16 18:04:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (pfatal_with_name, fatal_io_error, vfatal): + Use FATAL_EXIT_CODE instead of magic number. + * cccp.c, cpplib.c, cpplib.h: Use FATAL_EXIT_CODE instead + of FAILURE_EXIT_CODE. + * fix-header.c, gen-protos.c: Likewise. + * cpperror.c, cppmain.c: Likewise. + Include config.h #ifndef EMACS. + * xm-alpha.h, xm-rs6000.h, xm-vms.h (FAILURE_EXIT_CODE): Remove. + +Tue May 16 17:46:57 1995 Adam Fedor + + * objc/archive.c (__objc_write_class): Write class version. + (__objc_write_selector, objc_{write,read}_selector): Handle null + selector. + + * objc/sarray.h (struct sarray): Make capacity size_t. + * objc/sarray.c (sarray_realloc): Make array index variables size_t. + +Tue May 16 06:59:08 1995 Paul Eggert + + * dsp16xx.c (print_operand_address): Fix misspellings in messages. + * i370/mvs.h (FUNCTION_PROFILER): Likewise. + * mips-tdump.c (type_to_string): Likewise. + * print-tree.c (print_node): Likewise. + + * protoize.c (edit_fn_definition): Fix mispelled local `have_flotsam'. + + * objc/sendmsg.c (__objc_init_install_dtable): Fix misspelling + in name of local label `already_initialized'. + + * winnt/winnt.h (STDC_VALUE): Was misspelled. + + * m68k/ccur-GAS.h (FUNCTION_BOUNDARY): Was misspelled. + + * 1750a.h (DEFAULT_PCC_STRUCT_RETURN): Was misspelled. + +Mon May 15 23:41:25 1995 Jeffrey A. Law + + * pa.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Make sure to encode section + info for all libcalls. + +Mon May 15 20:58:00 1995 Jason Merrill + + * collect2.c (strstr): Define ifndef POSIX. + + * defaults.h (SUPPORTS_WEAK): Provide default. + * aoutos.h, sparc/sunos4.h: Don't support weak symbols. + * netbsd.h, svr4.h, i386/freebsd.h, i386/osfrose.h, + m88k/m88k.h: Define ASM_WEAKEN_LABEL instead of WEAK_ASM_OP. + * c-pragma.h: Check ASM_WEAKEN_LABEL instead of WEAK_ASM_OP. + HANDLE_PRAGMA_WEAK is never defined in a tm.h file. + * c-decl.c (duplicate_decls): Propagate DECL_WEAK. + * tree.h (DECL_WEAK): New macro. + (tree_decl): Add weak_flag. + * varasm.c (assemble_start_function): Declare the symbol weak if + appropriate. + (assemble_variable): Ditto. + (assemble_alias): Ditto. Mark the decl as written. + (declare_weak): Check for weak declaration after definition. + Set DECL_WEAK. + (weak_finish): Use ASM_WEAKEN_LABEL. + * libgcc2.c: The C++ free-store management functions are weak + aliases on targets that always support them. + +Mon May 15 19:01:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (out_object_file): New variable; put value in Makefile. + * Makefile.in (out_object_file): Use in place of aux-output.o. + + * fold-const.c (const_binop): Don't pass OVERFLOW to force_fit_type + if type is unsigned. + +Mon May 15 18:48:26 1995 Paul Eggert + + * install.sh (transformbasename): Fix misspelling. + + * tahoe.h (CHECK_FLOAT_VALUE): Fix misspelling of OVERFLOW parameter. + + * i386.h (VALID_MACHINE_{DECL,TYPE_ATTRIBUTE): Fix typo. + + * fx80.h (CHECK_FLOAT_VALUE): Fix misspelled use of parameter. + + * a29k.c (spec_reg_operand): Fix misspelling of `default:'. + +Mon May 15 18:36:41 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (b{eq,ne,ge,lt}0_di): Fixed for non-MOTOROLA syntax. + * m68k/xm-mot3300.h (alloca): Extern decl added for non-GNU compiler. + +Mon May 15 13:14:29 1995 Per Bothner + + * cppexp.c (cpp_reader): Test for '#' (start of assertion) *after* + skipping hspace, not before. + +Mon May 15 08:13:54 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vmsconfig.com: Construct options.h and specs.h to #include + all "*/lang-{options|specs}.h" files found. + +Sun May 14 21:32:49 1995 Doug Evans + + * alpha/alpha.md (movsicc, case NE): Don't generate unrecognizable + insn. + (movdicc, case NE): Likewise. + +Sun May 14 15:44:54 1995 Jim Wilson + + * unroll.c (unroll_loop): Make local_regno have size + max_reg_before_loop. Don't do local register optimization if + copy_end has no INSN_LUID. + +Sun May 14 10:38:23 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc-act.c (start_method_def): Mark _self as possibly unused. + + * configure: Create specs.h and options.h from */lang-specs.h + and */lang-options.h. + Set lang_specs_files and lang_options_file variables in Makefile. + * Makefile.in (lang_{specs,options}_files): New variables. + (gcc.o): Depends on $(lang_specs_files). + (toplev.o): Depends on $(lang_options_file); merge two dep lists. + (distclean): Remove spes.h and options. + * gcc.c (default_compilers): Remove entries for Ada, C++, Chill, + and Fortran; #include specs.h instead. + * toplev.c (lang_options): Remove entries for Ada, C++, and Fortran; + include options.h instead. + +Sat May 13 23:11:21 1995 DJ Delorie + + * configure (i[345]86-go32-msdos, i[345]86-*-go32): New targets. + +Sat May 13 10:58:38 1995 Jim Wilson + + * loop.c (record_giv): When computing replaceable, use + back_branch_in_range_p instead of looking for branches to named + labels. + * loop.h (back_branch_in_range_p): Declare. + * unroll.c (back_branch_in_range_p): No longer static. + +Sat May 13 06:47:11 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (simplify_shift_count, case LSHIFTRT): Don't merge + shifts of different modes if first is any right shift. + +Sat May 13 05:39:09 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * configure (arm-semi-aout): New configuration. + * config.sub: Add support for semi-hosted ARM. + * arm/t-semi, arm/semi.h: New files. + +Fri May 12 21:51:22 1995 Doug Evans + + * flow.c (find_basic_blocks): Only perform n_basic_blocks sanity + check on first pass, and on second pass ensure it has the correct + value. + +Fri May 12 19:23:11 1995 Jim Wilson + + * c-typeck.c (build_binary_op): Warn when ~unsigned is compared + against unsigned, and type promotions result in an unexpected + answer. + +Fri May 12 19:10:21 1995 Roland McGrath + + * configure (*-*-gnu*): Always use ELF; set tm_file=${cpu_type}/gnu.h. + * config/i386/gnu.h: Contents replaced with old i386/gnuelf.h. + * config/i386/gnuelf.h: File removed. + +Fri May 12 17:29:57 1995 Ken Raeburn (raeburn@cygnus.com) + + * m68k/lb1sf68.asm (__IMMEDIATE_PREFIX__): Default to #. + (IMM): New macro. + (all code): Use IMM macro instead of hardcoding # for immediate + operands. + +Fri May 12 16:52:10 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.c (output_scc_di): New function. + (extend_operator) : Allow DImode target. + * m68k.h (HARD_REGNO_MODE_OK): Don't allow d7/a0 as DImode reg pair. + * m68k.md (tstdi, cmpdi, addsi_lshrsi_31, ashldi_extsi): New patterns. + (extendqidi2, extendhidi2, extendsidi2): Allow "general_operand" + instead of "register_operand" 0. + (adddid_sexthishl32, subdid_sexthishl32, subdi_dishl32): Likewise. + (adddi_dilshr32): Operand 0 constraint changed from "ro" to "do"; + Code generation fixed. + (adddi_mem, subdi_mem): Fixed for "<" and ">" operand 0. + (adddi3, subdi3): Operand 2 constraint changed from "ao" to "*ao" + (ashldi_sexthi, ashrdi_const32): Allow only "register_operand" + instead of "general_operand" 0. + (ash[lr]di_const, ash[lr]di3): Allow also 8 and 16 as shift count. + (subreg1ashrdi_const32): Pattern deleted. + (subreghi1ashrdi_const32, subregsi1ashrdi_const32): New pattern. + (lshrsi_31): New implementation. + (scc0_di, scc_di, beq0_di, bne0_di, bge0_di, blt0_di): New patterns. + +Fri May 12 16:50:49 1995 Jeffrey A. Law + + * pa.md (bb patterns): Fix bugs in length computation exposed by + recent branch shortening and genattrtab changes. + +Fri May 12 16:22:27 1995 Ken Raeburn + + * cccp.c (enum node_type): Add T_IMMEDIATE_PREFIX_TYPE. + (special_symbol): Handle it; emit value of IMMEDIATE_PREFIX. + (IMMEDIATE_PREFIX): Default to empty string. + (initialize_builtins): Install __IMMEDIATE_PREFIX__ builtin, + parallel to __REGISTER_PREFIX__. + +Fri May 12 14:40:03 1995 Pat Rankin (rankin@eql.caltech.edu) + + * cccp.c: #if VMS, don't define `stat' macro to be VMS_stat. + Compare enums explicitly to 0 to work around VAX C bug. + (do_include): Cast alloca's value. + + * make-cc1.com (bc_loop): Process comma-separated list rather + than space-separated one; restore .h suffix stripped by vmsconfig; + (loop1): More robust handling of directory prefix on file names. + * vmsconfig.com (TPU makefile.in): Reorganize and reformat code. + Make generated .opt files have more consistent format (all comma + separated, excess whitespace eliminated); + (additional_compiler): New routine. + (process_makefile): Use it to handle cc1plus via cp/Make-lang.in. + +Fri May 12 13:35:07 1995 Doug Evans + + * arm.h: Replace ARM_REG_PREFIX with REGISTER_PREFIX. + Replace ARM_COMMENT_CHAR with ASM_COMMENT_START. + (REGISTER_PREFIX): Define. + (USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX): Define. + (SECONDARY_OUTPUT_RELOAD_CLASS): Handle DFmodes only if + TARGET_HARD_FLOAT. + (PREDICATE_CODES): Add soft_df_operand. + * arm.c: Replace ARM_REG_PREFIX with REGISTER_PREFIX. + Replace ARM_COMMENT_CHAR with ASM_COMMENT_START. + (arm_asm_output_label): Use USER_LABEL_PREFIX. + (soft_df_operand): New function. + * arm.md (movsicc): New pattern. + (movsfcc, movdfcc, *movsicc_insn, *movsfcc_hard_insn): Likewise. + (*movsfcc_soft_insn, *movdfcc_insn): Likewise. + (*movdf_soft_insn): Rewrite. + (movsi matcher): Fix typo in type attribute. + +Fri May 12 10:25:40 1995 Michael Meissner (meissner@cygnus.com) + + * i386.h (TARGET_RTD): Use MASK_RTD, not MASK_REGPARM. + (TARGET_SWITCHES): Add -m{,no-}align-double switch. + (TARGET_OPTIONS): Add -mregparm= switch to set number of registers + to use for passing arguments. Add -malign-loops= switch to set + the alignment for loops. Add -malign-jumps= switch to set the + alignment for code that is jumped to. Add -malign-functions= + switch to set the initial alignment of functions. + (TARGET_REGPARM): Delete, in favor of -mregparm= + (TARGET_SWITCHES): Delete -mregparm, add -mdebug-arg switches. + (RETURN_POPS_ARGS): Call i386_return_pops_args to do the real work. + (VALID_MACHINE_DECL_ATTRIBUTE): Define as function call. + (VALID_MACHINE_TYPE_ATTRIBUTE): Define as function call. + (COMP_TYPE_ATTRIBUTES): Define as function call. + (REGPARM_MAX): Maximum number of regs to use for passing arguments. + (CUMULATIVE_ARGS): Make this a structure, not an int. + (INIT_CUMULATIVE_ARGS, FUNCTION_ARG{,_ADVANCE}): Call function. + (FUNCTION_ARG_PARTIAL_NREGS): Likewise. + (MAX_CODE_ALIGN): Maximum value to align loops/jumps to. + (BIGGEST_ALIGNMENT): Return 64 if -malign-double, 32 otherwise. + (ASM_OUTPUT_ALIGN_CODE): Use value of -malign-jumps= switch. + (ASM_OUTPUT_LOOP_ALIGN): Use value of -malign-loops= switch. + (toplevel): Declare all new functions and external variables added + in i386.c. + + * i386.c (i386_regparm_string, i386_regparm): New variables + for -mregparm= switch to set the number of registers to use for + passing arguments. + (i386_align_loops_string, i386_align_loops): New variables for + -malign-loops= switch to set alignment to use for loops. + (i386_align_jumps_string, i386_align_jumps): New variables for + -malign-jumps= switch to set alignment to use for labels that are + jumped to. + (override_options): Support new switches. + (i386_valid_decl_attribute_p): New function to validate decl + specific attributes. Presently returns 0. + (i386_valid_type_attribute_p): New function to validate type + specific attributes. Recognize "stdcall", which says function + with fixed numbers of arguments is responsible for popping stack, + "cdecl", which says to use the normal C calling sequence, even if + -mrtd is used, and "regparm", which specifies the number of + registers to use for passing arguments. + (i386_comp_type_attributes): New function, to validate whether + attributes are compatible. + (i386_return_pops_args): New function, to return whether or not + the function pops its argument list or not, taking into account + -mrtd, and the stdcall/cdecl attributes. + (init_cumulative_args): Rewrite as a function, taking variable + argument functions, and regparm support into account. + (function_arg{,_advance,_partial_nreg}): Likewise. + (print_operand): Support %J, to print appropriate jump insn. + + * i386.md (decrement_and_branch_until_zero): Define pattern, + so that loops that count down to zero, don't have an unneeded + compare after the decrement. Add a general insn recognizer for + add to a value and compare against zero. + + * i386/go32.h, i386/winnt.h (VALID_MACHINE_DECL_ATTRIBUTE): + Delete, code folded into the mainline. + (RETURN_POPS_ARGS): Likewise. + + * i386/winnt.h (ENCODE_SECTION_INFO): The stdcall attribute is now + stored on the type field, rather than the decl. + + * i386/gas.h (ASM_OUTPUT_ALIGN_CODE, ASM_OUTPUT_LOOP_ALIGN): Use + i386_align_{loops,jumps} variables to do alignment. + * i386/osfrose.h, i386/svr3dbx.h: Likewise. + +Fri May 12 12:48:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_type, case ARRAY_TYPE): Compute length using + MAX of length and zero if sizetype signed and neither bound constant. + + * i386/gnuelf.h, i386/linux-oldld.h, i386/lynx-ng.h, i386/v3gas.h: + Use <...> in #include instead of "...". + * m68k/lynx-ng.h, sparc/lynx-ng.h: Likewise. + + * c-parse.in (myparm): Handle attributes. + * objc-act.c (unused_list): New variable. + (build_tmp_function_decl): Call push_parm_decl with new format. + (start_class): Initialize unused_list. + (start_method_def): Call push_parm_decl with new format and + mark _cmp as possibly unused. + + * combine.c (simplify_shift_const): Don't change SHIFT_MODE + for LSHIFTRT either. + + * unroll.c (unroll_loop): Don't move reg if used in copy_end and + that is a JUMP_INSN. + +Fri May 12 12:31:37 1995 Doug Evans + + * arm/lib1funcs.asm: New file. + +Fri May 12 11:52:03 1995 Kung Hsu + + * configure (a29k-*-vxworks*): New target. + * config.sub (vxworks29k): New alias. + * a29k/t-vx29k: New file. + * a29k/vx29k.h: New file. + +Fri May 12 11:17:28 1995 Jim Wilson + + * loop.c (check_dbra_loop): When reversing loop when + no_use_except_counting is false, there must be only one biv. + +Fri May 12 07:10:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * unroll.c (unroll_loop): Only use local_regno for pseudos. + + * genattrtab.c (write_test_expr, case MATCH_DUP): Use operands[N] + instead of JUMP_LABEL (which may not be set). + (walk_attr_value, case MATCH_DUP): Set must_extract. + + * c-parse.in: Adjust number of shift/reduce conflicts. + (parm): Support attributes. + * c-decl.c (push_parm_decl): Pass any attributes to decl_attributes. + +Fri May 12 00:36:26 1995 Per Bothner + + * cpplib.c (skip_quoted_string): Removed - no longer needed. + (skip_if_group): Use cpp_get_token instead of skip_quoted_string. + + * cpplib.h (struct cpp_reader): Remove start_line field. + Add multiline_string_line field. + + * cpplib.c (cpp_error_with_line, cpp_warning_with_line, + cpp_pedwarn_with_line): Take extra column number parameter. + (macroexpand, cpp_get_token): Fix reporting of unterminated strings. + (line_for_error): Removed - no longer needed. + +Fri May 12 02:21:34 1995 Jim Wilson + + * mips/svr4-t.h (MD_STARTFILE_PREFIX, MD_EXEC_PREFIX, + STARTFILE_SPEC, LINK_SPEC): Define. + * configure (mips-tandem-sysv4): Use t-mips not t-svr4. + +Thu May 11 19:18:54 1995 Per Bothner + + * cpplib.c (line_for_error): Make it work; add extra parameter. + (skip_quoted_string, cpp_get_token): Update calls to line_for_error. + (macroexpand): Remember initial line so we can report it if the + call is unterminated. Also, simplify error logic slightly. + (do_include): Cast alloca return value, to avoid pcc warning. + + * cppexp.c (parse_number): Cleanup some Cygnus crud for MPW. + +Thu May 11 21:35:23 1995 Torbjorn Granlund + + From Moshier: + * i960.c (i960_output_ldconst): Let split_double handle DImode. + (i960_print_operand): Use REAL_VALUE_TO_DECIMAL for decimal strings. + (i960_output_double, i960_output_float): Likewise; also change arg + VALUE from `double' to `REAL_VALUE_TYPE'. + +Thu May 11 21:09:25 1995 Per Bothner (bothner@wombat.gnu.ai.mit.edu) + + * cpperror.c (cpp_print_containing_files): Remove some + Cygnus-local stuff. + +Thu May 11 21:06:47 1995 Doug Evans + + * gcc.c (link_command_spec): Make -nostdlib no longer imply + -nostartfiles. + +Thu May 11 18:48:57 1995 Paul Eggert + + * c-common.c (convert_and_check): Don't diagnose overflow in constant + expression merely because conversion overflowed. + +Thu May 11 18:43:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (grokdeclarator): Use PARM_FLAG to see if should + make PARM_DECL. + * c-parse.in (nested_function, notype_nested_function): + Allow old-style arg definitions (use xdecls). + + * c-decl.c (finish_struct): Properly update DECL_PACKED. + +Thu May 11 15:24:15 1995 Jason Merrill + + * fold-const.c (fold): Also fold CLEANUP_POINT_EXPRs into + TRUTH_*_EXPRs and into the first operand. + (operand_equal_for_comparison_p): Also make sure the second operand + is integral. + +Thu May 11 14:22:03 1995 Ted Lemon + + * config/mips/netbsd.h: New file. + * config/mips/t-mips-netbsd: New file. + * config/mips/x-netbsd: New file. + + * configure (mips-dec-netbsd*): Add entry. + + * mips.h (LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): Define. + (PUT_SDB_BLOCK_START, PUT_SDB_BLOCK_END, ASM_OUTPUT_LABEL_REF, + ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL, + ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Use them. + + * mips.c (mips_output_lineno): Use LOCAL_LABEL_PREFIX. + +Thu May 11 14:22:03 1995 Stan Cox (gcc@dg-rtp.dg.com) + + * dwarfout.c (output_decl): Don't output DIE for struct or union type + with no name or with ERROR_MARK for the fields. + +Thu May 11 06:36:34 1995 Michael Meissner (meissner@cygnus.com) + + * flow.c (mark_used_regs): If a SUBREG does not have a REG in the + SUBREG_REG position, recursively call mark_used_regs, instead of + segfaulting. + +Thu May 11 06:44:34 1995 Pat Rankin (rankin@eql.caltech.edu) + + * expr.c (do_jump, case EQ_EXPR, NE_EXPR): Fix typo for complex. + +Wed May 10 12:34:46 1995 Michael Meissner + + * configure: Add support for the little endian variant of the + PowerPC System V.4 and Eabi targets. If the GNU assembler was not + specified, don't build libgcc.a variants on the PowerPC systems + that use -mrelocatable, -mlittle, and -mbig. + + * genmultilib: For MULTILIB_MATCHES arguments, map question marks + into equal signs after spliting the left and right side of + equivalent options, to all support for options like: -mcpu=403. + + * rs6000/rs6000.md (rs6000_immed_double_const): New function that + is like immed_double_const, except that it reverses the two words + in the constant if the target is little endian. + + * rs6000/rs6000.md (floatsidf2): Use rs6000_immed_double_const, + not immed_double_const. + (floatunssidf2): Ditto. + + * rs6000/rs6000.h: Add declarations for all functions in rs6000.c. + + * rs6000/sysv4.h (TARGET_SWITCHES): Add -mlittle, -mlittle-endian, + -mbig, and -mbig-endian for bi-endian support. + (ASM_SPEC): Pass -mlittle/-mbig to the assembler if it was passed + to us. + (LINK_SPEC): If explicit little or big endian support was + requested, tell the GNU linker to use the appropriate target + format. + + * rs6000/t-eabi (MULTILIB_*): Build libgcc.a variants for software + floating point. Remove mrelocatable libgcc.a variant. + + * rs6000/t-eabigas: New file, cloned from t-eabi. Build + mrelocatable libgcc.a variant in addition to the other variants. + + * rs6000/t-ppc: New file, for PowerPC System V.4 support without + the GNU assembler. + + * rs6000/t-ppcgas: New file, for PowerPC System V.4 support with + the GNU assembler. + + * rs6000/eabile.h: New file, little endian eabi config file. + * rs6000/sysv4le.h: New file, little endian V.4 config file. + +Wed May 10 14:22:28 1995 Doug Evans + + * libgcc1-test.c (main_without__main): Renamed from `main'. + * Makefile.in (libgcc1-test): Tell the user to ignore warnings. + + * configure: Support --enable-foo, --disable-foo. + +Wed May 10 10:34:00 1995 Lee Iverson + + * unroll.c: Add declarations of static functions. + (unroll_loop): Renumber regs local to loop for each unrolled iteration. + +Wed May 10 08:27:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_set_emit_const): Cleanups to work properly + when run on 32-bit host. + + * configure: Instead of symlinking tm.h and {h,t,}config.h, + make them files that #include the proper file; pass to Makefile. + Pass out_file and md_file to Makefile instead of making symlinks. + * Makefile.in (out_file, md_file, tm_file, {build,host}_xm_file): + New symbols, to be overridden by configure. + (insn-*): Use $(md_file), not md. + (aux-output.o): Use $(out_file), not aux-output.c. + ($(MD_FILE)): Rework to use new conventions. + (gen*.o, bi-*.o): Depend on $(build_xm_file), not hconfig.h. + (scan.o, fix-header.o, scan-decls.o): Likewise. + (distclean): Adjust files removed for new convention. + +Tue May 9 19:26:42 1995 Jason Merrill + + * rs6000/rs6000.h (LIBGCC_SPEC): Do link with libgcc when -shared. + + * Makefile.in (STAGESTUFF): Add underscore.c. + (underscore.c): Rename temporary files to begin with 'tmp-' so that + they will be removed by 'make mostlyclean'. + +Tue May 9 19:19:55 1995 Mike Stump + + * toplev.c (lang_options): Add new flag -ffor-scope. + +Tue May 9 19:11:47 1995 Lee Iverson (leei@ai.sri.com) + + * objc/init.c (objc_init_statics): Fix missing part of last change. + +Tue May 9 18:25:34 1995 Richard Kenner + + * i386/gnu.h, i386/linux.h, i386/linux-aout.h, i386/lynx.h: + Use <...> in #include instead of "..." to avoid recursion. + * i386/netbsd.h, i386/xm-gnu.h, i386/xm-linux.h: Likewise. + * i386/xm-lynx.h, i386/xm-freebsd.h, i386/xm-netbsd.h: Likewise. + * m68k/lynx.h, m68k/netbsd.h, m68k/xm-lynx.h: Likewise. + * m68k/xm-netbsd.h, mips/gnu.h, ns32k/netbsd.h: Likewise. + * ns32k/xm-netbsd.h, rs6000/lynx.h, rs6000/xm-lynx.h: Likewise. + * sparc/lynx.h, sparc/netbsd.h, sparc/xm-lynx.h: Likewise. + * sparc/xm-netbsd.h, vax/netbsd.h, vax/xm-netbsd.h: Likewise. + +Tue May 9 15:52:05 1995 Michael Meissner + + * config.sub: Recognize powerpcle as the little endian varient of + the PowerPC. Recgonize ppc as a PowerPC variant, and ppcle as a + powerpcle variant. Convert pentium into i586, not i486. Add p5 + alias for i586. Map new x86 variants p6, k5, nexgen into i586 + temporarily. + +Tue May 9 15:43:27 1995 Jason Merrill + + * rs6000/rs6000.h (LINK_SPEC, LIB_SPEC): Don't mess with libg + if -shared. + * rs6000/aix41ppc.h (LINK_SPEC): Ditto. + + * rs6000/powerpc.h: Don't emit .extern directives. + +Tue May 9 14:08:09 1995 Jim Wilson + + * sh/lib1funcs.asm (__ashrsi3, __ashlsi3, __lshrsi3): Use .byte + instead of .word offsets in switch table. + +Tue May 9 11:44:47 1995 Jeremy Bettis + + * objc/sendmsg.c (__objc_send_initialize): Call superclass if object + does not implement +initialize. + +Tue May 9 02:44:16 1995 Jason Merrill + + * rs6000/xm-rs6000.h (COLLECT_EXPORT_LIST): Define if not + cross-compiling. + * rs6000/xm-mach.h: #undef COLLECT_EXPORT_LIST. + * rs6000/rs6000.h (COLLECT_SCAN_OBJECTS): Lose. + + * collect2.c (collect_exit): Unlink export_file. + (prefix_from_string): Broken out from prefix_from_env. + (prefix_from_env): Call it. + (main): Under AIX, recognize -bE: and -bexport:, and don't + automatically export everything if we see one. Otherwise, scan the + objects individually and add all their symbols to an export file to be + passed to the linker. + (write_export_file): New function. + (scan_prog_file): Ignore symbols starting with '.' + + * c-common.c (declare_hidden_char_array): Mark decl artificial. + +Mon May 8 18:13:57 1995 Adam Fedor + + * objc/init.c (_objc_load_callback): Add declaration. + (__objc_exec_class): Call _objc_load_callback after every Class + or Category is added. + * objc/objc-api.h (_objc_load_callback): Add declaration. + +Mon May 8 17:56:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case INDIRECT_REF): Set RTX_UNCHANGING_P + if both TREE_READONLY and TREE_STATIC set. + + * c-typeck.c (convert_for_assignment): Don't give errors about + adding const or volatile unless both sides point to functions. + +Mon May 8 11:48:23 1995 Michael Meissner + + * configure: If ../ld/Makefile, symlink ../ld/ld.new to collect-ld, + not real-ld. Don't test for $use_collect2 any more. + +Sun May 7 17:52:23 1995 Jason Merrill + + * calls.c (expand_call): Improve -Winline warnings. + +Sun May 7 17:28:27 1995 DJ Delorie (dj@delorie.com) + + * configure.bat: Use "go32" instead of "msdos" for future expansion. + + * i386/go32.h: Add support for win32's stdcall functions. + + * configure.bat: Add ^M to end of each line. + * i386/config-nt.bat, alpha/config-nt.bat: Likewise. + +Sun May 7 02:12:26 1995 Jason Merrill + + * tree.h (DECL_ARTIFICIAL): New macro. + + * function.c (expand_function_end): Don't warn about unused + anonymous or artificial parms. + +Fri May 5 18:41:22 1995 Jim Meyering (meyering@comco.com) + + * configure: Fix typo in name of "maintainer-clean". + +Fri May 5 14:58:01 1995 Jeffrey A. Law + + * pa.c (emit_move_sequence): Force problematical constants + into memory during the reload pass when generating PIC. + +Fri May 5 13:30:33 1995 Doug Evans + + * objc/NXConstStr.m: NXConstantString.h renamed to NXConststr.h. + +Fri May 5 07:10:15 1995 Stephen L Moshier (moshier@world.std.com) + + * real.c (emdnorm, toe64, etoe64): Significand of Intel long double + denormals is shifted down one bit. + +Fri May 5 07:04:12 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (process_init_element): Don't clear_momentary if + constructor_stack is not empty. + + * objc/Makefile (SHELL): Now /bin/sh. + + * c-typeck.c (build_binary_op): Also warn about ordered + comparison of pointer with zero if -Wall. + + * expr.c (do_jump, case EQ_EXPR, NE_EXPR): Properly compare complex. + +Thu May 4 18:01:25 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * objc/Makefile: NXConstantString renamed to NXConstStr. + * objc/NXConstStr.m: Renamed from objc/NXConstantString.m. + * objc/NXConstStr.h: Renamed from objc/NXConstantString.h. + +Thu May 4 17:38:21 1995 J.T. Conklin + + * configure (vax-*-netbsd*): New configuration. + * vax/netbsd.h, vax/xm-netbsd.h: New files. + +Thu May 4 16:39:05 1995 Jason Merrill + + * collect2.c (main): Add check for 'collect-ld', just like + 'real-ld', except that old versions won't be looking for it in the + path. Don't look for 'real-ld' in the path anymore. Sigh. + + * collect2.c: #include demangle.h and obstack.h. + (obstack_chunk_alloc): Define. + (obstack_chunk_free): Define. + (generic): Don't define. Don't use. + (main): Initialize obstacks and demangling. + + * collect2.c (dump_file): Adjust space padding in output to + maintain tabulation with Solaris ld. Don't demangle if the + environment variable COLLECT_NO_DEMANGLE is set. + + * collect2.c (main): Redirect the output of the first link and + demangle it. Don't collect static c/dtors unless USE_COLLECT2 is + defined. Null-terminate the list of objects. + (dump_file): New function. + (file_exists): New function. + (collect_exit): Renamed from my_exit. Dump and remove the temporary + ld output file. + (collect_execute): Break out from fork_execute. Support redirection. + (fork_execute): Call it. + (fatal_perror, fatal, error): Make non-static. + (xcalloc, xmalloc): Don't use generic. + (xrealloc): Define. + (collect_wait): Break out for do_wait. Just return the exit status. + (do_wait): Call it. + + * collect2.c: Check SUNOS4_SHARED_LIBRARIES using #if, not #ifdef. + + * Makefile.in (collect2): Now uses cplus-dem.o and underscore.o. + (collect2.o): Pass MAYBE_USE_COLLECT2 to compile. + (underscore.c): Rules for creation. + + * cplus-dem.c, demangle.h: Copy from libiberty. + +Thu May 4 14:12:35 1995 Jim Wilson + + * sdbout.c (plain_type): Pass additional argument to plain_type_1. + (plain_type_1): New parameter level. Increment it when making + recursive calls. Force the type to void_type_mode before starting + a 7th level of recursion. + + * sh.c (general_movsrc_operand, general_movdst_operand): Delete + references to POST_DEC and PRE_INC. + * sh.h: Clean up whitespace, comments, etc. + (TARGET_SH, RTL_BIT, DT_BIT, C_BIT, R_BIT, TARGET_DUMP_RTL, + TARGET_DUMP_R, TARGET_CDUMP): Delete. + (TARGET_SWITCHES): Delete -mR, -mc, -mr options. + (CONST_DOUBLE_OK_FOR_LETTER_P): Delete 'G' contraint. + (FUNCTION_VALUE): Simplify. + (REG_OK_FOR_PRE_POST_P, IS_INDEX): Delete. + (BASE_REGISTER_RTX_P, INDEX_REGISTER_RTX_P): Rewrite to allow + SUBREGs. + (GO_IF_LEGITIMATE_INDEX): Delete unused REGNO argument. + (GO_IF_LEGITIMATE_ADDRESS): Use BASE_REGISTER_RTX_P instead of + REG_OK_FOR_PRE_POST_P. Don't accept PRE_INC or POST_DEC addresses. + (PREDICATE_CODES, PROMOTE_MODE): Define. + +Wed May 3 09:57:55 1995 Michael Meissner + + * rs6000/rs6000.md (non power abs insns): If not powerpc, use + sf/subfc instructions, not subf. + +Wed May 3 08:49:06 1995 Alan Modra + + * protoize.c (gen_aux_info_file): Use strerror #ifdef HAVE_STRERROR. + +Wed May 3 01:06:01 1995 Jeffrey A. Law + + * pa.c (output_call): Fix typo/thinko in last change. + (output_function_epilogue): Align the data section before + emitting deferred plabels. + + From Torbjorn: + * pa.c (before functions): Declare deferred_plabels and + n_deferred_plabels. + (output_call): When generating pic, don't use LP and RP. Use 32 bit + plabel instead. + (output_function_epilogue): Output plabels accumulated in output_call. + +Tue May 2 17:15:08 1995 Jeffrey A. Law + + * pa.c (hppa_expand_epilogue): Fix thinko in last change. + +Tue May 2 16:54:35 1995 Doug Evans + + * jump.c (jump_optimize, can_reach_end determination): A barrier can + follow the return insn. + +Tue May 2 12:39:55 1995 Mike Stump + + * fold-const.c (fold): Ensure that we don't alter the expression's + type when folding CLEANUP_POINT_EXPRs. + +Tue May 2 13:36:08 1995 Michael Meissner + + * expmed.c (emit_store_flag): When creating store flag + instructions from simpler parts, such as XOR, ABS, etc. do not + reuse pseudo registers if expensive optimizations, instead create new + pseudos for each insn result. + +Tue May 2 01:25:29 1995 Jeffrey A. Law + + * pa.c (hppa_expand_epilogue): Correctly handle restore of %rp + for functions with a stack size of exactly 8kbytes and no frame + pointer. + +Mon May 1 19:27:08 1995 Jim Wilson + + * sdbout.c (sdbout_one_type): Don't switch to text section if + in function with section attribute. + + * combine.c (combine_instrutions): Set subst_prev_insn to zero. + (try_combine, undo_all): Likewise. + (get_last_value): Return zero if subst_prev_insn set. + + * sparc.h (INIT_TARGET_OPTABS): Move INIT_SUBTARGET_OPTABS to end. + + * Makefile.in (install-dir): chmod a+rx all newly created directories. + + * expr.c (expand_expr, case SAVE_EXPR): Handle the case where + mode is VOIDmode. + +Fri Apr 28 15:39:38 1995 Per Bothner + + * cpplib.h (cpp_buffer): Note new escape combination "@ ". + * cpplib.c (macroexpand): Delete "@ " if stringifying. + (cpp_skip_hspace): Also skip "@ " if input buffer has_escapes. + (collect_expansion): Cleanup white-space handling. + (create_definition): Remove all leading spaces, not just first one. + (cpp_expand_to_buffer): Set has_escapes on resulting input buffer. + (macroexpand): Set output_escapes during whole function (and + specifically during calls of macarg). + (macroexpand): Set "@ " before and after expansion result. + (push_macro_expansion): Remove unneeded initial "@ ", not " ". + (cpp_get_token): Remove unneeded "@ " (not " ") at end of expansion. + (cpp_get_token): Handle "@ ". + + * cpplib.c (read_name_map): Add cpp_reader parameter. Access + map_list from former (instead of having it be static). + (open_include_file): Extra parameter (because of above changes). + (do_include, lookup_import): Update calls of open_include_file. + + * cpplib.c (do_include): Fix memory leak. + + * cpplib.c (delete_assertion): Also delete tokenlist. + (do_unassert): Don't delete tokenlist (handled by delete_assertion). + (cpp_cleanup): New function. Frees resources used by a cpp_reader. + * cpphash.c (cpp_hash_cleanup): New function. + (delete_macro): Enable commented-out code. + (file_cleanup): Free actual buffer. + + * cpplib.c (cpp_options): Add map_list. + + * cpplib.h (PARSE_GETC): Removed. Bogus and unused. + * cppmain.c (main): Remove commented-out code that used PARSE_GETC. + + * cpplib.c: Don't #include . Causes clashes + on Nextstep (when index/rindex are macros). + (cpp_grow_buffer, int_parse_file): Cast to U_CHAR*, rather than char*. + +Sun Apr 30 08:11:23 1995 Alan Modra (alan@spri.levels.unisa.edu.au) + + * stdarg.h, varargs.h (va_arg): Don't assume __va_rounded_size (char) + has the value of 4. + +Sun Apr 30 07:13:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * vax.h (NOTICE_UPDATE_CC): Correctly handle aob insns. + + * expr.c (expand_expr, case CONSTRUCTOR): Don't set target to + zero if more then one word. + Pass size and alignment to move_by_pieces_ninsns in bytes, not bits. + + * cse.c (cse_insn): Properly set IN_MEMORY for SET_DEST. + + * tree.c (substitute_in_expr): Preserve TREE_READONLY. + + * c-common.c (enum attrs): Add A_UNUSED. + (init_attributes): Initialize it. + (decl_attributes, case A_UNUSED): New case. + +Sat Apr 29 15:42:03 1995 Paul Eggert + + * cccp.c (do_include): Re-fix minor memory leak by using + alloca instead of xmalloc and free. + + * cccp.c (macarg): Except for reporting error, treat unterminated + macro call as if it were terminated, since `macroexpand' relies + on *argptr being filled in. + +Sat Apr 29 06:09:35 1995 Torbjorn Granlund + + * pa.c (output_mul_insn): Simplify, it is never called with + UNSIGNEDP set. + + * pa.md (divsi3, udivsi3, modsi3, umodsi3): Simplify. + (ashlsi3): Clean up indentation and commentary. + +Fri Apr 28 12:48:01 1995 Jason Merrill + + * integrate.c (expand_inline_function): Don't emit any notes until + after we've expanded the actual parameters. + +Fri Apr 28 11:51:06 1995 Stan Cox (gcc@dg-rtp.dg.com) + + * m88k/dgux.h: (ENDFILE_SPEC, LIB_SPEC) Fix crtbegin and crtend + (SELECT_RTX_SECTION) Put relocatable pic constants in data section + + * m88k/dguxbcs.h: (LIB_SPEC) Likewise + + * m88k/m88k.c: (symbolic_operand) Put relocatable pic constants in data + + * m88k/m88k.h: (FRAME_POINTER_REQUIRED) Add -momit-leaf-frame-pointer + + * m88k/m88k.md: (umulsidi3) Doesn't work for 88110 with mod/div changes + + * m88k/x-dgux: (GCC_FOR_TARGET) tdesc gets mixed up for crtbegin/crtend + +Fri Apr 28 06:36:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (pop_init_level, output_init_element): Pass + require_constant_* to digest_init. + + * alpha.c (alpha_emit_set_const): Now returns rtx and take MODE arg. + Rework to use a new pseudo for intermediate values if high opt level. + Also use expand_{bin,un}op. + * alpha.h (alpha_emit_set_const): Add declaration. + * alpha.md (mov[sd]i and splits): Change call to alpha_emit_set_const. + + * reg-stack.c (stack_result): Fix bug in last change. + +Fri Apr 28 01:08:43 1995 Doug Evans + + * objc-act.c: Update calls to start_decl, finish_struct, + pass NULLs for attributes. + +Thu Apr 27 21:13:14 1995 Doug Evans + + * sparc.md (tablejump): Only if ! TARGET_MEDANY. + (casesi): New pattern for TARGET_MEDANY case. + + * c-common.c (decl_attributes): Always continue if attribute not found. + * c-typeck.c (common_type): Call lookup_attribute instead of + value_member. + * tree.c (attribute_hash_list): New function. + (build_type_attribute_variant): Call it. + (valid_machine_attribute): Handle attributes with arguments. + (is_attribute_p): New function. + (lookup_attribute): New function. + (attribute_in_list): Deleted. + (attribute_list_contained): Check TREE_PURPOSE and TREE_VALUE. + * tree.h (valid_machine_attribute): Add prototype. + (is_attribute_p, lookup_attribute): Likewise. + * i386/winnt.h (RETURN_POPS_ARGS): Call lookup_attribute. + (ENCODE_SECTION_INFO): Likewise. + (CPP_PREDEFINES): Use __stdcall__, __cdecl__. + (VALID_MACHINE_DECL_ATTRIBUTE): Call is_attribute_p. + `args' must be NULL. + +Thu Apr 27 21:10:41 1995 David Edelsohn + + * rs6000.md (insv): New anonymous patterns to combine insert with + arbitrary ashift, ashiftrt, lshiftrt, or zero_extract. (Based on + patch from John Brooks .) + (ashlsi3): Remove extraneous operand processing. + +Thu Apr 27 18:47:24 1995 Jim Wilson + + * sh/ashlsi3.c, sh/ashrsi3.c, sh/lshrsi3.c: Delete. + * sh/lib1funcs.asm (ashiftrt_r4_*): Rewrite for efficiency. + (ashrsi3, lshrsi3, lshrsi3): Add. + * t-sh (LIB1ASMFUNCS): Add new functions. + (LIBGCC2_CFLAGS): Delete. + (LIB2FUNCS_EXTRA): Remove deleted files. + (ashlsi3.c, ashrsi3.c, lshrsi3.c): Remove rules for deleted files. + + * stmt.c (expand_return): When returning BLKmode structure, use + operand_subword instead of doing arithmetic on the register number. + Also, for structures smaller than word_mode, copy it into a word_mode + temporary and then subreg it. + + * sparc.md: Delete two define_peepholes which print `bad peephole'. + +Thu Apr 27 16:17:01 1995 Torbjorn Granlund + + * toplev.c (rest_of_compilation): Call shorten_branches even when + !optimize. + * final.c (shorten_branches): For non-optimizing compiles, break + after first pass. + +Thu Apr 27 14:22:50 1995 Michael Meissner + + * i386/linux-oldld.h: New file, that is cloned from linux-aout.h, + except that it does not pass -m i386linux to the linker. This is + to support the original GNU/Linux ld that is on most distributions. + + * configure (i[345]86-*-linux*oldld*): Use i386/linux-oldld.h as + the target file. + +Thu Apr 27 08:56:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (valid_machine_attribute): Update last change. + +Thu Apr 27 08:06:33 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fix-header.c, cpplib.c: Don't include twice. + * cpplib.c (cpp_grow_buffer, init_parse_file): Cast {xmalloc,xrealloc} + for token_buffer to U_CHAR* instead of char*. + + * m68k/x-mot3300: New file. + * configure (m68k-motorola-sysv*): Use x-mot3300 instead of x-alloca. + +Thu Apr 27 07:04:09 1995 Paul Eggert + + * cccp.c (do_include): Fix minor memory leak. + + * cccp.c (struct argdata): Remove unused `comments' member. + (macarg): Don't set `comments' member. + + * cccp.c (collect_expansion): Assume leading white space + already removed. + Don't allocate unnecessary space for expansion. + + * cccp.c (deps_output): Don't generate overly long output lines. + Do not invoke self recursively with spacer == 0; this simplifies + the code a bit. + +Wed Apr 26 19:20:02 1995 Andrew McCallum + + * objc/Object.h: Changed Class * to Class in order to match NEXTSTEP + and OpenStep runtime. + * objc/Object.m, objc/Object.h, objc/archive.c, objc/class.c: Likewise. + * objc/encoding.c, objc/init.c, objc/objc-api.h, objc/objc.h: Likewise. + * objc/objects.c, objc/runtime.h, objc/selector.c: Likewise. + * objc/sendmsg.c, objc/typedstream.h: Likewise. + +Wed Apr 26 19:18:52 1995 Pieter Schoenmakers + + * objc/objc-api.h (objc_static_instances): New struct to record + static instances of a certain class. + (objc_module): New tag STATICS to point to the table of + objc_statics_instances. + + * objc/init.c (OBJC_VERSION): Version 7. + (objc_init_statics): New function. + (__objc_exec_class): Invoke objc_init_statics if needed. + + * objc/NXConstantString.m, objc/NXConstantString.h: New files. + * objc/Makefile (OBJC_O): Added bare-bones implementation of + NXConstantString. + + * objc-act.c (OBJC_VERSION): Version 7. + (build_objc_string_object): Build a full declaration if not using + the next runtime. + (objc_add_static_instance): New function. + (init_module_descriptor): Add reference to static instances table. + (build_module_descriptor): Add field for static instances table. + (get_objc_string_decl): New function. + (generate_static_references): New function. + (finish_objc): Call generate_static_references if needed. + + * c-tree.h (finish_decl_top_level): New declaration. + * c-decl.c (finish_decl_top_level): New function. + +Wed Apr 26 18:04:32 1995 Dirk Steinberg (Dirk.Steinberg@gmd.de) + + * stddef.h: Treat _MACHINE_ANSI_H_ like _ANSI_H_. + +Wed Apr 26 14:09:59 1995 Jim Wilson + + * sparc.h (NEGTF2_LIBCALL): Define. + (INIT_TARGET_OPTABS): Add support for all TFmode *_LIBCALL macros. + * optabs.c (init_optabs): Delete all uses of undocumented TImode and + TFmode *_LIBCALL macros. + + * combine.c (simplify_rtx, case TRUNCATE): Add. Use force_to_mode. + (force_to_mode, case AND): Allow some simplifications when GET_MODE (x) + has more bits than HOST_BITS_PER_WIDE_INT. + * mips/mips.md (truncdiqi2+[456]): Add patterns to simplify ZERO_EXTEND + of a TRUNCATE. + +Wed Apr 26 13:01:22 1995 Doug Evans + + * sparc.md (memop define_splits): Rewrite to not use memop. + Preserve MEM_IN_STRUCT_P, MEM_VOLATILE_P, RTX_UNCHANGING_P bits. + * sparc.c (memop): Deleted. + (splittable_symbolic_memory_operand): New function. + (splittable_immediate_memory_operand): New function. + +Wed Apr 26 12:54:26 1995 Jeffrey A. Law + + * configure: Add hppa1.1-hp-lites support. + +Wed Apr 26 08:04:46 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sh.md (ashrsi2_31): Don't use dead_or_set_p after reload. + * pyr.md: Remove bad peepholes that improperly use dead_or_set_p. + + * function.c (expand_function_end): Warn about unused parms + if both -Wunused and -W. + + * tree.h (TYPE_PARSE_INFO): Delete unused field. + (TYPE_PACKED): Add new macro. + (struct tree_type): Delete unused field `parse_info'. + Add new field `packed_flag'. + * c-tree.h (finish_enum, finish_struct): Add ATTRIBUTES argument. + * c-common.c (init_attributes): Don't require decl for A_PACKED. + (decl_attributes, case A_PACKED): Set TYPE_PACKED for type. + * c-parse.in: Update number of shift/reduce conflicts. + (structsp): Pass attribute arg to finish_struct. + Support attributes on enums and pass to finish_enum. + * c-decl.c (finish_struct): Add ATTRIBUTES argument, call + decl_attributes and set DECL_PACKED from TYPE_PACKED. + (finish_enum): Add ATTRIBUTES argument, call decl_attributes, + and make enum narrow if TYPE_PACKED. + * print-tree.c (print_node): Print TYPE_PACKED. + + * c-decl.c (init_decl_processing): Don't give builtin__constant_p an + argument type. + * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): A pointer to a + string constant is a constant. + + * c-typeck.c (output_init_element): Constructor is not simple if + a bitfield is being assigned a non-integer. + + * c-typeck.c (push_init_level): Update constructor_depth when we + push spelling level. + +Tue Apr 25 19:50:06 1995 Jeffrey A. Law + + * pa.c (emit_move_sequence): Handle function label arithmetic for + PIC code generation too. + +Tue Apr 25 18:52:43 1995 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de) + + * reg-stack.c (current_function_returns_real): Deleted (unused). + (FP_mode_reg): Trimmed to a smaller size, less overhead. + (FP_MODE_REG): New macro over which FP_mode_reg will be accessed. + (mark_regs_pat, straighten_stack): New functions. + (reg_to_stack): Amend initialisation of FP_mode_reg. + Mark FP registers mentioned in USE insns before NOTE_INSN_FUNCTION_BEG. + (get_true_reg): Eliminate FP subreg accesses in favour of the + actual FP register in use. + (record_reg_life_pat): Make it work on SUBREGs as well. Make use of + the new mark_regs_pat function. Handle USE insns if called unnested. + (record_reg_life): Don't check for QImode again, we know that it + is there. Process CALL_INSNs like all other insns, they might `use' + some FP argument registers if register passing. + (stack_result_p): Changed in stack_result and returning an rtx. + (stack_reg_life_analysis): Take a new stackentry state argument. + Use stack_result and the rtx to mark using mark_regs_pat. This ensures + that types that need multiple FP registers are handled correctly. + Delete the no_live_regs shortcut to save space. + Use stackentry state to determine filled registers. + (replace_reg): Accept COMPLEX_FLOAT as well. + (move_for_stack_reg): Optimise away some pointer dereferencing. + (subst_stack_regs): Make sure the stack is in the right order + and of the right size for register passing. + (goto_block_pat): Make sure the stack is in the right order + to return possible multi-register values from the function. + (convert_regs): Fix comment about CALL_INSN, it's no longer valid. + Make sure the stack is of the right size and in the right order + to return possible multi-register values from the function. + + * function.c (assign_parms): If STACK_REGS is defined, generate USE + insns before the function body, thus showing which registers are filled + with parameters. + * expr.c (expand_builtin_apply_args): Likewise. + Reverse order of saving registers, more compact code for i387. + (expand_builtin_apply): Likewise. + * emit-rtl.c (gen_highpart): Add comment about broken implementation. + * i386.md (untyped_call): Make it return a complex double. + + * c-parse.in (attrib): Permit null-length argument list to attributes. + + * tree.c (valid_machine_attribute): Use new function attribute_in_list, + makes sure type_attribute_variants are reused even when attributes have + parameters. + Assign any new type to TREE_TYPE (decl). + (attribute_in_list): New function. + (attribute_list_contained): Use it. + * tree.h (attribute_in_list): New declaration. + +Tue Apr 25 18:25:53 1995 Jim Wilson + + * expr.c (struct move_by_pieces): Add to_struct and from_struct fields. + (move_by_pieces): Set to_struct and from_struct fields. + (move_by_pieces_1): Set MEM_IN_STRUCT_P of to1 and from1. + (expand_builtin, case BUILT_IN_MEMCPY): New variable type. + Set MEM_IN_STRUCT_P of src_mem and dest_mem. + + * Makefile.in (clean): Delete libgcc1-asm.a. + + * m68k/vxm68k.h (CPP_SPEC): Define. + + * c-decl.c (pushdecl): Don't test DECL_EXTERNAL when deciding whether + to register a duplicate decl in the current block. + + * cross64.h (INIT_ENVIRONMENT): Define as string not putenv call. + * gcc.c (main): Pass INIT_ENVIRONMENT to putenv. + + * stmt.c (expand_return): When returning BLKmode structure in + registers, copy it to a psuedo-reg instead of to hard registers. + +Tue Apr 25 15:14:58 1995 Michael Meissner + + * rs6000.h (LEGITIMIZE_ADDRESS): Don't create a DF address using two + regs if -msoft-float or -mcpu=403. + +Tue Apr 25 15:45:44 1995 Richard Henderson (richard@atheist.tamu.edu) + + * m68k.md (divhi3, udivhi3, modhi3, umodhi3): Deleted + these insns plus some surrounding trash. + (divmodhi4, udivmodhi4): Added these insns. + +Tue Apr 25 10:12:40 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_builtin_saveregs): Refine last change to work + for both stdarg and varargs. + + * tree.c (chain_member_purpose): Make similar to chain_member_value. + + * Makefile.in, configure: Change "realclean" to "maintainer-clean". + + * protoize.c: Removed __NetBSD__ from conditional. + Declare strerror if HAVE_STRERROR is defined; otherwise + declare sys_errlist and sys_nerr. + (my_strerror): New function. + (errno): Don't define if already defined as a macro. + + * alpha.c (current_file_function_operand): Return false if profiling. + + * expr.c (convert_move): Don't access a hard reg in an invalid + mode when doing a truncation. + + * alpha.c (add_operand): Test for exactly the constants allowed by + the constraints. + * alpha.h (CONST_OK_FOR_LETTER_P, case 'L'): Reject 0x80000000. + + * c-parse.in (initdcl, notype_initdcl): Pass attributes to + start_decl; delete call to decl_attributes. + * c-tree.h (start_decl): Two new tree parameters. + * c-decl.c (start_decl): New args for attributes; call decl_attributes. + + * c-decl.c (duplicate_decls): Don't look at TYPE_ACTUAL_ARG_TYPES + if it is not set. + + * xm-1750a.h: New file. + + * alpha.c (alpha_builtin_saveregs): Add to incoming args addr + if less than 6 named args, not less than or equal to. + +Mon Apr 24 15:25:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * mips-tfile.c (fatal, error): Make first arg const to avoid warning. + + * stmt.c (expand_end_bindings): Write a BARRIER after call + to abort in nonlocal handler. + + * stmt.c (expand_decl_init): Call preserve_temp_slots to keep + around any temp whose address was taken. + +Fri Apr 21 16:26:15 1995 Torbjorn Granlund + + * pa.md (call_internal_reg): Fix typos in length calculation. + (call_value_internal_reg): Likewise. + +Fri Apr 21 13:17:15 1995 Roland McGrath + + * config/gnu.h (STANDARD_INCLUDE_DIR): New macro. + * config/mips/gnu.h (STANDARD_INCLUDE_DIR): Macro moved there. + +Fri Apr 21 08:23:58 1995 Tom Quiggle (quiggle@lovelace.engr.sgi.com) + + * toplev.c (lang_options): Add -I for GNAT. + * gcc.c (default_compilers): Pass -I to gnat1. + +Fri Apr 21 07:58:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (integer_all_onesp): Test to size of mode, not TYPE_PRECISION. + + * toplev.c (main): Turn on -fforce-mem for -O2. + + * fold-const.c ([lr]rotate_double): Replace; old versions were bogus. + (fold, shift and rotate): Don't call tree_int_cst_sgn on non-integer. + (fold, case LROTATE_EXPR): If constant count, convert to RROTATE_EXPR. + (fold, case RROTATE_EXPR): Sometimes commute logical op with rotate. + Delete pair of counteracting shifts. + + * combine.c (simplify_logical, case AND): If still an AND, get + new values for op0 and op1. + +Thu Apr 20 17:52:10 1995 Jim Wilson + + * sh.c: Completely rewritten. + * sh.h (FAST_BIT, CONSTLEN_2_BIT, CONSTLEN_3_BIT, CONSTLEN_0_BIT, + TARGET_FASTCODE, TARGET_CLEN3, TARGET_CLEN0, TARGET_OPTIONS): Delete. + (TARGET_SWITCHES): Delete -mclen3 and -mclen0 options. + (TARGET_DEFAULT): Is zero. + (OVERRIDE_OPTIONS): Delete code to set max_count_si and max_count_hi. + (SPECIAL_REG): New macro. + (HARD_REGNO_MODE_OK): Allow any mode in any general register. + (GO_IF_LEGITIMATE_ADDRESS): Delete constant + reg address case. + (MOVE_RATIO): Define to 2 when TARGET_SMALLCODE. + (max_si, max_hi, max_count_si, max_count_hi): Delete. + * sh.md: Delete spurious constraints from all define_expands. + (rotlsi3_1): Set T reg instead of clobbering it. + (ashrsi3): Use expand_ashiftrt instead of gen_shifty_op. + (movsi_i, movhi_i, movsf_i): Add conditions to reject patterns + needing a reload. + (movdi-2, movdf_k): Correct conditions to reject patterns needing + a reload. + ([inverse_]branch_{true,false}): Pass operands to output_branch. + (jump): Delete unnecessary braces. + (call, call_value): Don't use expand_acall. Force operand0 into + a register. + +Thu Apr 20 12:57:16 1995 Jason Merrill + + * function.c (assign_parms): Use TREE_ADDRESSABLE rather than + TYPE_NEEDS_CONSTRUCTING to decide whether a parameter needs to be + passed by invisible reference. + + * calls.c (expand_call): Ditto. Abort if we try to pre-evaluate a + parameter of TREE_ADDRESSABLE type. + +Wed Apr 19 17:50:24 1995 Torbjorn Granlund + + * pa.h (TARGET_SWITCHES): Fix typo. + +Tue Apr 18 18:06:03 1995 Per Bothner + + * expr.c (store_constructor): Use BYTES_BIG_ENDIAN rather + than BITS_BIG_ENDIAN to layout bits within bitstring. + * tree.c (get_set_constructor_bytes): Likewise. + +Tue Apr 18 17:22:46 1995 Per Bothner (bothner@wombat.gnu.ai.mit.edu) + + * config/m68k/{x-hp320,x-hp320g} (FIXPROTO_DEFINES): + Define _HPUX_SOURCE so putenv and other functions get seen. + +Tue Apr 18 03:57:35 1995 Michael Meissner (meissner@cygnus.com) + + * varasm.c (weak_decls): Make this a unique structure, instead of + a tree structure. + (handle_pragma_weak): Don't redeclare asm_out_file. Use new weak + structure to copy name and value to. Protect name and value by + copying them to the permanent obstack. + (declare_weak): Call handle_pragma_weak, instead of duplicating + the code. + (finish_weak): Rewrite to use new weak symbols list structure. + + * c-pragma.h: New file to define the c-pragma.c interfaces. + * c-pragma.c: Include it. + * varasm.c: Include it. + * c-lex.c: Include it. + * cp/lex.c: Include it. + + * varasm.c (handle_pragma_weak): No longer pass output file + stream, since weak pragmas are delayed until the end of the + compilation. + * c-pragma.c (handle_pragma_token): Call handle_pragma_weak + without file stream argument. + + * Makefile.in (varasm.o, c-lex.o, c-pragma.o): Add dependencies on + c-pragma.h. + + * config/rs6000.md (movdf): If -msoft-float, do not generate + memory to memory references, like is already done for the + -mhard-float case. Remove an extra test for -mhard-float inside + of -mhard-float code. + +Tue Apr 18 06:19:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (size_int): Arg is unsigned HOST_WIDE_INT. + * tree.h (size_int): Likewise. + +Mon Apr 17 23:36:57 1995 Jason Merrill + + * rs6000/aix41.h: Restore March 11th changes, plus + (ASM_OUTPUT_EXTERNAL): Do add [DS] or [RW], just don't emit + anything. + * rs6000/aix3newas.h (ASM_OUTPUT_EXTERNAL): Ditto. + +Mon Apr 17 15:58:52 1995 Per Bothner + + * config/mips/x-iris (FIXPROTO_DEFINES): Add -D_LANGUAGE_C_PLUS_PLUS. + * config/mips/x-iris6: Likewise. + + * cpplib.c: Rename make_definition to cpp_define. + * cpplib.h (cpp_define): New declaration. + + * cpplib.c (special_symbol): For T_SPECLINE, calculate __LINE__ + in enclosing file buffer, not current buffer (if macro expanding). + (cpp_get_token): Fix thinko (in code for chopping unneeded space). + +Mon Apr 17 11:36:07 1995 Jim Wilson + + * abi64.h (CPP_SPECS): Define and use _ABI64 instead of + _MIPS_SIM_ABI64. + (SETUP_INCOMING_VARARGS): Set MEM_IN_STRUCT_P if big endian target. + * iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Define. + + * combine.c (get_last_value): Ignore BARRIER when scanning backwards. + (move_deaths): New variables before_dead and after_dead. Set them + to instructions that have valid INSN_CUID values and use in test. + + * combine.c (subst_prev_insn): New variable. + (try_combine): Set it. + (get_last_value): Use it. + + * reload.c (find_reloads): Recompute reg_equiv_address from + reg_equiv_memory_loc before using it. + (find_reloads_toplev, make_memloc): Likewise. + + * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Call force_operand + on dest_rtx before returning it. + + * function.c (instantiate_decls): Use temporary allocation if + DECL_DEFER_OUTPUT is set. + +Sat Apr 15 23:19:03 1995 Jason Merrill + + * aoutos.h (ASM_OUTPUT_DEF): Define instead of SET_ASM_OP. + * sparc/sunos4.h (ASM_OUTPUT_DEF): Ditto. + + * varasm.c (weak_finish): Don't handle aliases. + (declare_weak): Ditto. + (assemble_alias): Handle aliases. + + * c-common.c (enum attrs): Add A_ALIAS. + (init_attributes): Ditto. + (decl_attributes): Ditto. + +Sat Apr 15 13:26:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): Call preserve_temp_slots on temps + made for BLKmode args returned in registers. + + * pa.c (override_options): Fix typo. + +Sat Apr 15 12:11:46 1995 Brendan Kehoe + + * alpha/alpha.c (output_epilog): Initialize fp_offset to 0, and + make sure it's non-zero before we try to use it to restore the + frame pointer. + +Fri Apr 14 19:45:05 1995 Jason Merrill + + * ginclude/va-{clipper,pa,pyr,sparc,spur}.h (va_arg): Reorganize + to avoid BIND_EXPRs and COND_EXPRs of aggregate type. + +Fri Apr 14 19:31:14 1995 Roland McGrath + + * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Make the section + read-only executable "ax" if DECL is a FUNCTION_DECL; read-only + "a" (previously the case always) if DECL is TREE_READONLY; + otherwise writable "aw". + +Fri Apr 14 18:49:11 1995 Linus Torvalds + + * alpha.md (probe_stack): Probe with write, not read. + (allocate_stack): Update and correct stack probe code. + * alpha.c (output_prolog): Changed stack probe at function entry. + +Fri Apr 14 18:42:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * jump.c (delete_insn): When deleting after label, delete + a BARRIER as well. + +Fri Apr 14 14:40:48 1995 Jason Merrill + + * toplev.c (compile_file): Call weak_finish. + + * c-common.c (enum attrs): Add A_WEAK. + (init_attributes): Ditto. + (decl_attributes): Support __attribute__ ((weak)) by + calling declare_weak. + + * sparc/sunos4.h (HANDLE_PRAGMA_WEAK, WEAK_ASM_OP, SET_ASM_OP): + Define to support weak symbols with -fgnu-linker. + * aoutos.h: Ditto. + + * varasm.c (handle_pragma_weak): Add declared weak symbols to + weak_decls rather than emitting them immediately. + (declare_weak): Add the indicated declaration to weak_decls. + (weak_finish): Emit .weak directives for any weak symbols. + + * libgcc2.c: The C++ free-store management functions are weak. + +Fri Apr 14 13:00:29 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000/rs6000.c (output_prolog): For eabi systems, emit main's + call to __eabi before setting up the minimal TOC used with the + -mrelocatable support. + + * rs6000/eabi.h (INVOKE__main): Don't define any more, + output_prolog will emit the call. + +Fri Apr 14 09:09:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (call_operand): Any reg is valid for NT. + (output_prologue): Never need GP for Windows/NT. + Set SYMBOL_REF_FLAG in current function decl. + +Thu Apr 13 20:19:30 1995 Jason Merrill + + * alpha/xm-alpha.h (HAVE_VPRINTF): Define. + (HAVE_PUTENV): Define. + (POSIX): Define. + +Thu Apr 13 19:57:44 1995 Doug Evans + + * emit-rtl.c (gen_sequence): If the insn has a non-null + CALL_INSN_FUNCTION_USAGE field, output it as a sequence so the + latter isn't discarded. + + * c-parse.in: Update expected conflict count. + +Thu Apr 13 08:10:20 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure.bat: Arg 2 is which machine (i386 or alpha). + * configure (alpha-*-winnt3*): New configuration. + * alpha.c: Don't #include stamp.h for WINNT. + (input_operand, case CONST): Allow ptr_mode and DImode. + * alpha.h (WINDOWS_NT): Provide default definition. + (ASM_OUTPUT_INT): Use output_addr_const. + (ASM_OUTPUT_ADDR_DIFF_ELT): Use .long for NT. + * alpha.md (calll, tablejump, movsi): New variants for NT. + * alpha/winnt.h, alpha/xm-winnt.h, alpha/x-winnt: New files. + * alpha/config-nt.bat, alpha/config-nt.sed: New files. + * i386/config-nt.bat: Add Ada fragments to Makefile. + * i386/config-nt.sed: Adjust for deletion of config.run in Makefile.in + Change version to 2.6.3. + Add some missing tabs. + * winnt/winnt.h (TARGET_MEM_FUNCTIONS): Define. + (LINK_SPEC): Delete "align:0x1000". + * winnt/xm-winnt.h (OBJECT_SUFFIX): Define. + * ginclude/stdarg.h, ginclude/varargs.h: Clean up code that + defines *DEFINED* symbols. + + * configure (a29k-*-sym1*): Same as a29k-*-bsd*. + * a29k.h (ASM_OUTPUT_SECTION_NAME): New macro. + +Wed Apr 12 14:36:03 1995 Jim Wilson + + * dbxout.c (dbxout_type_fields): Correct arguments to CHARS macro + in flag_minimal_debug case. + (dbxout_symbol_name): Use DECL_ASSEMBLER_NAME unconditionally. + * sdbout.c (sdbout_record_type_name): Correct indentation. + (sdbout_symbol): Use DECL_ASSEMBLER_NAME unconditionally. + (sdbout_one_type): Likewise. + +Tue Apr 11 13:24:13 1995 Per Bothner + + * fix-header.c (main): Fix loop over required_functions_list. + (fatal): Also print inc_filename. + + * cpplib.c (cpp_push_buffer): Added missing initializatuon of buf. + (cpp_file_buffer): Compare against CPP_NULL_BUFFER, not NULL. + (finclude): No longer call cpp_push_buffer - let callers do it. + (do_include): Add call to cpp_push_buffer. + (push_parse_file): Call cpp_push_buffer early, so initial + defines can use file and line from a valid cpp_buffer. + (nreverse_pending): New function. + (push_parse_file): Use nreverse_pending. + (push_parse_file): For -include files, just push them in reverse + order - we don't need to scan them now. + (cpp_error_from_errno, cpp_perror_with_name): Don't emit extra '\n'. + +Tue Apr 11 13:36:44 1995 Jim Wilson + + * configure (mips-dec-mach3): Add. + + * sh.c (shiftby_operand): Delete. + * sh.h (TARGET_SWITCHES): -m3 and -m3l also set SH2_BIT. + (OVERRIDE_OPTIONS): Don't add CPU_SH2 to CPU_SH3 when TARGET_SH3. + * sh.md (ashlsi3): Use nonmemory_operand as a predicate instead of + shiftby_operand. Don't use shiftby_operand in the output statement. + (lshrsi3): Likewise. + + * c-decl.c (poplevel): Do output inline function if + DECL_ABSTRACT_ORIGIN points to itself. + + * varasm.c (output_constant): Cast assemble_string argument to char *. + +Mon Apr 10 14:29:28 1995 Torbjorn Granlund + + * recog.c (constrain_operands, case 'E'): Make this work like + constraint character `F' when REAL_ARITHMETIC is defined. + * regclass.c (record_reg_classes, case 'E'): Likewise. + * reload.c (find_reloads, case 'E'): Likewise. + +Mon Apr 10 14:30:31 1995 Michael Meissner + + * rs6000/aix3newas.h, rs6000/aix41.h: Eliminate March 11th changes + to undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}, since this causes the + compiler not to bootstrap. + +Mon Apr 10 07:17:39 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cppalloc.c: #include config.h. + * cppexp.c: Add declarations of xmalloc and xrealloc. + (cpp_parse_expr): Cast args to bcopy to char *. + * cpphash.c: Add declaration of xmalloc. + * cpplib.c (init_parse_options, cpp_reader): Cast args to bcopy, + bcmp, and bzero to char *. + (add_import, push_parse_file, init_parse_file): Likewise. + + * c-common.c (enum attrs): New attribute, A_NOCOMMON. + (init_attribute): Initialize it. + (decl_attributes): Implement it. + * varasm.c (make_decl_rtl): Allow section attribute if -fno-common + or variable is not to be placed in common for some other reason. + + * combine.c (simplify_set): Don't move a SUBREG to dest if it + is changing the size of a hard reg in CLASS_CANNOT_CHANGE_SIZE. + + * reload.c (find_equiv_reg): If goal is a pseudo that got memory, + a store into memory makes it invalid. + * reload1.c (reload_as_needed): Call forget_old_reloads_1 on + pattern before reg elimination. + +Mon Apr 10 00:26:14 1995 Jeffrey A. Law + + * pa.c (pa_reorg): Bump label use count for each entry in an + exploded ADDR_VEC. + +Sun Apr 9 09:22:51 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * i386.md (adddi3, subdi3): Need scratch reg whenever operand 0 in + mem and operands 1 not '0'. + (subdi3): Don't treat two non-equal MEMs as non-aliasing. + +Sat Apr 8 22:53:38 1995 Jeffrey A. Law + + * pa.c (pa_reorg): Fix typo. + +Sat Apr 8 19:36:36 1995 Michael Meissner + + * rs6000/rs6000.h (SELECT_SECTION): TREE_CODE_CLASS must be called + with a tree code, not a tree value. + +Sat Apr 8 12:41:01 1995 Mike Stump + + * cpphash.c: Don't use const on compilers that don't support it. + +Sat Apr 8 16:32:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_increment): Handle case where INCREMENTED + has a non-trivial conversion. + +Fri Apr 7 19:33:21 1995 Phil Nelson (phil@cs.wwu.edu) + + * ns32k.h (TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): + Fix assembler syntax errors. + +Fri Apr 7 19:27:23 1995 Pat Rankin (rankin@eql.caltech.edu) + + * cccp.c (VMS_fstat, VMS_stat): New functions. + +Fri Apr 7 19:25:21 1995 Paul Eggert + + * cccp.c (collect_expansion): If traditional, set stringify + member to SHARP_TOKEN regardless of the value of + stringify_sharp_token_type. + +Fri Apr 7 07:48:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (simplify_unary_operation): #ifdef POINTERS_EXTEND_UNSIGNED, + handle sign- or zero-extending addresses. + + * optabs.c (init{,_integral,_floating,_complex}_libfuncs): + Change SUFFIX to "char" to avoid confusion with prototype. + + * explow.c (convert_memory_address): No longer static. + New arg, TO_MODE. + Do something special for SYMBOL_REF, LABEL_REF, and CONST. + (memory_address): Add extra arg to call to convert_memory_address. + * rtl.h (convert_memory_address): Add extra arg. + * expr.c (expand_expr, case ADDR_EXPR): Always call + convert_memory_address when converting; add extra arg. + * stmt.c (expand_computed_goto): Convert from ptr_mode to Pmode. + + * gcc.c (OBJECT_SUFFIX): Default now ".o", not "o". + (all specs): Remove "." before %O; use %O in a few missing cases. + * i386/os2.h (OBJECT_SUFFIX): Delete from here. + * i386/xm-os2.h (OBJECT_SUFFIX): Move to here; now has period. + + * Makefile.in (STAGESTUFF): Use $(exeext) for executables. + +Fri Apr 7 03:32:29 1995 Richard Stallman + + * config.sub: Accept -lites* as op sys. + +Thu Apr 6 23:08:50 1995 Per Bothner + + * cpplib.c (bcopy, bzero, bcmp): Remove #undefs. + * cppalloc.c (xcalloc): Re-implement using calloc, + rather than malloc+bzero. + * cpplib.c (SELF_DIR_DUMMY): New macro. + (do_include): Don't pass searchptr to finclude if it is dsp, + since that is on the stack, and would cause a dangling pointer. + If handling #include_next, recognize SELF_DIR_DUMMY. + +Fri Apr 7 00:54:24 1995 Jeffrey A. Law + + * pa.h (MACHINE_DEPENDENT_REORG): Define. + * pa.md (switch_jump): New pattern for jumps which implement + a switch table. + * pa.c (pa_reorg): New function to explode jump tables. + (pa_adjust_insn_length): Account for jumps in switch tables with + unfilled delay slots. + +Thu Apr 6 14:31:10 1995 Jason Merrill + + * c-typeck.c (build_binary_op): Don't call common_type for + uncommon pointer types. + +Wed Apr 5 13:53:17 1995 Per Bothner + + Re-write fixproto/fix-header/etc to use cpplib: + * fix-header.c: Comment out support for adding missing extern "C" + using #ifdef ADD_MISSING_EXTERN_C instead of #if 0. + * fixproto: Removed case of required functions. Instead use ... + * fix-header.c (std_include_table): ... new required-functions table. + (cpp_file_line_for_message, cpp_print_containing_files, cpp_message): + New stub functions, to intercept cpplib error message. + * fixproto: Don't call $CPP, since fix-header now incorporates cpplib. + * gen-protos.c (fatal, hashf): New functions. + (main): Use hashf, instead of hash. + * scan-decls.c (scan_decls, skip_to_closing_brace): Re-write to + take a cpp_reader* as argument, not a FILE*. + * scan.h (hash): Make parameter const. + * scan.c (hash): Removed. + * scan.c (memory_full, xmalloc, xrealloc): Removed. + Use functions from cppalloc.c instead. + * Makefile.in (gen-prtos, fix-header, stmp-fixproto): Update. + +Wed Apr 5 13:24:14 1995 Per Bothner + + * cpplib.c (cpp_get_token): If traditional, return after comment, + instead of reading more, so end-of-line can be peeked at. + * cpperror.c (cpp_file_line_for_message, cpp_message): New + functions, that do the actual printing of error messages. + (cpp_print_file_and_line, cpp_error, cpp_warning, cpp_pedwarn, + cpp_error_with_line, cpp_warning_with_line, cpp_pedwarn_with_line, + cpp_pedwarn_with_file_and_line, cpp_error_from_errno, my_strerror, + cpp_perror_with_name): Re-write to use cpp_file_line_for_message + and cpp_message, and move to cpplib.c. + +Tue Apr 4 23:35:49 1995 Roland McGrath + + * config/gnu.h (GNU_CPP_PREDEFINES): Remove -D__HURD__. + +Tue Apr 4 17:15:54 1995 Jeffrey A. Law + + * pa.h (DO_GLOBAL_DTORS_BODY): Fix pointer -> integer assignment + problem. + + * reorg.c (fill_simple_delay_slots): Don't use a JUMP_INSN + a the target of another JUMP_INSN to fill a delay slot. + +Mon Apr 3 19:03:48 1995 Torbjorn Granlund + + * cse.c (simplify_unary_operation): Sign-extend constants when + they have the most significant bit set for the target. + + * m68k.md (umulsi3_highpart): Test for CONST_INT and CONST_DOUBLE, + not CONSTANT_P. + (smulsi3_highpart): Likewise. + * m68k.c (const_uint32_operand): New function. + (const_sint32_operand): New function. + * m68k.md (const_umulsi3_highpart): Use const_uint32_operand instead + of immediate_operand for op3. Delete mode. + (const_smulsi3_highpart): Analogous change. + +Mon Apr 3 19:03:48 1995 Jim Wilson + + * cse.c (simplify_binary_operation): Sign-extend constants when + they have the most significant bit set for the target. + + * combine.c (force_to_mode, case PLUS): Sign extend masks that are + negative in OP_MODE. + (simplify_and_const_int): Sign-extend constants when they have the + most significant bit set for the target. + (merge_outer_ops): Likewise. + (simplify_shift_const): Likewise. + +Mon Apr 3 18:23:48 1995 Jason Merrill + + * toplev.c (lang_options): Add -f{no-,}repo. + +Mon Apr 3 18:13:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (nonzero_bits, case REG): Check POINTERS_EXTEND_UNSIGNED. + (num_sign_bit_copies, case REG): Likewise. + * explow.c (convert_memory_address): New function. + (memory_address): Call if it needed. + (promote_mode, case POINTER_TYPE): Use Pmode and pointer extension. + (allocate_dynamic_stack_space): Convert size from ptr_mode. + * expr.c (clear_storage, expand_assignment, store_{expr,constructor}): + Use ptr_mode instead of Pmode in some places. + (expand_expr, expand_builtin): Likewise. + (push_block, store_expr): Convert size to Pmode. + (expand_expr, case ADDR_EXPR): Convert from Pmode to ptr_mode. + +Mon Apr 3 18:00:52 1995 Jim Wilson + + * explow.c (allocate_dynamic_stack_space): Correct typo in last + change. + + * sh.c (gen_shifty_op, case ASHIFTRT): Return 0 if shift count is not + a constant. + +Mon Apr 3 12:17:10 1995 Michael Meissner (meissner@cygnus.com) + + * expmed.c (extract_bit_field): When converting a SUBREG into a + REG, if the system is big endian, adjust the bit offset + appropriately. + +Mon Apr 3 00:08:45 1995 Roland McGrath + + * config/i386/linux.h: Include "config/linux.h" instead of + "linux.h", to avoid recursion. + +Sun Apr 2 23:50:27 1995 Roland McGrath + + * config/i386/gnuelf.h: Include i386/linux.h instead of + i386/linuxelf.h. + +Sun Apr 2 17:35:10 1995 Jim Wilson + + * cse.c (simplify_relational_operation): Don't simplify A-B for + compare of A and B when the compare is unsigned. + +Sun Apr 2 08:23:38 1995 Paul Eggert + + * fixincludes (stdio.h): BSDI 2.0 changed the spelling of _VA_LIST_ + to _BSD_VA_LIST_. + +Sun Apr 2 07:57:28 1995 Richard Kenner + + * i386/xm-bsd386.h: New file. + * configure (i[345]86-*-bsd*): Add xm_file. + + * gcc.c (default_compilers): Pass -W and -w to gnat1. + + * winnt/winnt.h (STDC_VALUE): Add #undef. + * i386/winnt.h (LIB_SPEC): Likewise. + +Sun Apr 2 07:55:25 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.h (RETURN_POPS_ARGS, ENCODE_SECTION_INFO): Call + chain_member_purpose, not chain_member_value. + (ASM_FILE_START, LIB_SPEC): Move to here. + * winnt/winnt.h (ASM_FILE_START, LIB_SPEC): Delete from here. + * tree.c (chain_member_purpose): New function. + +Sat Apr 1 12:19:14 1995 Jason Merrill + + * c-typeck.c (build_binary_op): New variable build_type controls + type given to expression when created. Set to integer_type_node for + comparison ops instead of result_type so result_type still holds type + in which comparison is done. When checking for comparison between + signed and unsigned, use result_type rather than (possibly shortened) + type of op0. Don't warn about equality comparison of signed operand + to unsigned constant that fits in signed type. + +Sat Apr 1 09:47:02 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.h (CPP_PREDEFINES): Add definitions for __stdcall + and __cdecl. + * winnt/winnt.h (LIB_SPEC): Add OLDNAMES.LIB. + * winnt/xm-winnt.h: Remove unneeded #define's for non-ANSI functions. + * fixinc.winnt: Remove unneeded fixes relating to __stdcall. + + * objc/Makefile (SHELL): New definition. + +Sat Apr 1 08:25:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): When emitting a BARRIER, don't put it after + a deleted insn. + + * reload.c (push_reload): Initialize secondary_{in,out}_icode. + + * gcc.c (print_multilib_info): Don't use LAST_PATH if not set. + +Sat Apr 1 08:15:59 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vax.md (extv, extzv): Don't use immediate value for operand 1. + +Sat Apr 1 07:48:29 1995 Yury Shevchuk (sizif@botik.yaroslavl.su) + + * stmt.c (expand_asm_operands): Properly ignore invalid reg in clobber. + +Sat Apr 1 07:02:24 1995 Paul Eggert + + * cccp.c: General code cleanup. + Add prototypes for static functions. + Remove unnecessary casts to (char *); add casts to (U_CHAR *). + Add parentheses suggested by `gcc -Wparentheses'. + Rename local variables as suggested by `gcc -Wshadow'. + , , , : New includes. + , : Include only if defined(RLIMIT_STACK). + : Include, unless already does. + (HAVE_FCNTL_H, HAVE_STDLIB_H, HAVE_SYS_TIME_H): New symbols. + (HAVE_UNISTD_H, STDC_HEADERS, TIME_WITH_SYS_TIME): Likewise. + (__attribute__, PROTO, VA_START, PRINTF_ALIST, PRINTF_DCL): New macros. + (PRINTF_PROTO{,_1,_2,_3}, DO_PROTO): Likewise. + (bcopy, bzero, bcmp): If #defined by configuration file, use that. + If STDC_HEADERS is defined, use standard C functions. + If BSTRING is defined, or USG and VMS are not defined, use + the C library. Otherwise, use my_bcopy, my_bzero, my_bcmp. + (localtime): Remove no-longer-necessary explicit declaration. + (getenv, index, rindex): Don't declare explicitly if the + appropriate system header should declare it. + (fdopen): Remove no-longer-used declaration. + (vprintf): Define a subsitute macro if !defined(HAVE_VPRINTF). + (main): Replace `fdopen (dup (fileno (stdout)), "w"))' + with `stdout'. + (get_lintcmd, rescan, create_definition): Use bcmp instead of strncmp + when both operands are known to be free of null bytes. + (check_macro_name, compare_defs, collect_expansion): Likewise. + (do_assert, compare_token_lists, assertion_lookup, do_line): Likewise. + (skip_if_group, lookup): Likewise. + (rescan): Remove unused label `startagain'. + Abort instead of printing nonsense if the stack is corrupted + when there was an unterminated successful conditional. + (pcfinclude): Include explicit double-cast through GENERICPTR + to identify particularly egregious type puns. + (create_definition, do_define, check_macro_name): Use %.*s + printf format to avoid painful copying-and-casting. + (do_once): Return void, not (unused) int. + (do_ident, do_pragma, do_sccs): Accept extra arguments so that + all directive-handler's types match. + (do_sccs): Define only if SCCS_DIRECTIVE is defined. + (skip_if_group, dump_single_macro): Add `default: break;' to + keep -Wswitch happy. + (error, warning, error_with_line, vwarning_with_line, pedwarn): Use + stdarg/vararg/vfprintf instead of passing bogus char * args around. + (pedwarn_with_line, pedwarn_with_file_and_line, fatal): Likewise. + (verror, vwarning, verror_with_line, vwarning_with_line): New fcns. + (dump_single_macro): Abort if ap points to garbage. + (make_definition, make_undef, make_assertion): Parameter now char *. + (xmalloc, xrealloc, xcalloc, savestring, index0): Make sizes size_t + instead of unsigned; make pointer parameters GENERICPTR, not char *. + (xcalloc): Use bzero to clear memory instead of using own loop. + +Fri Mar 31 08:33:07 1995 Ken Raeburn (raeburn@wombat.gnu.ai.mit.edu) + + * longlong.h (umul_ppmm mc68000): Use %# instead of #. + +Fri Mar 31 06:37:54 1995 Michael Meissner (meissner@cygnus.com) + + * stor-layout.c (layout_decl): Implment -fpack-struct. + (layout_record): Ditto. + + * flags.h (flag_pack_struct): New flag variable. + + * toplev.c (flag_pack_struct): New flag variable. + (f_options): Add -fpack-struct support. + + * Makefile.in (stor-layout.o): Add flags.h dependency. + +Fri Mar 31 08:40:16 1995 Douglas Rupp (drupp@cs.washington.edu) + + * configure (i[345]86-*-winnt3*): Add tmake_file. + * i386/x-winnt (winnt.o): Deleted. + * i386/t-winnt: New file. + +Fri Mar 31 07:26:37 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * m68k/netbsd.h, m68k/hp3bsd44.h: Remove #include of machine/ansi.h. + + * configure (a29k-*-bsd): Set tmake_file to t-libc-ok. + + * stmt.c (expand_asm_operands): Properly handle output that can't + be directly written into. + + * c-parse.in (structsp): Correct error in last change. + * c-common.c (init_attributes): A_FORMAT is only for decls. + +Thu Mar 30 18:27:34 1995 Jason Merrill + + * libgcc2.c: Remove explicit 0-initializations of static variables. + +Thu Mar 30 18:22:39 1995 Fergus Henderson + + * c-typeck.c (internal_build_compound_expr): Warn if LHS of comma + expression has no side effects, or computes value which is not used. + * stmt.c (make warn_if_unused_value): No longer static. + * tree.h (warn_if_unused_value): Add declaration. + +Thu Mar 30 18:15:11 1995 Jim Wilson + + * combine.c (get_last_value): Revert back to use prev_nonnote_insn + instead of prev_real_insn. Modify test that ignores USE insns. + + * rs6000.h (SELECT_SECTION): Apply constant DECL_INITIAL test + only to DECLs. + + * explow.c (allocate_dynamic_stack_space): Test STACK_BOUNDARY against + BIGGEST_ALIGNMENT at run time instead of at compile time. + Give MUST_ALIGN macro a value, and test this value in if statements. + +Thu Mar 30 08:59:56 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in: Now have 27 shift/reduce conflicts. + (attribute_list): Just make chain of all attributes. + (attrib): Consistently put name as PURPOSE, args, if any, as VALUE. + (structsp): Allow attributes on any struct or union. + * c-common.c (enum attrs): New enum class. + (attrtab, attrtab_idx): New variables. + (add_attribute, init_attributes): New functions. + (decl_attributes): Major rewrite. + * tree.c (valid_machine_attribute): Now receive name and args. + +Thu Mar 30 07:20:14 1995 Paul Eggert + + * protoize.c: Use the phrase `preprocessing directive' consistently. + * cccp.c (handle_directive, do_line, skip_if_group): Likewise. + (output_line_directive): Renamed from output_line_command. + (no_line_directives): Renamed from no_line_commands. + + * cccp.c (rescan): Don't recognize preprocessing directives + within macro args. Warn if one is found. + +Thu Mar 30 06:20:36 1995 H.J. Lu (hjl@nynexst.com) + + * configure (i[345]86-*-linux*): Set xmake_file=x-linux, + tm_file=i386/linux.h, and don't set extra_parts. + (i[345]86-*-linux*aout*): New configuration. + (i[345]86-*-linuxelf): Deleted. + * config/linux{,-aout}.h, config/x-linux, config/xm-linux.h: New files. + * config/i386/linux-aout.h: New file. + * config/i386/linux.h: Extensive modifications to use ELF format + as default. + (LIB_SPEC): Don't use libc_p.a for -p. don't use libg.a + unless for -ggdb. + (LINUX_DEFAULT_ELF): Defined. + * config/i386/linuxelf.h,config/i386/x-linux: Files deleted. + * config/i386/xm-linux.h: Just include xm-i386.h and xm-linux.h. + +Wed Mar 29 19:09:36 1995 Mike Stump + + * libgcc2.c (__throw_type_match): Update to use new calling convention. + +Wed Mar 29 14:53:23 1995 Jim Wilson + + * gcc.c (process_command): Delete code modifying gcc_exec_prefix. + (main): Put it here after last use of gcc_exec_prefix. For cross + compiler, set startfile_prefixes if gcc_exec_prefix is set and + standard_startfile_prefix is a relative path. + + * combine.c (make_compound_operation, AND case): Undo July 7, 1994 + change. + + * mips/mips.md (call_internal1, call_value_internal1): Move %* from + start of assembler output to immediately before the jal. + + * mips/mips.c (function_prologue): Put SDB_DEBUGGING_INFO ifdef around + code for SDB_DEBUG support. + (mips_select_rtx_section, mips_select_section): Change rdata_section + to READONLY_DATA_SECTION and sdata_section to SMALL_DATA_SECTION. + * mips/mips.h (SMALL_DATA_SECTION): Define. + + * reorg.c (mark_referenced_resources): Make setjmp use all registers. + + * flow.c (mark_used_regs, case SUBREG): Only fall through to REG case + if operand is a REG. + + * i960/i960.h (TARGET_SWITCHES): Make -mold-align set + TARGET_FLAG_STRICT_ALIGN. + (STRICT_ALIGNMENT): Test TARGET_STRICT_ALIGN. + + * sh/sh.c (andcosts): Modify costs to match the hardware, and add + explanatory comments. + + * sparc/sol2.h (CPP_PREDEFINES): Add -D__SVR4. + +Wed Mar 29 14:30:30 1995 Michael Meissner + + * rs6000/rs6000.md (movsf): When moving to/from integer registers, + don't move floating point to memory if it is being simulated with + -msoft-float. + +Wed Mar 29 06:47:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in (initdcl): Only call decl_attributes once. + * c-common.c (decl_attributes): Clean up test for __mode__. + +Tue Mar 28 08:34:37 1995 John Hassey (hassey@dg-rtp.dg.com) + + * i386.md (adddi3): Don't treat two non-equal MEMs as non-aliasing. + +Tue Mar 28 08:20:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * a29k.h (CONSTANT_ADDRESS_P): Provide consistent definition. + +Tue Mar 28 07:26:41 1995 Paul Eggert + + * cccp.c (do_xifdef, do_endif): Remove unnecessary pointer comparisons. + +Mon Mar 27 20:45:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call, store_one_arg): Don't set KEEP in calls + to assign_stack_temp. + * function.c (preserve_temp_slots): Clear ADDR_TAKEN on item + that we are preserving. + +Mon Mar 27 14:39:35 1995 Ian Lance Taylor + + * mips/mips.h (FIRST_PSEUDO_REGISTER): Increment. + (FIXED_REGISTERS, CALL_USED_REGISTERS): Add new register. + (MD_REG_LAST): Increment. + (ST_REG_FIRST, ST_REG_LAST): Increment. + (HILO_REGNUM): Define. + (enum reg_class): Add HILO_REG. + (REG_CLASS_NAMES): Add "HILO_REG". + (REG_CLASS_CONTENTS): Add HILO_REG initializer, and adjust ST_REGS + and ALL_REGS initializers. + (SECONDARY_RELOAD_CLASS): Remove. + (SECONDARY_INPUT_RELOAD_CLASS): Define. + (SECONDARY_OUTPUT_RELOAD_CLASS): Define. + (REGISTER_MOVE_COST): Treat HILO_REG as MD_REGS. + (REGISTER_NAMES): Add initialization line. + (DEBUG_REGISTER_NAMES): Add "accum". + * mips/mips.md: For each instruction which sets HI or LO, clobber + HILO_REGNUM with (clobber (match_scratch:MODE N "=a")). Change + each explicit reference to register 66 to register 67. + (mulsidi3): Change to define_expand. + (mulsidi3_internal): New name of old mulsidi3. + (mulsidi3_64bit): New insn. + (umulsidi3): Change to define_expand. + (umulsidi3_internal): New name of old umulsidi3. + (umulsidi3_64bit): New insn. + (madddi_64bit, umaddi_64bit): New insns. + (movdi_internal2): Add case for setting HILO_REG to zero. + (reload_indi, reload_outdi): New define_expands. + (movsi_internal1, movsi_internal2): Add cases for setting MD_REGS + to zero, and for setting a general reg to HILO_REG. + (reload_outsi): New define_expand. + * mips/mips.c (mips_reg_names): Add "accum". + (mips_sw_reg_names): Likewise. + (mips_regno_to_class): Map HILO_REGNUM to HILO_REG. + (mips_move_1word): Handle moving HILO_REGNUM to a general + register. Make sure that the normal MD_REG cases aren't used for + HILO_REGNUM. Handle moving zero to a MD_REG. + (mips_move_2words): Make sure that the normal MD_REG cases aren't + used for HILO_REGNUM. Handle moving zero to a MD_REG. + (override_options): Set mips_char_to_class for 'a' and 'b'. + (mips_secondary_reload_class): Add in_p argument. Handle + HILO_REGNUM. + +Mon Mar 27 07:16:05 1995 Warner Losh + + * gcc.c: Removed __NetBSD__ from conditional. + Declare strerror if HAVE_STRERROR is defined; otherwise + declare sys_errlist and sys_nerr. + (my_strerror): New function. + +Fri Mar 24 18:08:14 1995 Jason Merrill + + * i386/linux.h (LIB_SPEC): Don't try to link with libraries we + know only exist in archive form unless -static. + +Fri Mar 24 16:12:16 1995 Doug Evans + + * Makefile.in (multilib.h): Depend on Makefile, not config.status. + +Fri Mar 24 15:01:17 1995 Michael Meissner + + * rs6000/rs6000.h (TARGET_MULTIPLE_SET): New target_flags bit that + indicates -mmultiple or -mno-multiple was explicitly passed by the + user, and not set as part of the cpu defaults. + (TARGET_SWITCHES): Set TARGET_MULTIPLE_SET bit for both -mmultiple + and -mno-multiple. + + * rs6000/rs6000.c (rs6000_override_options): If -mmultiple or + -mno-multiple was explicitly used, don't override the setting with + the processor default. + +Wed Mar 22 21:42:13 1995 Doug Evans + + * i960/i960.c (i960_function_arg_advance): Ensure all regs marked + as used if stack is also used (for va_start). + (i960_setup_incoming_varargs): Rewrite to be similar to Intel's + version, but don't allocate reg block unless necessary. + * ginclude/va-i960.h (varargs va_start): Save g14 explicitly. + Account for arguments preceding va_alist. + +Wed Mar 22 13:24:55 1995 Torbjorn Granlund + + * pa.c (singlemove_string): Handle SFmode constants again. Simplify. + (zdepi_cint_p): Make some variables HOST_WIDE_INT. + (lhs_lshift_cint_operand): Likewise. + (output_and): Likewise. + (output_ior): Likewise. + +Wed Mar 22 12:40:09 1995 Jim Wilson + + * sh.md (udivsi3): Don't clobber register 6. + (udivsi3, divsi3, mulsi3_call): Use a pseudo-reg with regclass 'z' + for output rather than hard register 0. + (block_move_real): Don't clobber registers 4 and 5. + + * mips.c (mips_select_section): Apply constant DEC_INITIAL tests + only to VAR_DECLs. + +Wed Mar 22 03:53:17 1995 Richard Stallman + + * config.sub (rm400, rm600): New machine names. + (sinix5.*, sinix): New os aliases. + (mips-siemens): Default os to sysv4. + +Mon Mar 20 21:56:47 1995 Per Bothner + + Merged Paul Eggert's patch to cccp.c of Wed Mar 8 18:21:51 1995: + * cpplib.c (do_include): Fix type typo: pcfbuflimit is char *, not int. + + Merged Doug Evans' patch to cccp.c of Mon Feb 27 17:06:47 1995: + * cpplib.c (do_include): Check for redundant file before opening in + relative path case. Don't call fstat unnecessarily. + + Merged J.T. Conklin's patch to cccp.c of Wed Feb 22 20:29:31 1995: + * cpperror.c: Removed __NetBSD__ from conditional. + + Merged Kenner's patch to cccp.c & cexp.y of Tue Sep 20 17:49:47 1994: + * cppexp.c (struct operation): Make value by HOST_WIDE_INT. + (cpp_parse_expr): Change return type to HOST_WIDE_INT. + * cpplib (eval_if_expr): Likewise. + (do_if, do_elif): Update appropriately. + * cpplib.h (cpp_parse_expr): Removed, to avoid defining HOST_WIDE_INT. + + Merged Paul Eggert's patch to cccp.c of Mon Aug 8 19:42:09 1994: + * cpplib.c (create_definition): Warn about `#define a@', since a + diagnostic is now required (see ISO TC1's addition to subclause 6.8). + Also warn about `#define is-empty(x) (!x)'. + +Tue Mar 21 00:10:50 1995 Jeffrey A. Law + + * x-pa (CC): Add "-Dbsd4_4". + +Mon Mar 20 18:40:31 1995 Per Bothner + + * toplev.c (print_error_function): New function hook. + (default_print_error_function): New function. Default value + of print_error_function. Code moved here from report_error_function. + (report_error_function): Use print_error_function hook. + +Mon Mar 20 20:27:43 1995 Doug Evans + + * cccp.c (do_xifdef): Handle c++ comments. + (do_endif): Likewise. + +Mon Mar 20 15:31:45 1995 Jason Merrill + + * configure (i386 configurations): Prepend i386/ to t-crt*. + +Mon Mar 20 07:58:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stmt.c (fixup_gotos): Add missing call from last change. + + * objc/misc.c: Put Alpha-specific decls before #include of runtime.h. + + * alpha.h (EXTRA_SECTIONS): Write zeros first time in .rdata. + +Sat Mar 18 16:37:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * flow.c (mark_used_regs, case SUBREG): Set reg_changes_size even + for integer modes. + (mark_used_regs): Set reg_changes_size for RHS, if necessary. + * combine.c (gen_lowpart_for_combine): Set reg_changes_size, if needed. + * reload.c (push_reload): Reload a SUBREG if paradoxical and + class is CLASS_CANNOT_CHANGE_SIZE. + * reload1.c (gen_reload): Handle paradoxical SUBREGs. + * alpha.h (SECONDARY_{INPUT,OUTPUT}_RELOAD_CLASS): Need GENERAL_REGS + for paradoxical SUBREG and FLOAT_REGS. + (SECONDARY_NEEDED_MODE): Use actual mode for 4 bytes or wider. + * alpha.md (movsi): Allow FP regs and add case for store of FP reg. + Remove cvtlq from MEM to FP reg case. + + * rtl.h (emit_insns_after): Add declaration. + * stmt.c (fixup_gotos): Do a cleanup for a block when it is exited + even if label if not defined yet. + + * function.c (pop_function_context): Fix error in last change; + reference old value of current_function_decl before we modify it. + +Fri Mar 17 21:57:44 1995 Jason Merrill + + * toplev.c (rest_of_compilation): Handle -Wreturn-type properly + for inlines we aren't compiling yet. + +Fri Mar 17 21:26:48 1995 Mike Stump + + * libgcc2.c (__register_exceptions): Handle empty tables. + +Fri Mar 17 11:48:31 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.c (winnt_function_prologue): Deleted. + (gen_stdcall_suffix): New function. + +Thu Mar 16 17:36:52 1995 Jason Merrill + + * svr4.h (LINK_SPEC): If the user did not specify -h name, use the + output file name, if any. + * sparc/sol2.h (LINK_SPEC): Ditto. Also, if the user did not + specify -R path, add an -R for each -L. + + Move SunOS 4-specific assembler switches into the appropriate place. + * m68k/sun[23].h (ASM_SPEC): Add %{R} %{j} %{J} %{h} %{d2} + %{keep-local-as-symbols:-L}. + * i386/sun.h (ASM_SPEC): Add %{R} %{keep-local-as-symbols:-L}. + * sparc/sparc.h (ASM_SPEC): Ditto. + * gcc.c (default_compilers): Remove %{R} %{j} %{J} %{h} %{d2} + %{keep-local-as-symbols:-L} from assembler rules. + +Thu Mar 16 16:58:09 1995 Michael Meissner + + * rs6000/eabi-ctors.c: New file, handle C++ static constructors + and destructors without requiring anything else from a libc. + + * rs6000/t-eabi (LIB2FUNCS_EXTRA): Build eabi-ctors.c. + + * rs6000/eabi.asm: Do not load up register 2 if there is no .got + section. Jump to the __do_global_ctors function at the end of + processing to call C++ static constructors, and it will return to + __eabi's caller. Use normal volatile registers, instead of saving + and restoring registers 30 and 31. + + * rs6000/eabi.h (STARTFILE_SPEC): Define as null. + (LIB_SPEC): Ditto. + (ENDFILE_SPEC): Ditto. + (LIBGCC_SPEC): Always look for libgcc.a. + +Thu Mar 16 17:05:14 1995 Richard Kenner + + * stmt.c (warn_if_unused_value, case SAVE_EXPR): New case. + (warn_if_unused_value, case NOP_EXPR): OK if CALL_EXPR inside. + + * c-common.c (decl_attributes): Allow alignment for TYPE_DECLs. + + * Makefile.in (xsys-protos.h): Fix typo in -U operand. + +Thu Mar 16 13:49:10 1995 Per Bothner + + * cpplib.c, cpplib.h: New files - a C PreProcessor library. + * cpphash.c, cpphash.h, cppalloc.c, cpperror.c, cppexp.c: + New files - utility features used by cpplib. + * cppmain.c: New file - cpp replacement main program for cpplib. + * Makefile.in: New rules to build cppmain. + +Thu Mar 16 16:11:05 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.h (FUNCTION_PROLOGUE, HAVE_probe, gen_probe): Deleted. + (ENCODE_SECTION_INFO, VALID_MACHINE_DECL_ATTRIBUTE): New macro. + +Thu Mar 16 15:58:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (apply_distributive_law, case SUBREG): Fix typo when + checking for paradoxical SUBREG. + +Wed Mar 15 18:45:08 1995 Doug Evans + + * libgcc1-test.c: Renamed from cross-test.c. + * Makefile.in (LIBGCC1_TEST): Renamed from CROSS_TEST. + (all.cross): Delete $(ENQUIRE) dependency. + (libgcc1-test): Renamed from cross-test. + Delete unnecessary gcc-cross and $(LIBGCC) dependencies. + Link with -nostartfiles -nostdlib + `$(GCC_FOR_TARGET) --print-libgcc-file-name`. + (libgcc1-test.o): Renamed from cross-test.o. + Change gcc-cross dependency to xgcc since the latter is used. + +Wed Mar 15 13:49:21 1995 Jason Merrill + + * tree.c (save_tree_status): Now takes a tree 'context' instead of + a boolean 'toplevel' as an argument. If 'context' is not + current_function_decl, create a new obstack for the new function. + Also save inline_obstacks. + (restore_tree_status): No longer takes a second argument. Also + restore inline_obstacks. + (temporary_allocation): Clear inline_obstacks. + (permanent_allocation): Free up the obstacks in inline_obstacks. + + * function.h (struct function): New fields contains_functions and + inline_obstacks. + + * function.c (push_function_context_to): Now takes a tree + 'context' instead of a boolean 'toplevel' as an argument. + Also save current_function_contains_functions. + (push_function_context): Pass current_function_decl to it. + (pop_function_context_from): Takes 'context' instead of 'toplevel'. + Set current_function_contains_functions properly. + (pop_function_context): Pass current_function_decl to it. + +Wed Mar 15 14:53:09 1995 Michael Meissner + + * rs6000/rs6000.md (abssi2): Turn into a define_expand. If + TARGET_POWER, do old code that uses the abs instruction. If not, + do abs in three instructions, using a temporary register, which + enables generating more reasonable code for sne. Add a recognizer + for negative of the absolute value. Add define_splits for the + PowerPC. + (sne insn): Add a recognizer for sne on the PowerPc to use two + instructions, compared to the four generated using the absolute + value insn. + +Tue Mar 14 18:38:40 1995 J.T. Conklin + + * m68k.md ({add,sub,mul,div}[sdx]f3): Add new patterns for recognizing + SImode, HImode, and QImode operands. + +Mon Mar 13 18:59:36 EST 1995 David Edelsohn + + * rs6000.h (CPP_SPEC): Add PPC403. + (processor_type): Add PPC403. + (RTX_COSTS): Add PPC403. + * powerpc.h (CPP_SPEC): Add PPC403. + * sysv4.h (CPP_SPEC): Add PPC403. + * rs6000.c (processor_target_table): Add PPC403. + * rs6000.md (define_attr cpu and function units): Add PPC403. + +Mon Mar 13 14:40:23 1995 Michael Meissner + + * rs6000/rs6000.md (call, call_value insns): Do not put a nop + after a bl instruction on System V.4 and eABI. + + * rs6000/sysv.4 (SUBTARGET_SWITCHES): Add support for + -mno-traceback to suppress the V.4 traceback word. + (ASM_DECLARE_FUNCTION_NAME): Don't put out a traceback work if + -mno-traceback. + +Mon Mar 13 13:36:37 1995 Jason Merrill + + * t-svr4, i386/t-{crtpic,sol2}, m88k/t-svr4, sparc/t-sol2: + Use -fPIC, rather than -fpic, for building crtstuff. + +Sat Mar 11 17:27:08 1995 Jason Merrill + + * configure: Use aix3newas.h for AIX 3.2.4 and 5. + * rs6000/aix41.h: Undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}. + * rs6000/aix3newas.h: New file. Define ASM_SPEC to -u, and + undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}. + +Sat Mar 11 06:42:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * dbxout.c (dbxout_symbol): Properly handle decl whose DECL_NAME + points to a TYPE_DECL with a zero TYPE_NAME. + +Fri Mar 10 18:18:33 1995 Torbjorn Granlund + + * pa.h (PROMOTE_MODE): Define. + +Fri Mar 10 14:37:58 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sdbout.c (sdbout_record_type_name): If TYPE_NAME is + a TYPE_DECL, get name from DECL_NAME. + +Fri Mar 10 14:09:26 1995 Doug Evans + + * arm/riscix.h (SUBTARGET_SWITCHES): Renamed from + ARM_EXTRA_TARGET_SWITCHES. + * arm/riscix1-1.h (SUBTARGET_SWITCHES): Likewise. + * arm.h (SUBTARGET_SWITCHES): Likewise. + (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define. + (TARGET_SWITCHES): Add -msoft-float, -mhard-float. + (BYTES_BIG_ENDIAN): Delete #ifndef/#endif. + (CONDITIONAL_REGISTER_USAGE): If -msoft-float, disable fp regs. + (FUNCTION_VALUE): R16 is return reg only if !-msoft-float. + (LIBCALL_VALUE): Likewise. + * arm.md (all fp patterns): Conditionalize on TARGET_HARD_FLOAT. + (*movsf_soft_insn, *movdf_soft_insn): New patterns. + +Fri Mar 10 13:53:46 1995 Jim Wilson + + * reorg.c (steal_delay_list_from_target): Exit at the top if the + branch in SEQ is not a single set. + + * sh.md (movdi define_split, movdf define_split): Correct indentation + and formatting. Make the condition fail if an operand is a MEM + with an auto-inc address. + + * varasm.c (copy_constant): Copy operand of ADDR_EXPR if it is a + constant. + + * mips/abi64.h (SETUP_INCOMING_VARARGS): Correct arguments to + move_block_from_reg call. + + * expr.c (expand_assignment): When offset is zero, make new MEM + before setting MEM_VOLATILE_P. + + * reload.c (find_reloads, case 'o'): Accept a fully reloaded + auto-increment address. + + * combine.c (max_uid_cuid): New static variable. + (INSN_CUID): Call abort if INSN is out of range. + (combine_instructions): Set max_uid_cuid. Set uid_cuid directly + instead of through INSN_CUID. + (get_last_value): Use prev_real_insn instead of prev_nonnote_insn. + Ignore USE insns generated by combine. + +Fri Mar 10 13:47:08 1995 Rod Barman + + * m68k/fpgnulib.c (__fixdfsi): Catch values < 0.5 in magnitude. + +Fri Mar 10 12:02:33 1995 Ian Lance Taylor + + * fixincludes: Fix `typedef struct term;' on hppa1.1-hp-hpux9. + +Fri Mar 10 05:50:11 1995 Oliver Kellogg (Oliver.Kellogg@RST13.DASA.DBMAIL.d400.de) + + * 1750a.c (sectname): Reverse Init and Normal. + (print_operand_address, case PLUS): Add case for LABEL_REF. + (print_operand_address, case LABEL_REF): Split fom SYMBOL_REF. + (print_operand_address, case CODE_LABEL): New case. + (ASM_FILE_END): Delete. + * 1750a.h (FUNCTION_EPILOGUE): Restore stack before freeing local vars. + (DEFAULT_SIGNED_CHAR): Now 1. + (DATA_SECTION_ASM_OP): Use pseudo-op for read-only data (later copied). + (JUMP_TABLES_IN_TEXT_SECTION): Define. + (ASM_OUTPUT_ASCII): Split into multiple lines if long. + (ASM_OUTPUT_{CHAR,SHORT,INT,LONG_INT}): Split up. + (ASM_OUTPUT_COMMON): Call check_section. + +Thu Mar 9 12:46:53 1995 Michael Meissner + + * rs6000.md (movsf): Do not call truncdfsf2 for non PowerPC + when expanding a store to memory and -msoft-float was used. + +Thu Mar 9 08:51:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (start_function): Handle new parameter ATTRIBUTES. + * c-tree.h (start_function): Add new parameter. + * c-lang.c (finish_file): Pass new parm to start_function. + * objc-act.c (build_module_descriptor, really_start_method): Likewise. + * c-parse.in (fndef, nested_function): Pass prefix_attributes + to start_function. + (setspecs): Save prefix_attributes in declspec_stack. + (decl rules): Restore prefix_attributes along with current_declspecs. + (setattrs): Concatenate prefix_attributes to previous value. + * c-common.c (decl_attributes): Handle prefix and suffix attributes + the same way. + + * print-tree.c (print_node): Fix typo in printing large INTEGER_CST. + + * varasm.c (assemble_variable): Consistently use DECL_SIZE for + everything. + + * c-typeck.c (convert_for_assignment): Fix typo in testing for + pointer to function type. + + * varasm.c (record_constant_1): Handle NON_LVALUE_EXPR. + Rewrite to use switch instead of if/then/elseif/else. + +Wed Mar 8 18:21:51 1995 Paul Eggert + + * cccp.c (do_include): Fix type typo: pcfbuflimit is char *, not int. + +Wed Mar 8 17:30:29 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (force_fit_type): Always propagate OVERFLOW. + + * rtl.def (INLINE_HEADER): Add new "e" field. + * rtl.h (FORCED_LABELS): New field; other fields adjusted. + (gen_inline_header_rtx): New parm FORCED_LABELS. + * emit-rtl.c (gen_inline_header): Add new parm FORCED_LABELS. + * integrate.c (initialize_for_inline, output_inline_function): + Handle FORCED_LABELS. + +Wed Mar 8 13:47:20 1995 Jason Merrill (jason@cygnus.com) + + * alpha.h (WORD_SWITCH_TAKES_ARG): Add -rpath. + (LINK_SPEC): Pass through -taso and -rpath. + * alpha/osf12.h (LINK_SPEC): Ditto. + +Wed Mar 8 09:59:56 1995 Michael Meissner + + * rs6000/eabi.asm: Rewrite so that the initialized pointers go + into the .got2 section, which allows eabi.asm to be assembled with + the -mrelocatable option. Move the data picked up from the bl + instruction to before the traceback tag. + + * rs6000/sysv4.h (CPP_SPEC): Define _RELOCATABLE if -mrelocatable + switch is used. + + * libgcc2.c (__new_handler): Don't initialize the pointer variable + with the address of __default_new_handler, which may not work in + some shared library mechanisms. + (__builtin_new): If __new_handler is NULL, call the function + __default_new_handler. + +Tue Mar 7 17:34:59 1995 Ian Lance Taylor + + * i960.h (PROCESS_PRAGMA): Define. + (ROUND_TYPE_ALIGN): Pass maximum of COMPUTED and SPECIFIED to + i960_round_align. + (ROUND_TYPE_SIZE): Delete. + * i960.c (process_pragma): Uncomment, and rewrite for gcc 2. + (i960_round_size): Delete. + (i960_round_align): Don't adjust suggested alignment downward. + Restrict alignment to value set by #pragma align. + +Tue Mar 7 12:14:46 1995 Doug Evans + + * configure (sparc64-*-elf): Add crtbegin.o, crtend.o to extra_parts. + * sparc/sp64-elf.h (TARGET_VERSION): Define. + (CPP_PREDEFINES): Delete sun, sparc, unix. Delete OS assertions. + (ASM_SPEC): Define. + (LINK_SPEC): Delete solaris stuff, this is an embedded target. + (STARTFILE_SPEC, ENDFILE_SPEC): Define. + +Mon Mar 6 17:54:01 1995 Doug Evans + + * Makefile.in (install-common): Fix typo in installation of cpp. + Likewise with gcc-cross. + +Mon Mar 6 02:29:05 1995 Jeffrey A. Law + + * pa.md (movsicc): New expander. + +Fri Mar 3 13:34:20 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000/sysv4.h (ASM_SPEC): If -mrelocatable was passed to + compiler, pass it on to the assembler. + +Fri Mar 3 12:11:28 1995 Ian Lance Taylor + + * fixincludes: Add fixes for VxWorks header files. + * ginclude/stddef.h: If VxWorks typedef macros are defined, invoke + them as appropriate. + +Fri Mar 3 05:48:54 1995 Paul Eggert + + * cccp.c (dump_single_macro): Fix typo: % wasn't properly + doubled in printf formats. + +Thu Mar 2 19:44:02 1995 Jason Merrill + + * expr.c (expand_expr, CLEANUP_POINT_EXPR): Force the operand out + of memory before running cleanups. + +Thu Mar 2 19:15:24 1995 Paul Eggert + + * cccp.c (rescan): Prevent accidental token-pasting to + get !=, *=, /=, ==, or ^=. + +Thu Mar 2 15:37:13 1995 Jason Merrill + + * c-typeck.c (build_binary_op): Avoid spurious warning + comparing enumerator to unsigned variable. + +Thu Mar 2 18:18:38 1995 J.T. Conklin + + * m68k.md (sqrtsf2,sqrtdf2): Use fp precision specifiers. + +Thu Mar 2 18:09:01 1995 Stephen L Moshier (moshier@world.std.com) + + * c-lex.c (yylex, case !NOT_FLOAT): Remove previous change. + +Thu Mar 2 15:26:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Makefile.in (bootstrap*): Pass new STAGE_PREFIX to recursive makes. + +Wed Mar 1 14:52:16 1995 Ian Lance Taylor + + * i960/i960-coff.h (ASM_FILE_START): Define. + (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Define. + (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Define. + (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Define. + (INT_ASM_OP): Define. + (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Define. + * i960/vx960-coff.h (CPP_PREDEFINES): Define. + (CPP_SPEC): Define. + (CC1_SPEC): Default to -mca. + +Wed Mar 1 11:10:54 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000/rs6000.c (output_prologue): Do not emit the word that + gives the PC relative location to the local GOT table for the + -mrelocatable option here. + * rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Emit it here. + + * t-eabi (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Build -msoft-float + and -mrelocatable versions of the library. + + * rs6000/powerpc.h (CPP_PREDEFINES): Define the cpu and machine as + powerpc, not rs6000. + + * libgcc2.c (_unwind_function): Clone for powerpc, using the + PowerPC mnemonics. + + * rs6000/rs6000.md (uminsi3, umaxsi3): Silence warnings that + -2147483648 is too large to fit in a signed integer on 32-bit + hosts. + +Wed Mar 1 06:48:31 1995 Richard Kenner + + * fold-const.c (decode_field_reference): Don't check TREE_CODE + of EXP; let get_inner_reference decide if have reference. + Allow no bit reference if have AND_MASK. + (all_ones_mask_p): Use tree_int_cst_equal, not operand_equal_p. + (unextend): New function. + (fold_truthop): For constant cases, use new function, rework + conversion, and warn if comparison can never be true. + + * expr.c (store_expr): Do conversion in two steps for promoted lhs. + +See ChangeLog.9 for earlier changes. diff --git a/ChangeLog.2 b/ChangeLog.2 new file mode 100644 index 0000000..a5e092c --- /dev/null +++ b/ChangeLog.2 @@ -0,0 +1,7229 @@ +Thu Jan 31 00:33:33 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * loop.c (scan_loop): Check each libcall for regs it uses + but does not mention in the equivalent value. + To move the libcall, we must have at most one such reg + and it must be moved as well. + (libcall_other_reg): New subroutine. + * rtlanal.c (record_excess_regs): New function. + + * tree.c (gcc_obstack_init): New function. + (init_obstacks, save_tree_context): Use that. + (OBSTACK_CHUNK_SIZE): New parameter. + * xm-next.h: New file. + * configure (m68k/next): Use that file. + + * flags.h (flag_no_common): Declare new flag to treat external defs + as ANSI specifies (i.e. not as common). + * toplev.c (flag_no_common, f_options): Support -fno-common. + * varasm.c (assemble_variable): Don't output a common if + flag_no_common is set. Treat as if initialized to 0. + + * gcc.c (default_compilers): Define __ASSEMBLER__ for .S file. + + * tm-aix386.h (ASM_OUTPUT_LOCAL): Ok to use bss, since no shared libs. + (LINK_SPEC): Pass through all -K and -T options. + * xm-aix386.h (TRUE, FALSE): Undef if already def, to avoid warning. + + * tm-m68k.h (TARGET_68040, TARGET_68040_ONLY): New machine flags. + (TARGET_SWITCHES): Alternatives to set them. + * tm-next.h (TARGET_DEFAULT): Changed to 0407 for 68040. + + * out-m68k.h (standard_68881_constant_p): Always return 0 + for TARGET_68040 since fmovecr is no longer implemented in hardware. + + * m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for + TARGET_68040, since it is no longer implemented in hardware. + (muldf3): Don't use fscale on 68040, since not implemented in hardware. + + * toplev.c (optimize): Now stores specified optimization level. + (main): Keep the largest optimization level specified. + Handle any integer. + + * c-decl.c (pushdecl): Don't make an extern global for -traditional + if it uses any local types. + + * tm-sun386i.h (PCC_BITFFIELD_TYPE_MATTERS): Use 1 as value. + +Wed Jan 30 12:41:15 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * fixincludes (sys/systypes.h): Edit this to handle _SIZE_T, etc. + + * function.c (put_var_into_stack): Allocate var ref chain link + while in the proper function's obstack. + + * fold-const.c (const_binop): Don't crash for real/0 if have infinity. + + * flow.c (mark_set_1): Don't make log link for hard reg in asm insn. + +Wed Jan 30 07:45:33 1991 Tom Wood (wood at dg-rtp.dg.com) + + * sched.c (schedule_block): Indicate what insns constitute each + basic block. + +Tue Jan 29 12:35:42 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (gnulib1.*, gnulib2.*): Declare them phony targets. + + * print-tree.c (print_node): Print message if TREE_PERMANENT is wrong. + * tree.c (object_permanent_p): New function. + + * print-tree.c (print_node): Remove DECL_LANG_FLAG_10. + +Tue Jan 29 10:07:48 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (minus/xor/and, neg/ne/compare/and): Delete these. This + should be done by combine. + (compare operator): Eliminate except when a SET_SRC. + * tm-m88k.h (OPTIMIZATION_OPTIONS): -fomit-frame-pointer is a + default optimization. + +Mon Jan 28 12:52:11 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * tree.h (DECL_VIRTUAL_P): Renamed from TREE_VIRTUAL. + (struct tree_common): Eliminate virtual_flag. + (struct tree_decl): Add virtual_flag. + + * Makefile.in (enquire.o): Pass -DNO_STDDEF. + + * m68k.md (tablejump): Now have a define_expand that does + different things depending on CASE_VECTOR_PC_RELATIVE, + and a separate define_insn for each case. + + * function.h (outer_function_chain): Declare the variable. + + * tree.c (debug_obstack): Fix typos. + * tree.h (struct tree_common): Fix typo. + + * Makefile.in (GNULIB1_TARGET, GNULIB2_TARGET): Variables deleted. + (gnulib): Depend on gnulib1.target and gnulib2.target explicitly. + + * dbxout.c (dbxout_type): Use DECL_VIRTUAL_P, not TREE_VIRTUAL. + + * cplus-tree.h (TREE_PRIVATE, TREE_PROTECTED): #if 0. + + * cexp.y (keywords): Cast names for parens to U_CHAR *. + + * gcc.c (process_command): Fix typo setting switches[n_switches].arg. + + * loop.c (loop_reg_used_before_p): Check insns before INSN, not after. + + * objc-actions.c (objc_finish): Renamed from lang_finish. + * objc-parse.y (program): Call objc_finish at the end. + + * Changes from Matthew Self (mself@next.com): + + * objc-parse.y: Since objc-parse.y was so out of date with + respect to c-parse.y, I started over with c-parse.y and + reintegrated the Objective-C modifications. Now that + Objective-C is working I hope that objc-parse.y will be kept + more up to date.... I did not re-integrate the lexer since I + don't have gperf working. I simply cut and pasted what + Stallman had in objc-parse.y. Someone with access to gperf + should re-generate this stuff. + + * objc-actions.c (comp_method_with_proto, + comp_proto_with_proto): Stallman's change to use the + functions end_temporary_allocation and + resume_temporary_allocation is incorrect, since it always + leaves allocation temporary, whether it was before or not. + + Perhaps the push and pop functions would do the trick.... + + * objc-actions.c (get_arg_type_list): Use new function + groktypename_in_parm_context. + + * objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl, + _OBJC_SELECTOR_REFERENCES_id): Removed. + + * objc-actions.c (synth_module_prologue): Eliminated code to + forward declare the selector references array. + + * objc-actions.c (init_objc_symtab): Eliminated code to + initialize "refs" field in objc_symtab structure (which is + now vestigial). + + * objc-actions.c (build_selector_translation_table): Rewrote. + + * objc-actions.c (build_selector_reference): New routine. + + * objc-actions.c (build_message_expr, build_selector_expr): + Use new routine. + + * config/tm-next.h (GO_IF_INDEXABLE_BASE): Don't use pc + relative addressing for LABEL_REF's. Since branch tables are + in the const section, we treat LABEL_REF's like SYMBOL_REF's + here. Otherwise invalid addresses were being generated. + + * config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE): + Use absolute branch tables rather than relative ones. + + * config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END): Output + an N_SO symbol with no name to mark the end of the module. + This is needed to support scattered loading on the NeXT. + + * config/out-next.c (handle_pragma): Call to xrealloc had wrong args. + + * configure: Entry for NeXT must set out_file to out-next.c. + + * config/out-next.c: Typo: "flags" -> "flags.h" + + * config/tm-next.h (LIB_SPEC): Brought up-to-date. There + are probably more changes needed here. + + * c-decl.c (pushdecl_top_level): New function. This was + copied from an older version of g++. + + * c-decl.c (init_decl_processing): Make alloca first arg sizetype. + + * c-decl.c (groktypename_in_parm_context): New function. + +Mon Jan 28 07:07:01 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (loop_reg_used_before_p): Don't use INSN_LUID since INSN + might have been made by loop.c for an outer loop. + + * loop.c (move_movables, strength_reduce): Replace register references + in REG_NOTES as well as PATTERN. + + * loop.c (strength_reduce): Call maybe_eliminate_biv twice, not + three times. + (maybe_eliminate_biv): Don't abort if elimination fails even though + we thought it wouldn't. This can happen if certain insn patterns + aren't valid. + (maybe_eliminate_biv_1): Ensure that we do not change the insn at + all if all the required changes can't be done. + +Sun Jan 27 21:26:29 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in: Rename config-dir back to config. + +Sat Jan 26 17:48:22 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * objc-parse.y (program): Call objc_finish. + * objc-actions.c (objc_finish): Renamed from lang_finish. + + * objc-actions.c, objc-parse.y: New version from NeXT. + +Sat Jan 26 17:37:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Disable special-case of + A ? B : C when B and C are simple. This is now done better by jump. + +Sat Jan 26 13:16:58 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * tree.h (TREE_PRIVATE, TREE_PROTECTED, TREE_VIRTUAL): New macros. + (struct tree_common): New flag fields. + * dbxout.c (dbxout_type): Get rid of conditional; can always use these. + + * cccp.c (lookup_import): Do return -2 if file found. + (main): Handle `.m' suffix like `.S'. + + * configure (m68k/next): Use out-next.c. + + * WORD_SWITCH_TAKES_ARG and SWITCH_TAKES_ARG now give # of args. + * gcc.c (struct switchstr): New field `args' replaces `part2'. + (process_command): Record all the args a switch has. + (give_switch): Pass all the strings in `args'. + + * tree.h (struct tree_common): Normally make `code' an enum tree_code. + + * m68k.md (tablejump): New pattern. + (casesi, etc.): Deleted. + + * tree.c (debug_obstack): New function. + + * toplev.c (compile_file): Call dbxout_finish near the end. + * dbxout.c (dbxout_finish): New function. + + * print-tree.c (print_node): Always print ERROR_MARK node briefly. + + * objc-actions.h (METHOD_ENCODING, CLASS_CATEGORY_LIST): New macros. + + * gcc.c (execute): Make fatal signal message clearer. + (default_compilers): For .m file, define __OBJC__, + and pass -lang-objc and -gen-decls to cc1. + + * dwarfout.c: Include output.h. + (current_function_decl, asm_out_file): Explicit extern decls deleted. + (abort, fatal): Explicit extern decls deleted. + (NO_RETURN): Definition deleted. + (named_labels): Don't declare it. + (output_symbol): Don't use it. + (MAXPATHLEN): Don't define this. Don't include sys/param.h. + (output_source_file_die): Avoid limit on file name size. + (output_symbols_for_stmt): Deleted. + (output_symbols_for_block): Adapt to using BLOCK, not LET_STMT. + + * configure: Renamed from `config'. + * config: Directory renamed back from config-dir. + +Sat Jan 26 1990 Ron Guilmette (rfg at ncd.com) + + * README.DWARF: updated to reflect changes to dwarfout.c, the + inclusion of dwarf.h (and its changes) and the fact that the + DWARF support is no longer directly tied to the DG versions of + GCC. + + * dwarfout.c: included a patch (provided by Ray Essick) to allow + dwarfout.c to properly get a value for MAXPATHLEN even on (old) + System V.3 systems. + + * dwarfout.c: added support for long long types (as suggested by + Ray Essick). + + * dwarfout.c: added support for the AT_comp_dir attribute. Also, + as part of this change, the name of the compilation directory is + no longer placed into in the .sources section. + + * dwarfout.c: added support for the AT_addr_ranges attribute. + + * dwarfout.c: added support for the AT_prototyped attribute. + + * dwarfout.c: added support for the AT_src_info attribute. Also, + as part of this change, there is no longer a "special" entry + at the start of the .srcinfo section for each compilation unit, + and the contents of the "special" final entry in the .srcinfo + section have changed (to { -1, -1 }). + + * dwarfout.c: modified to allow additional GNU DWARF extensions + to be generated whenever the corresponding extended attribute + codes are defined (presumably within a modified dwarf.h file). + + * dwarfout.c: use the section names .srcinfo and .sources rather + than .finfo and .files. The additional specificity is warranted + because the DWARF information may someday include information + about object files as well as source files. + + * dwarfout.c: fixed a bug where a type attribute was being generated + for functions and function types even when the return type was + void. "Standard" dwarf says that if the return type for a function + or function type is void then no type attribute should be generated + for the corresponding DIE. + +Sat Jan 26 04:22:08 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-lex.c (interface_strcmp): Handle String.String.Map.cc and + friends. + + * cplus-typeck.c (build_unary_op): Merge change to generate better + code from simple cast expression. + +Fri Jan 25 10:06:28 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl.c (pushtag): Don't call `pushdecl' if the type's name + is anonymous, lest we recurse ad infinitum. + +Thu Jan 24 23:56:55 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (expand_binop, expand_unop): Word at a time only for ints. + +Thu Jan 24 09:40:37 1991 Tom Wood (wood at dg-rtp.dg.com) + + * sdbout.c (sdbout_symbol): Apply changes in dbxout.c to deal with + SUBREG. Don't emit a symbolic definition for variables that can't + be represented. + +Thu Jan 24 21:18:15 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * config: Conditional for setting $os was backward. + Also mention name of make-var file if one exists. + + * out-i386.c: Delete a large piece of accidental insertion. + + * dwarfout.c: Don't include c-tree.h or cplus-tree.h. + (INT_TYPE_SIZE, etc.): Define them if not overridden. + (fundamental_type_code): Distinguish types by TYPE_PRECISION. + But also check for the built-in C type names. + +Thu Jan 24 15:23:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gcc.c (default_compilers): Pass all args starting with "O" to + cc1 so that -O2 is passed along. + +Thu Jan 24 13:10:27 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * stmt.c (expand_expr_stmt): Don't warn for any casts to void. + + * config: Fix typos setting shell vars. + Rename config to config-dir. + Insert missing \ in case for delta. + +Wed Jan 23 16:31:27 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (emit_jump_insn_{before,after}): Allow PATTERN to be + a SEQUENCE. + + * loop.c (check_dbra_loop): Use emit_jump_insn_before when writing + out compare and jump sequence, not emit_insn_before, to ensure that + if we only write one insn that it is a JUMP_INSN. + + * toplev.c (flag_rerun_cse_after_loop): New: -frerun-cse-after-loop. + (rest_of_compilation): Rerun cse after loop if desired. + (main): Add support for -O2. + Prescan args for -O and -O2 to set default values for many -f options. + Add call to new macro OPTIMIZATION_OPTIONS. + Save status of -version until all args have been processed; then + write out the info. + (print_single_switch): New function. + (print_switch_values): Renamed from print_target_switch_defaults. + Now prints out currently enabled -f, -m, and -W switches. Calls + print_single_switch to write out switch and handle long lines. + + * rtl.def (SUBREG): Change rtx class from 'o' to 'x'. + + * cse.c (find_comparison_args): Ignore hash table entry if not valid. + +Wed Jan 23 00:12:24 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * config: File renamed from config.gcc. + Allow abbreviations for +-options. + Allow config HOST TARGET. + Support +gas and +nfp as separate options. + Rename all the machine alternatives to general scheme: + cpu/company-system. Allow abbreviations for cpu/company pairs. + * config-dir: Dir renamed from config. + + * Makefile.in (install-dir): Create bindir here. + + * cccp.c (main): Delete duplicat p++ left in last change. + + * Makefile.in (GNULIB1, GNULIB1_TARGET): Renamed from GNULIB*. + (gnulib1.portable, gnulib1.target): Renamed from gnulib.*. + They now make a file named gnulib1, from gnulib1.c. + (LIB1FUNCS, LIB1FUNCS_EXTRA): Renamed from LIBFUNCS*. + (for-bootstrap, rest.encap): Depend on gnulib, not GNULIB2_TARGET. + (stamp-gnulib2): This file is no longer used. + (gnulib2.portable): Old stamp-gnulib2 rule renamed to this. + Now create a file named gnulib2, from gnulib2.c alone. + (gnulib): New target, combines gnulib1 and gnulib2 into gnulib. + (mostlyclean): Delete additional temporary files. + No need to avoid deleting stamp-gnulib2. + (clean): Delete gnulib1 and gnulib2, but not stamp-gnulib2. + (realclean): No need to delete gnulib here. + (install-gnulib): Changed dependencies. + * gnulib1.c: File gnulib.c renamed. + + * Makefile.in (install-dir): Create bindir here. + + * cccp.c (main): Delete duplicat p++ left in last change. + +Sun Jan 20 14:00:16 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (finish_struct): Conditionalize EMPTY_FIELD_BOUNDARY + on whether or not it is defined. Similarly for PCC_BIT_FIELD_MATTERS. + +Wed Jan 16 18:56:30 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * cse.c (fold_rtx): When folding dispatch table, stay inside bounds. + +Wed Jan 16 08:11:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c (find_reloads_toplev): Fix typo in recent change. + + * reload1.c (eliminate_regs): If we have a non-paradoxical + (subreg (pseudo)) and the pseudo has an equivalent memory + location, replace the SUBREG because find_reloads may do it. + +Tue Jan 15 01:41:28 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * loop.c (scan_loop): Condition for movability was wrong. + A reg that isn't necessarily set may be unsafe + even if used only inside the loop. + However, a reg used only in the same basic block after the set is safe. + So is a reg that isn't a user-level variable. + + * loop.c (loop_optimize): Reverse order of scanning loops. + + * loop.c (scan_loop): After skipping the insns of a libcall sequence, + ignore notes when searching back to find the last insn of the seq. + + * cccp.c (main): Use envvar GCC_EXEC_PATH to specify translation + of prefixe in default include dirs. + + * cccp.c (main): Do path_includes after explicit options. + + * combine.c (try_distrib): Don't push + thru negative count shifts. + +Mon Jan 14 09:40:28 1991 Ken Raeburn (raeburn at watch.com) + + * cplus-lex.c (yylex): Even in `extern "C"', the keywords are the + same. + + * cplus-lex.c (input_from_saved_text): New function. Set string + source for FILE pointer. + (yylex, do_pending_inlines): Call it. + + * cplus-parse.y (stmts, stmt): Type is now `tree'. Some actions + fixed to return it. + + * cplus-lex.c (reinit_parse_for_block): New function, with most of + the guts of reinit_parse_for_method. Magic argument IS_TEMPLATE + chooses a set of error messages. + (reinit_parse_for_method): Call it. + cplus-template.c (reinit_parse_for_template): New function, also + calls reinit_parse_for_block. + +Mon Jan 14 07:20:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (skip_consec_insns, move_movables, strength_reduce): Don't + call find_reg_note on a NOTE. + +Sun Jan 13 15:45:23 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c: Separate namespace for assertions. Don't expand macros + inside assertions in #if. Allow arbitrary token sequences. + (rescan): Special handling after `#' if assertions_flag. + (expand_to_temp_buffer): New arg sets assertions_flag. Callers changed. + (eval_if_expression): Pass 1 for that arg. + (skip_paren_group): New function. + (assertion_hashtab, ASSERTION_HASHSIZE, ASSERTION_HASHNODE): New. + (assertion_install, assertion_lookup, delete_assertion): New functions. + (T_ASSERTION): Deleted. + (tokenlist_list): Renamed from arglist_list. + (read_token_list): Renamed from read_keyword_list. Much changed. + Copy the strings into the heap. + (free_token_list): Renamed from free_keyword_list. Free the strings. + (do_assert, do_unassert): Considerably changed. + (check_assertion): Somewhat changed. + (check_macro_name): Extra arg contributes to error message. + * cexp.y (yylex): Parse everything as a name if keyword_parsing. + (rule for assertions): Set, then clear, keyword_parsing. + (keywords): Allow empty sequence. Allow nested parens. + +Sat Jan 12 12:18:00 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (build_unary_op): Make better code for simple casts. + + * reload.c (find_reloads): Computing reload_when_needed, don't neglect + operands that don't have output reloads. + + * cse.c (refers_to_mem_p): At check_addr, handle PLUS inside CONST. + +Sat Jan 12 06:30:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (steal_delay_list_from_*): Add missing argument to calls to + insn_sets_resource_p. + (fill_eager_delay_slots, relax_delay_slots): Add missing argument + to calls to mostly_true_jump. + (relax_delay_slots): Correctly handle case where we can't invert jump. + + * reload.c (find_reloads_toplev): If we have a SUBREG of a + pseudo that resides in memory and the address is not offsettable, + substitute for the pseudo now so we can generate a reload for the + address. + +Fri Jan 11 14:39:09 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-next.h (LIB_SPEC, STARTFILE_SPEC): Don't support -p. + +Thu Jan 10 12:26:49 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-sun2.h (CC1_SPEC): Define to ignore -sun2 and -target. + (WORD_SWITCH_TAKES_ARG): Define to recognize -target. + (LIB_SPEC): Define; handle -a. + * tm-sun2os4.h: New file. + * tm-m68k.h (TARGET_SWITCHES): Handle -msky and -mnosky. + (TARGET_SKY): New macro. + + * tm-next.h (LIB_SPEC): Use -lsys_s, not -lc. + + * c-parse.y (yylex): Fix typo. + + * genoutput.c (output_prologue): Make insn-output.c use insn-codes.h. + * Makefile.in (insn-output.o): Depend on insn-codes.h. + + * Makefile.in (install-headers): Save $(libsubdir) before cd. + + * Makefile.in (gnulib): Depend on config.status. + + * gnulib2.c (__umulsidi3): Use #else around inline function. + Use __-style names for all machines. + +Wed Jan 9 17:06:18 1991 Michael Tiemann (tiemann at cygnus.com) + + * out-sparc.c (various places): Change \; to \n\t in printf + strings. + + * sparc.md: Change PIC initialization pattern to recognize pattern + that doesn't involve a clobber. + * out-sparc.c: Rest of change is here, where PIC initialization is + emitted. + + * cse.c (simplify_unary_operation, simplify_binary_operation): + Correctly adjust VAL for bits outside MODE. + +Wed Jan 9 15:45:26 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * flow.c (libcall_dead_p): Handle a CALL in a PARALLEL. + +Tue Jan 8 13:35:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (emit_store_flag): Correct UNSIGNEDP value passed to + convert_to_mode and expand_unop. + +Mon Jan 7 11:56:31 1991 Michael Tiemann (tiemann at cygnus.com) + + * gplus.gperf: New keywords for templates and other extensions. + + * cplus-lex.c: Incorprate new gperf code. + + * cplus-class.c (resolve_scope_to_name): New function. + (build_scoped_method_call): Call `resolve_scope_to_name' instead of + handling by itself. + * cplus-decl.c (pushdecl_class_level): Give forward declaration. + (lookup_nested_type): New function. + (pushtag,lookup_tag,xref_tag): Handle nested classes. + (finish_function): Add comment about obscure argument passing + convention for static method calls (at the call site). Also, don't + call operator delete with NULL pointer. Call it with + `current_class_decl' instead. + (globalize_nested_type): New function. Used when we learn that a + type which initially appeared to be nested should be defined in the + global scope instead. + (grokdeclarator): Call `globalize_nested_type' when grokking an + as-yet undefined class type. + * cplus-dem.c: Updated to handle qualified (i.e. nested) types. + This means handling the new letter `Q' in mangled names. + * cplus-init.c (build_member_call): Handle nested classes using + `resolve_scope_to_name' instead of handling itself. + * cplus-lex.c (typename_scope_in_progress): New static variable to + allow the lexer to figure out what are nested class typenames, + scoped member references, etc., without getting the parser too + involved. + (yylex): Recognize SCOPED_TYPENAME and TYPENAME_SCOPE tokens. + Also, recognize '<' and '>' separately from ARITHCOMPARE so we can + implement templates. + No longer recognizes (X::*) or (X::&) as single tokens. + * cplus-method.c (build_overload_nested_name): New function to build + internal names for nested typenames. + * cplus-parse.y: Handle parameterized type syntax (more or less). + (dummy_decl): Gone! + Nested types are now handled. + * cplus-tree.h (DECL_UNDEFINED_FRIENDS): Moved out of DECL_CONTEXT + slot of TYPE_DECLs. DECL_CONTEXT of typename is now the enclosing + type for nested types. + (DECL_NESTED_TYPENAME): An identifier pointer that makes the name of + the type unique for the compilation. + (IDENTIFIER_*): When initializing, call `perm_calloc', not + permalloc, since non-zero values actually mean something, + and we don't guarantee to initialize everything in one go. + * tree.c (perm_calloc): New function. + * cplus-typeck.c (default_conversion): Don't defaultly convert a + naked METHOD_REF such that it becomes a virtual function table + index. Only let this happen if user requests it with `&'. + + * Makefile.in: Handle new source file cplus-template.c. + +Mon Jan 7 15:03:53 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (process_init_constructor): Error if values + provided for an array of empty elements. + + * out-i386.c (fp_top_dead_p1): Follow jump only if optimizing. + (fp_call_internal): Discard result if unused. Use fp_top_dead_p1. + + * cse.c (cse_insn): In special case for (set REG0 REG1), + change any REG_EQUIV notes to REG_EQUAL. + + * tm-sun386i.h (PCC_BITFIELD_TYPE_MATTERS): Define it. + + * tm-att386.h (ASM_OUTPUT_LOCAL): Change back to data section. + + * genrecog.c (write_tree_1): Typo in printf string. + + * flow.c (libcall_dead_p): New arguments NOTE and INSN. + Now test that the hard return reg in the call is dead. + Callers changed. + +Mon Jan 7 12:27:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c (cancel_changes): Cancel changes in opposite order we made + them. + + * integrate.c (subst_constants): Only commute operands if op0 is const. + + * rtl.def (INLINE_HEADER): Add new integer field. + * rtl.h (POPS_ARGS): New macro for place to save + current_function_pops_args. + (FUNCTION_FLAG_POPS_ARGS): Deleted; no longer a single bit. + * emit-rtl.c (gen_inline_header_rtx): Add new arg for "pops args". + * integrate.c (initialize_for_inline, output_inline_function): + Correctly save and restore current_function_pops_args. + +Sun Jan 6 14:10:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h (ASM_OPERANDS_INPUT_LENGTH): New macro. + * reload1.c (eliminate_regs): Use ASM_OPERANDS_... macros. + * recog.c (asm_noperands, decode_asm_operands): Likewise. + + * rtl.def (IF_THEN_ELSE): Set class to '3'. + + * cse.c (simplify_{unary,binary,ternary}_operation): New functions, + from fold_rtx. + (fold_rtx): Call these function to do the bulk of the work. + Use GET_RTX_CLASS to find commutative and comparison operations. + Swap folded_arg[01] when commuting operands. + * rtl.h: Define new functions. + * integrate.c (try_constants): Replace constant folding code with + calls to new functions above. + In commutative operations, put constants last. + + * genemit.c (struct clobber_pat): New data structure. + (gen_insn): If pattern ends with a group of CLOBBERs of hard + registers, store this information in a struct clobber_pat. + (output_add_clobbers): New function. + (main): Call it to write code to add CLOBBERs. + * genrecog.c (struct decision): Add new field num_clobbers_to_add. + (make_insn_sequence): If pattern ends with a group of CLOBBERs, + set up to recognize it without the CLOBBERs but to indicate the + number of CLOBBERs omitted. + (add_to_sequence): Initialize num_clobbers_to_add. + Remove unnecessary conditionalization on STORE_FLAG_VALUE. + (break_out_subroutines, write_subroutine, write_tree): Remove + RETURN_PREFIX parameter; TYPE is sufficient. + (write_subroutine): Add extra parameter for recog_* functions. + (write_tree_1): Pass TYPE instead of string for return. + Write out code to return number of CLOBBERs needed. + (write_tree): Add new parameter to recog_*. + (main): Add new parameter to recog. + Don't pass return string to break_out_subroutines and write_tree. + * recog.c (recog_memoized): Pass extra (0) parameter to recog. + * combine.c (recog_for_combine): New function. + (try_combine, simplify_and_cc0, try_distrib): Use it instead of recog. + (reg_dead_at_p, reg_dead_at_p_1): New functions. + + * flow.c (mark_set_1): Count in reg_n_sets when a part of a register + is modified. + Update SIGNIFICANT correctly when subreg_p and multiple hard regs. + Compute reg_n_sets for hard registers. + +Sun Jan 6 13:41:49 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (locate_and_pad_parm): Do REG_PARM_STACK_SPACE just once. + + * Changes by wilson@cygnus.com. + * calls.c (expand_call): Test value of REG_PARM_STACK_SPACE instead + of assuming that it will always be greater than zero. + * function.c (assign_parms): Same as above. Also, correct + calculation of STACK_BYTES. + + * reload1.c (reload_reg_free_p): Old input reload blocks input_addr. + +Sat Jan 5 18:32:15 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (mostlyclean): New name for old `clean'. + (clean): Deletes gnulib also. + (cleanconfig): Need not delete gnulib here. + + * reload.c (push_reload): Don't use dying reg unless operand fits. + + * c-parse.y (yylex): Hex and octal constants now traditionally signed. + +Sat Jan 5 18:03:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * regclass.c (regclass): reg_n_sets is one per set. It does not + take into account loop_depth. So don't adjust by loop_depth here. + +Fri Jan 4 13:18:07 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (put_var_into_stack): Don't mung virtual reg. + (fix_lexical_addr): Accept the virtual arg pointer. + * function.h (struct var_refs_queue): New structure. + (struct function): Use that for the pending var refs queue. + + * print-tree.c (print_node): Nicer format for rtl of decls. + + * c-decl.c (push_c_function_context, pop_c_function_context): + No need to deal with current_function_decl. + + * c-parse.y (nested_function): Delete spurious nonterminal. + +Fri Jan 4 12:13:14 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (modify_vtable_entries): In case we are modifying + the main vtable, start with the vtable that comes from the immediate + baseclass, not the most base class. This is needed because later + fixups (for non-first and virtual baseclasses) do not fix up this + case. + +Fri Jan 4 06:55:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (expand_binop): Fix typo in testing for SImode operation. + Generalize to apply in more cases by calling emit_store_flag rather + than doing the gen_sltu explicitly. + + * expmed.c (store_bit_field, extract_bit_field): When insv/extv + don't allow MEM and we need to load the field into a register, don't + use the mode of OP0 if it is wider than the mode to be used for + insv/extv operating on a register. + + * expmed.c (emit_stor_flag): Try to convert some comparisons with + 1 and -1 to comparisons with zero. + Explicitly test sign bit of STORE_FLAG_VALUE rather than testing it + for being less than zero. + + * cse.c (find_comparison_args): Don't compute STORE_FLAG_VALUE < 0; + instead, test the relevant sign bit. + Use GET_RTX_CLASS instead of comparison_code_p. + * loop.c (get_condition): Likewise. + + * recog.c (validate_change): Eliminate duplicate code by always + saving the change. If in_group == 0, call apply_change_group. + (apply_change_group): If recog_memoized fails, see if we have a + CLOBBER at the end. Use validate_change to replace the pattern + with one without the CLOBBER if so; later we will verify that change. + + * tree.c (stabilize_reference_1): Now static; also, define as forward + reference at start of file. + + * rtl.def: Add new field in DEF_RTL_EXPR macro to give the "class" + of the rtx operation. + * rtl.h: DEF_RTL_EXPR has one additional arg. + (rtx_class, GET_RTX_CLASS): New var and macro. + * rtl.c: DEF_RTL_EXPR has one additional arg. + (rtx_class): Initialize table. + + * reload.c (push_reload): If an input operand contains a dead + register used nowhere else in the insn, try to use it as a reload reg. + * reload1.c (reload_as_needed): If cancelling optional reload, + clear reload_reg_rtx. + (choose_reload_regs): If we can find reload value lying around, + use that register unless choice made by find_reloads would also save + an insn (the new choice added above won't). + + * genoutput.c: Update comments on things written. Change order to + agree with the order written. + (output_epilogue): Remove extraneous tests. + +Thu Jan 3 13:32:54 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * rtl.c (read_rtx): Cast NULL vector. + + * By Jim Wilson. + * tree.c (stabilize_reference): Modified to call stabilize_reference_1 + instead of save_expr. + (stabilize_reference_1): New function. For arithmetic operator trees, + recurse on the subtrees. Otherwise, put a SAVE_EXPR around the + tree if it has side-effects. + +Thu Jan 3 12:37:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (choose_reload_regs): Only set reload_when_needed to + RELOAD_FOR_OUTPUT or RELOAD_FOR_INPUT when it used to be RELOAD_OTHER. + +Wed Jan 2 18:28:23 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * emit-rtl.c (init_emit_once): Fix typo setting constm1_rtx. + +Wed Jan 2 07:53:04 1991 Michael Tiemann (tiemann at cygnus.com) + + * sparc.md (fix_truncdfsi2 recognizer): xoperands must have 3 + elements because `output_fp_move_double' can write to operands[2]. + +Wed Jan 2 17:16:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (emit_call_1): If we have call_pop, use it if we have + no stack arguments. + + * out-vax.c (relational_op): Deleted, redundant. + * vax.md (branch): Use comparison_operator (in recog.c) instead of + relational_op. + * tm-vax.h (PRINT_OPERAND_PUNCT_VALID_P): "C" is not punctuation. + + * reload1.c (reload_as_needed, forget_old_reloads_1): Don't clear + reg_has_output_reload and reg_is_output_reload for each insn, just + ones that need reload. Instead, interpret each entry as zero if + n_reloads == 0. + +Wed Jan 2 15:52:13 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (expand_binop): Fix typos. + + * toplev.c (rest_of_compilation): Clear cse_not_expected after loop. + * rtl.h (cse_not_expected): Declare here. + * expr.h: Not here. + +Tue Jan 1 21:55:11 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * emit-rtl.c (constm1_rtx): New standard constant. + (gen_rtx): Use it when appropriate. + (init_emit_once): Initialize it. + + * out-vax.c (split_quadword_operands): New function. + (relational_op): Likewise. + * vax.md (extendsidi2, adddi3, subdi3): New patterns. + (movdi): Use clrq when appropriate. + (movaq recognizer): New pattern. + + * recog.h (OUT_FCN): New macro. + * genoutput.c: Include recog.h in output file. No + longer define "const", since that happens in recog.h. + + * tm-vax.h (PRINT_OPERAND): Add 'C' to print a reversed condition. + * out-vax.c (rev_cond_name): Return its name. + * vax.md (unnamed patterns): Combine several reversed branch patterns + into one, using match_operator with relational_op and "%C". + + * optabs.c (expand_binop): Handle multi-word addition and subtraction. + + * Makefile.in (install-gnulib): Use RANLIB_TEST. Use libg_dir. + (libg_dir): New customization variable. + + * assert.h (__assert): Use standard GNU format for error messages. + +Tue Jan 1 21:25:00 1991 Richard Kenner (kenner at vlsi1) + + * reload1.c (eliminate_regs, case PLUS): Always move constant to the + outside of a PLUS expression. + +Tue Jan 1 11:45:22 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * ecoff-cmp: Specify `c' in option to tail. + + * stor-layout.c (layout_record, layout_union, layout_type): + Use ROUND_TYPE_ALIGN and ROUND_TYPE_SIZE to compute + alignment and size of records, unions and arrays. + * ROUND_TYPE_ALIGN: New. Args are type, spec'd align, other min align. + * ROUND_TYPE_SIZE: New. Args are type, size of contents, align. + + * reload1.c (emit_reload_insns) [PRESERVE_DEATH_INFO_REGNO_P]: + Scan output and output-address reloads together. + Check for matching hard reg. + + * config.gcc: Set proper shell vars in big dispatch. Not `machine'. + (i386-isc): New alternative. + +Tue Jan 1 08:29:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (update_block): Turn bb_tick update back on; it is needed, + after all. + +Mon Dec 31 18:12:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattrtab.c (write_test_expr, case EQ_ATTR): Use correct expression + number for attribute value. + + * cse.c (cse_insn): Use single_set when looking for an insn that sets + cc0 followed by one that no longer does. + + * recog.c (find_single_use): If the next insn after one that sets + cc0 is not an INSN or JUMP_INSN, return 0; don't blow up on a NOTE. + + * emit-rtl.c (emit_insn_before, emit_insn_after, emit_insn): Return + something sensible if a SEQUENCE of length zero was passed. + We no longer make a SEQUENCE with XVEC == 0, so don't test for it. + + * reload1.c (emit_reload_insns): Handle gen_move_insn returning + no insns (occurs on RT for dummy registers). + + * rtl.h (reg_cc0_rtx, find_cc): No longer needed. + * emit-rtl.c: Likewise. + * conditions.h: Entire file is #ifdef HAVE_cc0. + * final.c (CC_STATUS_INIT): Make a null default #ifndef HAVE_cc0. + (cc_status): No longer exists #ifndef HAVE_cc0. + (final_scan_insn): Do CC processing only #ifdef HAVE_cc0. + (alter_cond): Only exists #ifdef HAVE_cc0. + * genemit.c (gen_exp): No longer have CC0_REGNUM or reg_cc0_rtx. + * genoutput.c (main): Include insn-config.h before conditions.h. + * reorg.c: Likewise. + * jump.c (rtx_equal_for_thread_p): Remove reference to CC0_REGNUM; + we'll have to do this optimization some other way later. + * tm-a29k.h (NOTICE_UPDATE_CC): Deleted. + +Mon Dec 31 14:44:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload.h (enum_reload_when_needed): + New alternatives RELOAD_FOR_OUTPUT, RELOAD_FOR_INPUT. + * reload1.c (choose_reload_regs): Use those when appropriate. + (mark_reload_reg_in_use): Record this usage specially. + (reload_reg_free_p, reload_reg_free_before_p): Handle this usage. + (reload_reg_reaches_end_p): Likewise. + (emit_reload_insns): Treat RELOAD_FOR_INPUT like RELOAD_OTHER. + + * i386.md (push for SFmode): Operand of fst was missing. + +Mon Dec 31 08:50:17 1990 Craig Burley (burley at pogo.ai.mit.edu) + + * stor-layout.c (layout_type): For ARRAY_TYPE case, don't try + and compute a size if there is no TYPE_MAX_VALUE for the index. + * tree.c, tree.h (build_index_2_type): New function, like + build_index_type except it accepts the low value as an arg instead + of assuming 0. + +Mon Dec 31 08:09:10 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-typeck.c (c_expand_return): Handle case when we try + to return a void value (such as a void function call) in a + function returning void, and there are cleanups to run. + +Sun Dec 30 21:08:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-a29k.h (TARGET_VERSION): Can't use target_flags since we can + be called from gcc.c. + + * tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be + holding a DImode value and so might be very expensive (we won't + worry about TImode). + + * rs6000.md (subtract patterns): Fix incorrect operand number in %I. + (movti): Disallow indexed memory operands. + + * out-rs6000.c (print_operand, case 'm'): Fix typo. + (includes_rshift_p): Correctly compute mask. + + * out-a29k.c (output_operand): Add missing parentheses. + (print_operand): Replace if/then/else structure with switch statement. + + * a29k.md (beq, bne): Try to use NE test whenever possible; it + will produce better code if we have bit-tests. + +Sun Dec 30 12:02:03 1990 Michael Tiemann (tiemann at cygnus.com) + + * tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it + takes when 'R' is passed in as CODE. Also, handle 'B' letter. + + * sparc.md: (pattern for converting DFmode to SImode): Second + argument to `output_asm_insn' should be `operands', not zero. + (tablejump): The jump insn is "jmp", not "jump". + (gen_fixtruncdfsi2): operands[2] should get the pseudo, not + operands[3] (which is nonexistent). + (call): Fix typo which had %o7 being emitted as %o. + (various patterns): Fixed places where match_operand had the wrong + operand number. + +Sat Dec 29 17:27:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * sparc.md: cc_status no longer handles condition code updates. + Instead, condition codes are explicitly set and used via + hard register 0. Special attributes specific to condition codes + (such as whether conditional branches should test the integer or + floating-point condition codes, or that the condition codes cannot + be tested for a condition which would test the overflow bit) are + handled by encoding the attribute in the mode for the condition + code register. + (type attributes): type "unary" insns have one input operand (1) + and one output operand (0) + type "binary" insns have two input operands (1,2) and one output (0) + type "compare" insns have one or two input operands (0,1) and no output + type "move" and type "arith" have been deleted. + (prescan attribute): Deleted. Machine description now puts + floating-point zero in registers when needed. + (use_cc attribute): Deleted. + (fpcc define_delay): No longer depend on "use_cc" attribute. + Also, fpcc delay characteristics hold for "fpcc" type insns. + (cc attribute): Deleted. + (cmpxx patterns): Now written as `define_expand's so we can stow + away operands. When the pattern that will use the results of the + conditional test is emitted, it can use these operands to figure + out the right way to emit the compare. + (bcc patterns): Rewritten to emit comparison (based on stowed-away + info) before emitting branch. + (scc patterns): Handle all the cases with branch-free code. + Added new pattern to recognize (x + (i == 0)). + (movsi pattern recognizer): Split into two patterns so that e.g. + "(set:SI (mem:SI ...) (const_int 5))" is never considered valid. + Instead this has to be a two-insn sequence. + (mov{hq}i pattern recognizers): Ditto. + (movstrsi): Force operands[2] out of memory if it was in memory. + ({zero,sign}_extendXY): Now written as `define_expand's instead of + `define_insn's for more accurate machine modeling. + Added new pattern to optimize bit-field compares. + (floatsisf2 patterns): Delete redundant setting of "in_call_delay" + attribute. + (fix_trunc{sf,df}si2 pattern): Use clobberable register in which + the conversion can take place. Used to use %f30,%f31. + ({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the + pattern. + (negdi2 pattern): Ditto. + Added new patterns to handle merging of addition/subtraction with + condition code testing (with (reg:CC_NOOV 0)). + ({and,ior,xor}cbsi3 pattern): Obsolete. Deleted. + Added patterns to represent setting of condition codes in addition + to performing logical operations. + ({neg,abs}df2 pattern): Use `R' print letter to overcome the need + to use a C action instead of a simple template. + (ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode + operands. + (jump pattern): Use `*' print code to obviate the need for a C + action when a template can do. + (tablejump pattern): Ditto, with `^' code as well. + Deleted `define_split's that were used to handle mem-mem moves in + the case of PIC generation. Since all move insns are emitted and + maintained as SPARC-valid insns, these should no longer be needed. + (various patterns): (HI ...) is spelled (HI:SI ...). Also, use + `gen_lowpart' instead of building subregs directly. + New `define_split's were added to split scc insns into simpler + components which have single-insn templates. + Fixed a return peephole when returning a SFmode value (it was + missing the "ret"!). + Lots of complicated peepholes that brought cc testing and + arithmetic operations together were deleted. This is because the + combiner should now handle all these cases. + + * out-sparc.c (sparc_compare_op{0,1}): New global variables. + Used to hold the operand(s) to compare insns in lieu of emitting a + compare. + (reg_or_cc0_operand): Deleted. + (normal_comp_operator): New function. + (cc_arithop): Now returns 0 for PLUS and MINUS. + (cc_arithopn): Now returns 0 for XOR. + (gen_compare_reg): New function. + (sparc_address_cost): Simplified because it turns out it doesn't + matter what is returned for illegitimate addresses. + (hard_regno_mode_ok): Updated to use these new #defines. + (C_MODES): New #define, for condition code modes. + (S_MODES): Ditto, for single-word (and smaller) quantities. + (D_MODES): Ditto, for double-word (and smaller) quantities. + (T_MODES): Ditto, for tetra-word (and smaller) quantities. + (SF_MODES): Ditto, for SFmode quantities. + (DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc. + (TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc. + (output_floatsi{df,sf}2): Greatly simplified. + (output_pic_sequence,output_pic_sequence_2,fp_zero_hook, + output_tail_call): Turned off. + + * tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC. + (WORDS_BIG_ENDIAN): Define as 1, not 0. + (FIXED_REGISTERS): %f30 and %f31 are now allocatable. + (REG_CC0_RTX, CC0_REGNUM): Deleted. + (EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode. The former + is for when the overflow bit it not to be tested; the latter is + for when the condition is sitting in the floating point unit. + (SELECT_CC_MODE): New macro. + (FINAL_PRESCAN_INSN): Deleted. + (CC_* macros): Deleted. + (PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for + whether to print a noop or not), '*' (for whether to print a ",a" + or not), and '^' (for whether to emit code for PIC branch or not). + (PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to + fputs where that is convenient. + + * expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if. + + * reload.c (struct replacement): Add new field subreg_loc. + (push_reload): If reloading SUBREG_REG of a paradoxical SUBREG, + store the location of the SUBREG in subreg_loc in REPLACEMENTS. + (push_replacement): Initialize subreg_loc. + (subst_reloads): Don't produce nested SUBREGs; use subreg_loc. + + * regclass.c (regclass): Handle (set X (op CONST Y)) properly when + the modes of operands 0 and 1 are different. + +Sat Dec 29 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (macroexpand): Test traditional when computing expansion size. + + * toplev.c (compile_file): + If profiling, leave some space after `gcc_compiled.'. + * tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted. + + * reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here. + (choose_reload_regs): Not here--except for reg_has_output_reload. + + * c-parse.y (nested_function, notype_nested_function): + Use compstmt for body, not compstmt_or_error. + + * Makefile.in (install-headers): Use basename on + * stupid.c (stupid_mark_refs): Really do mark clobbered hardreg + live before the insn. + +Fri Dec 28 05:44:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (subreg_lowpart_p): Use correct modes in + WORDS_BIG_ENDIAN case. + + * reload.c (combine_reloads): Don't try to reference + insn_operand_constraint for an ASM insn. + Fix typo in testing for modified operand. + +Thu Dec 27 19:02:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL. + + * cse.c (fold_rtx): Save mode of original first operand in case this + is becoming (sign_extend (const_int)). + +Thu Dec 27 16:15:56 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md, out-m88k.c (CCmode): Use it. + (emit_bcnd): Avoid loosing when bcnd is changed into sxx. + (hi16/lo16): Don't use these to form 16-bit immediate values. + Introduce and use %X/%x. + (length attribute): Make better use of defaults. + + * tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h. + * xm-*88*.h: Clean these up. Most differences go away by relying + on the 88open standards. + +Thu Dec 27 12:48:26 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expmed.c (store_bit_field, extract_bit_field): + Change #ifdef to #if, testing BYTES_BIG_ENDIAN. + +Thu Dec 27 07:36:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for + label at end of function. + +Wed Dec 26 22:35:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (sequence_element_free_list, sequence_result): New vars. + (restore_emit_status, init_emit): Initialize them. + (emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in + sequence_result. + Make these three routines more alike in structure. + (start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs + in sequence_element_free_list rather than making new ones. + (start_sequence): No longer return unused rtx; only one caller + needed to be changed (in function.c, see below). + (end_sequence): No longer has argument. + (gen_sequence): Try obtaining a pre-built SEQUENCE from + sequence_result; no longer special-case length 0 vectors. + * function.c (fixup_memory_subreg): start_sequence no longer + returns an rtx and end_sequence no longer has an argument. + * rtl.h (start_sequence): Now void. + (push_to_sequence, end_sequence): Define. + +Wed Dec 26 13:19:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gnulib.c: No longer #undef perform_* if not __GNUC__. + (perform_*): Define each if not already def. + +Tue Dec 25 17:31:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (get_condition): Rework scan that looks for sets of things + being compared to allow intervening insns; check to ensure that + they don't set something that we need. Return 0 if the best we can + do is find something whose mode is in class MODE_CC. + + * calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of + arguments on the stack and returns the number of bytes popped by the + called function. + * output.h (current_function_pops_args): Change description. + * function.c (current_function_pops_args): Likewise. + (assign_parms): Initialize current_function_pops_args here. + (init_function_start): Not here. + * tm-*.h (RETURN_POPS_ARGS): Reflect new meaning. + (FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args. + * out-i386.c (function_epilogue): Likewise. + +Tue Dec 25 15:52:06 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gnulib.c (all functions): Support a hook for redefining contents. + These hooks are called perform_addsi3, and so on. + They are used only if compiling with GCC. + + * rtlanal.c (single_set): Moved from loop.c. + + * cse.c (fold_rtx): For a MEM, fold address when looking for constant. + (cse_insn): When fetch a constant label from a dispatch, + substitute into following tablejump. + (find_best_addr): Clear do_not_record before hashing. + * jump.c (mark_jump_label): Don't record table-labels on non-jumps. + + * m68k.md (casesi_2 recognizer): Use register_operand as predicate. + +Mon Dec 24 17:54:42 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC, + when the index in it is constant. + + * c-decl.c (start_function): Handle new option -Wmissing_prototypes. + (c_decode_option): Likewise. + +Mon Dec 24 07:21:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h (reload_completed, reload_in_progress): Now defined here. + * output.h (reload_completed): No longer defined here. + * emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c: + Don't define reload_in_progress or reload_completed. + * a29k.md, romp.md, rs6000.md: Likewise. + + * machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode, + not zero. + (CCmode): New mode. + * machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES, + if defined. + (enum mode_class): New class MODE_CC; delete MODE_FUNCTION. + * rtl.c (mode_name): Define to be known size; add names for extra + CC modes, if present. + (mode_class, mode_size, mode_unit_size, mode_wider_mode): Define + to be known size. + (init_rtl): Initialize extra CC modes. + +Sat Dec 22 19:33:54 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-i386v.h (MAXPATHLEN): Define if not already defined. + * tm-i386vgas.h: New file. + + * out-i386.c (print_operand_address): Handle scaled indexing. + +Sat Dec 22 11:15:03 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on + NOTICE_UPDATE_CC doing the job. Instead, compliment the swapped + compare. Also, make COMPARE SImode. + (and/cmpsi/sxx/neg): Add patterns to do this in one instruction. + Change sign_extend/sxx to neg/sxx for other cases. + (iorsi3/xorsi3): Use alternatives and explicit patterns. + (casesi): Make the constant the second operand to cmpsi. + (output_and): Must compliment value to use the clr instruction. + (output_reg_adjust): Simplify the interface and use TEMP_REGNUM. + (TARGET_SWITCHES): Eliminate needless no-* options. + +Fri Dec 21 05:46:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c (find_single_use{,_1}): New functions. + * rtl.h (find_single_use): Declare it. + +Thu Dec 20 21:27:36 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (init_optabs): Add __ to names of floating compare fcns. + +Thu Dec 20 18:21:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_builtin, case BUILTIN_FFS): Get mode for arg from + tree, not rtx, in case arg was CONST_INT. + +Thu Dec 20 17:31:46 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (init_decl_processing): Don't define `ffs'. + +Wed Dec 19 16:59:38 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c (main): Handle if SIGPIPE not defined. + + * cccp.c (xmalloc, xrealloc, xcalloc): Don't declare malloc or realloc. + +Wed Dec 19 06:50:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (gen_lowpart_for_combine): Avoid making a nested SUBREG + when we are being passed a paradoxical SUBREG of MEM. + + * cse.c (new_basic_block): Compilations spend about 5% of their time + in this function so replace loop initializing qty_{first,last}_reg + with copy from a larger consec_ints. Only loop over extra entries. + (cse_main): Allocate consec_ints to be default size of max_qty large. + + * reorg.c (get_branch_condition): Fix typos when reversing condition. + (condition_dominates_p): Fix typo in comparison. + (redundant_insn_p): This function was taking about 4% of the + compilation time. Rework so it doesn't split, only looks at resource + usage if it finds a matching insn (since it usually won't), and + improve code that looks at resources. Now takes about 0.5% of + compilation time. + (fill_simple_delay_slots): Always call mark_target_live_regs with an + active insn; currently being called with a CODE_LABEL. + +Tue Dec 18 14:08:11 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * out-sparc.c: Fix uninitiated comment. + + * final.c (end_final): Call strip_off_ending to remove the file + name suffix. + (final_start_function): Execute SDB_DEBUGGING_INFO code only if + generating SDB symbol info. + + * Makefile.in (cccp.o): Depend on gcc. + + * tm-sparc.h, xm-sparc.h: Make this machine big-endian. + + * expr.c (expand_builtin): Pass correct arguments to gen_cmpstrsi4. + + * recog.c (nonmemory_operand): Reject reg whose class is NO_REGS. + + * c-decl.c (finish_struct, grokdeclarator): + Strip NON_LVALUE_EXPR more than once. + + * combine.c (combine_instructions): Check that a jump insn uses CC0 + before trying to combine it with an insn that sets CC0. + + * cplus-decl.c, cplus-search.c, gcc.c, objc-actions.c, rtl.c, stmt.c, + symout.c, toplev.c: Use xmalloc instead of malloc. + + * cccp.c (do_include): Check for truncation of precompiled file name. + +Mon Dec 17 16:53:46 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (build_binary_op_nodefault, build_conditional_expr): + Fix indentation. + * reload1.c (choose_reload_regs): Fix indentation. + (gen_input_reload): Fix typo in comment. + + * reload.c (find_reloads): Call abort when the last operand is + marked commutative, to make it easier to find this error. + + * rtlanal.c (refers_to_regno_p): Don't crash if X is 0. + +Mon Dec 17 15:29:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (combine_regs): No need to see if suggested hard reg + is suitable; if it isn't, it won't end up being used. Existing tests + were too conservative. + + * jump.c (delete_jump): When searching for the SET of the condition + codes for a jump insn, give up if we hit a SEQUENCE. + +Mon Dec 17 02:14:06 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (c_size_in_bytes): New function. + (pointer_int_sum, pointer_diff): Use that. + (pointer_diff): Handle warn_pointer_arith. + +Sun Dec 16 22:27:11 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (start_decl): Ignore with error any init for a parm. + (finish_decl): Likewise. + +Sun Dec 16 01:02:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * jump.c (rtx_equal_for_thread_p): Treat the special CC register as + equivalent for the two threads we are looking at. + + * combine.c (try_combine): Fix typo in loop over I1 with PARALLEL + body. Also, don't test HARD_REGNO_MODE_OK for hard registers we are + thinking about combining. This screws up using registers to + represent the condition codes, and probably doesn't save anything in + the general case. + + * expmed.c (expand_and): Comment says that result is always stored + in target, so the code now does this. + +Sat Dec 15 18:09:46 1990 Michael Tiemann (tiemann at cygnus.com) + + * loop.c (get_condition): Try a little harder to find the setter of + the register used in a conditional test. On the SPARC it is vital + to either find the setter of the register used for the condition + codes or for this function to return 0. Also, have test for + non-NULL, matching `set' govern both normal and reversed cases of + comparisons. + + * jump.c (jump_optimize): When moving USE insns from before jumps to + after BARRIERs, put the label for the redirected jump after the + BARRIER instead of just before the PREV_INSN of the original target. + This gets around problems when there are NOTEs between the BARRIER + and the original target. + +Sat Dec 15 10:16:29 1990 Michael Tiemann (tiemann at cygnus.com) + + * sparc.md (cmpdf,cmpsf): No longer a define expand. Now depends + on fp zero being loaded into a register. + (tstsi,tstdf,tstsf): Deleted. + (seq,sne): Fail if we are not testing operands of integer mode. + (movsi): Split recognizers into two parts. The first handles + [reg,mem,zero] <=> [reg,mem]; the second handles [reg,const] => + [reg]. + (adddf,subdf,negdf): Simplify output routines using 'R' as an + output letter. + (tail_call): Turn this off. It is never used, and it depends on + routines which are about to become broken. + (various places): Add USE_CC attribute where appropriate. + (various places): Change (use (reg:SI 0)) to (clobber (reg:SI 0)) + and delete CC_CLOBBER attribute from the pattern. + * out-sparc.c (move_operand): No longer recognize certain + immediates as a `move_operand'. + (move_reg_or_immed_operand): New recognizer for immediates no + longer recognized by `move_operand'. + (output_pic_sequence*): Turned off. + (sparc_address_cost): Simplified, since the value returned is not + used if the address is not legitimate. + (emit_move_sequence): Use `gen_lowpart' instead of building + SUBREGs explicitly. + (make_f30_contain_zero): Deleted. + (output_tail_call): Turned off. + * tm-sparc.h (PRINT_OPERAND): Recognize 'R' code letter, which + means print the name of REGNO (X)+1. No longer recognizes the 'G' + letter. + (PRINT_OPERAND,PRINT_OPERAND_ADDRESS): Replace various calls to + fprintf with calls to fputs or fputc. + (FINAL_PRESCAN_INSN): No longer defined. + +Sat Dec 15 14:37:51 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * recog.c (offsettable_address_p): Check validity in narrower modes. + +Sat Dec 15 11:21:55 1990 Tom Wood (wood at dg-rtp.dg.com) + + * syms.h sdbout.c (T_VOID): Ensure that T_VOID is provided a + default meaning if is used. + +Fri Dec 14 14:39:10 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (increment and test peephole): Updated so it would apply + with the new method for doing cmpsi/bxx. + * m88k.md (function units): Replace decode with alu and update + accordingly. + * out-m88k.c (emit_test): Add a mode parameter. + * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg + pointer can be used. + +Fri Dec 14 06:48:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (convert_move): Add missing argument to some recursive calls. + + * jump.c (invert_jump): Pass new label to recursive call. + + * expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code. + (expand_and, emit_store_flag, label_rtx): Add definitions. + (get_condition, compare_from_rtx): Likewise. + * rtl.h (STORE_FLAG_VALUE): Provide a default value of 1. + (reg_set_last): Add definition. + (const_true_rtx): New variable. + * cse.c: Remove defaulting of STORE_FLAG_VALUE from here. + (const_true_rtx): Remove static version; now global. + * emit-rtl.c (const_true_rtx): Define here. + (gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE. + (init_emit_once): Initialize const_true_rtx. + * expmed.c (emit_store_flag): Rewritten. Is passed the operands + to compare in addition to the compare operation and emits both the + comparison and the store-flag insn. + Handles special-case of testing for A < 0 and A >= 0. + If result is constant, just return it. + Accepts an argument saying how to normalize the result and does + appropriate normalization. + Give preference to using the sign bit rather than the low-order bit. + Allow sxx insns to fail. + If don't have seq or sne insns, can sometimes do with abs. + * expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only + do store_flag if it is cheap. + (do_jump): True comparisons return STORE_FLAG_VALUE, not 1. + (compare_constants): Correctly handle unsigned comparisons. + Return STORE_FLAG_VALUE, not 1, for true comparison. + (compare_from_rtx): New name for compare1. + Accept size and alignment, for BLKmode. + No longer statuc. + (compare, compare_from_rtx): No need to pass forward and reverse codes; + can trivially derive the reverse code from the forward one. + All callers changed. + If one operand is constant, make it the second one. + (compare): Let compare1 do most of the work. + (do_store_flag): Rewritten, now lets emit_store_flag do most of + the work. + Handles the special-case of comparing a single bit with zero., + Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like + this will be an expensive operation; all callers changed. + If it looks like it will be possible to do a store-flag operation, + call emit_store_flag; if it can't do it, emit as assignments and a + jump. If it doesn't look possible to do a store-flag operation, return + zero before expanding anything. + * final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the + insn doesn't exist, we won't try to change it. + * genemit.c (gen_exp): Use const_true_rtx when appropriate. + * genrecog.c (add_to_sequence): Likewise. + (try_merge_1): Two nodes aren't identical if they are to test + different modes or if they have different values of EXACT. + * integrate.c: Don't supply a default value for STORE_FLAG_VALUE here. + * jump.c: Now includes expr.h (for emit_store_flag and get_condition). + (jump_optimize): Split optimization that made store-flag insn + into three separate optimizations, the first two of which are useful + even in the absence of store-flag operations. + (can_reverse_comparison): Set and use of cc0 must be immediately + adjacent. + (mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL. + Consider two labels adjacent after reload if separated by just USE or + CLOBBER insns. + * loop.c: Now includes real.h. + (get_condition_for_loop): New function. All callers of get_condition + in this file now call this function. + (strength_reduce): no_labels_between_p now skips FROM. + (get_condition): No longer static. + Refine cases when we can't reverse a comparison operation. + * optabs.c (init_optabs): Initialize and define setcc_gen_code + instead of setcc_gen_fctn. + * rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_... + functions do. + (no_labels_between): Deleted. + (reg_set_last, reg_set_last_1): New functions. + * Makefile.in (jump.o): Now include expr.h. + (loop.o): Now includes real.h. + + * c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet): + New names. + + * alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode + to comparison operators (EQ, NE, etc.) to agree with the mode of the + destination. + * out-m88k.c (emit_test): Likewise. + +Fri Dec 14 00:12:46 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width. + +Thu Dec 13 13:10:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cplus-init.c (expand_vec_init): Add missing arg to + expand_exit_loop_if_false. + + * config.gcc (tron): Alias for gmicro. + + * c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed. + (ptr_ftype_ptr_cptr_sizet): Likewise. + + * gcc.c (default_compilers): Handle .C. + + * Makefile.in (enquire.o): Add -I. so can find stddef.h. + (install-cross): Install cc1obj like the others. + + * Makefile.in (gnulib.target): Renamed from gnulib. + (gnulib): Renamed from tmpgnulib. Rename that file in this rule. + Also delete stamp-gnulib2 here. + (gnulib.portable, gnulib.convert): Input now is named gnulib. + (GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use). + (gnulib2.target): Renamed from gnulib2. + (gnulib2): New rule, alias for gnulib2.target. + + * local-alloc.c (local_alloc): Cast an enum used as index. + * optabs.c (emit_indirect_jump): Likewise. + * reload1.c (choose_reload_regs): Likewise. + +Thu Dec 13 12:38:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (store_bit_field): Verify that operand 1 of movstrict + satisfies its predicate. + +Wed Dec 12 17:26:21 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gvarargs.h: Avoid duplicate inclusion using _VARARGS_H. + +Wed Dec 12 14:11:30 1990 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition + code register. As a temporary measure, NOTICE_UPDATE_CC is used + to track swapped cmpsi cases. + + * m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT + uniformly with define_expand. Make gen_lshlsi3 generate ASHIFT + and eliminate the optimization patterns using ASHIFT. Eliminate + other optimization patterns that will be handled by combine. + +Tue Dec 11 22:13:48 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (convert_move): With slt, handle dest that's invalid. + + * stmt.c, tree.h (stmt_nesting): + Typedef deleted; use `struct nesting *'. + * stmt.c (expand_start_cond): If exitable, make an exit label. + +Tue Dec 11 21:28:56 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst, case SUBREG): Update TO for earlier + changes so we can always detect (subreg (mem ...)). + +Tue Dec 11 10:56:53 1990 Craig Burley (burley at pogo.ai.mit.edu) + + * stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer + to nesting structure (new type stmt_nesting). + (expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer + to nesting structure, substitute loop_stack if 0 (same behavior as + before when there was no argument), so F90 CYCLE and EXIT statements + (like C's continue and break stmts) can refer to other than the + innermost loop. + (expand_start_cond): Uses new names for if-related labels that + reflect addition of "elseif" call, and sets endif_label to whatever + exit_label gets set to (so we don't generate two identical labels + for languages from which if is exitable via expand_exit_something). + (expand_start_elseif): New function, used by Fortran. + (expand_start_else): Moved above _end_cond so these four functions + appear in the order they get called; uses new names, and fills in + only endif_label if needed, not exit_label. + (expand_end_cond): Handles end of any if, not just if-without-else. + Generates both labels for next else/elseif pending (there was none) + and the endif itself, if they exist (and there will always be at least + one). + (expand_end_else): Gone, call expand_end_cond instead. + * c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to + expand_..._loop_... to indicate the innermost loop; call + expand_end_cond instead of expand_end_else. + * tree.h: Typedef for stmt_nesting returned by expand_start_loop... + and change their return types accordingly. + +Mon Dec 10 06:59:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (check_asm_operands): Delete from here. + * recog.c (check_asm_operands): Move to here; no longer static. + (validate_change): Don't assume change is valid is asm_noperands >= 0. + If recog_memoized returns < 0, accept change if asm_noperands >= 0 + and check_asm_operands returns non-zero. + (apply_change_group): Likewise. + (validate_replace_rtx_1): Swap operands on commutative operation + if first is constant. + Use plus_constant to simplify a PLUS with CONST_INT as second operand. + + * reload.c (find_equiv_reg): We must have a stable SP if GOAL is + a MEM that uses SP. + + * combine.c (try_combine): Don't do anything if I2 or I1 + has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers + and it is too messy to try to get things set up correctly. + +Sun Dec 9 22:07:41 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (collect_expansion): Don't check for /* */ concat here. + (macroexpand): Always use raw arg if traditional. + + * c-parse.y (unary): Mark address of label as constant. + +Sun Dec 9 14:45:34 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC + before recursive calling. + (finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN + when laying out TYPE_DECL. + * cplus-tree.c (assoc_value): Change recursion condition to compare + ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just + against type. + +Sat Dec 8 10:40:00 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (attributes): Reorganize and include a block diagram. + Make better use of defaults. + * m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add + the sparc peepholes for changing bsr/br into bsr.n/addu or + bsr.n/subu. Install the length attribute for this. Requires the + use of `def' to accomodate broken assemblers in the bsr.n/addu + case. + +Fri Dec 7 06:12:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (find_end_label): Increment usage count of label we return + so we know it won't go away. + (dbr_schedule): Decrement count of end label and delete it if dead. + +Wed Dec 5 17:36:23 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md: Add instruction attributes for scheduling and delay + slot information. + * m88k.md (addsi pattern): Adding large constants does arise. + (udivsi pattern): Wrong predicate. + * tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using + attributes. + + * make-m88k, make-m88kdgux: Say how to create m88k-trace.asm. + +Wed Dec 5 13:52:16 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (expand_binop): Support insn_before == 0. + + * function.c (optimize_bit_field): Fix wrong arg to validate_change. + + * Makefile (includes): Export LIB. + +Wed Dec 5 13:31:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Don't discard CLOBBERs from an insn + with ASM_OPERANDS. + +Tue Dec 4 16:12:21 1990 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce + POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate + functions *_p instead of *_operand; cleanup addsi3 insns; simplify + udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH + SImode instead of VOIDmode; add a predicate to the increment and + test peephole insn; deal with setting SFmode to zero; delete bogus + pattern for divide-by-power-of-2. + * make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm. + Move movstr-m88k.sh to config/m88k-movstr.sh. + +Mon Dec 3 19:08:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (gnulib2.ready): New target. + (stamp-gnulib2): Depend on that. + Avoids recompiling gnulib2 each time cc1 changes. + +Mon Dec 3 16:17:56 1990 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in + xm-m88kdgux.h. + * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal + synthesis register. Reworked the addressing method to be like the + sparc (uses HIGH and LO_SUM). Numerous cleanups. These changes + are based on work done by Steve Chamberlain (steve@cygnus). + * tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): + Implemented. + +Mon Dec 3 15:19:04 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (special_symbol): Use time_t as type of t. + + * m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files. + + * gcc.c: Don't define R_OK, etc. if already defined. + + * out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler): + Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode. + +Sun Dec 2 22:13:53 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * config.gcc (tower): New alternative. + (mips-news): Adapt for version 2. + + * tm-tower.h, tm-tower-as.h, xm-tower.h: New files. + +Sun Dec 2 17:47:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing + for changed vector. + + * out-rs6000.c (output_epilogue): Fix typo restoring general registers. + (print_operand): Add new option %H. + * rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though + they don't clobber MQ to allow combining to work well. This will be + removed once combine knows how to add clobbers when required. + Change patterns to reflect new canonicalization rules. + Where we have (and (xshift)), add patterns for (zero_extend (xshift)). + (andsi3, xorsi3): Fix bug in case where two insns are needed. + (moveti): Don't call change_address when in reload. + (sign_extend): Add patterns for sign extend preceeded or followed by + one of the shifts it will do. Use %H to output the merged shift. + + * out-romp.c (print_operand): Allow exact_log2 result to be zero. + * romp.md: Likewise. + * tm-romp.h (CONST_OK_FOR_LETTER): Likewise. + + * a29k.md (type attribute): Add types for floating-point insns. + (in_delay_slot attribute): Update to allow for new types. + (function_unit definitions): Add definitions for floating-point units. + (andcb*3): Delete obsolete names. + (convert insn): Use register_operand instead of gen_reg_operand for + floating-point operand. + (cpeq, feq, deq, etc): New patterns. + (floating-point arithmetic): Add support for 29050 insns and + accumulators; indicate function unit usage. + (ior/and patterns): Put NOT as second operand. + (orn insn): New, for 29050. + (load patterns): If using match_operator, make it the highest operand + number. + (loadm insns): Add workaround for rev A1 bug on 29050. + (negsf2, negdf2): Don't use XOR to negate on 29050. + (movsf, movdf): Add support for accumulators on 29050. + (movsi, movhi, movqi): No need to support special->special copies. + Support consthz insn on 29050. + (compare, scc, and branch insns): Rework to not use cc0. Use a pseudo + register instead. Compare doesn't generate any code, but merely + saves the operands. scc and branch then emit the appropriate compare + and jump (if branch) insns. + (tstsi): Delete pattern; not used when no cc0. + (peepholes): Remove peepholes to convert jumps to scc insns; now + done in jump.c. + * out-a29k.c (a29k_compare_*): New variables. + (long_const_operand): Anything with low-order 16 bits zero is not a + long constant on the 29050. + (accum_reg_operand): New function. + (gen_reg_operand): Returns false for accumulator registers. + (output_operand): Allow accumulators. + (ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted. + (fp_comparison_operator, branch_operator): New functions. + (output_compare): Deleted. + (print_operand): Change meaning of %b and %B. + Add new code %J. + * tm-a29k.h (TARGET_VERSION): Say if compiling for 29050. + (TARGET_FLAGS): Add -29000 to turn off support for 29050; this is + still the default. + (various register macros): Add support for the floating-point + accumulators on the 29050. + (CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using + conthz on the 29050; keep old definition for 29000. + (STORE_FLAG_VALUE): Now 0x80000000. + (ASM_FILE_START): Write ".cputype 29050" when compiling for 29050. + + * combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the + first operand of commutative operations. Note that NOT used to be + put as the second operand but it has always been assumed that + MULT would be the first operand in address expressions, so we have + to change the previous canonicalization. This is possible now that we + have eliminated the andcbm3 operations. + * i860.md (andnot): Remove obsolete andcbsi3 name and place NOT + as first operand. + * m68k.md (fpm*): Delete patterns with MULT as second operand and + use "@" construct when possible. + * m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names. + Delete patterns with NOT as second operand. + (xor.c): Rewrite in new canonical form. + * mips.md (nor): Rewrite in new canonical form. + * pyr.md (bicw): Remove pattern with NOT as first operand, removing + obsolete name andcbsi3 in the process. + * sparc.md: Remove patterns with NOT as first operand. + Remove obsolete names andcbsi3, iorcb3, and xorcbsi3. + Rewrite xnor into new canonicalized form. + Add mode to HIGH and LO_SUM operations. + * vax.md (bic*): Remove obsolete andcbm3 names. + Put NOT as first operand when both generating and recognizing RTL. + (jlbc): Rewrite with NOT as first operand. + +Sun Dec 2 17:08:16 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP. + + * stddef.h (ptrdiff_t): Prevent definition, as with size_t. + +Sat Dec 1 16:31:30 1990 Ron Guilmette (rfg at ncd.com) + + * dwarfout.c (lookup_filename, dwarfout_finalize): changed from + maintaining a linked list of filename entries to maintaining an + (expandable) array of filename entries instead. Also, changed + code so that *all* filename strings are output (to the .files + section of the asm file) in one swell foop just as the asm file is + being finalized rather than writing out new filenames one-by-one + as they arise (as previously). This circumvents a problem caused + by rfg's naive assumption that assemblers kept a stack of prior + section names (of depth > 1) which could be successively popped + via multiple `previous' directives. For some assemblers, the + depth of the stack is only 1 and they can get confused if you do + two (or more) `previous' directives in a row. Anyway, it is no + longer either necessary or useful to do that, so who cares. + + * dwarfout.c: added code to output newlines to the asm file just + prior to each and every change of section (for better readability + of the asm files). + + * dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS + is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined. + + * dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES + is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1'). + + * dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not + already defined (in the user's tm.h file) it will automatically be + defined (by default) to `1'. Also changed all instances of + `#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'. + The user must now intentionally *disable* this feature (by + defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he + wishes to have the additional information about files suppressed. + + * dwarfout.c: changed comments relating to optional defines for + extended GNU DWARF features to include more information and to + add some additional clarity. + +Sat Dec 1 16:00:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst): Call reverse_condition instead of + reverse_comparison. + We are allowed to reverse floating-point EQ and NE comparisons. + + * combine.c (subst): Call simplify_and_const_int for all AND + and ZERO_EXTEND cases and all cases where we make one of them. + Remove all other code in AND and ZERO_EXTEND cases. + (simplify_and_const_int): Rewritten to follow a consistent model + of tracking what AND's need to be done and which bits are not + significant. Consistently try a ZERO_EXTEND for all cases where + the result is an AND with a mode-wide mask. Move all remaining + cases from AND any ZERO_EXTEND cases from subst. + +Sat Dec 1 09:13:17 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-tree.h (lang_type): Remove any_assigns_this, + none_assigns_this from type_flags. + * cplus-decl2.c (get_temp_name): If the initializer is a + pointer to zero, cache it in EMPTY_TABLE. + (finish_builtin_type): New function, to factor common code + arising from building internal structures. + * cplus-decl.c (init_decl_processing): Call it. + +Fri Nov 30 10:39:04 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead + of TREE_USED to indicate that we need debugging info for + TTYPE. + Note that nobody ever sets EXTENDED_DBX_DEBUG. For now, + change to test DBX_DEBUG. For later, change everything to + key off of EXTENDED_DBX_DEBUG. + Also, set `warn_return_type' to one always, since this warning + is too valuable to lose. + * cplus-tree.c (lang_output_debug_info): Don't test TREE_USED. That + field is already used by other routines, and we have all we need now + in CLASSTYPE_ASM_WRITTEN. + * cplus-dbxout.c (dbxout_type_method_1): Handle const, + volatile, and const/volatile member functions. + +Fri Nov 30 04:51:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (reg_last_set_value): New variable. + (combine_instructions): Allocate and initialize it. + (record_dead_and_set_regs): Set reg_last_value to source + of assignment; clear it for a CLOBBER or partial assignment. + (subst): Use reg_last_set_value instead of interpreting the + insn in reg_last_set as if it was a single SET. + + * combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT. + When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P. + If cannot recognize the argument, just form a SUBREG; usually, + it won't be recognized, but sometimes will allow further + simplifications. + + * regclass.c (reg_scan): Save size of uid map; reallocate if + we have more registers than we allocated. + Leave some extra room in map. + + * stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn. + + * fold-const.c (decode_field_reference): Add missing arg declaration. + + * expmed.c (store_bit_field): Add missing last argument to + recursive call. + + * cse.c (cse_insn): Remove extra arg passed to rtx_equal_p. + + * Makefile.in (proto): Make protoize.1 and unprotoize.1. + (protoize.1, unprotoize.1): New targets. + (install_man): Install protoize.1 and unprotoize.1./ + * proto-unproto.1: New file. + + * loop.c (scan_loop): Properly set SET_SRC in movables entry for + MOVE_INSN == 1 and CONSEC > 0 case. + (force_movables): Don't look at SET_SRC when CONSEC > 0. + + * expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO + gets initialized after we build a variant type. + +Fri Nov 30 00:35:06 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * m68k.md (ashr of 16 to 24 bits): Use extl, not extw. + +Thu Nov 29 21:41:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. + + * gcc.c (add_prefix): Add new element, don't replace old first elt. + + * dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing. + +Thu Nov 29 17:50:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) + + * stmt.c (expand_end_loop): Stop looking for branch to the loop + exit when we hit a NOTE_INSN_BLOCK_{BEG,END}. + * jump.c (duplicate_loop_exit_test): Likewise. + Also, only copy line-number notes. + + * integrate.c (expand_inline_function): Call expand_expr for the + arguments before allocating maps that are based on register numbers. + + * loop.c (loop_reg_used_before_p): Accept new argument, SET, to + indicate which part of INSN is setting the relevant register. + (scan_loop): Pass new arg to loop_reg_used_before_p. + + * function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can + be replaced by MEM; use validate_change to check. + + * reload.c (find_reloads_toplev): Add missing arg to recursive call. + + * calls.c (expand_call): Correct two cases of missing mode to gen_rtx. + +Thu Nov 29 02:42:35 1990 Michael Tiemann (tiemann at cygnus.com) + + * version.c: Bump version number to 1.90.04. + + * toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any + special PIC code once we start really compiling a function (i.e., we + are not in an inline function). Inline functions cannot + meaningfully hold PIC code because there is no notion of position + independence in code that isn't really being written down. + + * Makefile.in: Don't build cplus-cadillac.o by default. Build + cplus-edsel.o instead. Until Lucid frees their programming + environment, their Cadillac will always be an Edsel to GNUsers. + + * stmt.c (fixup_gotos): Change loop to run in two passes so that + cleanups don't experience a race condition. + (expand_cleanups): Replace Nov 5 word-around with consistency check. + The same cleanups should never be run twice. + + * cplus-decl.c (lang_{init,finish}): Move these functions... + cplus-lex.c: ...to here. Also, make change to lang_init analogous + to Nov 27 change for C compiler. + + * cplus-decl.c (pushdecl): Don't warn about static/extern conflicts + if X is a TYPE_DECL. + (build_enumerator): Certain CONST_INT nodes cannot be coopted to be + the constant for enumerator. Mark them as non-shareable and don't + coopt them. + + * cplus-decl.c (lang_{init,finish}): Declare these to be void + functions to match new tree.h. + +Wed Nov 28 18:48:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when + not a paradoxical SUBREG. + +Wed Nov 28 17:15:43 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx. + +Tue Nov 27 21:54:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_external): Never write a .extern for a static + name. + + * recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM + by trying a new MEM. + +Tue Nov 27 11:54:28 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-lang.c, objc-action.c: Include input.h. + (lang_init): Call check_newline here. + * toplev.c (compile_file): Not here. + Call lang_init after setting input_filename. + + * tree.h: Declare numerous functions that the front end must provide. + + * rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES. + + * toplev.c (warn_return_type, W_options): Handle -Wreturn-type here. + * c-decl.c: Not here. + * flags.h: Declare it here, not in c-tree.h. + + * gcc.c (pexecute): Wait and retry if fork fails. + + * expr.c (do_jump): Pass all args to get_inner_reference. + (expand_assignment): Fix typo in arg to get_inner_reference. + + * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set. + +Mon Nov 26 18:28:51 1990 Michael I Bushnell (mib at churchy.ai.mit.edu) + + * cccp.c (handle_directive): Do backslash-newlines inside of + strings. + +Mon Nov 26 15:39:29 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (main): Handle -w. + (warning): Do nothing if -w. + * gcc.c (compilers): Pass -w to cpp. + + * c-decl.c (grokdeclarator): Don't discard arg types + for prototype even if traditional. + +Sun Nov 25 20:52:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * protoize.c: Undef CHAR_BIT, etc, before including limits.h. + + * reload1.c (old_asm_operands_vec, new_asm_operands_vec): + Type should point to a vector. + (Eliminate_regs): For asm_operands, copy the vector properly. + +Sun Nov 25 20:35:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) + + * jump.c (jump_optimize): Fix typo in stack push combining code. + + * reload1.c (eliminate_regs): Ensure we share operands 3 and 4 + of ASM_OPERANDS operations if they were originally shared. + Copy all rtx flags when making a new MEM. + (eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check. + +Sun Nov 25 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect. + + * gcc.c (do_spec_1): Handle %W{...}. + (default_compilers): Use %W{...} when passing -o option. + +Sat Nov 24 16:39:56 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific): + Add conditionals for __GNU_LIBRARY__. + +Thu Nov 22 13:48:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (optimize_bit_field_compare): Pass additional + arg to get_inner_reference; it gets set if something was volatile. + (decode_field_reference): New arg PVOLATILEP; passed to + get_inner_reference. + (merge_component_references): Add pointer to place to store if + something is volatile to calls to decode_field_reference; don't + do anything if it gets set (this may be very conservative). + + * stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of + loop when looking for qualified conditional exit. + + * reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we + have trouble access the register in M1, reload the reg, not subreg. + Fix typo in testing for memory. + (reload): Force reload of the operand in the above cases. + +Wed Nov 21 17:39:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (strength_reduce, combine_givs): Don't penalize + non-replaceable givs unless they are user variables; temporaries + are probably dead even though we can't prove it. + + * integrate.c (save_constants): Don't get confused by looking + inside CONST_DOUBLE_MEM. + Call recursively on what get_pool_constant returned, in case it + was itself the address of a pool constant. + (copy_for_inline, copy_rtx_and_substitute, restore_constants): + Remake CONST_DOUBLE so it gets chained in correctly and we don't use + obsolete CONST_DOUBLE_MEM values. Call recusively on operand we are + about to pass to force_const_mem; it might have been a case of a + constant value being an address of another constant. + + * loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1 + and add_val == 0. + (maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2) + cases; they have problems. + +Wed Nov 21 16:06:14 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * dwarfout.c (location_attribute): Offset for bitfields is special. + + * expr.c (get_inner_reference): New arg pvolatilep. + (expand_expr, expand_assignment): Use to set MEM_VOLATILE_P. + +Wed Nov 21 10:34:25 1990 Tom Wood (wood at dg-rtp.dg.com) + + * stor-layout.c (layout_decl): Record whether a FIELD_DECL is a + bit-field and if so its original type. + * tree.h (DECL_BIT_FIELD_TYPE): New. + * dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE. + * dwarfout.c (output_member_die, bit_offset_attribute, + bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE. + * sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE. + + * sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New + interfaces to compute the location of arguments and automatic + variables. + * dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise. + + * dbxout.c (dbxout_parms): Describe a parameter passed in + registers but living on the stack as N_PSYM rather than N_LSYM. + These are typically arg_pointer based locations. + + * out-m88k.c (m88k_debugger_offset): New function. + * tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces + SDB_AUTO_NORMALIZE_OFFSET. + * tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks. + +Tue Nov 20 23:48:57 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * dwarfout.c (dwarfout_init): Set stack depth to 1 at start. + (output_padded_null_die): New function. + (dwarfout_finalize): Use that to ensure length divisible by 4. + + * ns32k.md (addsi3): Don't use `addr' for very large displacements. + +Tue Nov 20 05:48:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (can_reverse_comparison_p): It is safe to reverse an EQ + or NE comparison, even if IEEE floating-point. + + * integrate.h (struct inline_remap): const_*_map now maps registers + in calling function, not called function. + Add fields to save values recorded from SETs. + * integrate.c: Now includes insn-config.h and real.h. + (expand_inline_function): New meaning for const_*_map. + Don't fill in constant equivalences here; now done in try_constants. + Show CALL_INSNs potentialy clobber all hard registers since we + now record equivalences for hard registers. + (try_constants): No longer need original RTL; all callers changed. + Call note_stores to kill any known equivalences for registers changed. + Record equivalences for PC, CC0, and registers set by this insn. + (subst_constants): No longer need original RTL; all callers changed. + Reflect new meaning of const_*_map. + Perform more extensive constant folding, basically a subset of + fold_rtx in cse.c; specifically, fold the result of comparison + operations and IF_THEN_ELSE operations. + Record the constant equivalences of SETs, if any. + (try_fold_condition, const_equiv, fold_out_const_cc0): Deleted. + * Makefile.in (integrate.o): Now includes insn-config.h and real.h. + +Sat Nov 17 07:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (local_alloc): Don't allocate a reg that wants a + class that has only one register; let global-alloc do it so that it + can be given a GENERAL_REG if reload needs a spill reg of that class. + + * regclass.c (regclass, reg_class_record): Count savings in loops as + being greater the same way we adjust reg_n_refs for loops in flow.c. + + * expmed.c (store_bit_field, extract_bit_field): Remove change of + Oct 16; it causes problems with long long bit fields. + + * rtlanal.c (reg_overlap_mentioned_p): If called with a constant, + return zero. If called with a MEM, return 1 iff the second arg + contains a MEM. + * reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT + is a MEM and then pass it the address of OUT. + + * cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added + to the hash table. SRC_EQV is not added to the hash table if it + is volatile or equal to DEST and similarly for SRC. DEST is not + added to the hash table unless either SRC_EQV or SRC is. + +Thu Nov 15 23:43:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (convert_for_assignment): Change warning message. + +Thu Nov 15 18:44:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (expand_end_loop): Generalize code to look for more + than one branch to the exit and include unconditional branches + to the exit; move the whole range to the end of the loop. + * jump.c (duplicate_loop_exit_test): New function. + (jump_optimize): Call it. + Don't allocate jump_chain until we have finished deleting dead code. + Leave some more room in jump_chain. + (simplejump_p): Reject if not JUMP_INSN. + (delete_insn): If simplejump_p, remove from jump chain. + * loop.c (loop_skip_over): Deleted. + (scan_loop): No longer call it. + * cse.c (predecide_loop_entry): Deleted. + (cse_basic_block): No longer call it. + +Thu Nov 15 18:00:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * math-68881.h (HUGE_VAL): Add extra braces for Sun. + + * stor-layout.c (layout_type): Don't let array have less + alignment than its mode calls for. + +Thu Nov 15 13:05:30 1990 Tom Wood (wood at dg-rtp.dg.com) + + * sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based + on dbxout_parms and dbxout_reg_parms. + +Wed Nov 14 08:48:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (emit_...): All of these now return the last insn + emitted; previously some of them returned void. + (emit_barrier_before): New function, similar to others. + * rtl.h: All emit_... functions now return an rtx; reorder so + declarations are in the same order as definitions in emit-rtl.c. + + * reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing + test when checking candidate insn for resource conflicts. + +Wed Nov 14 07:08:19 1990 Tom Wood (wood at dg-rtp.dg.com) + + * c-parse.y (pushlevel, compstmt): Place a line note at the first + token beginning a block and at the close brace ending a block. + These are the conventional locations for SDB and DWARF debugging + information. + +Tue Nov 13 18:16:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (assign_stack_local): If alignment not specified + and not BLKmode, use at least word alignment. + (assign_outer_stack_local): Likewise. + + * sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW. + + * dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE. + (AT_line, AT_file): New definitions. + + * out-i860.c (output_block_move): Move .Lm%3 down one insn. + + * c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums. + +Tue Nov 13 09:28:27 1990 Tom Wood (wood at dg-rtp.dg.com) + + * gcc.c (default_compilers): Report an error if -C is used without + -E. Pass -H to cpp. + + * sdbout.c (plain_type, plain_type1): save and output the + rightmost array dimensions. + + * syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG. + * sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it + to be T_INT if not present in . + + * sdbout.c (sdbout_toplevel_data): Use abort rather than fatal. + +Mon Nov 12 08:49:33 1990 Michael Tiemann (tiemann at cygnus.com) + + * expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if + MODE is VOIDmode. + * optabs.c (init_optab): Call `xmalloc' instead of `malloc'. + + * out-sparc.c (hard_regno_mode_ok): Change initialization of array + to match behavior of Nov 11 change for complex modes. + + * jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try + to delete references to LABEL. This is needed for machines like + SPARC which use multiple insns to get the value of LABEL into a + register. + +Mon Nov 12 16:07:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT. + +Sun Nov 11 00:27:34 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long. + * tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary. + * tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary. + * tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle + complex values in fp registers on machines where one reg holds a DF. + + * sdbout.c (sdbout_one_type): Do nothing for incomplete type. + + * c-decl.c (duplicate_decls): Warning only when redefining built-in fn. + + * c-decl.c (init_decl_processing): Use sizetype, not unsigned long, + in prototypes for memcpy and memcmp. + + * c-parse.y (component_decl): Don't read the semicolon here. + + * toplev.c (compile_file): Reverse top-level decls before output. + +Sat Nov 10 22:27:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}. + +Sat Nov 10 20:34:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c: Provide a default definition of REGISTER_MOVE_COST. + +Sat Nov 10 01:43:09 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list + of only immediate basetypes anymore. Use `get_base_distance' to + check whether a type is an immediate basetype or not. + + * stmt.c (expand_return): Don't emit a USE if VAL is a + pseudo-register. + + * integrate.c (function_cannot_inline_p): Call to strcmp for + "__builtin_va_alist" must use IDENTIFIER_POINTER not + DECL_NAME. + + * genattrtab.c (check_attr_test): Use XSTR macro instead of + XEXP macro in places where strings are used. + + * tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero + before comparing the equality of the possible lists. + + * cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking + that the TREE_TYPE is an OFFSET_TYPE. + + * cplus-typeck.c (c_expand_return): Use DECL_RESULT of + current_function_decl instead of `result' since `result' might be + set to zero. + + * cplus-decl.c (xref_tag): Fixed typo in setting + TYPE_USES_COMPLEX_INHERITANCE. + + * cplus-tree.c (assoc_value): Changed interface to take COPYING + parameter. + * cplus-{class,init,search,tree}.c All callers changed. + + * cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we + are converting to is not an OFFSET_TYPE. + +Thu Nov 8 15:26:27 1990 Craig Burley (burley at pogo.ai.mit.edu) + + * tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other + macro defs to handle new complex type stuff. Mostly guesswork; needs + checking by people who really know each machine. + * machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes. + * machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c. + * tree.c (build_complex_type): New function. + * stor-layout.c (layout_type): Handle COMPLEX_TYPE. + * expr.c (compare1, compare, move_block_to_reg, emit_push_insn): + Change uses of GET_MODE_CLASS. + * optabs.c (expand_binop, expand_twoval_binop, expand_unop): + (emit_cmp_insn): Likewise. + +Thu Nov 8 06:19:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously + uninitialized. + +Thu Nov 8 01:08:45 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong. + +Wed Nov 7 14:55:38 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gnulib2.c (L_trampoline): Put it inside a dummy function. + + * enquire.c: Renamed from hard-params.c; new vers from steven@cwi.nl. + Modified to undef CHAR_BIT, etc. if defined in stdio.h. + * Makefile.in (enquire): Targets renamed. + (enquire.o): Define NO_MEM. + +Wed Nov 7 14:18:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (invert_jump): If it is going to fail (i.e., redirect_jump + fails), don't invert the jump. + + * expr.c (expand_expr, case COND_EXPR): Don't accept a hard register + as a target if we are going to store into it before testing the + condition because that evaluation may involve a subroutine call + which might clobber it. + + * jump.c (delete_jump): reg_set_p should be called with PATTERN (insn). + (thread_jumps): Add omitted last argument to rtx_equal_for_thread_p. + + * reload.c (find_reloads): Only skip insns which set one hard register + to another if the cost of doing so is low; if not, there may not be + a single insn to do the copy and we may need a reload register. + +Wed Nov 7 00:01:18 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (component_decl_list): Allow missing semi at end. + + * loop.c (move_movables): When moving and deleting library call, + don't be confused if an insn is deleted. + +Tue Nov 6 20:49:57 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax. + + * xm-iris.h (alloca): Delete redundant definition. + * tm-iris.h (CPP_SPEC): Define variant symbols starting with _. + Define __EXTENSIONS__. + + * config.gcc (editing .gdbinit): Search current dir, not just srcdir. + +Tue Nov 6 22:24:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Generate efficient code for + A ? A : FOO and similar. + + * combine.c (subst): If we have, e.g., (lt CONST FOO), convert it + to (gt FOO CONST). + + * recog.c (comparison_operand): Use comparison_code_p. + + * genconfig.c (walk_insn_part): Add operand to indicate if PART is + going to be used to recognize an insn (as opposed to emitting rtl). + If not, ignore CC0. + (gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to + walk_insn_part calls. + + * cse.c (find_comparison_args): Correctly compute rtx_code of + comparison; if we find another comparison code inside, use it. + * loop.c (get_condition): Likewise. + + * expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop. + +Mon Nov 5 12:55:00 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * final.c (output_addr_const): Don't print parens for CONST. + + * reload1.c (choose_reload_regs): Handle case where find_equiv_reg + returns a SUBREG. Also, use variable `regno' uniformly throughout + code that finds equivalent register. + + * gnulib2.c (__floatdisf, __fixunssfsi): New functions. + (__fixsfdi, __fixunssfdi): New functions. + * gnulib.c (__floatsisf, __fixsfsi): New functions. + +Mon Nov 5 06:37:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g., + (A & 2) == 2 to (A & 2) != 0. This eliminates the need for these + patterns in MD files. + Detect more general cases of comparing something with itself. + +Mon Nov 5 00:09:55 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stmt.c (expand_cleanups): Don't run any cleanup twice. + +Sun Nov 4 23:49:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (convert_move): Use emit_no_conflict_block when converting + SImode to DImode. + If have slt insn, emit a compare insn; we must not have a use of + cc0 without a set; normally, the compare will be deleted as + redundant in final.c. + Use shift rather than clear/test/negate for high-order word when + doing sign extension. + + * optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT + notes on the trailing copy insn; nobody looks there. + + * combine.c (try_combine): Don't combine a reg-reg copy if the + destination is used in a REG_NO_CONFLICT note. + + * reload.c (find_equiv_reg): Use true_regnum to support SUBREGs + as well as REGs. + +Sun Nov 4 12:55:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * i386.md (extend*): Take out last change. + Unix assembler rejects movsx... + + * expr.c (expand_expr): Special case for ignored volatile + failed to return. + +Sat Nov 3 14:42:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a + pessimization. + +Fri Nov 2 01:51:31 1990 Michael Tiemann (tiemann at cygnus.com) + + * stmt.c (expand_return): Don't emit a USE if VAL is a + pseudo-register. + +Fri Nov 2 15:30:48 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gnulib2.c (__builtin_saveregs): Add version for i860. + + * out-i860.c (output_block_move): Rearrange the copy loop. + Now uses two labels and a more complicated lead-in. + +Fri Nov 2 14:17:24 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (extendsidi2): New define_expand. + + * out-m88k.c: Converted various constructs to use conventinal + formatting. + + * m88k.md (ext pattern): Must have parens. + * m88k.md (mul/div patterns): Added better documentation. Removed + unfounded restriction on immediate values. + * m88k.md (increment and test peephole): Don't use %L. + + * out-m88k.c (m88k_layout_frame): Must allocate space for the + addressing base register (-mpic). + * out-m88k.c (output_tdesc): Use version 2 tdesc with PIC. + + * tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others. + * tm-m88k.h: Fixes for dwarf. + * tm-m88ksvr4.h: Dwarf changes. + * xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments. + +Fri Nov 2 12:30:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (comparison_dominates_p): Return 1 if codes are the same. + (thread_jumps): Use get_label_after. + + * a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE. + (comparisons): Fix typo in define_split for floating-point NE. + + * reorg.c (fill_slots_from_thread): Don't mark as annulled if no + delay list. + + * loop.c: Allow use of any register to store comparison results. + (loop_skip_over): Don't treat comparison specially; copy all insns + preceeding the jump. + (check_for_endtest, other_reg_use_p): Deleted. + (can_eliminate_biv_p, eliminate_biv): Deleted; code merged and + placed into new maybe_eliminate_p_1. + (may_eliminate_biv, may_eliminate_biv_1): New functions; recursively + look at all rtx to see if every occurrence of a biv can be + eliminated. + (check_eliminate_biv): Deleted; callers changed to call + may_eliminate_biv. + (get_condition): Rework to look into previous insns to find insns + that set the first operand of comparison insns. + +Thu Nov 1 22:07:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (fold_rtx, case COMPARE): Only convert compare to test if + HAVE_cc0 is defined. + * combine.c (subst): Copy COMPARE case from fold_rtx. + Simplify things like (ne (eq FOO BAR) (const_int 0)). + +Thu Nov 1 18:06:56 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * math-68881.h (HUGE_VAL): Alternate definition for Suns. + + * config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4. + + * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix. + (CPP_SPEC): New macro. + (LIB_SPEC): Handle -shlib. + + * c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp + an unsigned long, to be like size_t. + + * Makefile.in (hard-params): Depend on gnulib2, not gnulib. + +Wed Oct 31 22:12:33 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * config.gcc (ultrix): New alternative. + + * i386.md (extend*): Change opcode to movsx. Was movs. + +Wed Oct 31 09:41:27 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md: Deleted an old pattern for subtracting 0. + * m88k.md: Deleted patterns for aligned bit-field insns. + * m88k.md: Changed define_expand to define_insn for mulsi3 and + umulsi3. + * m88k.md: Converted various constructs to use conventional + formatting. + * m88k.md (mak patterns): Fixed transcription errors. + +Wed Oct 31 00:05:54 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (init_decl_processing): Predefine the ordinary names + of alloca, abs, memcpy, etc. + + * c-decl.c (duplicate_decls): Allow redefining built-in as static, + but optionally warn. + +Tue Oct 30 14:39:17 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'. + * tm-vms.h (DEFAULT_MAIN_RETURN): Define this. + + * c-parse.y (yylex): Base is not 8 for just `0'. + + * cccp.c (do_define): Invert test of compare_defs. + + * cccp.c (make_definition): Convert newline to newline-newline. + + * Makefile.in (hard-params): Depend on gnulib. + + * m88k.md (divsi3): Delete declarations of gen_... functions. + +Tue Oct 30 14:26:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c: Rework handling of comparisons to generalize better to + machines that use registers to hold condition code information. + (prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0. + (find_comparison_args): New function. + (fold_rtx): Folded value of cc0 is the value previously stored into it. + Rework handling of comparisons: use find_comparison_args to see what + is being compared. If they are constants, compute the result of the + comparison. If not, see if the two operands are equivalent (only for + non FP or non-IEEE FP). Then see if we have already seen a comparison + involving these operands that lets us give a value to this comparison. + True comparisons return STORE_FLAG_VALUE, not 1. + (fold_cc0): Deleted. + (predecide_loop_entry): Call cse_insn on a copy of each insn at the + loop test to propagate the values of items at the start of the loop. + Then use fold_rtx to see if we know the result of the jump. + (record_jump_equiv): Use new function find_comparison_args. + (cse_insn): Just record value of CC0 if set; don't call fold_cc0. + Don't modify PREV_INSN (insn) if INSN is a copy. + (cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE. + + * jump.c (comparison_code_p, comparison_dominates_p): New functions. + (thread_jumps): Use comparison_dominates_p. + Remove debugging code. + * reorg.c (condition_dominates_p): Use new function + comparison_dominates_p. + + * emit-rtl.c (next_cc0_user): Don't get confused by being call with a + copy of an insn; use INSN_UID to check for an insn in a delay slot. + + * rtl.c (reg_note_name): Add name for new REG_LABEL note. + + * emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN. + +Tue Oct 30 09:26:15 1990 Tom Wood (wood at dg-rtp.dg.com) + + * Update what strings in files edited so far. + * tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING + and VERSION_INFO to more appropriately identify the compiler. + + * tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%' + is encountered. + * out-m88k.c (print_operand): Add a tab to %L output. Delete + unused cases. + + * m88k.md: Rework the movstrsi pattern and provide call_block_move + and call_block_move_loop to support expand_block_move. + * out-m88k.c: Rework the block move functions. + * make-m88k, make-m88kdgux: Eliminate movstr.h. + + * m88k.md, out-m88k.c: Eliminate assembler comments. + + * m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings + about out of range shifts. + + * tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM. + +Mon Oct 29 18:06:54 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * final.c (final_end_function): Handle dwarf output. + (final_scan_insn): Likewise. + (output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE. + * toplev.c (rest_of_decl_compilation): Likewise. + (rest_of_compilation, main): Likewise. + * varasm.c (assemble_variable): Likewise. + * flags.h (enum debugger): Define DWARF_DEBUG. + + * cccp.c (do_define): Rewrite criterion for warning. + Don't warn if -D redefining symbol with constant numeric value. + + * toplev.c (output_file_directive): New function. + * sdbout.c (sdbout_filename): Deleted. + * tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h, + tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that. + + * c-decl.c (named_labels): No longer static. + (pushlevel): Clear named_labels. + (poplevel): Don't clear it here. + +Mon Oct 29 13:32:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * Makefile.in: Update dependencies for various files, mostly cplus-* + files. + + * rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and + CALL_INSN. + * rtl.h: Add REG_LABEL register note. For INSN and CALL_INSN, the + presence of this register note has the same meaning that a non-NULL + JUMP_LABEL would have with the Sep 26 change. + * jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of + JUMP_INSNs only. + (mark_jump_label): If INSN is an INSN or a CALL_INSN, add a + REG_LABEL note if a LABEL appears (and no such note already exists). + ??? Once recorded, this information appears never to be used. + + * jump.c (delete_jump): The deletion of INSN must take place when + INSN is a simple jump. Also, don't try to optimize if we come + across an insn with the reorg-generated pattern (USE (INSN ...)). + + * cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping + and undumping the compiler. + + * Merge cplus diffs from Kenner. + * cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct. + * cplus-typeck.c (build_conditional_expr): Ditto in three places. + * cplus-lex.c (yylex,do_pending_inlines): Add conditionals for + _IBMR2. This hair will disappear when pcccp support is merged, but + needed for now. + * cplus-tree.h: Conditionalize use of non-int bitfield types on + ONLY_INT_FIELDS. Also, remove duplication declarations of + get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration + of build_decl_list. + +Mon Oct 29 11:45:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * fixincludes: Fix missing semi in rusers.h. + +Mon Oct 29 07:07:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (mark_used_regs): When converting "...*p...; q = p + size" + to "q = p, ...*q..., q = q + size", show that Q is needed after INSN. + + * romp.md (negdi): Directly generate assembly code rather than + converting this into a MINUS. + + * fold-const.c (fold, case COND_EXPR): Add missing condition in test + for (A ? 0 : A). + +Sun Oct 28 15:01:19 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * flow.c (find_basic_blocks): An indirect jump can go + to any label whose address is used as data. + + * m68k.md (zero-extend QI): Use gen_rtx, not change_address. + + * Makefile.in (USER_H): List va-*.h explicitly. + (toplev.o): Depend on RTL_H. + (stamp-*): Depend on move-if-change. + (install-headers): Depend on various header files. + (install-man): Depend on gcc.1. + (gcc.o): Depend on gvarargs.h and obstack.h. + + * Makefile.in: Make sure every `if' has an `else'. + + * c-typeck.c (build_binary_op_nodefault): Prevent warning for + variable shift count. + + * i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem. + +Sun Oct 28 09:39:14 1990 Michael Tiemann (tiemann at cygnus.com) + + * jump.c (delete_jump): The deletion of INSN must take place when + INSN is a simple jump. Also, don't try to optimize if we come + across an insn with the reorg-generated pattern (USE (INSN ...)). + + * sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take + advantage of new 2.0 optimization capabilities. + * old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of + the above files before the rewrite. They may be interesting for + measuring performance of old vs. new machine description idioms. + +Sun Oct 28 00:22:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (scan_loop): Don't think that a branch to an end-test of + a containing look is actually the branch to the end-test of the + outer loop. + + * reload.c (indirect_ok): Deleted. + (find_reloads): Accept new arg IND_LEVELS instead of old IND_OK; + pass this to find_reloads_address and find_reloads_toplev. + (find_reloads_toplev): Accept IND_LEVELS and pass to + find_reloads_address. + (find_reloads_address): Accept IND_LEVELS and pass it on to + find_reloads_address_1. + When calling ourself recursively for a MEM as an address, show + one indirect level has been used. + (find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves + in recursive calls and to find_reloads_address. + * reload1.c (spill_indirect_levels): New var; used to be + spill_indirect_ok. + (reload): Compute number of levels of indirection and set it into + spill_indirect_levels. + (reload, reload_as_needed): Pass spill_indirect_levels not + spill_indirect_ok. + + * reload.c (find_reloads): Make similar change to "V" as "O". + + * reload1.c (eliminate_regs): For binary operations, don't call + recursively on second arg if null (for EXPR_LIST). + (eliminate_regs_in_insn): Perform register elmination in the + REG_NOTES of an insn when we are doing it for the last time. + + * vax.md (call_value_pop): Use correct operand number for number + of bytes popped. + + * tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if + register allocation hasn't been done yet. + + * function.c (init_function_start): Initialize reg_renumber to zero; + it is checked in rtx_renumbered_equal_p. + + * loop.c (loop_optimize): Ensure we assign a new LUID to all + special notes, including NOTE_INSN_FUNCTION_BEG (0). + +Sat Oct 27 12:22:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-a29k.c (print_operand, output_prolog): Don't try to fill delay + slots with parts of epilogue or prologue unless -O -fdelayed-branch. + + * tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8. + + * reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos; + they must not have gotten hard registers. + +Fri Oct 26 11:30:28 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c (main): Set machine_suffix before reading specs file. + + * c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts. + + * stor-layout.c (layout_record): + BITFIELD_NBYTES_LIMITED affects bitfields only. + + * loop.c (note_addr_stored): Don't assume PLUS in address is aggregate. + +Fri Oct 26 00:46:09 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-tree.h: Declare `build_type_conversion' once instead of + three times. + + * loop.c (loop_skip_over): Handle machines without cc0. + (labels_in_range_p): Fixed typo where this function returned 0 when + it meant to return 1. + (check_for_endtest): New function. Returns non-zero when + argument is a simple conditional test insn (suitable for being the + endtest of a loop). + (strength_reduce): Use `check_for_endtest' to identify the endtest. + Also fixed some typos in comments. + (can_eliminate_biv): Use `check_for_endtest' here, too. + (get_condition): Generalized to handle machines without cc0. Now + THIS_CC_RTX is the value of the cc rtx. + + * integrate.c (expand_inline_function): Conditionalize away + cc0-specific code with HAVE_cc0. + (try_constants): Add appropriate declaration for ORIG. + (try_fold_condition): Generalized to work for non-cc0 condition + values. + + * cplus-type2.c (digest_init): Add missing declaration of FIELD. + * rtl.h: Add missing declaration of plus_constant_for_output. + * jump.c (can_reverse_comparison): Fixed typo. + (delete_jump): Made to work without cc0_rtx. + +Fri Oct 26 00:01:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0. + + * reload.c (find_reloads): For the `o' constraint, if IND_OK is + true, use offsettable_memref_p instead of the nonstrict version. + + * jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to + delete previous insn that sets a condition code register, because it + might not be dead. Rework to look at all registers dying in this insn + and delete the first previous insn that sets any such register if that + is all it does. + + * jump.c (jump_optimize): Remove extraneous call to next_active_insn + in optimization of "if (...) x = 1; else ...; if (x) ...". + + * cse.c (predecide_loop_entry): Don't set cc_value to null and then + stick it in the rtl. + + * rtlanal.c (find_next_ref): Deleted from here. + * explow.c: Include hard-reg-set.h for find_next_ref. + (find_next_ref): Moved to here. + * Makefile.in (explow.o): Includes hard-reg-set.h. + +Thu Oct 25 21:37:15 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * va-mips.h (va_list): Put __ in member names. + (va_dcl): Rename _va_alist to __va1_alist. + * va-i860.h (__va_struct): Put __ in member names. + * gvarargs.h, va-*.h: (__va_ellipsis): New macro. + (va_dcl): Use that. + + * c-typeck.c (convert_for_assignment): For functions, reverse the + usual criterion for warning about const vs non-const. Volatile also. + + * m88k.md, tm-m88k.h, out-m88k.c: Rewrites by wood@dg-rtp.dg.com. + * tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files. + * xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files. + * make-m88k, make-m88kdgux: New files. + * config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives. + + * gvarargs.h, gstdarg.h: Include alternate file for m88k. + + * expr.c (expand_expr): For ARRAY_REF, preserve const and volatile. + + * expr.c (expand_builtin): Handle strcmp and memcmp with function calls + if can't be open coded. + + * function.c (expand_function_end): Round trampoline addr to init. + (round_trampoline_addr): Fix braino in alignment. + +Thu Oct 25 14:54:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c: Now includes insn-config.h. + (jump_optimize): inequality_comparisons_p takes only one operand again. + (can_reverse_comparison_p): Handle case where a register is used + for the condition code; if we can't easily find the COMPARE that + was used to set the register, say we can't reverse the comparison. + * Makefile.in (jump.o): Now includes insn-config.h. + + * jump.c (jump_optimize): Put back change removed on Oct 21st; + emit_store_flag has now been updated. + + * rtlanal.c (inequality_comparisons_p): Reject any ordered + comparison; we need not just reject when comparing against + cc0_rtx. + * recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p + again has only one operand. + * genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21. + + * genconfig.c (have_cc0_flag): New variable. + (walk_insn_part): Set it when we see CC0. + (main): Write #define HAVE_cc0 when it is set. + * flow.c: Now includes insn-config.h. + * Makefile.in (flow.o): Likewise. + + * combine.c (subst): If X and FROM are the same register number, + but in different modes, force the combine not to be done. + Add missing initialization of undobuf.storage. + +Thu Oct 25 11:34:35 1990 Michael Tiemann (tiemann at cygnus.com) + + * sched.c (new_sometimes_live): Protect this function in case it is + called with (OFFSET,BIT) that evaluates to >= MAX_REGNO. + + * jump.c (sets_cc0_p): Conditionalized to abort if called when + machine does not support cc0. + + * rtlanal.c (reg_set_p): Now non-static. + * rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately. + * rtlanal.c (find_next_ref): New function. Returns the insn that + next references REG after INSN, or 0 if REG is clobbered before next + referenced or it cannot easily find a reference to REG. + + * recog.c (next_insn_tests_no_inequality): Conditionalized on + HAVE_cc0. + + * rtlanal.c (inequality_comparisons_p): Takes new argument + THIS_CC0_RTX which is the rtl for the condition code value we are + concerned about testing. All callers changed. + + * flow.c (propagate_block,mark_used_regs): Conditionalize + specialized cc0 handling only if HAVE_cc0 is defined. + + * genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined, + save space by using REG_CC0_RTX instead of allocating a new + (REG, mode, CC0_REGNUM) rtx if the mode is SImode. + + * final.c (output_addr_const): Handle PC for P.I.C. code generation. + Also, put parens around CONST expressions so that precedence can be + maintained. + * final.c (final_scan_insn): Don't look for redunant compares + except when HAVE_cc0 is defined. + Also, use `find_cc' to locate the rtx functioning as the + condition code register in order to perform appropriate calls + to `alter_cond'. + + * expr.c (expand_expr): Supply missing arg in calls to `store_expr'. + + * expmed.c (emit_store_flag): New argument COMPARISON is the + comparison operation whose result we store. + + * recog.c (offsettable_address_p,adj_offsettable_operand): Use + `plus_constant_for_output' instead of `plus_constant' since we + are testing conditions which rely on being able to add small + offsets to e.g. LO_SUM operands. + * explow.c (plus_constant): No special handling for LO_SUM. It is + not valid to add a constant to a term with LO_SUM, since the + constant may need to be added to the high bits that form the sum, + and those high bits are not readily available. + * explow.c (plus_constant_for_output): Same as `plus_constant' + except that we do allow adding constants to LO_SUM terms. This + function works only in special cases such as for + `adj_offsettable_operand' and `offsettable_address_p'. + + * emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but + is a register instead of a special form. reg_cc0_rtx should + be used when representing the condition code register on a + machine where condition codes are only set if explicitly set. + For machines which allow arbitrary registers to be used as + condition code registers (such as the MIPS and 88k), normal + pseudo registers should be used instead. + * emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized + on HAVE_cc0. + * emit-rtl.c (find_cc): New function. Given INSN, returns + the rtx of what functions as the condition code register for + INSN. On machines which use cc0_rtx, this is always cc0_rtx. + On machines which have a dedicated register for cc0, this is + that register. On machines which allocate pseudos for holding + condition codes, this is the pseudo found in a REG_CC0 note. + Otherwise, this function returns 0. + * emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if + CC0_REGNUM is defined. + + * cse.c (make_regs_equiv): Don't consider making a reg + equivalent to another reg whose class is NO_REGS. + * cse.c (canon_reg): Don't canonicalize a register to + one whose class is NO_REGS. + * cse.c (fold_rtx): Conditionalize code for handling cc0_rtx + with HAVE_cc0. + * cse.c (predecide_loop_entry): Generalize code to use either + a register or cc0_rtx. + * cse.c (cse_insn): Conditionalize code for handling cc0_rtx + with HAVE_cc0. + + * combine.c (combine_instructions,try_combine,subst): + Conditionalize code handling cc0_rtx with HAVE_cc0. + * combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not + defined. + * combine.c (try_distrib): Add break at end of switch cases. It is + dangerous to leave the last cases of a switch statement to fall + through since new cases added after will get fallen into. + + * recog.c (validate_change): Always succeed for an asm insn, + since recog always fails to recognize asm insns. This is + needed for virtual register instantiation in asm insns. + + * cse.c (cse_main): When following jumps, notice whether a + particular basic block causes CSE_JUMPS_ALTERED to become set. When + this happens, repeat the scan. + * cse.c (refers_to_mem_p): Changed parameter name REG to BASE, + which is more accurate. Also, taught it how to cope with + LO_SUM rtl constructs. + +Wed Oct 24 15:36:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (store_one_arg): Accept additional arg, FNDECL. + Don't save argument area if it is within the REG_PARM_STACK_SPACE + area, but mark the area in use. + (expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE, + treat the stack area for the registers as be clobbered by the called + routine (e.g., if it was compiled without -O) and save and restore + it if it was previously used for arguments in a similar manner to + the remainder of the argument area (done by store_one_arg). + + * calls.c (expand_call): Support new description macro, + STACK_PARMS_IN_REG_PARM_AREA. + * function.c (assign_parms): Likewise. + +Wed Oct 24 12:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (build_array_ref): Use main variant for value type. + + * genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT + cause aux-output.c not to be included. + Makefile.in (aux-output2.c): Copy aux-output.c and then compile it. + + * reload.c (subst_reg_equivs): Treat HIGH like other constants. + + * reload.c (push_reload): When testing hard reg for validity, + test subsequent regs only against class, not for HARD_REGNO_MODE_OK. + +Tue Oct 23 22:49:33 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (collect_expansion): Skip ## at start after the error. + + * gcc.c (default_compilers): Handle - as suffix. + (main): Make that a special case; it matches only exactly `-'. + +Tue Oct 23 22:40:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo + in addition to "d" in first alternative. + + * reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation. + +Tue Oct 23 20:35:13 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * m68k.md (zero-extend QI): When pushing, store value at 1(sp). + +Mon Oct 22 12:27:08 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (rescan): In the loop that handles numbers, discard \newline. + Also make `..' terminate a preprocessing number. + + * Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'. + + * gcc.c (default_compilers): Give __GNUC__ value 2. + Don't define it for .S files. + +Mon Oct 22 07:33:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_indirect_jump): New function; now checks predicate + of indirect_jump. + * stmt.c (expand_computed_goto, expand_goto): Use new function instead + of directly emitting indirect jump. + + * flow.c (mark_set_1): Make LOG_LINKS for hard registers. + * combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which + considers things equal if they are the identical RTX or the same + register with the same mode; use to see if something changed and + if we have a match. + + * cccp.c (S_ISREG): Use argument instead of global. + (main): Correct sense of S_ISREG usage. + (check_precompiled): Use S_ISREG. + + * flow.c (mark_used_regs): Don't allow reg_next_use to point to + a NOTE; either point it to replacement insn or invalidate it. + +Mon Oct 22 00:13:12 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (xdecls): No warning unless -pedantic. + +Sun Oct 21 17:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c. + + * jump.c (jump_optimize): Remove code that depends on changes to + emit_store_flag that haven't been made yet. + + * expmed.c (extract_bit_field): Correctly check for bitfield + completely filling a mode. + + * out-romp.c (output_epilogue): Correctly write number of words of + arguments into trace table. + + * calls.c (store_one_arg): Fix error in change of Oct 19th. + + * reorg.c (mark_target_live_regs): Revert back to old behavior + of scanning all insns, even those in delay slots. + (fill_simple_delay_slots): Need only call update_block if we move + an insn across a label. + + * Makefile.in (LIBFUNCS): Use consistent naming convention for + comparison routines; gnulib.c was always correct. + + * function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when + we are called for the second time. + + * integrate.c (initialize_for_inline): Don't make a new return label + here; the maximum label number has already been computed. + (save_for_inline_copying, save_for_inline_no_copy): Do it here instead. + + * reload.c (find_reloads_address): For indirect address where the + underlying address is also invalid, ensure that we substitute into + the MEM that we will use. + +Sun Oct 21 14:12:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload.c (find_equiv_regs): Reject reg that overlaps goal. + + * expmed.c (extract_bit_field): For big fields, make sure + value really goes in the target. + + * expr.c (expand_builtin): Delete __builtin_varargs. + (EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs. + + * calls.c (expand_call): No "can't inline" warning if -fno-inline. + + * stddef.h: Add missing #endif. + +Sat Oct 20 14:33:14 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (round_trampoline_addr): New function. + (trampoline_address): Use that. + +Fri Oct 19 15:13:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (store_one_arg): Don't mark stack area used until after + we have written into it; if we do it before, the restore might + clobber a function result being put into that stack area. + + * objc-actions.c (print_lang_statistics): Add empty function. + + * recog.c (inequality_comparisons_p): Deleted from here. + * rtlanal.c (inequality_comparisons_p): Moved to here; not static. + + * a29k.md (extendhisi2): Fix typo in define_split. + + * Makefile.in (integrate.o): Includes integrate.h. + (reorg.o): Includes insn-flags.h. + +Fri Oct 19 14:49:26 1990 Michael Tiemann (tiemann at cygnus.com) + + * sdbout.c (sdbout_symbol): If a variable belongs to an inline + function, the decl's rtl may not be rewritten by alter_reg. So if + we have a variable allocated to a pseudo, just get the hard register + number from `reg_renumber'. ?? But I thought that COFF was so + losing that it was decided one could not represent debug info for + inline functions in COFF. + +Fri Oct 19 13:21:25 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp. + +Fri Oct 19 00:15:21 1990 Michael Tiemann (tiemann at cygnus.com) + + * version.c: Bumped to 1.90.03. + + * tree.c: Added facility for gathering statistics on the number of + tree nodes allocated and the size in bytes they occupy. The + statistics are by tree_node_kind, which is almost like using the + tree code letter, but has more resolution for dealing with different + kinds of `x' nodes. The facility is enabled by compiling the + compiler with -DGATHER_STATISTICS and using the -fstats flag. + + * expr.c (do_tablejump): Emit a BARRIER after the jump that performs + the tablejump. + + * cplus-typeck.c (c_expand_return): Rewritten so that the function + value return register is not used except as a target of the function + return value. + + * cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P + controls whether this functino should build its result with a + cleanup or not. All callers changed. + + * cplus-lex.c: File updated to latest changes to c-parse.y's lexical + analyzer. + + * cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE + is used to control whether to output extra gotos or not. When + nonzero, the compiler can avoid writing out the extra gotos that are + otherwise needed to avoid warning messages. + + * cplus-decl2.c (flag_short_double): Add support for this option. + + * cplus-decl.c (finish_function): Always cause returns to jump to + the return label. This allows -Wreturn to give meaningful error + messages. + + * jump.c (invert_exp): Make this non-static. + (jump_optimize): Reorganization and simplification of main inner + loop. Comments added explaining what the optimizers are looking + for. New optimization added that optimizes for consecutive testing + of an inequality test followed by an equality test (or vice-versa). + Changes made to accommodate reorg.c on Sparc. Code for + cross-jumping return statements was previously dead in this + function; as a result of the reorganization, it is now live. + (find_cross_jump): Added temporary variable PREV1 to hold return + value of `prev_nonnote_insn' instead of calling the function 3 times + in a row. Also changed so that USE or CLOBBERS are not cross-jumped + unless some real insns are also cross-jumped. This helps reorg. + (redirect_jump): Fixed a return that returned no value so that it + returns 1. + (rtx_renumbered_equal_p): Test that reg_renumber is nonzero before + using it. We may want to call this function earlier than by the + time that array has been initialized. + + * integrate.c (save_for_inline_{copying,nocopy}): New functions to + replace `save_for_inline'. save_for_inline_copying saves the rtl + for inline functions by copying the rtl to the + maybepermanent_obstack. It is called when the rtl of the current + function is going to be compiled immediately. + save_for_inline_nocopy takes advantage of the fact that inline + function rtl is already allocated to the maybepermanent_obstack, and + need therefore not be copied if it's not going to be modified by the + compiler (such as by `rest_of_compilation'). + ({initialize_for,finish}_inline): New helper routines for + save_for_inline_... functions. + (note_modified_parmregs): Function called by `mark_stores' to note + whether parameters are assigned to in the body of an inline + function. + New interface, integrate.h, provides declarations for functions used + by other routines that might want to copy chunks of rtl. + ({save,try}_constants): Now global (for integrate.h). + (mark_stores): Ditto. + (try_fold_condition): Ditto. + + * dbxout.c (dbxout_symbol): If a variable belongs to an inline + function, the decl's rtl may not be rewritten by alter_reg. So if + we have a variable allocated to a pseudo, just get the hard register + number from `reg_renumber'. + + * varasm.c (output_const_pool): No longer static. + (assemble_variable): Do output debugging information for global + register variables. GDB does the right thing for global register + variables. + + * toplev.c: New flag `warn_inline' for warning when a function + declared inline was not in fact inlined. Also, new flag + `flag_no_inline' which disables function inlining, but retains + other properties of inline functions (such as lazy compilation + and write-only-if-needed). + * toplev.c (compile_file): Changed logic for inline function + handling to work with `warn_inline' and `flag_no_inline'. + Also modified to call `save_for_inline_nocopy' when insns are to be + saved but not immediately compiled. + + * function.c (instantiate_decls): If instantiating a function + which was saved for inline expansion, preserve the rtl created + by the instantiation as well. + + * flags.h (flag_no_inline): New flag; if nonzero, then no + calls are inlined, regardless of their declaration. We still + save the insns for these functions in DECL_SAVED_INSNS so that + the functions need not be written if they are never called. + + * calls.c (expand_call): If `flag_no_inline' is set, don't + inline the call, regardless of whether it was declared inline + or not. + +Thu Oct 18 13:10:26 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * rtl.def (CODE_LABEL): Add new string field. + * rtl.h (LABEL_NAME): Define macro for access. + * emit-rtl.c (gen_label_rtx): Initialize it to 0. + * stmt.c (expand_label): Store proper name of label. + * final.c (final_scan_insn): Call sdbout_label. + + * tree.h (built_in_function): Add BUILT_IN_VARARGS. + * c-decl.c (init_decl_processing): Declare __builtin_varargs. + * expr.c (expand_builtin): Generate code for it. + Uses new macro EXPAND_BUILTIN_VARARGS. + + * sdbout.c (SDB_IS_FAKE): Macro deleted. + (MAKE_LINE_SAFE): New macro. + (sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it. + (sdbout_one_type): Delete spurious second arg in all callers. + (sdbout_types, sdbout_end_function): + Use sdbout_dequeue_anonymous_types. + (sdbout_label): New function. + + * expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY. + + * gvarargs.h, va-*.h (va_dcl): + Add ellipsis so current_function_varargs is set. + + * jump.c (jump_optimize): Exit push-optimize loop at end of insns. + +Thu Oct 18 07:09:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c: Major reorganization. Many special cases have been moved + into more general code and an overall restructuring has been done. + Numerous bugs have been fixed. Highlights: + (dbr_schedule): First make list of all insns needing filling. Then + iterate for two passes. In each pass, try two methods of filling + delay slots, then do some canonicalizations, which may create more + insns to fill. + (fill_simple_delay_slots): Now uses list of insns that need filling, + rather than making such a list. + Enhance code that finds insns when code paths merge to allow multiple + uses of the label as long as all uses are in the skipped code. + (struct resource): Notice volatile memrefs. + (stop_search_p): Allow option to continue when label is reached. + (find_end_label, make_return_insns): New functions; when we have a + filled branch that is really a RETURN, first convert it to a jump + to a return label and then later see if the insns in the delay slots + are also valid for a RETURN. + (mostly_true_jump): Test for branch to loop beginning rather than + branch at end of loop. Also, conditional return insns predict false. + (own_thread_p): New function to replace fall_through_to_p. + (try_merge_delay_insns): Only support merging insns already in an + insns delay list. + (get_branch_condition, condition_dominates_p): New functions. + (steal_delay_list_from_{target,fallthrough}): New functions to + replace steal_delay_list. + (redundant_insn_p): New function. + (update_block, mark_target_live_regs, dbr_schedule): When moving + an insn not at the front of the basic block to a delay slot, + leave a "ghost" USE so that we can track things livened and killed. + (fill_slots_from_thread): Eliminate use of static vars for number + of slots to fill and already filled. + Try to modify an insn that follows a register-register copy to use + the original register; this may create a delay-slot opportunity. + (try_hoist_target{,_1}): Deleted. + (relax_delay_slots): Rewritten to just perform canonicalizations + previously done elsewhere. No actual delay slot filling is done + here. Any new delay slots created will hopefully be filled in the + next pass around the loop in dbr_schedule. + + * expr.c (emit_push_insn): Don't try to compute a SUBREG of a + hard register in a non-integer mode when pushing a "partial" arg. + + * recog.c (validate_change, apply_change_group): After reload, ensure + that operands meet the constraints by calling constrain_operands. + (validate_replace_rtx_1): Consider two rtx equal if they refer to + the same register. + + * jump.c (jump_optimize): Extend change of Oct 16th to handle + the other usage of find_equiv_reg; remove invalid death notes there. + + * rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000: + New files. + + * out-a29k.c (extract_subword): Use gen_{high,low}part from + an FP CONST_DOUBLE if host and target float formats are the same + or REAL_IS_NOT_DOUBLE. + + * out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch + register unless it is used in the insn. + + * romp.md: In combined set CC0 and move, optimize case where move + is nop. + (DF moves): Fix typo in generation of `get' insn. + Don't split if input is CONST_DOUBLE because we can't easily + generate the proper constants. + (call patterns): Copy data area address via a pseudo to allow + better CSE'ing. + + * tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference + to our own data area, which is very cheap. + (ADDRESS_COST): References to the constant pool are as cheap as + register + offset, since that's what it will be. + + * emit-rtl.c (gen_{low,high}part): Can often extract word from FP + CONST_DOUBLE when host and target floating formats agree. + (add_insn_after): No longer static. + + * reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot + and now static. + (reload): If have equivalence with constant that is not a legitimate + constant operand, force it into memory and handle this as an + equivalence to memory. + * reload.h (reg_equiv_stack_loc): Deleted. + +Wed Oct 17 20:50:58 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c, cccp.c (main): Use TARGET_VERSION if -v. + + * expmed.c (extract_bit_field): Typo in last change. + + * Makefile.in (tmpgnulib): Support assembler files named *.asm. + + * gcc.c (do_spec_1): Null-terminate error message. + + * sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL. + This happens for vars from the parms of inline functions. + * dbxout.c (dbxout_symbol): Likewise. + + * genattr.c (fancy_abort): New function, as in gen*.c. + +Wed Oct 17 14:53:48 1990 Michael I. Bushnell (mib at geech.ai.mit.edu) + + * pcp.h: New file. + + * cccp.c: Support use of precompiled files + Include "pcp.h". + (no_precomp, stringlist, stringlist_tailp): New variables. + (union hashval): New field `keydef'. + (enum nodetype): New alternative `T_PCSTRING'. + (main): Support -noprecomp. + Use write_output to write output. + (rescan): Call pcstring_used for T_PCSTRING symbols. + (do_include): New local variables pcftry, pcfname, pcf, pcfbuf, + pcfbuflimit, and pcfnum. + Check for possible use of precompiled files. + (check_precompiled): New function. + (check_preconditions): New function. + (pcfinclude): New function. + (pcstring_used): New function. + (write_output): New function. + (create_definition): New function. + (do_define): Moved most of the work into create_definition. + (dump_single_macro): New function. + (dump_all_macros): Moved most of the work into dump_single_macro. + (dump_defn_1): New argument OF. + (dump_arg_n): New argument OF. + + * cccp.c: Support generation of precompiled files + (pcp_outfile, pcp_inside_if): New variables. + (struct definition): New field `predefined'. + (main): Support -pcp. + (rescan): Don't expand macros outside #if during -pcp. + (special_symbol): Error for most special symbols during #if in -pcp. + Output precondition for T_CONST and T_SPEC_DEFINED symbols. + (eval_if_expression): Set and clear pcp_inside_if. + (do_ifxdef): Output preconditions. + +Tue Oct 16 13:22:05 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS, + make it true that zero-length field affects alignment of next field. + + * rtlanal.c (get_integer_term, get_related_value): Moved from cse.c. + + * jump.c (jump_optimize): When reusing value via find_equiv_reg, + delete obsolete death note. + + * expmed.c (extract_bit_field, store_bit_field): + Handle fields wider than a word. + Restrict special case for word-sized field to aligned words. + + * expmed.c (extract_bit_field, store_bit_field): Don't let + BESTMODE be bigger than the insn can handle. + + * Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA. + + * cccp.c (handle_directive): Turn on code to handle # LINENUM, + and move initializations past the label `old_linenum'. + + * c-decl.c (grokdeclarator): If traditional, make bitfields unsigned. + (finish_struct): Don't do that here. + + * fixincludes (CTRL): Don't put quotes around a quote. + + * stddef.h (size_t): Also inhibit if _SIZE_T_. + +Mon Oct 15 13:15:30 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (grokdeclarator): Make flag_signed_bitfields work + for int and for typedefs. + +Sun Oct 14 21:28:32 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * flow.c (life_analysis): No hard regs for any pseudos live at setjmp. + + * c-decl.c (duplicate_decls): Don't suppress warning for fn defn + after implicit declaration, if fn has already been defined. + +Fri Oct 12 15:54:11 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (xdecls): Allow ellipsis after parm decls. + Call c_mark_varargs. + * c-decl.c (start_function): Clear c_function_varargs. + (c_mark_varargs): New function. Set it. + (store_parm_decls): Maybe call mark_varargs. + * function.c (init_function_start): Clear current_function_varargs. + (mark_varargs): New function. Set it. + +Thu Oct 11 13:15:36 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * genattrtab.c (fancy_abort): New function, as in gen*.c. + + * expr.c (saveregs_value): New variable. + (init_expr, save_expr_status, restore_expr_status): + Init, save, restore the variable. + (expand_builtin): Don't call __builtin_saveregs twice in one function. + + * va-*.h: Rename all structure fields to start with __. + * va-pyr.h: Rename variables also. + (va_start): Delete the unmatched {. + (va_end): Now a nop. + +Wed Oct 10 22:03:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * va-sparc.h (__va_ctl): Rename fields to start with __. + +Tue Oct 9 12:55:48 1990 Michael Meissner (meissner at osf.org) + + * Allow configuration to specify size of a wide character. + (WCHAR_TYPE_SIZE): New parameter. + (WCHAR_UNSIGNED): New parameter, says whether type is signed. + + * c-decl.c (WCHAR_TYPE_SIZE): Define if not defined. + (WCHAR_UNSIGNED): Likewise. + (wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node): + (wchar_array_type_node): New variables. + (init_decl_processing): Init them. + * c-tree.h: Make them extern. + + * c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them. + (combine_strings): Handle them. + * c-parse.y (init_lex, yylex): Likewise. + + * c-typeck.h (digest_init): Use wchar_type_node and + signed_wchar_type_node to get the base type of wide strings, rather + than using int and unsigned. + +Tue Oct 9 14:16:37 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expmed.c (extract_bit_field): Typo; section for extv used extzv. + + * c-typeck.c (digest_init): Error if union has no name field. + (process_init_constructor): For union, use first named field. + + * flow.c (propagate_block): Include NOTE at end of block in scan. + + * fixincludes: Fix missing semicolon in rstat.h. + + * cccp.c (main): Record the option names used for assertions. + Call make_assertion properly. + +Tue Oct 9 06:18:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (fold_rtx): Call find_best_addr before seeing if we know + what is located at that address. + Don't try to return the contents of an ADDR_DIFF_VEC table; we have + no simple way of representing it. + (cse_insn): Detect SRC == DEST even when DEST is not the canonicalized + form of the value represented by SRC. + + * loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL + has been set. + (struct induction): Add field MEM_MODE. + (find_mem_givs, combine_givs_p): Record mode used to access memory + when making DEST_ADDR giv and use it to test validity of + derived address. + + * jump.c (delete_jump): No longer static. + (invert_jump): Allow changing RETURNs to branches and vice versa. + Now returns success/failure indication like redirect_jump. + * rtl.h (delete_jump): Define. + + * calls.c (store_one_arg): Don't expand a `partial' arg into + arg->stack and don't set arg->value to arg->stack_slot for + such args. + Clean up by breaking out common code. + +Mon Oct 8 15:09:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * loop.c (can_eliminate_biv_p): Insist that mult_val be positive. + + * Makefile.in (insn-*): Remove semicolon from these rules. + (INSTALL_PROGRAM, INSTALL_FILE): New variables. + (install-*): Use those variables. + (mandir): Default based on manext. + +Mon Oct 8 10:57:14 1990 Michael Tiemann (tiemann at cygnus.com) + + * stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is + nonzero. + + * c-decl.c (finish_enum): Argument to floor_log2 in + calculation of negprecision was not negated. + +Mon Oct 8 06:50:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields. + +Sun Oct 7 23:33:24 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-i386v.h (STARTFILE_SPEC): Handle -p here. + (LIB_SPEC): Not here. + +Thu Oct 4 05:06:02 1990 Michael Tiemann (tiemann at cygnus.com) + + * gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just + %{O}. This permits the use of -O2, -O3, etc., with predictable + results. + + * expr.c (expand_expr): Do not build new cleanups for + TARGET_EXPRs. Their cleanups are now handled entirely by the + language-specific code that causes them to be generated. + + * function.c ({push,pop}_temp_slots): Do not change + temp_slot_level if within a sequence. GNU C++ must be able to + emit a sequence it is building anywhere at the level the sequence + was initiated. If the level is changed when building a sequence, + temporaries could be unwittingly shared. + + * cplus-tree.def: change print strings for NEW_EXPR and + CPLUS_CATCH_DECL. + + * cplus-dem.c (do_type): Support `long long' types. + + * cplus-decl.c (finish_file): No longer try to emit _init,_fini + records for GNU C++. This was supposed to help the SunOS dynamic + linker link C++ code, but it turned out not to work. + + * cplus-decl.c ({start,finish}_function): Don't emit an extra + binding contour if not in a constructor or destructor. It is not + needed, and saves writing out unneeded debugging info. + + * cplus-class.c (build_method_call): Conditionalize handling of + wrappers and operator->(); these are now only compiled if ESKIT is + #defined. + + * cplus-decl.c (define_label): Updated to treat labels in the same + new fashion that c-decl.c treats them. + + * cplus-*.c: C++ front-end files now support a generic + class-browser interface. It is up to some adventurous hacker to + implement the class browser. + + * cplus-*.c: C++ front-end files no longer #include rtl.h. + +Sun Sep 30 15:53:02 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (make_assertion): New function. + (main): Handle -A by calling make_assertion. + -A- gets rid of predefined macros and those specified earlier. + + * print-tree.c (print_node_brief): Declare i for printing REAL_CST. + + * recog.c (immediate_operand, nonmemory_operand): Don't accept + integer constants if caller wants a floating mode. + +Sat Sep 29 18:40:08 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload1.c (emit_reload_insns): Handle preserving death info + with find_equiv_reg. + + * reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P. + + * fixincludes: For link pointing outside /usr/include, + use $x rather than $dest. + + * optabs.c (expand_float, expand_fix): Use dconst1, not 1.0. + +Sat Sep 29 06:38:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (try_split): Use emit_insn_after and delete_insn to + ensure that the correct insn chain is maintained in the presence of + SEQUENCEs; be careful if the insn being split has a following BARRIER. + * jump.c (delete_insn): Correctly update insn chain when deleting + insn following or preceeding a SEQUENCE. + +Fri Sep 28 16:07:42 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix. + + * fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls. + +Thu Sep 27 14:06:37 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE. + +Wed Sep 26 00:21:23 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-mips-news.h: New file. + + * out-i860.c (output_size_for_block_move): Don't decrement. + (output_block_move): Decrement initial storing address instead. + + * c-parse.y (yylex): Always try unsigned int if `u' is written. + + * c-typeck.c (build_unary_op): Don't let &* make an lvalue. + + * c-parse.y (initlist): Use [N] rather than case N: for array index. + + * tm-seq386.h (LINK_SPEC): Define it. + + * c-parse.y (yylex): Don't try signed int for nondecimal constant + if -traditional. Improve messages for -Wtraditional. + + * stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT. + + * jump.c (jump_optimize): Scan all insns for label refs. + (mark_jump_label): Quickly ignore uninteresting rtl types. + * rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL. + + * jump.c (jump_optimize): Try combining stack adjusts with pushes. + +Mon Sep 24 07:31:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (expand_computed_goto): Emit barrier after jump. + + * expr.c (case LABEL_DECL): Return a MEM, so we can take its + address; correctly form LABEL_REF. + +Sun Sep 23 22:54:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN. + (scan_loop): Only use REG_EQUAL note under very restricted + cirsumstances. Set MOVE_INSN field in movables when appropriate. + (combine_movables): Simplify matching test now that we only have one + source field. + (move_movables): Handle MOVE_INSN movables by emitting a new move + insn in front of the loop. + Correct typo in checking for CALL_INSN. + Don't try to make a REG_EQUAL note. + (count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE. + +Sun Sep 23 14:59:21 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (S_ISREG): Define it unless overridden. + (main, finclude): Use that. + + * reload1.c (reload): If insn after a function call uses the + function value, and that reg is spilled, and the insn might + use it for reloading, add an extra need. + (reload_as_need): Detect such insns for new arg to choose_reload_regs. + (choose_reload_regs): In that case, don't choose function value reg. + + * tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH. + +Sun Sep 23 07:52:32 1990 Michael Tiemann (tiemann at cygnus.com) + + * version.c (version_string): Bumped to 1.90.02. + + * final.c (leaf_function): Variable now non-static. + * final.c (only_leaf_regs_used): Function now non-static. + * final.c (leaf_function_p): Move initialization of + `leaf_function' from here... + * toplev.c (compile_file): ...to here. We want to know the + value of `leaf_function' when we perform code reorginization. + * final.c (leaf_function_p): If profiling arcs, we cannot have + a leaf function. Also, we have to look at insns in + `epilogue_delay_list' to know that all our constraints are + satisfied. + * final.c (only_leaf_regs_used): Have to look in + `epilogue_delay_list' to know that all our constraints are + satisfied. + + * toplev.c (warning_with_file_and_line,warning): Declare third + argument V3 for warnings that require 3 `%' expressions in S. + * toplev.c (strip_off_ending): New helper function that removes + a GCC-recognized filename extension. Call this function in + GCC instead of expanding it inline in C code everywhere. + + * sched.c (schedule_block): The last basic block does not have + no live registers. Also, check that we don't copy from an + entry in `basic_block_live_at_start' that does not exist. + * sched.c (update_reg_first_use): When splitting insns, the + insn that is in REG_FIRST_USE might become a NOTE, and a new + insn become the insn that should be considered the first use. + `update_first_use' keeps REG_FIRST_USE up to date. + * sched.c (update_links): Call note_stores with + `update_first_use' when an insn splits. + +Sun Sep 23 00:05:49 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (grokdeclarator): Put var array bound in save_expr. + +Sat Sep 22 14:01:00 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tree.c (build_index_type): Don't hash variable-bound type. + + * c-decl.c (start_decl): Error here if var-size object initialized. + (grokdeclarator, finish_struct): Record types & decls + with array sizes not written as constants. + * c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros. + + * tm-aix386.h (LIB_SPEC): Different library name for -p. Always -lc. + (LINK_SPEC): Don't pass -lg or -g. + (CPP_PREDEFINES): Define _I386 and _AIX. Don't define unix. + (SDB_DEBUGGING_INFO): Define it. + (DBX_DEBUGGING_INFO): Undefine it. + (ASM_FILE_START): Output .noopt if not optimizing. + (PCC_BITFIELD_TYPE_MATTERS): Define it. + (FUNCTION_PROFILER): Add definition. + +Fri Sep 21 16:26:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.c (current_function_epilogue_list): Define this here. + * reorg.c: Not here. + +Fri Sep 21 13:11:11 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here. + +Thu Sep 20 15:29:44 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.h (struct optab): Field libfunc, an rtx, replaces lib_call. + * rtl.h (SYMBOL_REF_USED): New macro. + * optabs.c (init_optabs): Initialize that field properly. + Also initialize new variables *_libfunc. + (various functions): Use those vars; use libfunc field. + * expr.c (convert_move, emit_block_move, clear_storage): Use the vars. + (emit_push_insn, expand_assignment): Likewise. + +Thu Sep 20 13:51:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-a29k.c (current_function_epilogue_delay_slot): Renamed from + epilogue_delay_slot. + + * romp.md (movdi): Fix missing short/long qualifier on memory ref. + (SFmode/DFmode move patterns): Add explicit alternatives for + storing and loading general registers from memory; also add + DEFINE_SPLITs for these cases for DFmode. + (negsf2,negdf2): Don't use XOR if an operand is a hard FP register. + + * tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct + register numbers for FP registers. + + * output.h (current_function_epilogue_delay_list): New var. + * function.c: Include output.h and initialize new var above. + * Makefile.in (function.o): Now includes output.h. + * reorg.c (epilogue_delay_list): Renamed to + current_function_epilogue_delay_list. + + * final.c (final_scan_insn): Don't delete no-op insn if in delay slot + or if we have already pre-scanned. + + * genconfig.c (max_insns_per_split): Rename from + max_insns_per_split_flag and default to 1 instead of 0. + + * genattrtab.c (n_comma_elts): Return zero for null string. + + * sdbout.c (MIN,MAX): Add to here; required by recent changes. + + * expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF. + + * c-parse.y (ridpointers): Move definition in front of first use. + + * reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a + CALL_INSN and USE insns preceeding it. + (mark_set_resources): Likewise, for following CLOBBERs. + +Wed Sep 19 17:45:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * assert.h (printf): Don't define; should be in stdio.h. + + * rtl.h (PUT_REG_NOTE_KIND): New macro. + * sched.c (attach_deaths): Use it. + + * reorg.c (mark_referenced_resources): If we put insns to load + parameters into the delay slot of a CALL, ignore the USE insns + for those parameters. + + * function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless + its would-be operand is a SUBREG. + +Wed Sep 19 00:26:59 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * print-tree.c (print_node): Indent before printing RTL. + + * Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X + in libsubdir. + +Tue Sep 18 21:55:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (fold_rtx): For MEM with constant address, split the + address into possible base and offset; ensure constant pool + value is same mode as our reference unless we are getting a + word of a DImode CONST_INT. + Treat SYMBOL_REF and LABEL_REF as constants. + If we are getting a word at a constant offset from a jump table, + replace with the contents of that jump table entry. + (cse_insn): When folding jump to variable location (e.g., tablejump), + LABEL_REF is the cheapest of all, since the branch would be simple. + Special-case changing variable branch to normal unconditional + because the RTL may be different (e.g., the variable branch may + include a USE). + +Tue Sep 18 18:33:19 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * toplev.c (count_error): Handle warnings_are_errors. + (W_options): Handle -Werror. + +Mon Sep 17 00:02:12 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (lookup_label): Use void as type of label. + * stmt.c (label_rtx): No longer static. + * expr.c (expand_expr): Handle LABEL_DECL. + +Sun Sep 16 16:27:29 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (expand_builtin): Error for __builtin_nextarg + if function definition doesn't have `...'. + + * expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once. + for insv, use mode of operand 3 instead of SImode. Define MAXMODE. + Adjust XBITPOS along with mode of XOP0. + (extract_bit_field): Adjust XBITPOS along with mode of XOP0. + for extv and extzv, use mode of operand 3 thoroughly instead of SImode. + + * sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros. + (plain_type_1): Use those macros to distinguish int and floating types. + + * toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb + only if top_level. + + * c-parse.y (unary): Don't forget to look up the label. + + * c-typeck.c (build_conditional_expr): Don't skip arg promotion. + +Sun Sep 16 14:54:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): If we don't recognize the combined insn, + try it without any CLOBBERs. + + * final.c (final_scan_insn): Prevent CC tracking from thinking + that the CC was set by an insn in the delay slot of a CALL_INSN. + + * expmed.c (init_expmed, expand_divmod): Allow machine to have + low cost specified for divides by powers of two if it can do it by + a method that if cheaper than the normal shift/branch/adjust mechanism. + + * cse.c (fold_rtx): When putting constant last, ensure that the + resulting insn is valid. + + * objc-actions (finish_objc): Remove dup defn of gen_declaration_file. + + * objc-parse.y (ridpointers, token_buffer): Define before use. + + * reload1.c (scan_paradoxical_subregs): Declare correctly. + + * tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark + SYMBOL_REFs that are addresses of functions (really their data blocks). + (LEGITIMATE_CONSTANT_P): Data block addresses of functions are not + valid operands. + * out-romp.c (symbolic_operand): Likewise. + * romp.md (call*): emit_move_insn will now do force_const_mem + so it needn't be done explicitly. + + * out-romp.c (output_fpop): Work around yet another RT fp bug; + cannot merge output and first operand for SFmode if general reg. + + * romp.md: Add new pattern to match combination of copy and test. + Use nilo instruction to set CC. + +Fri Sep 14 07:07:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-tree.h: Define all *_type_node trees defined in c-decl.c, in the + same order as defined there. + +Fri Sep 14 08:39:17 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up + for the fact that we do not call `default_conversion' anymore. + + * function.c (instantiate_virtual_regs): If the function is inline, + we don't need to worry about making valid rtl, but we do need to + worry about instantiating all virtual registers. Otherwise we must + make the rtl valid, and we have other opportunities to eliminate the + virtual registers during the compilation. + +Thu Sep 13 16:00:05 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload.c (MATCHES): Check for different rtx's with same reg number. + + * fixincludes: Discard `.' from value of `files'. + + * c-parse.y (unary_expr): Use unary && to get address of label. + (stmt): Handle `goto *EXPRESSION;'. + * stmt.c (expand_computed_goto): New function. + + * gstdarg.h: New name for stdarg.h. + * Makefile (install-headers): Rename gstdarg.h while installing it. + + * sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM. + (plain_type): Output accumulated array dims and size. + (plain_type_1): Eliminate arg NOSIZE. Save up dims and size. + Call self rather than plain_type for pointers and functions. + (sdbout_array_type, sdbout_array_depth): Functions deleted. + +Thu Sep 13 16:12:15 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (build_method_call): Fix typo in deciding whether to + do hairy or trivial pointer conversions on `this'. + + * cplus-tree.c (layout_vbasetypes): Don't double-count space taken + up by virtual baseclasses. + +Wed Sep 12 18:14:19 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-m68k.h: Use asm_fprintf widely. + (REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): + New macros. + + * final.c (asm_fprintf): New function. + +Wed Sep 12 06:07:50 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-dbxout.c (dbxout_type): Output basetype size and offset info + in bits, not bytes. + + * cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN + bit of types used by non-extern VAR_DECLs. Set it also for types of + PARM_DECLs and return types of functions defined in the file being + compiled. + +Tue Sep 11 13:21:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * sdbout.c (plain_type_1): New argument NOSIZE. Inhibits size output. + (sdbout_array_type): Call plain_type_1 directly; set NOSIZE. + + * sdbout.c (sdbout_array_type): New argument DEPTH. + Don't output more than SDB_MAX_DIM dimensions. + (sdbout_array_depth): New function. + (plain_type_1): Start DEPTH by calling sdbout_array_depth. + + * gnulib2.c (_bb_init_func): Library member now named _bb. + + * tree.h: Add comments. + +Mon Sep 10 17:20:06 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (install): Fix typo. + + * cccp.c (macarg1): With -traditional, backslash quotes chars. + +Mon Sep 10 16:37:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps + runs after reload. + +Mon Sep 10 13:07:39 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (collect_expansion): Don't actually substitutee into a + string if ANSI; just consider warning. + + * gnulib2.c (div_qrrnd for i386): Fix typo. Rename some args. + + * sdbout.c (sdbout_array_type): New argument DEPTH. + Don't output more than SDB_MAX_DIM dimensions. + (plain_type_1): Start DEPTH at 1. + +Sun Sep 9 22:02:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-a29k.c (gen_reg_operand): Exclude SUBREG of a special + register. + + * cse.c: (fold_rtx): Get equivalent for register before seeing if + memory reference is to constant pool. + (cse_ins): Only call force_const_mem if we actually try to use + the constant (i.e., we haven't found anything cheaper). + +Sun Sep 9 21:49:18 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * ..._BIG_ENDIAN: Now expect definition to be 0 or 1. + All refs and defs changed. + + * tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION). + + * sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before + recursion, and TREE_ASM_WRITTEN after. + +Sat Sep 8 16:47:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * hard-params.c (main): Don't try to malloc all memory. + +Sat Sep 8 16:38:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (reload): Set reg_equiv_constant if the equivalence + is any constant, not just a legitimate constant operand. + + * final.c (get_attr_length, shorten_branches, final_scan_insn): + If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables + in readonly data section, even if it exists. + +Sat Sep 8 14:07:05 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive + makes when compiling with GCC since it never needs alloca.c. + + * c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned. + Controlled by -W. + + * tm-i386v4.h: New file. + +Fri Sep 7 13:10:24 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (STDC_VALUE): New macro, defaulting to 1. + (intialize_builtins): Use that. + + * m68k.md (movqi): `st' does not set cc's. + +Fri Sep 7 07:49:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genemit.c (gen_expand): Fix test for no C code. + If no C code, no MATCH_DUPs, and only one insn to write, handle + like DEFINE_INSN and return that insn rather than making a sequence. + + * emit-rtl.c (add_insn_after): If previous or next insn is a + SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or + PREV_INSN of the first, as appropriate. + (emit_insn_before, emit_jump_insn_before, emit_note_before): + Call add_insn_after. + + * stmt.c (check_for_full_enumeration_handling): If a switch whose index + is an enumerated type contains labels for every enumeration value, + make the label for the last value the default label since such a + switch can never fall through. + + * genattr.c (fatal): Declare first arg correctly. + + * combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P; + its value shouldn't matter once RTL generation is complete. + (subst): If NOT is present as an operand in commutative operation, + put it last to reduce the number of required patterns. + + * out-romp.c (output_fpops): Align to word boundary before writing + any floating-point blocks. + + * function.c (instantiate_virtual_regs_1): Fix typo in previous change. + When a MEM must be copied, use copy_rtx; the PLUS may also be shared. + +Thu Sep 6 15:19:42 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c (do_spec_1): Don't add __ to -D if __ already present. + + * c-typeck.c (convert_for_assignment): + Better warning for FCN * vs. void * + Specific warning for char * vs. unsigned char *. + +Thu Sep 6 14:52:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (find_basic_block): Return -1, not 0, if we can't find + the basic block. + (mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally. + (relax_delay_slots): Don't call optimize_skip for unconditional jump. + Only try to remove jump if it is a simple conditional or + unconditional jump (but not a tablejump or similar such). + + * cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p): + Consider (plus (reg) (const_int)) to be a fixed address if REG + is constant; old code just handled REG. + + * genrecog.c (enum routine_type): Use to distinguish two types of + routines that we write: recog and split_insns. + (make_split_sequence): Write out extern for gen_split_ function. + (break_out_subroutines, write_subroutine, write_tree, main): + Use new enum routine_type instead of passing "split" or "recog". + (write_subroutine): Write correct type for splitting functions and + return 0, not -1. + (main): Write includes before declarations of gen_split_ functions + since "rtx" is needed for them. + * rtl.h (try_split, split_insns): Added definitions. + +Wed Sep 5 16:20:07 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (includes): Use proper directory. + +Tue Sep 4 13:59:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (store_parm_decls): Let extra_warnings control + warnings about parms not declared. + + * flow.c (life_analysis): Move code to detect stack-adjust insns. + It was unreachable. + + * gnulib.c, gnulib2.c (abort): #undef in case config.h defines it. + +Mon Sep 3 17:50:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass + unnamed args in registers. + * function.c (assign_parms): Call SETUP_INCOMING_VARARGS for + stdargs as well as varargs; ensure we only call it once. + + * function.c (instantiate_virtual_regs_1): Don't assume all memory + addresses are valid for all insns. + +Sun Sep 2 22:17:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (emit_library_call): Push all stack args, then load regs. + + * c-decl.c (c_build_type_variant): For an ARRAY_TYPE, + put the qualifier into the array as well as the element. + (grokdeclarator): When a field or variable is supposed to be + a const or volatile array, make the array elements const or + volatile, but also make the field or variable so. + + * c-decl.c (grokdeclarator): Turn off the warning for const or volatile + function type when making an array. It was useless. + +Fri Aug 31 16:26:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-common.c (truthvalue_conversion): Let the + language-specific code decide how to convert EXPR + if it is not one of the special forms we recognize. + +Fri Aug 31 15:08:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gcc.c (execute): Use I instead of undefined var J if DEBUG defined. + +Fri Aug 31 14:37:36 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block. + +Thu Aug 30 21:31:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (extract_bit_field): Fix typos in computations of UNIT. + +Wed Aug 29 12:33:33 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * sdbout.c (sdbout_reg_parms): Don't advance parm twice. + +Tue Aug 28 22:49:41 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (delete_newlines): New function. + (macroexpand): Remove newlines from args used more than once. + +Tue Aug 28 22:16:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (sched.o): Add to list of files to compile. + + * c-parse.y (position_after_white_space): Declare with correct type. + + * fold-const.c (optimize_bit_field_compare): Fix typo. + + * reorg.c (split_insns): No longer need extern for this here. + + * toplev.c (sched_dump_file): Define. + (compile_file): Initialize and print sched_time and sched2_time. + + * local-alloc.c (block_alloc): Fix typo in allocation of insn_map. + + * cse.c (cse_insn): Try related value in case where CONST is seen + first and SYMBOL_REF later. + +Tue Aug 28 16:26:50 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (main): Don't modify or validate arg of -D here. + (make_definition): Do it all here. + + * function.c (assign_parms): Reenable `register' for parms. + +Tue Aug 28 07:12:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust + SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost. + + * expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode. + (expand_expr, case *_DECL): Return constant address if + EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS; + all of these cases will later call memory_address. + (expand_expr, case COMPONENT_REF): Always make recursive call with + EXPAND_SUM. + (expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and + mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand. + Check for MODE != Pmode with EXPAND_SUM here. + (expand_expr, case MINUS_EXPR): Always process X - CONST_INT as + X + (-CONST_INT)). + +Sun Aug 26 23:10:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (c_decode_option): Handle -funsigned-bitfields. + (grokdeclarator): Do the real work. + (grokfield): Pass either FIELD or BITFIELD to grokdeclarator. + + * tm-att386.h (asm_output_common): Use SIZE, not ROUNDED. + +Sat Aug 25 17:17:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (unary_expr): Turn off handling of &... + * c-decl.c (store_parm_decls): Turn off extra dummy parameter. + + * tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros. + (BSS_SECTION_ASM_OP): New macro. + (ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss. + + * combine.c (subst): Handle shift within mem, as multiplication. + +Sat Aug 25 11:43:09 1990 Michael Tiemann (tiemann at cygnus.com) + + * final.c (alter_cond): Handle CC_INVERTED. + + * conditions.h (CC_INVERTED): New flag indicating that the condition + tested leaves the falgs set opposite to the condition tested. This + is unsafe for IEEE floating point operations, but useful for integer + operations which can combine with condition-code setting operations. + + * c-parse.y (position_after_white_space): New function. Skips + all of the whitespace at the current location in the input + file, taking NEXTCHAR into account. Changed all callers of + `skip_white_space' in grammar to use this function instead. + + * genrecog.c (main): Generate code which is more easily optimized by + GCC's cse. In particular, start each recognizer with the address of + `recog_operands' in a register. + + * reload.c (combine_reloads): Can only combine reloads if the + register we find can hold the entire output reload (i.e., SFmode + register may not be suitable for combining with DFmode register). + + * optabs.c (have_sub2_insn): Fixed typo. + * combine.c (combine_instructions): Fixed typo in comment. + + * function.c (expand_function_end): Emit a barrier after a RETURN + jump. + + * Added diffs for new instruction scheduling code. + * emit-rtl.c (try_split): Moved here from reorg.c and made + public. Both instruction scheduling and delayed branch + filling now use the same code to split insns. + * flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction + scheduling before register allocation and + FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after + register allocation. + * recog.c (constrain_operands): Recognize pseudo registers as + registers for the purpose of insn constraint matching before + register allocation. Otherwise, the insn scheduler assumes + the operands will be memory, which is usually wrong (and + causes it to build bad schedules). + * sched.c (order_calls): New function. For two CALL_INSNS in + the rtl chain, we set up a constraint that the second + CALL_INSN may not be scheduled to run before the first. + (sched_analyze_*): Three kinds of dependencies (true, anti, + and output) constrain the order in which insns can be + rearranged and still preserve their execution semantics. + We now handle dependencies for pseudo and hard register usage + and for memory usage in these functions. + (launch_links): The ordering of which newly ready insns to + execute is now preserved according to their `priority' in the + insn chain, and no longer on their order in the dependency + list from which they were launched. + (schedule_block): Removed support for trying to schedule insns + taking branch delays into account. Reorg.c should be hacked + to understand which insns to pull into delay slots and which + insns to leave alone. + (schedule_block): (Re-)compute all register life information here. + No longer dependent on flow to keep `basic_block_live_at_end' + allocated. + (schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we + can compute register life information. + * rtl.c (add_dependence): New function to add and remove insn + dependencies. If an insn (I2) must execute after another + (I1), we add an INSN_LIST containing I1 to I2's LOG_LINKS. + If such an INSN_LIST is already in I2's LOG_LINKS, we don't + add a second. + (remove_dependence): Similar, but removes dependencies. May + not actually be needed. + * toplev.c (compile_file,rest_of_compilation): Added code for + dumping info about insn scheduling. + +Fri Aug 24 17:24:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Implement `aligned (INTEGER)' attribute for real. + * c-parse.y (attrib): Really record info for `aligned' attribute. + Don't warn for any integer alignment. + (attribute_list): Make a list. + (initdcl, notype_initdcl, component_declarator): Handle that info. + * c-common.c (decl_attributes): New function. + +Fri Aug 24 07:12:05 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattrtab.c (insn-config.h): This is really needed after all. + * Makefile.in (genattrab.o): Show dependency on insn-config.h. + + * local-alloc.c (block_alloc): Don't update qty_birth for a + register whose quantity is <= 0. + + * fold-const.c (decode_field_reference): Actually obtain unsigned + type where one is wanted. + (merge_component_references): Correctly test for mutually exclusive + conditions. + +Thu Aug 23 14:56:44 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (digest_initializer): No pedantic warning for string + and array of unsigned char. + + * tree.c (get_identifier): Do id_clash_len stuff if length equals that. + +Thu Aug 23 10:30:10 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT. + +Thu Aug 23 06:44:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-romp.c (romp_pushes_stack): Don't count + current_function_pretend_args_size in size of stack. + +Wed Aug 22 18:00:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files. + + * config.gcc (a29k-unix): New target. + + * calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST + specifying multiple registers to load. + (store_one_arg): Likewise; also delete handling of fully-in-register + case, which hasn't been handled here for a while. + * expr.c (emit_library_call): Our subset of calling sequence for + library routines does not include multiple registers for an arg. + +Tue Aug 21 17:44:49 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * make-cc1.com: Compile and link version.c. + + * Makefile.in (install-gnulib): Create libg.a if none already. + + * expr.c (convert_move): Handle expand_unop retval not same as target. + + * reload.c (find_reloads): For register letters, don't win if BLK. + + * sdbout.c (sdbout_toplevel_data): Fix error message. + + * protoize.c (open): Prototype deleted. + + * flow.c (mark_set_1, mark_used_regs): Update reg_first_use. + (allocate_for_life_analysis): Allocate and clear it. + * local-alloc.c (block_alloc): Calculate INSN_MAP. + Get first use of each reg from reg_first_use. + + * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++. + (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section. + (ASM_OUTPUT_EXTERNAL): Use that section. + (SELECT_SECTION): Go to that section when appropriate. + +Tue Aug 21 18:26:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (fill_simple_delay_slots): Mark anything referenced by an + insn that will be placed in a delay slot in the epilogue as being + needed at the end of the function. + + * cse.c (constant_pool_entries_found): New static var. + (cse_main): Initialize it. + (use_related_value): Correctly look for registers in hash table. + (fold_rtx): Fold constant pool entries to their constants and + set constant_pool_entries_found. + (cse_insn): If we weren't able to place a constant in an insn + and we have previously seen constant pool entries used, set up + to try the constant pool entry also. + +Mon Aug 20 12:14:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (assign_parms): Set LAST_NAMED for parm before dummy. + See August 9 change in c-parse.y. + + * gcc.c (process_command): Split -oFOO into two arguments. + + * stmt.c (expand_asm_operands): Handle COMPONENT_REF and + ARRAY_REF directly as output operands. Avoids crash if BLKmode. + + * c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h. + * input.h: Declare finput. + + * expr.c (emit_push_insn): Don't adjust for EXTRA separately + if will have to adjust the stack anyway. + + * m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits. + + * varasm.c (decode_rtx_const): Don't dereference a PLUS + subexpression of a CONST twice. + +Sun Aug 19 21:51:51 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * toplev.c (finput): Define here. + * *-parse.y (lineno, finput): Duplicate definitions deleted. + + * global-alloc.c (find_reg): Test best_reg against 0, + not first_pseudo_register. + +Sun Aug 19 17:48:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (plus_constant): If adding to constant pool constant, + return a new one. + + * genattrtab.c: Need not include insn-config.h. + +Sun Aug 19 17:23:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__. + + * Makefile.in (USE_ALLOCA): Test was backwards. + (USE_HOST_ALLOCA): Likewise. + +Sun Aug 19 09:58:16 1990 Michael Tiemann (tiemann at cygnus.com) + + * stmt.c: Fixes from 2.0 for fixup_goto incorporated here. + + * cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL + of DECL_CONTEXT (FN). TREE_EXTERNAL is not meaningful for types. + +Fri Aug 17 22:14:09 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (emit_cmp_insn): Don't abort after floating lib cmp. + +Thu Aug 16 23:16:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_variable, assemble_static_space): Don't + call data section if -fshared-data. If this section is needed, + it should be entered from elsewhere, and this is believe to be + done in all known cases. + (output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY + which writes certain constant pool entries specially; used for TOC + on RS/6000. + (assemble_external_libcall): New function. + * expr.c (emit_library_call): Call it. + + * reorg.c (mark_target_live_regs): Don't follow around infinite loops. + + * varasm.c (struct rtx_cont): Don't use enums in bit fields if + ONLY_INT_FIELDS is defined. + + * cse.c (remove): Rename to remove_from_table to avoid conflict + with `remove' defined in stdio.h. + +Thu Aug 16 22:44:35 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stmt.c: fixup_gotos must ignore blocks started after the goto. + (block_start_count): New variable, and slot in some structures. + (expand_function_start): Initialize it. + (expand_start_bindings): Increment it and store in struct nesting. + (expand_goto): Store it in struct goto_fixup. + (fixup_gotos): Compare fixup's count with block's count. + (save_stmt_status, restore_stmt_status): Handle block_start_count. + * function.h (struct function): Make slot to save it. + +Thu Aug 16 18:02:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * obtabs.c (expand_fix, expand_float): Support direct conversion + between SFmode and fixed modes by library call. + +Wed Aug 15 18:36:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cccp.c (main): Allow -M to work on .s files by checking for .s + and .S suffixes when writing dependencies. + + * reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target): + Don't need to call can_reverse_comparison_p because invert_jump is + safe for floating-point; only reverse_condition isn't. + +Wed Aug 15 15:50:36 1990 Michael Tiemann (tiemann at cygnus.com) + + * dbxout.c (dbxout_type): Skip past const and volatile qualifiers + that might appear in method names. + +Wed Aug 15 15:44:17 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (hash, is_reserved_word): Use __inline. + + * cccp.c (main): Support -dN and -dD. Support -lint. + (dump_macros): Two new alternatives. + (handle_directive): Output macro definitions if -dN or -dD. + (rescan): Check comments if -lint. + (get_lintcmd): New subroutine. + + * c-decl.c (c_decode_option): Handle -fshort-double. + (init_decl_processing): Create double_type_node accordingly. + + * c-decl.c (c_decode_option): Handle -Wno... + +Tue Aug 14 23:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (break_out_memory_refs): Don't break out reference if + constant but not legitimate constant for a machine insn. + (memory_address): Only put legitimate constants, rather than all + constants, into registers if they are used as an address. + +Tue Aug 14 14:34:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reorg.c (steal_delay_list): Can't put something in a + non-annulled delay slot that can trap. + + * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment. + + * cccp.c (do_assert, do_unassert, check_assertion): New functions. + (compare_keyword_lists, read_keyword_list, free_keyword_list): + New functions. + * cexp.y (yylex): Allow `#' as token. + Return name and length of symbol. + (keywords): New nonterminal. + (expr): Recognize # to test an assertion. + (U_CHAR, struct arglist): Data types copied from cccp.c. + (%union): New alternatives `keywords' and `name'. + +Mon Aug 13 22:26:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-romp.h (SLOW_BYTE_ACCESS): Set to 0. + + * expmed.c (store_bit_field, extract_bit_field): Use get_best_mode + to select mode to use for accessing memory when bitfield insns don't + accept memory. + + * c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted. + (merge_component_comparisons): Delete from here. + * c-tree.h (merge_component_comparisons): No longer global. + * c-convert.c (build_binary_op_nodefault): Don't try to merge component + references here; now done in fold. + * cplus-typeck.c (build_binary_op_nodefault): Likewise. + * Makefile.in (fold-const.o): Now includes flags.h. + * fold-const.c: Likewise. + (STRIP_NOPS): New macro. + (decode_field_reference, all_ones_mask): New functions. + (merge_component_references): Put rewritten version here. + This fixes bugs in the way that comparisons with non-equal + constants (!p->a && p->b) are handled and in endianness checking. + Also accepts more general comparisons, and, in particular, its + own output so more than a pair of operations can be merged. + (fold): Call it for TRUTH_{AND*,OR*}_EXPR. + + * tree.def (BIT_FIELD_REF): New tree code. + * expr.c (get_inner_reference): Support BIT_FIELD_REF. + If bitfield is a complete mode-sized unit, return that mode; if it + is a subset of bits within a mode-sized unit, return VOIDmode. + (expand_assignment): Check for BIT_FIELD_REF. + Use mode returned from get_inner_reference to see if bit field. + (store_constructor): Likewise. + (store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode + instead. All callers changed. + (expand_expr, case BIT_FIELD_REF): New case. Handled same as + COMPONENT_REF. + Use mode returned from get_inner_reference rather than DECL_BIT_FIELD. + (expand_increment): Must stabilize BIT_FIELD_REF. + (do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF. + (do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF + and some ARRAY_REFs also. + * fold-const.c (operand_equal_p): Handle BIT_FIELD_REF. + * tree.c (staticp): Rework to use switch instead of if-then-else. + Add support for BIT_FIELD_REF. + (stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF. + + * c-common.c (truthvalue_conversion): Rework to use switch rather + than if-then-else. + Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as + much as possible. + Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR, + LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR. + Call fold for COND_EXPRs that we make. + * c-convert.c (build_unary_op): invert_truthvalue can't return 0, + so don't check for it. + (invert_truthvalue): Delete from here. + (convert_to_integer, build_conditional_expr): Try to fold COND_EXPR. + * c-plus-cvt.c (convert_to_integer): Likewise. + * cplus-typeck.c (build_conditional_expr): Likewise. + (build_unary_op): invert_truthvalue can't return 0. + (invert_truthvalue): Delete from here. + * fold-const.c (invert_truthvalue): Move to here. + Don't invert floating-point test. + Look inside conversions. + Use recursive call to negate inside logical operations rather than + building a TRUTH_NOT_EXPR. + Allow only certain TREE_CODEs as operands; abort for the rest. + (fold_convert): Accept second argument that is item being + converted to ensure that NOPs have been stripped. + (operand_equal_p): Return 0 if either operand has side effects. + If both integer or real constants, check the values. + Do a more thorough test to see if two items are identical; + specifically, compare the operands of simple TREE_CODEs. + (omit_one_operand, distribute_bit_expr): New functions. + (make_bit_field_ref, optimize_bit_field_compare): Likewise. + (fold): Remove LOSES; now done explicitly or by calling + omit_one_operand. Some previous uses weren't needed. + Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make. + Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs. + Convert "- (a - b)" to "b - a" for non-floating-point. + ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg. + Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b". + If adding ANDs with constants that have no bits, in common, try + bitwise-or, since we may then be able to distribute the operation, + e.g., (a & 7) + (a & 0x70) -> a & 0x77. + Add missing last arg to operand_equal_p call. + Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR. + Exclusive-or with all ones is bit negation. + If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR. + Handle TRUTH_NOT_EXPR by calling invert_truthvalue. + Call optimize_bit_field_compare for comparisons of bitfields. + Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test. + Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal. + * stor-layout.c (get_best_mode): New function. + * machmode.h: Define it. + * tree.c (integer_pow2p): New function. + * tree.h: Declare new functions and functions no longer static. + +Mon Aug 13 17:45:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (sun3-mach): New alternative. + * tm-sun3mach.h: New file. + + * m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE. + +Mon Aug 13 10:14:37 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl2.c (flag_minimal_debug): Now is default is + -fflag-minimal-debug. + + * cplus-tree.c (virtual_member): Return the assoc of a non-virtual + basetype that comes from a virtual baseclass. Changed callers + which used to call `value_member' to call virtual_member instead. + +Mon Aug 13 06:54:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (expand_twoval_binop): Fix typo. + + * cse.c (lookup_as_function): Don't assume CODE is a unary + operation. It might be a binary op or REG. + +Sun Aug 12 21:42:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of + COND_EXPR isn't a comparison; just suppress the do_store_flag call. + +Sun Aug 12 14:26:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (enum built_in_function): Delete comma after last name. + * c-parse.h (enum rid): Likewise. + * expr.h (enum optab_methods): Likewise. + * stab.h: Add dummy enum name at end. + + * config.gcc (genix): Set tm_file. + * tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition. + + * tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS. + * rtl.h (struct rtx_def): Likewise. That macro goes in xm-*.h. + +Sat Aug 11 16:56:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cplus-decl.c (finish_function): Check value of HAVE_return before + calling gen_return. + + * reorg.c (optimize_skip): Don't reject skip when we jump around an + insn and merge at the return point. + +Fri Aug 10 17:00:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms. + * sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms. + +Fri Aug 10 14:14:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode; + remove test from here since it is in memory_operand, which this calls. + +Thu Aug 9 15:19:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (store_parm_decls): If function has variable number of args, + put a dummy decl at end of parmlist. + * c-parse.y (unary_expr): Handle &... with address of dummy decl. + + * tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning. + + * cccp.c (handle_directive): Add code to support `# DIGIT' + but disable it for the time being. + + * tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI. + (CPP_PREDEFINES): Don't define it here. + Do define alternatives with __ prepended. + +Wed Aug 8 14:00:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-romp.c: Don't include hard-reg-set; already in insn-output.c. + + * explow.c: insn-flags.h is needed to see if "probe" insn exists. + * Makefile.in (explow.o): Likewise. + +Wed Aug 8 13:35:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (check_macro_name): Warn if name is `defined'. + + * tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after + gcc_compiled. + +Tue Aug 7 23:51:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (main): Handle -W options like -f options. + This supports -Wnounused, and such like. + (warn_uninitialized): New variable, controls those warnings. + Set it for -Wuninitialized, and for -W. + +Tue Aug 7 13:24:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case. + + * explow.c (allocate_dynamic_stack_space): Pass size of allocated stack + to gen_probe. + +Tue Aug 7 12:19:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'. + +Tue Aug 7 07:13:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump + but don't count it against minimum size. + Never return when cross-jump hasn't actually been done. + +Mon Aug 6 18:50:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c: Include regs.h. + (decode_reg_name): Remove extern for reg_names; it is in regs.h. + * Makefile.in (varasm.o): Depends on regs.h. + +Mon Aug 6 12:46:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern. + (start_decl): Don't warn at all for initialized extern. + + * final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE. + (profile_function): New subroutine. + + * tm-i386sco.h: New file. + * config.gcc (i386-sco): New alternative. + + * gcc.c (ENDFILE_SPEC): New macro. + (do_spec_1): Handle %E. + (link_spec): Use %E. + + * xm-i386.h (alloca): Define without arg. + + * Makefile.in (stage*): Use RANLIB_TEST. + (LIMITS_H): New variable. + (USER_H): Use that. + * make-i386sco: New file. + +Sun Aug 5 13:11:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h: Delete all machine mode defns; include machmode.h instead. + * tree.h: Likewise. + * machmode.h: New file. + * stor-layout.c: No longer include rtl.h. + * Makefile.in: (RTL_H, TREE_H): Add machmode.h. + (stor-layout.o): No longer depends on RTL_H. + + * c-common.c (binary_op_error, shorten_compare): Should no longer + have been static when moved here. + +Sun Aug 5 12:57:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record, layout_union): Test value of + PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined. + * tm-*.h: Define with value 1. + * tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment. + + * proto.h: New file. + * Makefile.in (USER_H): Add that file. + +Sun Aug 5 00:04:08 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl2.c (grokfield): It is no longer legal to specify + the initializer for a static const member in the class + declaration. Dealing with default initializers is basically + impossible. + + * cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR + until it is in fact an address. This allows us to call + destructors on the return values of function calls. + + * cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which + led to infinite recursion (since we did not reduce the types + before we recursed). + + * cplus-lex.c (check_newline): Make `#pragma implementation' more + forgiving. + + * cplus-init.c (expand_aggr_init): Changed Jan 20th change so that + we test whether TYPE has a constructor defined, and we do not test + at all whether INIT was from a GNU constructor expression or not. + + * cplus-typeck.c (build_modify_expr_1): Don't return + `error_mark_node' unless there really was an error. If there is + no work to do, return `integer_zero_node'. + + * cplus-class.c (propagate_basetype_offsets): Count the space + between baseclasses, not just the space they occupy. + + * cplus-typeck.c (commontype): Don't drop the exceptions that are + raised by functions and methods. + + * cplus-cvt.c (convert_to_real): Fix if/else level problem in + case where EXPR is of aggregate type. + + * cplus-decl.c (finish_decl): Emit a line-number note to give + users a chance to set a breakpoint before the initialization of an + object takes place. + + * cplus-class.c (build_method_call): If the function we get is not + directly from the object we have, call `convert_pointer_to' if the + object uses multiple inheritance or virtual baseclasses. + + * cplus-typeck.c (build_binary_op_nodefault): Don't call + `convert_to_pointer' with an argument that might be + the integer zero. + + * cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT + in RESULT_DECLs as well. + + * cplus-init.c (build_vec_delete): Don't forget to deallocate the + container if requested. Really use AUTO_DELETE and + AUTO_DELETE_VEC with the same interpretation as `build_delete' + gives to its AUTO_DELETE parameter. + +Sat Aug 4 22:08:44 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (find_cross_jump): Use prev_nonnone_insn. + Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER + block; doing so can confuse reorg.c. + + * optabs.c (expand_binop, expand_binop, expand_twoval_binop): + If predicate doesn't match, ensure that operand is in a pseudo + register. Current code assumes that any register will suffice, + but an insn may want to reject certain hard registers. + (expand_unop, emit_unop_insn, emit_cmp_insn): Likewise. + +Sat Aug 4 15:29:09 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) + + * function.c (assign_parms): For parms passed by reference, + make the memory object's mode agree with the parm's original + type mode. + * calls.c (expand_call): Fixed braino in building argument + reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined. + + * varasm.c (assemble_variable): Hack our way around the problem + that static class members look like initialized variables for the + purposes of establishing FIRST_GLOBAL_OBJECT_NAME. + + * cplus-lex.c (reinit_parse_for_method): Give error message for + common mistake of forgetting the function body. + + * cplus-typeck.c (build_component_ref): Make better error message + when field is not found. + + * cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from + members as well. + + * cplus-typeck.c (c_expand_return): Give warning about returning + non-lvalues that come from functional casts. + + * cplus-search.c (get_base_distance): Changed to follow leftmost + path only when PARENT == TYPE_MAIN_VARIANT (PARENT). + + * cplus-class.c (modify_vtable_entries): Call get_base_distance + with 0 path_ptr, since we do not appear to use the path computed. + +Fri Aug 3 07:37:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (leaf_function_p): Delete line advertently retained + after change of July 29. + + * reorg.c (optimize_skip, try_hoist_target): Don't invert jump + unless can_reverse_comparison_p says it is OK. Use invert_jump + to do it. + (fill_simple_delay_slots): Another way flow of control can merge is + for two insns to jump to the same place; try to get insns from there. + (mostly_true_jump): Return 2 for a jump very likely to be true (the + branch back to the start of a loop). + (fill_slots_from_thread): Accept new arg LIKELY. If true, see if can + put increment in delay slot and undo it after the end of the loop. + (fill_eager_delay_slots): Pass new arg to fill_slots_from_thread. + If previous insn is conditional jump that also didn't get a delay + slot, see if swapping targets helps. + +Fri Aug 3 00:18:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (MAKE_POS): Avoid constant of uncertain signedness. + + * gnulib2.c (__bb_init_func): Add dummy function to prevent warning. + +Thu Aug 2 17:44:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * output.h (current_function_return_rtx): Add new variable. + * function.h (return_rtx): Likewise. + * function.c (push_function_context, pop_function_context): Save + and restore current_function_return_rtx. + (assign_parms, expand_function_start): Set current_function_return_rtx + to what is put in DECL_RTL (DECL_RESULT (current_function_decl)). + * reorg.c: No longer uses tree.h. + (dbr_schedule): Get result RTL from current_function_return_rtx instead + of reading it from current_function_decl. + * Makefile.in (reorg.o): No longer depends on TREE_H. + + * cse.c (remove_invalid_refs): Only invalidate an entry if it + references the actual register, not merely something sharing its + quantity. + (cse_insn): Don't abort if SRC and SRC_EQUIV map to different + hash classes. Merge them instead. + + * romp.md (mulsi3): Emit call to lmul$$ as a regular insn + rather than a CALL_INSN. + (divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted. + (divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$ + as a normal insn to allow CSE'ing of MOD with DIV. + +Wed Aug 1 21:56:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex): Don't warn about non-decimal unsigned by default + if `u' was specified. Add similar warning for long and long long. + +Tue Jul 31 23:31:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label. + + * xm-vms.h (const): Delete the definition. + +Mon Jul 30 18:33:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (convert_for_assignment): Normally no warning + between char * and unsigned char *, etc. + (convert_arguments): Include arg number in incomplete type warning. + +Mon Jul 30 07:38:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (invert_jump): Don't do anything with labels if NLABEL + equals JUMP_LABEL. + (redirect_jump): Don't try to reference LABEL_NUSES if olabel is + zero (meaning this is a return insn). + (redirect_exp): Handle case of converting return to jump to + label. + + * dbxout.c (dbxout_parms): Allow parameter at zero offset from + AP to be represented as (MEM (REG ...)). + * sdbout.c (sdbout_parms): Likewise. + +Sun Jul 29 22:51:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (expand_twoval_binop_convert): Deleted. + (expand_twoval_binop): Rework to be handle predicates, modes, and + failures in a manner consistent with expand_binop. + Move code from expand_twoval_binop_convert inline and rework to + no longer hard-wire SImode and to handle failure. + + * config.gcc: Finish change of July 24th to have make_var_file depend + on host machine. + + * jump.c: Now includes insn-flags.h. + (jump_optimize): Try to put a RETURN at the end of the function if + control flows through to it. + JUMP_LABEL can now be zero for a RETURN or conditional RETURN. + Try to convert jump to end of function into (possibly conditional) + RETURN. + Use next_active_insn instead of next_real_insn; these do the same + thing prior to reload, after which USE and CLOBBERs don't matter. + redirect_jump may now fail so don't set CHANGED if it does. + Delete optimization of jump to RETURN; now subsumed by follow_jumps. + Reset INSN_CODE if changing conditional jump to unconditional. + (cond_jump_p): Conditional RETURN is conditional jump. + (follow_jumps): Change argument name to AFTER_RELOAD. + If not after reload, do not chain across a USE or CLOBBER. + Recognize RETURN insns. + (tension_vector_labels): Likewise. + (redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a + (possibly conditional) RETURN; use validate_change to see if such an + insn exists. + Now returns non-zero if succeeds, 0 otherwise. + Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)). + (thread_jumps): Ignore any type of RETURN insn. + * Makefile.in (jump.o): Depends on insn-flags.h. + * loop.c (strength_reduce): Don't confuse conditional return with + jump to top of loop when LOOP_TOP == 0. + * final.c (leaf_function_p): No longer static; no longer takes an arg. + (final_start_function): Don't pass START to leaf_function_p. + * romp.md (return pattern): Convert to a named pattern. + +Sun Jul 29 16:05:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY. + + * xm-vms.h (alloca): Use built-in alloca. + +Sun Jul 29 06:47:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (fill_slots_from_thread): Restore inadvertantly deleted + lines. + +Fri Jul 27 19:53:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h, + and output.h + +Fri Jul 27 16:30:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON + and ASM_OUTPUT_SHARED_LOCAL. + + * tm-encore.h (SHARED_SECTION_ASM_OP): New macro. + (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New. + All this waiting for papers from pabuhr@watmsg.waterloo.edu. + +Fri Jul 27 16:10:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * make-romp (CC): Set up to allow use of hc. + +Fri Jul 27 15:07:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0) + only if little-endian. + +Thu Jul 26 23:19:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (expand_shift): Consistently call protect_from_queue + before doing anything else. + Always put operand1 of extzv into a register because it is SImode + and we assume that this means a register. + +Thu Jul 26 14:18:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_variable): Delete dead code. + DATA_ALIGNMENT takes tree and current alignment and gives new + alignment for a non-automatic variable of that type. + Also apply CONSTANT_ALIGNMENT to the initial value; it now takes + the constant and old alignment and gives the new alignment. + Adjust DECL_ALIGN to the resulting alignment. + Use floor_log2 consistently instead of duplicating its function. + (get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT + and pass type instead of decl. + * expr.c (get_pointer_alignment): Rework to: distinguish reliably + between expressions giving the address and those giving the item being + addressed; use the alignment from the type of the object being + pointer to; return 0 if the type is not a pointer; and other + miscellaneous changes. + (string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well + as NOP_EXPR. + (expand_builtin): Allow get_pointer_alignment to fail, in which case + we call the actual function. + * stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN + since it may be better aligned than required and get_pointer_alignment + can take advantage of this. + * tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of + CONSTANT_ALIGNMENT to word-align string constants and + DATA_ALIGNMENT to word-align character arrarys for builtin memory + functions. + + * fold-const.c (rshift_double): Reset carry after each shift of + one bit. + + * vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT. + (ashrsi3_const): New pattern to match it. + (casel): Delete patterns no longer needed. + * cse.c (cse_insn): Remove unneeded part of change of July 23. + (fold_rtx): Convert shift with negative constant count to shift in + the opposite direction. + * combine.c (subst): Likewise. + + * emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before + struct pointer and static chain values in case they want to use it. + +Thu Jul 26 12:31:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (final_scan_insn): Align label table to boundary appropriate + for items of its size. + (get_attr_length, shorten_branches): Allow for label table alignment. + +Wed Jul 25 15:06:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Handle uses of _IO* followed by spaces. + Change redirections for cd when testing that directory exists. + + By Tiemann: + + * emit-rtl.c (next_cc0_user): Handle insns in which cc0 + is set and used in the same insn. + + * final.c (leaf_function_p): Look inside INSNs which contain + a delayed-call sequence. + (final_start_function): Test `only_leaf_regs_used' before + `leaf_function_p', since that is likely to be faster. + (final_scan_insns): Normally we don't have NOTICE_UPDATE_CC + take action when processing the path of an annulled branch, + since that path does not affect the cc's of the fall-through + insns at all. However, we cannot always ignore the effect of + the cc's when processing a delayed annulled branch: when the + delayed annulled branch follows a label and carries a + REG_CC_STATUS note, that note must be processed. + + * genattr.c (main): Generate #defines for annulled branches + which are consistent with documentation. + + * reorg.c: Finish recent rework by modifying code specific to + machines that have annulling branches. + + * c-common.c (merge_component_comparisons): Previous logic did + not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0), + and (A != 1) || (B != 1). Fixed by expanding the logic out + longhand and letting the compiler do the proper cross-jumping. + + * tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name. + + * expr.c (expand_expr): For BIND_EXPR, do the init for all vars. + + * stupid.c: Include flags.h. + * genrecog.c (main): Make insn-recog.c include flags.h. + +Sun Jul 22 12:04:43 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-except.c (cplus_expand_end_except): If the user gives a + default handler, the exception is considered caught in that + handler. + * cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT + case. + + * cplus-decl.c (finish_decl): Don't emit cleanups twice. + + * cplus-class.c (finish_struct_bits): Don't call + `fixup_vbase_offsets'. + * cplus-tree.c (fixup_vbase_offsets): #if 0 this function. + + * cplus-cvt.c (build_default_binary_type_conversion): Handle + arguments which are REFERENCE_TYPE. + + * cplus-method.c (prepare_inline): Set DECL_CONTEXT of this + function's parameters. + + * cplus-decl.c (grokfndecl): When adding a new virtual function + entry, RAISES may change a second time. + +Thu Jul 5 10:44:39 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl2.c (grokfield): Static consts need not be initialized + in the class definition. + +Mon Jul 2 06:12:49 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-init.c (resolve_offset_ref): If BASETYPE is not a base + type for the current class, give error and return. + +Sun Jul 1 00:18:47 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl.c (finish_function): Throw away more code if we have + an inline function from the interface. + + * cplus-class.c (add_virtual_function): Set DECL_VINDEX from the + virtual function which comes from the vtable shared by + CURRENT_CLASS_TYPE, if possibe. + + * cplus-typeck.c (build_binary_op): Call `default_conversion' + after doing type instantiation. + + * cplus-init.c (build_new): New 2.0 interpretation: `new int (10)' + means allocate an int, and initialize it with 10. + + * cplus-init.c (emit_base_init): Completion of fix for virtual + function table initialization. @@ BTW, this may now cause extra + virtual function table initializations. They will all be correct, + but they may also be redundant. GCC's optimizer doesn't know how + to remove even the simplest such redundancy. + +Sat Jun 30 13:54:30 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (finish_base_struct): Store BASETYPE in the + VFIELDS chain (in its TREE_TYPE). + +Fri Jun 29 09:26:17 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the + type that caused this vtable to be defined in DECL_CONTEXT + * cplus-search.c (bfs_unmark_finished_struct): Work around + DECL_CONTEXT conflict for vtables. @@ NOT A SOLUTION. + + * cplus-lex.c: Extend meaning of `#pragma implementation' + to allow files to `implement' types from general headers. + +Tue Jul 24 22:18:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c: Major rework. Changes includes: + (mark_target_live_regs): Scan code to compute which registers are + live at particular insns. Uses tables created by flow, REG_DEAD + notes, and registers set before they are used. + (emit_delay_sequence): Always write SEQUENCE as INSN. Many routines + changed to reflect this. + (fill_simple_delay_slots): Loop for merge point when target of jump + comes back to fallthrough code. Try to get insns from there. + (fill_eager_delay_slots): Fallthrough and target case merged into new + function fill_slots_from_thread. + + * tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to + support the ROMP microprocessor, used in the IBM PC RT. + + * recog.c (comparison_operator): New function. + + * jump.c (jump_optimize): If putting constant into register, see + if it is already present in the register. + +Tue Jul 24 15:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_binary_op_nodefault): Allow compare of any + pointer with const void *, etc. + +Tue Jul 24 17:10:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): New function. + (expand_assignment): Use it to find out about our target. + (expand_expr, case COMPONENT_REF): Likewise. + (expand_expr, case COND_EXPR): If can do store-flag, convert + X ? A+1 : A to A + (X!=0); fold-const made the former from the latter. + Only create label when we know we will need it. + Simplify unnessarily complex call to safe_from_p. + (expand_expr): Make new variable UNSIGNEDP and use it instead + of TREE_UNSIGNED (type). Also, consistently use existing + variable TYPE instead of TREE_TYPE (exp) and similarly for MODE. + +Tue Jul 24 13:50:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (collect_expansion): Error if ## at beg or end. + + * c-decl.c (grokdeclarator): Error for long, etc. with nonarith type. + Error for signed or unsigned with floating type. + Error for initialized parm. + + * config.gcc: Make make_var_file depend on host machine, not target. + +Tue Jul 24 13:40:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers. + + * c-typeck.c (type_for_size, type_for_mode): Delete from here. + (binary_op_error, shorten_compare, truthvalue_conversion): Likewise. + * cplus-typeck.c: Delete second copy from here. + * c-common: Move above functions to here. + +Tue Jul 24 12:20:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (path_include): Fix typo in var name. + +Mon Jul 23 17:46:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * config.gcc: Remove redundant assignment to tm_file for 88000. + Fix typo when assigning to make_var_file. + + * function.c (optimize_bit_field): Fix typo in change_address call. + +Mon Jul 23 16:59:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (decode_reg_name): Ignore % at beginning of name. + Support extra names defined by ADDITIONAL_REGISTER_NAMES. + * tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it. + + * dbxout.c (dbxout_init): Handle new macros + ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY. + * sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME. + +Mon Jul 23 16:50:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too. + + * vax.md (call_value_pop): Fix typo in argument number. + + * cse.c (cse_insn): Shift's aren't associative if in different + directions, even if same rtx_code. + Try to fold result of associating the operation in case it is now + trivial. + + * jump.c (mark_modified_reg): New function. + (thread_jumps): Look at insns between target of first jump and the + second jump. Mark any registers that they modify and record if they + modify memory. + Don't go past a CODE_LABEL. + If we pass an unconditional jump, follow it. + Use prev_nonnote_insn instead of explicit loop. + (rtx_equal_for_thread_p): Consult recorded information to see if + memory of registers were modified prior to second jump. + * Makefile.in (jump.o): Now needs hard-reg-set.h. + +Sat Jul 21 13:58:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (O_RDONLY): Define it if not defined. + + * c-decl.c (finish_decl): No error for nonstatic incomplete array. + +Sat Jul 21 08:24:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * alliant.md (call patterns): Function address must be memory operand. + * convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise. + +Thu Jul 19 16:06:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (path_include): New function. + (main): Call that to handle CPATH envvar. + + * varasm.c (assemble_variable): Error if size exceeds 2**32-1. + + * emit-rtl.c (init_emit_once): Pass write_symbols to this function + (init_emit): Not this one. All callers changed. + +Tue Jul 17 21:24:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (update_equiv_regs): Don't replace a register with + an equivalence if the insn making the equivalence has a source + different from the equivalent value. + +Tue Jul 17 16:47:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_block_move): Allow movstr* to fail. + +Tue Jul 17 15:19:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (change_address): Don't call memory_address if reload + is in progress, not just after it has completed. + +Mon Jul 16 00:34:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (can_reverse_comparison_p): New function. + (jump_optimize): In if (x) ... else x = 0; reverse comparison + if second operand of IF_THEN_ELSE is PC; use new function to + validate the reversal. + (jump_back_p): Use new function to see if safe to reverse comparison. + +Sun Jul 15 17:03:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Bug in last change; reject uncond jump + where conditional is expected. + + * flow.c (mark_used_regs): Handle autoincrement for *p + followed by q = p+size (neither one dead). + +Sat Jul 14 22:37:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt. + Remove (and...) from second arg of shift. + Remove (and...) from around shift. + +Sat Jul 14 21:35:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (update_equiv_regs): New function. + (local_alloc): Call it. + (block_alloc): Don't handle REG_EQUIV notes here; now done in + update_equiv_reg. + + * calls.c: Include insn-flags.h. + * Makefile.in (calls.o): Likewise. + +Sat Jul 14 13:28:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins. + + * vax.md (SImode bit-field patterns): Use nonmemory_operand. + + * jump.c (jump_optimize): + For if (...) x = 1; else x = 0; x must be integer. + + * gcc.c (default_compilers): Pass -P to cpp. + +Thu Jul 12 23:38:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED. + + * sparc.md (call recognizers): Don't allow address arithmetic. + +Thu Jul 12 21:47:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (change_address): If reload has completed, don't call + memory_address. Instead, abort if address is not valid. + +Thu Jul 12 20:41:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * calls.c (emit_call_1): Handle vax, without call and call_value. + +Thu Jul 12 20:39:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (merge_equiv_classes): New function, from record_jump_equiv. + (record_jump_equiv): Use new function. + (gen_lowpart_if_possible): New function, based on gen_lowpart. + (cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note + that (subreg BAR) is an equivalent of FOO. + * integrate.c (expand_inline_function): Likewise. + + * combine.c (subst): Check for constant in merge of shift into + ZERO_EXTRACT. + (gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND: + + * emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register, + return a new rtx for it in the proper mode, rather than a SUBREG. + +Wed Jul 11 17:05:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): If already have a REG_WAS_0 note, don't make + another one. + Rework some loops on SETs to eliminate duplicate code and clean up + a bit. + + * rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these + to work on pseudos as well as hard registers. + + * optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned + to see if register is mentioned in insn. + +Wed Jul 11 16:56:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Don't optimize jumps to store-flags + if after register allocation. And don't do it if memref is used. + +Wed Jul 11 16:12:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter): + New functions. + ({next,prev}_{real,active}_insn, next_label): Rework to allow + argument of zero; return zero in that case. + (next_active_insn, prev_active_insn): If reload is not yet complete, + do the same thing as next_real_insn and prev_real_insn. + (next_cc0_user): Fix some bugs and typos. + + * rtlanal.c (reg_mentioned_p): Allow searches for labels to work. + +Wed Jul 11 12:25:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times. + +Tue Jul 10 22:54:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtl.def (trap): New code. + +Tue Jul 10 17:48:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside + a NON_LVALUE_EXPR. + (real_zerop, real_onep, simple_cst_equal): Likewise. + +Tue Jul 10 17:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y, objc-parse.y, cplus-lex.c (yylex): + Terminate token_buf after integer. + +Mon Jul 9 15:22:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-decl.c (duplicate_decls): Correct test for extern followed by + static function declaration. + +Mon Jul 9 14:13:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Move warning and error + about initializer with extern to the same place. Do one or the other. + + * rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE. + +Sun Jul 8 14:12:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl): + New functions. + (flag_pedantic_errors): New variable controls them. + * c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings. + * varasm.c: Likewise. + * gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc. + * cccp.c (pedwarn): New function. Many calls to `warning' changed. + + * c-common.c (c_expand_expr_stmt): New function. + Error about incomplete type moved here. + * expr.c (expand_expr): Error deleted from here. + * c-parse.y: Use c_expand_expr_stmt where suitable. + + * flow.c (propagate_block): Set following_insn_dead on insn after test. + (mark_used_regs): Test that var; don't call insn_dead_p here. + +Fri Jul 6 13:05:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_indirect_ref): + No error if result is incomplete array. + + * expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE. + Don't extract a bigger unit from memory than this. + * expr.c: Callers changed. + (store_field): New arg TOTAL_SIZE; callers changed. + + * out-ns32k.c (print_operand_address): Changes from Ian Dall. + * xm-ns32k.h: Use built in alloca. + * ns32k.md (ashlsi3): Don't forget to return a value. + (movsf): Output floating constants only if GAS_SYNTAX. + (call, call_value): Support JSR_ALWAYS. + Change handling of bsr if GAS_SYNTAX. + (bit test patterns): Use g constraint for op1 and rm for op0. + +Thu Jul 5 21:53:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions. + * fold-const.c (fold): Don't combine two conversions if one is + signed and the other is unsigned. + * integrate.c (copy_parm_decls): Finish making last change. + +Thu Jul 5 18:26:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (safe_from_p): If EXP is readonly memory, any memory location + is safe from it. + +Thu Jul 5 15:05:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__fixunsdfsi): Change > to >=. + + * c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED. + (grokdeclarator): Don't warn of array if elt type being defined. + + * c-typeck.c (build_conditional_expr): Handle ((void *) 0). + Allow 0 versus function pointer. + +Thu Jul 5 08:05:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): If machine has post-increment, don't associate + PLUS operations if they are both adding the same constant that is + a power of two. Similarly for post-decrement. + +Wed Jul 4 19:04:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * flow.c (mark_used_regs): Don't scan a comparison if the following + insn that uses the cc's is dead. + + * flow.c (propagate_block): If cc-using insn is dead, so is previous. + + * expmed.c (emit_store_flag): New function. + +Wed Jul 4 18:45:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-typeck.c (common_type, comptypes, default_conversion): + Use TYPE_READONLY in type to indicate const type; use TREE_READONLY + in decl to indicate object will never change. + (build_unary_op, readonly_warning, build_modify_expr): Likewise. + (c_expand_asm_operands): Likewise. + * cplus-class.c (finish_struct_bits): Likewise. + * cplus-cvt.c (build_type_conversion): Likewise. + * cplus-type2.c (readonly_warning_or_error): Likewise. + * cplus-typeck.c (default_conversion, build_unary_op): Likewise + (build_modify_expr, c_expand_asm_operands): Likewise. + + * cplus-cvt.c (popclass): When making INDIRECT_REF, don't set + TREE_READONLY from TYPE_READONLY. + +Wed Jul 4 15:16:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Fix bugs in last change. + +Wed Jul 4 07:52:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test + for structure-value stack slot, which no longer exists. + + * reload1.c (bad_spill_regs): Should be static. + + * combine.c (subst, gen_lowpart_for_combine): Propagate + RTX_UNCHANGING_P when making a new MEM. + * c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that + de-reference of pointer-to-const is not readonly so don't set + RTX_UNCHANGING_P. + * explow.c (validize_mem): Use change_address so flags get copied + to new MEM. + * expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn): + Likewise. + (do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table. + * function.c (optimize_bit_field, instantiate_virtual_regs_1): + Preserve flags when making new MEM. + * loop.c (invariant_p): Memory references to an invariant address + are invariant if RTX_UNCHANGING_P is set. + * recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P + when making new MEM. + * reload.c (find_reloads_toplev): Likewise. + * reload1.c (alter_reg): Stack slot is readonly if pseudo was. + (eliminate_regs): Propagate RTX_UNCHANING_P in new MEM. + * varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM. + +Tue Jul 3 21:50:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (expand_and): New function. + + * stmt.c (expand_expr_stmt): + If value is volatile, fetch it and then ignore it. + + * expr.c (expand_expr): Error if variable type is incomplete. + + * c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef. + +Tue Jul 3 18:03:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1" + In "(a & 1) != 0", can convert to simply "a & 1". + * combine.c (subst): Convert branch on sign bit to signed comparison + with zero (possibly adding a SUBREG). + Convert ZERO_EXTRACT of the low-order bit of a right shift into a + ZERO_EXTRACT of the proper bit. + +Mon Jul 2 12:07:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Convert conditionals for storing one + value into a store-flags insn. + + * vax.md (call_pop, call_value_pop): New names for call patterns. + Include the popping explicitly in the rtl. + + * jump.c (jump_optimize): Delete case for condjump followed + by unconditional to same label; was special case of another case. + Switch back to next_active_insn or prev_active_insn in a few cases. + + * function.c (init_function_start): Initialize + frame_pointer_needed to zero. + + * i386.md (tstsf): Clobber reg 0 in SImode. + +Sun Jul 1 14:31:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c: Use next_real_insn instead of next_active_insn. + Likewise for prev_active_insn. USE insns make a difference! + + * function.c (assign_stack_temp): Use largest alignment if BLKmode. + + * stddef.h: Check __SIZE_T also. + + * toplev.c: Include types.h first. + + * i386.md (trunc*2): Don't allow moving symbolic constant to memory. + Use wider move only for symbolic constant. + + * tm-convex.h (LINK_SPEC): Posix link flags. + * tm-convex.h (STARTFILE_SPEC): Posix start files. + * tm-convex[12].h (CPP_SPEC): Posix defines. + * tm-convex[12].h (LIB_SPEC): Posix libraries. + * tm-conv[12]os7.h: New files. + * config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there. + + * xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix. + * xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up. + + * tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND): + use %e instead of %#g, which is broken or non-posix. + + * tm-convex.h (current_section_is_text): make extern. + * out-convex.c (current_section_is_text): define here. + * tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options): + useless; remove. + * tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from + system includes. + +Sat Jun 30 14:01:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (pending_xref_error): Fix typo in arg order. + + * cccp.c (do_include): Mention non-ex system headers for -M. + Guess the directory. + (check_macro_name): Should not be static. + + * rtl.def (inline_header): Add a vector at the end. + * rtl.h (ORIGINAL_ARG_VECTOR): New macro. + (RTVEC_ELT): New macro. + * emit-rtl.c (gen_inline_header_rtx): New argument for that vector. + * integrate.c (save_for_inline): Copy arg rtls if nec, then make + an arg vector to put in the header. + (expand_inline_function): Look in that vector for the rtl. + (copy_parm_decls): Likewise. + + * c-decl.c (duplicate_decls): Warn if function declared external + and later static. + +Fri Jun 29 13:29:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (handle_directive): Supply missing *. + +Thu Jun 28 21:39:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md (muldf3 for 68881): Generate fscale if appropriate. + * out-m68k.c (floating_exact_log2): New function. + +Wed Jun 27 17:19:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_struct): New handling of zero-width bit fields. + Store appropriate data in them like other bit fields. + Don't delete them until after layout. + Don't mess with alignment of following field; set its own. + If PCC_BITFIELD_TYPE_MATTERS, get alignment from type. + * stor-layout.c (layout_record): For zero-width field, if + PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure. + (layout_decl): Don't abort for zero-width if no name. + + * function.c (expand_function_start): + Output ...FUNCTION_BEG note here, after assign_parms. + (init_function_start): Not here. + + * sdbout.c (sdbout_record_type_name): Conditionalize for + SDB_ALLOW_FORWARD_REFERENCES. Don't use typedef names, just tags. + (sdbout_begin_block): Likewise. + (plain_type_1): Likewise. Also move code to output structure size. + (sdbout_symbol): Output the type if not yet output. + Don't output top-level initialized variables yet. + Avoid crash if variable never got any rtl. + Add conditional for SDB_AUTO_NORMALIZE_OFFSET. + (sdbout_toplevel_data, sdbout_queue_anonymous_type): + (sdbout_dequeue_anonymous_type): New functions. + (sdbout_tags): Reverse the list first. + Output enums before other things. + (sdbout_reg_parm): Fake a name if necessary. Use C_REGPARM. + * toplev.c (compile_file): Call sdbout_toplevel_data. + + * c-typeck.c (convert_for_assignment): Disable warnings for pointers + to const and volatile functions. + + * expr.c (expand_expr): Mark variable as used. + +Tue Jun 26 17:05:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sparc.h (LINK_SPEC): Delete spurious `-'. + + * tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero. + (ASM_OUTPUT_DOUBLE_OPERAND): Likewise. + + * stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields. + +Tue Jun 26 01:48:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * tree.c (dump_tree_statistics): Dummy function. To be filled in + later when we decide what tree statistics should be measured. + (build): Now ok to take arguments of length 1. `build1' cannot be + used to allocate 's' tree nodes whcih might have length 1. + + * All GNU C++ files updated to 1.37.2 (alpha 2). NOTE: cplus-decl.c + needs to be fixed to not us RTL. I'm leaving this file in its + current state so that the GNU C++ compiler at least compiles. + + * All SPARC files: modified to use registers %f30 and %f31 as + temporaries for holding floating-point zero. Used to use %f0 and + %f1, which made it impossible to compare function return values with + zero. + +Mon Jun 25 16:54:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * function.c (init_function_start): New args give file/line for first note. + * c-decl.c (store_parm_decls): Pass them. + * integrate.c (output_inline_function): Pass dummies for them. + * final.c (final_start_function): For sdb, don't output a line number, + just set last_linenum. + + * c-parse.y (hash, is_reserved_word): New keyword __label__. + + * stddef.h: Check _T_SIZE as well as _SIZE_T. + +Sun Jun 24 16:09:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR. + +Sat Jun 23 09:52:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as + NOTE when matching peephole. + +Fri Jun 22 17:40:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (process_init_constructor): Set up TREE_PURPOSE + in record constructor elements. + + * cexp.y (exp1): If pedantic, warn about commas. + (tokentab2): Add entries for ++ and --. + (yylex): Error if those are used. + + * c-decl.c (lookup_tag): For wrong kind of type, just set flag. + (shadow_tag): Clear the flag. + (pending_xref_error): Print the error message here if flag set. + * c-parse.y (setspecs): Call that. + + * calls.c (emit_call_1): Use call_pop and call_value_pop insns + to record when the called function pops its args. + +Fri Jun 22 16:43:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg. + + * tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with + INITIAL_FRAME_POINTER_OFFSET. + + * tm-vax.h (RTX_COSTS): Show shifts are relatively expensive. + +Fri Jun 22 15:05:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (GEN): New variable. + (P): New variable. + (cc1, cc1plus, cc1obj): Use $(P). + + * cccp.c (check_macro_name): New subroutine taken from do_define. + (do_define, do_undef): Use this. + (do_undef): Warn if junk follows name. + (handle_directive): Always ignore empty directive. + Warn if \f or \v in directive. Error for malformed directive name. + + * tree.h (BUILT_IN_NEXT_ARG): Define it. + * c-decl.c (init_decl_processing): Declare __builtin_next_arg. + * expr.h (current_function_arg_offset_rtx): Declare it. + * function.c (assign_parms): Set that variable at end. + * expr.c (expand_builtin): Implement __builtin_next_arg. + * stdarg.h (va_start): Use __builtin_next_arg. + + * c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT. + +Fri Jun 22 07:07:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (final_scan_insn): Put label for jump table in same section + (read-only data) as jump table. + + * loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY. + +Wed Jun 20 13:03:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad. + (STACK_BOUNDARY): Make it 32. + (CPP_SPEC): Add spaces. Define _APOLLO_SOURCE if not -ansi. + + * c-common.c (check_case_value): New function. + * c-parse.y (stmt, when parsing case): Use that. + Add new rule for case range. + + * reload1.c (reload_inheritance_insn): New variable. + (reg_reloaded_insn): New variable. + (choose_reload_regs): Update those variables. + (emit_reload_insns): Use them to remove deaths from insns + that used input reloads. + (reload_as_needed): Clear reg_reloaded_insn when necessary. + + * m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit. + + * dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes. + Use in place of enum __stab_debug_code. + +Tue Jun 19 22:56:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_increment): For preincrement, don't load value twice: + use TEMP as input to addition. + +Tue Jun 19 06:53:13 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead + of gen_{add,sub}2_insn since the latter will abort if the constant is + out of range for the machine. + +Tue Jun 19 00:35:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (post_mark_life): Don't decrement DEATH + if it equals BIRTH. Don't ever increment DEATH. + + * varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr. + Handle missing values. Use field in the tree_list, if any. + (output_addressed_constants): Don't die if value is missing. + * c-typeck.c (process_init_constructor): Handle index and field specs. + * c-parse.y (initlist): Parse them. + +Mon Jun 18 15:58:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c, cplus-decl.c (duplicate_decls): + Types don't "match" if one is error. + + * c-parse.y (label_decl): Use new keyword __label__, not colon. + + * c-parse.gperf (__label__): New keyword. + + * mips.md (probe): Make a single insn, just a memref. + +Mon Jun 18 14:27:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (loop_optimize): Set max_luid to last luid + 1, as documented. + + * local-alloc.c (qty_clobber): New variable. + (local_alloc): Allocate and initialize it. + (reg_is_set): Set qty_clobber for a clobber of a pseudo used only + in this insn. + (find_free_reg): Pass qty_clobber to post_mark_life. + (post_mark_life): If CLOBBER if non-zero, register isn't live after + its death insn. + + * integrate.c (expand_inline_function): Don't call try_constants on + an insn that sets CC0 until we have processed the next insn. Then + call it on both. This is because the recognizer for these insns + may want to look at the user of CC0. + +Mon Jun 18 13:25:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted. + (ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified. + Don't output comments. Use more specific predicates. + + * mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's. + Also simplify and don't output comments. + (anonymous patterns for those insns): Deleted. + (loading floating constant): New patterns added. + (move qi to si pattern): Deleted; ridiculous. + (movdi, movsi, movhi, movqi): No need to check for moving reg to self. + + * mips.md (nop): Use .set noreorder to placate assembler. + +Sun Jun 17 20:01:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gcc.c (set_spec): Don't use `name' for both old spec and name of + spec. Use new var old_spec for the former use. + Don't use (char *) 0 for null spec; use a null string instead. + + * jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC. + Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC. + (mark_jump_label): Don't count the use of a vector table label in + ADDR_DIFF_VEC. + (delete_insn): Can now handle ADDR_DIFF_VEC. + (delete_labelref_insn): New function. + (redirect_tablejump): Call new function to delete insn that references + the jump table. + +Sun Jun 17 01:19:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genemit.c (gen_expand): Don't generate `operands' if size is 0. + + * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple + of the alignment of the operand. + + * i860.md (signed bit field recognizers): Don't shift by >31 bits. + + * out-i860.c (output_delayed_branch): Pass register properly to + load_opcode. + + * mips.md (general/fp reg move patterns): Use codes L, M, D. + (movdi): Likewise. And don't output useless comments. + Use the assembler temp reg for non-offsettable address. + (movsi, movhi, movqi): Output nothing for move from reg to itself. + Output li to load a constant. Use `move' instead of `add'. + Don't output useless comments. + (load-address pattern): Deleted; handled by addsi3 pattern. + + * mips.md (addsi3, mulsi3): Make both input predicates arith_operand + since they are commutative. + (andsi3, iorsi3, xorsi3): Likewise. + + * tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New. + + * tm-mips.h (PRINT_OPERAND): New codes D, L, M. + * mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap. + Use new print code D. + + * mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific. + (andhi3, ..., andqi3, ...): Patterns deleted. + (patterns for nor): New anonymous patterns. + * out-mips.c (uns_arith_operand): New function. + + * mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*): + Use more specific predicates. + + * mips.md (addhi3, ..., addqi3, ...): Patterns deleted. + (addsi3, subsi3, mulsi3, divsi3): Make predicates more specific. + Delete useless comments from assembler code. + Use more generic op codes rather than special cases such as addiu. + (divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns. + (abssf2, absdf2): New patterns. + +Sun Jun 17 06:56:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers + in fixed_regs are even cheaper than pseudos. + + * function.c (instantiate_virtual_regs_1): If valid, replace PLUS + whose second operand would be zero with its first operand. + +Sun Jun 17 00:17:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdbout_symbol): Get right regno for var-length object. + + * combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if + they truncate. Handle ASHIFTRT like LSHIFTRT. + (try_combine): Call simplify_set_cc0_and in all those cases. + (subst): Handle (zero_extract (subreg (lshift (reg )))). + +Sat Jun 16 23:11:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (get_narrower, get_unwidened): Bit field test was backwards. + +Sat Jun 16 19:07:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (fold): Fix typo in test for distributing binary + operator over conditional and compound expressions. + + * genoutput.c: Remove vestiges of obsolete and never used + INSN_MACHINE_INFO. + + * rtl.def (MATCH_PARALLEL): Add new RTL code. + * genconfig.c (walk_insn_part): Support MATCH_PARALLEL. + * genemit.c (max_operand_1): Likewise. + (gen_exp): Just write operand for MATCH_PARALLEL. + (gen_expand, gen_split): Support MATCH_PARALLEL. + * genrecog.c (walk_rtx): Add support for MATCH_PARALLEL. + * genoutput.c (scan_operands): Suppport MATCH_PARALLEL + like MATCH_OPERATOR. + * genpeep.c (match_rtx): Add code to support MATCH_PARALLEL. + Don't write unnecessary cast to `rtx'. + * genrecog.c (add_to_sequence): Simplify handling of mode. + Support MATCH_PARALLEL. + + * expr.c (move_block_{to,from}_reg): Support load/store multiple. + * function.c (instantiate_virtual_regs_1): If can't substitute + new pseudo for virtual register, try doing the substitution + globally throughout the entire insn. This lets load/store multiple + insns refer to virtual registers in their addresses. + + * genrecog.c (write_split_tree, write_split_subroutine): Deleted. + (break_out_subroutines, write_subroutine, write_tree): Accept + parameters that indicate whether we are making gen_split or gen_recog. + (main): Pass new parameters to break_out_subroutines and write_tree. + + * final.c (final_scan_insn): Process insns that set CC whenever a + REG_CC_STATUS note is found; not only JUMP_INSNs can use CC. + When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status + each time. + + * recog.c (validate_replace_rtx): New function that tries to + replace all occurrences of an object within an insn and see if the + resulting insn is valid. + +Thu Jun 14 06:58:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all + all insns in the block that modify the output. Write them on the + final insn even if we don't put a REG_EQUAL note there. + + * stmt.c (expand_return): Only distribute return down a conditional + expression if tail recursion is possible in a branch. + + * expr.c (expand_expr): Remove obsolete reference to when we had + a shared structure-value slot. + + * jump.c (get_label_before, get_label_after, follow_jumps): No longer + static. + * rtl.h: Define them. + +Mon Jun 11 17:35:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (INSN_LUID): Check for INSN_UID above the area that we + know about. + (loop_optimize): Cannot use INSN_LUID as lhs. + (scan_loop): If first jump is to label made by loop, we can't + tell if it is in range or not, so reject loop. + Reject loop if SCAN_START was an insn previously made by loop since + we won't know its luid. + Only call loop_reg_used_before if argument has known luid. + Mark partial invariant as global if its insn was made by loop. + (ignore_some_movables): Don't assume all invariants have luids. + (strength_reduce): Use no_labels_between_p instead of + labels_in_range_p. + Don't look at luid of insns for which one doesn't exist. + (valid_initial_value_p): Reject initializations in insns whose + luid we don't know. + + * loop.c (product_cheap_p): Put all our rtl into a separate obstack + and free memory from it. If we use current_obstack, we may free + memory allocated by gen_reg_rtx, which must be preserved. + + * c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field + is -1, not 1. + * c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't + merge comparisons, don't use result of rewrite_for_merged_ref; + comparisons with zero are more efficient. + + * protoize.c (main): Don't declare as extern. + + * c-aux-info.c (gen_aux_info_record): Don't declare extern. + + * genemit (gen_split): Rework to fix numerous bugs and typos. + + * function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)). + +Wed Jun 6 20:03:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gencodes.c (main): Count a code number for DEFINE_SPLIT. + + * rtlanal.c (note_store): Pass SUBREG of a hard register to function. + (reg_overlap_mentioned_p): Handle receiving SUBREG of hard register. + * integrate.c (mark_stores): Likewise. + * local-alloc.c (reg_is_set, reg_is_born): Likewise. + * reload1.c (mark_not_eliminable): Likewise. + + * loop.c (move_movables): Don't blow up if moving last real insn + in function. + +Wed Jun 6 19:44:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (default_compilers): Pass -traditional before -f*. + Delete -gg option. + +Sun Jun 3 22:44:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Warn about extern with initializer. + +Sun Jun 3 22:32:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genrecog.c (main): Don't call write_tree with null if no insns + were in file. + +Sat Jun 2 21:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target + unless zero or safe_from_p rejects it. + (expand_expr, conditional cases): Likewise. + +Sat Jun 2 14:46:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Handle const and volatile with parm + specified as function type. + +Fri Jun 1 16:13:39 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so + it now is one per operation type, rather than one per + function unit. + * genattr.c (write_units): Write out new function names and + function unit table structure. + * genattrtab.c (struct function_unit_op): New structure. + (struct function_unit): Updated for new definition of + DEFINE_FUNCTION_UNIT. + (SIMPLIFY_TEST_EXP): New macro to reduce number of function calls + to simplify_test_exp. Replace all call to the function with + uses of the macro. + (check_attr_test, make_alternative_compare): Show that EQ_ATTR with + attribute of "alternative", MATCH_OPERAND, and comparison cases can't + be simplified. + (expand_units, gen_unit, write_function_unit_info): Support new + meaning of DEFINE_FUNCTION_UNIT. + (simplify_test_expr): Rework AND and IOR cases to reduce rescans. + Once an expression has been simplified, set RTX_UNCHANGING_P so + we won't try simplifying it again. Don't do this if INSN_CODE == -2. + (write_attr_set): Don't make a recursive call if we know that + the test we are writing will always be false. Also clean up a bit. + (main): true_rtx and false_rtx don't need to be simplified. + Write gen_attr_... routines before special routines. + +Fri Jun 1 14:17:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): + Round frame size to multiple of STACK_BOUNDARY. + +Fri Jun 1 09:38:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on + insn that contains REG_EQUAL note instead of insn doing computation. + + * cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time. + Likewise for my_gettime to my_get_run_time. + + * Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o): + These do not depend on insn-codes.h. + * function.c: Explicitly include insn-codes.h to make it clear that it + is needed for the values of the CODE_FOR_... macros. + +Thu May 31 12:59:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__trampoline): New function. + * Makefile.in (LIB2FUNCS): Compile it. + * tm-m68k.h (TRAMPOLINE_ALIGN): Define it. + * function.c (trampoline_address): Handle extra alignment. + * tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): + Redefine to transfer via __trampoline. + (TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c. + + * fold-const.c (fold): Preserve sign on constant when other terms + cancel (after call to split_tree). + +Thu May 31 12:39:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion. + + * function.c (assign_parms): Fix typo getting mode of result. + + * cse.c (cse_basic_block): Don't go past TO if it is target of + followed jump. + +Wed May 30 21:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (fndef, nested_function, notype_nested_function): + Use YYERROR1 instead of YYERROR. + (YYERROR1): New macro. + * cplus-parse.y, objc-parse.y: Likewise. + +Tue May 29 21:53:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_float): Don't use hard reg as intermediate. + + * c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE. + * cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y. + + * toplev.c (get_run_time): Renamed from gettime. + +Mon May 28 15:47:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_push_insn): Don't push by pieces if alignment + forces use of small pushes that do problematical padding. + + * tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS. + (STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE. + (REG_PARM_STACK_SPACE): Now takes arg and has value. + (ACCUMULATE_OUTGOING_ARGS): Define this. + (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use + current_function_outgoing_args_size, not ..._pretend_... + (INITIALIZE_TRAMPOLINE): Use size_int. + + * varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO + if it is defined. + + * tree.def (BIND_EXPR): Add operand, which holds the BLOCK. + * expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK. + * dbxout.c (dbxout_block): Test the flag in the BLOCK. + * sdbout.c (sdbout_block): Likewise. + * symout.c (symout_function): Likewise. + * c-parse.y (stmt expr rule): Corresponding change. + +Sun May 27 20:53:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * caller-save.c (save_call_clobbered_regs): Correctly mark registers + live for multi-word pseudos. + +Sat May 26 13:42:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdb_begin_function_line): Now -1 if not in use. + (sdbout_end_function): Set it to -1. + + * tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT. + Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT + to ..._EXPR. + (struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt): + (struct tree_case_stmt): Types deleted. + + * tree.c (make_node, copy_node): Treat 's' like 'e' for size of node. + In make_node, make BLOCK and BIND_EXPR savable. + * expr.c (expand_expr): Rename, and use TREE_OPERAND to get body. + * cplus-init.c (build_vec_delete): Likewise, and build appropriately. + * print-tree.c (print_node): No special handling for these and IF_STMT. + * stmt.c (warn_if_unused_value): Likewise. + + * tree.def (BLOCK): New tree code for binding blocks. + * tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS): + (BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_... + (STMT_...): Except for those, all deleted. + (BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any. + (BLOCK_CHAIN): New macro. + * tree.c (build_block): Renamed from build_let. + (decl_type_context, decl_function_context): Corresponding change. + * print-tree.c (print_node): Likewise. + * c-decl.c, cplus-decl.c (poplevel): Likewise. + * integrate.c (copy_decl_tree): Likewise. + * function.c (setjmp_protect, uninitialized_vars_warning): + (instantiate_decls_1): Likewise. + * c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise. + * dbxout.c (dbxout_block): Expect only BLOCKs in this tree. + Ignore those with controllers that are not marked used. + * sdbout.c (sdbout_block): Likewise. + * symout.c (symout_function): Likewise. + + * tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT. + * expr.c (expand_expr): Delete handling of IF_STMT. + * tree.c (build_if, build_loop, build_case, build_goto): Deleted. + (build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise. + (build_compound): Likewise. + * cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT. + +Sat May 26 13:23:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (struct arg_data): Add new fields slot_offset and stack_slot. + (expand_call): Compute both location of start of stack slot and the + place in the stack slot where the first byte of the argument will be + placed. + Use stack_slot when loading a BLKmode object into registers. + When loading into registers, don't check reg_parm_seen, just look + at args[i].reg. + (expand_call, store_one_arg): Save and restore stack slot starting + from beginning of slot, not begining location where arg is stored. + (store_one_arg): After calling emit_push_insn, argument is really + at arg->stack_slot instead of arg->stack because if we want to + load it into registers, we include any padding. + +Sat May 26 01:37:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision. + + * tree.c (init_obstacks, init_tree_codes): init_tree split in two. + * toplev.c (compike_file): Call them. + +Fri May 25 16:40:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS. + * varasm.c (output_constructor): Bitpos is zero for array (field == 0). + +Fri May 25 00:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (final_scan_insn): Restore inadvertent deletion in change + of May 24th. + +Fri May 25 00:13:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (print_node): Print some missing fields for decls. + (print_node_brief): Always print value of integer or real constant. + +Thu May 24 21:28:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (real_zerop): Function deleted; was redundant. + + * tree.h (DECL_OFFSET): Macro deleted. + (struct tree_decl): Field deleted. + + * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, + use DECL_FIELD_BITPOS and handle non-constant values. + * stor-layout.c (layout_record, layout_union): Likewise. + * expr.c (expand_assignment, store_constructor, expand_expr): Likewise. + * dbxout.c (dbxout_type): Likewise. + * sdbout.c (sdbout_one_type): Likewise. + * c-common.c (merge_component_comparisons, make_merged_ref): Likewise. + * print-tree.c (print_node): Likewise. + * varasm.c (decode_addr_const, output_constructor): Likewise. + * objc-actions.c (build_ivar_list_initializer): Likewise. + * cplus-typeck.c (build_component_addr): Likewise. + And preserve TREE_CONSTANT flag. + (unary_complex_lvalue): Likewise. + + * tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'. + Now meaningful only if function is built in. + (DECL_BUILT_IN): New flag macro. + * c-decl.c (builtin_function): Set the flag. + (pushdecl, duplicate_decls): Use and set it. + * c-typeck.c, cplus-typeck.c (build_function_call): Test it. + * cplus-decl.c (define_function): Set the flag. + (pushdecl, duplicate_decls): Use and set it. + * expr.c (expand_expr, preexpand_calls): Test it. + + * tree.h (DECL_INCOMING_RTL): New macro. + * function.c (assign_parms): Set up that field. + * dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use + DECL_OFFSET for a parm; it is not set. Use DECL_INCOMING_RTL. + (PARM_PASSED_IN_MEMORY): New macro. + * sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise. + (PARM_PASSED_IN_MEMORY): New macro. + + * cccp.c (macarg): When popping frame, free via free_ptr, not buf. + +Thu May 24 18:04:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (next_cc0_user): New function. + * recog.c (next_insn_tests_no_inequality): Use next_cc0_user. + * rtl.h: Define next_cc0_user. + + * cse.c (cse_insn): Make canon_reg calls in separate loop over the + SETs to avoid problems when MATCH_DUPs are present in an insn + pattern. + Don't canon CLOBBER in PARALLEL. Instead, canon MEM of CLOBBER, + both within a PARALLEL and standalone. Also, call note_mem_clobbered + only for MEM. + +Thu May 24 13:08:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__negdi2): Make this inline for other functions. + +Thu May 24 07:15:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (no_labels_between_p, prev_real_insn, next_real_insn): + (prev_active_insn, next_active_insn, next_label): Delete from here. + * rtlanal.c (no_labels_between_p): Put here. + * emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn): + (next_active_insn, next_label): Add to here. + + * c-common.c: Define NULL so NULL_TREE macro will work. + + * cplus-typeck.c (common_parms): Use oballoc and obfree to + avoid external current_obstack. + + * cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to + canon_hash. + (cse_insn): When just recording jump insn, show it doesn't set CC0 + and set it as previous insn. + + * genoutput.c (gen_split): Fix typo in comment. + + * reorg.c: No longer need define next_label and next_real_insn as + extern. + + * toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of + obsolete HAVE_DELAYED_BRANCH; include insn-attr.h. + + * final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES. + Eliminate references to obsolete DBR_INSN_SLOTS. + (get_attr_length): Support ADJUST_INSN_LENGTH. + (get_attr_length, shorten_branches): Handle a SEQUENCE built for an + insn with filled delay slots. + (final_scan_insn): Avoid unnecessary call to recog_memoized. + Use validate_change instead of assuming replacement of CC0 by + STORE_FLAG_VALUE or const0_rtx is valid. + +Wed May 23 16:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-m68k.c, out-alliant.c (output_btst): + Use next_insn_tests_no_inequality, not next_insns_test_... + * recog.c (next_insns_test_no_inequality): Function deleted. + +Wed May 23 13:26:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (store_bit_field): Don't bother making a SUBREG when we + call ourself recursively; the recursive call will just strip it off. + + * reorg.c: Include insn-attr.h before testing DELAY_SLOTS. + (emit_delay_sequence): Assign new INSN_UID to the SEQUENCE. + Chain insns through the sequence via NEXT_INSN and PREV_INSN. + * emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to + find the next or previous insn. + (make_insn_raw): No longer static. + * rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn, + next_insn, and previous_insn. + + * genattrtab.c (write_eligible_delay): Always use "*delay_type"; + annuling only applies to candidate insn, not insn needing slot. + + * tree.c (init_tree): tree_node_counter doesn't exist any more. + (make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID. + +Wed May 23 00:48:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * genemit.c, genextract.c: Add support for MATCH_OP_DUP and + DEFINE_SPLIT. + + * cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be + nonzero when address to be deleted is a cast of something + with side-effects (like a call). + (build_vec_delete): Simplify code now that `make_node' does the + right thing for _STMT nodes. + +Tue May 22 22:59:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of + our branch target is zero. + Don't skip scanning first insn after destination label of branch. + + * expr.c (emit_move_insn): Abort if modes differ. + (expand_expr, comparison cases): Use TMODE when convenient. + (expand_expr, case COND): When optimizing (C ? 1 : 0), ensure + we return a result of the correct mode. + + * integrate.c (expand_inline_function): Can't call try_constants for + JUMP_INSN since we may have changed RETURN to jump. + +Tue May 22 22:40:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_common): Delete field `uid'. + (TREE_UID): Macro deleted. + + * c-decl.c (finish_decl): Discard any variable sizes in the decl. + + * calls.c (expand_call): When making reg_notes for const function, + don't test is_const twice, and take account of order of pushing. + +Tue May 22 21:41:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (eliminate_regs): Ensure we process pseudo that is first + operand of PLUS. + + * expmed.c (store_bit_field): When stripping a SUBREG, adjust the + bit position to correspond to the change in modes. + + * cse.c (rtx_cost): Use COSTS_N_INSNS macro. + + * cse.c (qty_comparison_*): New vars. + (new_basic_block): Initialize qty_comparison_code. + (fold_rtx): If we see a comparison, check if we have seen the + same comparison before. If so, we know the result. + (record_jump_equiv): Save the comparison being passed in the + qty_comparison_* variables for possible later use by fold_rtx. + (cse_insn): If the current insn doesn't reference cc0, but the + previous insn sets it, delete the previous insn; presumably we + used to test it. + (cse_basic_block): Allocate new qty_comparison_* vars. + + * reload1.c (eliminate_regs): Second arg is now mode of enclosing + MEM, if any, rather than simply flag indicating inside MEM. + Use this mode to determine amount that, e.g., PRE_DEC adjusts by. + + * reload1.c (reload): Set regs_ever_live for a register that couldn't + be eliminated. + * final.c (only_leaf_regs_used): Don't do it here. + + * reorg.c: Eliminate obsolete macros *_REORG_FUNCTION. + Entire file is conditional on #ifdef DELAY_SLOTS. + + * Makefile.in: Use reorg.c instead of dbranch.c. + +Tue May 22 20:40:30 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (complete_array_type): Get string elt size in bytes. + +Tue May 22 00:42:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps. + + * objc-parse.y, objc-actions.c: Replaces uses of build with build1 + when being used for 1-operand nodes. + +Mon May 21 23:59:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * global-alloc.c (hard_reg_full_preferences): New variable. + (global_alloc): Allocate and initialize it. + (prune_preferences): Include in regs_someone_prefers all words + of multi-word items that have preferences. Don't includes registers + we also prefer unless they are prefered by an allocno that needs + more registers. + (set_preference): Set hard_reg_full_preferences also. + +Mon May 21 21:36:29 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (make_node): All ..._STMT nodes have side effects, type void. + +Mon May 21 16:03:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Set insns_at_start before + processing parameters since it might be needed during that processing. + Set RTX_INTEGRATED_P in all insns emitted, including labels and + barriers. + Ensure COPY is set correctly when replacing RETURN and avoid + duplicate barriers by calling emit_jump_insn instead of emit_jump. + Call note_stores for JUMP_INSNs and CALL_INSNs in case they have + side-effects we care about. + (copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO). + (subst_constants): Don't crash if we see a SUBREG replaced by a + REG or vice versa; we have no work to do in that case. + Fix typo in case MULT. + + * recog.c (constrain_operands): Call reg_fits_class_p with original + mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG. + +Mon May 21 14:25:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (extract_bit_field): Use class of TMODE for simple reg case. + + * flags.h (flag_pic): Declare it. + * tree.h (mode_for_size): Declare it. + * c-tree.h (merge_component_comparisons): Declare it. + +Mon May 21 07:27:12 1990 Michael Tiemann (tiemann at cygnus.com) + + * jump.c (thread_jumps): New function to optimize the case where one + conditional jump jumps to another testing the same condition. This + function usefully optimzies code both before common subexpression + elimination (where it "finds" common subexpressions that cse won't + find) and after loop optimization (where the loop optimizer + introduces new conditional jumps after rearranging loops). + (rtx_equal_for_thread_p): cheaply builds equivalences between + register so that jump threading can be effectively run before cse. + + * emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if + PIC_OFFSET_TABLE_REGNUM is defined. + + * tree.c (build,build1,build_nt): Set TREE_RAISES in addition to + TREE_SIDE_EFFECTS. + ({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments + instead of calling `make_node' directly. Eventually, `tree_cons' + could be faster than `make_node'. + (get_identifier): Use `bcmp' instead of `strcmp', since it's + faster. Also, test the first letter of each string before calling + the string comparison function. + + * toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC. The + former gives better common sub-expression elimination while the + latter tells the compiler to emit position-independent code. + (rest_of_compilation): Thread jumps if requested. + + * stor-layout.c (layout_{record,union}): For loop bodies meant only + for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding. + + * stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is + nonzero. + @@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were + an expression (like zero/nonzero) instead of soley a #define. + (fixup_cleanups): If cleanups emitted no code, don't call + `reorder_insns'. + (expand_decl_cleanup): Return 0 in case we are not in a block + (but instead at top-level). + + * stack.h: New GNU C++ file. + + * rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL. + * rtl.h: Ditto. Also make external declaration of + pic_offset_table_rtx. + * rtl.def: Add the following new RTL codes: DEFINE_SPLIT, + MATCH_OP_DUP, LO_SUM and HIGH. + + * reorg.c: New file. Performs instruction reorganizations + (primarily branch scheduling) after register allocation. + + * local-alloc.c (local_alloc): If defined, execute + ORDER_REGS_FOR_LOCAL_ALLOC. + + * genrecog.c (struct decision): Extended to handle DEFINE_SPLITs. + (write_tree): Split into three subroutines: `write_tree_1' which + does the main work, `write_tree' which does the original job, and + `write_split_tree' which builds the recognizer for insn splitting. + (add_to_sequence): Handle MATCH_OP_DUP. + (main): Bui.Build both insn->insn_code and insn->insn_list + recognizers. + Also, fixed comment at the top of the file. + * genpeep.c (main): Handle DEFINE_SPLIT. + (match_rtx): Handle MATCH_OP_DUP. + * genoutput.c (main): Handle DEFINE_SPLIT. + * genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP. + * genattrtab.c (main): Handle DEFINE_SPLIT. + + * fold-const.c (various places): Use `build1' constructor instead of + `build' constructor whenever possible. + + * final.c (final_scan_insn): If we know the status of the condition + codes at a particular JUMP_INSN (by dint of the fact that it has a + REG_CC_STATUS note), set CC_STATUS to reflect that value. + (only_leaf_regs_used): @@ For some reason the frame pointer register + is not marked live, even when it is. If FRAME_POINTER_NEEDED is + nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1. + + * expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down. + Use new macro MAX to accomplish this. + (safe_from_p): Don't check that EXP is nonzero. Instead, make + caller check (only in one place) that argument to `safe_from_p' is + non-zero. + (expand_expr): In COND_EXPR case, make sure that the predicate is + safe from the two conditions. Lossage occured in a construct of the + form (c = c < 0 ? d : -d). + + * explow.c (plus_constant): Handle LO_SUM rtl. + + * c-typeck.c (build_binary_op_nodefault): If optimizing, try merging + component refs and/or comparisons into larger operations. + + * c-common.c (rewrite_for_merged_ref): New function. Canonicallizes + expressions to be recognizable as candidates for merged + COMPONENT_REF operations. + (make_merged_ref): Builds custom FIELD_DECLs for accessing multiple + bits in a byte simultaneously. + (merge_component_comparisons): Optimize COMPONENT_REFs in + expressions that look like (x.p == y.p && x.q == y.q) or + (x.p != y.p || x.q != y.q). Also optimize (x.p == c1 && x.q == c2), + where C1 and C2 are known constants. + + * c-lang.c (print_lang_statistics): Added new hook function. + Currently does nothing for C. + + * c-convert.c: Use `build1' constructor instead of `build' + constructor whenever possible. + + * cplus-typeck.c (build_binary_op_nodefault): Call this function for + better applicability of the merged component ref optimization. + Also, add more recognized cases. + + * cplus-type2.c (merge_component_comparisons): Code improved, and + moved to c-common.c. + + * cplus-parse.y (operator_name): Recognize `operator,'. + (expr): On parsing ',', call `build_x_compound_expr' instead of + `build_compound_expr'. + (various places): Call `note_decl_list_got_semicolon' instead of + `note_decl_got_semicolon' where object in question is a list instead + of a type. + (component_declarator0): Set CURRENT_DECLSPECS from the bitfield + type. + + * cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME, + since it is a type name we pass in, not a type. + + * cplus-lex.c (opname_tab): Add `operator,'. + (note_decl_list_got_semicolon): Make notation that a list of + declarations should be considered as having "gotten a semicolon". + (extract_interface_info,interface_strcmp): Commented. + + * cplus-init.c (build_delete): Rest of changes to reimplement new + destructor mechanism. + (build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were + not being correctly handled. Also, where elsements were not being + deleted. Use new destrouct calling convention. + (various places): Change TYPE_HAS_CONSTRUCTOR to + TREE_HAS_CONSTRUCTOR where appropriate. + + * cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy + data from RETURN_TARGET to CALL_TARGET in case they do not line up + normally. + + * cplus-decl2.c (finish_file): No need to call `build_vbase_delete' + on top-level objects anymore, since destructors now do the right + thing. + + * cplus-decl.c (finish_function): Implement new destructor + mechanism: destroy virtual baseclass objects if (in$charge & 2) is + nonzero. Deallocate if (in$charge & 1) is nonzero. + + * cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not + TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes. + (build_up_reference): Only build up references between compatible + types. I.e., don't build a char& to an int object. + (convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a + CALL_EXPR. + + * cplus-class.c (build_vbase_path): Recover from bad parse errors. + (build_method_call): Implement new ctor/dtor semantics to allow + differentiation between tearing an object down and deallocating it. + This also means that ctors and dtors can now aviod going through the + virtual function table mechanism as they construct/destruct their + objects. + + * ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup + type value of an identifier. Also implement related macros + IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE. + + * cplus-cadillac.c (cadillac_switch_source): Change Prototype + declaration to non-prototype declaration. + (readable_p): Ditto. + +Sun May 20 20:23:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (c_sizeof): For incomplete type, warn and return 0. + (c_sizeof): Similar. + +Sun May 20 17:20:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart. + +Sun May 20 16:59:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_c_cast): Warn about pointer-integer casts + where size differs. + + * stor-layout.c (layout_type): Multi-word field doesn't force BLKmode. + + * expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned + fields in regs. No longer knows explicit modes for this. + +Sun May 20 15:12:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in: (reload1.o): Now depends on output.h. + + * calls.c (expand_call): No need to set frame_pointer_needed. + + * emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use + appropriate already-made rtx (e.g., stack_pointer_rtx). + + * expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set + frame_pointer_needed. + + * final.c (final_start_function): No longer round size of frame here. + (final_scan_insn): Call constrain_operands with new operand. + + * flow.c (life_analysis): Change test on whether sp is live or + not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer. + (This code may not be relevant any more.) + + * function.c (push_function_context, pop_function_context): No need + to save and restore frame_pointer_needed. + (assign_{outer_,}stack_local): No need to set frame_pointer_needed. + (assign_parms): Likewise. + (init_function_start): Don't initialize frame_pointer_needed here. + + * function.h (frame_pointer_needed): Deleted. + + * genattrtab.c (write_attr_case): Write call to constrain_operands + with new second argument (reload_completed). + + * global-alloc.c (global_alloc): Don't left fp be allocated if we + already know we can't eliminate it. + (find_reg): Argument LOSERS is now a HARD_REG_SET instead of an array. + Precompute HARD_REG_SETs before loop over registers to speed up + allocation. + (retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET. + (check_frame_pointer_required): Deleted; no longer needed. + + * integrate.c (save_for_inline, output_inline_function): No longer + need to save and restore frame_pointer_needed. + + * local-alloc.c (block_alloc): No longer have to worry that having + a stack variable might cause a frame pointer to be needed when it + might otherwise not be. + (find_free_reg): Don't allocate into registers that may be eliminated + later even if they are not FIXED_REGS. + + * output.h: Define reload_completed. + + * recog.c (constrain_operands): Add new argument, STRICT. If zero + and the constraints could not be matched, try again with a less + strict view (i.e., assume that reload will fix those things that + it can). This allows attribute values to be obtained prior to + reload. + Don't call alter_subreg or assume it has been called. Instead, + look inside SUBREGs. + + * reload.c (find_reloads_address{,_1}): Handle an address that + is a MEM; it may have been produced by register elimination. + (find_reloads_address): sp can also be the base register for a + stack slot. + (form_sum): No longer static. + + * reload1.c: Rewrite code that performs frame pointer elimination. Do + it during reload to ensure that all addresses and operands remain + valid; also generalize to support more than one pair of eliminations. + (reg_equiv_stack_slot, bad_spill_regs): New vars. + (forbidden_regs): Now a HARD_REG_SET. + (struct elim_table): New structure to describe register eliminations. + (reload): Start scanning registers after virtual registers. + Initialize reg_equiv_stack_slot for each register. Compute + reg_equiv_{mem,address} during register scan only if not eliminating + registers. + Compute initial default value of frame_pointer_needed. + Round frame size to BIGGEST_ALIGNMENT. + Create obstack for scratch rtl created by register elmination. + Initialize elimination table and spill registers that we know can't + be eliminated. + On each scan of the insns: Reset all elimination entries to initial + offsets, compute reg_equiv_{mem,address}, and see if any potentially + eliminable register changed status. + Try to eliminate registers from each insn unless we know that none + can be eliminated. + Don't complete groups for spill registers from registers that + shouldn't be used as spill registers. + Call reload_as_needed if register eliminations can be done, even if + no reloads are needed. + (new_spill_reg): Don't allow spilling an eliminable register. + Don't set forbidden_regs here. + Indicate something changed if a register that wasn't ever used before + was made a spill register. + (eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted. + (delete_dead_insn): New function. + (alter_reg): Call it. + Always set reg_equiv_stack_slot; if not eliminating registers, also + set reg_equiv_{mem,address}. + (eliminate_regs, eliminate_regs_in_insn): New functions. + (spill_hard_reg): Add new argument, CANT_ELIMINATE. + Set bit for register being spilled in forbidden_regs. + Use new argument instead of seeing if we are spilling fp. + No longer need to have frame pointer just because a reg needs a + stack slot. + (order_regs_for_reload): Set bad_spill_regs to contain those registers + that can't be used for spill registers. + Consider any eliminable register as bad to use as a spill register. + Rework initialization of potential_reload_regs. + (reload_as_needed): Handle register elimination in a similar manner + as function reload. + (gen_input_reload): When generating a reload for a PLUS, first try to + use a three-operand add insn. If that fails, emit two two-operand + insns. + + * rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others + renumbered. + + * stmt.c (expand_decl): No longer have to set frame_pointer_needed + for variable-sized decl. + + * stupid.c (stupid_find_reg): Don't try to allocate an eliminable + register. + + * tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition. + + * recog.c (next_insn_tests_no_inequality): If no next insn, return 0. + + * print-tree.c (print_node): Set length for TREE_VEC. + + * calls.c (store_one_arg): Set arg->value to location where argument + was placed (either register or stack). + + * recog.c: Needs flags.h (for flag_pretend_float): + * Makefile.in (recog.o): Likewise. + + * expr.c (convert_move): Add missing RETURN statements. + +Sat May 19 14:26:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case EXIT_STMT): Return rather than falling + out of switch statement (and into `binop'). + + * cse.c (cse_insn): Allow conditional branches to be turned into + noops when the condition is known false by not calling validate_change. + + * cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes. + +Sat May 19 12:41:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align. + (ASM_OUTPUT_ALIGN_CODE): Likewise. + + * gcc.c (default_compilers): For .cc, pass -g* to cc1. + +Sat May 19 06:51:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack + in obstack instead of using xmalloc/free. + (init_tree): Initialize new obstack for {push,pop}_obstacks. + + * tree.c (simple_cst_list_equal): No longer static. + +Fri May 18 19:38:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.h (MUST_PASS_IN_STACK): Refine test for case where padding + requirement prohibits passing in register. + +Fri May 18 18:14:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Fix CAT macro in memvar.h. + +Fri May 18 16:13:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (do_jump): Don't explicitly copy item being tested from + MEM to REG. If needed, this will be done later. + +Thu May 17 14:33:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (bootstrap): Pass LANGUAGES to inner makes. + +Thu May 17 13:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Handle _CTRL like CTRL. + +Wed May 16 21:09:42 1990 Richard Kenner (kenner at vlsi1.ultra.edu) + + * fold-const (fold): Two conversions in a row are needed if from an + integer type to a pointer type of a different precision. + +Wed May 16 16:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): Make sure a volatile value is referenced + even if value is ignored. + + * c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int. + (invert_truthvalue): Simplify COND_EXPR. + +Tue May 15 00:25:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Do set TYPE_SIZE if size is var. + + * reload.c (push_reload): If insn is an asm, verify that CLASS + is at least possible for the specified mode. + + * c-decl.c (complete_array_type): Compensate for wide string constant. + + * final.c (leaf_function_p): Reject everything if profiling. + + * function.c (optimize_bit_field): Adjust OFFSET if + BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN. + + * expmed.c (store_bit_field, extract_bit_field): Rework the code + to adjust XBITPOS for the size within which to count. + (extract_bit_field): When converting MEM to REG, don't make SUBREG + immediately; fall through and let this happen in the code that + handles original registers of the wrong mode. + +Mon May 14 16:01:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cexp.y (yylex): Ignore carriage return. + * cccp.c (initialize_char_syntax): Likewise. + (newline_fix, name_newline_fix): Likewise. + + * c-common.c: New file. + (combine_strings): Moved here. Fix errors for wide string length. + * c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here. + +Sun May 13 08:08:41 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (subst_constants): Fix typo in case 'E'. + +Sat May 12 17:14:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Don't change -(y-x) to x-y for IEEE floats. + Include real.h. + + * cse.c (fold_rtx): Don't simplify float+0, float-0, float*0 + if using IEEE floating point. + Don't simplify float-self even if not IEEE. + * fold-const.c (fold): Likewise. + + * i386.md (trunc**): Use long move if source is constant. + * out-i386.c (PRINT_REG): Handle CODE == 'k'. + + * fixincludes: Use rm -fr to delete before making link. + + * optabs.c (init_optabs): Support MULDI3_LIBCALL, etc. + +Sat May 12 17:04:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (find_best_addr): Don't modify constant address MEMs; they + are shared. + +Sat May 12 15:17:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (signed bitfield extract): Don't output assembler comment. + +Fri May 11 15:23:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in: Don't use $(libsubdir) as a target since it involves + shell `...` constructs. + + * genattr.c (fatal, main): Remove relics of old program name. + * genattrtab.c: Likewise. + + * expr.c (expand_expr, case COND_EXPR): Add missing argument to + operand_equal_p. + + * reload.c (form_sum): Handle case where second operand is + (plus foo (const_int ...)). + + * c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for + ERROR_MARK. + * cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise. + + * cplus-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, + since c defines sizeof (char) as 1. + + * loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can + also occur in JUMP_INSN's. + + * reload.c (find_reloads, find_reloads_address): Correct errors where + an arg to find_reloads is "VOIDmode" instead of "0" and vice versa. + (find_reloads_address_1): Likewise. + + * global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos + where all regs have reg_live_length == -2. + +Fri May 11 14:45:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4. + +Thu May 10 23:43:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-i860.c (single_insn_src_p, strict_single_insn_src_p): + Correct conditions for needing multiple instructions. + (output_delayed_branch): Likewise. + +See file ChangeLog.1. + +Local Variables: +mode: indented-text +left-margin: 8 +fill-column: 76 +version-control: never +End: diff --git a/ChangeLog.3 b/ChangeLog.3 new file mode 100644 index 0000000..346311a --- /dev/null +++ b/ChangeLog.3 @@ -0,0 +1,8063 @@ +Fri Jul 19 18:56:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (canon_reg): Allow for recursive call returning 0 (if we had + an EXPR_LIST). + * sched.c (init_aliases_analysis): Ignore REG_EQUAL note when its value + is an EXPR_LIST. + * unroll.c (loop_iterations): Likewise. + + * rs6000.md (andsi3): Fix typo in and-with-cc pattern. + +Fri Jul 19 11:23:22 1991 Tom Wood (wood at dg-rtp.dg.com) + + * toplev.c (set_target_switch): For TARGET_OPTIONS, set the + variable to the variable part of the actual option. + * tm-m88k.h, out-m88k.c: Change the use of m88k_short_data. + + * varasm.c (output_constant_def): Merge get_or_assign_label and + delete it. Ensure that ENCODE_SEGMENT_INFO is evaluated before + SELECT_SECTION. + +Thu Jul 18 19:57:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * expr.h (MUST_PASS_IN_STACK_BAD_PADDING): Definitions were backwards. + +Thu Jul 18 17:52:46 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * unroll.c: Fix typos in comments. + (splittable_regs_updates): New static global variable. + Indicates the number of instructions that modify a split biv + remaining during the last iteration of a loop, so that the last one + can be handled specially. + (unroll_loop): Allocate and clear it. + (copy_loop_body): Use it to determine how to rewrite an insn + modifying a split iv. + (find_splittable_regs): When a splittable biv is identified, set it + equal to the number of insn modifying the biv. + (find_splittable_givs): When a splittable giv is identified, set + it to one if this giv is a reg. + + * unroll.c (copy_loop_body): Instead of trying to special case + insns that use start_label, use the label_map to map the start + label to the appropriate label for all insns except those that + must be inverted and redirected. The former code did not handle + tablejumps that used the start_label correctly. + + * integrate.c (copy_rtx_and_substitute): Don't legitimize an + address inside of an ADDRESS rtx. This fails, because this need + not be a validate address, but it is always valid in the context + it appears in. + +Thu Jul 18 08:13:56 1991 Tom Wood (wood at dg-rtp.dg.com) + + * toplev.c (set_target_switch): Support TARGET_OPTIONS for command + options with values. + + * varasm.c (output_constant_def): Set flags with + ENCODE_SEGMENT_INFO for strings and constructors. + * tm-mips.h (ENCODE_SEGMENT_INFO): Must be a VAR_DECL. + + * out-m88k.c, tm-m88k.h, m88k.md: Implement a global pool approach + to short addressing. + + * m88k.md (extendsfdf2, truncdfsf2): Use fsub rather than fadd. + This conforms to IEEE 754 in all rounding modes except round to + negative infinity whereas fadd conforms only in that mode. + +Thu Jul 18 01:01:37 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil) + + * make-cc1.com: Add command line to compile reg-stack.c, and add + reg-stack.obj to the list of files passed to the VMS linker. + +Thu Jul 18 00:11:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (enquire.o): Need not depend on gnulib. + (gnulib2): Renamed from gnulib2.portable. + Don't do ranlib. + (gnulib2.portable): Just refers to gnulib2. + (gnulib1.portable): Don't do ranlib. + +Wed Jul 17 11:19:09 1991 Michael Meissner (meissner at geech.gnu.ai.mit.edu) + + * Makefile.in (gcc): Do a -dumpspecs after building gcc so that -B./ + will override any installed specs in /usr/local/lib. + (mostlyclean): Delete *.cpp files which are left if you use + -save-temps. + +Wed Jul 17 06:08:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): When putting I2 and/or I1 into NEWPAT, + check for a PARALLEL; if so, just put in the relevant SET instead + of making a PARALLEL containing a PARALLEL. + +Tue Jul 16 18:58:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (record_value_for_reg): Show we haven't seen the death + of a register once we have seen it modified. + + * reload1.c (reload): If we decide to put a pseudo which used to have + a MEM equiv onto the stack, set SOMETHING_CHANGED and reprocess all + eliminations and pseudos without scanning the insns. + +Tue Jul 16 13:17:14 1991 Michael Meissner (meissner at wookumz.gnu.ai.mit.edu) + + * cplus-decl.c (sigsegv): Make signal handler void for full + prototyping systems. + +Tue Jul 16 12:25:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * dbxout.c (dbxout_symbol): Ignore types with no names of any kind. + +Tue Jul 16 07:12:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (pushcase, pushcase_range): Return label in *DUPLICATE, + not integer value. + + * rtlanal.c (reg_referenced_p, reg_overlap_mentioned_p): Allow X to + be (cc0) or (pc). + + * combine.c (subst, case SET): Delete code to remove "unnecessary" + SUBREG; code was incorrect and this is done (corrected below) in + simplify_comparison. + (simplify_comparison): Can only remove SUBREG for equality comparisons. + + * expr.c (expand_expr, case COND_EXPR): If condition has side effects, + ensure we evaluate it before evaluating an arm of the COND_EXPR. + +Mon Jul 15 21:59:36 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * rtl.h (FUNCTION_FLAGS_RETURNS_STRUCT): Fix typo in value. + +Mon Jul 15 22:18:40 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * cccp.c (main): Ignore CPATH if -nostdinc. + +Mon Jul 15 22:00:02 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) + + * reload.c (find_reloads): Fix typo (reg_sets_p instead of + reg_set_p). + +Mon Jul 15 21:49:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-parse.y (stmt): Emit the nop for the start of a loop + only after the line number. + +Mon Jul 15 16:50:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edn) + + * rtlanal.c (reg_set_p): If we are passed an insn, only pass the + pattern to note_stores. + + * local-alloc.c (validate_equiv_mem): A CALL_INSN invalidates all + memory. + +Sun Jul 14 06:34:47 1991 Richard Kenner (kenner at vlsi1.ultra.hyu.edu) + + * cse.c (last_jump_equiv_class): New variable. + (record_jump_equiv): Set it. + (cse_insn): Clear it. + (cse_around_loop): Invalidate all entries in last_jump_equiv_class. + (cse_set_around_loop): Ensure our replacement is cheaper. + +Sat Jul 13 17:15:30 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * cplus-decl.c (finish_enum): Fix typo in arguments for finish_decl. + * cplus-class.c (finish_struct): Likewise. + +Fri Jul 12 16:45:02 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * dbxout.c (dbxout_symbol): Don't crash when DECL_NAME is 0. + +Fri Jul 12 15:38:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (do_tablejump): Don't write BARRIER between jump and table + if they must remain adjacent. + + * varasm.c (make_decl_rtl): Set REG_USERVAR_P when register name + is specified. + * integrate.c (subst_constants): Don't substitute for a user + variable assigned to a hard register. + + * reload.c (find_reloads): Add new vars no_{input,output}_reloads to + indicate when the corresponding reload type is not permitted; reject + an alternative that would try such a reload. + * rs6000.md (decrement-and-branch): No longer need kludges to + avoid output reloads. + Use '0' instead of 'c' for input 1 in alternative 0. + Allow operand 0 to be in non-general register. + +Fri Jul 12 10:54:39 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * c-decl.c (finish_struct, finish_enum): Fix typo in arguments for + finish_decl. + + * i386.md (bit test patterns): Delete bit tests using implicitly + masked bit number operand: the hardware doesn't work like that. + +Fri Jul 12 09:50:43 1991 Michael Meissner (meissner at spiff.gnu.ai.mit.edu) + + * tm-hp9k2bsd.h (toplevel): Remove RCS HISTORY log. + +Thu Jul 11 00:46:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-parse.y (yylex): Do try signed int for ANSI nondecimal constants. + + * c-typeck.c (record_format_info): The first time, use xmalloc. + +Wed Jul 10 18:54:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (jump_optimize): Fix typo in "if (...) x = a; else x = b;" + case: had temp3 instead of temp4. + + * cplus-lex.c (lineno, end_of_file): Move definition to before + first use. + (reinit_parse_for_block): Variable `c' must be int to ensure EOF fits. + * cplus-input.c (getch): Remove extraneous declaration of end_of_file. + + * reload1.c: Include insn-flags.h. + (emit_reload_insns): Handle the case where we reload an entire + address; use "reload_load_address" pattern, if it exists. + Remove explicit SImode reference; should have been Pmode, but + IN can be used instead of rebuilding it. + * Makefile.in (reload1.o): Includes insn-flags.h. + + * reload.c (find_reloads): If replacing an output REG with a MEM, + write a CLOBBER for the REG after the insn. + * reload1.c (eliminate_regs): Add new arg INSN; if nonzero, add a + CLOBBER when replacing a REG in SET_DEST with a MEM. + (reload, eliminate_regs_in_insn): Add new arg to eliminate_regs. + * dwarfout.c (output_bound_representation, location_attribute): + Likewise. + + * reload1.c (reload): If a reg_equiv_memory_loc isn't strictly valid + and isn't sufficiently simple, use a stack slot instead. + (alter_regs): Don't delete reg_equiv_init insns here. + (reload_as_needed): Do it here. + + * stor-layout.c (get_best_mode): Correct test for alignment. + + * loop.c (move_movables): Don't get confused by NOTE insns in gnulib + call sequence. + +Wed Jul 10 18:40:32 1991 Matthew Self (mself at geech.gnu.ai.mit.edu) + + * cccp.c (enum node_type): Added T_WARNING. + + * cccp.c (directive_table): Added #warning. + + * cccp.c (do_warning): Print warning message and continue. + +Wed Jul 10 18:38:28 1991 Matthew Self (mself at geech.gnu.ai.mit.edu) + + * c-parse.y, objc-parse.y (attrib): Pass "format" attribute + through. Takes one identifier and two constants as args. + identifier must be either printf or scanf. + + * c-common.c (decl_attributes): Process "format" attributes. + Call new routine record_format_info(). + + * c-typeck.c (struct function_info): Changed function_ident field; + store identifier node rather than char * to speed lookup. + Renamed arg_num field to format_num. Replaced is_varargs field + with new first_arg_num field. + + * c-typeck.c (check_format): Modified to use new arg_num and + first_arg_num fields. + + * c-typeck.c (record_format_info): New routine. Replaces static + table of functions to check. + + * cplus-typeck.c (record_format_info): New stub routine so c++ + will link. Someone should implement format checking for c++. + + * c-typeck.c (init_format_info_table): New routine to add + entries for ANSI functions to table. + + * c-decl.c (init_decl_processing): Call init_format_info_table(). + + * c-typeck.c (build_function_call): Modified to use dynamic table + rather than static one. Compare identifier nodes rather than + using strcmp(). + + * gcc.texinfo (): Document "format" attribute. + + * c-typeck.c (check_format): Call warning() directly rather than + returning the warning string. This way we can give multiple warnings + by continuing. Several changes to make continuing safe. + + * c-typeck.c (build_function_call): Incorporated changed return + value of check_format(). + + * c-typeck.c (check_format): Check for NULL format string. + +Wed Jul 10 16:40:54 1991 Tom Wood (wood at dg-rtp.dg.com) + + * sdbout.c (sdbout_tags): Delete this and use the TYPE_DECL + representation of tagged types. Types are now output in their + original lexical order. + (sdbout_symbol): Return early (only using sdbout_one_type) when a + tagged type is encountered. + (sdbout_block, sdbout_symbol): Don't use sdbout_tags. + * toplev.c (compile_file): Don't use sdbout_tags. + * varasm.c (assemble_function): Don't use sdbout_tags. + +Wed Jul 10 15:13:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * dbxout.c (dbxout_tags): Function deleted. Calls deleted too. + (dbxout_tagged_type): New function. + (dbxout_symbol): Call that. + * toplev.c (compile_file): Call to dbxout_tags deleted. + + * c-parse.y (yylex): Simplify choice of type for integers. + When traditional, all integers are signed unless explicitly unsigned. + +Wed Jul 10 13:35:27 1991 Tom Wood (wood at dg-rtp.dg.com) + + * configure (m88k-svr4): Needs make-m88ksvr4. + * make-m88ksvr4: New file. + +Wed Jul 10 13:18:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-decl.c (duplicate_decls): Warn if `inline' is not consistent. + + * cccp.c (hack_vms_include_specification): Fix typos. + +Tue Jul 9 22:21:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (find_and_verify_loops): RETURN insns aren't listed in + loop_number_exit_labels, so don't try to remove JUMP_LABEL of a + RETURN from that list. + + * rtlanal.c (reg_referenced_between_p): New function. + * jump.c (jump_optimize): Use it instead of reg_used_between_p when + checking for "if (...) x = a; else x = b;" case. + +Tue Jul 9 13:03:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * expr.c (move_block_to_reg): Don't force_const_mem on non-constant. + +Tue Jul 9 09:13:32 1991 Tom Wood (wood at dg-rtp.dg.com) + + * c-decl.c (finish_struct): Record tagged types as a TYPE_DECL + with a NULL DECL_NAME. + (finish_enum): Ditto. + * cplus-decl.c (finish_enum): Ditto. + * cplus-class.c (finish_struct): Ditto. + + * dbxout.c (dbxout_symbol): Ignore TYPE_DECLs for tagged types. + * cplus-dbxout.c (dbxout_symbol): Ditto. + * sdbout.c (sdbout_symbol): Ditto. + + * toplev.c (compile_file): DECL_NAME may be null. + + * dwarfout.c (output_symbol): Use output_dies_for_tagged_type for + TYPE_DECLs of tagged types. + (dwarfout_output_tagged_type): Deleted. + (output_dies_for_tagged_type): Mark TREE_ASM_WRITTEN early. + +Mon Jul 8 19:36:44 1991 Tom Wood (wood at dg-rtp.dg.com) + + * jump.c (jump_optimize): Check for extra labels when detecting + "if (...) x = a; else x = b;". Include the insn for "x = a;" when + testing for data conflict. + +Mon Jul 8 19:34:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (copy_for_inline, case MEM): Must copy a MEM even if + it has a constant address if that address involves a LABEL_REF. + + * rtlanal.c (reg_set_p): Only check for REG_INC notes and a CALL_INSN + if we are passed an insn. + * local-alloc.c (optimize_reg_copy): Remove tests now done in + reg_set_p. + +Mon Jul 8 16:38:49 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-parse.y (yylex): Pedantic warning here for `asm'. + No warning for `__asm__'. + (maybe_type_qual, maybeasm, extdef): No warning here. + + * objc-actions.c: Rename OBJC_SELS_R_INTS to OBJC_INT_SELECTORS. + Rename OBJC_UNIQUE_SELS to OBJ_NONUNIQUE_SELECTORS, reversing sense. + Eliminate OBJC_SELS_R_STRUCT_PTRS. + +Mon Jul 8 06:37:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtlanal.c (reg_{used,set}_between_p): Allow FROM_INSN == TO_INSN; + return 0 in that case. + + * jump.c (mark_jump_label): Fix typo in use of GET_RTX_LENGTH. + + * reload.c (reload_strict_low): Change comment to say that this is + always zero; we don't use it any more. + +Sun Jul 7 22:14:13 1991 Michael Meissner (meissner@churchy.gnu.ai.mit.edu) + + * tm-mips.h (FRAME_POINTER_REQUIRED): Fix typo that required a frame + if alloca was not called, instead of the reverse. + +Sun Jul 7 17:14:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * cccp.c (struct file_buf): New field system_header_p. + Everything that pushes on instack now initializes this field. + (finclude): New arg to set that field. Callers changed. + (do_include): Pass that arg as 1 for <...>, else 0. + + * cccp.c (do_include): Warn for first use of #import + except in system header files. + (handle_directive): Support #import if compiling for Next. + + * cccp.c (do_pragma): For #pragma once, warn it is obsolete. + +Sun Jul 7 14:29:04 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * tm-att386.h (NO_DOLLAR_IN_LABEL): Define this here, + * tm-i386sco.h (NO_DOLLAR_IN_LABEL): not here. + +Sun Jul 7 06:20:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtlanal.c (reg_set_p): Return 1 if REG is found in a REG_INC + note or if INSN is a CALL_INSN and REG is a hard reg. + (reg_set_last): Only return a register or constant; if returning a + register, ensure it isn't modified between the SET we found and INSN. + + * jump.c (jump_optimize): If SMALL_REGISTER_CLASSES, don't make a + store-flag insn if any register involved is a hard reg. + +Sat Jul 6 14:51:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * expr.c (expand_assignment): Don't abort for volatile structure field + even if the structure is in a register. + NOTE: This leaves the problem of implementing whatever meaning + a volatile field should actually have. + + * fold-const.c (div_and_round_double): Make lnum and lden unsigned. + Use the small-denominator algorithm only for denom < 2**24. + Fix backward conditionals in ?: operators in general case. + Change i + j to i - 1 + j when indexing num. + +Fri Jul 5 21:36:57 1991 Ken Raeburn (raeburn at watch.com) + + * genpeep.c (match_rtx, case MATCH_OP_DUP): Output semicolon after + "goto" statement. + +Fri Jul 5 09:45:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rs6000.md (andsi3): Bias alternatives so we always prefer constants. + (define_splits of DImode, SFmode, and DFmode): Don't split + unless after reload. + (ashldi3, lshrdi3): Fix bugs in instruction order; use & in + output constraint so can't conflict with operand 2; use '0' + constraint to allow operands 0 and 1 to be the same register. + + * regclass.c (reg_n_sets): Move definition before use. + + * reorg.c (fill_simple_delay_slots): Candidate for delay slot cannot + set anything set between it and the delay insn. + + * jump.c (jump_optimize): In "if (...) x = a; else x = b;", correctly + specify range to check if X is used or set. + Use rtx_equal_p to check for matching X. + +Thu Jul 4 15:55:45 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) + + * cccp.c (default_include): Add /usr/mach/include for MACH systems. + + * configure (m88k-luna): Needs make-m88kluna. + * make-m88kluna: New file. + + * dwarf.h: New file derived from the UNIX International + Programming Languages Special Interest Group DWARF specification. + * dwarfout.c (includes): Include "dwarf.h". + (subscript_data_attribute): Use FMT_CODE to encode array subscripts. + (languagribute): LANG type no longer provided by dwarf.h. + (output_source_file_die): Determine proper language attribute. + +Thu Jul 4 12:14:16 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * cplus-xref.c: define rindex if USG + +Thu Jul 4 12:36:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * gcc.c (process_command): Correctly split -L from its arg. + * SWITCHES_NEED_SPACES: New host machine option. + This really ought to be defined now for certain hosts, + but I don't know which ones they are. + +Wed Jul 3 23:31:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * tm-m68k.h (ASM_OUTPUT_FLOAT): Check CROSS_COMPILE (there was a typo). + +Wed Jul 3 22:05:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (simplify_binary_operation, case MINUS): Fix typo in op number. + + * cse.c (cse_basic_block): Correctly handle the case where TO + was a label with zero uses at the end of the function. + + * combine.c (significant_valid): New variable. + (combine_instructions): Turn significant_valid off until after + we finished computing reg_significant. + (significant_bits): Ignore reg_significant when significant_valid + is zero. + + * rtlanal.c (reg_set_last): Go past CALL_INSN as long as we are not + looking for a hard register. + +Wed Jul 3 21:07:18 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * sched.c (schedule_block): When computing what registers are dead + at the end of the current block, correctly handle REG_DEAD notes + that refer to multi-word hard registers. + + * loop.c (mark_loop_jump): When invalidating loops with multiple + entries, must invalidate every nested loop containing the target + of a loop entry jump, except for those that also contain the jump + itself. + + * loop.c (record_giv): When computing whether a giv is + replaceable, check whether the biv update has a valid luid, and + mark it as not replaceable if not. + + * combine.c (gen_rtx_combine): Call rtx_alloc instead of gen_rtx, + because it is much faster, especially on some RISC machines. + + * fixincludes: Add optional argument which indicates where to put + the fixed include files. Echo the directory name where the + include files will be put. + + * cccp.c (struct default_include): Don't examine + STANDARD_INCLUDE_DIR or /usr/local/include when + NO_STANDARD_INCLUDE_DIR is defined. This is useful when building + cross compilers. + (main): Only send SIGPIPE signal if the SIGPIPE signal exists on + the host. + (rescan, handle_directive, skip_if_group, validate_else, + skip_to_end_of_comment, macarg1, discard_comments): Accept '//' as + a comment in Objective-C as well as C++. The Objective C language + specifies that '//' starts a comment. + + * .gdbinit (ptn): Define new macro to print out the name of a type + node. + + * stab.def: Correct errors in table for values of DSLINE and + BSLINE. Document the conflict between BROWS and BSLINE. Document + the value of the BROWS field. + +Tue Jul 2 23:26:20 1991 Michael Meissner (meissner at pogo.gnu.ai.mit.edu) + + * mips-tfile.c (toplevel): Add a comment explaining the MIPS ECOFF + file format at the start of the file. + +Tue Jul 2 14:00:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-typeck.c (build_array_ref): Report error here if the "array" + is not an array or pointer. Don't leave this for the PLUS_EXPR. + + * cccp.c: Inlcude containing file names/lines in error messages. + (print_containing_files): New function. + (error*, warning): Call it. + (finclude): Increment input_file_stack_tick when file changes. + + * cccp.c: Include descrip.h. + +Tue Jul 2 07:44:19 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) + + * tm-m88k.h (ASM_OUTPUT_SOURCE_LINE): Define only for SDB. + * tm-m88kdgux.h (AS_BUG_*): Support these for now. + + * c-decl.c (finish_struct): Invoke dwarfout_output_tagged_type + only when producing DWARF debugging info. + * cplus-class.c (finish_struct): Ditto. + +Mon Jul 1 23:03:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * toplev.c (compile_file): Close stack_reg_dump_file iff STACK_REGS. + +Mon Jul 1 15:17:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (set_significant): Ignore CLOBBERs. + (simplify_and_const_int, case SUBREG): Only ignore paradoxical SUBREGs + if BYTE_LOADS_ZERO_EXTEND. + (record_value_for_reg): Fix typo; had I for REGNO. + +Mon Jul 1 08:28:09 1991 Tom Wood (wood at dg-rtp.dg.com) + + * final.c (output_source_line): Output DWARF line numbers. + + * dwarfout.c (dwarfout_output_tagged_type): New function. + * c-decl.c (finish_struct): Call it. + * cplus-class.c (finish_struct): Call it. + + * dwarfout.c (includes): Need insn-config.h and reload.h. + (location_attribute): Use eliminate_regs for correct expression. + (output_bound_representation): Use SAVE_EXPR_RTL to get rtl and + then use eliminate_regs. + + * reload1.c (reload): When finished, indicate reg_equiv_constant + and reg_equiv_memory_loc are no longer valid. + (eliminate_regs): Don't attempt use of reg_equiv_constant or + reg_equiv_memory_loc if they aren't valid. No longer static. + * reload.h: Declare eliminate_regs. + + * toplev.c (compile_file): Only call dwarfout_file_scope_symbol + for VAR_DECLs. + +Sun Jun 30 15:49:39 1991 Ken Raeburn (raeburn at watch.com) + + * expr.c (expand_builtin, case BUILT_IN_MEMCPY): If alignment test + fails, and function was really BUILT_IN_STRCPY, zero out length + parameter before expanding call. + +Sun Jun 30 18:27:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu) + + * jump.c (jump_optimize): In "if (...) x = a; else x = b;", don't + move the "x = b;" if the test modifies X or if X is a hard register + and SMALL_REGISTER_CLASSES is defined. + Turn "if (...) x = 1; else {...} if (x) ..." code on when we have cc0. + +Sun Jun 30 13:49:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * gnulib2.c (__builtin_saveregs): + For i860, make data structure fit in with va-i860.h. + + * tree.c (gcc_obstack_init): + Support OBSTACK_CHUNK_ALLOC and OBSTACK_CHUNK_FREE. + + * calls.c (prepare_call_address): 3rd arg now address of chain var. + (expand_call): Call changed. + * expr.c (emit_library_call): Call changed. + + * function.c (fix_lexical_addr): In recursive call, pass slot address. + + * Makefile.in (cse.o): Added deps. + + * Makefile.in (GNULIB2_CFLAGS): Use -O2. + + * gnulib1.c, gnulib2.c (abort): Undefine only if defined. + + * genattr.c (main): Fix typo in comment end. + +Sat Jun 29 21:57:28 1991 Torbjorn Granlund (tege at zevs.sics.se) + + * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay. + * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.. + * longlong.h (__sparc__): Don't call .umul; expand asm instead. + Don't define __umulsidi3 (i.e. use default definition). + +Sat Jun 29 06:25:19 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * tm-vax.h (CPP_SPEC): New macro. + (LIB_SPEC): Handle -mg. + + * cccp.c (install_builtins): Fix backward test of objc. + + * fold-const.c (size_int): No need to test sign of NUMBER. + + * gcc.c (process_command): Split -L from its arg. + + * gcc.c (S_ISREG): Define if not defined. + (delete_temp_files): Use it. + + * limits.h (UCHAR_MAX, CHAR_MAX, USHRT_MAX): Delete `U'. + (LONG_MAX, ULONG_MAX): Add `L'. + +Fri Jun 28 22:22:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile (realclean): Delete stage1, stage2, stage3. + + * gcc.c (fatal) [HAVE_VFPRINTF]: Do print program name. + +Fri Jun 28 15:34:08 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * out-sparc.c (output_block_move): Correctly handle the case where + the size is not a CONST_INT, and has a value of 0. + + * flags.h (flag_no_inline): Modify comment to match the one in + toplev.c. + + * integrate.c (copy_rtx_and_substitute): When creating new rtx, + make sure all of the new bitfields are copied, e.g. + REG_LOOP_TEST_P, LABEL_OUTPUT_LOOP_P, etc. + + * loop.c (loop_optimize): Call reg_scan after + find_and_verify_loops, because it may change register lifetimes. + (find_and_verify_loops): After moving a block of code outside the + loop, must readjust the loop_number_exit_label and + LABEL_OUTSIDE_LOOP_P data of the modified jump and the moved jump. + toplev.c (rest_of_compilation): Delete reg_scan call before + loop_optimize. + +Fri Jun 28 13:16:37 1991 Michael Meissner (meissner at osf.org) + + * tm-mips.h (toplevel): Add target_flags to externals declared. + (toplevel): Add dslots_number_nops, mips_load_reg{,2}, + mips_fill_delay_slot external declarations for delay slot reorg. + (CC1PLUS_SPEC): By default, pass -fno-gnu-binutils to cc1plus. + (TARGET_FLAGS): Add -mwc8, -mwc16, -mwc32 to set size of wchar_t, + though the switches are not used right now. + (TARGET_FLAGS): Add -msoft-float code from rfg@ncd.com to compile + on systems w/o floating point. + (TARGET_FLAGS): -mdebugf suppresses filling load delay slots. + (HARD_REGNO_OK): Relax constraints, allow anything in GP + registers, anything in even FP registers, int's only in multiply + and divide registers, int/CC in the FPSW register. + (FRAME_POINTER_REQUIRED): Require frame if alloca is called for + now. + (REG_CLASS_FROM_LETTER): Index from an array (mips_char_to_class) + instead of having lots of ?:'s. Also, allow 'd' to signify GP + registers. + (ENCODE_SEGMENT_INFO): Only record things being in small data/bss + if -mgpOPT (-O sets by default), -O, and -G xx where xx > 0. + (FINAL_PRESCAN_INSN): Rework to automatically not fill the + previous instruction's load delay slots with nop's if it is safe. + (ASM_OUTPUT_LABEL): If compiling collect, don't use assemble_name. + (ASM_GLOBALIZE_LABEL): If compiling collect, don't use + assemble_name. + (ASM_OUTPUT_LABELREF_AS_INT): Define this for collect. + (ASM_OUTPUT_INT): If collect, don't use output_addr_const. + + * mips.md (all floating point): If -msoft-float, don't allow any + floating point builtin operations. + (all patterns): Use 'd' constraint to limit things to GP + registers, rather than 'r'. This allows unions of + float/int/double to occupy any registers. + (*extend*): Call mips_move_1word to handle loads, which in turn + sees if we can omit the load nop. + (fix_trunc*): Redo, since register allocator can handle moving to + the appropriate register set. + (movdf_xfer*): Use explicit return's instead of falling through + and having the appropriate value in a register from the previous + call. + (movsf_xfer*): New patterns to accomidate unions of floats and + int's. + (movsi_unaligned): New define_expand to call either movsi_ulw or + movsi_usw. Also, if not a memory operation, use movsi. + (movsi_ulw): Set up to omit load delay nop if we can. + (movsi_usw): Use memory_operand instead of simple_memory_operand. + Also, allow storing 0 to an unaligned location. + (various move patterns): mips_move_1word now takes a third + argument to specify whether a load should sign or zero extend. + (call_value): Use register_operand on return value. + (probe): Turn into define_expand, and set a register to the + contents of memory pointed to by the stack pointer with volatil + set. + + * out-mips.c (toplevel): Add new global variables: + dslots_number_nops, mips_load_reg{,2}, mips_regno_to_class, + mips_char_to_class. + (simple_memory_operand): If not optimizing, no global memory + reference is assumed to be in the GP area. + (mips_fill_delay_slot): New function to tell FINAL_PRESCAN_INSN + the current insn is a load and may need a nop. + (mips_move_1word): Take a third argument to say whether load byte + and load half-word sign extend or zero extend. Change all + callers. If this is a load, call mips_fill_delay_slots to + schedule the nops. Change all return's to setting a variable, and + falling through to the end. + (mips_move_2words): If this is a load, call mips_fill_delay_slots + to schedule the nops. Change all return's to setting a variable, + and falling through to the end. + (function_arg): if -msoft-float, floating point is passed in GP + registers. + (override_options): Initialize mips_char_to_class. + (print_operand): %( and %) no longer do .set nomacro. + (print_operand): %# prints #nop if gas or -mstats. + (print_operand): Check for too many %), %], and %>'s. + (compute_frame_size): Allocate space in stack to hold FP, just in + case we later need a FP and previously thought we could eliminate + it. + (save_restore): Take a string to indicate the 2word load/store to + use, but don't use it at present. Change all callers. Home + varargs registers with sd if we can. + (function_epilogue): Deal with one or more outstanding nop's from + FINAL_PRESCAN_INSN. + (function_epilogue): Revamp -mstats output format. + (function_epilogue): Zero new global variables. + + * make-decrose (toplevel): Sort make variables. + (CLIB): Add -lld library. + (LANGUAGES): Add build of collect-osf and g++. + (ULTRIX_DIR): Change internal work directory location. + (cplus-lex.o): Don't optimize to avoid problem with 1.39 compiler. + (collect-osf): Add rules to build OSF/rose version of collect. + + * make-mips (LANGUAGES): Add build of g++. + + * tm-decrose.h (SIZE_TYPE): Specify to be long unsigned int. + (PTRDIFF_TYPE): Specify to be long int. + (WCHAR_TYPE): Specify to be long unsigned int. + + * sdbout.c (plain_type_1): Add support for unknown tags if + SDB_ALLOW_UNKNOWN_REFERENCES is defined. The MIPS ECOFF support + needs this, but standard COFF typically doesn't allow unknown + references. + + * gcc.texinfo (Debugging Info): Document + SDB_ALLOW_UNKNOWN_REFERENCES and SDB_ALLOW_FORWARD_REFERENCES. + + * collect-osf.c (whole file): New file to provide collect support + on OSF/rose. + +Fri Jun 28 09:20:18 1991 Tom Wood (wood at dg-rtp.dg.com) + + * configure (m88k-luna): New target. + * tm-m88kluna.h: New file for the Omron Luna/88k. + * xm-m88k.h: Don't use USG for the luna88k. + + * tm-m88kdgux.h: DG/UX implements coff and elf. Currently elf is + a strange variant of coff that's non-standard (it uses SDB + debugging info for example). Soon, the DG/UX elf will support + DWARF. These changes provide transitional support for all three. + (DWARF_DEBUGGING_INFO, SDB_DEBUGGING_INFO): Define both. + (VERSION_0300_SYNTAX): True when -msvr4 and -mversion-03.00. + * tm-m88ksvr4.h (ASM_FILE_END, ASM_OUTPUT_DWARF_LINE): Move these + to tm-m88k.h. They are dwarf specific. + * tm-m88k.h (TARGET_SWITCHES): Add -mversion-03.00 and -mdwarf. + (OVERRIDE_OPTIONS): If using version 03.00 syntax, assume DWARF_DEBUG. + + * tm-m88k.h (REG_ALLOC_ORDER): Adapt slightly for using r26-r29. + + * out-m88k.c (m88k_debugger_offset): Don't complain if the base + register is optimized away. + +Thu Jun 27 21:43:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (memref_referenced_p, memref_used_between_p): + New functions. + (update_equiv_regs): Call memref_used_between_p. + +Thu Jun 27 19:59:36 1991 Ken Raeburn (raeburn at watch.com) + + * print-tree.c (print_node): Changed the various "lang_#" strings to + indicate which of several possible fields are being examined; new + strings are "tree_#", "decl_#", "type_#". + +Thu Jun 27 15:05:43 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) + + * xm-mips.h (ONLY_INT_FIELDS): Define if not compiling with GCC + since the MIPS compiler treats enum bitfields as signed. + +Wed Jun 26 19:48:16 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * sched.c (memrefs_conflict_p): Explicitly handle case where both + X and Y are CONST. + (sched_analyze_2): Do create dependencies for insns with REG_EQUIV + notes. + (sched_note_set): Correctly handle the case where the destination + register is a multi-word hard register. + (attach_deaths): Don't add a REG_DEAD note to an insn with a + REG_UNUSED note that mentions the same register. Correctly handle + the case where the destination register is a multi-word hard + register. + (schedule_block): Also call sched_note_set for CLOBBERs when + computing which registers are dead at the end of the basic block. + Also call sched_note_set for USEs when computing what registers + are still live after a just scheduled insn. + (regno_use_in): New function, subroutine of split_hard_reg_notes. + Searches an rtx for any reference to the given register, and + returns the register rtx used if any. + (split_hard_reg_notes): New function. Handles the case where a + multi-word hard register with a REG_DEAD note gets split. Creates + a new REG_DEAD note for each part of the original hard register + used by the split insns. + (new_insn_dead_notes): Don't add a REG_DEAD note to an insn with a + REG_UNUSED note which mentions the same register. + (update_links): Add call to new function split_hard_reg_notes. + Correctly handle the case when the dest of the original insn was a + multi-word register which was split in the split insns. In this + case, the dest is no longer killed here, so must remove the + REG_DEAD on the last previous insn in this basic block which used + dest, if any such exists. + + * unroll.c (reg_dead_after_loop): Check that a CODE_LABEL which is + the target of a JUMP_INSN has a non-zero PREV_INSN field before + trying to derefence it. Fail if there is no previous insn. + + * loop.c (scan_loop): Fix typo. + * local-alloc.c (optimize_reg_copy): Likewise. + * global-alloc (hard_reg_copy_preferences): Likewise. + * gcc.texinfo (REG_LOOP_TEST_P): Likewise. + * optabs.c (expand_float): Likewise. + * tm-vaxv.h (ASM_OUTPUT_ASCII): Likewise. + + * out-sparc.c (output_move_double): Sign extend CONST_INTs that + feed DImode targets. + * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a LABEL_REF + as a legal address. Also, delete obsolete parts of preceeding + comment. + + * reload1.c (alter_reg): Only try to delete the reg_equiv_init + insn if it hasn't already been deleted by a previous call to + delete_dead_insn. + + * toplev.c (main): Handle -gdbx in addition to -gsdb for + orthogonality. + * gcc.texinfo: Document -gdbx. + +Tue Jun 25 09:57:08 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (casesi): Don't emit a barrier; the dispatch code must + adjoin the table. + * tm-m88k.h (DONT_REDUCE_ADDR): Don't use this. + (CONDITIONAL_REGISTER_USAGE): The PIC register is also call-used. + * out-m88k.c (m88k_layout_frame): Save the PIC register. + +Tue Jun 25 07:40:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.c (expand_function_end): FNDECL should + be CURRENT_FUNCTION_DECL. + + * combine.c (find_split_point): If we see an AND operation as the + first operand of some non-AND operation, use it as a split point. + (subst): Add counter to limit restarts, go to restart more often. + (subst, case AND): If we get (ior (and (X C1) C2)) and can't + restart more than once, rewrite with C1 as small as possible and exit. + + * cse.c (cse_end_of_basic_block): Don't put branch in our path more + than once. + (cse_main): Clear PATH_SIZE when skipping a block. + (cse_basic_block): Use GET_RTX_CLASS. + +Tue Jun 25 07:39:29 1991 Matthew Self (mself at next.com) + + * varasm.c (const_hash, compare_constant_1, record_constant_1): + For ADDR_EXPR's, don't hash address of SYMBOL_REF. Only use + offset and name of symbol. This allows constructors which + contain pointers to identical string literals to be uniqued. + + * loop.c (loop_optimize, init_loop): Moved call to + gcc_obstack_init() from loop_optimize() to init_loop(). + + * reload1.c (reload, init_reload): Moved call to + gcc_obstack_init() from reload() to new function init_reload(). + + * toplev.c (compile_file): Call new function init_reload(). + +Mon Jun 24 16:05:57 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * stmt.c (expand_end_stmt_expr): Fix typo in comment. + + * reload1.c (modes_equiv_for_class_p): Only fail if registers in + CLASS that can hold ALLOCATE_MODE can't also hold OTHER_MODE. Do + not fail for the reverse test. ALLOCATE_MODE is always a larger + or same size mode as OTHER_MODE, and will be the mode that reload + uses when allocating spill registers. Rewrite comments to explain + new behaviour. + (reload): Change call to modes_equiv_for_class_p to match new + semantics. + + * combine.c (simplify_shift_const): When simplifying (ashiftrt + (ashift inner_const_int) const_int), was checking the wrong number of + high order bits of inner_const_int. Also correct typos in comments. + + * c-convert.c (convert_to_integer): Must also check ARG1 for + unsignedness, because ARG0 could be a constant when EXPR is a + MINUS_EXPR. + + * combine.c (try_combine): When splitting, it is not safe to use + I2DEST if it is referenced by NEWPAT. + + * combine.c (distribute_notes): After converting REG_DEAD notes to + REG_UNUSED notes, clear PLACE if it already has a REG_UNUSED note, + to prevent adding a duplicate REG_UNUSED note. + + * gcc.texinfo (SIGNED_CHAR_SPEC): Document. + +Mon Jun 24 10:02:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_set_around_loop): Ensure the insn we find in front + of the loop does the set in the proper mode. + + * optabs.c (expand_float): Always do conversions to FMODE in the + signedness of the input. + + * reload.c (find_reloads, find_reloads_toplev): If reg_equiv_address + is not a constant address, copy it in case it is shared. + + * reload1.c (eliminate_regs): Copy reg_equiv_memory_loc in case + it is shared and we make a reload inside it. + + * stupid.c (stupid_mark_refs): Registers that aren't used must die + in the insn after their birth so they conflict with other outputs. + + * vax.md: Replace patterns to convert (and (ashiftxx)) + into (and (rotatexx)) with the patterns that are actually made + by combine. + We can allow offsettable addresses for operand 0 and it is not + early-clobber. + + * out-rs6000.c (secondary_reload_class): Correctly interpret result of + true_regnum. + + * out-rs6000.c (output_toc): Write FP constants in TOC. + * tm-r6000.h (TARGET_FP_IN_TOC): New flag. + (TARGET_SWITCHES): Add -mfp-in-toc and -mno-fp-in-toc. + (TARGET_DEFAULT): -mfp-in-toc is the default. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): FP constants may be put in the TOC. + +Mon Jun 24 00:52:44 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * out-i386.c (output_fix_trunc): If the dest operand mentions the + stack pointer, then we must adjust it to account for the temporary + space we allocate on the stack here. + +Sat Jun 22 07:24:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_set_around_loop): Fix typo in call to note_mem_written. + + * emit-rtl.c (reorder_insns): Correctly handle case when AFTER is last + insn. + + * expr.c (expand_expr, case COND_EXPR): Correctly handle X ? A : X + 1. + Previous change called invert_truthvalue which can modify EXP; we now + call it a second time to undo its action if do_store_flag fails. + +Sat Jun 22 02:37:59 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * cse.c (cse_set_around_loop): Don't try to initialize an + automatic structure. + + * reg-stack.c (compare_for_stack_reg): If both operands to a + compare are the same stack reg, don't process death on the second. + + * i386.md (all float patterns): Don't allow constants in the + operand predicates. + (all patterns using convert_387_op): Split patterns into one using + FLOAT and another using FLOAT_EXTEND. + +Fri Jun 21 20:37:03 1991 Tom Wood (wood at dg-rtp.dg.com) + + * sched.c (line_note, line_note_head): New vectors for use when + dealing with line-number notes. + (unlink_notes): Put line-number notes in LINE_NOTE for reuse. + (schedule_block): Just before reordering the insns, walk the insns + and record the line-number note in effect for each one. When + reordering is complete, restore the line-number notes as needed. + (schedule_insns): When debugging information is present, allocate + and initialize line_note and line_note_head. After scheduling, + walk the insns to delete redundant line-number notes. + +Fri Jun 21 19:54:29 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * old-sparc.c, out-old-sparc.c, tm-old-sparc.h: Delete obsolete + files. + + * loop.c (loop_number_exit_labels): Expand comment. Mention that + returns are not included because all bivs and givs are pseudos and + hence must be dead after a return. + +Fri Jun 21 07:10:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst, case PLUS, MINUS): Remove cases for things like + (x-y)+y; now done in simplify_binary_operation. + * cse.c (simplify_unary_operation): Handle (sign_extend (truncate ..)) + as used in casesi patterns. + (simplify_binary_operation, case PLUS, MINUS): Don't do most + simplifications if IEEE floating-point. + Add cases for things like (x-y)+y. + (fold_rtx): Replace PC with LABEL_REF if we are immediately in + front of a jump table. + Move code to apply associative law to after we have folded the + operands. + (fold_rtx, case MEM): Fix errors in checking for index of jump + table being out of range. + For ADDR_DIFF_VEC, return a MINUS or (truncate (minus L1 L2)). + (fold_rtx, case PLUS): If we have (plus X (label_ref L)), see + if X is equivalent to (minus L1 L2). + (cse_insn): Put (minus L1 L2) in `src_const' so it gets in a + REG_EQUAL note and gets put in the hash table. + If we are branching to a jump table, we are really branching to + immediately after the jump table + Remove special-case kludge for ADDR_DIFF_VEC; now handled properly. + + * vax.md (casesi): Make pattern agree with machine instruction; + specifically, index is multiplied by two and the comparison is LEU, + not LE. + + * cse.c (equiv_constant): If X is a one-word SUBREG of a larger + quantity, use `lookup_as_function' to see if it is equivalent + to a CONST_INT. + + * jump.c (squeeze_notes): No longer static. + * loop.c (find_and_verify_loops): Need to call squeeze_notes when + moving block of code (see last change). + + * reload.c (find_reloads): When forcing constant to memory, + set recog_operand to the result of find_reloads_toplev. + + * combine.c (subst, case PLUS): Add (c1 - a) + c2 -> (c1+c2) - a. + (subst, case MINUS): Use simplify_binary_operation rather than + making CONST_INT from subtraction of two INTVAL's to ensure it + gets truncated as appropriate for its mode. + Add (c1 - (c2 - a)) -> (c1-c2) + a. + + * a29k.md (negdf2): Use operand_subword_force, not operand_subword. + (movsf): Use operand_subword, not gen_lowpart. + + * out-rs6000.c (u_short_cint_operand): New function. + (print_operand): Support auto-decrement. + + * tm-rs6000.h (OVERRIDE_OPTIONS): Force profiling off. + (PREFERRED_RELOAD_CLASS): Return NO_REGS for real CONST_DOUBLE. + (HAVE_PRE_DECREMENT): Define this. + (GO_IF_LEGITIMATE_ADDRESS, GO_IF_MODE_DEPENDENT_ADDRESS): + Support PRE_DEC. + + * rs6000.md (zero_extendxx): Use rlinm, not andil so we avoid + clobbering cr0. + (arith-and-record patterns): Correct some bad operand numbers. + Put SImode output as operand 0 to improve register tying. + (andsi): Prefer rlinm over andil and andiu. + (load/store-with-update): Add patterns for these instructions. + (allocate_stack): New, replaces stack probe. + (add-and-compare): New patterns, with define_split. + (subtract-one-and-jump): Allow outputs anywhere; handle with + match_scratch and define_split. + + * stmt.c (expand_end_stmt_expr): If `last_expr_value' is 0, set it + to const0_rtx. + + * regclass.c (reg_n_sets): Move definition to before use. + + * jump.c (find_cross_jump): Don't try to substitute REG_EQUAL + values unless they are constants. + +Fri Jun 21 02:37:59 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * reload1.c (reload): Don't clear after_call for each insn. + +Sun Jun 16 17:28:43 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * reload1.c (reload, reload_as_needed, choose_reload_regs): Enable + code to avoid return register when SMALL_REGISTER_CLASSES defined. + + * final.c (final_scan_insn): Don't look for no-op moves if + processor has STACK_REGS. + + * hard-reg-set.h (GO_IF_HARD_REG_EQUAL): New macro. + + * jump.c (cross_jump_death_matters): New variable. + (find_cross_jump): If processor has STACK_REGS, compare death + notes if they matter. + + * toplev.c (compile_file, rest_of_compilation): Support new + stack-regs conversion pass. + (main, compile_file, rest_of_compilation): Add support for -dk to + dump after stack-regs conversion. + * reg-stack.c: New file. Implements stack-regs conversion pass. + * Makefile.in (reg-stack.o): New file. + + * tm-i386.h (STACK_REGS): New macro. + (all register macros): Define all eight float point registers. + (HARD_REGNO_NREGS): Only one float reg is needed for any mode. + (HARD_REGNO_MODE_OK): Move code here from out-i386.c. + (FIRST_STACK_REG,LAST_STACK_REG): New macros. + (ARG_POINTER_REGNUM): Move to reg 16. + (FP_REGNO_P): Recognize all float regs. + (QI_REG_P): New macro. + (STACK_REG_P,NON_STACK_REG_P,STACK_TOP_P): New macros. + (PRESERVE_DEATH_INFO_REGNO_P): Delete. + (OVERLAPPING_REGNO_P): Delete. + (CONST_OK_FOR_LETTER_P): Recognize constant mask for byte or word. + Recognize constant 0..3 for `lea' shifts. + (CONST_DOUBLE_OK_FOR_LETTER_P): + (PREFERRED_RELOAD_CLASS): Don't put CONST_DOUBLE in float regs. + QImode must go in class Q_REGS. Float regs can't hold MODE_INT. + (MOVE_RATIO): New macro. + (SHIFT_COUNT_TRUNCATED): Delete. Bit opcodes don't truncate. + (RTX_COSTS): New macro. + (CONST_COSTS): Make constants cheaper. + (QI_HIGH_REGISTER_NAMES): Renamed from QI_REGISTER_NAMES_TOP. + (INSN_CLOBBERS_REGNO_P): Delete. + (FP_TOP,RETCOM,POP_ONE_POP,FP_CALL1,FP_CALL): Delete. + + * out-i386.c (fp_pop_level): Delete. + (fp_call_internal, output_asm_insn_double_reg_op, via_memory, + fp_store_sf,fp_pop_sf,fp_store_df,fp_pop_df,fp_pop_int, + fp_push_sf,fp_push_df,output_movsf,output_movdf,output_movf, + top_dead_p,call_top_dead_p,fp_top_dead_p1,mentioned_fp_top): Delete. + (hard_regno_mode_ok): Moved to tm-i386.h. + (qi_high_reg_name): New variable. + (output_op_from_reg, output_to_reg): New function. + (singlemove_string,output_move_const_single): No longer static. + (singlemove_string): Use correct operand number in `push' string. + (standard_80387_constant_p): Use recommended method to extract + float from CONST_DOUBLE. + (PRINT_REG): Add 'h' for "high" register names, 'y' for "st(0)". + (print_operand): Code 'z' prints no size suffix for stack regs. + Print DImode suffix as "ll", not just "l". + (output_fix_trunc): New argument `insn'. Generalize to output to + MEM or REG. Return "char *" like other output routines. + Generalize for SImode or DImode output. + (binary_387_op,convert_387_op,float_op,fix_op,shift_op): New + match_operator predicates. + (output_387_binary_op,output_float_compare): New functions. + + * i386.md (all MODE_FLOAT patterns): Replace with new code to use + all FPU registers. + (all patterns): Use AS2 and AS1 macros where possible, for + eventual support of Intel syntax output. + (tstM): Don't initialize operands unless we need to. + (cmpM): Choose operange order in output for speed on i386. + (logical test patterns): The operands commute. If possible, + SImode tests should use just QImode. + (movstrictM): New patterns. + (movqi): Don't allow a constant of unknown value into Q_REGS. + (`lea' pattern): Move after addsi3. + (addsi3): Do three operand adds with `lea'. + (divsi3,divhi3,udivsi3,udivhi3): Delete in favor of u?divmodM4. + (divqi3,udivqi3): Remove earlyclobber for operand 0. + (andM3): Define three operand ANDs for 255 and 65535 using zero + extend opcode. Also directly do an AND in the second byte of a + register. + (iorM3,xorM3): Do byte ior instead of word where possible. + (xorqi3): Allow operands[2] from MEM. + (ashlsi3): Allow three-operand shift of 0..3 with `lea' opcode. + (lshlM3): Redundant, delete. + (shift & rotate patterns): Print %0 as destination operand. + (bit recognizers): New patterns to set, clear and compliment. + (call insns): Use "%P" code for targets to support Intel syntax. + (movstrsi): Express changes to the operands instead of just + clobbering them. Don't accept non-constant move count, as our + code isn't as efficient as a library call. + +Thu Jun 20 13:51:02 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): If we fold a conditional or computed branch to an + unconditional branch, it is now not in the normal format for an + unconditional branch, and it only has one set, delete it and + re-emit it. + Whenever we make an unconditional branch, set `cse_skip_to_next_block' + and do nothing else. + (cse_basic_block): Increment LABEL_NUSES on TO if it is a label + so it won't go away while we are using it as a stopping point. + If we are done with this block (`cse_skip_to_next_block' nonzero), + pretend we just did the insn before TO. + Decrement LABEL_NUSES of TO if it is a label; if it became zero, + delete it and try to extend the basic block. + + * reload.c (find_reloads): Fix typo in check for no alternatives + found. + + * combine.c (reg_significant, significant_mode): New vars. + (combine_instructions): Allocate and initialize reg_significant. + (set_significant): New function. + (significant_bits, case REG): Use reg_significant, if non-zero + as the significant bits of a register. + + * loop.c (n_times_set): Define -2 to mean that a register is + an candidate to be moved and is a constant. + (scan_loop): Set n_times_set to -1 or -2 as appropriate. + (regs_match_p): No need to check REG_FUNCTION_VALUE_P. + A register and a constant can be equal if the register is known + equivalent to the constant. + (invariant_p): Check n_times_set < 0, not == -1. + + * rtl.h (REG_LOOP_TEST_P): New macro. + * jump.c (duplicate_loop_exit_test): Mark registers used only in + loop exit test. + * cse.c (cse_around_loop, cse_check_loop_start, cse_set_around_loop): + New functions. + (cse_end_of_basic_block): Add new arg to say if we are being called + after loop.c has run; if we are being called after loop.c, we can + ignore NOTE_INSN_LOOP_ENDs. + (cse_main): Accept new AFTER_LOOP arg; pass to cse_end_of_basic_block. + If we are called before loop.c, see if we can cse around to the + start of a loop. + * toplev.c (rest_of_compilation): Tell cse_main if it is being called + before or after loop.c. + + * rtl.h (LABEL_OUTSIDE_LOOP_P): New macro. + * loop.h (uid_loop_num): Renamed from luid_loop_num and now + maps INSN_UID to loop number instead of INSN_LUID. + * loop.c (loop_optimize): Modifications for the above. + (find_and_verify_loop): Change luid_loop_num to uid_loop_num. + Look for blocks of code ending in an unconditional branch out + of the loop surrounded by a conditional branch and try to move + such a block out of the loop. + (mark_loop_jump): Change luid_loop_num to uid_loop_num. + Mark all LABEL_REFs that are outside the current loop, for + branch prediction. + (strength_reduce, check_dbra_loop): Change luid_loop_num to + uid_loop_num. + * unroll.c (unroll_loop, find_splittable_{regs,givs}): Likewise. + (reg_dead_after_loop, final_{biv,giv}_value): Likewise. + + * flow.c (reg_n_sets): Don't define this here. + * regclass.c (reg_n_sets): Define it here. + (reg_scan): Allocate and initialize reg_n_sets. + (reg_scan_mark_refs): Count sets of a register in reg_n_sets. + + * sched.c (reg_known_value_size): New variable. + (canon_rtx): Don't look in reg_known_value outside its allocated space. + (init_alias_analysis): Initialize reg_known_value_size. + + * loop.c ({unknown,fixed}_aggregate_altered): Deleted. + (loop_store_mems): Replaces loop_store_addrs and loop_store_widths. + (loop_optimize): Call init_alias_analysis. + (prescan_loop, note_addr_stored): Save all MEMs stored into, rather + than just those that appear fixed; save MEMs rather than addresses + and widths. + (invariant_p): Use true_dependence to see if a MEM is invariant; + compare it with all MEMs stored during the loop. + + * sched.c (memrefs_conflict_p): If XSIZE or YSIZE is zero + the object conflict if they have the same base, irregardless + of the offsets. + + * reorg.c (dbr_schedule): Reallocate unfilled_firstobj after + freeing memory from the obstack. + + * reload.c (push_reload): Always reload object inside SUBREG if + STRICT_LOW_PART is present. + Always set RELOAD_STRICT_LOW to zero; maybe we should get rid of it. + + * reload.c (make_memloc): Copy the address if it varies to avoid + potential sharing problems. + + * global-alloc.c (hard_reg_copy_preferences): New var. + (global_alloc): Allocate and initialze it. + (prune_preferences): Prune it. + (find_reg): Try preferences in hards_reg_copy_preferences first, + then hard_reg_preferences. + (set_preference): Set bit in hard_reg_copy_references, if appropriate. + + * emit-rtl.c (try_split): If we are splitting a JUMP_INSN, copy + JUMP_LABEL from the old to new insn update the count of that label. + + * cse.c (lookup): Always call exp_equiv_p unless we have a REG. + + * cse.c (insert): If we are making a register equivalent to a + constant that was already equivalent to a constant, update + qty_const_insn. + (cse_insn): Don't do it here. + * cse.c (fold_rtx): Always call simplify_unary_operation. + + * cse.c (record_jump_equiv): Don't get primary elements for OP0 and + OP1 since they might not be valid. + + * loop.c (get_condition): Accept new arg, EARLIEST that is a pointer + to where we place the earliest insn used to form the condition. + Check for comparison with CC0 in main loop, not earlier. + Never return condition involving CC0. + (get_condition_for_loop): Call get_condition with new arg. + * jump.c (jump_optimize): When we make store-flag insn, put new + insns before earliest insn used to form condition and use new + psuedo as target, which we copy into VAR immediately after the insn + that currently sets VAR. + Turn off "if (...) x = 1; else {...} if (x) ..." code; it is not + correct and can't be easily fixed. + (get_label_{before_after}): Use {prev,next}_nonnote_insn. + + * jump.c (jump_optimize): Don't interpret NOOP_MOVES as meaning + "after_reload"; check reload_completed instead. Don't pass NOOP_MOVES + to functions that aren't actually trying to noop moves. + (follow_jumps, tension_vector_labels): Don't accept AFTER_RELOAD arg; + check reload_completed instead. + + * combine.c (try_combine): Don't check that we don't have a + single_set when trying to replace a SET_DEST in a PARALLEL in I2. + (simplify_and_const_int): Always do the AND in the mode passed. + (significant_bits, case DIV and UDIV): Nothing special known + about low-order bits here. + (simplify_shift_const, shift cases): Don't go into infinite loop if + we combine two shifts in the same direction. + + * c-parse.y, cplus-parse.y, objc-parse.y (set_yydebug): Move to + end of file so we don't have a reference to yydebug after its + definition; also delete duplicate declaration. + +Thu Jun 20 09:08:21 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) + + * local-alloc.c (block_alloc): Fixed typo in last edit. + +Wed Jun 19 17:05:52 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) + + * reload.c (push_reload): Verify reload_in[i] exists before using + GET_CODE on it. + + * m88k.md: USE insns must be immediately before CALL_INSNs to work + properly, otherwise sched.c and reorg.c will not associate them will + the CALL. + + * unroll.c (calculate_giv_inc): Accept constant increments + represented as a LO_SUM. + + * flow.c (mark_used_regs): Don't put a REG_DEAD note on insns that + already have a REG_UNUSED note. This makes it consistent with + combine.c. + * combine.c (distribute_notes): If a REG_UNUSED reg is no longer + set by an insn, but is still used by the insn, then must convert + the REG_UNUSED note to a REG_DEAD note. + + * gcc.c (SIGNED_CHAR_SPEC): Put ifndefs around it, so that it can + be overriden by a definition in the tm.h file. + + * cse.c (cse_insn): Add missing third parameter to find_reg_note calls. + + * tm-arm.h (INIT_CUMULATIVE_ARGS): Take LIBNAME as third argument. + + * combine.c (can_combine_p): Remove extra argument in call to + find_reg_note. + + * rtlanal.c (find_regno_note): Verify that the note contains a + REG before checking its REGNO. + + * cse.c (canon_reg): Fix spacing/punctuation error. + * recog.c (constrain_operands): Likewise. + * tree.h: Likewise. + * varasm.c (Assemble function): Likewise. + +Wed Jun 19 13:14:22 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) + + * local-alloc.c (block_alloc): When counting instructions, abort if + a loop is detected. Improperly threaded insns are easy to produce + when working on the scheduler. + +Sat Jun 15 06:13:11 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (simplify_and_const_int, case ASHIFTRT): Avoid infinite + loop if simplify_shift_const doesn't do anything. + +Thu Jun 13 09:05:12 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (decrement_and_branch_until_zero): Add this insn. + +Thu Jun 13 07:32:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (plus_constant): Fix error in last change; CONST case + wasn't handled correctly. + + * tm-m68k.h (CONST_CONSTS): Constants between -7 and -1 are cheap + because of subq. + + * m68k.md (dbra): Operand 0 should have '+' constraint, not '='. + + * expmed.c (store_fixed_bit_field): Clean up some confusion between + targets and results in expand_binop calls. + + * local-alloc.c (optimize_reg_copy): Fix several typos relating to + status updating. + Correctly handle the case where DEST dies before SRC. + Fix some comments that had SRC and DEST backwards. + + * combine.c (can_combine_p): Swap order of args of && to avoid + unnecessary calls to use_crosses_set_p. + (simplify_and_const_int, case SUBREG): Make code agree with comment. + + * emit-rtl.c (operand_subword): Avoid compilation warning. + + * expmed.c (store_fixed_bit_field): Don't use OP0 as SUBTARGET + if it is a MEM and -fforce_mem was specified. + + * expmed.c (emit_store_flag): After scc insns, convert to wider + mode using unsigned conversion if STORE_FLAG_VALUE is positive. + + * expmed.c (init_expmed): Use mode of size BITS_PER_WORD instead + of SImode. + (store_bit_field, extract_bit_field): Replace references to SImode + with MAXMODE. + (store_fixed_bit_field, extract_fixed_bit_field): Don't use explicit + modes; use get_best_mode instead. + (store_split_bit_field, extract_split_bit_field): Use operand_subword + and mode_for_size instead of making SUBREGs and using SImode. + + * stor-layout.c (get_best_mode): Allow LARGEST_MODE to be VOIDmode, + in which case we can use any appropriate mode. + +Wed Jun 12 16:32:37 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu) + + * cplus-decl.c (init_decl_processing): Compensate for tm-sparc.h + change to WCHAR_TYPE handling. + +Wed Jun 12 10:19:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-sparc.h (WCHAR_TYPE): Must be "short unsigned int". + + * combine.c (subst, make_extraction, simplify_shift_const): Don't + change mode of volatile MEM; replaces similar change of June 1st. + * function.c (fixup_var_refs_1, optimize_bit_field): Likewise. + * recog.c (validate_replace_rtx_1): Likewise. + +Tue Jun 11 22:09:28 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * expr.c (expand_expr, case COND_EXPR): Expressions of both the form + X ? A + 1 : A and X ? A : A + 1 were being done, but only the former + was being handled correctly. + +Tue Jun 11 12:13:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c (validate_replace_rtx_1): If putting a CONST_INT in a + ZERO_EXTEND or SIGN_EXTEND, try to simplify the operation or fail; + the semantics of the operation require a non-VOIDmode argument. + + * cse.c (delete_dead_from_cse): Don't delete last insn in a libcall. + + * explow.c (allocate_dynamic_stack_space): Don't clobber SIZE when + rounding it. + + * fold-const.c (fold, case COND_EXPR): Ensure we always return an + expression in the correct type. + + * expr.c (emit_push_insn): Don't need to put X in register if it + is constant; operand_subword_force can do so if needed. + + * reload.c (find_reloads): Simplify nested `if' statements. + * recog.c (constrain_operands): Likewise. + + * jump.c (mark_jump_label): Fix typo (extra paren) in last change. + +Tue Jun 11 10:03:08 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) + + * collect2.c: New file. + + * sched.c (memrefs_conflict_p): Finish removing ASHIFT case. + + * emit-rtl.c (operand_subword): Change test of BITS_PER_WORD < + HOST_BITS_PER_WORD from compile-time to run-time. + * expr.c (emit_push_insn): Ditto. + * recog.c (constrain_operands): Ditto. + * reload.c (find_reloads): Ditto. + + * jump.c (jump_optimize): Add `continue' after deleting INSN in case + where further attempts to optimize the insn are invalid. + (mark_jump_label): Don't crash if NEXT == 0. + +Tue Jun 11 09:14:05 1991 Tom Wood (wood at dg-rtp.dg.com) + + * out-m88k.c (legitimize_operand): New function to convert + CONST_DOUBLE to SFmode when possible. + * m88k.md (cmpdf, adddf3, subdf3, muldf3, divdf3): Use it. + * tm-m88k.h: Declare it. + + * xm-m88k.h (OBSTACK_CHUNK_SIZE): For DG/UX at least, the default + value results in a perfect checkerboard. + +Tue Jun 11 07:23:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to + do any partial conversions here; expand_fix and expand_float now + handle all modes. + * optabs.c (fixtab, fixtrunctab, floattab): Table now contains + all modes. + (can_fix_p, can_float_p): Use mode as index in tables. + (init_fixtab, init_floattab): Likewise. + Add support for QImode and HImode operations. + (expand_float): Rework to remove dependendence on specific modes. + Can only use REAL_VALUE_LDEXP in certain configurations. + (expand_fix): Likewise. + If can't do operation unsigned, or signed into wider mode, emit a + sequence that compares operand with 2**(N-1) and, if larger, + subtracts 2**(N-1), converts, and adds it back. + Protect from queue and force not memory at start. + * m88k.md (fixuns_truncdfsi2, fixuns_truncsfsi2): Deleted; now done + in expand_fix in optabs.c. + + * combine.c (expand_field_assignment): Convert SET_SRC to mode of + INNER. + (simplify_shift_const, case ASHIFTRT): Don't use undefined initial + value of MASK. + + * explow.c: Include insn-config.h, recog.h, and insn-codes.h. + (allocate_dynamic_stack_space): Rework to be more precise in required + alignment. Must maintain alignment of stack to STACK_BOUNDARY at + all times (it must not be momentarily misaligned) and must align + returned address to BIGGEST_ALIGNMENT. + * Makefile.in (explow.o): Show new includes. + +Tue Jun 11 07:22:54 1991 Matthew Self (mself at next.com) + + * m68k.md: Change incorrect reference to -m68040-fp to -m68040-only. + Fix several spelling errors. + + * m68k.md (fix_trunc*f*i2): New insn's to replace fintrz on the + '040. These emit a sequence of insn's to change the rounding mode + to round-to-zero, perform the truncation, and restore the rounding + mode. + +Mon Jun 10 09:57:31 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * c-lang.c (GNU_xref_{begin,end}): Add stub functions for xref info. + + * cplus-decl.c (record_builtin_type): Add support for handling + builtin types' nicknames (e.g. "unsigned long" for "long unsigned + int"). + + * expmed.c (struct algorithm): Change array size from BITS_PER_WORD + to MAX_BITS_PER_WORD. + gcc.texinfo: Document MAX_BITS_PER_WORD. + +Mon Jun 10 07:45:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): When making an I1 from an I2 that is + a PARALLEL, give the new I1 the same INSN_UID as I2. + + * recog.c (constrain_operands, case 'p'): Pass operand mode + (from match_operand) to strict_memory_address_p. + + * m68k.md (andsi3): bclr does not set the condition codes in the + standard way. + +Sun Jun 9 11:16:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c (find_reloads): Swap preferred_class and pref_or_nothing + when we swap commutative operands. + + * combine.c (subst, simplify_shift_const): Treat UDIV and MULT + with a second operand of a constant that is a power of two as the + appropriate shift if it feeds or is fed by a shift. + + * expmed.c (expand_divmod): When searching for the best mode to + perform the computation, take into account the fact that we sometimes + do a shift, not a divide. + + * expmed.c (emit_store_flag): Correctly handle "a = b < 0;" if A + is narrower than B. + Don't check for STORE_FLAG_VALUE equal to just the sign bit of + OP0 if the width of its mode is larger than HOST_BITS_PER_INT. + Use switch rather than if/elseif/elseif. + + * combine.c (simplify_shift_const, shift cases): We were not forming + the mask correctly when VAROP is a LSHIFTRT and narrower than X; + simplify the mask formation by using significant_bits and + simplify_binary_operation. + + * reload.c (make_memloc): Copy RTX_UNCHANGING_P from REG to MEM. + (find_reloads_address, find_reloads_address_1): Don't shortcut + reloading the address in reg_equiv_address; always call + find_reloads_address on it. + + * recog.c (constrain_operands, case 'p'): Validate address if + testing strictly. + + * out-alliant.c, out-m68k.md (output_move_double): Extraction of + parts of CONST_INT was backwards; these machines are words-big-endian. + +Sat Jun 8 12:19:26 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * sparc.md: Remove special-case shift insns which load and shift + memory-based operands. Combine now does this for us. Also change + abs patterns so that they consistently print the negation followed + by the mov on a single line. + + * reload1.c (choose_reload_regs): Cast `enum reg_class' values to + `int' when using them as array indicies. + + * gnulib2.c (LONG_TYPE_SIZE): Don't inherit the definition of + LONG_TYPE_SIZE from tm.h, since that may be target_flag-specific. + Instead synthesize the value from `sizeof (long)'. + + * cplus-gc.c (build_m_desc): Figure out whether the i_desc should + constitute a defn of its type or not. Analogous to May 26 change + for instance variables. + +Sat Jun 8 07:11:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (simplify_and_const_int): Detect and remove redundant + alignment operation. + (significant_bits, case REG): Realize that the stack pointer might + be aligned. + (significant_bits, case PLUS, MUNUS, MULT, DIV, UDIV): Track low-order + bits of zero as well as high-order zero bits (so we detect alignment + operations). + (record_value_for_reg): If updating a register, try to substitute its + old value into the expression for better tracking of values. + + * a29k.md (fmac/dmac): Delete incorrect patterns. + +Thu Jun 6 19:08:29 1991 Sean Fagan (sef at cygint.cygnus.com) + + * final.c (output_source_line): Say we are on line number 1 if + sdb_begin_function_line is -1, not 0. + +Thu Jun 6 08:01:05 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stor-layout.c (get_best_mode): Don't assume GET_MODE_SIZE (SImode) + is UNITS_PER_WORD; if SLOW_BYTE_ACCESS defined, try to return the + mode whose size is UNITS_PER_WORD. + + * sparc.md (floatsisf2, floatsidf2): Add missing mode for + operand 1; use const_int_operand as predicate. + + * cse.c (canon_reg): Add arg INSN; if replacing a pseudo with a hard + register or vice versa, use validate_change to ensure the insn + remains valid. + All callers changed; most pass zero since they validate replacement. + (cse_insn): Use validate_change on result of canon_reg when + required. + + * c-common.c (combine_strings): Use WCHAR_BYTES instead of + UNIT_PER_WORD for the size of a wide char. + + * emit-rtl.c (gen_lowpart_common): Always extract integral modes + from integer CONST_INTs and CONST_DOUBLEs. + + * integrate.c (copy_for_inline, copy_rtx_and_substitute): Don't + try to extract a float from a fixed-mode CONST_DOUBLE. + (copy_for_inline, copy_rtx_and_substitute, restore_constants): + Declare target of REAL_VALUE_FROM_CONST_DOUBLE to be REAL_VALUE_TYPE. + + * local-alloc.c (update_equiv_regs): Fix typo in testing + reg_basic_block. + +Wed Jun 5 09:15:09 1991 Ken Raeburn (raeburn at watch.com) + + * Eliminate unneeded binding levels when overloading template class + names: + * cplus-pt.c (overload_template_name): Accept second argument + classlevel, indicating that new decl should be pushed into current + class binding level; otherwise, assume current level is okay to use. + Callers changed. + (undo_template_name_overload): New second argument classlevel + indicates where binding for variable was made. Callers changed. + + * cplus-parse.y (structsp): Call undo_template_name_overload in all + appropriate cases. + + * Get interface/implementation flags set properly on methods in + class templates, and use it: + * cplus-lex.c (store_pending_inline): If inside a class, walk up + through nested classes to top level looking for template parameters. + For class methods, use current interface flag settings rather than + flags for class. + (extract_interface_info): No longer static. + (do_pending_inlines, process_next_inline): Call + extract_interface_info to get interface flags set properly after + changing file names. + * cplus-pt.c (instantiate_class_template): Ditto. + (end_template_instantiation): Ditto. + (do_pending_expansions): If interface/implementation flags of + containing class are set, use them. + * cplus-tree.h (interface_unknown): Added declaration. + +Wed Jun 5 07:36:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c (find_reloads_address): Unshare a MEM if its address is + the address of a constant pool location. + + * optabs.c (expand_binop): Fix typos in multi-word addition; had + MODE for SUBMODE. + + * reload1.c (alter_reg): Correctly delete insn that makes a REG + equivalent to a MEM in the case where the MEM is the SET_DEST. + + * a29k.md (negdf2): Add missing alternative in operands 2. + (movdi): Change "i" constraint to "n". + Split for constant integer as input; split cannot fail. + Correct typo in DEFINE_SPLIT (DFmode for DImode). + * out-a29k.c (gen_reg_or_integer_constant_operand): New function. + + * configure: Fix typo in reference to tm-sun3-nfp.h. + +Wed Jun 5 06:56:10 1991 Matthew Self (mself at next.com) + + * c-parse.y, objc-parse.y (attrib): Always pass aligned attribute + through. Return $1 on failure rather than NULL_TREE for consistency. + + * c-common.c (decl_attributes): Warn if requested alignment is not + a power of two. Also warn if decl is not a VAR_DECL or a FIELD_DECL, + since specifying alignment makes no sense for a TYPE_DECL, and is + not implemented for a FUNCTION_DECL. + + * c-parse.y, objc-parse.y (initdcl, notype_initdcl): Call + decl_attributes before finish_decl in order for alignment attribute + to take effect. + + * varasm.c (assemble_variable): Warn if DECL_ALIGN is greater than + MAX_OFILE_ALIGNMENT, if defined. This allows errors to be + detected with formats like a.out which support a maximum alignment + of 4. + + * c-parse.y, objc-parse.y (component_declarator): Call decl_attributes + with correct args. + + * stor-layout.c (layout_record, layout_union): Do not clamp struct + alignment at BIGGEST_ALIGNMENT, since individual fields may have + requested greater alignment than this. This check shouldn't have + done anything anyway. + + * c-parse.y (unary_expr): When alignof is applied to an expression, + call c_alignof_expr so that we can check DECL_ALIGN instead of calling + c_alignof (TYPE_ALIGN (TREE_TYPE (expr))). + + * c-typeck.c (c_alignof_expr): New function to compute alignof for + expr's. Returns DECL_ALIGN for VAR_DECL's and FIELD_DECL's. Also + return 1 after reporting error about applying alignof to bitfields. + + * c-tree.h (c_alignof_expr): Add declaration. + + * varasm.c (assemble_variable): MAX_OFILE_ALIGNMENT defaults to + BIGGEST_ALIGNMENT if not defined in config.h. + +Wed Jun 5 06:55:12 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (mov*): Change the interface to emit_move_sequence. + * out-m88k.c (emit_move_sequence): Similar to the sparc version. + + * tm-m88k.h (SIZE_TYPE): Specify as unsigned int. + + * xm-m88k.h (HOST_BITS_PER_LONGLONG): Define. + +Wed Jun 5 01:45:07 1991 Sean Fagan (sef at cygint.cygnus.com) + + * sdbout.c (sdbout_symbol): don't output definition information for + a nested function inside the parent function; this makes COFF + assemblers upset. + +Tue Jun 4 17:35:13 1991 Sean Fagan (sef at cygint.cygnus.com) + + * function.c (trampoline_address): make the RTL_EXPR node temporary, + not momentary, so that the trampoline_list doesn't become garbage. + Fix made by jim wilson (wilson@cygnus.com). + +Tue Jun 4 09:40:59 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (move_block_to_reg): Fix typo in last change. + + * local-alloc.c (update_equiv_regs): Check for reg_n_refs == 2, + not loop_depth * 2. + + * reorg.c (fill_simple_delay_slots): Clear INSN_DELETED_P on insns + placed in current_function_epilogue_delay_list. + + * make-rs6000 (ALLOCA_FLAGS, ALLOCA_FINISH): Add override to + compensate for the fact that the RS/6000 C compiler has no -S. + + * out-rs6000.c (easy_fp_constant): Use operand_subword. + (print_operand): Use INT_P and INT_LOWPART to allow accepting both + CONST_INT and CONST_DOUBLE for integers. + + * rs6000.md (floatsidf2, floatunssidf2): Rework these to emit only + two insns, each of which has DImode or DFmode operands. Then + split the funny DImode insn to generate it. + (fix_truncdfsi2, fixuns_truncdfsi2): Surround our call with + REG_LIBCALL/REG_RETVAL notes. + Use operand_subword. + (movsf, movdf): Correctly handle a pseudo passed during reload. + Use operand_subword. + Split moves involving "easy" FP constants. + (subtract-and-branch): Disable for now, to avoid output reload in jump. + + * tm-rs6000.h (WCHAR_TYPE): Add definition. + (INT_REGNO_P): Fix typo; register 31 is a normal register. + (LEGITIMATE_CONSTANT_P): The only FP constants that are valid are + the "easy" ones. + + * a29k.md (negdf2): Use XOR when not involving accumulator. + Add SCRATCH so we dont use gr122. + Handle case where input and output are same register. + (negsf2): Use SCRATCH. + (DImode operations): Use operand_subword, not gen_{low,high}_part. + (movsf, movdf, movdi): Always split if we can look inside CONST_DOUBLE. + Use operand_subword. + Don't split into separate words in DEFINE_EXPAND. + * out-a29k.c (in_operand): Account for fact that integer CONST_DOUBLE + is VOIDmode. + (extract_subword): Deleted. + (print_operand): Add macros INT_P and INT_LOWPART so we can accept + either CONST_INT or CONST_DOUBLE. + + * romp.md (movdi, movdf, negsf2, negdf2): Use operand_subword and + operand_subword_force, instead of gen_{high,low}part. + Use force_const_mem instead of force_const_double_mem. + + * m88k.md (movdi): Remove 'F' constraint; 'n' now includes integer + CONST_DOUBLE. + (anddi3, iordi3, xordi3): Likewise. + Use operand_subword to extract individual words. + * out-m88k.c (output_load_const_{float,double,dimode}): Use + operand_subword. + + * Makefile.in (emit-rtl.o): Now includes expr.h. + * calls.c (expand_call): Pass mode to move_block_to_reg. + * combine.c (subst, case SUBREG): Simplify SUBREG of hard register + and some SUBREGs of constants. + (gen_lowpart_for_combine): If object is desired mode, always return it. + Use gen_lowpart_common for most cases; just support MEM and + surrounding with a SUBREG here. + * cse.c (insert): CONSTANT_P includes CONST_DOUBLE. + (fold_rtx): Use MODE for GET_MODE (X). + (fold_rtx, case SUBREG): Handle simple cases of folding SUBREGs. + (fold_rtx, case MEM): Use operand_subword and gen_lowpart_if_possible + to get parts of constant instead of gen_lowpart and gen_highpart. + (gen_lowpart_if_possible): Use gen_lowpart_common for most cases. + * expr.c: Include expr.h. + (gen_lowpart_common): New function, from gen_lowpart. + (gen_lowpart): Use gen_lowpart_common for most cases; just handle MEM. + (gen_highpart): Deleted. + (subreg_lowpart_p): Test WORDS_BIG_ENDIAN in `if', not `#if'. + (operand_subword, operand_subword_force): New functions. + * explow.c (plus_constant): Handle adding CONST_INT to CONST_DOUBLE. + Rework to use switch statement. + Remove obsolete OLD_INDEXING code. + (plus_constant_for_output): Use plus_constant for most cases. + (break_out_memory_refs): Refine which constants get broken out. + * expmed.c (store_bit_field, extract_bit_field): Don't use + gen_highpart for multi-word fields; instead, loop and use + operand_subword. We now support fields more than two words long. + (mask_rtx, lshift_value): Just pass high and low words to + immed_double_const; it will mask and choose CONST_INT vs. CONST_DOUBLE. + * expr.c (convert_move): Use operand_subword instead of gen_highpart. + Don't assume GET_MODE_SIZE (DImode) > UNITS_PER_WORD. + (move_block_to_reg): Add MODE arg. + Use operand_subword_force. + (move_block_from_reg): Use operand_subword. + (move_block_from_reg, move_block_to_reg, use_rgs): + Don't assume GET_MODE_SIZE (SImode) == UNITS_PER_WORD. + (emit_move_insn, emit_push_insn): Likewise. + Use operand_subword and operand_subword_force. + (expand_expr, case INTEGER_CST): Just call immed_double_const. + (expand_expr, cases FIX_TRUNC_EXPR, FLOAT_EXPR): Don't assume + GET_MODE_SIZE (SImode) == UNITS_PER_WORD. + (expand_builtin): Likewise. + (do_jump_by_parts_{greater,equality): Likewise. + Use operand_subword_force. + * expr.h (operand_subword): Remove declaration from here. + (validize_mem): Add missing declaration. + * final.c (final_scan_insn): If assembler code string is "#", + try to split insn. + Ignore insns with INSN_DELETED_P set. + (alter_subreg): Remove erroneous code for CONST_DOUBLE. + (output_addr_const): Integer CONST_DOUBLEs are now VOIDmode. + * fold-const.c (add_double): No longer static. + * integrate.c (copy_for_inline, copy_rtx_and_substitute): + Use validize_mem to validate force_const_mem's result. + (subst_constants, case SUBREG): Use operand_subword and + gen_lowpart_common instead of gen_lowpart and gen_highpart. + (restore_constants): Don't assume all CONST_DOUBLEs are floating. + Use validize_mem to validate force_const_mem's result. + * optabs.c (expand_binop,, expand_unop): Don't assume + GET_MODE_SIZE (SImode) == UNITS_PER_WORD. + Use operand_subword_force. + (operand_subword): Deleted from here. New version in emit-rtl.c. + * recog.c (validate_replace_rtx_1): Check for any constant, + not just CONST_INT. + (constrain_operands, case 'm', 'o'): Any constant OK if strict < 0. + (constrain_operands, case 'E'): Must have host and target word sizes + the same. + (constrain_operands, case 's', 'n'): CONST_DOUBLE can be integer. + * reload.c (find_reloads, case 'm', 'o', 'E', 's', 'n'): Likewise. + Don't call force_const_double_mem; use force_const_mem instead. + (find_reloads_toplev): Likewise. + Use gen_lowpart_common to get low part of constant. + * rtl.h (gen_highpart, force_const_double_mem): Deleted. + (gen_lowpart_common, operand_subword, operand_subword_force): + New declarations. + * varasm.c (const_double_chain): Renamed from real_constant_chain. + (immed_double_const): For integer constants, perform any needed + masking and make either CONST_INT or CONST_DOUBLE. + (force_const_double_mem): Deleted; would need a mode arg added + which would make it almost identical to force_const_mem. + * out-vax.c (split_quadword_operands): Use operand_subword instead + of gen_lowpart and gen_highpart. + + * function.c (find_replacement): New function. + (fixup_var_refs_insns): Pass pointer to listhead of (new) + fixup_replacement structures; if any entries were pseudos, copy from + memory to the pseudo. + (fixup_var_refs_1): New arg REPLACEMENTS; provide that arg in + recursive calls. + Use find_replacements to ensure we don't break any MATCH_DUPs. + +Tue Jun 4 05:07:53 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * stmt.c (pushcase, pushcase_range): Take new parameter DUPLICATE. + Use this to store existing LABEL_DECL if LABEL is a duplicate. + * c-parse.y, cplus-parse.y, objc-parse.y, stmt.c: All callers + changed. + +Mon Jun 3 17:19:40 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-expr.c (decl_in_memory_p): New function. + * cplus-typeck.c (mark_addressable): Test `decl_in_memory_p' instead + of testing memory_operand, since the DECL_RTL of a decl may be a + (MEM ...) by not a valid memory address. + + * cplus-typeck.c (mark_addressable): When we decide that a static + const variable must go to memory, make sure that its rtl is + allocated from the correct obstack. + + * cplus-decl.c (grokdeclarator): Replace undocumented BREAK_C_TAGS + #define control with comments explaining why or how it is correct + for GNU C++ to break C's notions of what a tag is. + + * cplus-call.c (convert_harshness): Replace undocumented #if + AMBIGUOUS_WORKING control with a comment explaining the actions + where this control used to be. + +Mon Jun 3 15:07:47 1991 Sean Eric Fagan (sef at kithrup) + + * tm-i386.h (TRAMPOLINE_TEMPLATE): Changed a 040 to 0xe0; + this is the proper code for a jmp [%eax] instruction. + +Mon Jun 3 08:07:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cccp.c (initialize_builtins): Install __SIZE__TYPE__, + __PTRDIFF_TYPE__, and __WCHAR__TYPE__ as builtins. + +Sun Jun 2 18:18:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (mark_set_1): Don't set LAST_MEM_SET from a MEM that has any + side-effects (such as auto-inc), not just volatile MEMs. + + * rtlanal.c (reg_referenced_p): New function. + * combine.c (try_combine): Correct test for added_sets_1 to account + for case where I1 and I2 both feed I3. + (distribute_notes): Don't interpret setting a reg as a use of the + reg; use new reg_referenced_p and simplify code. + + * flow.c (propagate_block): Ensure that LOOP_DEPTH is correct at all + insns in a basic block, otherwise reg_n_refs will be set incorrectly. + + * recog.c (validate_replace_rtx_1): Don't change mode of memory + reference that is mode-dependent. + Don't make a MEM with a larger mode than original. + + * combine.c (try_combine): Disable code to check MODES_TIEABLE_P + added May 20th and 22nd; this should not be needed now that + LIMIT_RELOAD_CLASS has been added to reload. + + * flow.c (mark_set_1): Allow for the fact that stack pushes don't have + REG_INC notes. + * local-alloc.c (optimize_reg_copy): Likewise. + Don't change lives of hard registers #ifdef SMALL_REGISTER_CLASSES. + A USE of a register must not be changed. + (validate_equiv_mem): Don't make an equivalence to volatile MEMs. + + * reorg.c (mark_set_resources): #ifdef PUSH_ROUNDING, mark SP as always + set since the insn might have a (pre_dec sp). + +Sun Jun 2 16:03:31 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (libg_dir): Variable deleted. + (install-gnulib): Don't bother creating libg.a. + + * cccp.c (size_type_string, etc.): Variables deleted. + (special_symbol): Use macros SIZE_TYPE, etc., directly. + +Sat Jun 1 12:54:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Let tm.h specify types for size_t, ptrdiff_t and wchar_t. + (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): New params. + * cccp.c, c-decl.c: Provide default definitions of the new params. + * cccp.c (__SIZE_TYPE__, __PTRDIFF_TYPE__, __WCHAR_TYPE__): Builtins. + (special_symbol): Implement them based on new params. + * stddef.h (size_t, ptrdiff_t, wchar_t): Declare using those builtins. + * c-tree.h (ptrdiff_type_node): Declare variable. + * c-decl.c (init_decl_processing): Use *_TYPE params + to control setting of sizetype, wchar_type_node and ptrdiff_type_node. + * c-typeck.c (pointer_diff): Take result type from ptrdiff_type_node. + + * configure (target1): Really change / to -. + +Sat Jun 1 02:49:04 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-lex.c (extract_interface_info): Now non-static. Called + whenever INPUT_FILENAME changes. + * cplus-pt.c (instantiate_class_template): Call + `extract_interface_info' when switching files. + * cplus-input.c (getch): Ditto. + + * combine.c (subst): Don't change the mode of memory access for + volatile memory. + + * tm-sparc.h (CONST_COSTS): Fix typo in computing cost of + CONST_DOUBLE for DImode integers. + +Fri May 31 16:11:57 1991 Ken Raeburn (raeburn at watch.com) + + * cplus-lex.c (process_next_inline): Set line number and filename if + more inline data is to be processed. + (store_pending_inline): Treat FUNCTION_TYPE like METHOD_TYPE. Use + current_class_type instead of extracting it from method type; the + two should be the same, and the latter doesn't work for statics. + + * cplus-decl.c (start_decl): When constructing templates, use + original name of function rather than "mangled" name. Look for + FUNCTION_DECL, not FUNCTION_TYPE, when deciding how to push the + new decl. + (start_method): Default inlining does not apply to template + expansions. + + * cplus-pt.c (pending_template_expansions): Moved declaration to + start of file. + (tsubst): For FUNCTION_DECL, use original name of source, not + mangled name. + (instantiate_template): Local variables now non-static. Fill in + pending-inline field of new decl, rather than template-info, and + chain into either pending-inlines or pending-template-expansions. + + * cplus-typeck.c (build_x_function_call): If a template is found, + treat it as an overloaded declaration. + +Fri May 31 14:20:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (all.cross): New target. + * configure: If cross-compiling, change `ALL' to use all.cross. + +Fri May 31 11:43:31 1991 Matthew Self (mself at next.com) + + * tm-next.h (EXTRA_SECTION_FUNCTIONS): + Add new constructor and destructor sections. + (MAX_OFILE_ALIGNMENT): Define as 2^15 for Mach-O. + (ASM_OUTPUT_ALIGN): Use .align, not .even. Allow alignments > 2. + (CPP_PREDEFINES): Added -Dm68k since some code expects this. + +Fri May 31 05:41:51 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-class.c (pushclass): New argument value for MODIFY accepted. + * cplus-decl2.c (build_push_scope): Call `pushclass' with MODIFY == 3. + + * cplus-decl.c (finish_function): Set TREE_PUBLIC and TREE_EXTERNAL + bits on functions according to #pragma interface/implementation, + regardless of whether or not the function's inline. This fixes the + bug of needless code replication with -fno-inline. + +Thu May 30 17:39:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * expr.c (expand_expr): + Don't lose volatility of fields in COMPONENT_REF. + +Thu May 30 17:36:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (count_reg_usage, delete_dead_from_cse): New functions. + * toplev.c (rest_of_compilation): Call delete_dead_from_cse immediately + after the first cse pass. + + * local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem): + New functions, to find cases where a REG is equivalent to a MEM. + (optimize_reg_copy): New function. + (update_equiv_regs): Call these new functions. + Look for a register used in only one basic block being stored into + memory. + Keep track of loop depth so we can find regs used only once, but + inside a loop. + * reload1.c (reload): Use single_set when looking for an insn + that initializes a register. + If making a REG equivalent to a MEM, the insn with SET_DEST being + the register isn't always the one making the equivalence, since the + equivalence might be occurring due to a store into MEM; in that + case set reg_equiv_init to the latter insn. + +Thu May 30 14:23:01 1991 Ken Raeburn (raeburn at watch.com) + + * Pending expansions processed at end-of-file can be processed out + of order, so freeing the associated data from the obstacks is not + possible. + * cplus-tree.h (struct pending_inline): New field can_free + indicates whether to free the text after processing it. + * cplus-lex.c (do_pending_inline, process_next_inline): If + can_free flag is set, specify inline-text obstack, otherwise null + pointer. + (cons_up_default_function): Clear flag. + (reinit_parse_for_method): Set it. + (store_pending_inline): Clear it when changing obstacks. + (pending_template_obstack): Deleted. References changed to use + permanent_obstack. + + * cplus-lex.c (store_pending_inline): Set DECL_PENDING_INLINE_INFO + value after swapping obstacks, not before. + +Thu May 30 07:23:18 1991 Michael Tiemann (tiemann at cygnus.com) + + * va-sparc.h: Has to be a char * to be compatible with Sun. + i.e., we have to pass a `va_list' to vsprintf. Also, fixed + bug in passing vararg structs. + +Thu May 30 00:32:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * configure: Delete Makefile.tem before writing it. + + * stor-layout.c (layout_record): + Ignore PCC_BITFIELD_TYPE_MATTERS for incomplete type. + + * fixincludes (stdtypes.h): Handle wchar_t like the other types. + + * function.c (assign_parms): Don't declare args_so_far register. + +Wed May 29 15:13:05 1991 Ken Raeburn (raeburn at watch.com) + + * cplus-tree.def (TEMPLATE_PARM_IDX): Deleted. + (TEMPLATE_TYPE_PARM): New node type, looks like a type node. + (TEMPLATE_CONST_PARM): New node type, looks like a const node. + + * cplus-tree.h (IDENTIFIER_TYPE_VALUE_PTR): Inlined under gcc. + (TYPE_IDENTIFIER_PTR): Ditto. + (DECL_NESTED_TYPENAME_PTR): Ditto. + (struct lang_type): New bitfield `use_template'. + (CLASSTYPE_USE_TEMPLATE): Accessor macro for above. + (struct lang_decl): New field `template_info'. + (DECL_TEMPLATE_INFO): Accessor macro for above. + (TEMPLATE_EXPANSION_NAME_P): Deleted. + (push_overloaded_decl_top_level): Added declaration. + (TEMPLATE_TYPE_TPARMLIST, TEMPLATE_TYPE_IDX, + TEMPLATE_TYPE_SET_INFO, TEMPLATE_CONST_TPARMLIST, + TEMPLATE_CONST_IDX, TEMPLATE_CONST_SET_INFO): New macros for + accessing fields of TEMPLATE_..._PARM nodes. + (struct pending_inline): New fields for names and values to bind + to them while processing. + (struct template_info): Definition moved here from cplus-pt.c. + (instantiate_template): Added declaration. + (instantiate_class_template): Ditto. + (processing_template_{decl,defn}): New variable declarations. + + * print-tree.c (print_node): Provide missing argument to + print_node for `bitpos' field. Display `virtual' flag, and (for + function and method types) `class' field; these are only used by + C++ that I'm aware of, but are defined in common code, so they + should be displayed here. + + * cplus-parse.y (template_def): Separate set of derivations, for + class and function templates. Template_def is a type of extdef; + extern_lang_string before template_def is not permitted. + (fn_tmpl_end): New nonterminal, anything that signals the end of + the portion of a template that we should parse. + (yyprint): Define only if YYDEBUG. Handle TYPESPEC. + (datadef): Complain at class template override declaration if that + specialization has already been produced by expansion. Template + definitions no longer belong here. + (tmpl.2): Always call instantiate_class_template; let it decide + whether or not to go through with it. + (template_instantiation): Put decl in global scope only if not + already there. + (typespec, scoped_typename): Scoped typename inside template type + should be a scoped_typename, not a typespec. However, a + template_type should be allowed as a typespec. + (structsp): Don't undo template name overload here. Deleted + derivation from template_type. + (named_class_head_sans_basetype): Don't overload template name. + (LC): Do it here. + (notype_declarator): For scoped_id derivations, don't call + build_push_scope if the scoped_id is a SCOPE_REF. + (scoped_id): Moved old typespec-from-template_type rule here. + Call resolve_scope_to_name only if template parms aren't involved. + + * cplus-pt.c (struct template_info): Definition deleted. + (templates, current_template_info): Variables deleted. + (processing_template_{decl,defn}): New variables. + (push_template_decls, pop_template_decls): Accept parmlist and + arglist as separate arguments, instead of deriving both from the + template. If class_level is non-zero, push and pop a level, + making it transparent to tags. Removed some pointless checks from + pop_template_decls that are only needed in push_template_decls, + and some assertions from both. Callers changed. + (uses_template_parms): Return non-zero iff argument refers to any + TEMPLATE_*_PARM nodes. + (tsubst): Walk tree, substituting for template parms, returning + new tree. + (type_unification): Rewritten a bit, to make it work. New + argument nsubsts is pointer to place to record number of + substitutions made when matching. + (unify): Renamed from unify1. Rewritten completely, to work. + Still may need extending for some tree node types. + (do_pending_expansions): At end-of-file, expand any templates not + yet expanded which were actually needed. Needs work to accomodate + latest specs. + (process_template_parm): Simplified slightly. Non-type parms + should be marked read-only; aggregate types are not allowed, since + equality checks don't work. + (end_template_parm_list): Moved to after process_template_parm. + Push a level, and push decls for TEMPLATE_*_PARMs. Set + processing_template_decl flag. + (end_template_decl): For non-class templates, build a + TEMPLATE_DECL and store the regular decl in its result field. + Context and other values get copied over too. Call poplevel to + get rid of the TEMPLATE_*_PARM decls, and call + dont_forget_overload to avoid losing the declaration later. Clear + processing_template_decl flag. Call get_pending_sizes, so later + function compilation doesn't try to evaluate sizes of templates. + (mangle_class_name_for_template): Convert type/non-type check from + switch to if test. Added support for ENUMERAL_TYPE, REAL_TYPE, + and POINTER_TYPE parms. + (instantiate_class_template): Renamed from old + instantiate_template. Don't expand if type size is set, or if + being-defined flag is set, or use-template flag is non-zero. If + other-template parms are used in the parm list, construct a simple + RECORD_TYPE node and return it. Catch case of template declared + but not defined before use. Renamed argument from class to + classname. Set processing_template_defn flag. + (instantiate_template): New routine; constructs new decl node + given TEMPLATE_DECL node and template arg vector. + (end_template_instantiation): Set use-template field to 2 ("did + use template"). Clear processing_template_defn flag. + (reinit_parse_for_template): Get template-info ptr from decl node. + Store template parm vector in it. + (pending_template_expansions): List of templates that may need + expanding later for function or class data definitions. + + * cplus-method.c (build_overload_value): Ensure tree code is + PARM_DECL. Handle ENUMERAL_TYPE like INTEGER_TYPE. For DImode + values, compare against integer_zero_node instead of constructing + another one. Added support for POINTER_TYPEs. If not + REAL_IS_NOT_DOUBLE, support real values as well. + (build_overload_name): Accept TEMPLATE_*_PARM nodes, but generate + a string that should cause some assembler errors. + + * cplus-ptree.c (print_lang_decl): Retrieve template-info from its + new place. + (print_lang_type): For TEMPLATE_TYPE_PARM, print its (short) info + and return. For RECORD_TYPE, print use-template and interface-* + fields. + + * cplus-search.c (push_class_decls): Don't call + push_template_decls; the bindings of template parameter names + should be associated with the template body, not with the class. + Do overload the template name, however. + (pop_class_decls): Don't call pop_template_decls. + + * cplus-call.c (build_method_call): Changed to recognize + constructor of template class. + (build_overload_call): Add in number of template substitutions as + extra cost of a candidate function. For template decls, try + unification and instantiation before evaluating cost of result. + This too is incorrect in terms of the spec, but it's a starting + point for later work. + + * cplus-class.c (finish_struct): If structure is named, undo + overload of its name as a template. + (pushclass): If prev_class_type was a template class, pop it; the + decls are handled wrong and should be re-entered. + + * cplus-decl.c (poplevel): Assert that the current level is not + global. + (push_to_top_level): Include global scope when looking for old + values, because class bindings aren't listed in any other one + place. + (push_overloaded_decl_top_level): New function; like + push_overloaded_decl, but places decl in global binding level. + (dont_forget_overload): New function; removes decl from list of + overloads to be forgotten when scope is exited. + (start_decl): If template parms are used, construct a + TEMPLATE_DECL node referencing the current decl. For function + templates, call push_overloaded_decl; for class template members, + chain them into the class template definition. + (grokdeclarator): Don't try determining size of a + TEMPLATE_CONST_PARM node. For template class-data decls, + construct a phony VAR_DECL node and return it. + + * cplus-decl2.c (grokfield): For static class data, use + build_overload_name result, instead of copying class name, since + the latter could be a human-readable template class name. (If + NEW_OVERLOAD_SCHEME is not defined, do this only if the class has + a template-derived name.) + + * cplus-lex.c (pending_template_obstack): New variable; obstack + for pending-template stuff to be saved to end-of-file. + (init_lex): Initialize it. + (default_def): New variable; used for default definition of copy + constructors and destructors. + (do_pending_inlines): Figure out whether text is in an obstack, + and which one, for calling feed_input. Push template decls if + needed, as specified in pending_inline data. Pass current + pending_inlines pointer back in PRE_PARSED_FUNCTION_DECL instead + of next. + (process_next_inline): Ditto. Pop pending inline data if needed. + (store_pending_inline): New function. Decides which obstack to + store a pending definition on, and which list to chain it into. + (reinit_parse_for_method): Call it. + (reinit_parse_for_block): If character passed in is '=', look for + a semicolon to end the block; don't require a {} block. Don't pad + to 8 bytes on USG, since we aren't feeding input via stdio any + more. Also, use newlines instead of # directives for advancing + line number only a few lines. + (cons_up_default_function): Punt padding for USG stdio, since we + aren't using it any more. Use default_def for definition. Call + store_pending_inline to save it away. + (identifier_type): For TEMPLATE_DECL, DECL_RESULT field non-null + indicates a non-type template, so don't return PTYPENAME. + (yylex): If end-of-file and input isn't redirected, call + do_pending_expansions and maybe start yylex over. Don't check + TEMPLATE_EXPANSION_NAME_P; a proper name transformation system + will eliminate conflicts. Try for SCOPED_TYPENAME with PTYPENAME + too. + +Wed May 29 11:48:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * cccp.c (do_include): Check that ->control_macro is non-zero. + + * gcc.c (process_command): Use `error' in last change. + +Wed May 29 11:10:12 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (movdi): Accept CONST_INT. + * out-m88k.c (output_load_const_dimode): Accept CONST_INT. + (output_call): Don't use #plt for jsr. + +Wed May 29 00:51:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-type2.c (build_functional_cast): Give error if functional + cast is missing argument. + + * cplus-tree.h (interface_unknown): Add a declaration for this + variable. + + * cplus-type2.c (store_init_value): Normally initialized PIC data + must be laid into the text segment and then copied into the data + segment. But cecause of special things we do for ctors and dtors + (the only things that can reference such things), we can leave + vtables in initialized data space. + + * cplus-decl.c (finish_decl): Use #pragma interface knowledge if + available for processing initialized variables of type const. + +Tue May 28 18:39:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * sched.c ({true,anti,output}_dependence): Correct MEM_IN_STRUCT_P + code; only avoid conflict if MEM_IN_STRUCT_P ref has varying address. + + * protoize.c (stat): Remove declaration of stat; it is defined + differently (no const in arg 1) on some machines. + + * combine.c (simplify_shift_const): Avoid infinite loops by quitting + when COUNT becomes zero; delete now-unnecessary tests on COUNT. + + * flow.c (last_mem_set): New variable. + (propagate_block): Initialize it. + Show calls can change memory. + (insn_dead_p): Remove unneeded arg STRICT_LOW_OK; don't treat + STRICT_LOW_PART differently than ZERO_EXTRACT. + All callers changed. + If insn stores into the same, nonvolatile, MEM as recorded in + last_mem_set, it is dead. + (mark_set_1): If writing into register mentioned in last_mem_set or + writing into memory, clear last_mem_set. + Record last MEM written. + (find_auto_inc): New function, from mark_used_regs. + Add support for pre-increment and pre-decrement. + (mark_used_regs, case MEM): Clear last_mem_set. + Call find_auto_inc; move code to there. + (mark_used_regs, case SET): Don't call recursively on MEM if it is + SET_DEST, instead call find_auto_inc ourselves. + +Tue May 28 17:29:52 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) + + * gnulib1.c (__fixsfsi, __cmpsf2, __extendsfdf2): Add declarations + for intify. + + * gcc.c (default_compilers): Accept `.cxx' as a C++ extension. + +Tue May 28 17:05:28 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (movstrsi): Pass original MEM expressions. + * out-m88k.c (expand_block_move, block_move_{sequence,no_loop,loop}): + Use original MEM expressions to set RTX_UNCHANGING_P, MEM_VOLATILE_P, + and MEM_IN_STRUCT_P. + + * out-m88k.c (emit_bcnd): Use bxx when optimizing so jump_optimize + will work on more cases. Change this back when jump_optimize uses + get_condition to find the values being compared. + + * m88k.md: Don't use operand0 or operand1. + +Tue May 28 16:00:56 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) + + * emit-rtl.c (try_split): Make sure `after' exists before checking + to see if it is a BARRIER. + +Tue May 28 15:08:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * gcc.c (process_command): Warn if -x follows last input file. + + * cccp.c: Don't include file twice if a #ifndef would make it a no-op. + (struct file_name_list): New field, control_macro. + Initialize it where these structures are created. + (struct if_stack): Likewise. + (do_include): If file already known, check its control macro if any. + Don't include the file if the macro is now defined. + (do_xifdef): Detect case of successful #ifndef at start of file. + (condition_skip): Accept macro name as new arg. Record in if_stack. + (do_endif): Detect being effectively at end of file. + (record_control_macro): New function. Called from do_endif. + + * calls.c (store_one_arg): Set used after calling push_rounding. + + * sparc.md (floating move peepholes): Allow `r' for operand 2. + + * arm.md, tm-arm.h, out-arm.c, xm-arm.h: New files. + * configure (arm): New alternative. + +Tue May 28 11:53:21 1991 Michael Meissner (meissner at osf.org) + + * tm-decstatn.h (CPP_PREDEFINES): Add Ultrix 4.2 support. + + * tm-mips.h (cmp_type, branch_cmp, branch_type): Global variables + and type to record what type of comparison is being done. + (mips_print_operand_punct): New array to specify whether a + character is valid for print_operand as punctuation. + (set_nomacro, set_noat, set_noreorder): New variables to record + whether a .set nomacro, .set noat, or .set noreorder has been + done. + (dslots_{filled,total}_{load,jump}): New global variables to + remember how many delay slots exist and are filled for the -mstats + option. + (CC1_SPEC): Combine %{O:...} %{O*:...} cases. For -G32, pass -G + 32. Add dummy pattern for -save-temps to avoid error message. + (DBX_DEBUGGING_INFO): Define this all the time. + (SDB_ALLOW_FORWARD_REFERENCES): Define this for MIPS ECOFF support. + (SDB_ALLOW_UNKNOWN_REFERENCES): Define this for MIPS ECOFF support. + (TARGET_SWITCHES): Add -mstats to print interesting statistics. + Add -mmemcpy to force memcpy to be called. Add -mdebug[fghij]. + Add -mno- version of switches. + (DATA_ALIGNMENT): Align all char/short arrays/unions/structures, + rather than just char arrays. + (BYTE_LOADS_ZERO_EXTEND): Define this. + (CONST_OK_FOR_LETTER_P): 'N' returns true if power of 2. + (EXTRA_CONSTRAINT): Redefine 'Q' to be 1 word memory references, + 'R' to be multiword memory references. + (struct frame_info): Add initialized field. + (current_frame_info): New global structure to hold frame info. + (INITIAL_FRAME_POINTER_OFFSET): Use current_frame_info. + (INIT_CUMULATIVE_ARGS): Pass LIBNAME to init_cumulative_args. + (DELAY_SLOTS_FOR_EPILOGUE): Define this to fill j $r31 delay slot. + (ELIGIBLE_FOR_EPILOGUE_DELAY): Ditto. + (ENCODE_SEGMENT_INFO): Don't flag references to 0-sized arrays as + being in the small data segment. + (CONST_COSTS): Reword to be more accurate. + (RTX_COSTS): Define this. + (ADDRESS_COST): Define this. + (CLASS_CMP_OP, CLASS_EQUALITY_OP, CLASS_UNS_CMP_OP): New bits for + rtx_classify to classify various comparison operators. + (FINAL_PRESCAN_INSN): Define this to collect info for -mstats. + (NOTICE_UPDATE_CC): Only do CC_STATUS_INIT if the insn is a + comparison. + (EXTRA_CC_MODES): Define new modes CC_EQmode, CC_FPmode, CC_0mode. + (EXTRA_CC_NAMES): Define this. + (SELECT_CC_MODE): Define this. + (PRINT_OPERAND_PUNCT_VALID_P): Redefine this to index into + mips_print_operand_punct. + (DBR_OUTPUT_SEQEND): Reset .set reorder, .set macro as appropriate. + + * out-mips.c (branch_cmp, branch_type): New Global variables + and type to record what type of comparison is being done. + (mips_print_operand_punct): New array to specify whether a + character is valid for print_operand as punctuation. + (set_nomacro, set_noat, set_noreorder): New variables to record + whether a .set nomacro, .set noat, or .set noreorder has been + done. + (dslots_{filled,total}_{load,jump}): New global variables to + remember how many delay slots exist and are filled for the -mstats + option. + (reg_or_0_operand): Rewrite to add support for CONST_DOUBLE. + (mips_const_double_ok): Allow normal FP constants (not Infinity, + Nan, etc) to be used as operands when using the MIPS assembler. + (simple_memory_operand): Combine GP memory references from + gp_memory_operand. Delete gp_memory_operand. + (equality_op): Return true if EQ or NE. + (cmp_op): Return true if comparison operator. + (uns_cmp_op): Return true if unsigned comparison. + (mips_move_1word): New name for mips_move_instructions. Also, loads + of HImode/QImode use unsigned loads, rather than signed loads, so + that BYTE_LOADS_ZERO_EXTEND can be defined. Use %z to get name of + $0, instead of hardwiring it. Explicitly use lui where appropriate. + (mips_move_2words): New name for mips_move_2words_instructions. Use + %z to get name of $0, instead of hardwiring it. + (mips_address_cost): New function to define ADDRESS_COST macro. + (gen_conditional_branch): New function to generate all of the tests + and branches. + (block_move_sequence): New function to generate straight line code + for block moves. + (block_move_call): New function to set up a call to memcpy/bcopy as + appropriate for block moves. + (expand_block_move): New function which is called from the movstrsi + define_expand, to set up block moves. At present, unless -mmemcpy + is used, moves of less than 32 bytes, get straight line code, all + others get a call. + (init_cumulative_args): Take libname as third argument. + (function_arg_partial_nregs): Fix bug, to not return a negative + number when passing small structs in registers. + (compare_collect, compare_restore): Remove these functions, since + they are no longer called. + (override_options): Initialize mips_rtx_classify for all of the + comparison operator bits. Initialize mips_print_operand_punct to + return TRUE for each of the valid punctuation characters used in + print_operand. + (print_operand): %X now prints 32 bit ints in hex format. %z now + prints $0 if the operand is the constant integer 0. %(, %) now turn + on/off both .set noreorder/.set nomacro. %<, %> turns on/off .set + nomacro. %* turns on both .set noreorder and .set nomacro if + filling delay slots. %! turns on .set nomacro if filling delay + slots. + (compute_frame_size, save_restore, function_prologue, + function_epilogue): Change the calling sequence of + compute_frame_size to save everything in a global structure, which + has an initialized field to indicate that compute_frame_size needs + to be called. + (function_prologue): INIT_CUMULATIVE_ARGS now takes 3 args. + (function_epilogue): If current_function_epilogue_delay_list is + non-null, use that to fill the final delay slot. Also, make sure + the various asm .set's are reset properly. Write interesting + statistics out to stderr if -mstats. + (mips_epilogue_delay_slots): New function to return # of delay slots + the epilogue needs. + (null_epilogue): Return true if the function has a null epilogue, + which allows the optimizer to omit jumps to the final j $31 if no + stack was created. + + * mips.md (type attribute): Redo how the type attributes work, and + change some names. + (mode attribute): New attribute to describe the insn's result mode. + (length attribute): New attribute to give insn length in words. + (dslot attribute): New attribute to return whether an insn needs a + delay slot. + (define_delay): Use dslot and length attributes to determine if a + delay slot is needed. + (define_function_unit): Define all of the function units now. + (all patterns): Provide new attribute definitions. + (all memory reference patterns): modify alternatives to use 'Q' for + 1 word instructions, 'R' for multiword instructions. + (unnamed patterns): Provide names for all patterns, so that -dp will + pinpoint exactly which pattern is used. + (*divsi3, *divmodsi4, *modsi3): If optimizing and not -mdebugc, use + the *divmodsi4 patterns, so that the opimizer will only use 1 divide + if doing a = b / c; d = b % c; This replaces the peepholes, which + previously were used for this. If not optimizing, use the normal + div/mod patterns. + (zero_extendqihi2, extendqihi2): Allow zero/sign extending from + memory. + (fixuns_trunc{df,sf}si2): Use generator patterns to generate + appropriate branches. + (movsi_ulw, movsi_usw): New patterns to generate the appropriate + unaligned load/store for use in the block move expansion. + (mov*): Provide all possible combinations of moves. + (movstrsi): New pattern to generate block moves. + (negsi2): Change to a define_expand, which uses minus. + (one_cmpsli2): Change to a define_expand, which use the nor pattern. + (cmp*, b*): Redo comparison/branch completely to save things in + global variables, call the common C code to expand the branch, and + provide match_operators to do the actual branch. + (s*): Provide for the ability to set a register with an integer + comparison, without using a branch. + + * make-decrose (AUX_OUTPUT2): Delete macro, since aux-output.c is + always compiled separately now. + (LANGUAGES): Suppress G++, Objc temporarily. + (cse.o): Rebuild cse if the config files change, to get new cost + functions, no longer rebuild calls/function since the FUNCTION_ARG + macros just call functions in out-mips.c. + (SRCS): Change $(AUX_OUTPUT2_SRC) to aux-output.c. + + * make-mips (AUX_OUTPUT2): Delete macro, since aux-output.c is + always compiler separately now. + (CONFIG2_H): Add rules to rebuild selected modules when the + tm-mips.h file changes. + (mips-tfile): Rules to build mips-tfile. + (mips-tdump): Rules to build mips-tdump. + (LANGUAGES): Suppress G++, Objc temporarily, build mips-tfile. + + * mips-tfile.c (whole file): New file to put the MIPS specific debug + information into the object file, after the assembler has been run. + This is needed because the MIPS assembler provides no method of + setting up the debug information for local variables. This is + enabled by the make-mips Makefile modifier. + + * mips-tdump.c (whole file): New file to dump the contents of the + MIPS ECOFF symbol table in a symbolic format. This is not currently + built by default, but make-mips contains rules to build it. + + * tm-decrose.h (MD_EXEC_PREFIX): Change to use the test prefix + /usr/ccs/gcc-2.00/gcc- instead of the release prefix /usr/ccs/gcc. + (WCHAR_TYPE_SIZE): Define as 16. + (WCHAR_UNSIGNED): Define as 1. + (DBX_DEBUGGING_INFO): Define moved to tm-mips.h. + + +Tue May 28 06:26:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (store_bit_field, extract_bit_field): If -fforce-mem + specified, copy OP0 into register (and back again, for store). + + * sched.c (memrefs_conflict_p, {true,anti,output}_dependence): Add + missing parens. + + * reload.c (find_reloads): Turn usage of reg_preferred_class back on + now that the code has been refined. + +Mon May 27 12:41:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-typeck.c (build_binary_op_nodefault): Set converted for shifts, + so op1 is not converted to the result type. + Clean up some warning messages. + + * expr.c (expand_expr): Use temp stack slot for BLKmode SAVE_EXPR. + + * Makefile.in (alloca.o): Use new vars ALLOCA_FLAGS and ALLOCA_FINISH. + +Mon May 27 05:42:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * sched.c ({read,true,anti,output}_dependence): Remove unused arg INSN. + All callers changed. + + * combine.c (subst, case PLUS): Fix typo in (plus (plus X C) Y) case. + (subst, case MULT): Distribute MULT over PLUS to try to simplify it. + +Mon May 27 05:15:16 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a SYMBOL_REF + sum if FLAG_PIC is not 1. This forces the -fPIC to take effect, + even when the optimizer knows how to stitch together HIGH and LO_SUM + combinations. + (PRINT_OPERAND): Move body to out-sparc.c. + * out-sparc.c (print_operand): New function, implementing actions of + old PRINT_OPERAND macro. Comments written for all cases. + (reg_unused_after): Don't do anything special with JUMP_INSNs. Only + do something special with CALL_INSN if REGNO is a call-used reg. + + * cplus-type2.c (store_init_value): Back out 23 Feb change, which + was completely backward. + + * dbxout.c, cplus-dbxout.c (dbxout_parms): Also test that TREE_TYPE + (PARMS) is not ERROR_MARK_NODE. + + * cplus-init.c (build_up_reference): Check FLAGS parameter to see if + we can accept building a reference to a constructor-generated + temporary. + (various places): Change calls to `build_up_reference' that used to + use an explicit `1' to use LOOKUP_PROTECT instead. + (build_offset_ref): Use IDENTIFIER_TYPE_VALUE macro to the the type + associated with CNAME. + + * cplus-class.c (build_vbase_path): Fix 11 May change by only + changing TREE_TYPE (EXPR) if NULL_EXPR. We might build different + vbase paths for the same expr in multiple inheritance + initialization. + + * Makefile.in: Change sed script so it matches '^# ' instead of just + '^#'. This allows processing of md files with #if/#endif controls + in their C function bodies. + + * cplus-tree.c (build_cplus_new): Set TREE_SIDE_EFFECTS on RVAL. + + * stmt.c (warn_if_unused_value): Don't warn about EXIT_EXPRs. + (expand_decl_cleanup): Add missing type declarations for parameters. + + * cplus-call.c, cplus-class.c, cplus-dbxout.c, cplus-edsel.c: Include + stdio.h after cplus-tree.h since the latter references printf. + * cplus-search.c, cplus-xref.c: Likewise. + * cplus-class.c (prev_class_type): Not static; defined in cplus-tree.h. + * cplus-decl.c (builtin_function, auto_function): Don't put & in + front of function name. + * cplus-typeck.c (comptypes,comp_target_types): Likewise. + * cplus-search.c (report_ambiguous_mi_virtuals): Likewise, for arrays. + +Sun May 26 22:47:35 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-decl.c (make_temporary_for_reference): New function. Split + out code from `grok_reference_init' so we could call it in two + places: where it was called before, and when initializing a + reference through a constructor for a temporary. + (grokdeclarator): Give error message instead of aborting if user + gave method qualifiers for function decl. + (start_function): Switch to temporary obstack before computing + destructor and constructor labels, and before building the + function's RESULT_DECL. + + * cplus-decl.c (store_parm_decls): Make a cleanup that controls the + action of the garbage collector. This ensures that the call to + __gc_pop doesn't get skipped in the function issues a return stmt. + * cplus-gc.c (expand_gc_prologue_and_epilogue): Work with new + cleanup model. + + * cplus-gc.c (build_i_desc): Figure out whether the i_desc should + constitute a defn of its type or not. + + * cplus-typeck.c (c_expand_return): Look through TARGET_EXPR as well + as NEW_EXPR for returning addresses of local variables. + + * reload.c (find_reloads): Intialized `goal_alternative_swapped' + where `swapped' is initialized to zero. + +Sun May 26 21:29:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * recog.c (const_double_operand): Fix typo. + * reload1.c (choose_reload_regs): Fix typo--swap #endif with }. + + * loop.c (init_loop): Multiply copy_cost by 2. + (general_induction_var): Use rtx_cost directly. + (expr_benefit): Function deleted. + + * m68k.md (andsi3): Generate bclr if appropriate. + + * cccp.c (do_undef): Just a warning, if deleting something unusual. + +Sun May 26 18:51:33 1991 Jim Wilson (wilson at sphagnum.cygnus.com) + + * expr.c (force_operand): When calling recursively, use + a temporary to force evaluation of calls. The C language + allows `f (g (x), g (y))' to be evaluated in different orders + on different hosts, which could lead to different code + generation for different hosts. + + * recog.c (const_double_operand): New function for recognizing + CONST_DOUBLE rtx's. + + * expmed.c (expand_mult_add): Add new parameter TARGET which is a + suggestion of where to store the result; pass it to expand_expr. + * loop.c (emit_iv_add_mult): Pass REG to expand_mult_add call as + target for the result. + + * gmicro.md, old-sparc.md, pyr.md: Delete obsolete UMULT patterns. + + * expmed.c (expand_mult): Convert DImode constants to a CONST_INT + if possible, so that multiplies by these can be optimized by the + existing code. + +Sun May 26 00:59:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * gcc.c (process_command): -save-temps is always valid. + + * varasm.c (output_constructor): Don't crash if val == 0. + + * cse.c (refers_to_mem_p): Handle constant addresses. + + * cccp.c (main): Don't store thru last_include if null. + +Sat May 25 06:33:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c (find_reloads): Don't assume we have at least two operands + when we check for a simple copy. + + * sched.c (update_reg_known_value): Deleted. + (init_alias_analysis): If have REG_EQUIV note, can always use NOTE's + value irrespective of number of sets. + Take known value from note, not SET_SRC. + (memrefs_conflict_p): Remove gotos. + ASHIFT can't occur in an address. + (true_dependence, anti_dependence, output_dependence): Take into + account the fact that a MEM_IN_STRUCT_P reference cannot conflict + with a non-MEM_IN_STRUCT_P reference at a fixed address. + +Fri May 24 11:34:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (cplus-tab.c): Put back -d option. + +Fri May 24 06:46:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.c (rtx_alloc): Ensure we keep the obstack aligned. + +Fri May 24 00:17:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * reload1.c (choose_reload_regs): Try with inheritance, then without. + #if 0 the code to avoid inheritance in certain cases. + +Fri May 24 00:13:40 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * out-i386.c (split_di): Check for CONST_DOUBLE before CONSTANT_P. + + * tm-i386.h (LIMIT_RELOAD_CLASS): new macro. + (PREFERRED_RELOAD_CLASS): a CONST_DOUBLE can appear in narrower + classes than GENERAL_REGS. + + * reload.c (push_reload): Limit reload class even if the SUBREG has + already been stripped. + +Thu May 23 11:08:21 1991 Jim Wilson (wilson at sphagnum.cygnus.com) + + * sched.c (schedule_insns): Don't schedule a block if the only insn is + a CODE_LABEL. + +Thu May 23 07:54:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (choose_reload_regs): Process reload in first pass if + a subsequent reload requires fewer registers. + Change criteria for processing from being a strict superset to + having an intersecting, non-equal class. + Ignore optional and turned-off reloads in loop to see what is forced + to be allocated in first pass. + + * toplev.c (compile_file): Fix typo in length of string to allocate + for sched2 dump's name. + + * jump.c (find_cross_jump): Don't crash if single_set returns 0. + + * recog.c (general_operand): A SUBREG of a constant is never valid. + + * local-alloc.c (qty_compare, qty_compare_1): Make priority function + the same as in global-alloc: quantities with shorter lives are + allocated first. This can speed up some code by a factor of three. + +Wed May 22 17:40:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (emit_reload_insns): Fix some minor bugs in making + REG_DEAD notes and recording insn that does store; code sometimes + assumed that each call to gen_move_insn produced at most one insn. + +Wed May 22 16:51:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * reload.c (push_reload): Support LIMIT_RELOAD_CLASS. + +Wed May 22 14:14:51 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) + + * jump.c (jump_optimize): Update the three simplifications that + start with the "if (...) x = 1;" case. Add comments explaining how + to make them more machine independent, and comments explaining how + they might fail in the future. Ifdef out the second case, and add + code explaining why it does not work. + + * rtl.h: Put definition of FUNCTION_FLAGS_USES_CONST_POOL here. + * integrate.c: Remove definition of it here. + + * integrate.h: New fields in struct inline_remap, min_insnno and + max_insnno, which indicate the range of insns covered by insn_map. + * integrate.c (expand_inline_function): Set min_insnno and max_insnno. + +Wed May 22 12:31:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * tm-vaxv.h (ASM_OUTPUT_LOCAL): Use data_section. + + * protoize.c (fancy_abort): Define it. + * objc-parse.y (yyprint, set_yydebug): New functions. + + * tree.h (gettags, get_permanent_types, get_temporary_types): + Declare them. + + * Makefile.in (protoize.o, unprotoize.o): + Use the standard flags and include dirs. Don't use -Wall. + * protoize.c (abort): Declaration deleted. + + * cccp.c (main): Ensure `next' field in directory list is initialized. + +Wed May 22 09:27:49 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * expmed.c (synth_mult): Return cost of -1 if shift is too + expensive. + +Wed May 22 07:53:52 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * out-sparc.c (output_move_double): More SImode->Pmode fixes. + +Wed May 22 02:43:02 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) + + * Makefile.in, emit-rtl.c, explow.c, final.c, global-alloc.c, + gnulib2.c, hard-reg-set.h, regclass.c, reload1.c, cccp.c: Fix typos + and indentation. + +Wed May 22 00:14:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * combine.c (try_combine): Add to last change; handle subreg + in src as well as in dest of i3. + +Tue May 21 22:32:08 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * m68k.md (dbra): Rewrite pattern so it reflects simplifications that + combine will make. + +Tue May 21 10:44:05 1991 Jim Wilson (wilson at sphagnum.cygnus.com) + + * loop.c (strength_reduce): When a loop-vtop note is encountered, + reset `not_every_iteration'. + +Tue May 21 00:17:31 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-decl.c (init_decl_processing): Always use long type for size_t. + + * varasm.c (assemble_variable): Use ASM_DECLARE_OBJECT_NAME. + + * protoize.c: Include config.h. + (chmod, kill): Declarations deleted. + They aren't needed, and can conflict with system headers. + (wait): BSD declaration deleted. + (save_def_or_dec): Add missing fprintf arg. + + * tm-next.h (EXTRA_FORMAT_FUNCTIONS): Fix typo. + + * protoize.c: Use USG and VMS as most files do. + Don't expect BSD to be necessary defined outside this file. + Define getwd using getcwd, not vice-versa, to be like dbxout.c. + * cccp.c, SYSCALLS.c: Use USG and VMS as most files do. + Don't expect BSD to be necessary defined outside this file. + +Mon May 20 16:54:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * tm-i386.h, tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_BYTE_OP): + Renamed from ASM_BYTE. + * varasm.c (ASM_BYTE_OP): Likewise. + + * c-decl.c, cplus-class.c (finish_struct): Typo: + Had PCC_BIT_FIELD_MATTERS which is now PCC_BITFIELD_TYPE_MATTERS. + + * gcc.c (handle_braces): Don't deref input_suffix if null. + +Mon May 20 15:19:27 1991 Michael I Bushnell (mib at geech.gnu.ai.mit.edu) + + * cccp.c (pcfinclude): STRINGDEF struct is now longword aligned. + +Mon May 20 14:26:18 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * sparc.md: Remove all arithmetic, logical, and shift patterns for + sub-SImode operands. Also fix some DImode patterns. + + * out-sparc.c (emit_move_sequence): Simplified considerably. + + * rtl.c (rtx_alloc): Inline-code an optimized obstack_alloc. + + * cplus-lex.c (make_{pointer,reference}_declaration): Call + `build_parse_node' instead of `build1' so memory can be freed. + + * cplus-parse.y: Remove unneeded epsilon rules to produce an average + 15% reduction in the number of reductions performed. + + * cplus-parse.y (RETURN_INIT): Use new interface to speed up + grammar. + * cplus-decl.c (store_return_init): Use new interface. + +Mon May 20 11:16:34 1991 Jim Wilson (wilson at sphagnum.cygnus.com) + + * sched.c (schedule_block): A register which dies in a CALL_INSN + does not cross calls. A single insn block must be scheduled, to + ensure that register lifetime info is corrected updated. + +Mon May 20 06:50:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Don't combine when I1 and I2 both feed + into I3 and I1 uses the register set in I2. + + * reload.c (find_reloads): Prefer pseudos over other things we may + reload. + +Mon May 20 02:02:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * combine.c (try_combine): Test MODES_TIEABLE_P when i3 src is subreg. + + * m68k.md (trunc*): Don't set cc if use wider insn. + +Sun May 19 14:45:46 1991 Ron Guilmette (rfg at ncd.com) + + * Makefile.in (clean): Delete stage1...stage4. + (realclean): Delete cexp.output. + + * fixincludes: Handle BSD43__IO* and BSD43_CTRL like IO* and CTRL. + +Sun May 19 15:00:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * reload1.c (count_possible_groups): New function. + (reload): Call it twice. This checks for possible groups + after maybe spilling some single regs. + + * configure (magnum, m3230): Aliases for mips/mips. + + * fixincludes (machine/cpu.h): + Create in proper dir. Fix mips/cpu.h too. + + * reload.c (find_reloads): Turn off usage of reg_preferred_class. + +Sun May 19 09:51:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (mark_used_regs): Continue putting REG_DEAD notes on + fixed registers. + + * regclass.c (reg_class_record): Don't count classes in which objects + won't fit. + + * reload.c (find_reloads): Pre-compute preferred classes for each + operand; if operand 1 is copied to operand 0, merge the classes. + REJECT is now only 1/3 as costly as LOSERS; ? adds 3 to REJECT so + that it's semantics don't change. + + * expr.c (compare_from_rtx): Do EQ and NE comparisons unsigned since + they are usually cheaper and will cse with comparisons against zero + which are already unsigned. + + * reload1.c (choose_reload_regs): Don't try to access reload_out + for disabled reload (reload_strict_low may not have been cleared). + + * reload1.c (choose_reload_regs): Don't let optional reloads inherit + spill regs until all non-optional reloads have been allocated spill + regs. + We can use find_equiv_reg even if must_reuse, we just can't get a + spill reg that way. + + * expr.c (do_tablejump): When using LABEL_REF in arithmetic, make it + in Pmode instead of VOIDmode. + + * function.c (fixup_var_refs_1): Don't try to make paradoxical + memory SUBREGs; instead keep SUBREG_REG a pseudo and copy between + memory and the pseudo. + (fixup_memory_subreg): Abort if we try making paradoxical SUBREGs. + + * reorg.c (redundant_insn_p): Insns we pass may reference resources + set by INSN; it is sufficient that they not set resources in INSN. + +Sun May 19 08:06:17 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * tm-sparc.h (STRUCT_VALUE): Change SImode to Pmode here, and in + other places. + (FIRST_PARM_OFFSET): Change 4 to UNITS_PER_WORD here, and in other + places. + (ROUND_ADVANCE): New macro to compute how far to advance the arg + pointer for a give parameter. + (FUNCTION_ARG): Use PARM_BOUNDARY instead of 32. + (EXTRA_CONSTRAINT): Don't depend on `reload_completed'. + * sparc.md (various places): Change many DImode predicates from + `general_operand' to `register_operand'. + + * jump.c (find_cross_jump): Fixed 18 May change to use + `validate_change' to make sure we get valid, initialized values + regardless of which path we choose. + +Sat May 18 15:07:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * cccp.c: Rename FATAL_EXIT_CODE to FAILURE_EXIT_CODE. + + * gnulib1.c: Rename SFVALUE to FLOAT_VALUE_TYPE. + (union flt_or_value): New type. + (*): Use that instead of flt_or_int in most places. + Delete some variables `intify' that aren't needed. + * tm-i386.h: Rename SFVALUE to FLOAT_VALUE_TYPE. + + * stor-layout.c (layout_record): BITFIELD_NBYTES_LIMITED now 1 or 0. + + * rtl.h (struct rtx_def): Drop SHORT_ENUM_BUG; keep ONLY_INT_FIELDS. + + * loop.c (add_cost, copy_cost): + Variables replace old macros *_BENEFIT and COPY_PENALTY. + (init_loop): New function to set the variables. + (expr_benefit): Use rtx_cost. + * toplev.c (compile_file): Call init_loop. + * cse.c (rtx_cost): Treat mult by 2**n as a shift by default. + + * toplev.c (output_file_directive): + Typo in ASM_OUTPUT_MAIN_SOURCE_FILENAME. + + * gnulib2.c [L_trampoline]: Rename function to __trampoline. + Always compile it even if empty. Make it global. + +Sat May 18 14:11:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c (find_reloads): Remove unnecessary test when increasing + cost of alternative due to non-preferred register class. + + * reload1.c (choose_reload_regs): Fix typo. + + * tm-rs6000.h: Add hard registers for the 8 CR fields; add classes + CR0_REGS and CR_REGS. + Don't use CC0; add CCUNSmode and CCFPmode. + (FIXED_REGISTERS): r31 (fp) is no longer fixed. + (REG_CLASS_FROM_LETTER): Remove 'd' for GENERAL_REGS; 'r' already + means this. + (CONST_DOUBLE_OK_FOR_LETTER): If we can move a constant in two insns + for DF or one insn for SF, let it match 'G'. + (SECONDARY_RELOAD_CLASS): Define this new macro. + (FUNCTION_ARG): Fix typo in testing nargs_prototype. + (LEGITIMATE_CONSTANT_P): Always return 1. + (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Do not define. + * rs6000.md: Don't use CC0; instead use a pseudo which will be assigned + to CR_REGS or CR0_REGS. Make variants of arithmetic insns that + set only the condition code and that set both the condition code + and a normal result. + Delete "cc" attribute and add "type" attribute. + Define delays for cc-setting insns and for loads. + Replace `d' constraint with `r'. + Delete patterns for HImode and QImode arithmetic operations. + Handle putting "easy" DFmode or SFmode constant into a register. + Rework compare and branches; add scc insns. + Fix up decrement-and-branch insns, but they still won't be used yet. + (call insns): Use pseudo for "lr" in indirect calls. + (movdf, movsf): Explictly handle need to use memory to copy between + general and FP registers. + * out-rs6000.c (next_insn_tests_no_unsigned, unsigned_comparisons_p): + Deleted. + (update_cc): Likewise. + (gen_reg_operand): Tighen up a bit. + (cc_reg_operand, reg_or_u_short_operand, easy_fp_constant): New fns. + (fp_reg_or_mem_operand, mem_or_easy_const_operand): Likewise. + (call_operand): Accept pseudo register. + (branch_comparison_operator, scc_comparison_operator): New functions. + (secondary_reload_class, ccr_bit, must_save_cr): Likewise. + (print_operand, case 'w', 'u'): Support CONST_DOUBLE. + (print_operand, cases 'W', 'f', 'F', 'R', 't', 'T', 'C', 'D'): + New cases. + (print_operand, cases 'j' and 'J'): Now use for bit number in CCR. + (output_{pro,epi}logue): If we call function to save/restore fpr's, + we need to save/restore LR. + Save CR if we modify the call-saved fields. + + * romp.md: Delete HImode and QImode arithmetic operations. + (swapxi): Delete; obsolete and never used. + + * tm-a29k.h (TARGET_SWITCHES): Change -mnodw to -mndw. + Add -m{no-,}reuse-arg-regs. + (SECONDARY_RELOAD_CLASS): Provide a definition for this new macro. + * a29k.md: Delete all HImode and QImode arithmetic operations. + * out-a29k.c (secondary_reload_class): New function. + (incoming_reg): Look at TARGET_NO_REUSE_ARGS. + + * reload1.c (eliminate_regs): Don't remove a PLUS unless inside an + address since it would need to change INSN_CODE and can't do it here. + + * reorg.c (uid_to_ruid, max_uid): New vars. + (mostly_true_jump): Refine prediction slightly. + Use uid_to_ruid map to accurately see if branches are backward. + (relax_delay_slots): Pass condition to mostly_true_jump. + (dbr_schedule): Allocate and build uid_to_ruid map. + +Sat May 18 12:54:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * cse.c (insert): "Unchanging" pseudos count as constant. + + * tree.c (make_node): Rewrite end as a switch. + +Sat May 18 03:51:06 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cse.c (FIXED_BASE_PLUS_P): Since this is used when called from + `expand_inline_function', also catch the case where the base + register is VIRTUAL_STACK_VARS_RTX. + (simplify_binary_operation): In EQ and NE case, convert a COMPARE + operand to something we can optimize. + (refers_to_mem_p): Handle the case when `base' is a LO_SUM. + * integrate.c (FIXED_BASE_PLUS_P): Define this to recognize offsets + from the various virtual registers. + (expand_inline_function): Expand exprs using EXPAND_SUM so as to get + stack frame addresses instead of pseudos. This yields much better + cse (at little cost) for GNU C++. Also, test FIXED_BASE_PLUS_P as + an alternative to CONSTANT_P to record a known register value. + * jump.c (find_cross_jump): If we are processing a cross jump and + the insns fail to match, try looking for a REG_EQUAL note that makes + them equivalent insns. If found, keep going. This is important for + merging cleanup codes when one cleanup path gets frame address in a + register when the other path gets the frame address explicitly. + + * cplus-init.c (build_delete): Fixed residual use of 1-based + indexing to use 0-based indexing instead. + + * cplus-decl2.c (grokclassfn): Fix raeburn's May 12 change so that + destructors still have the same name. + + * cplus-decl.c (decls_match): Remove dependence on MERGED. + + * cplus-class.c (build_vbase_path): Fixed bug in computing offsets + for exprs which are FIXED_TYPE_P. + (build_vfn_ref): Change initializer for REF from 0 to NULL_TREE. + + * cplus-decl.c (maybe_build_cleanup): Add LOOKUP_NONVIRTUAL to flags + argument in call to `build_delete' if DECL does not use virtual + baseclasses. If it does, we go through a function call to save + space, unless FLAG_EXPENSIVEO_OPTIMIZATIONS is nonzero. ??Better + approach is to know, in expand_cleanups, to clear `flag_no_inline' + during the cleanup's expansion. + + * cplus-*.c (various places): Add LOOKUP_DESTRUCTOR to all places + where we know we are calling a destructor for a non-null object. + + * stmt.c (fixup_gotos): Run destructors on cleanups that come + from the block being exited, in addition to any inner blocks + for which LABEL is now defined. + (expand_return): Take care of destructors that occur in the + current binding level. + (fixup_cleanups): If we emitted no insns, don't change *BEFORE_JUMP. + + * rtlanal.c: Define `target_flags' here... + * toplev.c: ...not here. This enables us to link gen* programs + which might, through rtlanal.o, pull in references to `target_flags' + that are never used. + + * function.c: Add declaration for `current_function_uses_const_pool'. + * expr.h: Add extern declaration for that variable. + * function.h (struct function): Add a slot named + `uses_const_pool' for `current_function_uses_const_pool'. + * function.c ({push,pop}_function_context): save and restore the + value of `current_function_uses_const_pool'. + * rtl.h (FUNCTION_FLAGS_USES_CONST_POOL): Defined to be 0200. + * integrate.c (initialize_for_inline): + FUNCTION_FLAGS_USES_CONST_POOL now contributes to the value of + `function_flags'. + (output_inline_function): Restore `current_function_uses_const_pool' + from `function_flags'. + (save_for_inline_copying): Only call `save_constants' if + `current_function_uses_const_pool' is nonzero. + (save_for_inline_nocopy): Ditto. + (save_constants): Tweaked to perform its treewalk faster. Notably, + it no longer accepts ptrs to NULL rtl. All callers changed. + * varasm.c (force_const_mem): Set `current_function_uses_const_pool' + if we create a constant pool reference. + + * cplus-parse.y, c-parse.y: Add new function `set_yydebug'. If + YYDEBUG is defined, sets `yydebug' to VALUE. Otherwise, prints + warning that operation is invalid. + * toplev.c (main): Call `set_yydebug' instead of setting `yydebug' + directly. This allows user to turn YYDEBUG off for faster parsing. + + * cse.c (simplify_binary_operation): Eliminate abort when passed + DImode operands. + +Fri May 17 21:56:41 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * hard-reg-set.h (reg_class_superunion): New var. + * regclass.c (init_reg_sets): Compute reg_class_superunion. + (reg_classes_intersect_p): New function. + + * reload.c (find_reloads): Alternative is discouraged if it puts + a pseudo in a register class it doesn't prefer. + + * reload1.c (basic_block_needs): Now an array, per register class. + (reload): Compute separate basic_block_needs for each class. + (spill_hard_reg): If pseudo is only in one block, see if that block + needs a spill register of a class containing the hard reg; leave the + pseudo alone if not. + + * reload1.c (reload_mode, reload_nregs): New vars. + (reload_reg_class_lower): Use them. + (allocate_reload_reg): New function. + (choose_reload_regs): Track size and class of any groups. We + can inherit reloads if we are the size of the largest group or + if our class is disjoint from those needed for groups. + Try all inherits first before all spill register allocations + unless there is a later reload with a smaller class; call + allocate_reload_reg to do the actual allocation. + Use new vars above. + (emit_reload_insns): Delete output reload even if we weren't + storing to memory. + + * reload.h (reload_secondary_reload, reload_secondary_p): New vars. + * reload.c (push_reload): If secondary reload register is needed, + make a secondary reload. + * reload1.c (reload): Reload with reload_secondary_p nonzero is in use. + (choose_reload_regs): Likewise. + (emit_reload_insns): Handle secondary reloads, when needed. + + * reload1.c (reload): Add pass to remove death notes for things that + are no longer registers or don't die if we must preserve death notes. + (emit_reload_insns): Refine REG_DEAD notes to be more accurate; make + notes for secondary reloads. + + * reload1.c (emit_reload_insns): Abort for output reloads for jumps; + we have to implement this at some point. + +Fri May 17 20:08:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * protoize.c: Handle ultrix like BSD. + +Fri May 17 15:56:41 1991 Richard Stallman (rms at geech.gnu.ai.mit.edu) + + * Pass library function name to INIT_CUMULATIVE_ARGS. + * calls.c (expand_call): Pass extra arg to INIT_CUMULATIVE_ARGS. + * expr.c (emit_library_call): Likewise. + * function.c (assign_parms): Likewise. + * tm-*.h (INIT_CUMULATIVE_ARGS): Accept the extra arg. + (INIT_CUMULATIVE_INCOMING_ARGS): Likewise, just for symmetry. + +Fri May 17 15:41:22 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * tm-i386v4.h (ASM_OUTPUT_COMMON): Don't attempt alignment on a + three byte boundary. + +Fri May 17 15:25:16 1991 Tom Wood (wood at dg-rtp.dg.com) + + * function.c (assign_stack_local, assign_outer_stack_local): Make + the alignment in bytes. + +Fri May 17 14:31:00 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-class.c (build_vbase_path): Only build a COND_EXPR if + NONNULL is zero. + (resolves_to_fixed_type_p): Check TREE_HAS_CONSTRUCTOR for + CALL_EXPRs and INDIRECT_REFs. + + * cplus-call.c (build_method_call): Add call to `constructor_name' + if BASETYPE changes. + * cplus-init.c (build_new): Add LOOKUP_NONVIRTUAL to FLAGS argument + to `build_method_call'. Constructors are never virtual. Also, set + TREE_HAS_CONSTRUCTOR bit for return value from `build_method_call'. + +Thu May 16 21:36:10 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h (CONSTANT_P): Now true for a CONST_DOUBLE. + * combine.c, cse.c, emit-rtl.c, expr.c, integrate.c, loop.c: + Update for new meaning of CONSTANT_P to include CONST_DOUBLE. + * optabs.c, recog.c, reload.c, reload1.c, rtl.h, rtlanal.c: + Likewise. + * romp.md, rs6000.md, out-alliant.c, out-convex.c: Likewise. + * out-gmicro.c, out-i386.c, out-i860.c, out-m68k.c: Likewise. + * out-sparc.c, out-spur.c, out-tahoe.c: Likewise. + + * combine.c (SUBST, SUBST_INT): If INTO equals NEWVAL, don't + record the substitution. + (try_combine, subst, make_compound_operation, simplify_and_const_int): + No longer need check for changes before using SUBST macro. + (simplify_shift_count): Likewise. + + * integrate.c (copy_rtx_and_substitute, case CONST): If what + was originally a constant becomes something that is not a constant + when passed through a recursive call, return it without the CONST. + + * rtl.c (copy_most_rtx): New function. + * rtl.h (copy_most_rtx): Declare it. + * function.c (fixup_var_refs_1, case MEM): If a MEM contains VAR, + ensure the MEM isn't shared by copying it. + + * expmed.c (expand_divmod): If doing MOD, produce divide result + into unique pseudo so that we might CSE the division. + +Thu May 16 12:01:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * reload.c (push_reload): Try find_dummy_reload before dead regs. + + * function.c (assign_stack_local*): Use GET_MODE_ALIGNMENT. + Use CEIL_ROUND consistently. + Don't force word alignment even if STRICT_ALIGNMENT (experiment). + +Thu May 16 10:31:04 1991 Jim Wilson (wilson at sphagnum.cygnus.com) + + * unroll.c (unroll_loop): Don't abort if start label does not + immediately follow LOOP_BEG note. This can happen as a result of + jump threading. + * reorg.c (mostly_true_jump): Eliminate repeated test in second loop. + + * sched.c (priority): Abort if find a NOTE in a groups of insns that + must be scheduled together. + (free_pending_lists): New function. Moves every *_LIST rtx on the + pending lists to the free list. + (add_insn_mem_dependence): Get a *_LIST from the free list instead + of creating one if possible. + (sched_analyze_1): Don't move an insn across a call if it uses a + register that is not already live across calls. + (sched_analyze_insn): Likewise. + (sched_analyze_1): When flusing the pending lists, put the *_LIST + rtx on the free list. + (sched_analyze): Likewise. + (schedule_block): Likewise. + (sched_analyze_2): For a cc0 setter/user pair, put a copy of all + dependencies on the first insn onto the second insn. + (sched_analyze_insn): Likewise for call sequences. + (sched_analyze_insn): Handle REG_INC notes just like SETs. + (sched_note_set): Handle hard registers same as psuedo regs. + (attach_deaths): Likewise. Don't add REG_DEAD notes to the frame + pointer, arg pointer or stack pointer. + (schedule_block): Likewise. + (rank_for_schedule): Do not check whether each insn of a sequence + that must be scheduled together is ready. They will only reach here + if they are all already ready. + (schedule_block): After reload, don't need to give special treatment + to insns at function start which set up the function parameters. + Don't treat tail specially if it is part of a group that must be + scheduled together. + When a group of instructions is scheduled together, run the lifetime + analysis code on every instruction in the group from last to first. + A call_insn kills all call_used and global regs except those + explicitly used by the call_insn. + (schedule_insn): Initialize new variables. If USE_C_ALLOCA, free + alloced memory immediately after each schedule_block call, not once + at the end. + + * rtl.c (add_dependence): When adding a dependence that points to an + insn that is part of a sequence that must be scheduled together, + make the dependence point to the last insn of the sequence instead. + +Wed May 15 13:08:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (simplify_and_const_int): If we have + (and (OP (lshiftrt X Y) Z) C), for OP of IOR, XOR, and NOT, commute + OP and LSHIFTRT to put AND and LSHIFTRT adjacent to try to form + ZERO_EXTRACT. + + * combine.c (subst, gen_lowpart_for_combine, get_last_value_validate): + Use object's mode instead of VOIDmode when we make + (clobber (const_int 0)) in case someone uses the mode for significant + bits. + * rtlanal.c (side_effects_p): Reject non-VOIDmode CLOBBERs. + + * rtlanal.c (reg_set_p_1): Remove test for `reg_set_reg' being MEM. + (reg_set_p): Abort if passed a MEM. + + * toplev.c (strip_off_ending): Strip trailing ".f". + +Wed May 15 12:54:18 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-typeck.c (build_modify_expr_1): If the TREE_TYPE of the + recursive result is an ARRAY_TYPE, change it to void_type_node so + build_compound_expr doesn't lose when calling default_conversion. + + * cplus-tree.h (lang_type): Remove AS_LIST field from lang_type. + Use TYPE_MAX_VALUE field of type instead. + (TREE_REFERENCE_EXPR): New macro. + + * cplus-parse.y (LC): If we are not in temporary allocation, call + permanent_allocation. This frees up any PARM_DECL nodes that were + allocated since we processed an inline function. NOTE: we still + have to clean up these parms from inline functions that did not go + inline. + + * cplus-decl.c (store_parm_decls): Since we no longer push an extra + binding level if ! PARMS_HAVE_CLEANUPS, test CLEANUP_LABEL to figure + out how far up the binding countours we must look. + (init_decl_processing): If FLAG_NO_INLINE is nonzero, set + FLAG_DEFAULT_INLINE to zero. + + * cplus-class.c (finish_struct_bits): Copy TYPE_MIN_VALUE and + TYPE_MAX_VALUE. These actually hold C++-related data that's moved + up from the lang_type data structure. + + * cplus-*.c: Change REFERENCE_EXPR to CONVERT_EXPR. Set + TREE_REFERENCE_EXPR bit to indicate a CONVERT_EXPR that's really the + address of a C++ reference expression. + +Wed May 15 12:30:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * tm-sparc.h (FIXED_REGISTERS): Register 0 is not fixed; it is used + for the condition code, not to represent the fixed %g0. + +Tue May 14 18:59:06 1991 Jim Wilson (wilson at sphagnum.cygnus.com) + + * explow.c (find_next_ref): Start search at first insn after INSN. + + * jump.c (jump_optimize): Update the three simplications that start + with the "if (...) x = 1; else {...} if (x) ..." case, so that when + HAVE_cc0 is not defined, they do not accept TST insns (which could + just be a register to register move). They should only accept insns + with the COMPARE operator. + +Tue May 14 14:51:33 1991 Tom Wood (wood at dg-rtp.dg.com) + + * cse.c (simplify_binary_operation): Don't abort when comparing + two CONST_DOUBLE values. + +Tue May 14 11:35:47 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-common.c (decl_attributes): Fix typo in name of attribute. + It should be `aligned'. Also don't crash on unknown attribute. + + * expmed.c (init_expmed): Make a separate object to free back to. + + * hard-reg-set.h (HOST_BITS_PER_LONG_LONG): Provide default definition. + + * toplev.c (main): Implement -gdwarf. + +Tue May 14 06:32:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (mark_used_regs): Don't make REG_DEAD notes for fixed regs. + + * combine.c (subst): Convert (not (ashift C X)) to (or (rotate ..)) + and similarly for (not (lshiftrt C X)). + (make_field_assignment): Make corresponding change in how we recognize + bitfield assignment of single bit to zero. + + * combine.c (merge_outer_ops): New function. + (simplify_shift_const): Use merge_outer_ops to generalize and + simplify handling of outer_ops. + Try using distributive law followed by invert distributive law + to simplify combinations of logical operations and shifts. + + * emit-rtl.c (gen_highpart): Correct conditional that says when we + can get the bits of a DFmode object; copy from gen_lowpart. + + * cse.c (simplify_binary_operation, case MULT): Simplify zero case. + (simplify_binary_operation, case DIV): In 0/x, return zero in proper + mode. + + * combine.c (simplify_comparison): Can only extend comparison + to wider mode if equality comparison or test of sign bit. + +Tue May 14 03:26:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-tree.h (lang_type): Change to use TREE_VEC to hold basetype + info. + (CLASSTYPE_N_BASECLASSES, CLASSTYPE_BASECLASS): Changed accordingly. + Baseclasses are now counted [0..n) instead of [1..n]. + (CLASSTYPE_BASETYPECLASSES): Deleted. + * cplus-*.c (various places): Change code to work with new + representation for basetypes. + + * toplev.c (main): Handle `-gdwarf' as a debug option. + + * cse.c (insert): Treat pseudos marked RTX_UNCHANGING_P as being + const. + +Mon May 13 22:44:18 1991 Jim Wilson (wilson at ok.cygnus.com) + + * mips.md: In the div/mod peepholes, don't apply the peephole if the + first operation overwrites one of its two operands. + +Mon May 13 12:14:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * expmed.c (store_bit_field, extract_bit_field): + Set volatile_p while checking predicates. + * recog.h (volatile_p): Declare it. + * explow.c (force_not_mem): Do nothing with BLKmode. + + * SYSCALLS.c (u_int): Don't define on DGUX--already defined. + + * m68k.md (zero_extend*): Don't make the subreg in the template. + Make it explicitly, and handle subregs as operand 0. + + * tm-convex.h (MODES_TIEABLE_P): Fix typos. + + * loop.c (check_dbra_loop): To check for a loop with a `break', use + loop_number_exit_label, not the uid_luid of each label, since loop + unrolling may have created new labels with no uid_luid. + + * expr.c (push_block): Fixed typo in last change. + +Mon May 13 12:07:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst): If we can't change comparison code, see if + we can instead surround our operation with an XOR. + + * combine.c (make_compound_operation, simplify_and_const_int): + Ensure shift counts are non-negative and in range before using them + to perform shifts. + (simplify_comparison): Likewise. + + * combine.c (try_combine): See if we have previously merged a + compare and arithmetic operation. If so try to take it apart to + allow further combines (such as making a branch-and-decrement). + + * combine.c (try_combine): Don't make VOIDmode register if our split + point is a constant. + + * combine.c (subst): Use COMBINE_RTX_EQUAL_P to see if SET_DEST + is our register; two hard regs might have different rtx. + + * combine.c (subst): Generalize associative law handling to + cases not involving constants. + + * combine.c (expand_compound_operation): If we would return a + (clobber (const_int 0)), return what we were given. + + * combine.c (simplify_shift_const): Clean up by removing fallthrough. + +Mon May 13 10:26:00 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * i386.md (all calls to output_move_double): call return + value to avoid spurious compiler warnings. + Allow REG in all alternatives of operand 0 where possible. + Remove patterns to recognize increment/decrement. + (addsi3, addhi3, addqi3): Do this in here instead. + (floatdidf2): New pattern. + (adddi3, subdi3, negdi2): New patterns. + (umulsi3, umulhi3): Remove obsolete UMULT patterns. + (divM3, udivM3, divmodM4, udivmodM4): Use "r" constraint instead + of "x" or "abc". + (sqrtsf2, sqrtdf2): New patterns. + (ashldi3, ashrdi3, lshldi3, lshrdi3): New patterns + (All shift and rotate patterns): Don't use reg name explicitly in + output string: use %N operand reference. + (ashlM3, lshlM3): Use `add' instead of `shl'/`sal' if possible. + (insv): Fix output constraint. Clarify source. Disable for now - + makes worse code. + (SImode bit test, all Scond patterns): Allow MEM operands too. + (seq, sne): Handle CC_Z_IN_NOT_C. + (jump, indirect_jump, tablejump): Align code on word boundary + after unconditional jumps. + (`loop' patterns): Delete - will never be useful on i386. + (call_pop, call_value_pop): New patterns. + (return): New pattern: Do `return' if simple epilogue. But only if + the real function epilogue isn't next. + (movstrsi): Do word moves, not just bytes, if count is unknown. + (ffsM2): New patterns. + + * out-i386.c (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, + FP_CALL1, FP_CALL): Move to tm-i386.h for use by i386.md. + (output_movf, fp_call_internal, output_fix_trunc, split_di): + No longer static - called from i386.md. + (via_memory): Finish return value change. + (output_move_const_double): Delete unused function. + (simple_386_epilogue): New predicate. + (function_prologue): Allocate frame regardless of whether or not + there is a frame pointer. + Use output_asm_insn instead of fprintf to push registers. + (function_epilogue): Likewise. + If there is a frame pointer, don't necessarily fix %esp just to + pop a reg - use offset from frame pointer. + Fix -fomit-frame-pointer support. + Fix RETURN_POPS_ARGS case where args > 32K bytes. + (print_operand): A LABEL_REF gets an OFFSET_PREFIX too. + (print_operand_address): %esp can only be base reg, never index. + (split_di): New function. + + * tm-i386.h: Remove references to obsolete tm-compaq.h file. + (TARGET_486): New flag. + (TARGET_SWITCHES): New options -m486, -mno486, -m386. + (SMALL_REGISTER_CLASSES): New macro. + (ASM_OUTPUT_LOOP_ALIGN): New macro. + (all reg macros, ARG_POINTER_REGNUM): Create argument pointer, + to be eliminated in favor of %esp or %ebp. + (HARD_REGNO_NREGS, REGNO_REG_CLASS): Use FP_REGNO_P. + (REGISTER_MOVE_COSTS): It is expensive to move between integer and + float registers. + (FP_REGNO_P): Detect only the FP regs. + (all class macros): Delete obsolete classes ABC_REGS & ABCI_REGS. + (REG_CLASS_FROM_LETTER): Add `S' for SIREG, remove `x' for ABCI_REGS. + (CONST_OK_FOR_LETTER_P): Add `J' for DImode shifts. + (FIRST_PARM_OFFSET): Offset now zero. + (ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): + Use generalized scheme to eliminate frame and arg pointers. + (INITIAL_FRAME_POINTER_OFFSET): Delete. + (REG_OK_FOR_BASE_P): allow virtual arg pointer. + (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, FP_CALL1, FP_CALL): + Moved here from out-i386.c for use by i386.md. + + * tm-compaq.h: Delete obsolete file. + +Sun May 12 18:38:41 1991 Ken Raeburn (raeburn at watch.com) + + * cplus-decl.c (print_binding_level, print_binding_stack, + print_other_binding_stack): New debugging routines; dump one or + more binding levels to stderr. + + * cplus-decl.c (push_to_top_level): New routine; saves copies of + all class and local bindings, and some other state, and clears the + real values, to effectively move to global scope. + (pop_from_top_level): Restore the saved state. + + * cplus-decl.c (adjust_type_value): No longer static. Abort if + current_binding_level is class binding level; need to investigate + that situation further. + + * cplus-decl.c (finish_function): Check that the binding level being + popped really is a function-parameter binding level. + + * cplus-tree.h (DESTRUCTOR_DECL_PREFIX): Replaces + DESTRUCTOR_DECL_FORMAT; used as a prefix before the class name. + * cplus-decl2.c (grokclassfn): Use it, and call build_overload_name + rather than just copying the class name. + + * cplus-method.c (fndecl_as_string): Use TREE_TYPE rather than + indirecting through type name and the identifier's associated type, + since the latter may have changed. + (build_nested_name): New argument, text_end; callers changed. Call + build_overload_identifier rather than copying class name. + (build_overload_value): Strip non-lvalue nodes for all arguments. + Fixed up the handling of negative DImode values. + (build_overload_identifier): New function. Copy class name (with + length) if non-template, or build a name from template parameters. + (build_overload_name): Call build_overload_identifier for class + names. + + * cplus-parse.y: Added comment about use of $$ for $1. + (template_type_name): Removed useless precedence specificiation. + (template_arg_list): Wrap TREE_LIST nodes around all arguments in + the list. + (template_arg): Call groktypename on type names. For expressions, + specify "UNARY" precedence. + (PRE_PARSED_CLASS_DECL handling): Put a copy of the new class decl + into global scope, to avoid recursive expansion, since we start in a + non-global scope set up for the parameters. + + * cplus-pt.c (coerce_template_parms): New function. Converts + template arguments to appropriate types, returns a vector containing + results. + (mangle_class_name_for_template): Removed nparms argument. + Changed to deal with arglist as vector. No longer call + groktypename. Some initial code added for PARM_DECL (non-type) + parameters; work not completed. + (lookup_template_class): Call coerce_template_parms. Removed some + unused code. + (push_template_decls, pop_template_decls): Fixed to deal with + arglist as vector. More code for non-type parameters. + (instantiate_template): Push to top binding level before pushing any + declarations. + (end_template_instantiation): Pop from top level, then push the new + decl at top level. + + * cplus-tree.h (struct lang_identifier): Renamed field "template" to + "class_template_info"; accessor macros changed. + + * cplus-pt.c (struct template_info): Renamed from "template". + Removed unused fields. + +Sun May 12 17:38:46 1991 Jim Wilson (wilson at cygnus.com) + + * unroll.c (copy_loop_body): Fix typo: had `==' for `='. + +Sun May 12 17:05:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * genattrtab.c (gen_attr): Clear has_asm_insn field in new object. + +Sun May 12 04:21:52 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * hard-reg-set.h (HARD_CONST): New macro. Converts integer + constants to appropriate type for use with HARD_REG_SET. + ({SET,CLEAR,TEST}_HARD_REG_BIT): Use this macro where appropriate. + (GO_IF_HARD_REG_SUBSET): Ditto. + (HARD_REG_SET): Add new case if FIRST_PSEUDO_REGISTER <= + HOST_BITS_PER_LONGLONG. + * global-alloc.c: Pass HARD_CONST (0) instead of 0 to functions + which are looking for a HARD_REG_SET argument. + * reorg.c (resource_conflicts_p): Change comparison of HARD_REG_SET + value to compare against HARD_CONST. + + * all xm-*.h files: Added HOST_BITS_PER_LONGLONG where + HOST_BITS_PER_LONG was defined. + * tm-sparc.h (REG_CLASS_CONTENTS): Fixed in case we're using long + long HARD_REG_SETs. + + * toplev.c (main): support -gdwarf switch. + + * longlong.h (umulsidi3): SPARC .umul routine returns the value in + WORD_LITTLE_ENDIAN form, so swap. Other word-endian changes for + inline mul routines. + + * gnulib2.c (__divdi3): If C is nonzero, negate whole division + instead of returning negation of quotient. + +Sat May 11 20:06:08 1991 Torbjorn Granlund (tege at krishna.sics.se) + + * expmed.c (outside of functions): New vars: lea_cost, lea_max_mul. + (init_expmed): Initialize lea_cost and lea_max_mul. + (synth_mult): Use them. + +Sat May 11 20:11:41 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-class.c (build_vbase_path): Rewritten and simplified. + * cplus-cvt.c (build_up_reference): Try to get away without building + a NOP_EXPR around the return value of `build_component_addr'. + Ditto for return value from `convert_pointer_to'. + + * cplus-decl.c (void_zero_node): New node. Used in conditional + expressions where one arm must do nothing. + * various places: replace calls that built this node dynamically to + just use the global copy. + * cplus-tree.h (void_zero_node): Declare it globally. + + (maybe_build_cleanup): Don't call `convert_force' on the return + value of `build_unary_op'. We should have license to modify its + type without harm. + * cplus-gc.c (protect_value_from_gc): Same idea for VAR_DECL and + PARM_DECL nodes. + + * toplev.c (f_options): Add choice for -fPIC. + + * varasm.c (assemble_function): If it's a function name that's the + first global name, strip of a leading '*' if there is one. + + * reload.c (find_reloads): Fix comment. + + * stmt.c (expand_return): Call `any_pending_cleanups' with argument. + + * expr.c (expand_expr): In TARGET_EXPR case, If TARGET is null and + DECL already has rtl, use that as the target. + (expand_expr): In BIND_EXPR try using expand_{start,end}_bindings to + catch cleanups...otherwise fixup_cleanups must be modified to deal + with cleanups not in any contours. + +Sat May 11 15:09:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * out-i386.c (via_memory): Return a memref to the stack. + (fp_call_internal): Change call to via_memory. + + * expr.c (push_block): New arg BELOW specifies padding direction. + All callers changed. + (emit_push_insn): Pass an interesting value for BELOW. + + * c-parse.y (typespec): Pass the TYPE_DECL for a typedef name. + * c-decl.c (grokdeclarator): Handle TYPE_DECL in declspecs. + +Thu May 9 15:17:44 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (zero_extend pattern): Compute correct constant. + +Thu May 9 07:44:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst): Remove WAS_REPLACED; always check the rtl + for specific cases of interest and don't use TO and FROM when + looking into the rtl. + + * combine.c (subst, case MEM): Call make_compound_operation here + so any ASHIFTs will be MULTs for mode_dependant_address_p calls later. + (subst, case PLUS): Remove cases already done elsewhere. + + * expmed.c (emit_store_flag): Don't let the delete_insns_since call + we do kill insns to do an auto-inc. + + * flow.c (propagate_block): Don't treat global regs as clobbered + over a CALL_INSN even if call-clobbered. + + * stmt.c (expand_end_stmt_expr): Correctly handle the case where an + expression statement is just an auto-inc of a var. + + * sparc.md (fix_trunc[sd]fsi2): Finish change to use MATCH_SCRATCH + by eliminating DEFINE_EXPAND and making DEFINE_INSN a named pattern. + +Wed May 8 13:31:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * cccp.c (rescan): Handle symbols before // as before /*. + + * Makefile.in (objc-parse.o): Specify the command. + + * c-parse.y (typespec): Fix previous change. + + * reload1.c (choose_reload_regs): Use spillregs in round robin. + +Wed May 8 11:00:29 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-lex.c (tree_node_kinds): Renamed to `tree_node_counts'. + +Wed May 8 05:50:29 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (copy_rtx_and_substitute): Don't round frame size. + + * loop.c: Must include insn-flags.h to get + HAVE_decrement_and_branch_until_zero. + * Makefile.in (loop.o): Likewise. + + * expmed.c (expand_divmod): Use LOG instead of INTVAL (OP1) + once we start generating rtl. + +Wed May 8 05:38:06 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-decl.c (duplicate_decls): Don't crash on duplicate + TEMPLATE_DECLs. + (globalize_nested_type): Handle globalizing types when + CLASS_BINDING_LEVEL goes out of effect. + (init_decl_processing): Comment out decls for ABS, FABS and LABS. + They conflict with libg++ inlines. + + * cplus-decl2.c (build_push_scope): Fix bug in last change. + (finish_file): Make the dummy decl that we tack on to the global + scope a TYPE_DECL instead of a VAR_DECL. Fake global VAR_DECLs are + problematic on some machines (i.e. MIPS). + + * cplus-init.c (init_vfields): Use TREE_TYPE (VFIELDS) to find the + type for which the VFIELD was last distinguished. This picks up + cases where single inheritance overrides base class vtables and the + base class does not get a new vtable for the override. + + * cplus-parse.y (named_class_head_sans_basetype): Handle a + `template_type_name' by itself. This happens with e.g. + friend class Stack. + + * cplus-pt.c (mangle_class_name_for_template): Put ',' between + parameters. + (push_template_decls): Don't crash if ARGLIST is ERROR_MARK_NODE. + + * cplus-class.c (finish_base_struct): Compute MAX_HAS_VIRTUAL by + looking at all the base classes relevant to VFIELDS. + (build_vbase_path): Initialize NONNULL to zero. + +Tue May 7 23:47:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * stmt.c (any_pending_cleanups): Don't fail if block_stack is empty. + +Tue May 7 22:46:16 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (simplify_binary_operation; case EQ, NE): Don't assume + the address of a symbol is non-zero. + + * sched.c (schedule_insns): Ensure we free memory used by + schedule_block when using the C alloca. + +Tue May 7 14:13:57 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * reload1.c (mark_reload_reg_in_use): New arg MODE. Mark all the regs. + (choose_reload_regs): Pass that arg; don't loop here. + + * c-parse.y (typespec): Convert a TYPENAME to its meaning. + + * fold-const.c (fold): Don't assume symbolic constant is nonzero. + + * c-typeck.c (c_expand_asm_operands): Convert arrays, fcns to pointers. + +Mon May 6 23:29:21 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): Only make a REG_WAS_0 note if the previous + set was to the same register, not just the same quantity; + if previous REG_WAS_0 note, update back pointer. + If setting a register to a constant, update QTY_CONST and + QTY_CONST_INSN so it points to the last set. + In special case for (set REG0 REG1), ensure any REG_WAS_0 notes are + updated correctly. + + * genrecog.c (make_insn_sequence): Don't clobber `i' when it is + still needed. + + * out-vax.c (print_operand_address): Fix bug in last change in handling + (plus (reg) (reg)). + +Mon May 6 16:41:50 1991 Torbjorn Granlund (tege at zevs.sics.se) + + * expmed.c (synth_mult): Make it handle t == 0. Improve comments. + Use (max_cost <= add_cost) instead of (max_cost < add_cost) to + determine if we should fail early (to better prune the search). + Remove loop with n from factor synthesis. Remove -2 bias from m + loop (for clearity). Add code to use load-effective-address + instructions. Use bit-fiddling instead of loop to determine q in + the last synthesis case. + +Mon May 6 11:21:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-typeck.c (convert_for_assignment): Reword an error message. + + * c-typeck.c (build_conditional_expr): Typo in last change. + + * Makefile.in (enquire, enquire.o): Depend on gnulib. + +Sun May 5 17:28:22 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil) + + * make-cc1.com: Update for GCC 2.0; build insn-attr.h, insn-attrtab.c. + Compile and add obj to linker list: c-aux-info.c, c-common.c, c-lang.c, + aux-output.c, calls.c, dwarfout.c, function.c, reorg.c, sched.c, + sdbout.c, unroll.c, insn-attrtab.c. Remove references to symout.c. + +Sun May 5 15:32:01 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (rest.encap): Make gnulib before float.h. + + * c-typeck.c (build_conditional_expr): + Don't assume symbolic constant is nonzero. + + * reload1.c (choose_reload_regs): Ignore avoid_return_reg. + (reload_as_needed, reload): Don't bother setting avoid_return_reg. + +Sun May 5 14:30:14 1991 Michael Tiemann (tiemann at cygint.cygnus.com) + + * cplus-class.c (prev_class_type): Declare this to be static. + (build_vbase_path): Test NONNULL to decide whether a COND_EXPR is + actually needed. + (finish_struct): Another sort of hard virtual function to deal with + is one which comes from the non-leftmost baseclass, and who's index + is different between that class and the main derived class. Use new + variable DOING_HARD_VIRTUALS to control when we punt and when we + plow through. + (modify_vtable_entry): If we find at this point that we have a hard + virtual function, just put it on the list PENDING_HARD_VIRTUALS if + DOING_HARD_VIRTUALS is nonzero. + (fixed_type_p): Handle SAVE_EXPR, RTL_EXPR, PLUS_EXPR, MINUS_EXPR, + NOP_EXPR and CONVERT_EXPR. + (pushclass): Fixed comment. Also change test for whether this is + the top-level class scope from an obscure one to an obvious one, and + add comment. + (pushclass,popclass): Now always allocate a binding level. Later + we'll have to rewrite this to actually use it. + + * cplus-gc.c (type_needs_gc_entry): Don't need a GC entry for + ERROR_MARK_NODE. + + * cplus-init.c (build_new): Set TREE_CALLS_NEW on RTL_EXPR. This + gives us a case that `fixed_type_p' can grok. + + * cplus-lex.c (identifier_type): Make this __inline if compiling + with GNU C. + (tree_node_kinds): Renamed to `tree_node_counts'. + + * cplus-parse.y (various places): Take advantage of default rule + `$$ = $1', and where possible, use $$ instead of $1. + Also, back out change for setting `looking_for_typename' to 1 at top + level. + + * cplus-decl2.c (build_push_scope): If the user gives X::foo in X's + scope, don't return a SCOPE_REF. Just return `foo' instead. + + * cplus-decl.c (init_decl_processing): Don't define `alloca' as a + built-in function until libg++ header files agree with its built-in + type. + (finish_decl): Don't crash if TYPE is error_mark_node. + + * fold-const.c (split_tree): When splitting the tree, don't call + convert if the TYPE_MODEs are the smae. This screws up C++ where + conversion of one pointer type to another can cause the pointer's + value to change. + + * tree.c (get_identifier): Speed up `get_identifier' by about a + factor of 2. This becomes noticable with the long names used for + C++ overloading. + (tree_cons): Make this most frequent user of `make_node' perform its + actions inline. + + * calls.c (expand_call): Eliminate many (most) calls to strcmp by + being smarter about when to call it. Also, don't call `push_block' + in the trivial case when it's not needed. + +Sun May 5 08:51:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (convert_to_mode): Fix (for the second time) test for when + gen_lowpart should be called. + + * cse.c (find_best_addr): Try to fold address. + (fold_rtx): Do associativity and (not (not ...)) checks here. + (cse_insn): Not here. + + * combine.c (recog_for_combine): New parameter, PNOTES. + When we add a CLOBBER, put a REG_UNUSED note for it in *PNOTES. + (try_combine): Call recog_for_combine with new parameter. + Delete any now-invalid REG_UNUSED notes in OTHER_INSN and add any + required new ones. + Add REG_NOTES to I3 and I2 due to added CLOBBERs. + (remove_death): Call new function, remove_note. + (move_deaths): Don't get confused by a CLOBBER. + (distribute_notes): Don't make duplicate REG_UNUSED notes. + Don't put a REG_DEAD note on an insn when the register is + partially modified, but remains valid. + + * rtlanal.c (remove_note): New function. + + * combine.c (try_combine): When making a PARALLEL that does a compare + and arithmetic, don't simplify the COMPARE. + + * combine.c (try_combine): Validate that I1DEST isn't being + modified invalidly. + + * combine.c (simplify_comparison): In ZERO_EXTRACT case, add missing + test for equality comparison against zero; also invert comparison + condition. + If we can't do a comparison in a narrower mode, but we know that + some wider bits are zero, see if we can do it in a wider more. + + * cse.c (simplify_binary_operation): Remove obsolete code to convert + negative shift counts to the opposite shift. + Don't fold invalid shifts since they may trap (e.g., on Vax). + + * reload1.c (emit_reload_insns): Use rtx_equal_p to see if a result + is already in the desired register. + + * combine.c (find_split_point): Add two more ways to split an insn. + + * combine.c (gen_binary): Put a complex operand first in addition to + putting constants second, just like subst would do. + + * combine.c (significant_bits): Correct computation of significant bits + for division operations. + + * combine.c (apply_distributive_law): Reject complex SUBREGs. + SUBREG distributes over logical and addition operations. + + * combine.c (subst; case AND, IOR, XOR): Add some boolean + arithmetic simplifications. + + * expr.c (do_jump): ADDRESS_EXPR is not always zero, unfortunately. + + * expr.c (do_store_flag): In case where we are testing a single bit, + don't convert to output mode until after we do the shift. + + * optabs.c (expand_binop, expand_unop, expand_fix): Compare + enum insn_code objects against CODE_FOR_nothing instead of 0. + + * romp.md (bit_insv): Use CC0 in standard way; i.e., in NE. + +Sat May 4 20:41:12 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil) + + * c-aux-info.c (gen_aux_info_record): Use getcwd on VMS a la USG. + * dbxout.c: Same here. + * xm-vms.h: Define unlink as remove + (GCC_INCLUDE_DIR): Provide a dummy definition. + +Sat May 4 16:46:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (can_combine_p, try_combine): Use SMALL_REGISTER_CLASSES + to indicate when it is valid to do combines involving hard registers. + * cse.c (canon_hash): #ifdef SMALL_REGISTER_CLASSES, don't record + hard registers unless they are fp, ap, sp or are fixed. + * loop.c (valid_initial_value_p): #ifdef SMALL_REGISTER_CLASSES, + hard register aren't valid initial values. + * reload1.c (reload): Initialize FORBIDDEN_REGS depending on + whether we have small register classes or not. + + * ns32k.md: Replace const_int with const_int_operand. + Remove HImode extractions. + Remove patterns assigning an AND to CC0. + (andcbxx3): Remove name and eliminate case with NOT as second operand. + (sbitx, cbitx): Remove patterns involving IOR and ASHIFT; add patterns + with ZERO_EXTRACT as destination. + (ibitx): Put ASHIFT as first operand in XOR. + (bitfield compare): Remove comparison of 1 bit field with 1; combine + converts this to comparison with zero. + (and-compare-branch): Fold PLUS or MINUS into constant, like combine + will do. + Remove patterns for reversed cases. + * out-ns32k.c (const_int): Deleted. + + * rtlanal.c (reg_used_between_p, reg_set_between_p): Use GET_RTX_CLASS. + (reg_set_p_1): If we are setting a MEM, don't think we are setting + registers used in its address. + + * m68k.md (cmpsf, cmpdf, tstsf, tstdf for FPA): Use MATCH_SCRATCH. + * sparc.md (memory store patterns): Likewise. + + * function.c (assign_parms): Function is varargs function if the + last parameter is `__builtin_va_alist_' instead of checking the first + parameter. Normally, this is the same, but some functions in MACH + have named parameters before va_alist. + + * combine.c (simplify_comparison): Remove abort on paradoxical SUBREGs + now that we know they can occur. + + * reload.c (decompose): Handle SCRATCH; it can't conflict with + anything. + (find_reloads): All operands can set earlyclobber, not just REG & MEM. + Add support for "X" constraint. + SCRATCH does not match "g" constraint. + +Sat May 4 14:03:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * enquire.c (EPROP): Avoid a <= out if bad is set. + + * SYSCALLS.c: Test bsd4_2 along with BSD. + +Fri May 3 14:26:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-decl.c (pushdecl): Stop looping on type if find error mark. + + * loop.c (invariant_p): An address with a PLUS is not the same as + MEM_IN_STRUCT_P being set. + + * tree.h (TREE_NO_UNUSED_WARNING): New macro. + * stmt.c (warn_if_unused_value): That flag suppresses warnings. + * c-typeck.c (build_unary_op): Set flag when converting postinc. + +Fri May 3 08:09:47 1991 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Remove workarounds for + register elimination problems. + +Fri May 3 07:14:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * a29k.md: Fix typo in dmac pattern. + Make many define_splits that convert DFmode and DImode to one word + at a time to operate only after reload completes to improve reg alloc. + (movdf): Correct typo in mfacc. + (rotlsi3): Count is QImode, not SImode. + + * tm-a29kunix.h (BIGGEST_ALIGNMENT): Change to 64. + + * tm-romp.h (OPTIMIZATION_OPTIONS): Enable insn scheduling. + (register definitions): No longer need dummy register and class; + register numbers for FP register change. + * romp.md: Use MATCH_SCRATCH instead of allocating pseudos + to the dummy register class or base register depending on alternative. + (FP insns): Add missing "=" to constraints in CLOBBERs. + (extendqisi2, extendqihi2): Now DEFINE_EXPAND. + (mc03 peephole): Can do if right shift >= 24 bits. + * out-romp.c (reg_15_operand): Remove special case for FP delay slot. + (romp_sa_size, output_fpop, output_loadsave_fpops, output_fpops): + Change floating-point register numbers. + + * combine.c (simplify_shift_const, case for shifts): Verify that + the host word size is wide enough. + Properly handle (ashift (subreg (ashiftrt ...) ...) ...). + + * out-vax.c (print_operand_address, case PLUS): Handle all addresses + accepted by GO_IF_LEGITIMATE_ADDRESS. + + * explow.c (plus_constant): force_const_mem does not necessarily + return a valid address. + * integrate.c (copy_rtx_and_substitute): Likewise. + + * Makefile.in (local-alloc.o): Includes output.h. + * rtl.def (SCRATCH, MATCH_SCRATCH): New RTL codes. + * regs.h (max_scratch): Add definition. + * genconfig.c (walk_insn_part): Handle MATCH_SCRATCH. + * genextract.c (walk_rtx): Likewise. + * genemit.c (max_operand_1): Likewise. + (gen_exp): Emit a SCRATCH for for MATCH_SCRATCH. + (gen_insn): We can create (clobber (scratch)). + * genoutput.c (scan_operands): Handle MATCH_SCRATCH; + use switch instead of if's. + * genrecog.c (make_insn_sequence): We can created (clobber (scratch)). + (add_to_sequence): Handle MATCH_SCRATCH. + * flow.c (life_analysis): Initialize max_scratch. + (propagate_block): Update max_scratch with count from this block. + (mark_set_1): Make REG_UNUSED note for SCRATCH and count it. + * local-alloc.c: Include output.h. + (qty_scratch_rtx): New variable. + (alloc_qty): Rename INSN_NUMBER to BIRTH since that's what it is. + (alloc_qty_for_scratch): New function. + (local_alloc): Account for quantities needed for SCRATCH. + Allocate and initialize qty_scratch_rtx. + (block_alloc): Allocate quantities for SCRATCH operands. + (requires_inout_p): Add "X" constraint. + * recog.c (scratch_operand): New function. + (constrain_operands): SCRATCH matches a register constraint unless + strict. + Add "X" constraint. + * regclass.c (reg_class_record): Add "X" constraint. + * reload1.c (emit_reload_insns): Add SCRATCH to test for operand that + dies right away; update REG_UNUSED note for SCRATCH. + Never need reload insn for SCRATCH, even if no REG_UNUSED note. + * rtlanal.c (reg_mentioned_p, reg_overlap_mentioned_p, rtx_equal_p): + Support SCRATCH. + (volatile_refs_p, side_effects_p, may_trap_p): Likewise. + (inequality_comparisons_p, replace_regs): Likewise. + + * flow.c (mark_set_1): Don't do anything special with partial + assignments; this is already handled by mark_used_regs and we now + want to make LOG_LINKS for these. + + * combine.c: Includes expr.h. + (expand_field_assignment, make_extraction): New functions. + (get_pos_from_mask, make_field_assignment): Likewise. + (can_combine_p): Remove special case for SUBREG in SET_DEST; call + expand_field_assignment instead. + (try_combine): Remove code to handle STRICT_LOW_PART here. + Call expand_field_assignment on SETs in I3. + (find_split_point): Split up simple cases of bitfield assignments. + (subst, case ZERO_EXTRACT): Remove processing of ZERO_EXTRACT in a + SET_DEST from here. + (subst, case SET): Try to convert this into a field assignment by + calling make_field_assignment. + No need to call make_compound_operation for COMPAREs; + make_compound_operation now returns an rtx and is no longer passed + a pointer. + Remove tests for ZERO_EXTRACT in SET_DEST. + (make_compound_operation): Now returns rtx and is passed rtx, instead + of rtx *. + Call make_extraction. + (simplify_comparison): Call make_compound_operation here and remove any + outermost SUBREGs that aren't doing anything. + + * Makefile.in (combine.o): Includes expr.h. + + * expr.c (convert_to_mode): Correct which cases can use gen_lowpart. + + * final.c (final_scan_insn): Don't set INSN_DELETED_P after writing + insn. + + * genoutput.c (main): Don't include aux-output.c in insn-output.c. + Include stdio.h before output.h. + (output_epilogue): Write definitions for all the predicates + placed in `insn_operand_predicate'. + * output.h: No longer need to define operand-predicate functions. + * configure: (m88k/dg): Only difference between xm-m88k{,dgux}.h was + definition of SEPARATE_AUX_OUTPUT, so we don't need xm-m88kdgux.h. + * xm-m88kdgux.h: Deleted. + Fix typo setting `target' in Makefile. + * Makefile.in (AUX_OUTPUT2): Deleted. + (OBJS): Remove AUX_OUTPUT2 and add aux-output.o. + (aux-output2.o): Now aux-output.o. + (insn-output.o): No longer depends on aux-output.c. + * make-m88kdgux (AUX_OUTPUT2): No longer define. + * tm-m68k.h, tm-romp.h, tm-sparc.h: Define functions in out-*.c and + used by insn-output.c. + * tm-m88k.h: Remove conditionalization for SEPARATE_AUX_OUTPUT; now + always done. + No longer define predicate functions; done by genoutput.c. + * tm-mips.h: No longer define SEPARATE_AUX_OUTPUT. + * out-*.c: Add includes previously present in insn-output.c. + * out-sparc.c (output_fp_move_double): No longer static. + (output_sized_memop): No longer need to define asm_out_file here. + (output_function_epilogue): Correct type; function is void, not char *. + +Fri May 3 01:05:44 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) + + * sdbout.c (sdbout_one_type): TYPE_FIELDs may contain other kinds of + _DECL nodes than just FIELD_DECL nodes (in GNU C++, at least). + Don't look through such nodes until further mods are made to handle + them better. + +Thu May 2 14:43:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * c-decl.c (finish_enum): Don't store enum type as type of value. + + * c-parse.y (YYPRINT, yyprint): New macro and new function. + + * expmed.c (expand_and): Handle both args constant. + + * expr.c (store_field): Avoid refetching from bitfield if possible. + + * math-68881.h (pow): Negate x if negative when taking log. + + * expr.c (emit_move_insn): Fixed typo in `y1 = change_address' call. + Reenable the code to move objects word at a time. + +Thu May 2 12:29:16 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil) + + * cccp.c (hack_vms_include_specification): Modified conversion of + unix filenames to VMS filenames, if no VMS device or directory is + present, and a unix style directory name is present, then use the + first unix directory name as the VMS device spec. This is only + used in '#include <...>' type includes, when the include file has + not been found in the standard locations. + +Thu May 2 10:06:47 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) + + * cplus-decl.c (init_decl_processing): Call init_gc_processing if + -fgc is requested. + * cplus-init.c (build_new): Argument to build_compound_expr must be + a TREE_LIST all the way. The last elt of the chain cannot be an + _EXPR. + +Thu May 2 07:33:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case CONVERT_EXPR): Pass bitsize to store_field + instead of size in bytes. + +Wed May 1 13:33:58 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) + + * version.c: Bumped version number to 1.93. + +Wed May 1 12:26:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * gcc.c (link_command_spec): Pass plain -m to ld. + + * c-decl.c (finish_enum): Clean up re-laying out of type. + +Wed May 1 08:04:44 1991 Michael Tiemann (tiemann at cygnus.com) + + * Makefile.in: Handle new cplus-*.c files. + + * cplus-typeck.c (common_base_type): Make this function recursive. + (build_component_ref): Test whether or not a FIELD_DECL, not whether + or not a VAR_DECL||CONST_DECL||TYPE_DECL. + + * cplus-parse.y: Fixed grammar so that template type decls could be + used. Previously, support existed for template decls following + types, but not as types. + * cplus-pt.c ({push,pop}_template_decls): New functions. + (instantiate_template): Call `push_template_decls'. + (end_template_instantiation): Let `poplevel' restore old bindings. + No need to clear out extra stuff. + (pushclass, popclass): Call `{push,pop}_template_decls' if the class + we are pushing or popping has template arguments. These arguments + go at class level. + + * cplus-method.c (build_opfncall): Test TRY_SECOND before testing + possibly uninitialized XARG2. + + * cplus-lex.c (init_lex): Initialize NODE_TABLE, OPNAME_TAB and + ASSIGNOP_TAB to hold zero. Since these come from malloc'd memory, + we cannot trust them to be initialized on startup. + + * cplus-init.c (expand_aggr_init_1): When initializing through a + TARGET_EXPR for objects of the same type (e.g., X a = X (10);) + use EXP's DECL_RTL as the DECL_RTL of the TARGET_EXPR. + + * cplus-decl2.c (finish_file): Handle new flag `-fgnu-binutils'. + When zero, don't use GNU extensions to a.out format. ???Should be + merged into varasm.c. + + * cplus-class.c: Added support for `dossiers'. This support is + implemented by extending the virtual function table and by giving + all C++ objects a virtual function table to hold it's dossier. + * cplus-decl.c (record_builtin_type): New function to construct + dossier information for built-in types. + (output_builtin_tdesc_entries): To keep repeated information under + control, we only output this information for the file that contains + `main'. + (init_decl_processing): Many dossier-related changes. + (init_lex): Recognize new reserved words `headof' and `classof' if + -fgc. + * cplus-parse.y: Grammar now recognizes `headof' and `classof' + expressions. + * cplus-method.c: Added dossier constructors here. + * cplus-tree.h (CLASSTYPE_DOSSIER): New macro: `dossier' is a new + field in lang_type. + * cplus-typeck.c (convert_for_assignment): Handle + `class_star_type_node'. + + * cplus-class.c: New variable current_class_depth. Used to tell + what class nesting level the compiler is at. + * cplus-decl.c (grokdeclarator): Now supports references to decls + that come from nested types. For example, int foo::bar (foo_tag); + where `foo_tag' is a tag that comes from foo. Previously this was + supported only as int foo::bar (foo::foo_tag); + * cplus-decl2.c (build_push_scope): build a SCOPE_REF node while + pushing into the context for the scope. When `grokdeclarator' sees + one of these nodes (distinuished by its TREE_COMPLEXITY being set to + the current_class_depth), it processes the decl and pops the scope. + + * cplus-class.c (build_vbase_path): Trust objects that are + `fixed_type_p'. Also, don't assume an object is non-null unless + flag says this is explicitly so. InterViews creates and may + manipulate (via delete) lots of null objects. + (build_vfn_reference): Use IS_AGGR_TYPE test on type, not in + INSTANCE. + (resolves_to_fixed_type_p): New argument NONNULL is used in case we + know and object to be non-zero. All callers changed. + + * cplus-call.c: New file, from file cplus-class.c. Contains code to + generate method calls. + * cplus-class.h: New file, contains common declarations for + cplus-class.c and cplus-call.c. + + * cplus-class.c (finish_struct_bits): Don't leave last_conversions + uninitialized. + +Tue Apr 30 17:14:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * expr.c (expand_expr): + Preserve volatility when changing ARRAY_REF to use a pointer. + + * vax.md (indirect_jump): Use parens around register, not @. + + * fixincludes (machine/cpu.h): Delete superfluous `static'. + + * tm-decstatn.h (CPP_PREDEFINES): Define __mips and __LANGUAGE_C. + + * explow.c (allocate_dynamic_stack_space): Compensate if + STACK_POINTER_OFFSET throws off the alignment. + + * loop.c (strength_reduce): Typos setting not_every_iteration. + +Tue Apr 30 16:10:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * vax.md (bicb): Fix typo that caused operand not to be negated. + (jlbs/jlbc): Operand[0] cannot be a constant. + + * rtl.h: Put NOTE_INSN_... codes in order. + (find_regno_note): Add missing definition. + + * reload.c (find_reloads_address): Handle an indexed stack slot that + is made out of range by frame pointer elimination. + +Tue Apr 30 14:09:28 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * toplev.c (compile_file): Output gcc2_compiled, not gcc_compiled. + * tm-tower-as.h (ASM_IDENTIFY_GCC): Likewise. + +Tue Apr 30 13:56:40 1991 Tom Wood (wood at dg-rtp.dg.com) + + * varasm.c (output_addressed_constants): Return and indication of + whether the variable requires link-time relocations. + (assemble_variable, get_or_assign_label): Use this value when + choosing the section. Use the data section for variables and + constants that are otherwise read-only when -fpic is given and + when link-time relocations are required. + * tm-*.h (SELECT_SECTION): Accept a new second parameter RELOC. + +Tue Apr 30 10:24:36 1991 Tom Wood (wood at dg-rtp.dg.com) + + * rtl.h (NOTE_INSN_LOOP_VTOP), rtl.c (note_insn_name): Add a new + note indicating the virtual top of a loop. + * jump.c (duplicate_loop_exit_test): Mark the duplicated exit code + in the loop as the virtual top of the converted loop. + (squeeze_notes): Move loop-vtop notes as well. + * loop.c (scan_loop): When a loop-vtop note is encountered, reset + `maybe_never' and `call_passed'. + (strength_reduce): Similarly, reset `not_every_iteration'. + +Tue Apr 30 08:15:50 1991 Michael Meissner (meissner at osf.org) + + * expr.c (do_store_flag): Move the join label after setting the + target value to 0, rather than before, which generates code that + always stores 0 into the target if the machine does not have a + builtin scc operation. + +Tue Apr 30 06:26:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (reload): When making reg_equiv_mem and reg_equiv_address + from reg_equiv_memory_loc, clear the one we aren't setting; it might + have been previously set. + + * final.c (final_scan_insn): Correctly handle when the first insn in a + SEQUENCE is a JUMP_INSN that forces restoration of a comparison + previously thought unnecessary. + + * fold-const.c (fold, case PLUS_EXPR): If we have 2 * real_cst, + fold into a new constant instead of making real_cst + real_cst. + +Mon Apr 29 23:09:17 1991 Ken Raeburn (raeburn at watch.com) + + * cplus-decl.c (output_builtin_tdesc_entries): Corrected + declaration of permanent_obstack. + (init_decl_processing): Record declaration of int with name "int" + rather than null. + (finish_decl): Fix typo in comment. + + * cplus-class.c (finish_struct): Made error message for union + member requiring constructor/destructor a little tidier. + (resolve_scope_to_name): Look at fields of current type as well as + tags, in case of local typedefs. + (build_method_call): Permit explicit call of destructor in class + that doesn't have one. (That's what the ARM says....) + + * cplus-decl.c (set_nested_typename): New function, extracted from + within pushtag. Extended to deal with null classname. + (pushtag): Call it. + (pushdecl): For a TYPE_DECL, ensure that the nested typename gets + set. + (pushdecl_class_level): Ditto. + (constructor_name): Test various assertions. + (hack_incomplete_structures): If type is a class template, punt. + + * cplus-input.c (getch): Renamed from get_character. Callers + changed. + cplus-lex.c (old getch): Deleted. + + * cplus-lex.c (save_pending_input, restore_pending_input): New + functions for saving and restoring lexer state. + (process_next_inline): Restore lexer state after each function. + cplus-pt.c (end_template_instantiation): Ditto. + cplus-input.c (struct input_source, getch, feed_input): Preserve + putback_char and lexer state. + + * cplus-input.c (getch): Return magic cookie on end of saved input + for lexer to recognize. + cplus-lex.c (yylex): Turn it into END_OF_SAVED_INPUT. + (process_next_inline): Require it after inline function body. + + * cplus-lex.c (do_pending_inlines): Don't save away current + file/line-no info; character input processing should do that. + (yyungetc): Turn conditional abort into assertion test. + (note_list_got_semicolon): Since variable "type" is available, use + it rather than recompute. + (identifier_type): Now static. + (yylex): Warn about conflicts with class template expansion names. + + * cplus-parse.y (temporary_scope): New variable. + (object and scoped_id actions): Set it to current type. + (many other actions): Clear it. + (scoped_typename): Now derivable also from scoped_id and TYPENAME. + cplus-lex.c (yylex): If temporary_scope is set, use it to + determine type of current token being examined, instead of looking + always in the global scope. (Can't properly do nested template + classes otherwise.) + + * cplus-ptree.c (print_lang_decl): Print out template-info, + original-name, decl-main-variant, and pending-inline-info nodes if + not null. + + * cplus-pt.c (mangle_class_name_for_template): For negative + numbers, use "m" prefix rather than printf's "-". + (overload_template_name): Test more assertions. Use + SET_IDENTIFIER_TYPE_VALUE macro. + (lookup_template_class): Assert template decl node is non-null. + Push to permanent obstacks for new allocations. + (instantiate_template): Return new class type in a list. + + * cplus-pt.c (undo_template_name_overload): Clear type local + definition of template name. + (end_template_instantiation): Call it. + cplus-parse.y (structsp actions): Ditto. + (named_class_head_sans_basetype): Don't call + overload_template_name here. + (named_class_head): Call xref_tag, to define a tag, before calling + it here. + + * cplus-parse.y (tmpl.1, tmpl.2): Delete type declarations, since + they have no values. + (yyprint, YYPRINT): New function and macro to work with debugging + code added to bison. + (datadef -> template_header... actions): Assign yychar, rather + than calling yyungetc and yylex. Require trailing semicolon. + (fn.def1 -> PRE_PARSED_FUNCTION_DECL action): Preserve all of + terminal value, instead of just TREE_PURPOSE. + (tmpl.1 action): Do instantiation only if '{' or ':' not found. + (template_instantiation): Call overload_template_name right away. + (primary -> .scope new '(' typename ')' '[' ...): Detect and warn + about this construct, which appears to be recognizeable, though + disallowed by the ARM. + (primary -> delete[]): Return error_mark_node. + (primary -> obj TYPESPEC::~TYPESPEC()): Catch, parse as valid. + Returned value not determined yet. + (typespec): No longer derived from PTYPENAME. + (LC): Added missing semicolon at end of rule. + (stmt): A PTYPENAME can also be used as a label name. + +Mon Apr 29 22:18:47 1991 James Van Artsdalen (james at bigtex.cactus.org) + + * tm-att386.h (ASM_OUTPUT_LOCAL): Align static local variables. + +Mon Apr 29 15:20:35 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * fold-const.c (fold): Don't assume an address is nonzero. + * cse.c (fold_rtx): Likewise. + + * stmt.c (warn_if_unused_value): No warning for cast of cast of modify. + + * Makefile.in (USER_H): Remove float.h. + +Mon Apr 29 13:46:48 1991 Jim Wilson (wilson at cygnus.com) + + * loop.c (scan_loop): When see a REG_EQUAL note, check for both + the move_insn and the REG_RETVAL case, since they can occur together. + (move_movables): For the move_insn case, handle library calls just + like the older normal case code below, that is, skip to the end of a + library call when when see a REG_LIBCALL note, and delete an entire + library call if when see a REG_RETVAL note. + +Mon Apr 29 12:58:19 1991 Jim Wilson (wilson at cygnus.com) + + * sched.c: (schedule_block): Rewrite code that computes which + registers are live at the end of the block. Compute this from + basic_block_live_at_start info of current block, instead of from + all reachable blocks. Previous code failed if one of the + reachable blocks consisted of dead code. + (sched_note_set): Set bb_live_regs when DEATH is false. + + * sched.c: Update copyright. Correct various problems with + indentation and white space. + (canon_rtx): Delete obsolete code handling INSN_LIST rtx. Add + code to recurse on the operands of a PLUS rtx. + (find_symbolic_term): New function. Recursively search an rtx for + a SYMBOL_REF or a LABEL_REF and return pointer to one if found. + (memrefs_conflict_p): No longer needs to call canon_rtx on + operands of a plus. Now handles case of two addresses with + different base addresses. + (schedule_block): Don't set INSN_DELETED_P bit of ignored notes. + Verify that REG_DEAD notes have a register value. + (sched_analyze_1): Ifdef out obsolete code which calculates cc0 + dependencies. + (sched_analyze): Likewise. + (schedule_block): Likewise. + (launch_links): Delete obsolete code for handling SPARC 'orcc' insns. + +Mon Apr 29 12:09:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * configure: Allow spaces between options and their args. + +Mon Apr 29 06:35:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (jump_optimize): Don't emit jump to next insn; this would + cause jump_optimize to loop. + (jump_optimize, duplicate_loop_end_test, do_cross_jump): Never put + insn in jump_chain if its INSN_UID is too large. + (redirect_tablejump): Likewise. + +Sun Apr 28 08:00:01 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl.c (init_decl_processing): Merge changes in builtin + function handling to match the way that c-decl.c now works. + Also add global variables to support that change. + (define_function): Ditto. + + * cplus-decl2.c: Add flags for gc and xref. + * cplus-tree.h (DECL_GC_OFFEST): New macro for gc. + * cplus-tree.h: Rearrange CLASSTYPE_ASSOC and CLASSTYPE_BASETYPES so + that the former now uses TYPE_LANG_SPECIFIC storage, and the latter + uses TYPE_BASETYPES. + * cplus-tree.h: Change overload names of new and delete to `nw' and + `dl'. Formerly, `new' was being seen as `ne', the encoding for `not + equal'. + + * cplus-xref.c: New file. Adds support for generating + cross-reference information such as a class browser or program + analyzer would use. + + * cplus-gc.c: New file. Add support for garbage collection. + * cplus-decl.c (finish_decl): Tie decls to their places in the + garbage collector. + * cplus-init.c (build_new): Added hooks for gc. + * cplus-typeck.c (convert_arguments): protect arguments from the + garbage collector if -fgc. + (build_modify_expr): More gc-related changes. + +Fri Apr 26 07:31:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Add missing increment of I. + +Thu Apr 25 11:07:11 1991 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (various patterns): Use nonimmediate_operand in place of + reg_or_nonsymb_mem_operand and constraint `m' in place of `Q'. + * tm-m88k.h (EXTRA_CONSTRAINT): Only needed for a call address. + * out-m88k.c: reg_or_nonsymb_mem_operand and symbolic_memory_p are + now unused. + + * m88k.md (symbolic store patterns): These patterns are all + unnecessary and are deleted. + * out-m88k.c (emit_move_sequence): Eliminate the case that + generated a CLOBBER. This was intended to use the symbolic store + patterns, but isn't needed. + (symbolic_memory_operand): Delete, no longer used. + (output_prologue): Don't check for suspicious register elimination + changes. + * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Treat the frame pointer + like the argument pointer as both may change to REG+SMALLINT. + +Tue Apr 23 15:08:03 1991 Jim Wilson (wilson at cygnus.com) + + * out-sparc.c (output_scc_insn): Clean up and expand comments. + Don't assume that JUMP_LABEL fields are always valid, they aren't + when compiling without optimization. + +Mon Apr 22 13:56:43 1991 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (prepare_fresh_vtable): Thoroughly update virtual + function tables that come from baseclasses to contain the latest + overrides from derived classes. This was done (in a different way) + for virtual baseclasses, but left undone for non-virtual + baseclasses. + (finish_struct_bits): Use assoc lists instead of class basetype list + to walk through the classes base classes. This gives us more + relavant classes to check against. + * cplus-init.c (init_vfields): New function to recursively walk + objects and make sure their vfields are initialized. + * cplus-init.c (emit_base_init): Call `init_vfields' from top level. + + * cplus-tree.h (TYPE_IDENTIFIER): New macro, gives the + IDENTIFIER_NODE for a given aggr TYPE. + * cplus-class.c (add_method): Use TYPE_IDENTIFIER. + * cplus-cvt.c (various places): Ditto. + + * cplus-class.c (finish_struct): Add TYPE_DECLs to the list of a + class's members that come from the types implicitly declared tags. + + * cplus-decl.c (grokdeclarator): If a function is declared `static + inline', don't give it global visibility, regardless of what #pragma + interface/implementation suggests. + + * cplus-decl.c (finish_function): ??? Questionable change for PIC: + don't let constructors and destructors that manipulate vtables go + inline, since this somehow reduces page sharing. Really??? + + * cplus-except.c (init_exception_processing): Use `pushdecl' to + install global info that this function sets up. That way later + decls can override this info (such as with an inline function). + + * cplus-init.c (build_vec_delete): Set TREE_SIDE_EFFECTS of + controller. Otherwise the loop won't execute. + + * cplus-method.c (prepare_inline): Rewritten and simplified. + (do_inline_method_hair): Ditto. + + * cplus-tree.c (lang_output_debug_info): Only output nested type if + we would also output enclosing type. + + * cplus-typekc.c (c_expand_return): Use pseudo for intermediate + return value if necessary. GCC can't read the function return + registers in an inline functino when the return value is being + ignored. + +Mon Apr 22 14:36:01 1991 Jim Wilson (wilson at cygnus.com) + + * sched.c (init_alias_analysis): Handle REG_EQUIV notes just like + REG_EQUAL notes. + + * sched.c (sched_analyze_2): Don't recurse on constant rtx's. + This is necessary so that the cc0_rtx in CONST_DOUBLEs won't be seen. + (sched_analyze): Call sched_analyze_insn for JUMP_INSNS also, so + that cc0 users will get an automatic dependence on their previous + insn. + (launch_links): Ifdef out special treatment of insns which set the + condition codes. This is obsolete, and was SPARC specific anyways. + (new_sometimes_live): Clarify code that aborts if regno is greater + than max_regno. + (schedule_block): If the last insn sets cc0, then it must always + be left in place. + (new_insn_dead_notes): New function. Determines whether a SET or + CLOBBER in an insn created by splitting needs a REG_DEAD or + REG_UNUSED note added. + (update_links): Ignore REG_EQUIV and REG_EQUAL notes on insns that + have more than one set. Generalize flow analysis of the sets in + the new insns so that it can handle new insns which have multiple + sets or new clobbers. + +Mon Apr 22 08:15:50 1991 Michael Meissner (meissner at osf.org) + + * gcc.c (input_suffix): New global var; holds current file's suffix. + (handle_braces): Substitute X in %{.S:X} if the current file has + suffix .S. Similarly, substitute X in %{!.S:X} if the current file + does not have suffix .S. + (validate_switches): Ignore .S part in %{.S:X} construct. + +Sat Apr 20 14:41:17 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) + + * final.c (leaf_function_p): Define this in any event. + +Sat Apr 20 10:45:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (check_dbra_loop): Use GET_RTX_CLASS when appropriate. + Check for setting biv with single_set rather than only allowing a SET. + If a loop has a `break', we can't reverse it. + + * cse.c (cse_insn): Fold inside operands of a CALL (mostly to find the + best address form to use). + + * cse.c (simplify_unary_operation): Convert (neg (neg ..)) to NEG. + Similarly for NOT. + (simplify_binary_operation): Simplify things like (-a) + b. + Convert UDIV with divisor a constant power of two into LSHIFTRT. + Similarly for UMOD. + Only fold shifts of a zero by a value into zero if the value has + no side effects. + Remove code to handle negative shift counts. + + * tm-a29k.h (OPTIMIZATION_OPTIONS): Allow insn scheduling to be + enabled, now that it works for the 29k. + + * tm-rs6000.h (LINK_SPEC): Add "-bhalt:4" to LINK_SPEC (don't ask!). + +Fri Apr 19 13:18:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (memory_address): Test `cse_not_expected' instead of + `optimize' so that we don't make new pseudos after flow is run. + + * genflags.c (gen_insn): If extra condition is more than one line, + use \'s to make proper multi-line macro definition. + +Thu Apr 18 13:40:01 1991 Jim Wilson (wilson at cygnus.com) + + * loop.c (check_dbra_loop): Reenable no_use_except_for_counting code + which was mistakenly ifdefed out as buggy. The actual bug was in + strength_reduce, and has already been fixed. + +Thu Apr 18 09:47:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (record_giv): Allow for the case where regno_last_uid + of DEST_REG has been moved or deleted. + + * rtlanal.c (replace_regs): Add missing argument in recursive call. + + * recog.c (nonmemory_operand): Only call general_operand for + a SUBREG if it is a MEM, just like register_operand. + + * local-alloc.c (block_alloc): Handle case where the last insn of + a REG_NO_CONFLICT block requires some CLOBBERs, but is a single SET. + + * out-romp.c, out-rs6000.c (next_insn_tests_no_unsigned): If a + REG_UNUSED note for (cc0) is present on INSN, return 1. + + * jump.c (delete_jump): If the previous insn sets cc0 but we can't + delete it for some reason, add a REG_UNUSED note for cc0 in that insn. + + * out-a29k.c: Rename input_operand to in_operand and output_operand + to out_operand to avoid conflict with output_operand in final.c. + * a29k.md: Likewise. + (call patterns): Don't put SYMBOL_REF in MEM for recursive call; + it might not be recursive if inlined; let cse do it later. + * tm-a29k.h (RTX_COST, ADDRESS_COST): All addresses have the same + cost, but MEM is expensive. + +Tue Apr 16 16:01:47 1991 Michael Meissner (meissner at osf.org) + + * configure: Add osfrose, osf, and mips/dec-osfrose. + + * out-mips.c (toplevel): Include necessary include files so + out-mips.c can be compiled separately. + (g_switch_value): New variable to hold -G xx value. + (g_switch_set): New variable to indicate if -G xx used. + (current_function_file): New variable to hold last .file. + (file_in_function_warning): New variable to hold if we've warned the + user that ECOFF can't switch files within a function. + (mips_rtx_classify): New array to classify an insn. + (mips_reg_names): New array to hold the register names. + REGISTER_NAMES initializes all elements to point into here, and + override_options resets the names if -mrnames is used. + (mips_sw_reg_names): New array to hold the alternate register names. + (mips_regno_to_class): New array to map hard register number to + register class. + (uns_arith_operand): Rewrite so call to register_operand is done + last, not first. + (arith_operand): ditto. + (arith32_operand): ditto. + (large_int): New function to return true if int constant will take 2 + instructions to load into a register. + (reg_or_0_operand): New function to return true if a register or + constant 0 is the operand for use in store patterns. + (md_register_operand): New function to return true if either the hi + or lo register is used. + (mips_const_double_ok): New function to return true if a + CONST_DOUBLE can be used as a constant in a RTL expression. At + present, only DImode constants and 0.0 is allowed. + (simple_memory_operand): New function to return true if a memory + reference is a simple register + small offset. + (gp_memory_operand): New function to return true if a memory + reference uses the global pointer. + (mips_move_instructions): New function to handle all data movement + of one word or less. + (mips_move_2words_instructions): New function to handle all data + movement of two words. + (init_cumulative_args): Remove print_tree debug call. + (function_arg_partial_nregs): Fix bug in passing structures where + the wrong field was used. + (print_options): Enable this function, body was in #if 0. + (override_options): Spell function name with two r's. Change how + the -G xx and -mGx options are handled. If neither passed use the + appropriate default. If -mgas make sure debug format is DBX, and if + not -mgas, use SDB debug format. If -mrnames and -mgas, give an + error message, otherwise set up mips_reg_names. Set up the + mips_rtx_classify array. + (print_options): New function instead of a long macro. Add %C to + print part of the opcode for a branch condition, %N to print the + inverted branch condition, %( to do .set noreorder, %) to do .set + reorder, %[ to do .set noat, %] to do .set at, %& to do .set + noreorder if filling delay slots, and %# to print nop if delay slot + not filled. + (print_operand_address): New function instead of a long macro. + (compute_frame_size): New function to abstract all the frame related + information like frame size, saved registers, etc. + (save_restore): Common function between the prologue and epilogue to + save/restore the registers in the proper order. Make $31 saved at + function pc +4. + (function_prologue): Call compute_frame_size and save_restore. Make + sure the appropriate .file is done before any statement in the + prologue since the MIPS ECOFF requires this. + (function_epilogue): Call compute_frame_size and save_restore. + + * tm-decstatn.h (CPP_PREDEFINES): Define the appropriate macros. + (*_SPEC): Move the DECstation related specs here from tm-mips.h. + + * tm-decrose.h (new file): File to support OSF/1 with OSF/rose + object format. + + * tm-mips-sysv.h (CPP_PREDEFINES): Define the appropriate macros. + (*_SPEC): Move the DECstation related specs here from tm-mips.h. + + * tm-mips-bsd.h (CPP_PREDEFINES): Define the appropriate macros. + (*_SPEC): Move the DECstation related specs here from tm-mips.h. + + * tm-mips-news.h (CPP_PREDEFINES): Define the appropriate macros. + (*_SPEC): Move the DECstation related specs here from tm-mips.h. + + * tm-iris.h (CPP_PREDEFINES): Define the appropriate macros. + (*_SPEC): Move the DECstation related specs here from tm-mips.h. + (SET_FILE_NUMBER): Define, so that .file number is always 1. + (LABEL_AFTER_LOC): Define, so that a label appears after .loc. + (STACK_ARGS_ADJUST): Iris frames require 32 bytes at the top of the + call frame instead of the normal MIPS 16. + + * mips.md (all): Add first cut at attributes to identify insn type. + (all): Where appropriate, use @ form for alternates, instead of + using C code. + (define_delay): Put arithmetic and one word stores in call, jump, + branch delay slots. + (define_function_unit): Add functional unit definitions for memory + and integer multiply/divide. + (anonymous add/subtract insn): Remove support for reg + large offset + that omitting the frame pointer caused in 1.xx to see if it is + needed anymore. + (mulsi3): Add clobbers for the hi/lo registers. Add a define_split + and an anonymous define_insn to separate the mult instruction from + the mflo. + (divmodsi4): Add clobbers for the hi/lo registers. + (udivmodsi4): Add clobbers for the hi/lo registers. + (divsi3): Add clobbers for the hi/lo registers. Restrict divides + and modulus to register / register. + (modsi3): ditto. + (udivsi3): ditto. + (ymodsi3): ditto. + (divide peepholes): Add two peepholes to catch divide followed by + modulus of the same values. + (anddi3): Remove pattern, use default behavior. + (iordi3): Remove pattern, use default behavior. + (xordi3): Remove pattern, use default behavior. + (truncsiqi2): Remove pattern, use default behavior. + (truncsihi2): Remove pattern, use default behavior. + (trunchiqi2): Remove pattern, use default behavior. + (truncdfsf2): Remove asm comment. + (extendhisi2): Add a define_split for shift case. + (extendqisi2): Add a define_split for shift case. + (extendqihi2): Add a define_split for shift case. + (movdi): Turn into a define_expand to guarantee that memory <-> + memory moves go through a register. + (movsi): ditto. + (movhi): ditto. + (movqi): ditto. + (movsf): ditto. + (movdf): ditto. + (movdi_internal): new define_insn. Add fp registers to the + alternatives. Call mips_move_2words_instructions to do the actual + movement. Require memory addresses to be offsetable. + (movdf_internal): ditto. + (movsi_internal): new define_insn. Add storing 0 to memory + directly using $0. Add transfer to/from multiply/divide registers, + and to the fp status register. Call mips_move_instructions to do + the actual work. + (movhi_internal): ditto. + (movqi_internal): ditto. + (movsf_internal): ditto. + (jump): Add %& to turn on .set noreorder if filling delay slot. + (tablejump): Ditto. + (call): Ditto. + (call_value): Ditto. + (indirect_jump): New required pattern, add %& for delay slot. + (nop): Use %( %) to turn on/off .set noreorder. + (probe): Use %[ %] to turn on/off .set noat. + + * tm-mips.h (abort): Define abort to be fancy_abort for now. + (toplevel): Move all extern's to the start of the file, rather than + scattered throughout. + (OPTIMIZATION_OPTIONS): New macro, -O sets -fomit-frame-pointer, and + -fdelayed-branch. -O2 sets -fstrength-reduce, -fcse-follow-jumps, + -fexpensive-optimizations, -fthread-jumps, -frerun-cse-after-loop. + -O3 sets -finline-functions. + (*_SPEC): Move most of the target specific spec's to the appropriate + file, rather than defining them in tm-mips.h. Defaults are for MIPS + RISC-OS with default system. + (CPP_SPEC): If preprocessing .S files, define LANGUAGE_ASSEMBLY + instead of LANGUAGE_C. + (MIPS_VERSION): Add meissner version number. + (MIPS_DEBUGGING_INFO): Define this for the future. + (TARGET_*): reorder which bit means what. Add bits so we can tell + whether any of the -mG[012] options were used. Redefine some debug + switches. + (BYTES_BIG_ENDIAN): Always define to 0/1 now. + (WORDS_BIG_ENDIAN): Always define to 0/1 now. + (MAX_PARM_BOUNDARY): Delete, since it's no longer used. + (BIGGEST_FIELD_ALIGNMENT): Define to be 64. + (CONSTANT_ALIGNMENT): New macro, make sure strings are aligned. + (DATA_ALIGNMENT): New macro, make sure byte arrays are aligned. + (FIRST_PSEUDO_REGISTER): Bump to 67, add hi, lo, fcr31. + (FIXED_REGISTERS): Add initializations for hi, lo, and fcr31. + (CALL_USED_REGISTERS): Add initializations for hi, lo, and fcr31. + (MD_REG_P): New macro to return if hi/lo register. + (ST_REG_P): New macro to return if fp control register. + (HARD_REGNO_NREGS): Return 4 for single precision complex. + (MODES_TIEABLE_P): Add complex float type support. + (FRAME_POINTER_REQUIRED): Make this always 0. + (NO_RECURSIVE_FUNCTION_CSE): New macro, define as 1. + (enum reg_class): Add class for the hi register, lo register, either + hi or lo registers, status registers. + (REG_CLASS_NAMES): Support new register classes. + (REG_CLASS_CONTENTS): ditto. + (REG_CLASS_FROM_LETTER): ditto. + (REGNO_REG_CLASS): Use an array to map register # -> class. + (CONST_OK_FOR_LETTER_P): Add `L' for constants which have bottom 16 + bits all zero, and `M' which require two instructions to load. + (CONST_DOUBLE_OK_FOR_LETTER_P): Use `CONST_DOUBLE_HIGH' and + `CONST_DOUBLE_LOW'. + (EXTRA_CONSTRAINT): New macro, `Q' for gp memory references, and `R' + for reg + small offset references. + (struct mips_frame_info): New structure to hold all frame related + information, calculated by compute_frame_size. + (INITIAL_FRAME_POINTER_OFFSET): New macro, use compute_frame_size to + calculate where the frame should go. + (ACCUMULATE_OUTGOING_ARGS): New macro, define so stack pushes are + folded into the frame. + (REG_PARM_STACK_SPACE): Redefine to take an argument and return 16. + (OUTGOING_REG_PARM_STACK_SPACE): New macro, define to say we must + allocate stack space for arguments passed in registers. + (TARGET_FLOAT_FORMAT): New macro, define as IEEE_FLOAT_FORMAT. + (FUNCTION_ARG_BOUNDARY): New macro to determine argument padding + requirements. + (MIPS_STACK_ALIGN): New name for AL_ADJUST_ALIGN macro. + (FIX_FRAME_POINTER_ADDRESS): Delete, no longer used. + (FUNCTION_PROFILER): No longer have to switch between different + register names, override_options now sets up reg_names correctly. + (TRAMPOLINE_TEMPLATE): New macro, define as a dummy. + (TRAMPOLINE_SIZE): ditto. + (INITIALIZE_TRAMPOLINE): ditto. + (INDIRECTABLE_ADDRESS): Delete, fold into GO_IF_LEGITIMATE_ADDRESS. + (GO_IF_LEGITIMATE_ADDRESS): If -mdebuga, don't allow