aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@hurl.cygnus.com>1997-08-11 15:56:58 +0000
committerJeff Law <law@hurl.cygnus.com>1997-08-11 15:56:58 +0000
commitf4295814ad62a8952ce643406597d505e88da7d8 (patch)
treeb2e1ea43e0bdba8cca9bb02ed01f5e3da5a955a6
parent62a0700500a2e7a669b97472178341e250d1a0e1 (diff)
Initial revision
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@14764 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/.gdbinit95
-rw-r--r--gcc/COPYING340
-rw-r--r--gcc/COPYING.LIB482
-rw-r--r--gcc/ChangeLog10652
-rw-r--r--gcc/ChangeLog.06671
-rw-r--r--gcc/ChangeLog.19207
-rw-r--r--gcc/ChangeLog.1010185
-rw-r--r--gcc/ChangeLog.27229
-rw-r--r--gcc/ChangeLog.38063
-rw-r--r--gcc/ChangeLog.410783
-rw-r--r--gcc/ChangeLog.58954
-rw-r--r--gcc/ChangeLog.68173
-rw-r--r--gcc/ChangeLog.710376
-rw-r--r--gcc/ChangeLog.811080
-rw-r--r--gcc/ChangeLog.99968
-rw-r--r--gcc/INSTALL1906
-rw-r--r--gcc/NEWS24
-rw-r--r--gcc/ORDERS4003
-rw-r--r--gcc/README26
-rw-r--r--gcc/README-bugs144
-rw-r--r--gcc/SERVICE1460
-rw-r--r--gcc/TESTS.FLUNK39
-rw-r--r--gcc/bi-parser.c980
-rw-r--r--gcc/bi-parser.h12
-rw-r--r--gcc/c-decl.c25
-rw-r--r--gcc/c-gperf.h186
-rw-r--r--gcc/c-parse.c3859
-rw-r--r--gcc/c-parse.h64
-rw-r--r--gcc/c-parse.y2176
-rw-r--r--gcc/cccp.1674
-rw-r--r--gcc/cexp.c2142
-rw-r--r--gcc/config.in32
-rw-r--r--gcc/config/a29k/xm-unix.h43
-rw-r--r--gcc/config/alpha/alpha.h17
-rw-r--r--gcc/config/alpha/xm-linux.h3
-rw-r--r--gcc/config/arm/xm-linux.h24
-rw-r--r--gcc/config/arm/xm-netbsd.h10
-rw-r--r--gcc/config/i386/dgux.h2
-rw-r--r--gcc/config/i386/xm-bsd386.h11
-rw-r--r--gcc/config/i386/xm-dgux.h12
-rw-r--r--gcc/config/i386/xm-freebsd.h4
-rw-r--r--gcc/config/i386/xm-gnu.h5
-rw-r--r--gcc/config/i386/xm-linux.h24
-rw-r--r--gcc/config/i386/xm-netbsd.h4
-rw-r--r--gcc/config/i386/xm-sun.h27
-rw-r--r--gcc/config/i386/xm-sysv3.h4
-rw-r--r--gcc/config/i386/xm-winnt.h24
-rw-r--r--gcc/config/i860/i860.h6
-rw-r--r--gcc/config/i860/xm-fx2800.h7
-rw-r--r--gcc/config/m68k/mot3300-crt0.S2
-rw-r--r--gcc/config/m68k/mot3300Mcrt0.S2
-rw-r--r--gcc/config/m68k/xm-altos3068.h7
-rw-r--r--gcc/config/m68k/xm-amix.h47
-rw-r--r--gcc/config/m68k/xm-aux.h9
-rw-r--r--gcc/config/m68k/xm-hp320.h19
-rw-r--r--gcc/config/m68k/xm-linux.h4
-rw-r--r--gcc/config/m68k/xm-m68kv.h15
-rw-r--r--gcc/config/m68k/xm-netbsd.h4
-rw-r--r--gcc/config/m68k/xm-sun3.h5
-rw-r--r--gcc/config/m68k/xm-tower.h4
-rw-r--r--gcc/config/m88k/dgux.h2
-rw-r--r--gcc/config/m88k/m88k.h4
-rw-r--r--gcc/config/mips/elflorion.h24
-rw-r--r--gcc/config/mips/nws3250v4.h36
-rw-r--r--gcc/config/mips/xm-iris3.h8
-rw-r--r--gcc/config/mips/xm-iris4.h18
-rw-r--r--gcc/config/mips/xm-netbsd.h2
-rw-r--r--gcc/config/mips/xm-news.h6
-rw-r--r--gcc/config/mips/xm-nws3250v4.h9
-rw-r--r--gcc/config/mips/xm-sysv.h38
-rw-r--r--gcc/config/mips/xm-sysv4.h11
-rw-r--r--gcc/config/ns32k/xm-genix.h9
-rw-r--r--gcc/config/ns32k/xm-netbsd.h10
-rw-r--r--gcc/config/sparc/xm-netbsd.h4
-rw-r--r--gcc/config/sparc/xm-pbd.h13
-rw-r--r--gcc/config/vax/x-vax3
-rw-r--r--gcc/config/vax/xm-vaxv.h7
-rw-r--r--gcc/config/xm-freebsd.h33
-rw-r--r--gcc/config/xm-linux.h47
-rw-r--r--gcc/config/xm-netbsd.h27
-rw-r--r--gcc/config/xm-svr3.h33
-rw-r--r--gcc/config/xm-svr4.h35
-rwxr-xr-xgcc/configure4911
-rw-r--r--gcc/cp/parse.c8338
-rw-r--r--gcc/cp/parse.h91
-rw-r--r--gcc/cstamp-h.in1
-rw-r--r--gcc/gcc.14167
-rw-r--r--gcc/gcc.c60
-rw-r--r--gcc/gcc.hlp406
-rw-r--r--gcc/gcc.texi4793
-rw-r--r--gcc/getopt.c34
-rw-r--r--gcc/getopt.h30
-rw-r--r--gcc/getopt1.c34
-rw-r--r--gcc/gstab.h17
-rw-r--r--gcc/install.texi55
-rw-r--r--gcc/install1.texi15
-rw-r--r--gcc/invoke.texi444
-rwxr-xr-xgcc/just-fixinc2
-rw-r--r--gcc/md.texi19
-rwxr-xr-xgcc/move-if-change17
-rw-r--r--gcc/objc/objc-parse.c5103
-rw-r--r--gcc/objc/objc-parse.y2938
-rw-r--r--gcc/obstack.c151
-rw-r--r--gcc/obstack.h186
-rw-r--r--gcc/pself.c1
-rw-r--r--gcc/pself1.c1
-rw-r--r--gcc/pself2.c1
-rw-r--r--gcc/pself3.c1
-rw-r--r--gcc/stab.def24
-rw-r--r--gcc/texinfo.tex4
-rw-r--r--gcc/tm.texi235
-rw-r--r--gcc/version.c1
112 files changed, 162377 insertions, 437 deletions
diff --git a/gcc/.gdbinit b/gcc/.gdbinit
new file mode 100644
index 00000000000..dea758b5465
--- /dev/null
+++ b/gcc/.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/gcc/COPYING b/gcc/COPYING
new file mode 100644
index 00000000000..60549be514a
--- /dev/null
+++ b/gcc/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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ 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.
+
+ <signature of Ty Coon>, 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/gcc/COPYING.LIB b/gcc/COPYING.LIB
new file mode 100644
index 00000000000..161a3d1d47b
--- /dev/null
+++ b/gcc/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.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
new file mode 100644
index 00000000000..29483ba2618
--- /dev/null
+++ b/gcc/ChangeLog
@@ -0,0 +1,10652 @@
+Sat Aug 2 18:50:43 1997 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <bothner@frobnitz.gnu.ai.mit.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <raeburn@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * libgcc2.c (getpagesize): Don't compile if __CYGWIN32__.
+
+Thu Jul 31 16:04:42 1997 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * i386.h (MAX_FIXED_MODE_SIZE): Define.
+
+Thu Jul 31 16:04:42 1997 Robert Lipe <robertl@dgii.com>
+
+ * i386/sco5.h (SWITCHES_NEED_SPACES) Define.
+ Required by the COFF (but not ELF) linker.
+
+Wed Jul 30 15:03:52 1997 Per Bothner <bothner@cygnus.com>
+
+ * 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<Foo>" becomes "Foo[]".
+ (main): Support --java and -j flags to set DMGL_JAVA.
+
+Wed Jul 30 08:56:08 1997 Philip Blundell <Philip.Blundell@pobox.com>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <brendan@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * bitmap.c (bitmap_operation): Reset CURRENT on deferred deletion.
+
+Wed Jul 23 23:52:14 1997 Chris Smith <csmith@convex.hp.com>
+
+ * convex.h (CHECK_FLOAT_VALUE): Fix OVERFLOW capitalization.
+
+Wed Jul 23 13:00:47 1997 Richard Earnshaw <rearnsha@cambridge.arm.com>
+
+ * configure.in (arm-*-netbsd*): Fix typo setting tmake_file.
+
+Wed Jul 23 06:39:35 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * configure.in (alpha*): Put quotes around MASK_GAS.
+
+Tue Jul 22 15:24:45 1997 Brendan Kehoe <brendan@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * objc/Make-lang.in, objc/Makefile.in: Comment out lines containing
+ just formfeeds.
+
+Mon Jul 21 14:05:46 1997 Doug Evans <dje@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k.md (iorsi_zexthi_ashl16): Mark output operand as earlyclobber.
+
+Sun Jul 20 06:11:30 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <crux@Pool.Informatik.RWTH-Aachen.DE>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * rtl.h (replace_regs): Declare.
+
+Mon Jul 14 16:18:19 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * gcc.c (convert_filename): Fix typo.
+
+Mon Jul 14 08:10:12 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <fila@ibi.com>
+
+ * configure.in (*-*-gnu*): Add crt{begin,end}S.o to extra_parts.
+
+Mon Jul 14 07:26:36 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * gcc.c (main): Handle blank in version_string when comparing
+ with compiler_version.
+
+Sat Jul 12 01:53:55 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * cccp.c (INO_T_EQ): Return 0 for MSDOS.
+
+ * Makefile.in (CC): Use autoconf value.
+
+Tue Jul 8 18:08:00 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * rs6000.md (movsi define_split): Use unsigned HOST_WIDE_INT,
+ not unsigned.
+
+Sat Jul 7 00:01:41 1997 Jim Meyering <meyering@eng.ascend.com>
+
+ * i386/t-sol2 (crt[1in].o): Also depend on $(GCC_PASSES).
+
+Fri Jul 4 11:45:39 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * fp-bit.c (unpack_d): Check fraction not sign to distinquish QNaN.
+
+Wed Jul 2 09:48:03 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <n.a.burrett@btinternet.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <robertl@dgii.com>
+
+ * fixinc.sco: Restore pwd aftercopy.
+ 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 <meissner@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <ralf@waldorf-gmbh.de>
+
+ * config/linux.h (PREFERRED_DEBUGGING_TYPE): Undefine before define.
+
+Fri Jun 27 18:35:04 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <fila@ibi.com>
+
+ * config/xm-gnu.h (fcntl.h): Only include if not building libgcc.a.
+
+Fri Jun 27 18:17:44 1997 Doug Evans <dje@cygnus.com>
+
+ * 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 <cagney@tpgi.com.au>
+
+ * fp-bit.c (float_to_si): Correct return value when Inf.
+
+Fri Jun 27 10:47:09 1997 Scott Christley <scottc@net-community.com>
+
+ * Makefile.in (DLLTOOL): Define.e
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * rs6000/sysv4.h (WCHAR_TYPE{,_SIZE}): Make wchar_t long as per
+ ABI spec.
+
+Wed Jun 25 16:56:16 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <scottc@net-community.com>
+
+ * 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 <ovidiu@net-community.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * Makefile.in (Makefile): Execute configure.frag from srcdir.
+
+ * Makefile.in (configure): Target is $(srcdir)/configure.
+
+Tue Jun 24 15:18:14 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * combine.c (force_to_mode): Don't do anything for ASM_OPERANDS insn.
+
+Sun Jun 22 06:29:28 1997 J. Kean Johnston <jkj@sco.com>
+
+ * ginclude/stdarg.h: Protect va_list definition from SCO headers.
+ * ginclude/varargs.h: Likewise.
+
+Sat Jun 21 20:56:23 1997 Scott Christley <scottc@net-community.com>
+
+ * 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 <robertl@dgii.com>
+
+ * fixinc.sco (math.h): Correct the collision of "exception".
+
+Sat Jun 21 06:51:40 1997 Peter Gerwinski <peter@agnes.dida.physik.uni-essen.de>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <rmk92@ecs.soton.ac.uk>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <brendan@cygnus.com>
+
+ * toplev.c (xmalloc): Only give the fatal msg if SIZE is non-zero.
+
+Sun Apr 27 23:19:13 1997 Ulrich Drepper <drepper@cygnus.com>
+
+ * libgcc2.c (__eh_type): Remove `extern' to make this a definition.
+
+Wed Jun 18 18:10:16 1997 Per Bothner <bothner@cygnus.com>
+
+ * dbxout.c (dbxout_type_fields): Skip field if DECL_IGNORED_P.
+
+Wed Jun 18 18:04:33 1997 Mike Stump <mrs@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * flow.c (find_basic_blocks): Fix end case bug.
+
+Tue Jun 17 18:35:57 1997 Mike Stump <mrs@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * collect2.c (extract_string): Null-terminate.
+
+Mon Jun 16 14:38:44 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <brendan@cygnus.com>
+
+ * fixincludes: Also fix AIX NULL macro in sys/{dir,param,types}.h.
+
+Thu Jun 12 22:53:12 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * stmt.c (expand_decl_cleanup): Avoid core dumping when exceptions
+ aren't on.
+
+Tue Jun 10 18:22:30 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * collect2.c (extract_string): New fn.
+ (main): Use it.
+
+Tue Jun 10 17:40:15 1997 Jim Wilson <wilson@cygnus.com>
+
+ * expr.c (emit_group_load): Add case using gen_lowpart.
+
+Tue Jun 10 17:14:58 1997 Michael Meissner <meissner@cygnus.com>
+
+ * rs6000/rs6000.c (rs6000_override_options): If -mcpu=403, set
+ -mstrict-align as well.
+
+ * 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 <wilson@cygnus.com>
+
+ * Makefile.in (MAYBE_USE_COLLECT2): Renamed from MAYBE_USE_COLLECT.
+
+Mon Jun 9 19:42:21 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <oliva@dcc.unicamp.br>
+
+ * 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 <brendan@melange.gnu.ai.mit.edu>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <moshier@world.std.com>
+
+ * 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 <scottc@net-community.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <jtc@netbsd.org>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * regclass.c (allocate_reg_info): Fix off by one error.
+
+Fri Jun 6 17:17:41 1997 Doug Evans <dje@cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * i386.c (notice_cc_update): Set CC_FCOMI is this is a float compare.
+
+Fri Jun 6 15:12:38 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * fixincludes: Fix AIX NULL macro use of void*.
+
+Tue Jun 3 15:21:04 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * sparc.h (ASM_OUTPUT_MI_THUNK): Handle -fpic.
+
+Mon Jun 2 16:53:53 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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 the space for
+ reg_renumber, but don't set reg_renumber unless new argument
+ RENUMBER_P is set. If this is the first call for the 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 the 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): Ditto.
+
+Mon Jun 2 14:50:06 1997 Dave Miller <davem@jenolan.rutgers.edu>
+
+ * sparc/sparc.md (v9 eq/ne cond move patterns): Add early clobber
+ constraint to destination.
+
+Fri May 30 11:00:44 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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): Ditto.
+ (REG_N_{REFS,SETS,DEATHS,CALLS_CROSSED}): New macros to reference
+ reg_n_info.
+ (REG_{CHANGES_SIZE,{FIRST,LAST,LAST_NOTE}_UID}): Ditto.
+ (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: Ditto.
+ * loop.c, regclass.c, reload1.c, sched.c, stupid.c, unroll.c: Ditto.
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * dwarf2out.c (dwarf2out_def_cfa): Set cfa_reg at the top.
+
+Tue May 20 16:57:50 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * cplus-dem.c (do_type): Handle `J'.
+ (demangle_fund_type): Print "complex" for it.
+
+Mon May 19 21:01:53 1997 Jim Wilson <wilson@cygnus.com>
+
+ * m68k.c (output_move_qimode): Add coldfire support.
+ * m68k.h (PUSH_ROUNDING): Add coldfire support.
+ * m68k.md (scc0_di, scc_di, seq, sne, sgt, sgtu, slt, sltu, sge, sgeu,
+ sle, sleu): Add coldfire support.
+
+Mon May 19 17:53:34 1997 Mike Meissner <meissner@cygnus.com>
+
+ * rs6000/rs6000.c: (rs6000_pic_func_labelno): New variable to hold
+ the pic label number for the function's LCL label.
+ (rs6000_output_load_toc_table): Use it.
+ (output_prolog): Store current value.
+
+Sun May 18 16:32:08 1997 Michael Meissner <meissner@cygnus.com>
+
+ * config/dbxcoff.h (ASM_OUTPUT_SOURCE_LINE): Use the macros
+ ASM_{GENERATE,OUTPUT}_INTERNAL_LABEL to create/output the 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 <rankin@eql.caltech.edu>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <vdelvecc@spd.analog.com>
+
+ * loop.c (maybe_eliminate_biv_1): In (set (cc0) <biv>) case,
+ swap compare operands when mult_val < 0 in one additional place.
+
+Sun May 18 08:33:30 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * dwarf2out.c (ASM_COMMENT_START): Add default definition.
+
+ * Makefile.in (maintainer-claean): Delete configure.
+
+Sun May 18 08:31:59 1997 Scott Christley <scottc@net-community.com>
+
+ * 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 <jtc@netbsd.org>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * libgcc2.c (atexit): Cast malloc and realloc calls.
+
+Sat May 17 16:26:51 1997 Bernd Schmidt <crux@Pool.Informatik.RWTH-Aachen.DE>
+
+ * final.c (profile_function): Call function_section, not
+ text_section.
+
+Sat May 17 16:01:00 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * cse.c (notreg_cost): New function, extracted from COST macro.
+ (COST): Use notreg_cost.
+
+Sat May 17 15:13:23 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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/alpha.md (exception_receiver): Use it.
+ * pa/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 <mrs@cygnus.com>
+
+ * function.c (expand_function_end): Make sure we finish off any
+ leftover exception handlers.
+
+Tue May 13 14:07:01 1997 Mike Stump <mrs@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * except.c (expand_start_all_catch): If the machine needs a
+ nonlocal_goto_receiver, add one at the start of the 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <torek@elf.bsdi.com>
+
+ * fold-const.c (fold, truth_andor): Disable optimization for
+ side effects on RHS.
+
+Wed May 7 15:43:57 1997 Mike Stump <mrs@cygnus.com>
+
+ * except.c (start_dynamic_handler): Fix so that 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 <Samuel_Figueroa@next.com>
+
+ * rs6000.md (insv): Only combine insert with shift if
+ remaining source bits >= destination field size.
+
+Tue May 6 15:48:52 1997 Jason Merrill <jason@gerbil.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <dje@seba.cygnus.com>
+
+ * m32r/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/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 <edelsohn@mhpcc.edu>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k.c (output_addsi3): Replace "\\;" by "\n\t" in
+ assembler templates.
+
+Thu May 1 09:00:42 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * integrate.c (subst_constants, case SUBREG): Cancel changes once
+ done with result.
+
+Wed Apr 30 19:45:56 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * h8300.c (output_adds_subs): check for adding 0.
+
+Fri Apr 25 14:52:31 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * go32.h (DBX_*): Use definitions from config/dbxcoff.h instead.
+
+Fri Apr 25 11:55:54 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * i386/cygwin32.h (MULTIPLE_SYMBOL_SPACES): Define.
+
+Thu Apr 24 18:32:56 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * m68k.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Add
+ TARGET_5200 support.
+
+Thu Apr 24 16:39:25 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * stmt.c (pushcase_range): Check for null range first.
+
+Wed Apr 23 23:06:28 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * expr.h (sjthrow_libfunc): Add support for setjmp/longjmp based
+ exception handling.
+ (sjpopnthrow_libfunc): Likewise.
+ (terminate_libfunc): Likewise.
+ (setjmp_libfunc): Likewise.
+ (longjmp_libfunc): Likewise.
+ (get_dynamic_handler_chain_libfunc): Likewise.
+ * expr.c (expand_expr, case TRY_CATCH_EXPR): Likewise.
+ (expand_expr, case POPDCC_EXPR): Likewise.
+ (expand_expr, case POPDHC_EXPR): Likewise.
+ * stmt.c (mark_block_as_eh_region): Likewise.
+ (mark_block_as_not_eh_region): Likewise.
+ (is_eh_region): Likewise.
+ (conditional_context): Likewise.
+ (expand_start_bindings): Likewise.
+ (expand_end_bindings): Likewise.
+ (expand_decl_cleanup): Likewise.
+ (expand_dcc_cleanup): Likewise.
+ (expand_dhc_cleanup): Likewise.
+ (expand_cleanups): Likewise.
+ * tree.h (mark_block_as_eh_region): Likewise.
+ (mark_block_as_not_eh_region): Likewise.
+ (is_eh_region): Likewise.
+ (conditional_context): Likewise.
+ (expand_dhc_cleanup): Likewise.
+ * except.c (exception_via_longjmp): Likewise.
+ (protect_cleanup_actions_with_terminate): Likewise.
+ (current_function_dhc): Likewise.
+ (current_function_dcc): Likewise.
+ (add_partial_entry): Likewise.
+ (get_dynamic_handler_chain): Likewise.
+ (get_dynamic_cleanup_chain): Likewise.
+ (start_dynamic_cleanup): Likewise.
+ (start_dynamic_handler): Likewise.
+ (expand_eh_region_start_tree): Likewise.
+ (expand_eh_region_start): Likewise.
+ (expand_eh_region_end): Likewise.
+ (emit_throw): Likewise.
+ (expand_leftover_cleanups): Likewise.
+ (expand_start_all_catch): Likewise.
+ (expand_end_all_catch): Likewise.
+ (protect_with_terminate): Likewise.
+ (start_eh_unwinder): Likewise.
+ (end_eh_unwinder): Likewise.
+ (init_eh_for_function): Likewise.
+ (save_eh_status): Likewise.
+ (restore_eh_status): Likewise.
+ (exception_optimize): Likewise.
+ * optabs.c (sjthrow_libfunc): Likewise.
+ (sjpopnthrow_libfunc): Likewise.
+ (terminate_libfunc): Likewise.
+ (setjmp_libfunc): Likewise.
+ (longjmp_libfunc): Likewise.
+ (get_dynamic_handler_chain_libfunc): Likewise.
+ (init_optabs): Likewise.
+ * except.h: Likewise.
+ * libgcc2.c (__default_terminate): Likewise.
+ (__terminate): Likewise.
+ (__get_dynamic_handler_chain): Likewise.
+ (__sjthrow): Likewise.
+ (__sjpopnthrow): Likewise.
+ * toplev.c (f_options): Likewise.
+ * tree.def (TRY_CATCH_EXPR): Likewise.
+ (POPDHC_EXPR): Likewise.
+ (POPDCC_EXPR): Likewise.
+ * config/pa/pa.h: JMP_BUF_SIZE define.
+ * config/sparc/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): Likewise.
+ (init_expr): Likewise.
+ (save_expr_status): Likewise.
+ (restore_expr_status): Likewise.
+ (store_expr): Likewise.
+ (expand_expr): Likewise.
+ (defer_cleanups_to): Likewise.
+ (expand_cleanups_to): Likewise.
+ (do_jump, case TRUTH_ANDIF_EXPR): Likewise.
+ (do_jump, case TRUTH_ORIF_EXPR): Likewise.
+ (do_jump, case COND_EXPR): Likewise.
+ * stmt.c (struct nesting): Likewise.
+ (expand_return): Likewise.
+ (expand_start_bindings): Likewise.
+ (expand_end_bindings): Likewise.
+ (expand_cleanups): Likewise.
+ (start_cleanup_deferal): Likewise.
+ (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_rtx): Likewise.
+ * except.c (jumpifnot_rtx): Likewise.
+
+ * stmt.c: Remove all traces of empty_cleanup_list.
+
+Wed Apr 23 17:26:40 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * reload.c (push_reload): Fix last argument of the call to
+ find_dummy_reload.
+
+Wed Apr 23 09:29:14 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * sparc.h (DBX_CONTIN_LENGTH): Shrink to 1000.
+
+Tue Apr 22 18:21:20 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * expr.c (move_block_from_reg): Try using an 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 <drepper@cygnus.com>
+
+ * enquire.c (fake_f_rep): Add missing element name in cast.
+
+Sun Apr 13 15:20:05 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * 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 <jtc@netbsd.org>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * libgcc2 (L_bb, L_exit): Use 0 rather than NULL for null pointers.
+
+Sun Apr 13 12:53:03 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <joel@OARcorp.com>
+
+ * configure (hppa1.1-*-rtems*): New target.
+ * mips/rtems.h: New file.
+
+Sun Apr 13 09:48:26 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <thomas@gnu.ai.mit.edu>
+
+ * i386/gnu.h (TARGET_VERSION): Redefine.
+
+Sun Apr 13 08:15:31 1997 Bernd Schmidt <crux@Pool.Informatik.RWTH-Aachen.DE>
+
+ * 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 <dje@seba.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * rs6000/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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * sh.h: (ADJUST_COSTS): Define.
+
+Fri Mar 28 17:46:13 1997 Jim Wilson <wilson@cygnus.com>
+
+ * Makefile.in (LANGUAGES): Add gcov.
+ (OBJS): Add profile.o.
+ (STAGESTUFF): Add gcov.
+ (profile.o, gcov.o, gcov): Add rules to build them.
+ (cpp.info, gcc.info, gcc.dvi): Add gcov.texi.
+ (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 <coxs@dg-rtp.dg.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+ * 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 <ian@cygnus.com>
+
+ * 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 <drepper@cygnus.com>
+
+ * ginclude/stdarg.h (__va_copy): New definition.
+
+Tue Mar 25 13:43:36 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <file>" to include another
+ specs file, aborting if the file can't be found. Process
+ "%include_noerr <file>: 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 <dje@cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * Makefile.in (GCC_PASSES): Revert previous change; use
+ cc1$(exeext).
+
+Mon Mar 24 16:12:20 1997 Doug Evans <dje@cygnus.com>
+
+ * 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 <joel@OARcorp.com>
+
+ * rs6000/rtems.h: Change to a near clone of the powerpc-eabi target.
+ * configure (powerpc*-*-rtems): Move before Linux configuration.
+
+Mon Mar 24 14:26:37 1997 Gavin Koch <gavin@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * rs6000.c (easy_fp_constant): If -mrelocatable, consider all fp
+ constants to be hard.
+
+Mon Mar 20 13:53:30 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k/linux.h (ASM_OUTPUT_MI_THUNK): Define.
+
+Wed Mar 19 16:59:34 1997 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <rearnsha@armltd.co.uk>
+
+ * arm.md (movhi): Handle generation of large constants during
+ and after reload.
+
+Mon Mar 17 17:30:24 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <scottc@net-community.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <scottc@net-community.com>
+
+ * 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 <scottc@net-community.com>
+
+ * objc-act.c (OBJC_VERSION): Increment version.
+ * objc/init.c (OBJC_VERSION): Likewise.
+
+Sat Mar 15 07:58:00 1997 Ovidiu Predescu <ovidiu@net-community.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <rth@tamu.edu>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <brendan@melange.gnu.ai.mit.edu>
+
+ * cplus-dem.c (gnu_special): Call demangled_fund_type for other
+ __t* symbols.
+
+Mon Mar 10 16:10:34 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * rs6000.md (movsi): Don't emit a USE insn for LABEL_REFs.
+
+Thu Mar 6 16:29:13 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <tege@quiet.matematik.su.se>
+
+ 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 <brendan@lisa.cygnus.com>
+
+ * i386.c (i386_return_pops_args): Make sure FUNDECL is non-nil
+ before we try to use it.
+ * i386/isc.h (RETURN_POPS_ARGS): Likewise.
+ * 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.
+
+Mon Mar 3 20:17:54 1997 Gavin Koch <gavin@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <drepper@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <kwzh@gnu.ai.mit.edu>
+
+ * fixinc.ptx: Fix sed expression looking for <sys/types.h> in
+ pwd.h.
+
+Thu Feb 27 12:11:16 1997 Dennis Glatting <dennis.glatting@plaintalk.bellevue.wa.us>
+
+ * fixincludes: Remove more cases of __const__ from math.h on
+ NeXT.
+
+Wed Feb 26 14:52:27 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * fixincludes: Fix need of prototypes for C++ in rpc/xdr.h on SunOS4.
+
+Mon Feb 24 17:33:57 1997 Michael Meissner <meissner@cygnus.com>
+
+ * rs6000/xm-sysv4.h (HAVE_STRERROR): Define.
+
+Sun Feb 23 17:18:28 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * gcc.c (process_command): Allocate space for terminating null.
+
+Sat Feb 15 17:21:34 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * vax/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 <robertl@dgii.com>
+
+ * i386/t-sco5 (libgcc{1,2}-elf.a): correct target dependencies.
+
+Fri Feb 14 16:00:23 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * config/svr4.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Set
+ current-section variable to text.
+
+Wed Feb 12 16:07:34 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * fixinc.irix: New file.
+ * configure (mips-sgi-irix[56]): Set fixincludes to fixinc.irix.
+
+Wed Feb 12 15:40:20 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * sh.c (calc_live_regs): Exclude RETURN_ADDRESS_POINTER_REGNUM.
+
+ * sh.c (calc_live_regs): 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 <mrs@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * m68k/vxm68k.h (WCHAR_TYPE,WCHAR_TYPE_SIZE,SIZE_TYPE): Fix.
+ (PTRDIFF_TYPE): Define.
+
+Wed Feb 5 11:19:13 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * jump.c (find_cross_jump): Don't allow old-style and volatile asms
+ to match.
+
+Mon Feb 3 15:51:31 1997 Doug Evans <dje@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <scottc@net-community.com>
+
+ * 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 <baier@ci.tuwien.ac.at>
+
+ * 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 <ovidiu@net-community.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <jtc@rhino.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * libgcc2.c: Remove extern for malloc and realloc.
+
+Fri Jan 31 17:08:11 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * local-alloc.c (update_equiv_regs): If a register which is
+ equivalent to some value is only used in one place, and we can't
+ substitute the value for the use, then move the register assignment
+ to just before the use.
+
+Fri Jan 31 15:57:25 1997 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <jtc@rhino.cygnus.com>
+
+ * 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 <ralf@waldorf-gmbh.de>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <robertl@dgii.com>
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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: Fix incorrect forward structure declaration in
+ sys/time.h 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@seba.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * mips.md (probe): Comment out.
+
+Sun Jan 19 20:54:45 1997 John F. Carr <jfc@mit.edu>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <seebs@solon.com>
+
+ * 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 <burley@gnu.ai.mit.edu>
+
+ * 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 <ian@cygnus.com>
+
+ * mips.h (STACK_POINTER_OFFSET): Don't define.
+
+Thu Jan 16 14:51:03 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <ecd@skynet.be>
+
+ * 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 <wilson@cygnus.com>
+
+ * configure (sparc-*-aout*): Add libgloss.h to tm_file.
+ (sparclite-*-coff*): Change "= to =".
+
+Thu Jan 16 12:53:15 CST 1997 Joel Sherrill <joel@OARcorp.com>
+
+ * rs6000/rtems.h: Change from being sysv4 based to being eabi based.
+
+Thu Jan 16 13:40:51 1997 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * rs6000/aix41.h (CPP_PREDEFINES): Add -D_AIX41.
+
+Sun Jan 12 20:54:01 1997 Jim Wilson <wilson@cygnus.com>
+
+ * libgloss.h (LINK_SPEC): Delete.
+ (STARTFILE_SPEC): Delete spurious newline.
+
+Sat Jan 11 00:13:03 1997 Torbjorn Granlund <tege@quiet.matematik.su.se>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * i386.md (addsidi3_2): Add & to operand 0 of alternative 5.
+
+Thu Jan 9 12:06:04 1997 Stan Cox <coxs@dg-rtp.dg.com>
+
+ From Linus Torvalds and Mat Hostetter:
+ * i386.c (i386_sext16_if_const): Added to sign extend an 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.
+ (addhi3): Likewise.
+ (subhi3): Likewise.
+ (andhi3): Likewise.
+ (iorhi3): Likewise.
+ (xorhi3): Likewise.
+
+Tue Jan 7 16:58:27 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <jtc@rhino.cygnus.com>
+
+ * 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 <iskra@student.uci.agh.edu.pl>
+
+ * 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 <burley@gnu.ai.mit.edu>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <manson@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * configure: Finish restoring change of default of objc threads to
+ "single" for Linux.
+
+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 <wilson@cygnus.com>
+
+ * 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.
+
+1996-12-30 Richard Stallman <rms@ethanol.gnu.ai.mit.edu>
+
+ * config.sub: Handle hiuxmpp as system type.
+
+Thu Dec 26 13:33:27 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * rs6000.md (init_v4_pic): Explicitly set the length.
+
+Mon Dec 23 19:39:38 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <jason@gerbil.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000/win-nt.h (HAS_INIT_SECTION): Delete, so that __main is
+ called from main.
+
+Mon Dec 16 15:28:44 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * sh.md (dect): Rewrite pattern so that it can be combined.
+
+Fri Dec 13 13:14:51 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * varasm.c (output_constant_pool): If ASM_OUTPUT_POOL_EPILOGUE is
+ defined, call it.
+
+Thu Dec 12 20:04:55 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 for
+ 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): Likewise.
+ (output_die): Likewise.
+ (output_loc_operands): Don't support DW_OP_const8?.
+
+Thu Dec 12 19:49:09 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 as well as at
+ 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 <meissner@tiktok.cygnus.com>
+
+ * 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 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 <amylaar@cygnus.co.uk>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <nagai@ics.es.osaka-u.ac.jp>
+
+ * libgcc2.c (cacheflush): Add SONY NEWS-OS 4.2 version.
+
+Wed Dec 11 09:01:39 1996 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * 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 <jtc@rhino.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * optabs.c (emit_unop_insn): Treat ZERO_EXTEND like SIGN_EXTEND.
+
+Tue Dec 10 13:47:24 1996 Joern Rennecke <amylaar@cygnus.co.uk>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * dwarf2out.c (output_uleb128): Output the value in a 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 <jason@yorick.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jtc@rhino.cygnus.com>
+
+ * 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 <kellogg@space.otn.dasa.de>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jtc@rhino.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <d.love@dl.ac.uk>
+
+ * configure (objc_thread_file): Set conditionally in each case so
+ may be overidden with `--enable-objcthreads=posix'.
+ Change Linux default to `single'.
+
+Fri Nov 22 17:53:15 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <ian@cygnus.com>
+
+ * fixincludes: Include <stdio.h> in <assert.h> even if not C++ if
+ stderr needs to be defined.
+
+Wed Nov 20 15:38:13 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * configure (powerpc*-{sysv,elf,eabi{,aix,sim}}): Set
+ extra_headers to ppc-asm.h.
+ (powerpc*-{linux,solaris,rtems,vxworks}): Ditto.
+ (powerpc*-{winnt,pe,cygwin32}): Ditto.
+
+ * rs6000/t-{ppc,ppcgas,solaris,winnt} (EXTRA_HEADERS): Don't set
+ it here.
+
+Mon Nov 18 14:51:46 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <dje@seba.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * dwarfout.c (dwarfout_line): Don't emit line number info for
+ functions outside of .text.
+
+Fri Nov 15 15:52:42 1996 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 real 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <tege@tege.pdc.kth.se>
+
+ * 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_extendhidi2): Likewise.
+ (zero_extendqisi2): Likewise.
+ (zero_extendhisi2): 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 <rob@chinadoll.cygnus.com>
+
+ * 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 <amylaar@cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <tege@wombat.gnu.ai.mit.edu>
+
+ * i386.md (parallel inc/dec and branch-if-zero/nonzero): Use `+' in
+ constraint.
+
+Mon Nov 11 15:12:22 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * function.c (expand_function_end): Handle BLKmode structures returned
+ in registers.
+
+Fri Nov 8 20:27:07 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <tege@wombat.gnu.ai.mit.edu>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * ginclude/va-ppc.h (__va_regsave_t,va_start,va_end): Wrap macro
+ and structures inside #ifndef __VA_PPC_H__ to allow reinclusion.
+
+ * rs6000/rs6000.h (LEGITIMATE_SMALL_DATA_P): Don't allow -fpic or
+ TARGET_TOC.
+ (LEGITIMATE_LO_SUM_ADDRESS_P): Ditto.
+ (LEGITIMIZE_ADDRESS): Ditto.
+
+ * rs6000/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 <meissner@tiktok.cygnus.com>
+
+ * 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): Ditto.
+ (ASM_OUTPUT_SECTION_NAME): Ditto.
+ (ASM_OUTPUT_ALIGNED_LOCAL): Use sdata_section, not sbss_section.
+
+Fri Nov 1 19:57:13 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <tege@nada.kth.se>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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): Ditto.
+
+Tue Oct 29 15:49:18 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <wilson@cygnus.com>
+
+ * configure (sh-*-*): Set float_format to sh.
+ * config/float-sh.h: New file.
+
+Mon Oct 28 14:26:08 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <drepper@cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <bjh21@cam.ac.uk>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <iskra@student.uci.agh.edu.pl>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * svr4.h (MAKE_DECL_ONE_ONLY): Fix typo in use of macro parameter.
+
+Wed Oct 23 17:46:13 1996 Pat Rankin <rankin@eql.caltech.edu>
+
+ * cexp.y (yylex): Cast string literal to U_CHAR* for lookup() call.
+
+Wed Oct 23 14:50:04 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * stmt.c (expand_return): Expand cleanups. Make sure we get a
+ pseudo-reg and provide a target in the non-BLKmode case. Get return
+ type of fn properly.
+
+Wed Oct 23 14:16:06 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <tege@nada.kth.se>
+
+ * expr.h (emit_store_flag_force): Declare.
+
+Tue Oct 22 18:32:20 1996 Jim Wilson <wilson@cygnus.com>
+
+ * unroll.c (unroll_loop): Always reject loops with unbalanced blocks.
+
+Tue Oct 22 18:27:06 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/fp-bit.c (float_to_usi): Correct thinko: avoid a 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 <noer@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <tege@nada.kth.se>
+
+ * 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 <ian@cygnus.com>
+
+ * mips.c (override_options): Correct typo (MASK_64BIT should
+ have been TARGET_64BIT).
+
+Mon Oct 21 13:58:54 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ 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 <amylaar@cygnus.co.uk>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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): Likewise.
+ (output_die): Likewise.
+
+Thu Oct 17 14:46:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips.c (override_options): In 64 bit EABI mode, set TARGET_LONG64.
+
+Thu Oct 17 11:34:51 1996 Bob Manson <manson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * elxsi.h (CHECK_FLOAT_VALUE): Removed.
+
+Wed Oct 16 14:19:38 1996 Jim Wilson <wilson@cygnus.com>
+
+ * iris6.h (CPP_PREDEFINES): Add -D_LONGLONG.
+ (CPP_SPECS): Remove -D_LONGLONG.
+
+Wed Oct 16 03:34:42 1996 Torbjorn Granlund <tege@nada.kth.se>
+
+ * i386.md (parallel inc/dec and branch-if-zero/nonzero): New patterns.
+
+Tue Oct 15 22:28:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * loop.c (strength_reduce): Avoid taking PATTERN of a label.
+
+Tue Oct 15 16:52:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <leei@Canada.AI.SRI.COM>
+
+ * mips.h (CPP_SPEC): Restore -D_LANGUAGE_C for Objective C.
+
+Mon Oct 14 18:03:35 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * jump.c (jump_optimize): Check for if (...) { x = a; goto l; } x = b;
+
+Mon Oct 14 14:19:49 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * fold-const.c (make_range): Handle NULL operand 0
+ (like in BIND_EXPRs).
+
+Fri Oct 11 15:42:22 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <tege@nada.kth.se>
+
+ * dwarfout.c: (output_bound_representation): Fix typo in prototype.
+
+Fri Oct 11 12:19:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips.h (MIPS_AS_ASM_SPEC): Define.
+ (SUBARGET_MIPS_AS_ASM_SPEC): Define.
+ (GAS_ASM_SPEC): Define.
+ (TARGET_ASM_SPEC): Define.
+ (SUBTARGET_ASM_OPTIMIZING_SPEC): Define.
+ (SUBTARGET_ASM_DEBUGGING_SPEC): Define.
+ (SUBTARGET_ASM_SPEC): Define.
+ (ASM_SPEC): Rewrite to use above specs.
+ (SUBTARGET_CPP_SIZE_SPEC): Define.
+ (SUBTARGET_CPP_SPEC): Define.
+ (CPP_SPEC): Use above specs. Don't define _LANGUAGE_C if C++ or
+ Objective C.
+ (EXTRA_SPECS): Define.
+ (SUBTARGET_EXTRA_SPECS): Define.
+ * mips/dec-bsd.h (ASM_SPEC): Don't define.
+ (CPP_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_SPEC): Don't define.
+ (SUBTARGET_CPP_SPEC): Define.
+ (ASM_SPEC): Don't define.
+ (SUBTARGET_ASM_SPEC): Define.
+ (SUBARGET_MIPS_AS_ASM_SPEC): Define.
+ (SUBTARGET_ASM_DEBUGGING_SPEC): Define.
+ * mips/netbsd.h (ASM_SPEC): Don't define.
+ (CPP_SPEC): Don't define.
+ (SUBTARGET_CPP_SPEC): Define.
+ * mips/osfrose.h (ASM_SPEC, ASM_FINAL_SPEC): Don't define.
+ (CPP_SPEC): Don't define.
+ (SUBTARGET_CPP_SIZE_SPEC): Define.
+ (SUBTARGET_CPP_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 <jason@yorick.cygnus.com>
+
+ * 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 that 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, UNALIGNED_WORD_ASM_OP,
+ ASM_OUTPUT_DWARF_DELTA, 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;
+ usually we only need one.
+ (output_value_format, output_die): Likewise.
+ (build_abbrev_table): We need a new abbrev if the size
+ of the 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 <ian@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <gavin@cetus.cygnus.com>
+
+ * cccp.c (do_include): Treat ENOTDIR like ENOENT when an open fails.
+
+Wed Oct 9 16:26:57 1996 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <tege@nada.kth.se>
+
+ * configure: Set cpu_type for pyramid.
+
+Tue Oct 8 21:54:04 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <tege@nada.kth.se>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * sched.c (schedule_block): Before scheduling, add code to make all
+ call used regs that are 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 <jason@yorick.cygnus.com>
+
+ * 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): Likewise.
+ (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 <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * ginclude/{stdarg.h,varargs.h}: Use #include "", not #include <>.
+
+Wed Oct 2 17:29:53 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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): New fn.
+ (get_AT_unsigned): New fn.
+ (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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <ian@cygnus.com>
+
+ * fixinc.svr4: In math.h, redefine exception to __math_exception
+ for C++, to avoid conflict with <exception>.
+ * fixincludes: Likewise.
+ Fix check for class in math.h to not match fp_class.
+
+Mon Sep 30 17:15:19 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <sys/mman.h> on HP/UX.
+
+Sun Sep 29 12:39:18 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <tege@matematik.su.se>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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): Bump up by one.
+ (ARG_POINTER_REGNUM): Likewise.
+ (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): LIkewise.
+ (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 the 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 <amylaar@cygnus.co.uk>
+
+ * sh.md (insv): New pattern.
+
+Wed Sep 25 16:47:26 1996 Doug Evans <dje@seba.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * expr.c (emit_group_load): Allow target to be smaller than source.
+
+Tue Sep 24 17:40:39 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <jsmith@cygnus.co.uk>
+
+ * gcc.c (used_arg): Fix multilib_matches parsing to not corrupt
+ entry parameter.
+
+Tue Sep 24 08:22:18 1996 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * loop.c (get_condition): Use rtx_equal_p to compare rtx.
+
+Tue Sep 24 08:14:01 1996 Christian Iseli <Christian.Iseli@lslsun.epfl.ch>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <sean@mcneil.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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
+ its only use.
+
+Sun Sep 22 10:50:03 1996 Scott Christley <scottc@net-community.com>
+
+ * 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): New function.
+ (objc_valloc): New function.
+ (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 <jason@yorick.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <rth@tamu.edu>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <dje@wabamun.cygnus.com>
+
+ * i386/t-cygwin32 (winnt.o): Compile properly.
+
+Tue Sep 17 15:47:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Add support for VR5000, 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): Remove.
+ (EXTRA_CC_NAMES): Remove.
+ (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.d): Only available if TARGET_DOUBLE_FLOAT.
+ (msub.d, nmadd.d, nmsub.d): Likewise.
+ (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): Likewise.
+ (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): Likewise.
+ (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 <amylaar@cygnus.co.uk>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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): new functions.
+ * sh.md (ashlhi3_k, lshrhi3_m): new insn pattern.
+ (lshrhi3, shl_sext_ext, shl_sext_sub):
+ new insn pattern 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 <joel@OARcorp.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * mips.md (call_value_multiple_internal0): Change from define_insn to
+ define_expand.
+
+Thu Sep 12 19:22:14 1996 Doug Evans <dje@seba.cygnus.com>
+
+ * 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 <tege@albert.gnu.ai.mit.edu>
+
+ * i386.md (decrement_and_branch_until_zero matcher): Fix typo.
+
+Tue Sep 10 19:04:19 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <dje@wabamun.cygnus.com>
+
+ * 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 <joel@OARcorp.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * sh.h (LEGITIMIZE_ADDRESS): Define nonempty.
+
+Thu Sep 5 10:43:36 1996 Jeffrey A Law (law@cygnus.com)
+
+ * pa.md (movsi, movdi, movsf patterns): Handle
+ 'R' constraints as needed.
+
+Wed Sep 4 17:13:28 1996 Bob Manson <manson@charmed.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * except.c (emit_unwinder): Ensure that CLOBBER and USE insns come
+ last, if present.
+
+Tue Sep 3 12:01:43 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure (sh-*-elf*): New target.
+ * sh/elf.h: New file.
+
+Fri Aug 30 17:52:26 1996 Jim Wilson <wilson@cygnus.com>
+
+ * dwarf2out.c (gen_formal_types_die): Delete extra argument from
+ gen_type_die call.
+
+Fri Aug 30 15:40:40 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * mips/elf64.h: Allow MULTILIB_DEFAULTS to be defined
+ before this file is included.
+
+Fri Aug 30 15:00:06 1996 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <cgjwh@sunrise.co.uk>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <fnf@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): If -mrelocatable or
+ -mrelocatable-lib, don't make read-only sections, since if there
+ are pointers to be fixed up, the assembler complains.
+
+Mon Aug 19 18:42:13 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <noer@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <hug@netcom.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <tege@spiff.gnu.ai.mit.edu>
+
+ * 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: Treat TARGET_FAST_INDIRECT_CALLS 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * fixincludes: Remove duplicate volatile from sig_atomic_t in AIX
+ sys/signal.h
+
+Tue Aug 13 16:51:37 1996 Jim Wilson <wilson@cygnus.com>
+
+ * i960-coff.h (LIB_SPEC): Undef.
+
+ * sh.h (PROFILE_BEFORE_PROLOGUE): Define.
+
+Tue Aug 13 11:36:02 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 Linux and Solaris libraries.
+ * rs6000/eabi{,aix,le}.h (MULTILIB_DEFAULTS): Adapt to changes in
+ t-ppcgas.
+ * rs6000/(linux,sol2).h (MULTILIB_DEFAULTS): Ditto.
+ * rs6000/{sysv4,sysv4le} (MULTILIB_DEFAULTS): Ditto.
+
+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 <wilson@cygnus.com>
+
+ * gcc.c (used_arg): Initialize cnt to zero.
+
+Mon Aug 12 14:03:16 1996 Jim Wilson <wilson@cygnus.com>
+
+ 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 <meissner@tiktok.cygnus.com>
+
+ * 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 a fifth argument to add options to pass on to
+ all multilib builds. Restructure output so that we pass the
+ synonym switches and extra arguments separately, and not
+ exponentially slow down genmultilib.
+
+ * gcc.c (toplevel): Rearrange multilib support so that we support
+ passing the synonyms separately from the normal switches. Add
+ support for passing additional switches to be used on all multilib
+ builds. Dump and restore the value of MULTILIB_DEFAULTS so that
+ gcc cover programs for other targets will correctly chose the
+ appropriate multilib directory.
+ (setspec,process_command,main): Ditto
+ (used_arg,default_arg,print_multilib_info): Ditto.
+
+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 <jason@yorick.cygnus.com>
+
+ * expr.c (store_expr): Handle COND_EXPR cleanups like expand_expr.
+
+Sun Aug 11 22:42:36 1996 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * 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 <scottc@net-community.com>
+
+ * objc/hash.c (hash_is_key_in_hash): Function somehow got lost.
+
+Sun Aug 11 21:43:15 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * ginclude/stddef.h (__need_wint_t): Move #undef to right place.
+
+Sun Aug 11 17:46:22 1996 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * 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 <joel@OARcorp.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * winnt.c (gen_stdcall_suffix): Round parameter size to PARM_BOUNDARY.
+
+Thu Aug 8 17:42:35 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * sh.md (casesi_jump): New pattern.
+ (casesi): Generate RTL to match it.
+
+Wed Aug 7 14:10:07 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * ginclude/stddef.h (NULL): Use __null for G++.
+
+Tue Aug 6 17:37:53 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@fallis.cygnus.com>
+
+ * 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 <dje@fallis.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <tege@spiff.gnu.ai.mit.edu>
+
+ * m68k.h (RTX_COSTS, case PLUS): Get operand order right.
+
+Wed Jul 31 15:06:46 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <tege@spiff.gnu.ai.mit.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * dwarfout.c (output_bound_representation): Fix typo.
+
+Thu Jul 25 16:00:10 1996 Mike Stump <mrs@cygnus.com>
+
+ * 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 <coxs@equinox>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * sh.c (reg_unused_after): Handle JUMP_INSN inside a sequence.
+
+Tue Jul 23 16:33:25 1996 Mike Stump <mrs@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <joel@OARcorp.com>
+
+ * m68k/coff.h (STARTFILE_SPEC): Add #undef before definition.
+
+Fri Jul 19 09:44:45 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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/mips.c (function_prologue): Use FUNCTION_NAME_ALREADY_DECLARED.
+ (function_epilogue): Likewise.
+
+Thu Jul 18 19:24:19 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * alpha/elf.h (INT_ASM_OP): Change from ".long" to ".quad".
+
+Thu Jul 18 19:20:58 1996 Ulrich Drepper <drepper@myware.rz.uni-karlsruhe.de>
+
+ * stddef.h: Undefine __need_wint_t.
+
+Thu Jul 18 19:06:35 1996 J.T. Conklin <jtc@hippo.cygnus.com>
+
+ * 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 <d.love@dl.ac.uk>
+
+ * gcc.c (default_compilers): Extra Fortran extensions.
+
+Wed Jul 17 10:28:10 1996 Torbjorn Granlund <tege@spiff.gnu.ai.mit.edu>
+
+ * expmed.c (expand_mult_highpart): Revert last change.
+
+Tue Jul 16 12:51:59 1996 Doug Evans <dje@cygnus.com>
+
+ * sparc/sparc-rtems.h: #include "sparc/sparc-aout.h" -> sparc/aout.h.
+
+Mon Jul 15 14:42:06 1996 Jim Wilson <wilson@cygnus.com>
+
+ * mips/iris6.h (LINK_SPEC): Add -woff 84.
+
+Fri Jul 12 17:34:01 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * arm/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 <meissner@tiktok.cygnus.com>
+
+ * 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 of the insns, replacing
+ any GOT_TOC_REGNUM registers with a new pseudo register, and
+ adding the initialization of of the 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/h8300.h (OK_FOR_U): If generating H8/S code, accept
+ SYMBOL_REF and SYMBOL_REF + CONST_INT.
+
+ * h8300/h8300.c (shift_one): Emit tabs between opcode and
+ operands to be consistent with the rest of the compiler.
+ (rotate_one): Likewise.
+ (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 <wilson@cygnus.com>
+
+ * mips/iris6.h (ASM_SPEC): Correct typos in Jun 18 change.
+
+Wed Jul 10 18:56:38 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * sh/sh.c (machine_dependent_reorg): When looking for the
+ instruction that sets a register in LOG_LINKS, skip the link if
+ REG_NOTE_KIND is not zero.
+
+Wed Jul 10 15:02:18 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * x-iris6 (FIXPROTO_DEFINES): Add -D_SGI_SOURCE.
+
+Mon Jul 8 18:00:33 1996 Jim Wilson <wilson@cygnus.com>
+
+ * sh/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_dependence, anti_dependence, 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/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/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 <law@cygnus.com>
+
+ * First cut at support for the H8/S.
+ * h8300/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/h8300.md: Handle H8/S just like H8/300H
+ throughout the entire file.
+ * h8300/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 <dje@cygnus.com>
+
+ * sparc/sol2.h (LINK_SPEC): Don't pass `-z text' if
+ -shared -mimpure-text.
+
+Sun Jul 7 18:03:46 1996 Torbjorn Granlund <tege@noisy.tmg.se>
+
+ * 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 <gavin@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * pa.c (fmpy_operands): Define.
+ (combinable_fmpy): New function.
+ (combinable_fadd, combinable_fsub): Likewise.
+ * pa.md (parallel_addb, parallel_movb): New patterns.
+ (fmpyadd, fmpysub): New patterns.
+
+ * pa.c (fmpyaddoperands): Tighten checks. Allow SFmode.
+ (fmpysuboperands): Similarly.
+
+Tue Jul 2 18:57:15 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000.h (INIT_EXPANDERS): Define, call rs6000_init_expanders.
+ (RS6000_VARARGS_OFFSET): fpmem area no longer next to outgoing
+ argument area.
+ (STARTING_FRAME_OFFSET): Ditto.
+ (STACK_DYNAMIC_OFFSET): Ditto.
+ (frame_pointer_needed): Add external declaration.
+ (rs6000_{save,restore}_machine_status): Ditto.
+ (rs6000_init_expanders): Ditto.
+
+ * 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 the fpmem save area is to below
+ the 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 <law@cygnus.com>
+
+ * 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 <moshier@world.std.com>
+
+ * 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): Likewise.
+ (objc_mutex_unlock): Likewise.
+ (objc_mutex_trylock): Declare thread_id as _objc_thread_t.
+ (objc_mutex_lock): Likewise.
+ (objc_mutex_unlock): Likewise.
+
+ * 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 <scottc@net-community.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <jtc@hippo.cygnus.com>
+
+ * 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 <rth@tamu.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * mips/mips.h (CC1_SPEC): Put spaces between the -mips* cases.
+ * mips/osfrose.h (CC1_SPEC): Likewise.
+
+ * sh/sh.c (output_branch): Don't call ADJUST_INSN_LENGTH if the
+ insn is inside a sequence.
+
+Wed Jun 26 19:09:43 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * pa/pa.h (CMP_PSI): Delete.
+ (FUNCTION_POINTER_COMPARISON_MODE): Likewise.
+ * pa/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 <dje@seba.cygnus.com>
+
+ * gcc.c (PEXECUTE_VERBOSE): Define.
+ (execute): Pass PEXECUTE_VERBOSE to pexecute if -v.
+
+Tue Jun 25 12:23:54 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <law@cygnsu.com>
+
+ * h8300/h8300.c (function_prologue): Update "monitor" prologues.
+ (function_epilogue): Similarly.
+
+ * pa/pa.h (PARSE_LDD_OUTPUT): Handle dynamic libraries that are
+ loaded "statically".
+
+Mon Jun 24 19:48:36 1996 Joel Sherrill <joel@merlin.gcs.redstone.army.mil>
+
+ * 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 <eggert@twinsun.com>
+
+ * cccp.c: (create_definition): Diagnose `#define #' only once.
+
+Mon Jun 24 11:42:58 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <richard@atheist.tamu.edu>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * i386/cygwin32.h (ASM_OUTPUT_SOURCE_LINE): Local symbols begin with L.
+
+Tue Jun 18 12:00:11 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <meissner@rtl.cygnus.com>
+
+ * rs6000/win-nt.h (ASM_DECLARE_FUNCTION_NAME): Put function
+ descriptor in .reldata, not .text.
+
+Mon Jun 17 16:05:34 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * ginclude/stddef.h (wint_t): Don't wrap with #ifndef __cplusplus.
+
+Mon Jun 17 15:03:20 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <roland@delasyd.gnu.ai.mit.edu>
+
+ * i386/gnu.h (LINK_SPEC): Remove -rpath /lib/ option.
+ Ignore -ibcs option.
+
+Thu Jun 13 14:49:41 1996 Jim Wilson <wilson@cygnus.com>
+
+ * gen-protos.c (main): Change argv[i] to argv[0][i].
+
+Thu Jun 13 10:46:24 1996 Doug Evans <dje@cygnus.com>
+
+ * gcc.c (pfatal_pexecute): Delete code to check errno < sys_nerr.
+
+Wed Jun 12 21:47:10 1996 Eliot Dresselhaus <dresselh@rft30.nas.nasa.gov>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ 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 <scottc@net-community.com>
+
+ * 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 <ghazi@caip.rutgers.edu>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * mips/mips.c (override_options): Add vr4100 and vr4300 support.
+ * mips/mips.h (enum processor_type): Likewise.
+ (MASK_4300_MUL_FIX, TARGET_4300_MUL_FIX): New macros.
+ (TARGET_SWITCHES): Add -mfix4300 option.
+ * mips/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 <edelsohn@mhpcc.edu>
+
+ * toplev.c (main): Re-enable -gxcoff+.
+
+Sat Jun 8 14:20:14 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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/i960.h (EXTENDED_SDB_BASIC_TYPES): Define.
+ (PUT_SDB_TYPE): Delete now unnecessary shifting and masking.
+
+ * i960/i960.h (i960_output_move_{double,quad}): Declare.
+
+Fri Jun 7 19:22:09 1996 Scott Christley <scottc@net-community.com>
+
+ * 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 <jtc@rtl.cygnus.com>
+
+ * 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 <bothner@deneb.cygnus.com>
+
+ * expr.c (safe_from_p): Allow Chill-style variable-sized arrays.
+
+Thu Jun 6 23:11:11 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ 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/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/pa.h (FUNCTION_ARG): General PARALLEL instead of EXPR_LIST.
+ * rs6000/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 <jtc@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * fixproto (subdirs): Work around Solaris 2.5
+ /usr/xpgr/bin/sed problem with \+\+.
+
+Thu Jun 6 15:06:27 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * i960/i960.h (ROUND_TYPE_ALIGN): Add check for TYPE_PACKED.
+
+ * sh/sh.h (SHORT_IMMEDIATES_SIGN_EXTEND): Define.
+ * sh/sh.md (branch_true): Add comment about T-bit compares.
+
+Tue Jun 4 23:08:34 1996 Per Bothner <bothner@deneb.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * pa/pa.h (TEXT_SPACE_P): Fix thinko in last change.
+
+Wed Jun 5 16:25:51 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 the 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 <ian@cygnus.com>
+
+ * ginclude/stddef.h: Fix typo: TYPE_ptrdiff_t to _TYPE_ptrdiff_t.
+
+Wed Jun 5 15:52:57 1996 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * mips.md (tablejump_internal3, tablejump_internal4): New patterns.
+ (tablejump): Use them for PIC code.
+
+Fri May 31 17:26:53 1996 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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/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/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/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 <meissner@tiktok.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000.h (FIRST_PSEUDO_REGISTER): Bump to 77. The new fpmem
+ register represents the memory location used for float/int
+ conversions.
+ ({FIXED,CALL_USED}_REGISTERS): Add support for the fpmem pseudo
+ register.
+ (REG_ALLOC_ORDER): Ditto.
+ (HARD_REGNO_{NREGS,MODE_OK}): Ditto.
+ (REGISTER_MOVE_COST): Ditto.
+ (reg_class): Ditto.
+ (REG_CLASS_{NAMES,CONTENTS}): Ditto.
+ (REGNO_REG_CLASS): Ditto.
+ (PREFERRED_RELOAD_CLASS): Ditto.
+ (CLASS_{MAX_NREGS,CANNOT_CHANGE_SIZE,MAX_NREGS}): Ditto.
+ (rs6000_stack): Ditto.
+ ({,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): Ditto.
+ (STACK_DYNAMIC_OFFSET): Ditto.
+ (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): Ditto.
+
+ * 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 a 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 <dje@cygnus.com>
+
+ * 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 <dje@seba.cygnus.com>
+
+ * 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/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 <wilson@cygnus.com>
+
+ * combine.c (set_nonzero_bits_and_sign_copies): Set
+ reg_sign_bit_copies to one not zero to indicate that the value
+ is unknown.
+
+Thu May 23 18:39:24 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * sh/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 <law@cygnus.com>
+
+ * h8300/h8300.h (CONSTANT_ADDRESS_P): Don't accept CONST or HIGH
+ on the H8/300H.
+ * h8300/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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu.edu>
+
+ * combine.c (init_reg_last_arrays, setup_incoming_promotions):
+ Correct prototypes.
+
+Tue May 21 13:42:17 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * h8300/h8300.md (div patterns): Rewrite.
+ (mod patterns): Likewise.
+
+ * pa/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 <rankin@eql.caltech.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * sh.c (output_file_start): Delete misplaced semicolon.
+
+Mon May 20 11:58:15 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <jfc@mit.edu>
+
+ * alpha.c (alpha_emit_conditional_move): Compare to 0 in correct mode.
+
+Sat May 18 20:17:27 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * vax/xm-vms.h (dbxout_resume_previous_source_file): New macro.
+
+Fri May 17 14:20:13 1996 Mike Stump <mrs@cygnus.com>
+
+ * 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): Likewise.
+ (unsave_expr_now): Likewise.
+ * tree.def (UNSAVE_EXPR): Likewise.
+ * tree.h (unsave_expr): Likewise.
+ (unsave_expr_now): Likewise.
+
+Fri May 17 15:04:40 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/fp-bit.c (_fpdiv_parts): Correct sign handling when
+ dividing zero or infinity by something.
+
+Fri May 17 12:36:36 1996 Doug Evans <dje@seba.cygnus.com>
+
+ 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/arm.c (output_option, output_options, m_options): Delete.
+ * m88k/m88k.c (output_file_start): Delete option output support.
+ * m88k/m88k.h (ASM_COMMENT_START): Define.
+ * mips/mips.c (target_switches, print_options): Delete.
+ (mips_asm_file_start): Put output of -G,Cpu,ISA here.
+ * mips/mips.h (ASM_COMMENT_START): Change from "\t\t#" to " #".
+ * rs6000/rs6000.c (output_option, m_options, output_options): Delete.
+ * rs6000/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/sh.c (output_option, m_options, output_options): Delete.
+ (output_file_start): Delete option output support.
+ * sh/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 <scottc@net-community.com>
+
+ * 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 <dje@seba.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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): Ditto.
+
+ * rs6000.c (rs6000_stack_temp): Delete, no longer used.
+
+Wed May 15 10:39:27 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * h8300/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 <jason@yorick.cygnus.com>
+
+ * toplev.c (compile_file): Don't warn about artificial functions
+ declared static and not defined.
+
+Thu May 9 22:03:28 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * sh.h (SET_ASM_OP): Define.
+
+Thu May 9 13:31:58 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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): Ditto.
+ (small_data_operand): Ditto.
+ (print_operand): Ditto.
+ (rs6000_select_section): Ditto.
+ (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 <dje@cygnus.com>
+
+ * function.c (aggregate_value_p): Return 1 if TREE_ADDRESSABLE.
+ * pa/pa.h (RETURN_IN_MEMORY): No longer test for TREE_ADDRESSABLE.
+
+Tue May 7 13:42:57 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * h8300/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/h8300.h (OK_FOR_U): Fix thinko.
+ (ENCODE_SECTION_INFO): Encode info for tiny data variables.
+ (STRIP_NAME_ENCODING): Define.
+ * h8300/h8300.md (movqi insn): Fix length for a constant load.
+ (movstrictqi): Likewise.
+ (movhi, movstricthi): Likewise.
+ (memory btst patterns): Add register to the constraints to keep
+ reload happy.
+
+ * h8300/h8300.h (OK_FOR_U): (const (plus (symbol_ref) (const_int)))
+ is a valid U operand if SYMBOL_REF_FLAG is set on the
+ SYMBOL_REF.
+ * h8300/h8300.md (memory btst patterns): New patterns.
+
+ * h8300/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/h8300.h (ENCODE_SECTION_INFO): Call h8300_eightbit_data_p
+ instead of h8300_tiny_data_p.
+
+ * h8300/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 <jason@yorick.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * cpplib.c (skip_comment, handle_directive): Don't use uninit vars.
+
+Mon May 6 18:47:36 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * vax.h (ASM_OUTPUT_MI_THUNK): Define.
+
+Mon May 6 09:49:10 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <jeremy@hksys.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * i386/{att.h,gas.h,bsd.h,sub386.h} (ASM_OUTPUT_MI_THUNK): Define.
+
+Wed May 1 17:54:51 1996 Doug Evans <dje@cygnus.com>
+
+ * sparc.h (ASM_OUTPUT_MI_THUNK): Fix for sparc64, optimize.
+
+Wed May 1 13:28:32 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * h8300/h8300.c (h8300_adjust_insn_length): Adjust the cost of
+ shifts by small constant values.
+ * h8300/h8300.md: Refine comments. 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/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 <jason@yorick.cygnus.com>
+
+ * svr4.h (SELECT_SECTION): If RELOC is true, put it in data.
+
+Tue Apr 30 17:26:30 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * h8300/h8300.c (one_insn_adds_subs_operand): New function.
+ (h8300_adjust_insn_length): New function.
+ * h8300/h8300.h (ADJUST_INSN_LENGTH): Define.
+ * h8300/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 <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@cyguns.com>
+
+ * sparc/vxsparc.h: sparc-aout.h renamed to aout.h.
+
+Mon Apr 29 00:35:15 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * h8300/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/h8300.h (NO_FUNCTION_CSE): Do define this. Register
+ pressure makes cse-ing function addresses rarely a win.
+ (reg_class): Remove unnecessary register classes LONG_REGS,
+ SP_REG, SP_AND_G_REGS.
+ (REG_CLASS_NAMES): Corresponding changes.
+ (REG_CLASS_CONTENTS): Corresponding changes.
+ (REGNO_REG_CLASS): Corresponding changes.
+ (REG_CLASS_FROM_LETTER): Corresponding chagnes.
+ (output_simode_bld): Declare.
+ * h8300/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. Redundant with new bitfield
+ patterns.
+ (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/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 <jason@yorick.cygnus.com>
+
+ * 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 <meissner@wogglebug.tiac.net>
+
+ * 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 <dje@cygnus.com>
+
+ * sparc/sparc.md (*smacsi,*smacdi,*umacdi): Fix constraint on
+ operand 0.
+
+Fri Apr 26 14:36:33 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * gcc/config/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 <dje@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * collect2.c (handler): Delete export_file when we get a signal.
+
+Wed Apr 24 14:54:44 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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
+ support.
+
+ * rs6000/linux.h: New file for Linux 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 <func> 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 a switch into
+ an 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): Ditto.
+ (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): Ditto.
+ (init_cumulative_args): Ditto.
+ (function_arg{,_boundary,_advance,_partial_nregs}): Ditto.
+ (function_arg_pass_by_reference): Ditto.
+ (setup_incoming_varargs): Ditto.
+ ({rs6000,debug}_stack_info): Ditto.
+ (output_{prolog,epilog}): Ditto.
+ (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): Ditto.
+ (LEGITIMATE_SMALL_DATA_P): Ditto.
+ (RETURN_IN_MEMORY): On Solaris, small structures are returned in
+ registers.
+ (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 <dje@cygnus.com>
+
+ * sparc/sparc.c (output_function_prologue): In -mbroken-saverestore
+ case, %sp = %fp - size.
+ * sparc/t-splet (TARGET_LIBGCC2_CFLAGS): Delete.
+ * sparc/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 <meissner@wombat.gnu.ai.mit.edu>
+
+ * config/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 <bothner@cygnus.com>
+
+ * expr.c (store_constructor): Fix test for missing array elements.
+
+Tue Apr 23 11:21:09 1996 Stephen L Moshier (moshier@world.std.com)
+
+ * config/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 <edelsohn@mhpcc.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <nisse@lysator.liu.se>
+
+ * c-parse.in (typespec): Made <SomeProtocol> equivalent
+ to (id <SomeProtocol>).
+ (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 <meissner@tiktok.cygnus.com>
+
+ * rs6000/win-nt.h (BIGGEST_FIELD_ALIGNMENT): Set to 64, not
+ 32 that AIX uses.
+
+Fri Apr 19 16:40:38 1996 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * i386.md (movqi): Handle QImode values in %si and %di.
+
+Thu Apr 18 20:56:56 1996 Jim Wilson <wilson@cygnus.com>
+
+ * sh.md (lshrsi3): Change gen_ashlsi3_d to gen_lshrsi3_d.
+
+Thu Apr 18 15:49:28 1996 Per Bothner <bothner@cygnus.com>
+
+ * sparc.h (ASM_OUTPUT_MI_THUNK): Define.
+
+Thu Apr 18 15:19:26 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * h8300.md: Remove "type" attribute from all patterns
+ except those which have varying length branches. Eliminate
+ obsolete "type" attributes. Add additional comments about insn
+ length computation problems and further optimizations. Add
+ "length" and "cc" attributes to insns without them, fix a few
+ 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 <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * choose-temp.c: Don't include sys/file.h ifdef NO_SYS_FILE_H.
+ #include <stdio.h>.
+ (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 <wilson@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * h8300/h8300.md (andhi3): If 2nd operand is a CONST_INT that
+ meets the '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 <rth@tamu.edu>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * combine.c (make_field_assignment): Allow XOR in final case.
+
+Tue Apr 16 11:33:53 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * 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 <dresselh@rft30.nas.nasa.gov>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <ian@cygnus.com>
+
+ * fixincludes: Fix undefined VOIDFUNCPTR in VxWorks 5.2 <time.h>.
+
+Mon Apr 15 15:12:16 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <fila@ibi.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * toplev.c (main): Delete redundant test for -p used with -fbytecode.
+
+Sun Apr 14 19:01:59 1996 John F. Carr <jfc@mit.edu>
+
+ * 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 <jtc@rtl.cygnus.com>
+
+ * 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 <moshier@world.std.com>
+
+ * 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 <manor@santafe.edu>
+
+ * 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 <moshier@world.std.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <fila@ibi.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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/h8300.md (movhi_internal): Demand at least one operand to
+ be a register.
+ (movsi_h8300): Optimize loading certain constants.
+ (movsi_h8300h): Likewise.
+
+ * 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 the
+ 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 <dje@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * h8300/lib1funcs.asm (modnorm): New function(s). Like divnorm,
+ but gets the sign bit right for modulo operations.
+ (__modhi3, modsi3): Use modnorm.
+
+ * h8300/h8300.c (dosize): On the h8300h, do 4 byte adjustments
+ using adds and subs.
+ * h8300/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 <dje@canuck.cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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
+ declarations.
+ (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 <Dave.Reese@East.Sun.COM>
+
+ * rs6000.c (print_operand): Use reg_names to print registers.
+
+Fri Apr 5 00:40:19 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <davidm@AZStarNet.com>
+
+ * alpha.c: Don't include stamp.h for Linux.
+
+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 <meissner@tiktok.cygnus.com>
+
+ * 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 <sac@slash.cygnus.com>
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * expr.c (emit_push_insn): Clobber register only if it is non-zero.
+
+Wed Apr 3 11:31:55 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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.
diff --git a/gcc/ChangeLog.0 b/gcc/ChangeLog.0
new file mode 100644
index 00000000000..2e413b1c25f
--- /dev/null
+++ b/gcc/ChangeLog.0
@@ -0,0 +1,6671 @@
+
+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/gcc/ChangeLog.1 b/gcc/ChangeLog.1
new file mode 100644
index 00000000000..b0f29ab6c01
--- /dev/null
+++ b/gcc/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 .. <const>) 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 <foo> (and <foo> (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 <foo>)).
+ 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 <X> <c1>) <c1>) can be (sign_extend <X>)
+ (lshiftrt (*shift <X> <c1>) <c1>) can be (zero_extend (subreg <X>))
+ Do (lshift <X> (sign_extend <Y>)) on non-regs using gen_lowpart.
+ Eliminate AND in (lshift (and <X> <C1>) <C2>).
+ Use gen_lowpart in (lshift:m1 (zero_extend:m2 <X>) <C>).
+ 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 <varargs.h>, 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/gcc/ChangeLog.10 b/gcc/ChangeLog.10
new file mode 100644
index 00000000000..ad1669210df
--- /dev/null
+++ b/gcc/ChangeLog.10
@@ -0,0 +1,10185 @@
+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 <tege@noisy.tmg.se>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * i386.c (notice_update_cc): Clear cc_status if ref modified MEM.
+
+Fri Mar 29 09:37:52 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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.
+ * config/pa/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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * alpha.c (summarize_insn): Fix three "off-by-one" bugs in loop bounds.
+
+Thu Mar 28 16:50:10 1996 Doug Evans <dje@cygnus.com>
+
+ * ginclude/inl-sparc.h: Deleted.
+
+Thu Mar 28 12:07:31 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * ginclude/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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * expmed.c (negate_rtx): Fix typo in previous change.
+
+Tue Mar 26 13:50:43 1996 Jim Wilson <wilson@mole.gnu.ai.mit.edu>
+
+ * calls.c (expand_call): In convert_to_mode call, use word_mode
+ not SImode.
+
+Tue Mar 26 13:44:34 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * configure: Delete unnecessary special handling of --with-cpu.
+
+Tue Mar 26 10:41:57 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <tege@noisy.tmg.se>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * fold-const.c (fold, case BIT_IOR_EXPR): Recognize rotates
+ with variable count.
+
+Mon Mar 25 18:05:28 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <rth@tamu.edu>
+
+ * 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 <dolan@ssd.intel.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <dje@cygnus.com>
+
+ * sparc/splet.h (STARTFILE_SPEC,LINK_SPEC): Define.
+
+Wed Mar 20 17:23:18 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * sparc/sol2.h (ASM_CPU_SPEC): Recognize -mcpu=v8plus, not v9.
+ Fix typo in ultrasparc entry.
+ * sparc/sparc.h (CPP_CPU_SPEC): Add v8plus entry.
+ (ASM_CPU_SPEC): Likewise.
+
+ * sparc/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/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 <coxs@wombat.gnu.ai.mit.edu>
+
+ * i386.h (HARD_REGNO_MODE_OK): Relax QImode constraint to
+ avoid a reload problem.
+
+Wed Mar 20 13:12:22 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <Markus.Theissinger@gmd.de>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * cplus-dem.c (demangle_template): Fix for non-mangled pointer
+ arguments.
+
+Tue Mar 19 13:54:06 1996 Jeffrey A. Law <law@wombat.gnu.ai.mit.edu>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <fila@ibi.com>
+
+ * 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 <moshier@world.std.com>
+
+ * alpha.c (summarize_insn, case SUBREG, CONST_*): New cases.
+
+Sun Mar 17 16:55:00 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <davidm@azstarnet.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * c-tree.h (warn_sign_compare): Add extern to declaration.
+
+Wed Mar 13 13:37:00 1996 Doug Evans <dje@cygnus.com>
+
+ * configure: Use cross-make and build-make if building
+ cross compiler with cross compiler.
+
+Wed Mar 13 12:00:34 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <davidm@azstarnet.com>
+
+ * glimits.h (__LONG_MAX__): On Alpha, use 64 bit value.
+
+Tue Mar 12 15:07:49 1996 Torbjorn Granlund <tege@tmg.se>
+
+ * 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 <wilson@cygnus.com>
+
+ * i960/i960.h (ROUND_TPE_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 <law@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * h8300/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/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/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 <meissner@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * sparc/t-splet: New file.
+ * sparc/splet.h: New file.
+ * configure (sparclet-*-aout*): Use them.
+
+ * sparc/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/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/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 <wilson@chestnut.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * cplus-dem.c (demangle_template): Fix for address-of-extern arguments.
+
+Wed Mar 6 15:12:55 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <rth@tamu.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <law@cygnus.com
+
+ * lib2funcs.asm (__outline_prologue): New "function".
+ (__outline_epilogue): New "function".
+ * pa.h (TARGET_SPACE): Define.
+ (target_flags): Add -mspace and -mno-space. Enable/disable
+ space saving optimizations.
+ (FRAME_POINTER_REQUIRED): Frame pointers are always required
+ when generating out of line prologues and epilogues.
+ * pa.c (compute_frame_size): Handle out of line prologues/epilogues.
+ (hppa_expand_prologue): If optimizing for space, emit an out of
+ line prologue.
+ (hppa_expand_epilogue): Similarly.
+ (override_options): Optimizing for space is not compatable with
+ either profiling or PIC code generation.
+ * pa.md (outline_prologue_call): New pattern.
+ (outline_epilogue_call): Likewise.
+
+Tue Mar 5 02:17:32 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <manfred@lts.sel.alcatel.de>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * xm-we32k.h (NO_WAIT_H): Deleted.
+
+ * collect2.c: Never include wait.h.
+
+Sat Mar 2 22:43:07 1996 Torbjorn Granlund <tege@spiff.gnu.ai.mit.edu>
+
+ * configure (code for making links): Work around sh bug on FreeBSD.
+
+Sat Mar 2 13:40:29 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <dje@charmed.cygnus.com>
+
+ * h8300/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 <bothner@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * i386/i386.md (cmpxf*): XF compare cannot have mem operands.
+ (casesi expand): Put (minus:SI..) into subsi3 format.
+ * i386/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 <dje@cygnus.com>
+
+ * 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/convex.h (EXTRA_SECTIONS,EXTRA_SECTIONS_FUNCTIONS): Delete.
+ * dsp16xx/dsp16xx.h (EXTRA_SECTIONS): Delete in_bss.
+ (EXTRA_SECTION_FUNCTIONS): Delete bss_section.
+ * gmicro/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/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 <wilson@chestnut.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000.c (rs6000_trampoline_{template,size}): Change the Windows
+ NT trampoline template so that it doesn't require making the stack
+ executable. Add support for 64 bit systems.
+ (rs6000_initialize_trampoline): Ditto.
+
+Tue Feb 27 16:42:00 1996 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * sh/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 <dje@cygnus.com>
+
+ * sparc/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 <edelsohn@mhpcc.edu>
+
+ * rs6000.md (movsf split): Fix typo in last patch.
+
+Sat Feb 24 10:02:55 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * toplev.c (fatal_insn): Flush stdout/stderr.
+
+Sat Feb 24 02:03:28 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * pa.md (abssi2): Rework to avoid matching constraints.
+
+Fri Feb 23 11:21:43 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * configure (sparclet-*-aout*): Set extra_headers.
+ * ginclude/inl-sparc.h: New file.
+
+Wed Feb 21 20:39:53 1996 Doug Evans <dje@cygnus.com>
+
+ * configure (sparc64-*-solaris2*): Merge with sparc-*-solaris2*.
+ * sparc/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/sparc.c (sparc_cpu_string): Delete.
+ (sparc_select): New global.
+ (sparc_override_options): Handle -mtune=xxx.
+ * sparc/sparc.md (cpu attr): Add sparc{lite,let} implementations.
+ * sparc/sp64-sol2.h: Deleted.
+
+ * arm/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 <ian@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * tree.c (decl_function_context): Do decl_function_context right for
+ function-local classes.
+
+Wed Feb 21 12:42:52 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * rs6000/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 <eggert@twinsun.com>
+
+ * 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 <dje@cygnus.com>
+
+ * hard-reg-set.h (twice unrolled GO_IF_HARD_REG_EQUAL): Add missing \.
+
+Tue Feb 20 14:21:16 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <brendan@lisa.cygnus.com>
+
+ * sparc/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 <dje@canuck.cygnus.com>
+
+ * 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_<cpu> for sparc.
+
+ * 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<cpu> to -mcpu=<cpu>.
+ (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/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.
+ * ginclude/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/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/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 <edelsohn@mhpcc.edu>
+
+ * 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 <leei@Canada.AI.SRI.COM>
+
+ * i386/sol2.h (SWITCH_TAKES_ARG): Restore -R.
+ * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise.
+
+Mon Feb 19 08:19:00 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * hard-reg-set.h (HARD_REG macros): If there are more than
+ HOST_BITS_PER_WIDE_INT hard registers and less than or equal to
+ 4*HOST_BITS_PER_WIDE_INT hard registers, unroll the loops by hand.
+
+Mon Feb 19 07:35:07 1996 Torbjorn Granlund <tege@tmg.se>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <jtc@netbsd.org>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <coxs@spiff.gnu.ai.mit.edu>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 that the stack pointer changes with the call to
+ __allocate_stack.
+ (set_sp): New pattern.
+
+Thu Feb 15 16:49:15 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000.md (movdi): Use HOST_WIDE_INT, not long long.
+
+Tue Feb 13 19:36:21 1996 Per Bothner <bothner@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <phdm@info.ucl.ac.be>
+
+ * 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 <leei@Canada.AI.SRI.COM>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * expr.c (store_constructor_field): Only call change_address if
+ bitpos is nonzero.
+
+Tue Feb 13 08:21:01 1996 Fila Kolodny <fila@ibi.com>
+
+ * i370/mvs.h (CPP_SPEC): Add '-trigraphs' because IBM's h files
+ contain them.
+
+Tue Feb 13 08:17:52 1996 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <randys@camaro.osf.org>
+
+ * 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 <dje@cygnus.com>
+
+ * configure (sparclet-*-aout*): New configuration.
+
+Mon Feb 12 14:43:50 1996 Per Bothner <bothner@cygnus.com>
+
+ 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/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/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/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 <ian@cygnus.com>
+
+ * 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: Remove.
+ * alpha/gdb-osf12.h: Remove.
+ * alpha/gdb.h: Remove.
+ * i386/sysv4gdb.h: Remove.
+ * mips/iris5gdb.h: Remove.
+ * mips/iris4gl.h: Remove.
+ * mips/iris4gdb.h: Remove.
+ * mips/iris3gdb.h: Remove.
+ * mips/dec-gosf1.h: Remove.
+ * mips/news4-gdb.h: Remove.
+ * mips/news5-gdb.h: Remove.
+ * mips/svr4-t-gdb.h: Remove.
+ * mips/ultrix-gdb.h: Remove.
+ * mips/bsd-5-gdb.h: Remove.
+ * mips/bsd-4-gdb.h: Remove.
+ * mips/svr4-5-gdb.h: Remove.
+ * mips/svr4-4-gdb.h: Remove.
+ * mips/svr3-5-gdb.h: Remove.
+ * mips/svr3-4-gdb.h: Remove.
+ * mips/mips-5-gdb.h: Remove.
+ * mips/ecoffl-gdb.h: Remove.
+ * mips/ecoff-gdb.h: Remove.
+ * mips/mips-4-gdb.h: Remove.
+
+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 <tege@noisy.tmg.se>
+
+ * i386.md: Delete spurious integer subtract patterns.
+ Delete % from subtract operand constraints.
+
+Sun Feb 11 19:17:24 1996 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <jtc@rtl.cygnus.com>
+
+ * 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 <martin@goofy.imech.uni-duisburg.de>
+
+ * 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 <dje@cygnus.com>
+
+ * 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/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 <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * pa.md (floatunssisf2 expander): Don't use "general_operand".
+ (floatunssidf2 expander): Likewise.
+
+Wed Feb 7 16:59:31 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * pa.md (various patterns): Avoid using "general operand" in
+ define_insn patterns.
+
+Sun Feb 4 21:37:05 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <sac@slash.cygnus.com>
+
+ * config/{i386,rs6000}/cygwin32.{asm,h}: New templates.
+ * config/{i386,rs6000}/{t,x}-cygwin32: Ditto.
+ * config/{i386,rs6000}/xm-cygwin32.h: Ditto.
+ * configure.in (powerpcle-*-cygwin32, i[3456]86-*-cygwin32): New.
+
+Fri Feb 2 17:42:40 1996 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <dje@cygnus.com>
+
+ * h8300/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 <law@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * c-lex.c (check_newline): Return result of HANDLE_PRAGMA.
+ * h8300/h8300.h (HANDLE_PRAGMA): Pass result back to caller.
+ * i960/i960.h (HANDLE_PRAGMA): Likewise.
+ * sh/sh.h (HANDLE_PRAGMA): Likewise.
+ * nextstep.h (HANDLE_PRAGMA): Likewise.
+
+Wed Jan 31 19:26:03 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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): ... and 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 <ian@cygnus.com>
+
+ * dbxout.c: Don't include <string.h>. 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 <ian@cygnus.com>
+
+ * dbxout.c (dbxout_type_methods): Don't use #ifndef inside call to
+ strchr.
+
+Sun Jan 28 14:44:09 1996 Doug Evans <dje@cygnus.com>
+
+ * config/dbxcoff.h (*): #undef first.
+
+Sat Jan 27 21:46:16 1996 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * m88k.md (umulsidi3): Added for the 88110
+
+Fri Jan 26 09:35:42 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * configure (sparc64-*-solaris2*): New target.
+ * sparc/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/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/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 <ian@cygnus.com>
+
+ * config/dbxcoff.h (DBX_USE_BINCL): Define.
+ (DBX_CONTIN_LENGTH): Define if not defined.
+
+Wed Jan 24 18:00:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <krk@cygnus.com>
+
+ * config/rs6000/win-nt.h (LIB_SPEC): Change options to GNU ld style.
+ (From Jason Molenda)
+
+Wed Jan 24 14:32:48 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * sparc/sol2.h (ASM_OUTPUT_ALIGNED_LOCAL): Delete, use svr4.h's.
+
+Tue Jan 23 03:28:01 1996 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <bothner@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * rs6000/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/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 <ian@cygnus.com>
+
+ * dbxout.c: Include <string.h>
+
+Fri Jan 19 17:17:00 1996 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * 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 <dje@charmed.cygnus.com>
+
+ * svr4.h (SWITCH_TAKES_ARG): Add 'x'.
+ * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise.
+
+Fri Jan 19 15:18:38 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <rearnsha@armltd.co.uk>
+
+ * arm/lib1funcs.asm (__divsi3, __modsi3, __udivsi3, __umodsi3):
+ Replace with smaller, faster versions.
+
+Thu Jan 18 17:41:46 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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): Ditto.
+ (main): Ditto.
+ (validate_all_switches): Ditto.
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jtc@slave.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * va-pa.h (__gnuc_va_list): Use a "void *".
+
+Tue Jan 16 18:45:23 1996 Per Bothner <bothner@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * cccp.c (new_include_prefix): Ignore ENOTDIR error from stat.
+
+Tue Jan 16 12:18:56 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/dbxcoff.h: New file for stabs in COFF support.
+ * config/a29k/a29k-udi.h: Use dbxcoff.h.
+ * config/h8300/h8300.h: Likewise.
+ * config/i960/i960-coff.h: Likewise.
+ * config/m68k/coff.h: Likewise.
+ * config/m88k/m88k-coff.h: Likewise.
+ * config/sh/sh.h: Likewise.
+ * config/sparc/litecoff.h: Likewise.
+
+Tue Jan 16 08:21:45 1996 Hans-Peter Nilsson <Hans-Peter.Nilsson@axis.se>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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.
+ <stdlib.h>: Include if HAVE_STDLIB_H.
+ <string.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 <graichen@omega.physik.fu-berlin.de>
+
+ * i386/freebsd.h (ASM_WEAKEN_LABEL): Deleted; not supported.
+
+Mon Jan 15 20:59:49 1996 J. Kean Johnston <hug@netcom.com>
+
+ * 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 <jtc@netbsd.org>
+
+ * m68k/netbsd.h (ASM_SPEC): New macro.
+
+Mon Jan 15 17:01:16 1996 Doug Evans <dje@cygnus.com>
+
+ * 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/h8300.h (HANDLE_PRAGMA): New argument `c'.
+ Must issue `return' now.
+ * i960/i960.h (HANDLE_PRAGMA): Likewise.
+ * sh/sh.h (HANDLE_PRAGMA): Likewise.
+ * nextstep.h (HANDLE_PRAGMA): Likewise.
+ * h8300/h8300.c (handle_pragma): New argument `ch'.
+ Simplify pragma processing. Delete support for `#pragma section'.
+ * i960/i960.c (process_pragma): New argument `c'. Change result to
+ terminating character.
+ * nextstep.c (handle_pragma): Likewise.
+ * sh/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 <roland@churchy.gnu.ai.mit.edu>
+
+ * 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 <gvran@uddeborg.pp.se>
+
+ * i386/svr3{,z}.ifile: Allocate address areas for the "stab"
+ and "stabstr" sections.
+
+Mon Jan 15 14:39:14 1996 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <meissner@wogglebug.tiac.net>
+
+ * 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 <law@cygnus.com>
+
+ * expr.c (expand_assignment): Fix alignment parm in emit_block_move.
+
+Sun Jan 14 19:00:25 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <bothner@cygnus.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * h8300/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 <jtc@cygnus.com>
+
+ * h8300/h8300.h (CPP_PREDEFINES): Delete -D_DOUBLE_IS_32BITS.
+
+Thu Jan 11 11:09:33 1996 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000.md (mulsf3 !POWERPC): Use dmul attribute.
+ (divsf3 !POWERPC): Use ddiv attribute.
+
+Thu Jan 11 11:09:33 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * fixincludes: Wrap rpc/types.h in extern "C", for osf2.0.
+
+Wed Jan 10 13:16:03 1996 Doug Evans <dje@cygnus.com>
+
+ * varasm.c (variable_section): New function.
+ (assemble_variable): Call it.
+
+Wed Jan 10 11:27:28 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <arnej@pvv.unit.no>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * collect2.c (scan_libraries): Correct Import File ID interpretation.
+
+Sun Jan 7 16:56:56 1996 Michael Meissner <meissner@wombat.gnu.ai.mit.edu>
+
+ * {svr4,mips/elf{,64}}.h (MAX_OFILE_ALIGNMENT): Define as
+ 32768*8.
+
+Sat Jan 6 15:52:36 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * sparc/sparc.h (MACHINE_STATE_RESTORE): Add missing .align.
+
+Wed Jan 3 18:29:32 1996 Doug Evans <dje@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Call text_section.
+
+Tue Jan 2 16:12:13 1996 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <Arkady_Tunik@comverse.com>
+
+ * 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 <dje@cygnus.com>
+
+ * m68k-none.h (MULTILIB_DEFAULTS): Define.
+
+Sun Dec 31 15:47:20 1995 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * function.c (assign_parms): Fix thinko for struct value arg.
+
+Fri Dec 29 12:41:47 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * rs6000.md (movdf): Reinstate 12/24 change accidently dropped in
+ undoing 12/27 changes.
+
+Thu Dec 28 22:24:53 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * rs6000.h: (reg_class): Undo 12/27 changes, except for
+ formatting.
+ (REG_NAMES): Ditto.
+ (REG_CLASS_CONTENTS): Ditto.
+ (REGNO_REG_CLASS): Ditto.
+ (REG_CLASS_FROM_LETTER): Ditto.
+ (PREDICATE_CODES): Delete predicate functions.
+ (gpc_reg{0,3,4,34}_operand): Delete declaration.
+ (cc_reg{0,1}_operand): Ditto.
+
+ * rs6000.c (gpc_reg{0,3,4}_operand): Delete.
+ (cc_reg{0,1}_operand): Ditto.
+
+ * rs6000.md (common mode functions): Undo 12/27 changes, and add
+ the appropriate clobbers for common mode calls. Keep the
+ define_splits for powerpc SI*SI->DI.
+
+Thu Dec 28 11:08:11 1995 Mike Stump <mrs@cygnus.com>
+
+ * sparc.h (RETURN_ADDR_OFFSET): Rename from
+ NORMAL_RETURN_ADDR_OFFSET, returns the offset for the current
+ function specifically.
+
+Thu Dec 28 07:07:14 1995 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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): Ditto.
+
+ * 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): Ditto.
+
+ * 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): Ditto.
+ (REGNO_REG_CLASS): Ditto.
+ (REG_CLASS_FROM_LETTER): Ditto.
+ (PREDICATE_CODES): Add new predicate functions.
+ (gpc_reg{0,3,4,34}_operand): Add declaration.
+ (cc_reg{0,1}_operand): Ditto.
+
+ * rs6000.md (common mode multiplication/division): Move/rename the
+ common mode calls so that they are closer to the define_expands
+ that call them. Set attribute type to be jmpreg, rather than
+ integer, so optimizer knows the branch processing unit is used.
+ Make SI*SI->DI multiplier use register classes instead of
+ hardwired registers. Add the appropriate clobbers of CR0/CR1 as
+ mandated by the 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * c-typeck.c (mark_addressable): Fix error in last change.
+
+Sun Dec 24 22:19:49 1995 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <Markus.Theissinger@gmd.de>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <coxs@dg-rtp.dg.com>
+
+ * 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 <roland@churchy.gnu.ai.mit.edu>
+
+ * config/gnu.h (GNU_CPP_PREDEFINES): Add missing space after
+ -Amachine(CPU).
+
+Thu Dec 21 12:23:42 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure ({powerpc,rs6000}*): Change --enable-cpu to
+ --with-cpu.
+ * rs6000.c (rs6000_select): Ditto.
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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=<value> to
+ select the default cpu to compile for.
+
+ * rs6000/aix41.h (TARGET_DEFAULT): Make -mcpu=common the default
+ behavior.
+ (PROCESSOR_DEFAULT): Ditto.
+ (MULTILIB_DEFAULTS): Set mcpu=common.
+
+ * rs6000/rs6000.h (TARGET_CPU_DEFAULT): Define to be NULL if not
+ defined. This is used for the --enable-cpu=<value> switch.
+ (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/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): Ditto.
+
+ * rs6000/{aix41,eabiaix,eabile,lynx,powerpc}.h (CPP_SPEC): Make
+ sure all -mcpu=xxx targets are supports.
+ * rs6000/{rs6000,sysv4,sysv4le}.h (CPP_SPEC): Ditto.
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jason@yorick.cygnus.com>
+
+ * collect2.c: Remove auto_export functionality.
+
+Tue Dec 19 10:57:23 1995 Kim Knuttila <krk@cygnus.com>
+
+ * ginclude/ppc-asm.h: Do not compile the register macros under
+ winnt.
+
+Mon Dec 18 19:31:23 1995 Adam Fedor <fedor@wilma.Colorado.EDU>
+
+ * objc/encoding.c (objc_alignof_type): Handle _C_PTR case.
+
+Mon Dec 18 18:40:34 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * 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/convex.c (expand_movstr_call): Likewise for memcpy.
+ * m88k/m88k.c (expand_block_move): Likewise for memcpy and bcopy.
+ * mips/mips.c (block_move_call): Likewise for memcpy and bcopy.
+ * mips/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 <jfc@mit.edu>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000.h (ASM_GENERATE_INTERNAL_LABEL): Put a leading '*'
+ in the label string so as to not confuse dbxout.c which believes
+ it can skip the leading character of the string.
+
+Mon Dec 18 09:44:56 1995 Mike Stump <mrs@cygnus.com>
+
+ * 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, so that in progress objects that live on the
+ temporary obstack are not reallocated, if we save and restore the
+ tree status in their lifetime.
+
+
+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 <law@cygnus.com>
+
+ * 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 <tege@noisy.tmg.se>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * vax/vms.h (WCHAR_TYPE_SIZE): Define.
+
+Sun Dec 17 07:08:34 1995 Ronald F. Guilmette <rfg@monkeys.com>.
+
+ * fp-test.c: New file.
+
+Sun Dec 17 07:06:03 1995 Peter Flass <flass@lbdc.senate.state.ny.us>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <tege@noisy.tmg.se>
+
+ * i386.h (REGISTER_MOVE_COST): Simplify.
+
+Fri Dec 15 22:30:27 1995 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * i386/i386iscgas.h, i386/t-iscscodbx: Deleted; long dead.
+
+Fri Dec 15 10:01:27 1995 Stan Cox <coxs@dg-rtp.dg.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <tege@noisy.tmg.se>
+
+ * rs6000.md (umulsidi3): New pattern.
+
+Thu Dec 14 18:08:59 1995 Torbjorn Granlund <tege@noisy.tmg.se>
+
+ * 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/arm.c (output_move_double): Extract DFmode constants using
+ REAL_VALUE_TO_TARGET_DOUBLE.
+
+Thu Dec 14 15:05:13 1995 Doug Evans <dje@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * expr.c (expand_expr, case ADDR_EXPR): Ensure op0 isn't QUEUED.
+
+Wed Dec 13 19:12:21 1995 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * function.c (identify_blocks): Start with a chain of BLOCKs to
+ match the rest of the backend (dbxout.c), instead of just one
+ BLOCK.
+ (reorder_blocks): Ditto.
+ (all_blocks): Ditto.
+
+ * 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 <ian@cygnus.com>
+
+ * 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.
+ * config/sparc/sunos4.h (DBX_USE_BINCL): Define.
+ * config/svr4.h (DBX_USE_BINCL): Define.
+
+Wed Dec 13 06:52:40 1995 Michael Meissner <meissner@cygnus.com>
+
+ * rs6000/win-nt.h (ASM_OUTPUT_EXTERNAL): Do not emit .extern for
+ builtin functions.
+
+Tue Dec 12 15:37:48 1995 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * h8300/t-h8300 (MULTILIB_{OPTIONS,DIRNAMES}): Add -mint32 support.
+
+Sun Dec 10 18:51:21 1995 Torbjorn Granlund <tege@noisy.tmg.se>
+
+ * 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 <law@cygnus.com>
+
+ * pa.md (millicode delay slot description): Remove reference
+ to defunct TARGET_MILLICODE_LONG_CALLS.
+
+Sat Dec 9 18:05:03 1995 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <meissner@beauty.cygnus.com>
+
+ * rs6000/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 <jason@yorick.cygnus.com>
+
+ * 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 <wilson@mole.gnu.ai.mit.edu>
+
+ * sh/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 <jason@yorick.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/sparc/t-sol2 (CRTSTUFF_T_CFLAGS): Use -fPIC
+ unconditionally, since binutils 2.6 supports it.
+
+Sun Dec 3 20:55:43 1995 Jeffrey A. Law <law@cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000/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 <brendan@cygnus.com>
+
+ * sparc/sparc.c (output_double_int): Handle CODE_LABEL's if v9.
+
+Fri Dec 1 09:13:23 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * m68k/m68k.md (decrement_and_branch_until_zero): Split into a
+ define_expand and an anonymous define_insn.
+ * fx80/fx80.md (decrement_and_branch_until_zero): Ditto.
+ * m88k/m88k.md (decrement_and_branch_until_zero): Ditto.
+
+Thu Nov 30 15:02:16 1995 Jim Wilson <wilson@mole.gnu.ai.mit.edu>
+
+ * 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/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/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 <dje@canuck.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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/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/rs6000.h (TARGET_{WINDOWS_NT,AIX,MACOS}): Define.
+ (processor_type): Add 602.
+ (PROCESSOR_COMMON): Assume the 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/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 the 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 <edelsohn@mhpcc.edu>
+
+ * 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 <jtc@rtl.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * 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 <kenner@mole.gnu.ai.mit.edu>
+
+ * 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 <d.love@dl.ac.uk>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * rs6000.md (load_multiple matcher): Fix typo in opcode.
+
+Sun Nov 26 13:51:08 1995 Lee Iverson <leei@Canada.AI.SRI.COM>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * reload.c (output.h): Include it.
+ * Makefile.in (reload.o): Add dependence on output.h.
+
+Thu Nov 9 11:24:20 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * rs6000/sysv4.h (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Undef before
+ including svr4.h.
+
+Tue Nov 7 10:58:12 1995 Torbjorn Granlund <tege@bozo.matematik.su.se>
+
+ * m68k.md (subxf3): Properly name pattern.
+
+Tue Nov 7 10:53:09 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * cppexp.c (cpp_lex): Correctly parse character constants.
+
+Tue Nov 7 09:52:15 1995 Jason Merrill <jason@yorick.cygnus.com>
+
+ * rs6000.h (ASM_OUTPUT_{DES,CONS}TRUCTOR): Define.
+
+Mon Nov 6 10:27:15 1995 Doug Evans <dje@cygnus.com>
+
+ * combine.c (force_to_mode): Fix typo.
+
+Sun Nov 5 18:37:02 1995 Torbjorn Granlund <tege@bozo.matematik.su.se>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <dje@lisa.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>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 <wilson@chestnut.cygnus.com>
+
+ * 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 <jason@sethra.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <law@cygnus.com>
+
+ * calls.c (expand_call): Make sure valreg is at least
+ a full word.
+
+Sun Oct 22 19:35:41 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <meissner@wogglebug.tiac.net>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * protoize.c (reverse_def_dec_list): Silence compiler warnings.
+
+Mon Oct 9 12:35:54 1995 Andrew Cagney <cagney@highland.com.au>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * alpha.h (ASM_SPEC): Add -g.
+
+Fri Oct 6 13:42:50 1995 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * alpha.h (alpha_{arg,auto}_offset): Make extern.
+
+Fri Oct 6 13:24:43 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * rs6000.h (RETURN_ADDRESS_OFFSET): Correct previous change.
+
+Fri Oct 6 13:14:43 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <Marko.Kohtala@ntc.nokia.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <tege@matematik.su.se>
+
+ * 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 <flass@lbdrscs.bitnet>
+
+ * mvs.h (FUNCTION_PROLOGUE): Maintain savearea forward chain
+ per MVS standards.
+
+Wed Sep 20 14:20:52 1995 Torbjorn Granlund <tege@matematik.su.se>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * cccp.c (is_system_include): Call skip_redundant_dir_prefix.
+
+Tue Sep 12 18:58:21 1995 John Carr <jfc@mit.edu>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * fixincludes: Fix HP/UX <sys/file.h> 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <tege@matematik.su.se>
+
+ * 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 <roland@churchy.gnu.ai.mit.edu>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <meissner@tiktok.cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@phydeaux.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <paul@cs.washington.edu>
+
+ * assert.h: Declare __eprintf with attribute noreturn.
+
+Sat Aug 19 16:40:12 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * stddef.h: Don't define wchar_t if __cplusplus is defined.
+
+Tue Aug 15 18:01:01 1995 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <moshier@world.std.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * m68k/m68kemb.h (STARTFILE_SPEC): Define as empty.
+
+Mon Aug 14 09:08:57 1995 Pat Rankin <rankin@eql.caltech.edu>
+
+ * 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 <law@adder.cygnus.com>
+
+ * 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 <mccallum@graphite.cs.rochester.edu>
+
+ * 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 <jfc@mit.edu>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * i960.md (movdi matchers): Fix src/dest order in unaligned
+ reg->reg case.
+
+Sun Aug 13 18:49:01 1995 DJ Delorie <dj@delorie.com>
+
+ * i386/xm-dos.h (HAVE_STRERROR): New definition.
+
+ * msdos/configur.bat: Add missing carriage return.
+
+Sun Aug 13 18:40:55 1995 Andrew Cagney <cagney@highland.com.au>
+
+ * Makefile.in (USER_H): Add va-ppc.h.
+
+Sun Aug 13 18:36:17 1995 M. Warner Losh <imp@village.org>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * toplev.c (vmessage): Support four arguments.
+
+Sun Aug 13 18:19:51 1995 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <mike@donoussa.vlsivie.tuwien.ac.at>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * fixincludes: Avoid clobbering VxWorks drv/netif/if_med.h file.
+
+Sat Jul 29 16:21:42 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <stuart@bmsi.com>
+
+ * collect2.c (scan_libraries): Implement for AIX.
+
+Sat Jul 29 09:59:33 1995 Michael Gschwind <mike@lanai.vlsivie.tuwien.ac.at>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <law@rtl.cygnus.com>
+
+ * 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 <law@rtl.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <mike@lanai.vlsivie.tuwien.ac.at>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * expr.c (preexpand_calls): Don't look past a CLEANUP_POINT_EXPR.
+
+Wed Jul 26 08:43:42 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * Makefile.in (gfloat.h): Delete previous copy before updating.
+
+Wed Jul 26 08:18:29 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * 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 <mike@java.vlsivie.tuwien.ac.at>
+
+ * pdp11.md: Fixed typos ('bhos' -> 'bhis').
+
+Wed Jul 26 08:05:41 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <meissner@cygnus.com>
+
+ * rs6000.md (movsi): Convert a CONST_DOUBLE into a CONST_INT of
+ the low part.
+
+Fri Jul 14 18:30:52 1995 Doug Evans <dje@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * expmed.c (SHIFT_COUNT_TRUNCATED): Use #ifdef not #if.
+
+Mon Jul 10 20:16:44 1995 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (rescan): Don't address outside of array when
+ preprocessing C++ comments.
+
+Mon Jul 10 20:05:46 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * 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 <jfc@mit.edu>
+
+ * sparc.h (SELECT_SECTION): Use TREE_CODE_CLASS instead of directly
+ referencing tree_code_type.
+
+Mon Jul 10 19:54:31 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <moshier@world.std.com>
+
+ * i386/i386.c (print_operand, case `J'): Use jns for GE and js for
+ LT.
+
+Tue Jun 27 07:58:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <uddeborg@carmen.se>
+
+ * configure (i[345]86-*-isc*): Fix misspelled "rfile" to "ifile".
+
+Mon Jun 26 18:58:22 1995 Mike Stump <mrs@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <mellon@toccata.fugue.com>
+
+ * mips/netbsd.h (ASM_DECLARE_FUNCTION_NAME): Don't emit function label.
+
+Mon Jun 19 18:34:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * fixincludes: Don't define wchar_t under C++.
+
+Mon Jun 19 17:12:41 1995 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <glenn@mars.myri.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <bdale@gag.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@deneb.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * rs6000.md (decrement_and_branch): Finish last fix; update matching
+ constraint.
+
+Tue Jun 13 18:32:51 1995 Torbjorn Granlund <tege@bozo.matematik.su.se>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <dje@canuck.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * m68k.md (tstdi): Rewrite.
+
+Fri Jun 9 17:28:55 1995 Per Bothner <bothner@cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <wilson@mole.gnu.ai.mit.edu>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <tege@bozo.matematik.su.se>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <tege@matematik.su.se>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <briggs@rrinc.com>
+
+ * 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 <tege@mole.gnu.ai.mit.edu>
+
+ * m68k.md (divmodhi4, udivmodhi4): Use "dmsK" for operand 2.
+
+Fri May 26 17:01:22 1995 Paul Eggert <eggert@twinsun.com>
+
+ * fixincludes: Fix bogus recursive <stdlib.h> 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 <eggert@twinsun.com>
+
+ * 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 <briggs@rrinc.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * configure: Define $(MAKE) if `make' doesn't.
+
+Wed May 24 15:50:51 1995 Doug Evans <dje@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * rs6000.h (STRIP_NAME_ENCODING): Define.
+ (RS6000_OUTPUT_BASENAME): Use it.
+
+Tue May 23 19:54:21 1995 Doug Evans <dje@cygnus.com>
+
+ * gcc.c (link_command_spec): Move ENDFILE_SPEC from -nostdlib
+ to -nostartfiles.
+
+Tue May 23 17:01:50 1995 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * h8300.md (movsf_h8300h): Add missing post-inc case to constraints.
+
+Mon May 22 14:38:36 1995 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <alan@SPRI.Levels.UniSA.Edu.Au>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <tege@cygnus.com>
+
+ * 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 <wilson@mole.gnu.ai.mit.edu>
+
+ * unroll.c (unroll_loop): Increment copy_start_luid if copy_start
+ is loop_start.
+
+Wed May 17 17:44:57 1995 Lee Iverson <leei@Canada.AI.SRI.COM>
+
+ * fold-const.c (invert_truthvalue, case CLEANUP_POINT_EXPR): New case.
+
+Tue May 16 18:51:16 1995 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <fedor@colorado.edu>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * pa.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Make sure to encode section
+ info for all libcalls.
+
+Mon May 15 20:58:00 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * alpha/alpha.md (movsicc, case NE): Don't generate unrecognizable
+ insn.
+ (movdicc, case NE): Likewise.
+
+Sun May 14 15:44:54 1995 Jim Wilson <wilson@mole.gnu.ai.mit.edu>
+
+ * 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 <dj@delorie.com>
+
+ * configure (i[345]86-go32-msdos, i[345]86-*-go32): New targets.
+
+Sat May 13 10:58:38 1995 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <roland@churchy.gnu.ai.mit.edu>
+
+ * 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 <law@mole.gnu.ai.mit.edu>
+
+ * 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 <raeburn@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * arm/lib1funcs.asm: New file.
+
+Fri May 12 11:52:03 1995 Kung Hsu <kung@cygnus.com>
+
+ * 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 <wilson@mole.gnu.ai.mit.edu>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <tege@cygnus.com>
+
+ 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 <dje@canuck.cygnus.com>
+
+ * gcc.c (link_command_spec): Make -nostdlib no longer imply
+ -nostartfiles.
+
+Thu May 11 18:48:57 1995 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <mellon@toccata.fugue.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <leei@Canada.AI.SRI.COM>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * sh/lib1funcs.asm (__ashrsi3, __ashlsi3, __lshrsi3): Use .byte
+ instead of .word offsets in switch table.
+
+Tue May 9 11:44:47 1995 Jeremy Bettis <jbettis@cse.unl.edu>
+
+ * objc/sendmsg.c (__objc_send_initialize): Call superclass if object
+ does not implement +initialize.
+
+Tue May 9 02:44:16 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <fedor@colorado.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <jtc@netbsd.org>
+
+ * configure (vax-*-netbsd*): New configuration.
+ * vax/netbsd.h, vax/xm-netbsd.h: New files.
+
+Thu May 4 16:39:05 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <alan@SPRI.Levels.UniSA.Edu.Au>
+
+ * protoize.c (gen_aux_info_file): Use strerror #ifdef HAVE_STRERROR.
+
+Wed May 3 01:06:01 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * 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 <law@mole.gnu.ai.mit.edu>
+
+ * pa.c (hppa_expand_epilogue): Fix thinko in last change.
+
+Tue May 2 16:54:35 1995 Doug Evans <dje@cygnus.com>
+
+ * jump.c (jump_optimize, can_reach_end determination): A barrier can
+ follow the return insn.
+
+Tue May 2 12:39:55 1995 Mike Stump <mrs@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <string.h>. 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 <eggert@twinsun.com>
+
+ * 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 <tege@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * objc-act.c: Update calls to start_decl, finish_struct,
+ pass NULLs for attributes.
+
+Thu Apr 27 21:13:14 1995 Doug Evans <dje@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * rs6000.md (insv): New anonymous patterns to combine insert with
+ arbitrary ashift, ashiftrt, lshiftrt, or zero_extract. (Based on
+ patch from John Brooks <jbrooks@ea.com>.)
+ (ashlsi3): Remove extraneous operand processing.
+
+Thu Apr 27 18:47:24 1995 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <tege@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 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 <sys/stat.h> 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 <eggert@twinsun.com>
+
+ * 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 <mccallum@leopard.cs.rochester.edu>
+
+ * 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 <tiggr@es.ele.tue.nl>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <tege@adder.cygnus.com>
+
+ * pa.md (call_internal_reg): Fix typos in length calculation.
+ (call_value_internal_reg): Likewise.
+
+Fri Apr 21 13:17:15 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <tege@cygnus.com>
+
+ * pa.h (TARGET_SWITCHES): Fix typo.
+
+Tue Apr 18 18:06:03 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <brendan@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <roland@churchy.gnu.ai.mit.edu>
+
+ * 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 <Linus.Torvalds@cs.Helsinki.FI>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * alpha/xm-alpha.h (HAVE_VPRINTF): Define.
+ (HAVE_PUTENV): Define.
+ (POSIX): Define.
+
+Thu Apr 13 19:57:44 1995 Doug Evans <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <tege@adder.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * pa.c (pa_reorg): Fix typo.
+
+Sat Apr 8 19:36:36 1995 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <rms@mole.gnu.ai.mit.edu>
+
+ * config.sub: Accept -lites* as op sys.
+
+Thu Apr 6 23:08:50 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * 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 <law@snake.cs.utah.edu>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * c-typeck.c (build_binary_op): Don't call common_type for
+ uncommon pointer types.
+
+Wed Apr 5 13:53:17 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ 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 <bothner@kalessin.cygnus.com>
+
+ * 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 <roland@churchy.gnu.ai.mit.edu>
+
+ * config/gnu.h (GNU_CPP_PREDEFINES): Remove -D__HURD__.
+
+Tue Apr 4 17:15:54 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * 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 <tege@adder.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <roland@churchy.gnu.ai.mit.edu>
+
+ * config/i386/linux.h: Include "config/linux.h" instead of
+ "linux.h", to avoid recursion.
+
+Sun Apr 2 23:50:27 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/i386/gnuelf.h: Include i386/linux.h instead of
+ i386/linuxelf.h.
+
+Sun Apr 2 17:35:10 1995 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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'.
+ <fcntl.h>, <stdlib.h>, <string.h>, <unistd.h>: New includes.
+ <sys/time.h>, <sys/resource.h>: Include only if defined(RLIMIT_STACK).
+ <time.h>: Include, unless <sys/time.h> 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 <jason@phydeaux.cygnus.com>
+
+ * libgcc2.c: Remove explicit 0-initializations of static variables.
+
+Thu Mar 30 18:22:39 1995 Fergus Henderson <fjh@cs.mu.oz.au>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * libgcc2.c (__throw_type_match): Update to use new calling convention.
+
+Wed Mar 29 14:53:23 1995 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <imp@village.org>
+
+ * 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 <jason@python.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * Makefile.in (multilib.h): Depend on Makefile, not config.status.
+
+Fri Mar 24 15:01:17 1995 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <tege@adder.cygnus.com>
+
+ * 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 <wilson@chestnut.cygnus.com>
+
+ * 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 <rms@mole.gnu.ai.mit.edu>
+
+ * 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 <bothner@kalessin.cygnus.com>
+
+ 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 <law@mole.gnu.ai.mit.edu>
+
+ * x-pa (CC): Add "-Dbsd4_4".
+
+Mon Mar 20 18:40:31 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * cccp.c (do_xifdef): Handle c++ comments.
+ (do_endif): Likewise.
+
+Mon Mar 20 15:31:45 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <mrs@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <bothner@rtl.cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jtc@cygnus.com>
+
+ * 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 <edelsohn@mhpcc.edu>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <jason@phydeaux.cygnus.com>
+
+ * 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 <tege@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <rodb@cs.ubc.ca>
+
+ * m68k/fpgnulib.c (__fixdfsi): Catch values < 0.5 in magnitude.
+
+Fri Mar 10 12:02:33 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * 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 <dje@cygnus.com>
+
+ * Makefile.in (install-common): Fix typo in installation of cpp.
+ Likewise with gcc-cross.
+
+Mon Mar 6 02:29:05 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * cccp.c (dump_single_macro): Fix typo: % wasn't properly
+ doubled in printf formats.
+
+Thu Mar 2 19:44:02 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * cccp.c (rescan): Prevent accidental token-pasting to
+ get !=, *=, /=, ==, or ^=.
+
+Thu Mar 2 15:37:13 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * c-typeck.c (build_binary_op): Avoid spurious warning
+ comparing enumerator to unsigned variable.
+
+Thu Mar 2 18:18:38 1995 J.T. Conklin <jtc@netbsd.org>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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/gcc/ChangeLog.2 b/gcc/ChangeLog.2
new file mode 100644
index 00000000000..a5e092c26a7
--- /dev/null
+++ b/gcc/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 <syms.h> 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 <syms.h>.
+
+ * 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/gcc/ChangeLog.3 b/gcc/ChangeLog.3
new file mode 100644
index 00000000000..346311a4267
--- /dev/null
+++ b/gcc/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<T>.
+
+ * 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 <label>(<reg>)
+ type addresses, which the machine really doesn't support, but you
+ currently get better code in some instances by pretending it does
+ support it.
+ (LEGITIMATE_CONSTANT_P): Call mips_const_double_ok if CONST_DOUBLE.
+ (ENCODE_SEGMENT_INFO): New macro, set SYMBOL_REF_FLAG (ie, volatil)
+ if refering to an item via the gp pointer.
+ (SLOW_BYTE_ACCESS): Define to 1, it is supposed to generate better
+ code on RISC machines.
+ (classify_op): New macro to classify an insn.
+ (additive_op): Use classify_op to figure out if PLUS or MINUS.
+ (divmod_op): New macro to identify DIV, MOD, UDIV, UMOD insns.
+ (unsigned_op): New macro to identify UDIV, UMOD insns.
+ (REGISTER_NAMES): All names are now pointers into mips_reg_names, so
+ that we don't have to continually test whether -mrnames is used or
+ not. The override_options function sets this up appropriately.
+ (REGISTER_NUMCHAR): Deleted.
+ (REG_NAME): Deleted.
+ (ADDITIONAL_REGISTER_NAMES): Define both names for the gp registers,
+ so people can use either $r4 or a0 in asm statements.
+ (PRINT_OPERAND): Call print_operand function instead of expanding a
+ huge macro. Add %C, %N, %(, %), %[, %], %&, %#.
+ (PRINT_OPERAND_PUNCT_VALID_P): Add `(', `)', `[', `]', `&', and `#'.
+ (PRINT_OPERAND_ADDRESS): Call print_operand_address function instead
+ of expanding a huge macro.
+ (DBX_OUTPUT_SEQEND): New macro, emit .set reorder after filling
+ delay slot(s).
+ (ASM_OUTPUT_SOURCE_FILENAME): Add check for doing .file of same file
+ -- this is needed for the prologue to do a .file before all prologue
+ instructions, rather than after the instructions which set up the
+ stack. Also, warn about #line requests that cannot be honored in
+ MIPS ECOFF binaries.
+ (ASM_OUTPUT_CASE_END): Delete, since it was only used to go back to
+ the text section, and GCC does this now automatically.
+ (READONLY_DATA_SECTION): New macro, define to be rdata_section.
+ (SELECT_SECTION): Don't force volatile readonly items into .data.
+ (ASM_COMMENT_START): New macro, define to be '\t\t# ' for -dp.
+ (SEPARATE_AUX_OUTPUT): New macro, define this to separately compile
+ out-mips.c.
+
+Tue Apr 16 15:00:51 1991 Jim Wilson (wilson at cygnus.com)
+
+ * unroll.c (final_giv_value): Use expand_binop instead of
+ gen_sub2_insn when emitting subtract insns, since expand_binop
+ will work for any operands.
+
+ * sched.c (schedule_insns): Don't split no-op moves; doing so
+ breaks the code that handles REG_NO_CONFLICT blocks.
+ (update_links): Delete the code that prints a warning for
+ REG_EQUAL notes where the original dest can't be found. This no
+ longer occurs because of the above change.
+
+ * sched.c: Generalize memory aliasing code so that it will work on
+ non-RISC machines. Instead of saving just the insn on the pending
+ lists, now saves both the insn and the mem rtx. Old variables
+ pending_read and pending_write replaced with pending_read_insns,
+ pending_read_mems, pending_write_insns, and pending_write_mems.
+ (read_dependence, true_dependence, anti_dependence,
+ output_dependence): Now passed a MEM rtx instead of a PATtern.
+ (add_insn_mem_dependence): New function. Adds an insn and a mem
+ to a pending list pair.
+ (sched_analyze_1, sched_analyze_2, sched_analyze): Modified to use
+ new pending list scheme.
+ (schedule_block): Likewise.
+ (schedule_insns): Likewise.
+
+Tue Apr 16 12:31:07 1991 Jeffrey A. Law (law at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-man): Look for protoize.1 and unprotoize.1
+ in the current directory, not $(srcdir)
+ (install-headers): Use basename to strip off $(srcdir) from
+ include files when installing and changing mode.
+
+Tue Apr 16 08:10:38 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (extendqixi2): Add CLOBBER to the first SET as well as
+ the second.
+ (load_multiple): Fix typo in operand number and add newline.
+
+ * reload.c (find_reloads_address_1): Pass actual location of a
+ MEM used in an address; also handle the case when the MEM was
+ copied. Ensure we reload the copy, not the original address.
+
+ * reload1.c (eliminate_regs, case {INSN,EXPR}_LIST): Correctly handle
+ the cases when one or more operations is (nil).
+
+ * local-alloc.c (block_alloc): Check for REG_EQUAL on list insn
+ of REG_NO_CLOBBER sequence, not first.
+ (no_conflict_p): Set LAST and use INSN instead of P for loop start.
+
+Mon Apr 15 12:55:12 1991 Jim Wilson (wilson at cygnus.com)
+
+ * loop.c (strength_reduce): Don't emit an insn after loop_end to
+ set the final value of a reversed biv. There is already an insn
+ there setting the biv's proper final value.
+
+Sun Apr 14 18:32:05 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * gnulib1.c (various functions): Added declaration of INTIFY to
+ every function which has a FLOAT_ARG_TYPE argument or return value.
+
+Sun Apr 14 18:31:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (store_parm_decls): Traditional float parm becomes double.
+
+Sat Apr 13 17:35:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * m68k.md (storing 32-bit field with movl): Allow any immediate arg 3.
+
+ * expmed.c (store_bit_field): For fields bigger than a word:
+ Avoid special use of SImode, and don't crash if VALUE is CONST_INT.
+
+Fri Apr 12 02:04:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): Like prev change here, for optional reloads.
+
+ * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Must set %o0 to the address
+ LPBX0 by adding in the low part of the address before calling
+ ___bb_init_func.
+
+ * tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
+ New macros. Place reference to constructor or destructor into
+ constructor or destructor section.
+
+ * tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add
+ new constructor and destructor sections.
+
+ * jump.c (squeeze_block_notes,squeeze_notes): Chage the name of
+ squeeze_block_notes to squeeze_notes. Also handle LOOP_BEG, LOOP_CONT
+ and LOOP_END notes, since these must remain in their original order.
+
+ * cccp.c (skip_to_end_of_comment): Handle warn_comment.
+
+ * m68k.md (dbra patterns): Use `=' in constraint of op 0.
+
+ * gcc.c (process_command): Handle -save-temps.
+ (do_spec_1): Handle %g like %b if -save-temps.
+ (verbose_flag): Renamed from `vflag'.
+
+ * tm-sparc.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Don't define this.
+
+Fri Apr 12 00:57:48 1991 Jim Wilson (wilson at cygnus.com)
+
+ * sched.c: Update all comments to reflect source changes.
+ Make old_live_regs a static global, instead of local to schedule_block.
+ Schedule_block is now void, since its return value was always 1.
+ Rename last_function_call_not_const to last_pending_memory flush.
+ This can not be a CALL_INSN or a INSN that writes memory.
+ New variable pending_lists_length so that the lists can be flushed
+ when they get too long.
+ Use GET_RTX_CLASS instead of multiple GET_CODE calls whenever it
+ makes sense.
+ (read_dependence): New Function. Returns one if two reads are
+ dependent. This can happen if both are volatile reads.
+ (true_dependence, anti_dependence, output_dependence): Two volatile
+ memory access are always dependent.
+ (order_calls): Function deleted. It was very short, it was only called
+ once, and it no longer did what its name implied. Its one call was
+ replaced with the body of the function.
+ (sched_analyze_1): Correctly handle stripping of SUBREGs, etc from
+ the set dest.
+ If the pending lists are longer than 32 when processing a memory
+ write, then make this write depend on all previous and all future
+ memory accesses so we can flush the pending list. This is necessary
+ because the algorithms used are O(N*N).
+ (sched_analyze_2): For memory reads, check whether it is read
+ dependent on any previous memory read (this can happen if both reads
+ are volatile).
+ (sched_analyze_insn): Replace call to order_calls with the body of
+ that function.
+ (sched_analyze): Don't clear last_memory_pending_flush for a non-const
+ call, since any future call must still depend on all previous memory
+ accesses.
+ (sched_note_set): Correct handling of SUBREGs, etc. For partial sets
+ of a register, must treat this exactly the same way as flow.c, i.e.
+ a partial set of a register does not kill the register. Delete
+ ifdefed out code which is obsolete.
+ (attach_deaths): New argument SET_P, which indicates whether this is
+ a set (if true) or a use (if false) of the rtx X. Correct handling
+ of REG_DEAD notes, to account for the new REG_UNUSED note.
+ (attach_deaths_insn): Pass new additional parameter to attach_deaths.
+ Always call attach_deaths for sets within a parallel. Call
+ attach_deaths for clobbers.
+ (new_sometimes_live): Ifdef out code which should never be executed,
+ and replaced with call to abort.
+ (schedule_block): Now void.
+ When processing block to find dead_regs, don't unlink REG_UNUSED notes,
+ but must mark the indicated register as dead.
+ (update_links): Completely rewritten to make more general. Now handles
+ all REG_NOTEs except REG_INC and REG_LABEL. No longer makes simple
+ assumptions about the form of instructions. New argument orig_insn,
+ which is the original unsplit insn.
+ (schedule_insns): Delete unused volatilep code. Pass new parameter
+ to update_links.
+
+Thu Apr 11 15:34:44 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * out-m88k.c (pic_addressing_base_rtx): Use pic_offset_table_rtx
+ instead. Otherwise, PIC fails miserably for inline functions.
+ (legitimize_address): Support -mbig-pic.
+ (print_operand): Add `g' for printing #got_rel (for -mbig-pic).
+ * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): PIC_OFFSET_TABLE_REGNUM
+ is used and is fixed for PIC.
+ (GO_IF_LEGITIMATE_ADDRESS): Distinguish the -mbig-pic case.
+ * m88k.md (SImode hi16/lo16): Use %g for -mbig-pic.
+
+Wed Apr 10 21:53:32 1991 Jim Wilson (wilson at cygnus.com)
+
+ * unroll.c: Change global variable declarations to static.
+ Four new global variables loop_iteration_var, loop_initial_value,
+ loop_increment, and loop_final_value, used for communication between
+ loop_iterations and precondition_loop_p.
+ (unroll_loop): Before deleteing the insns in the original loop body,
+ emit a label after the last insn to be deleted, to ensure that no
+ delete_insn call will delete past that point.
+ (precondition_loop_p): Use global loop_* variables setup by
+ loop_iterations, instead of trying to calculate their values again.
+ (copy_loop_body): Don't emit copies of the start_label.
+ (approx_final_value): COMPARISON argument now passed as the pair
+ COMPARISON_CODE and COMPARISON_VALUE.
+ (find_splittable_regs): When completely unrolling a loop, and the
+ initial value of a biv is a hard register or itself, then must
+ create a new register to hold its initial value for splitting.
+ (loop_iterations): Set the new global variables loop_*.
+ If the comparison value is an invariant register, then search the insns
+ before the loop to try to find a constant value for the register.
+
+Wed Apr 10 16:02:16 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * out-m88k.c (pic_addressing_base_rtx): A pseudo register coined
+ for each function as needed in legitimize_address.
+ (emit_move_sequence): Use legitimize_address instead of generating
+ HIGH/LO_SUM.
+ (legitimize_address): Rework, based on the sparc version, to
+ implement PIC.
+ (output_call): Use the #plt form when doing PIC.
+ (m88k_layout_frame): The addressing base register is no longer
+ fixed and r1 need not be saved for PIC.
+ (output_prologue): Output instructions to setup the addressing
+ base register if one is needed.
+ (print_operand_address): Support the PIC case.
+ * m88k.md (most patterns using hi16/lo16): Disable these for PIC.
+ * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): No longer needed.
+ (ADDRESSING_BASE_REGNUM): Derived from pic_addressing_base_rtx.
+ (GO_IF_LEGITIMATE_ADDRESS): Accept the PIC case.
+ (LEGITIMIZE_ADDRESS): Use legitimize_address instead of HIGH/LO_SUM.
+
+ * make-m88k, make-m88kdgux: Use SysV INSTALL = cp and for DG/UX,
+ use the bison -l option to allow debugging in c-parse.tab.c.
+
+ * From kenner@vlsi1.ultra.nyu.edu.
+ * out-m88k.c: Include insn-config.h before conditions.h, which
+ requires it.
+ * xm-m88kdgux.h: Define SEPARATE_AUX_OUTPUT before including config.h.
+ * tm-m88k.h: Declare MD functions only if SEPARATE_AUX_OUTPUT.
+
+ * tm-m88k.h, tm-m88kdgux.h, tm-m88ksvr4.h: Rework TARGET_VERSION.
+
+Wed Apr 10 08:19:02 1991 Richard Stallman (rms at apple-gunkies)
+
+ * caller-save.c (emit_mult_restore): Typo testing offset[regno] sign.
+
+ * fold-const.c (target_isinf): Test real value for infinitude.
+ * real.h (REAL_VALUE_ISINF): Use target_isinf.
+
+ * configure: Change / to -- in value of `target' in Makefile.
+
+Tue Apr 9 20:09:49 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * configure: Modify assignment to `target' in Makefile.
+ (AIX target): Use correct config files.
+
+ * make-aix386: New file.
+
+Tue Apr 9 19:28:16 1991 Torbjorn Granlund (tege at zevs.sics.se)
+
+ * longlong.h (header):
+ Modify definition of count_leading_zeros for input = 0.
+ * (68020): Test for __NeXT__ too.
+ * (68020 __umulsidi3, umul_ppmm, udiv_qrnnd):
+ Use constraints "dmi", not "g" (avoid address registers).
+ * (88000 add_ssaaa, sub_ddmmss): Use r modifier for output
+ templates, use J, not I, as constraint for the carry-in insns
+ * (at the end of the file): If UDIV_NEEDS_NORMALIZATION is not
+ defined, define it as 0.
+
+Tue Apr 9 19:14:34 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (optimize_bit_field): Fix typo.
+
+ * cccp.c (do_define): Don't crash when a builtin macro is
+ redefined.
+
+Tue Apr 9 15:11:42 1991 Richard Stallman (rms at apple-gunkies)
+
+ * expr.c (move_by_pieces): Don't fail to compile if no movqi.
+
+ * emit-rtl.c (get_last_insn_anywhere): Use first nonempty seq.
+
+ * varasm.c (assemble_constructor): Fix typo.
+
+Fri Apr 5 22:15:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (extendqixi): Add CLOBBER to ASHIFTRT insn.
+
+ * combine.c (simplify_shift_const): Shift operand of PLUS using
+ correct mode.
+ Correctly simplify outer_const when done.
+
+ * reload.c (push_reload): Don't de-reference INLOC if it is 0.
+
+ * expr.c (convert_to_mode): Call protect_from_queue.
+
+Fri Apr 5 13:29:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * varasm.c (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
+ Accept two arguments.
+
+Fri Apr 5 08:45:18 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expmed.c (expand_divmod): Convert OP1 to COMPUTE_MODE when we
+ convert OP0.
+
+ * combine.c (subst): Use gen_binary.
+ (simplify_comparison): If we have a ZERO_EXTRACT from a constant
+ with only one bit set, convert into comparison of position with
+ location of bit in constant; this simplifies ((1 << x) & 1) == 0.
+
+ * combine.c (gen_lowpart_for_combine): Copy code for CONST_DOUBLE
+ from gen_lowpart instead of calling it; it will abort for certain
+ floating-point cases, while we will just surround the object with
+ a SUBREG.
+
+Thu Apr 4 22:31:36 1991 Jim Wilson (wilson at cygnus.com)
+
+ * unroll.c (new file): Implements loop unrolling. Completely
+ unrolls small constant bounded loops. Unrolls other constant
+ bounded loops by an amount modulo the number of iterations so that
+ only one exit test is needed. Preconditions loops whose iteration
+ count can be calculated at run time, so that only one exit test
+ is needed. Can also unroll any other loop by having multiple
+ copies of the exit tests. Tries to simplify addresses while
+ unrolling.
+
+ * tree.def: BLOCK trees have 4 fields, not 5.
+
+ * toplev.c: Add new flag -dt to dump RTL after the second cse pass.
+ Define two new flags, flag_unroll_loops and flag_unroll_all_loops,
+ and add code to support their use for loop unrolling. Print the
+ exec time for the shorten-branch pass in the proper place, i.e.
+ after delayed branch reorganization.
+
+ * stmt.c (find_loop_tree_blocks): New function. Creates a mapping
+ between BLOCK trees and loops. This info is needed when doing both
+ loop unrolling and outputting debugger info.
+ (unroll_block_trees): New function. Makes COPIES copies of the block
+ trees corresponding the loop indicated by LOOP_NUMBER, so that the
+ BLOCK notes inside the loop will still match the BLOCK trees for
+ the loop.
+
+ * rtl.h: Document the new named pattern
+ "decrement_and_branch_until_zero". Add macros to access new
+ field of inline_header rtx, which holds a pointer to the function's
+ original DECL_INITIAL tree.
+
+ * rtl.def: New entry for inline_header to hold a pointer to the
+ function's original DECL_INITIAL tree.
+
+ * loop.h (new file): Move many declarations from loop.c to the new
+ file loop.h, and change some from static to extern, so that they
+ can be shared with unroll.c. Also globalize names for variables
+ changed from static to extern.
+
+ * loop.c: Move many declarations from loop.c to the new file loop.h,
+ and change some from static to extern, so that they can be shared
+ with unroll.c. Add misc comments to better explain the code.
+ Change name of global arrays loop_start and loop_end to
+ loop_number_loop_starts and loop_number_loop_ends so that they won't
+ be confused with local loop_start and loop_end variables.
+ New variables loop_number_exit_labels, loop_number_first_block,
+ loop_number_last_block, loop_number_block_level, loop_n_iterations.
+ Old_max_reg renamed to max_reg_before_loop. Max_uid renamed to
+ max_uid_for_loop. Induct_var renamed to reg_iv_type.
+ Induct_struct renamed to reg_iv_info. Class_struct renamed to
+ reg_biv_class. Iv_list renamed to loop_iv_list.
+ Rename (struct induction) field always to always_computable.
+ Rename (struct induction) field family to next_iv.
+ New (struct induction) field not_replaceable.
+ (loop_opt): Add code to allocate some new arrays for unrolling
+ support. Add call to find_loop_tree_blocks to create the BLOCK tree
+ to loop map needed when unrolling and outputting debugger info.
+ (scan_loop): Fix setting of maybe_never of label/jump. The old code
+ always failed.
+ (prescan_loop): Delete obsolete code.
+ (find_and_verify_loops): Add code to initialize
+ loop_number_exit_labels.
+ (mark_loop_jump): Add code for keep chain of loop_number_exit_labels
+ for each loop.
+ (invariant_p): LABEL_REFs are not invariant when doing loop unrolling.
+ Remove static from definition, so that it can be called from unroll.c.
+ (strength_reduce): Change name of variable maybe_never to
+ not_every_iteration, to help emphasize that it is not the same
+ as the variable maybe_never in the code motion code. Modify code
+ that computes its value so that it will be false more often, resulting
+ in better code.
+ (strength_reduce): Added code to call the new loop unrolling
+ functions, e.g. unroll_loop, loop_iterations, etc.
+ (strength_reduce): New code to handle biv's and giv's which must
+ be set to their final_value after the loop exits.
+ (strength_reduce): Reversed giv's and biv's must have their values
+ calculated differently. Add new field reversed to struct induction,
+ and code to check and use its value.
+ (strength_reduce): Only check value of bl->nonneg for architectures
+ that have a decrement_and_branch_until_zero instruction.
+ (find_mem_givs): New argument loop_start.
+ (record_giv): New argument loop_start.
+ The always_computable field for DEST_ADDR givs is always set true.
+ New code to check for case of spaghetti code, in which case the
+ giv can never be considered replaceable.
+ (check_final_value): New function. For givs which are not otherwise
+ replaceable, try to calculate their final value, and then try
+ to use this to make them replaceable.
+ (update_giv_derive): Skip inner loop if giv is known to be underivable
+ at the beginning. Must set cant_derive if we pass an insn that
+ modifies the giv's biv, and we can't calculate an adjustment.
+ (emit_iv_add_mult): Remove static definition so that it is callable
+ from unroll.c.
+ (check_dbra_loop): Reversed biv's must be marked as such, so that
+ they can be treated specially in the rest of loop.c.
+ (final_biv_value): Moved to unroll.c, alongside the new function
+ final_giv_value. Extensively rewritten to work for most common
+ cases.
+ (update_reg_last_use): Verify that insns have a valid luid before
+ trying to use it. Don't perform any action if no value luid.
+ (get_condition): Correct initial comment.
+ (get_condition_for_loop): Remove static definition so it is callable
+ from unroll.c.
+
+ * integrate.h: Replace `tree' use in definition with
+ `union tree_node *' so that tree.h does not have to be included when
+ this file is included.
+
+ * integrate.c (initialize_for_inline): Pass additional argument,
+ the DECL_INITIAL (fndecl) tree, to gen_inline_header_rtx. Update
+ and correct comment.
+ (save_for_inline_copying): Copy the decl tree, so that virtual reg
+ instantiation, and loop unrolling, won't affect the saved tree.
+ (copy_decl_tree): New argument, functionbody, which distinguished
+ between calls from save_for_inline_copying and calls from
+ expand_inline_function.
+ (copy_rtx_and_substitute): Return orig instead of aborting when
+ inline_target is zero so that loop unrolling can use this code.
+
+ * gcc.texinfo: Document the new optimization flags -funroll-loops
+ and -funroll-all-loops, the new dump option -dt, and the new named
+ pattern "decrement_and_branch_until_zero".
+
+ * flags.h: Define two new flags, flag_unroll_loops and
+ flag_unroll_all_loops.
+
+ * emit-rtl.c (gen_inline_header_rtx): New argument
+ original_decl_initial. Pass to gen_rtx call.
+
+ * alliant.md, m68k.md: Name the pattern that uses the REG_NONNEG
+ note to "decrement_and_branch_until_zero".
+
+ * Makefile.in: Add source file unroll.c and header file loop.h to
+ the cc1 dependencies. Add *.cse2 to the list of files deleted by
+ `make clean'.
+
+Thu Apr 4 16:13:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_constructor, assemble_destructor): New functions.
+ They use ASM_OUTPUT_CONSTRUCTOR and ASM_OUTPUT_DESTRUCTOR.
+ * cplus-decl2.c (finish_file): Use them.
+
+ * reload.c (find_reloads): Pass location as outloc for output reload.
+
+ * objc-actions.c (objc_class_id, synth_module_prologue):
+ Initialize new variable to hold identifier for "objc_class".
+
+ * objc-actions.c (objc_comptypes): Allow assigning between types
+ id and Class without warning.
+
+ * c-typeck.c (warn_for_assignment): When there is a type mismatch
+ in the hidden arguments of a message expression, don't print the
+ argument number as 0 or -1. Instead print the warning as would
+ be done for an explicit call to objc_msgSend (this should never
+ happen, but just in case).
+
+ * emit-rtl.c (gen_lowpart): Reverse #if for CONST_DOUBLE case.
+
+Thu Apr 4 13:27:02 1991 Michael Meissner (meissner at osf.org)
+
+ * hard-reg-set.h (SET_HARD_REG_BIT, CLEAR_HARD_REG_BIT,
+ TEST_HARD_REG_BIT): Use unsigned arithmetic to isolate the word and
+ bit number, which produces better optimized code.
+
+Thu Apr 4 07:34:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (relax_delay_slots): Avoid adjusting LABEL_NUSES if the
+ insn is a conditional return.
+
+ * reload1.c (reload): If we find that a replacement cannot be
+ done and that replacement now enables a secondary replacement,
+ this may disable a third replacement in some cases.
+ (eliminate_regs, case SET): Don't stop after we find the first
+ match when looking for modified registers.
+
+ * combine.c (previous_num_undos): New var.
+ (try_combine): Set it after each call to subst.
+ When substituting I1 into I2, somtimes make a copy of PATTERN (i2).
+ (gen_rtx_combine): Start at PREVIOUS_NUM_UNDOS.
+
+ * combine.c (can_combine_p): Start check for volatile references
+ after INSN, not at INSN.
+
+ * combine.c (try_combine): When we find a split point, ensure
+ that I2 is a register. If it is of the wrong mode, change the
+ mode if we can, just like we do with CCmode registers.
+ (find_split_point): Don't split an extraction if it crosses the
+ boundary given by the field (i.e., a byte boundary if QImode).
+ Correct typo: Should generate LSHIFTRT, not LSHIFT.
+ (subst): Correctly test to see if we can change the mode of
+ a register for a MODE_CC comparison.
+ (distribute_notes): If a NOTE references a pseudo-register,
+ ensure it references the latest copy of that register.
+ When scanning for last use, don't stop at CALL_INSNs.
+
+ * combine.c (expand_compound_operation): Don't get confused about
+ (zero_extend (asm_operands ..)) because of the VOIDmode ASM_OPERANDS.
+ (simplify_and_const_int): Ensure we do computations in proper mode.
+ Simplify ZERO_EXTRACT and ZERO_EXTEND when we have a PLUS.
+ (significant_bits): Don't call get_last_value on a SUBREG, just REG.
+ Correct significant bits for comparison operations.
+ (simplify_shift_const): When VAROP is logical, use proper mode when
+ computing shifted constant.
+
+ * combine.c (gen_lowpart_for_combine): Call gen_lowpart if we have
+ a CONST_DOUBLE.
+
+ * genconfig.c (walk_insn_part, main): Write a definition
+ for HAVE_lo_sum if a LO_SUM is present in the machine description.
+
+ * combine.c (try_combine): If we have a PARALLEL of a SIGN_EXTEND
+ and a load of memory, split it into a load and SUBREG assignment.
+ (find_split_point): If we have LO_SUM for this machine,
+ split (mem (symbol_ref ..)) using HIGH and LO_SUM.
+ If we have operation with second operand constant, maybe we couldn't
+ fit the constant in the insn, so try to split there.
+ Move NOT to first operand so we'll try to split the other operand
+ first.
+ (subst): No reason to avoid making paradoxical SUBREGs and we miss
+ some optimizations if we don't.
+ Convert (lo_sum (high FOO) FOO) to FOO.
+ Convert (C1 + (x + C2) to (C1 - C2) - x.
+ Use distributive law in more places with logical operations.
+ (apply_distributive_law): Properly distribute IOR over XOR.
+ (simplify_shift_const): Simplify (ashift (plus ..) ...).
+ (simplify_comparison): Add code to remove extraneous AND
+ operations when comparing result of two comparisons on some machines.
+ Ignore bits not applicable in our mode.
+ Treat some SUBREGs as ZERO_EXTENDs.
+ Convert equality comparison of AND with sign bit into LT or GE
+ comparison.
+
+ * combine.c (gen_binary, gen_unary): New functions.
+ (apply_distributive_law, simplify_shift_const): Use gen_binary.
+
+Wed Apr 3 16:15:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (gnulib): Insert only .o files in combined archive.
+ (gnulib1.portable): Use $(HPXT).
+ * make-hp9k320g: Define HPXT.
+
+ * From wilson@cygnus.com.
+ * sched.c (schedule_block): Delete previously unused variable last_q.
+ Correct handling of registers with multiple lifetimes within a single
+ block, always save lifetime info, and clear the appropriate bit in
+ old_live_regs. Delete now unused variable sched_reg_n_sets.
+
+Wed Apr 3 07:43:35 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * tm-romp.h (CONST_COSTS): All CONST_INTs are cost 0. Symbolic
+ values cost two insns.
+
+ * function.c (fixup_var_refs_1): Correctly perform position
+ computation for bit extracts; disallow mode-dependent addresses.
+ (optimize_bit_field): Likewise.
+ Remove explicit mention of HImode and QImode by calling mode_for_size.
+ No need to check for offsettable_address_p; we call change_address
+ and are not called after reload; don't call adj_offsettable_operand.
+ * recog.c (validate_replace_rtx_1): Correct endian computation
+ and don't change mode of a MEM with a mode-dependent address.
+
+ * expmed.c (expand_divmod): Try to figure out what mode will be used
+ and convert to that once at the beginning, rather than repeatedly,
+ since we may be writing jumps.
+
+ * vax.md ({zero,sign}_extract patterns): Field width is QImode, not
+ SImode.
+
+Tue Apr 2 08:42:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_ternary_operation): Add argument for previous
+ mode of operand 0.
+ Don't do anything for extractions if bits don't fit in OP0_MODE.
+ Use OP0_mode instead of mode of OP0 for endian correction.
+ (fold_rtx): Pass new operand to simpllify_ternary operation.
+ * integrate.c (subst_constants): Add extra arg to call to
+ simplify_ternary_operation and call for rtx class 'b'.
+ * combine.c (find_split_point): Don't split an extract when the
+ bits are outside the mode of operand 0.
+ (subst): Pass new parameter to simplify_ternary operation and call
+ for rtx class 'b'.
+ (subst, case ZERO_EXTRACT): Don't change the mode of a MEM
+ if it is a mode-dependent address.
+ Correctly do endian adjustments so they are correct for fields that
+ go outside a byte boundary.
+ (subst, case {ZERO,SIGN}_EXTRACT): Don't adjust MEM here for non-dest
+ objects; already done in make_compound_operation.
+ (make_compound_operation): Rework code that makes extracts and
+ extends to correcty compute positions, taking into account the fact
+ that field can cross byte boundaries. Remove redundant adjustments.
+ Use mode_dependent_address_p to validate changing modes of MEM.
+ (simplify_shift_const): Check for mode-dependent address when
+ changing mode of a MEM.
+ (gen_lowpart_for_combine): Likewise.
+
+ * expmed.c (expand_shift): Code to use extzv for logical right shift
+ had numerous assumptions about specific modes and did not validate
+ operands properly.
+
+ * expr.c (expand_expr, case NOP_EXPR): If no target was specified,
+ use convert_to_mode instead of convert_move; this may return a SUBREG.
+
+ * expr.c (do_jump): Conversion isn't NOP if it narrows the object.
+ If testing A & CONST and the result fits in a smaller mode, try
+ the compare there.
+
+ * cse.c (simplify_binary_operation): If eliminating reference to
+ operand, verify that it has no side effects.
+ Add cases for "a | (~a)" and "a & (~a)".
+
+ * recog.c (register_operand): Only call general_operand for
+ (subreg (mem ...) X), not all SUBREGs.
+
+ * jump.c (jump_optimize): Remove needless incrementing of LABEL_NUSES
+ which can cause a dead label not to go away.
+
+Mon Apr 1 19:08:40 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Add missing call to insert_regs.
+
+Mon Apr 1 18:21:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * optabs.c (init_optabs): Change #if to #ifdef.
+
+ * loop.c (check_dbra_loop): Take out Feb 24 change.
+
+Sun Mar 31 22:43:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * final.c (insn_counter): New variable.
+ (final_scan_insn): Increment it.
+ (output_asm_insn): Use it for %=.
+
+Sun Mar 31 22:16:31 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * out-a29k.c (output_prolog): Correctly write stack size in tag word.
+
+ * out-a29k.c (srcb_operand): If QImode, any constant is OK since
+ we only care about 8 bits.
+ (print_operand): Add %Q for QImode srcb values.
+ * a29k.md (QImode patterns): srcb's that accept constants should have
+ 'n' constraint, not 'I'; use %Q to output.
+
+ * reload1.c (gen_input_reload): Properly generate reload when we are
+ adding a pseudo and a hard register.
+
+ * cse.c (simplify_unary_operation): Don't use ffs.
+
+Sun Mar 31 20:59:52 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * gnulib1.c (perform_ash{l,r}si3): Fix typo that had these
+ performaces swapped.
+
+Sun Mar 31 13:35:50 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * rtl.h (FIND_REG_INC_NOTE): New macro.
+ * rtl.h (AUTO_INC_DEC): Define here.
+ * flow.c (AUTO_INC_DEC): Not here.
+ * combine.c (can_combine_p, try_combine): Use FIND_REG_INC_NOTE.
+ Make other scans for REG_INC notes conditional on AUTO_INC_DEC.
+ * final.c (final_scan_insn): Use FIND_REG_INC_NOTE.
+ * jump.c (delete_jump): Likewise.
+ * loop.c (get_condition): Likewise.
+ * reload.c (find_reloads_address_1, find_equiv_reg): Likewise.
+ * reload1.c (reload_as_needed): Likewise.
+ * reorg.c (delete_scheduled_jump, mark_set_resources): Likewise.
+ * global-alloc.c (global_conflicts): Likewise.
+
+ * dbxout.c (dbxout_type): For integers, reals, and arrays,
+ use actual type number of int or char, in case those are not 1 and 2.
+
+ * toplev.c (compile_file): Take out last change (regarding lang_init).
+
+ * emit-rtl.c (sequence_element_free_list): Change data type.
+ (get_last_insn_anywhyere, add_insn_after): Finish last change.
+
+ * expr.c (expand_builtin): Finish last change.
+
+Sat Mar 30 15:16:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * function.h (struct sequence_stack): New data type.
+ (sequence_stack): Declare variable. Use new data type.
+ * emit-rtl.c (get_last_insn_anywhere, add_insn_after): Adapt to that.
+ (start_sequence, end_sequence, in_sequence): Likewise.
+ (start_sequence): Allocate stack links as permanent.
+ (init_emit_once): Init sequence_stack here.
+ (init_emit): Not here.
+ * function.c (push_temp_slots, pop_temp_slots):
+ (expand_function_end): Use in_sequence.
+ (fixup_var_refs): Use new data type.
+ (put_var_into_stack): Don't declare sequence_stack.
+
+ * function.c (expand_function_start):
+ Trace static chain properly past first link.
+
+ * ns32k.md (andcbhi3, andcbqi3): Constraint shouldn't say commutative.
+
+Sat Mar 30 02:06:20 1991 North-Keys (erlkonig at apple-gunkies.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing): Fix typo `integer_tpe_node'.
+ * dbxout.c (dbxout-symbol): Added char * declaration for `name'.
+ * objc-actions.c (encode_array): Avoid returning a value.
+
+Fri Mar 29 15:59:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing): Define __builtin_constant_p.
+ * expr.c (expand_builtin): Implement it.
+ * tree.h (enum built_in_function): New alternative.
+
+ * toplev.c (compile_file): Move lang_init call after debugger init.
+
+ * gcc.c (default_compilers): Define __cplusplus for C++ code.
+
+ * c-decl.c (start_function): Use 0 for name of result decl.
+ (value_identifier): Variable deleted.
+
+ * dbxout.c (dbxout_type): Handle LANG_TYPE.
+ (dbxout_symbol): Handle RESULT_DECL.
+ Handle variables with constant values that are not output.
+ Use the mangled name when appropriate.
+ (dbxout_tags): Output equivalent typedef when appropriate.
+ (dbxout_function): Output the DECL_RESULT if it has a name.
+
+ * varasm.c (assemble_variable): Delete calls to set_current_gdbfile.
+
+Thu Mar 28 16:14:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (main): Calculate basename_length to exclude last period.
+
+ * optabs.c (expand_binop, expand_unop):
+ When widening, don't keep CONST_INT beyond a single word.
+
+ * tm-vax.h (CHECK_FLOAT_VALUE): Change float max to ...444e+38.
+
+ * Makefile.in (gnulib1, gnulib2.portable):
+ Make test of $$? normally succeed, not normally fail.
+ (gnulib1): Don't use -e in second loop. Test explicitly instead.
+
+ * dbxout.c (lastfile): New static variable.
+ (dbxout_init): Initialize lastfile.
+ * final.c (lastfile): Deleted.
+ (init_final): Don't set lastfile.
+
+ * final.c (set_current_gdbfile): Function deleted.
+ (output_source_line): Handling of GDB debugging info deleted.
+ (final_start_function, final_end_function): Likewise.
+
+Thu Mar 28 09:58:18 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * cplus-decl.h (decl_context): Add missing declaration for BITFIELD.
+
+ * tm-sparc.h (CC1_SPEC): Change to handle new interpretation of -O2.
+ (OPTIMIZATION_OPTIONS): Use this macro to control default expensive
+ optimizations.
+ (MODES_TIABLE_P): Use GET_MODE_CLASS to simplify this macro.
+ (FUNCTION_ARG,FUNCTION_ARG_PARTIAL_NREGS): Make sure TYPE is nonzero
+ before we use it.
+ (FUNCTION_BLOCK_PROFILER): Fix a bug in the asm code.
+ (EXTRA_CONSTRAINT): For 'S' constraint, if OP is a register, make
+ sure it's not a pseudo. Also, change call to `memory_address_p' to
+ `strict _memory_address_p'. Both of these are for the strict cases.
+ (SLOW_BYTE_ACCESS): Try going with this set 1.
+ * sparc.md: Take advantage of new combiner to handle signed bitfield
+ comparisons and signed sub-word comparisons.
+ Added peepholes for doing subword memory tests and operations.
+
+Thu Mar 28 09:43:30 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (start_sequence, gen_sequence): Ensure we allocate rtl
+ on saveable_obstack since we will be saving it and we may be called
+ from an optimizer that will reuse allocated memory in current_obstack.
+
+Wed Mar 27 18:46:27 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * toplev.c (main): Print version with -version, regardless of
+ -quiet.
+
+ * Makefile.in (gnulib, gnulib2.ready): Put `-' before `if'.
+
+ * make-hp9k320, make-hp9k320g (CC, OLDCC): Delete -lsetjmp.
+ Add -Wc,-Nw2000.
+
+ * dbxout.c (dbxout_source_file): New name for fn moved from final.c.
+ * final.c (output_source_file): Moved to dbxout.c. Callers changed.
+ (output_source_line): Call dbxout_source_file.
+
+Wed Mar 27 11:09:13 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * version.c: Bumped to version 1.92.
+
+ * final.c (output_source_{file,line}): Fix bug in new handling of
+ "Ltext".
+
+ * cplus-cvt.c (build_up_reference): Handle BIND_EXPR.
+
+ * Makefile.in (cplus-lex.o): depend on cplus-input.c.
+ * cplus-input.c: New file.
+
+ * cplus-method.c (do_inline_function_hair): Call a different
+ `prepare_inline', and don't deal with pending_inlines here.
+ * cplus-lex.c (do_pending_inlines): Deal with pending_inlines
+ here...
+ (reinit_parse_for_method): ...and here.
+
+ * cplus-decl.c (grok_ctor_properties): Use TYPE_NAME_STRING where
+ appropriate. Also, don't assume that CURRENT_CLASS_TYPE is what we
+ use for error message; use CTYPE instead.
+
+ * cplus-type2.c (digest_init): Strip NON_LVALUE_EXPRs.
+
+ * cplus-tree.c (__eprintf): Added this function from gnulib2 until
+ gnulib configuration is worked out.
+
+ * cplus-parse.y (member_init): Call do_member_init. Previous code
+ was wrong (using a goto to factor common code) because the parse
+ stack was different in the two contexts.
+ * cplus-init.c (do_member_init): New function.
+
+ * cplus-typeck.c (build_compound_expr): Convert arrays to pointers.
+ (build_c_cast): Warn about possible alignment problems.
+
+Wed Mar 27 05:55:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Disallow a PLUS as an operand even if
+ "g" is in the constraint; this is only valid for "p".
+
+Tue Mar 26 06:46:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * local-alloc.c (block_alloc): Have insn numbers start at 1, not 2.
+
+ * rtlanal.c (replace_regs): Move to here; add new parameter.
+ * loop.c (replace_regs): Delete from here.
+ (move_movables, strength_reduce): Pass new parameter to replace_regs.
+ * jump.c (duplicate_loop_exit_test): Make new pseudos for pseudos
+ used only in loop exit test; this prevents unnecessay sharing
+ between code inside and outside of loop.
+ * toplev.c (rest_of_compilation): Call reg_scan before jump.
+
+ * combine.c (distribute_notes): If we are searching back for the last
+ use of a register I3 and I2 no longer use and the last use is a SET
+ of that register, place a REG_UNUSED note instead of a REG_DEAD note.
+ No longer need handle REG_DEAD note for output of I3; it will now be
+ a REG_UNUSED note.
+
+ * combine.c (try_combine): If I3SRC is a register and I2 is a
+ multi-output insn, see if we can replace one of the outputs with
+ I3DEST. If so, move LOG_LINKS pointing at the other outputs to
+ now point to I3 instead of I2.
+
+ * rtlanal.c (single_set): Return 0 if not an insn.
+ Only ignore SET with unused output if it has no side effects.
+ (side_effects_p): New function.
+ * combine.c (can_combine_p): Only ignore SET with unused output if
+ it has no side effect.
+ Don't extend the life of a hard register.
+ (try_combine): Always give up if I1 or I2 used reg inc'd in I3.
+ (significant_bits): Return mode mask if mode wider than host int.
+ Don't get confused by (zero_extend (const_int ..)) and similar where
+ the inner mode is VOIDmode.
+ Arithmetic operations now always have same modes on operands as
+ on the result.
+
+ * jump.c (jump_optimize): Set this_is_{simple,cond}jump at the start
+ of loop, not in middle, and use consistently.
+ Use can_reverse_comparison_p in case where we make scc insn.
+ Don't use can_reverse_comparison_p when we call invert_jump.
+ Use indirect_jump instead of indirect_exp.
+ Check invert_jump's result before making any other changes; handle
+ failure.
+ Simplify code that looks for and deletes USE insns.
+ (jump_back_p): Call can_reverse_comparison_p only if we have to
+ reverse the comparison.
+ (can_reverse_comparison_p): Accept comparison expression and insn
+ it comes from.
+ Rework to be more general now that we have MODE_CC and tighten
+ up a bit.
+ (invert_jump): Allow invert_exp and redirect_jump to fail.
+ (invert_exp): Only invert jump, don't change target.
+ If can reverse comparison code, try it using validate_change.
+ If that doesn't work, swap the arms of the IF_THEN_ELSE. If that
+ doesn't work, return 0.
+ (redirect_exp): Now static.
+ * expr.c (do_jump_for_compare): Call invert_jump to invert jump
+ to false label after emitting jump; if this fails, convert to
+ jump around unconditional jump to false label.
+ (do_store_flag): Set to 1 first, then branch, then set to 0. This
+ avoids inverting branches.
+ * reorg.c (optimize_skip, relax_delay_slots): Always allow invert_jump
+ to fail.
+ * rtlanal.c (single_set): Return 0 if not INSN, CALL_INSN,
+ or JUMP_INSN.
+
+ * reload1.c (eliminate_regs): If any eliminable regs occur in a USE,
+ eliminate them.
+
+Tue Mar 26 00:09:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (implicitly_declare): Always make implicit decl permanent.
+
+Mon Mar 25 16:38:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * genextract.c (walk_rtx): Record operand numbers that are seen.
+ (gen_insn): If there are gaps in operand numbers, make code to store
+ something for the operands not used in this pattern.
+ (main): Initialize data structures.
+
+ * c-typeck.c (initializer_constant_valid_p):
+ Always allow length-preserving conversions between integer types.
+
+ * regclass.c (reg_class_record): Return right away if operand is 0.
+
+ * c-decl.c (duplicate_decls): Warn if declare fcn inline after calls.
+
+ * reload.c (combine_reloads):
+ Test reg_overlap_mentioned_p in both directions.
+
+Mon Mar 25 15:05:29 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * genoutput.c (output_epilogue): Choose a name for an unnamed
+ pattern as an offset from the closest named pattern. Define
+ `insn_name_ptr' as a pointer to `insn_name' for use by print_rtx.
+ * final.c (output_asm_insn): Use the pattern name chosen by
+ genoutput and output the INSN_UID as well.
+ * rtl.c (insn_name_ptr): Provide an alternate definition to avoid
+ link errors when rtl.o is not linked with insn-output.o.
+ (print_rtx): When printing the INSN_CODE field of an insn, print
+ the name if it is available.
+
+Mon Mar 25 09:39:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * regs.h (reg_first_use): Deleted.
+ * rtl.h (REG_UNSET): Deleted.
+ (REG_UNUSED): New note.
+ * combine.c (combine_instructions): Delete loop fixing up
+ reg_first_use.
+ (can_combine_p): Ignore a branch of a PARALLEL if its output is
+ never used.
+ (move_deaths): Don't update reg_first_use.
+ (distribute_notes): Don't handle REG_UNSET; add code for REG_UNUSED.
+ * flow.c (reg_first_use): Deleted.
+ (life_analysis): Restore code that marks vars live at start of function
+ as globals. These are registers that were never set.
+ (allocate_for_life_analysis): Don't allocate reg_first_use.
+ (propagate_block): Search for cc0-setting insn with prev_nonnote_insn.
+ (mark_set_1): Don't set reg_first_use.
+ If register is never used, make REG_UNUSED note, not REG_DEAD.
+ (mark_used_regs): Don't set reg_first_use.
+ * global-alloc.c (global-conflicts): Dead outputs are now denoted by
+ REG_UNUSED notes, not REG_DEAD.
+ * reload.c (find_dummy_reload): Delete test of REG_UNSET; add test
+ of REG_UNUSED.
+ (find_equiv_reg): Don't re-use an output marked as REG_UNUSED;
+ we want these notes to be accurate; this would rarely win anyway.
+ * reload1.c (emit_reload_insns): Test REG_UNUSED to see if an
+ output won't be used any more.
+ * reorg.c (mark_target_live_regs): Use REG_UNUSED notes to kill
+ registers dead after an insn.
+ * rtl.c (reg_note_name): Delete REG_UNSET, add REG_UNUSED.
+ * rtlanal.c (single_set): Ignore a SET whose output has a REG_UNUSED
+ note.
+ * sched.c (update_first_use): Deleted.
+ (update_links): No need to call update_first_use.
+
+ * local-alloc.c: Major changes to use REG_UNUSED notes, make
+ handling of only-set registers more consistent, and allow
+ two consecutive CLOBBERs to share a register. Also, avoid loops
+ over all register each basic block; eliminating these make local-alloc
+ three times faster!
+ Quantity numbers now start at zero.
+ (qty_first_reg, reg_next_in_qty): New variables.
+ (qty_clobber): No longer needed.
+ (reg_qty): -1 if register cannot be allocated by local-alloc.
+ Now undefined for hard registers.
+ (reg_offset): Now char *.
+ (call_seen): Deleted, never used.
+ (regs_live_at): Now two entries per insn.
+ (alloc_qty): Initialize chain of register in quantity.
+ (local_alloc): Remove all per-block loops over registers.
+ Only allocate qty_... vars for max_reg - FIRST_PSEUDO_REGISTER.
+ Initialize reg_qty once per function.
+ Don't initialize qty_... vars that are always set before use.
+ (block_alloc): Delete insn_map, max_uid, and call_used.
+ Insn numbers start at 1 and we have two entries in regs_live_at
+ for each insn.
+ Search for REG_NO_CONFLICT block when we see a CLOBBER insn; this
+ avoids having already seen sets to the output register.
+ Call wipe_dead_reg for anything in a REG_UNUSED note.
+ Delete references to reg_first_use.
+ Don't check for invalid birth and death here.
+ Don't call qsort if we have 0 or 1 quantities.
+ Find all registers for a quantity using reg_next_in_qty chain instead
+ of looping over all pseudos.
+ (combine_regs): Refine tests to agree with new conventions.
+ Never tie pseudos if SREG already has a quantity assigned.
+ When updating size, use reg_next_in_qty instead of looping over
+ all registers.
+ (reg_is_set): Just call reg_is_born. Where it is born depends on
+ whether we have a CLOBBER or not. Birth location is now twice
+ the insn number.
+ (reg_is_born): Handle case when a hard reg is born before the
+ current insn.
+ Show we don't know the death location.
+ (wipe_dead_reg): Parameters are now just register and an in/out flag.
+ Death locations are now twice the insn number.
+ Support hard regs that die immediately after current insn.
+ Don't make REG_UNSET notes.
+ (find_free_reg): Validate BIRTH and DEATH here.
+ We no longer have qty_clobber.
+ (post_mark_life): Eliminate CLOBBER parameter.
+ (no_conflict_p): Now passed CLOBBER at start of block. Return 0 if
+ can't find death note or if R1 is a hard register.
+
+ * m68k.md (divsi3, udivsi3): Remove patterns. Using divmodsi4 and
+ udivmodsi4 produces better code.
+ (divmodsi4, udivmodsi4): If remainder isn't needed, use divsl/divul
+ instead of divsll/divull.
+
+ * integrate.c (expand_inline_function): Remove change of March 20th.
+ Instead, expand args in two passes. First, expand all that go
+ into registers. Then do those in memory with store_expr.
+
+ * integrate.c (initialize_for_inline): Put the original copy of the
+ address into ARG_VECTOR; the new one will be modified.
+
+ * reload.c (push_reload): Handle paradoxical SUBREGs on an output
+ as well as an input.
+
+ * flow.c (mark_label_ref): Don't blow up when X is 0.
+
+ * combine.c (make_compound_operation): Fix typos; result of
+ exact_log2 is interesting if >=0.
+
+ * a29k.md (store_multiple): Allow gen_store_multiple{_no,}_bug to fail;
+ we fail if they do.
+
+ * reorg.c (emit_delay_sequence): Record that we deleted a BARRIER
+ and restore it precisely on those occaisions.
+
+Sun Mar 24 21:19:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (xmalloc, xrealloc): Change error message.
+ * toplev.c (various): Change error messages.
+
+ * final.c (final_scan_insn): Handle ASM_OUTPUT_LOOP_ALIGN.
+
+ * calls.c (emit_call_1): Pass number of bytes to pop to call_pop.
+ * vax.md (call_pop, call_value_pop): Use that arg.
+
+Sat Mar 23 23:28:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (version): Run awk, not gcc, to get this value.
+
+Sat Mar 23 18:04:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_unary_operation): Add missing cases for ABS and FFS.
+
+ * alliant.md: Eliminate unneeded patterns: HImode zero_extract,
+ (set (cc0 (subreg ...))), (set (cc0) (and ...)),
+ (and (zero_extend ...) ...), shift right of 24 and 16.
+ Use alternatives to select assembler template when possible.
+ Use const_int_operand instead of immediate_operand when
+ possible to avoid explicit test for CONST_INT.
+ Write add-and-branch patterns with PLUS removed, the way combine
+ produces them.
+
+ * rtlanal.c (refers_to_regno_p): If X is a SUBREG of a hard
+ register, treat it as if it were the appropriate register.
+ CLOBBER doesn't refer to anything.
+
+ * final.c (final_scan_insn): Use prev_nonnote_insn, not PREV_INSN,
+ to find cc0-setting insn from cc0-using insn.
+
+ * global-alloc.c (find_reg): Don't look for other registers to
+ renumber unless we know that we are sharing registers.
+
+ * emit-rtl.c (end_sequence): Fix typo that prevented speedup of
+ Dec 26th from doing anything.
+
+ * toplev.c (do_abort): New function, just calls abort.
+ (main): Set lang_expand_expr to address of do_abort; abort might be
+ a macro that is more than just a function name.
+
+ * cse.c: (qty_... variables): Refined to be undefined for indices
+ less than MAX_REG. Thus, we need not intialize them at the start
+ of a basic block and can instead inialize a quantity as we create it.
+ (reg_{next,prev}_eqv): These variables will now be defined only when
+ reg_qty[N] != N and hence need not be initialized every block either.
+ (new_basic_block): Need not initialize reg_rtx for new block; the
+ only time we can inherit values from previous blocks is for hard
+ regs and it doesn't matter in that case.
+
+ * c-parse.y (yylex): Avoid use of size_t; it may not be defined.
+ Cast alloca to (char *).
+
+ * out-romp.c (update_cc): cc_status.value[12] can also be a COMPARE,
+ so use reg_overlap_mentioned_p to see if an insn that modifies a
+ register invalidates cc0.
+
+ * reorg.c (link_cc0_insns): If next insn is a SEQUENCE, the insn
+ using cc0 is the first insn in the sequence.
+ (mark_target_live_regs): Don't assume that a REG_DEAD note always
+ refers to a register.
+
+Sat Mar 23 15:35:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * reload1.c (reload_reg_free_before_p):
+ An input reload is use before an output or output address reload.
+
+ * genoutput.c (validate_insn_alternatives): New function.
+ Loop over insn's alternatives to find out how many
+ alternatives the insn pattern is to support. Verify that if
+ any alternatives are specified for a given operand that the
+ number of alternatives match the numer of alternatives for
+ this insn.
+ (gen_{insn,peephole,expand,split}): Call
+ `validate_insn_alternatives' after scanning the insn. This
+ sets up the value N_ALTERNATIVES for the insn so that
+ `process_template' can check that the number of alternitves
+ given matches the number of asm choices for `@' constructs.
+
+Sat Mar 23 08:09:57 1991 Michael Meissner (meissner at osf.org)
+
+ * dbxout.c (toplevel, dbxout_init): Instead of always using `Ltext'
+ as the label at the beginning of the text region, properly localize
+ it, so that machines which do not put leading underscores in front
+ of external names do not have a problem if the user uses `Ltext'.
+ (dbxout_init): Call text_section before putting out localized
+ `Ltext', in case ASM_FILE_START put us into a different section.
+
+Fri Mar 22 19:26:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.md (jumpfdec): Simplify pattern to match what combine will
+ produce; remove reversed pattern.
+ * out-a29k.c (gen_reg_operand): Speed up by not calling
+ register_operand; check register number ourself.
+
+ * out-romp.c (update_cc, case CC_COMPARE): Call CC_STATUS_INIT.
+ * romp.md: In pattern that sets cc0 and copies a register to another
+ register, allow the output to be in memory so that we don't get an
+ output reload, which will cause problems.
+
+ * varasm.c (assemble_variable): Ensure DECL_INITIAL is non-zero
+ before we reference it; it might be zero if -fno-common.
+
+Fri Mar 22 16:11:35 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * toplev.c (abort): Don't declare if defined as macro.
+
+Fri Mar 22 11:49:43 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (bxxu): Don't attempt to use bcnd.
+ (umulsi3, ashift/and): Remove these patterns.
+ (dummy): This must be a define_expand.
+ * out-m88k.c (m88k_handle_pragma_token): Handle #pragma weak.
+ * tm-m88k.h, tm-m88kdgux.h, tm-m88ksvr4.h, tm-v88r32.h: Various
+ changes to support SVR4, including support for #pragma weak.
+ (SLOW_BYTE_ACCESS): Better code if this is true.
+
+Thu Mar 21 09:15:47 1991 Tom Wood (wood at gen-rtx)
+
+ * c-parse.y (MULTIBYTE_CHARS): New macro.
+ (init_lex): Change to the native locale.
+ (yylex): Process wide character literals and wide character string
+ literals using mbtowc and mbstowcs based on MULTIBYTE_CHARS.
+
+Thu Mar 21 15:46:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (dead_or_set_p): A register is dead if it is assigned
+ via a SUBREG that references the all the words in the register.
+
+ * tm-vax.h (CONST_OK_FOR_LETTER_P): Define `I' to be constant zero.
+ (CONST_DOUBLE_OK_FOR_LETTER_P): Define `G' to be floating zero.
+ (CONST_COSTS): +/- 1 should be very cheap due to decl/inc/aob/sob.
+ (PRINT_OPERAND): Add `P', `N', `H', and `B'.
+ * vax.md: Rework many patterns to avoid C code for output template;
+ use "@" construct whenever possible.
+ Use INSN_DELETED_P.
+ Remove extendsidi2; the supplied pattern does exactly what convert_move
+ will do when the pattern is not present.
+ Use constm1_rtx to check for constant of -1.
+ Add mulsidi3 and related add-multiply pattern for emul insn.
+ Use const_int_operand as predicate instead of checking for CONST_INT.
+ Remove unneeded (set (pc) (if_then_else (ne (and ...) ...) ...))
+ patterns.
+ Merge jlbs and jbs and similarly for jlbc and jbc.
+ Remove unneeded reverse branch patterns for above insns.
+ Rewrite patterns for add-and-branch insns to take into account
+ simplifications done by combine and remove reversed cases.
+ Convert peepholes for optimizing extzv followed or preceeded by andl
+ into patterns for a single insn.
+
+Thu Mar 21 15:46:21 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * toplev.c (abort): Declare it.
+
+Thu Mar 21 08:16:12 1991 Michael Meissner (meissner at osf.org)
+
+ * va-mips.h (whole file): Replace with the 1.39 version of this
+ file, which was a total rewrite of the 1.37.1 version. Add
+ primitive support for 2.00.
+
+Wed Mar 20 18:31:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (duplicate_loop_exit_test): Make copy of contents of
+ register note; if it was a REG_EQUAL note, it might have been an
+ arbitrary expression and sharing it can cause problems in cse.
+
+ * rtl.def (UMULT): Remove unsigned multiply code.
+ * combine.c (subst, significant_bits): Remove code UMULT and
+ support for indicating widening multiply with different modes
+ on the MULT operation vs. its operands.
+ * cse.c (simplify_binary_operation): Remove support for widening
+ multiply.
+ (rtx_code, exp_equiv_p, simplify_binary_operation, cse_insn): Remove
+ code UMULT.
+ * function.c (instantiate_virtual_regs_1): Likewise.
+ * reload1.c (eliminate_regs): Likewise.
+ * local-alloc.c (block_alloc): Likewise; replace with GET_RTX_CLASS.
+ * loop.c (simplify_giv_expr, expr_benefit): Remove code UMULT
+ and support for widening multiply.
+ * optabs.c (init_optabs): Set code of widening multiply tables
+ to UNKNOWN.
+
+ * a29k.md (mulsidi2, umulsidi2): Rewrite using SIGN_EXTEND and
+ ZERO_EXTEND. Also fix typo in SUBREG_WORD when splitting.
+ * tm-alliant.h, tm-m68k.h (NOTICE_UPDATE_CC): Remove code UMULT.
+ * alliant.md, m68.md (mulhisi3, umulhisi3): Rewrite using
+ SIGN_EXTEND and ZERO_EXTEND.
+ (divhisi3, udivhisi3, modhisi3, umodhisi3): Rewrite using TRUNCATE.
+ * alliant.md, ns32k.md (umulsi3, umulhi3, umulqi3): Remove unneeded
+ patterns that use UMULT.
+ * ns32k.md (umulsidi3): Rewrite using ZERO_EXTEND.
+
+ * tm-alliant.h (NOTICE_UPDATE_CC): MOD and (trunc (mod ...))
+ clobber CC.
+ * alliant.md (mod*, umod*): No longer need CC_STATUS_INIT.
+
+ * recog.c: Include insn-attr.h.
+ (general_operand): If we have insn scheduling, don't allow paradoxical
+ SUBREGs since they can prevent scheduling memory references; they
+ aren't helpful on RISCs anyway and can cause poor register allocation.
+ * Makefile.in (recog.o): Includes insn-attr.h.
+
+ * cse.c (COST): A register only in NO_REGS isn't a specially-cheap reg.
+ (simplify_unary_operation, case {ZERO,SIGN}_EXTEND): If OP_MODE was
+ given as VOIDmode, use MODE; allow mode size of HOST_BITS_PER_INT.
+ (cse_insn): Don't make SET_SRC equal SET_DEST if doing so will cause
+ two registers to be live containing the same value.
+ (cse_end_of_basic_block): Count SETs in CALL_INSNs and JUMP_INSNs.
+
+Wed Mar 20 15:40:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): New macros.
+ (md_exec_prefix, md_startfile_prefix): New variables.
+ (process_command): Put those prefixes on the paths.
+
+ * toplev.c (main): Use abort, not fancy_abort.
+
+ * integrate.c (expand_inline_function): Use emit_block_move
+ to copy BLKmode parm value. Save size and alignment for this.
+
+ * gnulib2.c (__builtin_saveregs)[MIPS]: Go to text section.
+
+ * final.c (final_scan_insn): Don't go to text after jump-tab label.
+
+Tue Mar 19 21:27:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * tm-a29k.h (SETUP_INCOMING_VARARGS): Always write registers to
+ 0(ap), no matter how many named args are present.
+
+ * combine.c (subst): In IF_THEN_ELSE, canonicalize to put the (pc)
+ in the second operand if we can reverse the comparison.
+ (significant_bits): Support TRUNCATE and SIGN_EXTEND.
+
+ * tm-romp.h (CC_UNSIGNED): New flag for cc_status.
+ * out-romp.c (update_cc, case CC_COMPARE): Record the operands of the
+ compare and mark whether the test will be signed or unsigned.
+ (restore_compare_p): New function.
+ * romp.md (conditional branch and return patterns): Use new
+ restore_compare_p to see if we need to tell final to reinclude
+ deleted compare insn.
+
+ * output.h (const_int_operand): Define.
+ * recog.c (const_int_operand): New function.
+ * out-a29k.c, out-romp.c, out-rs6000.c (const_int_operand): Remove from
+ these.
+
+ * tree.c (rtl_in_saveable_obstack): New function.
+ * varasm.c (immed_double_const, immed_real_const_1): Ensure that things
+ that get placed on the chain are always put into saveable_obstack.
+
+Tue Mar 19 17:21:30 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * stddef.h (wchar_t): New typedef.
+
+ * out-sparc.c (output_block_move): Handle NO_UNDERSCORES syntax.
+
+ * tm-pbd.h, xm-pbd.h: New files.
+
+ * toplev.c (report_error_function): Don't crash if between functions.
+
+Tue Mar 19 12:58:13 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * sched.c (memrefs_conflict_p): C was being used as offset for X,
+ not for Y. Flipping + and - in offset uses cleared up this problem.
+ ({true,anti,output}_dependence): Add declaration for INSN.
+ (order_calls): Interface changed; now returns void. All callers
+ changed.
+ (sched_analyze_{1,2}): Make dependence between calls and
+ call-clobbered registers explicit.
+ (sched_analyze): Track last_function_call_not_const.
+ (sched_note_set): New parameter DEATH says whether X is marked for
+ death. Also, look through SUBREGs and extractions.
+ (rank_for_schedule): Stabilize for qsort.
+ (attach_deaths): We should not end up with more REG_DEAD notes than
+ we started with, so abort if we run out early.
+ (attach_deaths_insn): Handle more complicated cases of registers
+ dying in insns.
+ (unlink_notes): Work from back-to-front instead of front-to-back.
+ (new_sometimes_live): Fix code that looks for an element already in
+ the table.
+ (schedule_block): New variable TAIL_PRIORITY used to help determine
+ max IPC of scheduled code. Also, for now we analyze (schedule) all
+ blocks, even ones which won't benfit from scheduling. This is
+ necessary to keep register live info correct, but has the
+ disadvantage of screwing *all* debug info, not just for the blocks
+ that were scheduled.
+ (update_links): Fix complicated code that was to be a simple
+ head-cons to be a simple head-cons.
+ (schedule_insns): Update REG_LIVE_LENGTH and REG_N_CALLS_CROSSED
+ after scheduling.
+
+ * sparc.md (cmpdf): Define an expand pattern for this. (Dropped by
+ mistake when converted from old-style to new-style condition codes).
+
+ * out-sparc.c (singlemove_string): Catch case where `sethi' can be
+ used instead of `mov'.
+
+ * gcc.texinfo (Optimize Options): Add documentation about the
+ `-finline' option (actually, the `-fno-inline' option).
+
+ * out-sparc.c (output_block_move): Use `rtx_alloc' instead of
+ `gen_rtx' to cons a CONST_INT whose INTVAL we can change.
+
+ * toplev.c (main): Recognize all -O strings (i.e. -O3, -O69), not
+ just -O and -O2.
+
+Mon Mar 18 22:30:21 1991 Richard Stallman (rms@mole.ai.mit.edu)
+
+ * expr.c (expand_expr): For TRUTH_ANDIF_EXPR, don't use hard target
+ if not optimizing.
+
+ * combine.c: Fix some comments; reorder the variable declarations.
+
+Mon Mar 18 12:07:03 1991 Matthew Self (mself@next.com)
+
+ * tm-next.h (WORD_SWITCH_TAKES_ARG): Return number of args taken.
+
+ * tm-next.h (CPLUSPLUS): Deleted (obsolete).
+
+ * out-next.c (flag_no_mach_text_sections, handle_pragma):
+ Handle #pragma CC_NO_MACH_TEXT_SECTIONS.
+
+Mon Mar 18 12:12:13 1991 Richard Stallman (rms at goldman)
+
+ * cplus-pt.c: Renamed from cplus-template.c.
+ * Makefile.in (cplus-pt.o): New target.
+
+ * c-typeck.c (initializer_constant_valid_p):
+ Allow casts that change width only for explicit values.
+ * tree.c (really_constant_p): New function.
+ * expr.c (expand_expr): Handle MINUS_EXPR with EXPAND_SUM.
+
+ * tm-m68k.h (FUNCTION_EXTRA_EPILOGUE): Don't normally define this.
+ * out-m68k.c (use_return_insn): Don't look at FUNCTION_EXTRA_EPILOGUE.
+
+ * out-sparc.c (normal_comp_operator): Replace comparison_code_p.
+
+Sun Mar 17 22:53:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * m68k.md: Delete patterns now converted by combine to simpler
+ patterns or otherwise obsolete. Specifically: ZERO_EXTRACT from
+ an HImode object, setting cc0 to SUBREG or AND, umulhi3, umulsi3,
+ AND of a ZERO_EXTRACT, shifts of 24 and 16 from MEM, and patterns with
+ constants as first operand of comparison operator.
+ Remove COMPARE except as a SET_SRC.
+
+ * alliant.md, tahoe.md, rs6000.md: Remove COMPARE except as a SET_SRC.
+
+ * flags.h (flag_combine_regs): Deleted.
+ * toplev.c: Likewise.
+ * tm-a29k.h, tm-romp.h, tm-rs6000.h (OVERRIDE_OPTIONS): No longer
+ turn on flag_combine_regs.
+
+ * tm-romp.h, tm-rs6000.h (SLOW_BYTE_ACCESS): Set to 1.
+
+ * Makefile.in (combine.o): Include insn-codes.h and insn-attr.h.
+
+ * combine.c: Major rework to support many more simplifications in
+ a more regular manner and support combining three insns into two.
+ The most significant changes are the following:
+ (subst): Remove simplifications involving ZERO_EXTRACT, SIGN_EXTRACT,
+ ZERO_EXTEND, SIGN_EXTEND, AND, and shifts.
+ Call new routines below; in the case of comparisons, handle call
+ find_next_use if we need to change the comparison code or the
+ particular MODE_CC mode required.
+ No need to ever change ASHIFT to MULT here.
+ (expand_compound_operation): New function to convert
+ {ZERO,SIGN}_{EXTRACT,EXTEND} into the appropriate pair of shifts.
+ (make_compound_operation): New function to make
+ {ZERO,SIGN}_{EXTRACT,EXTEND} operations from shifts and ANDs.
+ If we are on a machine (like a Vax) that has only arithmetic shifts,
+ convert logical to arithmetic shifts when it doesn't matter
+ which shift is used (simplify_shift_const canonicalizes to
+ logical shifts).
+ If inside an address, convert ASHIFT to MULT.
+ (significant_bits): New function to determine which bits of
+ a value are known to be zero.
+ (simplify_and_const_int): Use significant_bits.
+ Call expand_compound_operation when required.
+ Handle AND of an ASHIFTRT with a constant.
+ Don't make ZERO_{EXTEND,EXTRACT} here.
+ (simplify_shift_const): New function to simplify a shift of an
+ an object by a constant integer.
+ (gen_lowpart_for_combine): When applied to a comparison operator,
+ return comparison operator in requested mode.
+ (simplify_set_cc0_and): Deleted.
+ (try_combine): No longer call simplify_set_cc0_and.
+ (reversible_comparison_p): New function.
+ (simplify_comparison): New function.
+
+ (combine_instructions): Allocate and initialize new vars
+ reg_last_set_{table_tick,label,invalid}.
+ (update_table_tick, record_value_for_reg): New functions.
+ (get_last_value_validate, get_last_value): New functions.
+ (record_dead_and_set_regs): Call record_value_for_reg.
+
+ (find_split_point): New function to locate a place where a complex
+ pattern can be split into two insns.
+ (try_combine): If we are combining three insns and can't recognize the
+ new pattern, try to split it.
+ Call new functions below to update insn status.
+ Return insn at which to continue scan.
+ (adjacent_insns_p, add_links, remove_links): Deleted.
+ (add_incs, add_no_conflicts, remove_death, move_deaths_2): Deleted.
+ (move_deaths): Generalize to include movements in both directions.
+ Update reg_first_use when we make an earlier use.
+ (distribute_notes, distribute_links): New functions.
+ (combine_instructions): No longer need check for LOG_LINKS
+ pointing at a NOTE.
+ Rescan from location indicated by try_combine, if any, when
+ combining three insns.
+ Update reg_first_use if we moved a use to a later insn.
+
+ (try_distrib): Deleted.
+ (apply_distributive_law): New function, contains code from old
+ try_distrib.
+ (subst): Call apply_distributive_law for applicable operations.
+ Try to apply associative law.
+ (combine_instructions): No longer call try_distrib.
+ (dump_combine_stats, dump_combine_total_stats, combine_instructions):
+ No longer count distributer statistics.
+
+ (can_combine_p): New function to see if I2 or I1 is combinable.
+ Be more precise about when we can combine insns involving cc0.
+ Eliminate -fcombine-regs; always do it.
+ (try_combine):
+ Call can_combine_p to validate I2 and I1.
+ If -fexpensive-optimizations, try to simplify I1 or I2.
+ Handle (set (foo) (const_int 0)) followed by a STRICT_LOW_PART
+ assignment to FOO as a ZERO_EXTEND.
+ (subst): Quit very early if X is a root node (like PC0).
+ Remove most canonicalizations done in first switch statement; now
+ done elsewhere.
+ Call simplify_{unary,binary,ternary}_operation.
+ Add cases involving logical and arithmetic operations applied
+ to comparison operators or values with only one significant bit.
+ Add more cases involving ABS since comparisons returning values
+ can be done with ABS.
+ Avoid generating (const (const ...) ...).
+ Convert (xmult (x_extend ...) ...) to a widening multiply.
+
+ (gen_rtx_combine): New function to search for an operation in
+ undobuf. Many callers to gen_rtx changed to call this function.
+ (copy_substitutions): Only copy a substitution if it was placed into
+ more than one location.
+
+Sun Mar 17 17:26:09 1991 Richard Stallman (rms@mole.ai.mit.edu)
+
+ * c-common.c (shorten_compare): Warn for (unsigned char) == -1.
+
+ * final.c (final_scan_insn): Set debug_insn before first output.
+ (output_asm_insn): Clear it here.
+
+ * expr.c (do_jump): Don't try to split non-integers.
+
+ * fixincludes (dnetdb.h): Fix missing semi in nodeent.
+ (rusers.h): Code to fix this file was duplicated.
+
+ * toplev.c (decl_printable_name): Now given an extra arg.
+ (decl_name): Accept that arg.
+ (announce_function, report_error_function): Pass that arg.
+ (error_with_decl, warning_with_decl): Likewise.
+
+ * dbxout.c (getwd) [USG]: Define as macro.
+
+ * c-decl.c (init_decl_processing): Indicate byte alignment for void.
+
+ * expr.c (do_jump_by_parts_*): Compute nwords from compare arg.
+ Pass 0 as size and alignment to compare_from_rtx.
+ (do_jump_by_parts_greater): Compare high word first.
+ Handle unsigned compares properly.
+ Fix logic for dropping through versus failing.
+
+ * expr.c (expand_builtin): Change cmpstrsi4 to cmpstrsi as in optabs.c.
+
+ * c-common.c (truthvalue_conversion): Handle ptr vs int in MINUS_EXPR.
+
+Sun Mar 17 15:43:48 1991 Matthew Self (mself@next.com)
+
+ Allow multiple return points in some framless functions (2/2/91):
+
+ * m68k.md (return): New insn pattern for rts (and rtd).
+
+ * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE,
+ USE_RETURN_INSN): Call new functions to avoid giant macros
+ which are hard to edit.
+
+ * out-m68k.c (output_function_prologue,
+ output_function_epilogue): New functions.
+
+ * out-m68k.c (use_return_insn): New function. Determines
+ whether the epilogue will consist of a single insn. Some
+ code was duplicated from output_function_epilogue. There
+ should be probably a new layout routine to do this common
+ work. Also #include "flags.h".
+
+ *out-m68k.c (output_function_epilogue): Don't output
+ anything if the epilogue was output as RTL. We detect this
+ by the barrier insn which is always placed after a return
+ insn. This machine-independent test should probably be moved
+ back into final.c and removed from out-sparc.c and out-m88k.c.
+
+ * out-next.c: Don't #include "flags.h".
+
+Sun Mar 17 00:07:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genemit.c (gen_exp): Support constm1_rtx.
+ * genrecog.c (add_to_sequence): Likewise.
+
+Sat Mar 16 17:26:58 1991 Richard Stallman (rms@mole.ai.mit.edu)
+
+ * c-lang.c (maybe_building_objc_message_expr): New dummy function.
+ * c-typeck.c (warn_for_assignment): Use it.
+
+ * toplev.c (compile_file): Write out all static consts that are used.
+
+Sat Mar 16 14:08:12 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * integrate.c (subst_constants): Don't replace registers in USE or
+ CLOBBER expressions.
+
+ * genattrtab.c (main): Properly set up a default DEFINE_ASM_ATTRIBUTES.
+
+ * cse.c (cse_insn): Correctly check for a hash table element equal to
+ the destination of a SET.
+
+Fri Mar 15 16:55:32 1991 Ron Guilmette (rfg at pepper.ncd.com)
+
+ * Makefile.in (OBJS): Added dwarfout.o to list of things to be
+ built.
+
+ * Makefile.in (dwarfout.o): Added this rule.
+
+ * dwarfout.c (FT_*_long_long): Added default definitions for all of
+ these extended fundamental type codes to cater to plain vanilla
+ <dwarf.h> file which do not define codes for these fundamental types.
+
+ * dwarfout.c (TREE_UID): Added a local definition of this macro
+ because gcc v2 no longer provides a definition for it and because
+ dwarfout.c needs some way of getting a unique numeric code for each
+ type.
+
+ * dwarfout.c (CLASSTYPE_*): Added some local default definitions
+ for these macros in order to get around the fact that they are
+ currently defined only in cplus-tree.h (and rms wants dwarfout.c
+ to be language independent).
+
+ * dwarfout.c (BITFIELD_OFFSET_*): Added some local macros to help
+ compute various quantities relating to bitfield offsets.
+
+ * dwarfout.c (location_attribute): Changed code which outputs location
+ attributes for bitfield so that it uses gcc2 macros.
+
+ * dwarfout.c (byte_size_attribute): Changed code which outputs the
+ byte_size attribute so that it no longer uses the obsolete
+ DECL_SIZE_UNIT macro (from gcc1).
+
+ * dwarfout.c: Replaced all uses of the obsolete macro TREE_PACKED
+ to uses of the new gcc2 macro DECL_BIT_FIELD.
+
+ * dwarfout.c (deriv_list_attribute): Fixed typo "decl" => "type".
+
+ * dwarfout.c (output_dies_for_type): Replaced bogus reference to the
+ non-existant routine "output_member_function_type_die" with a proper
+ reference to the routine "output_subroutine_type_die".
+
+ * dwarfout.c (output_symbols_for_block): Fixed calling error which
+ was introduced by rms.
+
+ * dwarfout.c: Replaced all uses of the obsolete macro STMT_SUBBLOCKS
+ with uses of the new gcc2 macro BLOCK_SUBBLOCKS.
+
+ * dwarfout.c (output_symbol): Removed reference to TAG_DECL. The
+ use of TAG_DECLs was an early idea which didn't work out.
+
+ * dwarfout.c: (dwarfout_init): Changed name from dwarfout_initialize
+ because rms failed to do so when he changed the name in the call.
+
+Fri Mar 15 17:22:14 1991 Richard Stallman (rms@mole.ai.mit.edu)
+
+ * c-decl.c (pushdecl): Add `%s' to some error messages.
+
+ * sparc.md: Add extra assembler alternative in last change.
+
+ * cse.c (simplify_unary_operation, simplify_binary_operation):
+ Remove error checks that rejected SFmode.
+
+ * expr.c (get_pointer_alignment): Don't lose on casts from integer
+ to pointer.
+
+Fri Mar 15 07:57:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * c-decl.c (pushdecl): Fix typo in previous change.
+
+ * cse.c (simplify_{unary,binary}_operation): Fix usage of
+ REAL_VALUE_FROM_CONST_DOUBLE in recent change.
+
+Thu Mar 14 18:56:53 1991 Richard Stallman (rms@mole.ai.mit.edu)
+
+ * c-decl.c (pushdecl): Warn if mismatch with implicit decl.
+
+ * final.c (final_start_function): Handle NON_SAVING_SETJMP.
+ Include hard-reg-set.h.
+ * function.c (setjmp_protect, setjmp_protect_args): Likewise.
+ (expand_function_end): Call those if NON_SAVING_SETJMP.
+
+Thu Mar 14 14:40:45 1991 James Wilson (wilson at cygnus.com)
+
+ * reload1.c (order_regs_for_reload): When REG_ALLOC_ORDER is defined,
+ use that definition only to order regs, do not try to put call
+ used regs first. This eliminates the benefits of defining the macro
+ in the first place.
+
+ * real.h: New macros for real arithmetic, REAL_VALUE_FIX_TRUNCATE,
+ REAL_VALUE_UNSIGNED_FIX_TRUNCATE, REAL_VALUE_FIX,
+ REAL_VALUE_UNSIGNED_FIX.
+
+ * cse.c (simplify_unary_operation): Added code to simplify floating
+ point rtx. Now simplifies UNSIGNED_FLOAT, ABS, FLOAT_TRUNCATE,
+ FLOAT_EXTEND, FIX, and UNSIGNED_FIX. Add aborts to default case
+ of switches.
+ (simplify_binary_operation): Added code to simplify floating point
+ rtx. Now simplifies PLUS, MINUS, MULT, and DIV. Add aborts to
+ default case of switches.
+ (*): Always use REAL_VALUE_TYPE and REAL_VALUE_FROM_CONST_DOUBLE
+ when extracting a floating point number from a CONST_DOUBLE.
+
+Thu Mar 14 14:40:45 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * expr.c (get_pointer_alignment): Update ALIGN for NOP_EXPR.
+
+ * c-decl.c (builtin_function): New arg LIBRARY_NAME.
+ (initialize_decl_processing): Pass that argument.
+
+ * c-decl.c (grokdeclarator): Handle C_TYPE_FIELDS_VOLATILE.
+ (finish_struct): Likewise.
+ * c-tree.h (C_TYPE_FIELDS_VOLATILE): Define it.
+
+ * Makefile.in (gnulib1, gnulib2.portable): Test $$? after compilation.
+
+ * c-typeck.c (check_format): Discard multiple NOP_EXPR levels.
+
+ * objc-actions.c (build_message_expr, build_selector_expr,
+ build_encode_expr, get_class_ivars, start_class): Finding
+ Objective-C code in c source files is now a fatal error.
+ (They should recompile with -lang-objc.)
+
+ * objc-actions.c (gen_method_decl): Don't crash for syntax
+ error in method declaration: -bar: x, y
+ (encode_array): Treat an undimensioned array the same as a pointer.
+
+Thu Mar 14 07:39:30 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (try_merge_delay_insns): Previous fix had effect of
+ disabling this function. Rework to take into account things
+ needed, instead of set. This is still somewhat of a kludge.
+
+ * recog.c (apply_change_group): An insn consisting of just a USE
+ or CLOBBER is always valid, but recog_memoized returns a -1 for it.
+
+ * genattrtab.c: Count all definitions as well as counting insns; use
+ definition # in error message.
+ Most functions that accepted insn_code now accept insn_index as well
+ and similarly for structures containing insn_code.
+
+ * reorg.c (try_merge_delay_insns): If not an annulling branch, take
+ into account things set in the delay slot. This prevents merging
+ two increments into one.
+
+ * reorg.c (dbr_schedule): Fix typo in printing statistics.
+
+Thu Mar 14 02:11:56 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * genemit.c, genoutput.c, genrecog.c: Count all definitions
+ as well as counting insns; use # of definition in error messages.
+
+ * toplev.c (pipe_closed, float_signal): Give it an explicit arg.
+ * cplus-decl.c (sigsegv): Likewise.
+ * cccp.c (pipe_closed): Likewise.
+
+ * cccp.c: Delete trigraph from comment.
+
+ * Makefile.in (realclean): Delete objc parser files.
+
+ * assert.h (__assert for __GNUC__): Don't return value of abort.
+
+Wed Mar 13 16:12:54 1991 Richard Stallman (rms at churchy.ai.mit.edu)
+
+ * expr.c (do_jump_by_parts_greater): Don't lose if labels are 0.
+
+ * cplus-edsel.c: New name for cplus-cadillac.c.
+ * Makefile.in (cplus-edsel.o): Fix the compilation rule.
+
+Wed Mar 13 06:47:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (mark_set_resources): Any registers mentioned in REG_INC
+ notes are set by an INSN.
+
+ * flags.h (flag_expensive_optimizations): Add new flag.
+ * toplev.c: Support -fexpensive-optimizations and turn on for -O2.
+ * stmt.c (preserve_subexpressions_p): Use flag_expensive_optimizations
+ instead of testing for -O2 explicitly.
+
+ * expr.h (operand_subword): Add missing declaration.
+
+ * reload1.c (eliminate_regs): Handle INSN_LIST (found in REG_NOTES).
+
+ * tm-i386.h (RETURN_POPS_ARGS): Don't call aggregate_type_p with
+ IDENTIFIER_NODE.
+
+Wed Mar 13 00:00:29 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * optabs.c (expand_binop, expand_unop): If wordwise, make target non0.
+
+Tue Mar 12 15:24:09 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * fixincludes: Quote the # in an echo.
+ * fixincludes: Fix typos handling size_t and ptrdiff_t.
+ * fixincludes (sys/file.h): Fix incorrect conditional in Ultrix.
+
+ * c-typeck.c (initializer_constant_valid_p): Allow NON_LVALUE_EXPR.
+ Return a tree that indicates the relocation.
+ All callers changed.
+
+ * jump.c (jump_optimize): Rerecognize jump insn after inverting it.
+
+ * expr.c (do_jump):
+ Use can_compare_p on the operand mode, not the comparison's mode.
+
+ * reload.c (subst_reloads): Fix dumb error in last change.
+
+ * expr.c (do_jump_by_parts_equality*): Fix logic errors.
+
+Mon Mar 11 14:27:40 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * reload.c (subst_reloads): Don't make subregs, just new regs.
+
+ * expr.c (do_jump_by_parts_equality, do_jump_by_parts_greater):
+ (do_jump_for_compare, do_jump_by_parts_equality_rtx): New functions.
+ (do_jump): Use them to handle wide values.
+ * optabs.c (can_compare_p): New function.
+
+ * reload1.c (emit_reload_insns): Don't make subreg around RELOADREG;
+ just make a new REG.
+
+ * cse.c, varasm.c: Fix typos.
+
+ * sparc.md (move SI to reg_or_nonsymb_mem_operand):
+ Separate third alternative into two alternatives.
+ * tm-sparc.h (PREFERRED_RELOAD_CLASS): Return CLASS as given.
+
+ * optabs.c (operand_subword): Fix typo.
+
+ * longlong.h (__umulsidi3): Return .ll field.
+
+Mon Mar 11 11:43:21 1991 Jeffrey A. Law (law at mole.ai.mit.edu)
+
+ * make-hp9k2bsd: New file.
+ * configure (hp9k200-bsd): Use it.
+
+Mon Mar 11 07:08:12 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-lex.c (check_newline): Clear TREE_INT_CST_HIGH once instead
+ of clearing TREE_INT_CST_LOW twice.
+
+Mon Mar 11 06:51:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * flow.c (mark_used_regs): If we are going to use a later
+ register to auto-increment, make sure it really is a REG.
+ In the case above, count any calls crossed by the new register.
+
+ * global-alloc.c (global_conflicts): Mark registers modified by
+ virtue of a REG_INC note as modified in the insn to make conflicts.
+ (mark_reg_store): Accept SETTER value of 0.
+
+Sun Mar 10 16:56:25 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * optabs.c (operand_subword): New function to get one word of operand.
+ (expand_binop, expand_unop): Use it for word at a time case.
+
+ * configure (a29-bsd*): Renamed from a29-sysv*.
+
+ * expr.c (emit_library_call): Handle GNULIB_NEEDS_DOUBLE.
+ * tm-i860.h (GNULIB_NEEDS_DOUBLE): Define it.
+
+ * tm-harris.h (ASM_FILE_START): Output a .file.
+
+ * reload1.c (constraint_accepts_reg_p): Understand reg classes.
+
+Sun Mar 10 06:58:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (move_by_pieces, move_by_pieces_ninsns, emit_push_insn):
+ If SLOW_UNALIGNED_ACCESS is defined, respect alignment even if
+ STRICT_ALIGNMENT is not defined.
+ * tm-a29k.h (SLOW_UNALIGNED_ACCESS): Define this.
+
+Sun Mar 10 02:57:40 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * cccp.c (handle_directive): If pass_thru and -C, print the
+ input before removing comments from it.
+
+Sat Mar 9 21:18:48 1991 Torbjorn Granlund (tege at musta.nada.kth.se)
+
+ * gnulib2.c (div_qrnnd, __umulsidi3, lowpart, highpart, B): Move
+ to longlong.h.
+ (udiv_qrnnd): New name of div_qrnnd. Rewrite to work correctly.
+ (file header): Remove obsolete comment about internal format.
+ (bits): Remove this function. count_leading_zeros in longlong.h
+ is similar.
+ (__udivdi3): Use count_leading_zeros instead of bits.
+ (__udivdi3): Use umul_ppmm instead of __umulsidi3, as this makes
+ better code.
+
+Sat Mar 9 18:02:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Avoid looking at PATTERN of NOTE
+ or CODE_LABEL.
+
+ * reload1.c (reg_is_output_reload, count_for_*groups): Use
+ HARD_REG_SET instead of array to avoid bzero calls.
+ (reload_reg_used*): Likewise.
+
+ * emit-rtl.c (gen_rtx, init_emit_once): Pre-compute CONST_INTs
+ from -64 to 64 to save space.
+
+Sat Mar 9 14:28:37 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * reload1.c (choose_reload_regs): Fix typo in last change.
+
+Sat Mar 9 01:03:01 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (pushtag): Don't call `pushdecl' for nested type if
+ the type is already defined.
+
+Fri Mar 8 17:24:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * ns32k.md, vax.md (right shift patterns): When generating a right
+ shift, use xSHIFTRT but use (neg x) as the shift count to
+ more accurately represent what is supported by the machine.
+
+ * expmed.c (emit_store_flag): Can't narrow result of scc insn before
+ normalizing.
+
+Fri Mar 8 12:56:41 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-class.c (pushclass): Set CURRENT_FUNCTION_DECL to
+ appropriate value so that pushtag does the right thing for tags
+ pushed into scope.
+
+Fri Mar 8 02:47:53 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * gcc.c (delete_temp_files): Delete only ordinary files.
+
+ * tree.c, cplus-tree.c (TYPE_HASH): 777777 was supposed to be octal.
+
+ * reload1.c (choose_reload_regs): Properly ensure EQUIV
+ is free and of the desired class.
+ When a reload may be a group, mark all its regs in use.
+
+ * reload.c (push_reload): Don't call reg_overlap_mentioned_p
+ unless IN is a REG or MEM.
+
+ * c-common.c, cplus-search.c, cplus-class.c (NULL):
+ Undef before defining.
+
+ * sdbout.c (sdbout_one_type): Don't temporarily clear KNOWN_TYPE_TAG.
+
+Thu Mar 7 10:53:32 1991 Tom Wood (wood at dg-rtp.dg.com
+
+ * toplev.c (main): Add -dp: annotate the assembly with a comment
+ describing the pattern and alternative used. Also, make -dm work
+ for USG systems.
+ * genoutput.c (output_epilogue): Output the array `insn_name'.
+ * final.c (debug_insn, final_scan_insn): Record the value of the
+ last insn processed by final_scan_insn.
+ (output_asm_insn): Annotate the assembly output.
+ (ASM_COMMENT_START): Provide a default value.
+ * tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_COMMENT_START):
+ Specify "/".
+
+Thu Mar 7 06:15:04 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-class.c (propagate_basetype_offsets): Check ASSOC_TYPE in
+ addition to return value from assoc value before aborting. ???
+ should figure out why assocs are not shared.
+
+Wed Mar 6 16:29:37 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-decl.c (NULL): Undef before defining.
+
+ * cccp.c (do_include): Allocate file name permanently.
+
+Wed Mar 6 09:06:39 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (and/ashift): Added for the new combine.c (ashift/and
+ works with the previous version).
+ (bcnd insns): Use bcnd to test for sign and zero.
+ (muldf3, divdf3): Use new method to deal with a power of two.
+ (andsi3, iorsi3, xorsi3): Split into two insns for some constants.
+ (call, call_value): Deal properly with a CONST_INT address.
+ * out-m88k.c (call_address_operand): Don't allow CONST_INT.
+ (uses_arg_area_p): New function for -moptimize-arg-area.
+ * tm-m88k.h (TARGET_SWITCHES): Delete -mpic in favor of -fpic.
+ Add -moptimize-arg-area and -mno-optimize-arg-area.
+
+Wed Mar 6 00:07:09 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * real.h (REAL_VALUE_FROM_CONST_DOUBLE): Takes input and output args.
+ * integrate.c (copy_for_inline, copy_rtx_and_substitute):
+ (restore_constants): Calls changed.
+
+Tue Mar 5 23:06:36 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * stmt.c (fixup_gotos): Handle jumping to end of rtl.
+
+ * c-decl.c (store_parm_decls): If -traditional,
+ allow unsigned int in prototype in place of int.
+
+ * cplus-cadillac.c: Delete all but the stubs.
+
+Tue Mar 5 16:59:18 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Handle case of only NOTE insns after
+ NOTE_INSN_LOOP_BEG.
+ (duplicate_loop_exit_test): Return 0 when we hit a block
+ start or end, rather than quitting loop and getting confused.
+
+ * integrate.c (subst_constants): Correctly move constants to
+ second operand of commutative operations.
+
+ * jump.c (comparison_code_p): Deleted.
+ * combine.c (subst): Use GET_RTX_CLASS instead of comparison_code_p.
+ * cse.c (find_comparison_args): Likewise.
+ * recog.c (comparison_operator): Likewise.
+ * loop.c (get_condition): Likewise.
+
+Tue Mar 5 14:21:57 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * cse.c (fold_rtx): When checking for constant pool addresses,
+ handle addresses constructed from LO_SUM.
+
+ * recog.c (constrain_operands): If before reload, `m' and `o'
+ accept all that could be reloaded to fit those constraints.
+
+ * reload1.c (gen_input_reload): Return the first insn emitted by
+ this function, instead of the last insn emitted.
+
+ * stmt.c (expand_end_loop): When move exit test to loop bottom,
+ also move a preceeding NOTE_INSN_LOOP_CONT note if it exists.
+
+ * gcc.c (process_command): Check for running out of args after option.
+
+ * out-mips.c, out-romp.c: Test BYTES_BIG_ENDIAN with #if.
+ * tm-i860.h (*_BIG_ENDIAN): Define as 0.
+ * tm-mips-news.h (BYTES_BIG_ENDIAN, WORDS_BIG_ENDIAN): Deleted.
+ (DECSTATION): Deleted.
+
+ * tm-mips.h: Test WORDS_BIG_ENDIAN with #if.
+
+ * tm-mips.h, tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P):
+ Use CONST_DOUBLE_LOW and CONST_DOUBLE_HIGH.
+
+ * real.h: dconst0, dconst1, dconstm1 are declared twice.
+ Eliminate the second redundant declaration.
+
+ * cse.c (FIXED_REGNO_P): Exclude OVERLAPPING_REGNO_P registers.
+
+ * cccp.c (path_include): Handle empty names in path.
+
+ * final.c: Use gvarargs.h, not varargs.h
+
+ * configure (i860, i860-bsd): Handle +gas.
+ * tm-i860g.h, tm-i860bsdg.h: New files.
+
+Mon Mar 4 22:41:36 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * cse.c (simplify_unary_operation): When making a real const, use MODE.
+
+Mon Mar 4 21:35:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_end_of_basic_block): Correctly handle case where
+ we find a "new" branch to follow.
+ (cse_end_of_basic_block, cse_main, cse_basic_block): PATH_SIZE
+ is now actual size, not size - 1.
+
+Mon Mar 4 06:44:27 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (poplevel): Change test for whether to clobber the
+ DECL_CONTEXT of local variables. Now we won't clobber context for
+ any nested types.
+
+Mon Mar 4 00:39:11 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * jump.c (jump_optimize): When deleting x=y after y=x,
+ don't delete more than one death note, and don't delete any
+ unless we really do delete x=y.
+
+ * cccp.c (main): Support -lang-objc++.
+ Eliminate compilation parameter CPLUSPLUS.
+
+ * cccp.c (main): Handle leading or trailing space in `predefs'.
+
+ * fixincludes: Fix typos handling size_t and ptrdiff_t.
+
+Sun Mar 3 16:41:24 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * cccp.c (main): Handle multiple spaces, and tabs, in `predefs'.
+ * gcc.c (do_spec_1): Allow extra whitespace in CPP_PREDEFINES.
+ Also transform -Dfoo=bar into -D__foo__=bar correctly.
+
+ * varasm.c (assemble_zeros): Use ASM_BYTE if defined.
+
+ * reload1.c (reload): Only special-case a spill reg alone in a class
+ if there is non-group need for that class. Be careful not to count
+ a reg in the usual place if it was counted in the special case.
+
+ * reload1.c (order_regs_for_reload): Make fixed regs and
+ eliminable regs twice as bad as explicitly mentioned regs.
+
+ * reload1.c (choose_reload_regs): Fix typos in last change.
+
+ * c-decl.c (init_decl_processing):
+ Return type of memcpy varies if -traditional.
+ (ptr_ftype_ptr_cptr_sizet): Global var deleted.
+
+ * reload1.c (emit_reload_insns): When updating reg_reloaded_contents,
+ first always clear, then maybe store nonzero value.
+
+Sun Mar 3 16:12:17 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-template.c (mangle_class_name_for_template): Add two
+ leading underscores, to avoid conflicts with programmer's names.
+
+ * cplus-tree.h (struct lang_identifier): New field `template'
+ points to template info from which this identifier was
+ constructed.
+
+ * cplus-template.c (current_template_expansion,
+ current_template_name): Variables deleted.
+
+ * cplus-template.c (lookup_template_class): Top half of old
+ instantiate_template; returns the id_node.
+ (instantiate_template): Takes the id_node as argument now.
+ * cplus-parse.y (template rules): Use separate rule for checking
+ whether expansion is required. For base classes, always try it;
+ else do it only if `{' is not next token.
+ (template_type_name): New nonterminal for template class name
+ without expansion.
+ (template_type): Includes expansion, if needed.
+
+ * cplus-input.c (input_from_saved_text): Deleted.
+ * cplus-template.c (instantiate_template): Call feed_input directly.
+
+ * cplus-parse.y (base_class_visibility_list): Now type <itype>,
+ cast to tree in base_class action.
+
+Sun Mar 3 07:46:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (do_store_flag): Consider A & single-bit as cheap.
+
+ * fold-const.c (operand_equal_p): If ARG0 and ARG1 are the same
+ SAVE_EXPR, they are equal.
+
+ * function.c (fixup_var_refs_1): Move mispositioned code in
+ (set (zero_extract ...) ...) case; fix incorrect indentation.
+
+Sun Mar 3 01:11:46 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * cccp.c (include_defaults, cplusplus_include_defaults):
+ Use STANDARD_INCLUDE_DIR.
+ (STANDARD_INCLUDE_DIR): Define by default as /use/include.
+ * tm-mips.h (STANDARD_INCLUDE_DIR): Define, if MIPS_BSD43.
+ (CPP_SPEC): Don't do -I to handle -ZSYSV, -ZBSD43.
+
+Sat Mar 2 17:20:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case COND_EXPR): Remove unneeded calls to
+ safe_from_p in A ? A : FOO cases.
+
+Sat Mar 2 16:14:24 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * reload1.c (choose_reload_regs): Support subreg as reload_override_in.
+ Likewise reload_reg_rtx. Just don't use REGNO on them.
+ (emit_reload_insns): Handle subreg as OLDEQUIV.
+
+ * reload1.c (delete_output_reload): Pass the output reload insn,
+ not a spill reg index. Call in emit_reload_insns changed.
+ (emit_reload_insns): Don't actually update spill_reg_store
+ till after all reload insns have been made.
+
+ * reload.c (push_reload): If existing reload has a reload reg,
+ make sure it fits the class of this reload.
+
+ * stmt.c (fixup_gotos): Fix typo in last change.
+
+ * reload1.c (choose_reload_regs): Don't use equiv reg
+ that is clobbered in this insn.
+
+Sat Mar 2 12:19:19 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-dem.c (optable): Add op for `operator,'.
+
+ * toplev.c (main): Clear WARN_INLINE if FLAG_NO_INLINE is nonzero.
+
+ * cplus-typeck.c (c_expand_return): Perform conversion to reference
+ in time that we can warn about the return of more non-lvalues.
+ Also, fix what appeared to be bugs in the code dealing with
+ WHATS_RETURNED.
+
+Sat Mar 2 00:11:18 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-parse.y (base_class): Base class may be a template class.
+ Split off non-visibility portion into base_class.1.
+
+ * cplus-parse.y: Replaced PUBLIC, PRIVATE, PROTECTED with a single
+ terminal VISSPEC, with <itype> value, to simplify parser slightly.
+ * cplus-parse.h (enum rid): Added values for VISSPEC terminal.
+ * cplus-lex.c (is_reserved_word): Changed token types to VISSPEC,
+ rid values as appropriate.
+ (yylex): For VISSPEC, set itype value rather than ttype.
+
+Fri Mar 1 21:50:23 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-parse.y (.set_base_init): Discarded `preserve' code, which
+ was doing nothing.
+
+Fri Mar 1 19:01:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (redundant_insn_p): Rename second arg to TARGET.
+ Handle the case where TARGET is a SEQUENCE.
+ (mark_target_live_regs): Don't get confused by registers conditionally
+ set in a JUMP_INSN when looking for regs set before used.
+
+Thu Feb 28 17:25:59 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (check_dbra_loop): Replace code that thinks it knows
+ exactly what the RTL looks like (and gets it wrong) with call
+ to get_condition_for_loop.
+
+Thu Feb 28 16:35:21 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-typeck.c (build_compound_expr): Convert array to pointer.
+
+Wed Feb 27 15:46:54 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * gnulib1.c (FLOAT_ARG_TYPE, FLOATIFY): New macros.
+ (__*sf*): Use them for `float' args.
+
+ * stmt.c (expand_end_case):
+ Test value of HAVE_casesi and HAVE_tablejump at runtime.
+
+ * stmt.c (fixup_gotos): Check that jump into bindings
+ really comes from before the start of the bindings.
+ Use TREE_REGDECL to indicate error message printed.
+
+Wed Feb 27 15:01:51 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-template.c (end_template_decl): Store correct name in new
+ decl. Use pushdecl, not pushtag.
+ (instantiate_template): Use identifier's global value, not its
+ type. Pass back both template and new class in token value.
+ * cplus-lex.c (identifier_type): Templates now have type
+ TEMPLATE_DECL, not TYPE_DECL wrapped around a TEMPLATE_DECL.
+
+Wed Feb 27 06:27:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (replace_regs): Don't make nested SUBREGs.
+
+ * reload.c (push_reload): SUBREG_LOC applies only to INLOC, not OUTLOC.
+
+ * cse.c (simplify_binary_operation): Simplify A&A, A|A, and A^A.
+
+ * reload.c (find_reloads_address_1): Correctly handle (post_inc (mem)).
+
+Tue Feb 26 21:49:15 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * expmed.c (store_bit_field, extract_bit_field): Calls to
+ get_best_mode were passing alignment in bytes rather than
+ alignment in bits.
+
+ * flags.h (flag_pedantic_errors): Declare it.
+
+ * c-tree.h (C_TYPEDEF_EXPLICITLY_SIGNED): New flag.
+ * c-decl.c (grokdeclarator): Record that flag in new typedefs.
+ Check it when determining signedness of bitfields.
+
+ * expr.c (expand_expr): In A ? A : B, make output safe from A and B.
+
+ * reload.c (find_reloads_address, find_reloads_address_1):
+ Reload any reg that appears in a clobber in the same insn.
+ (regno_clobbered_p): New function.
+
+Tue Feb 26 21:41:43 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * expr.c (expand_expr): Add missing arg to exapnd_exit_loop in
+ EXIT_EXPR case.
+
+Tue Feb 26 14:35:47 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-decl.c (grokdeclarator): Check pedantic error last.
+
+ * tm-i386.h (STRUCT_VALUE, STRUCT_VALUE_INCOMING): Value is 0.
+ (RETURN_POPS_ARGS): Pop the structure return pointer here.
+ * out-i386.c (function_epilogue):
+ current_function_pops_args says how many args to pop.
+
+ * tm-i386.h (CC_Z_IN_NOT_C): New cc flag.
+ * i386.md (je and jne patterns): Handle this flag.
+ (pattern using bt insns): Set the flag.
+ Output test insn instead if bit number is constant.
+ (insv): Changed constraint.
+
+ * tm-i386.h (enum reg_class): Define ABCI_REGS.
+ (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Support ABCI_REGS.
+ Fix the contents for ABC_REGS.
+ (REG_CLASS_FROM_LETTER): Define `x' for ABCI_REGS.
+ * i386.md (divsi3, udivsi3): Use `xm' for operand 2 constraint.
+ (divhi3, udivhi3, divmod*, udivmod*): Likewise.
+
+ * cccp.c (pedwarn): Declare as void.
+
+Tue Feb 26 06:41:34 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * tree.h (IDENTIFIER_VIRTUAL_P): New macro for IDENTIFIER_NODE.
+ Nonzero means that this identifier is used by a function declared
+ virtual.
+ * cplus-decl.c (grokfndecl): Set IDENTIFIER_VIRTUAL_P instead of
+ DECL_VIRTUAL_P.
+ * cplus-search.c (get_first_matching_virtual): Test
+ IDENTIFIER_VIRTUAL_P instead of DECL_VIRTUAL_P.
+
+ * cplus-decl.c (pushtag): Handle classes which are nested in
+ function scope (as opposed to class scope).
+ (lookup_nested_type): Ditto.
+ * cplus-method.c (build_overload_nested_name): Ditto.
+
+ * cplus-decl.c (grokdeclarator): Only globalize non-nested classes
+ declared in class scope (i.e., don't globalize in function scope).
+
+Tue Feb 26 06:11:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.md (storem): Fix typo in operand number.
+
+ * expr.c (do_store_flag): Add missing cast required for some compilers.
+
+ * tm-a29k.h (REG_CLASS_*, REGNO_REG_CLASS): Add new class Q_REGS
+ and constraint letter `q' for the Q register. Requested by tege.
+
+ * tm-a29k.h (PRINT_OPERAND_ADDRESS): Allow short constant as address.
+
+Mon Feb 25 20:46:43 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * expr.c (expand_expr): In handling A : A ? FOO, use safe_from_p
+ against FOO. Fix many incorrect operand refs in A : FOO ? A.
+
+ * sdbout.c (plain_type_1): Record type name only if using forward refs.
+
+ * reload.c (find_reloads): Mark those RELOAD_OTHER reloads
+ that are used for output addresses, for choose_reload_regs.
+
+ * integrate.c (copy_rtx_and_substitute):
+ Copy REG_USERVAR_P from original regs to new regs.
+
+ * c-typeck.c (digest_init): Handle STRING_CST before same-type case.
+
+Mon Feb 25 13:31:51 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (grokdeclarator): Handle the identification of
+ constructors declared in nested scope.
+
+Mon Feb 25 06:27:28 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (next_insn_no_annul): New function.
+ (mark_set_resources, mark_target_live_regs): Don't count insns from
+ the target of a branch if the branch is annulling.
+
+ * expmed.c (emit_store_flag): Get new register for target if
+ preserve_subexpressions_p returns nonzero.
+ Convert to desired mode, then normalize, instead of doing it
+ the other way around; this allows better combining.
+
+Sun Feb 24 20:07:02 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (find_comparison_args): Fix indentation and misplaced paren.
+
+ * Makefile.in (install-headers): Remove extraneous parens from
+ uses of shelllibsubdir.
+
+Sun Feb 24 15:49:42 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * loop.c (check_dbra_loop): Win if loop biv is used only for counting.
+
+ * cccp.c (struct definition): Record file and line.
+ (create_definition): Store that information.
+ (do_define): Identify location of previous definition.
+ (pedwarn_with_file_and_line): New function.
+
+Sat Feb 23 13:36:13 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-decl.c (grokdeclarator): Error for `signed void', etc.
+ Warning for `signed my_int', and only if pedantic.
+
+ * toplev.c (warn_cast_align): New flag, with -W option.
+ * c-typeck.c (build_c_cast): Warn if target alignment increases.
+
+Sat Feb 23 10:22:03 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-type2.c (store_init_value): Global variables must be
+ specially initialized in PIC under SunOS.
+
+ * cplus-dbxout.c (dbxout_tags): Test that the tag's value has not
+ been cleared before trying to use it as a type. This happens when a
+ class starts out looking like a nested class, but turns out to be a
+ reference to an implicitly defined global class.
+
+Sat Feb 23 06:16:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (true_regnum): If given a pseudo not assigned a hard reg,
+ return the pseudo register number.
+
+ * out-rs6000.c (update_cc): Remove CC_REVERSE and CC_NONNEG.
+ * rs6000.md (define_attr "cc"): Remove reverse.
+ (cmpsi): Only allow second arg to be a constant.
+ Remove some unneeded comparison patterns.
+
+ * rs6000.md (misc logical patterns): Only add CLOBBER for MQ
+ when we really clobber it; we used to do so in more cases to
+ work around a since-fixed restriction in combine.c
+
+ * rs6000.md (extend*): Use DEFINE_EXPAND instead of a pattern
+ that generates two insns. Remove (sign_extend (ashift ..) ...)
+ and similar patterns; no longer neeed.
+
+ * rs6000.md (fma instruction): Add missing single-precision case.
+
+ * out-rs6000.c (print_operand, case 's' and 'S'): Truncate to low-order
+ 5 bits.
+
+ * out-rs6000.c (output_prolog, output_epilog): Correct code to handle
+ large stack frames; used 65535 instead of 32767 and had a typo.
+
+ * tm-romp.h (CC_IN_NOT_TB): Deleted.
+ * out-romp.c (update_cc): No longer need CC_REVERSE, CC_NONNEG, or
+ CC_NOTTBIT.
+ (print_operand): Remove use of CC_IN_NOT_TB.
+ * romp.md (define_attr "cc"): Remove reverse,nonneg, and nottbit.
+ (mttbi): Remove redundant pattern.
+ (cmpsi): First arg can only be register_operand.
+ Remove some unneeded COMPARE patterns.
+
+ * romp.md (movhi): Use zero-extend, not sign-extend load.
+
+ * out-romp.c: (float_conversion): Allow CONST_INT as operand.
+
+ * out-romp.c (first_reg_to_save): Ensure we save r14 if we use it.
+
+ * a29k.md (divsf3): Fix typo in name; was divds3.
+
+ * tm-a29k.h: Add new -mno-storem-bug and TARGET_NO_STOREM_BUG.
+ (TARGET_SWITCHES): -m29050 turns on -mno-storem-bug.
+ * a29k.md: (store_multiple_bug): New pattern to work around chip bug.
+ (store_multiple_no_bug): New name for original pattern.
+ (store_multiple): Choose depending on TARGET_NO_STOREM_BUG.
+ (storem patterns): Two cases, with and without bug.
+
+ * a29k.md (extend*): Don't define single insn for sign_extend.
+ Instead, use DEFINE_EXPAND. Delete DEFINE_SPLITs for the old patterns.
+
+ * a29k.md (jumpfdec pattern): Fix typo.
+
+ * tm-a29k.h, tm-romp.h, tm-rs6000.h (CC1_SPEC): Remove optimization
+ selections.
+ (OPTIMIZATION_OPTIONS): Turn off insn scheduling by default until
+ it is fixed.
+
+ * tm-a29k.h, tm-romp.h, tm-rs6000.h (SETUP_INCOMING_VARARGS):
+ Correctly handle the case of the special argument being other than
+ the first arg.
+
+ * tm-a29k.h (GO_IF_LEGITIMATE_ADDRESS): A tiny constant (< 255)
+ is also a valid address.
+
+ * tm-a29k.h, tm-romp.h, tm-rs6000.h (BYTE_LOADS_ZERO_EXTEND): Add to
+ support combine.c in development.
+
+ * jump.c (jump_optimize, can_reverse_comparison_p, delete_jump):
+ Consistently allow NOTEs between the set and use of CC0.
+ * reorg.c (delete_scheduled_jump): Likewise.
+
+ * expmed.c (emit_store_flag): Pass in UNSIGNEDP; can't derive it from
+ comparison code.
+ * expr.c (do_store_flag): Add UNSIGNEDP arg to emit_store_flag call.
+ * jump.c (jump_optimize): Likewise.
+ * optabs.c (expand_binop): Likewise.
+
+ * local-alloc.c (requires_inout_p): New function.
+ (block_alloc): Use high-priority preferences if we have a hard
+ register used in an insn that requires the same register for
+ input as for the output.
+ (combine_regs): Rename argument COPY to MAY_SAVE_COPY.
+
+ * cse.c (simplify_binary_operation, case MULT): Convert multiply
+ by power of two to shift.
+ (cse_insn): Don't share rtx obtained from the hash table; copy it.
+
+Sat Feb 23 00:27:26 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * rtlanal.c (dead_or_set_p): Don't check for REG_INC.
+
+ * reload.c (push_reload): (subreg:m1 (reg:m2 ...) ...) with M1 wider
+ than M2 is also a paradoxical SUBREG.
+
+Fri Feb 22 14:43:44 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * reload1.c (possible_group_p): Add missing forward declaration.
+
+ * reload1.c (eliminate_regs, case PLUS): Ensure we handle the
+ case of (plus reg1 reg2) where REG1 is eliminable and REG2 is
+ psuedo that didn't get a hard reg and has reg_equiv_constant nonzero.
+ (choose_reload_regs): If reload_needed_for_multiple,
+ the reload can't be input-only or output-only.
+ (emit_reload_regs): Avoid regno_dead_p.
+ * combine.c (regno_dead_p): Function deleted.
+
+ * Makefile.in (maketest): Finish renaming config to configure.
+
+ * gcc.c (lookup_compiler): Create a new entry to represent
+ the result of searching for an alias entry.
+
+ * reload.c (combine_reloads): Swap args to reg_overlap_mentioned_p.
+
+Fri Feb 22 09:40:50 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-parse.y (base_class_list): Re-fix precedence so we can use MI.
+
+ * cplus-except.c (init_exception_processing): Push exception ctors
+ and dtors into scope so they can be inlined.
+
+Fri Feb 22 08:03:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genemit.c (output_init_mov_optab): New function.
+ (main): Have insn-emit.c include insn-codes.h.
+ Call output_init_mov_optab.
+ * optabs.c (gen_move_insn): Handle moving MODE_CC modes; we may have
+ to find a different mode to do this in.
+ (init_optabs): Try to initialize CCmode in mov_optab; if we have
+ EXTRA_CC_MODES, call init_mov_optab.
+ * Makefile.in (insn-emit.o): Now depends on insn-codes.h.
+
+ * rtl.h (get_last_insn_anywhere): Add missing declaration.
+
+ * stmt.c: Now includes hard-reg-set.h (for n_non_fixed_regs).
+ (preserve_subexpressions_p): Renamed from inside_loop.
+ Always return true if optimize >= 2; always return false if
+ optimize == 0. If optimize == 1, only return true if we aren't
+ very far into a loop instead of whenever we are in any loop.
+ * Makefile.in (stmt.o): Now includes hard-reg-set.h.
+ * expr.c (expand_expr): Use preserve_subexpressions_p instead of
+ inside_loop.
+ Only set TARGET to SUBTARGET if TARGET isn't a pseudo register.
+ (expand_expr, case REAL_CST): Don't call force_reg; now done in
+ expand_binop, if required.
+ * optabs.c (expand_binop, expand_twoval_binop, emit_cmp_insn):
+ If arg is expensive constant and preserve_subexpressions_p is true,
+ force it into a register.
+ * out-sparc.c (emit_move_sequence): Call preserve_subexpressions_p
+ instead of inside_loop.
+
+ * reload1.c (eliminate_regs, case SUBREG): Correct test for paradoxical
+ SUBREG.
+
+ * varasm.c (output_constant_pool): If entry refers to a deleted label,
+ write a zero instead of the undefined label.
+
+Fri Feb 22 02:49:24 1991 Ken Raeburn (raeburn at watch.com)
+
+ * Reversed all changes dated 20 February.
+ * cplus-template.c (pending_template_expansion): New function;
+ given template name, returns class name of expansion in progress.
+ * cplus-parse.y (PTYPENAME -> typespec): Call it.
+ ('~' PTYPENAME -> notype_declarator): Ditto.
+
+Thu Feb 21 15:17:13 1991 Craig Burley (burley at geech.ai.mit.edu)
+
+ * c-common.c (check_case_value): If value is NULL_TREE, return it
+ without any further checking.
+
+ * stmt.c (pushcase_range): If value1 is NULL_TREE, substitute
+ minimum value for the type, if value2 is NULL_TREE, substitute
+ maximum value for the type, from then on assume both are not NULL_TREE.
+ These changes appear to provide minimal support for case ranges.
+
+ * c-typeck.c (digest_init): For explicit array element initializer
+ case, change check against max value of domain so index may equal it.
+ For array element initialization, give next initializer a chance to
+ override the choice of next index before falling out of loop because
+ next index is out of range. For structure initialization, give next
+ initializer a similar chance before falling out of loop because no
+ more fields exist.
+
+ * reload1.c (possible_group_p): Needed a forward decl (static).
+
+Thu Feb 21 14:37:01 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-decl.c (grokdeclarator):
+ Don't make bitfield type unsigned if comes from typedef.
+
+ * reload1.c (reload): Don't require INITIAL_FRAME_POINTER_OFFSET
+ if cannot eliminate the frame pointer.
+
+ * i860.md (cbranch, inverse_cbranch): Use eq to test cc0.
+ (negated branch patterns): New patterns.
+
+ * tm-i860.h (INITIALIZE_TRAMPOLINE): Use size_int, not build_int.
+
+ * reload1.c (reload): Save and restore notes around find_reloads.
+
+ * tm-sun2os4.h (LINK_SPEC): New macro.
+ * tm-sun386i.h (LINK_SPEC): Undef before redefining.
+
+ * cccp.c (do_include): Check for -2, not -1, as value of lookup_import.
+
+ * c-parse.y (initlist): Fix typo.
+
+Mon Feb 18 02:50:38 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (grokdeclarator): Try to come up with better magic
+ for implicitly globalizing classes implicitly declared in class
+ scope.
+
+Sun Feb 17 09:27:38 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-tree.c (virtual_offset): New function. Returns the offset
+ of a baseclass that is virtual or comes from a virtual baseclass, or
+ NULL if there is no such baseclass.
+ * cplus-class.c (modify_vtable_entries): Call this function instead
+ of `virtual_member'. `virtual_member' can return the wrong thing if
+ we try to use it for an offset computation of a baseclass which is
+ not strictly a virtual baseclass.
+
+Sat Feb 16 06:21:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * recog.c (validate_replace_rtx_1): Use correct rtx_code for the
+ new operation when commuting operands.
+ Generalize to commute operands on comparison operation.
+
+Fri Feb 15 23:01:24 1991 Richard Stallman (rms at geech.ai.mit.edu)
+
+ * c-parse.y (initlist): Finish changing `case N:' to `[N]'.
+
+ * combine.c (try_combine): Update reg_first_use. Flush useless links.
+
+Thu Feb 14 17:06:44 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-parse.y (template_parm): New derivation from `class ID',
+ for consistent return of `identifier_node' nodes with `class A :
+ B' case.
+ * cplus-template (end_template_parm_list): Nothing to strip off of
+ identifier_nodes now.
+ (process_template_parm): Strip off one level of tree_list,
+ discarding (for now) the required base class. Don't need to run
+ through grok* any more.
+
+Sun Feb 10 19:23:21 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * gcc.c (main, process_command, default_compilers): Fix typos.
+
+Sat Feb 9 15:06:43 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * gcc.c (process_command): Handle separate args for -B, -b, -V.
+
+ * gcc.c (lookup_compiler): New function. Handles alias entries.
+ (main): Call that.
+ (default_compilers): Make all real suffixes into alias entries.
+ (infiles): Now a vector of structures, containing specified language.
+ (process_command): Handle -x to specify language.
+ (main): Use specified language if any.
+
+Fri Feb 8 18:31:00 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * fold-const.c (fold): Set TREE_USED when create COMPOUND_EXPR.
+ * stmt.c (warn_if_unused_value): Don't warn if TREE_USED.
+ * c-typeck.c (build_unary_op): Handle multiple casts inside ++.
+
+Fri Feb 8 07:37:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * real.h (dconst2): New variable.
+ * emit-rtl.c (init_emit_once): Initialize dconst2.
+ * tree.c (real_twop): New function.
+ * cse.c (simplify_unary_operation): Fold FLOAT, FLOAT_EXTEND, and
+ FLOAT_TRUNCATE.
+ (simplify_binary_operation): Convert x*2 to x+x.
+ (cse_insn): Handle case where constant equivalent is in table.
+ Fix minor bug with merging src_related_elt.
+ * fold-const.c (fold): If commutative operation, move a constant
+ first operand to the second operand.
+ Remove tests of constants as first operand for commutative operations.
+ Convert x*2 to x+x.
+
+Fri Feb 8 03:07:34 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-ptree.c (print_lang_decl): Corrected argument list. Print
+ address of template info for TEMPLATE_DECL nodes.
+
+ * cplus-decl.c (set_current_level_tags_transparency): New
+ function, for altering tag-transparency of a context.
+
+ * cplus-parse.y (PRE_PARSED_METHOD_DEF): Was unused; now gone.
+ (template_instantiation): Handle $-references correctly. Generate
+ a class_head-like value for LC actions to operate on.
+ (maybe_base_class_list): New non-terminal: colon and base class
+ list, or empty.
+ (named_class_head): Use it.
+ (unnamed_class_head): Use '{', not LC.
+ (class_head): If template_instantiation found, use its value.
+ (template_arg): Apply groktypename to typename args.
+
+ * cplus-template.c (template_text_obstack): Deleted, just use
+ permanent_obstack instead.
+ (init_template): Deleted; callers changed.
+ (current_template_info): New variable: pointer to last-saved
+ template info record.
+ (end_template_decl): Use DECL_NAME, DECL_ARGUMENTS,
+ DECL_LANG_SPECIFIC, rather than TREE_OPERANDs. Save most of
+ template info here.
+ (reinit_parse_for_template): Only save text here, in
+ already-allocated template info record.
+ (mangle_class_name_for_template): New function.
+ (instantiate_template): Finally written.
+
+Thu Feb 7 22:06:56 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * tm-i386v4.h (ASM_OUTPUT_COMMON): Specify rounding in the output.
+ (ASM_OUTPUT_LOCAL): Use .local and .comm.
+
+ * tm-news.h (FUNCTION_PROLOGUE): Correct syntax of link insn.
+ (PRINT_OPERAND_ADDRESS): Use period, not colon, before index reg width.
+
+ * stmt.c (pushcase, pushcase_range):
+ Don't warn for code before first `case' if there is a label on it.
+
+Thu Feb 7 06:23:10 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * integrate.c (initialize_for_inline): Accept COPY argument.
+ Only copy parameter DECL_RTL if COPY non-zero; in that case,
+ also replace DECL_RTL with copy. All callers changed.
+ (copy_decl_rtls): New function.
+ (save_for_inline_copying): Use copy_decl_rtls to copy MEM DECL_RTLs
+ in the function.
+ Copy address of pseudos if they are a MEM.
+
+Wed Feb 6 19:19:25 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op_nodefault): No warn for RSHIFT by 0.
+
+Wed Feb 6 17:37:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (fixup_var_refs_1): Accept a location in rtx instead
+ of an rtx.
+ Unless -fforce-mem, if an insn is valid with MEM, leave it alone.
+ Rework ZERO_ and SIGN_EXTRACT cases to properly do adjustments
+ and generalize to support other than QImode MEMs.
+ (fixup_var_refs_insns): Change call to fixup_var_refs_1.
+
+Wed Feb 6 08:14:21 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (cmp): Use reg_or_0_operand to avoid swapped compares.
+ (call patterns): Put use of r1 in a parallel construct.
+ (multiply and divide by a power of two): Now just multiply. The
+ new combiner will change divide by a power of two into multiply.
+ (movhi, movqi): Use zero-extend load.
+ * tm-m88k.h (BYTE_LOADS_ZERO_EXTEND): Use it.
+ (H constraint): Changed to mean one or two.
+ * out-m88k.c: Use the proper includes for non-USG systems.
+ * xm-m88k.h: Include tm.h at the end.
+
+Wed Feb 6 02:24:38 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (pushtag): Don't try to nest classes from non-C++
+ language scopes.
+
+Wed Feb 6 01:33:16 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * cse.c (simplify_binary_operation): Don't change div into mult.
+
+Tue Feb 5 10:59:53 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-parse.y (template_instantiation): Supply base class list
+ and use guts of class declaration. Untested; will have to be
+ fixed up to deal with template context manipulations.
+
+Tue Feb 5 00:52:57 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-common.c (combine_strings): Finish fixing wide strings.
+
+ * reload1.c (possible_group_p): New subroutine.
+ (reload): Don't kill last group when looking for a non-group.
+
+ * expmed.c (expand_divmod): If emit cmp insn, force op0 into reg.
+
+ * objc-parse.y (init_lex, yylex): max_wide now measured in chars.
+ (yylex): Treat \r as whitespace if traditional.
+
+ * toplev.c (compile_file): Add missing arg for dbxout_finish.
+
+ * objc-actions.c (lang_finish): New dummy function.
+
+ * calls.c (expand_call): Recognize other names for setjmp-like fns.
+
+ * gcc.c (main): Use obstack_init, not gcc_obstack_init.
+
+ * varasm.c (assemble_zeros): New function.
+ All calls to ASM_OUTPUT_SKIP elsewhere now use this function.
+ Handle ASM_NO_SKIP_IN_TEXT.
+ * toplev.c (compile_file): Use assemble_zeros.
+ * final.c (end_final): Likewise.
+ * tm-3b1.h, tm-att386.h, tm-mot3300.h (ASM_NO_SKIP_IN_TEXT):
+ Define as 1.
+ * tm-3b1.h (ASM_OUTPUT_SKIP): Don't deal with outputting zeros.
+
+Mon Feb 4 20:37:33 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * m68k.md: Use %$ and %& where appropriate.
+ (special float_truncate pattern): New, for 68040.
+ (68881 DF multiply recognizers): Avoid fscale if 68040.
+ (68881 SF multiply recognizers): Avoid fsglmul if 68040.
+
+ * tm-next.h (SECTION_FUNCTION): Simplify; remove last arg.
+ (EXTRA_SECTION_FUNCTIONS): Rewrite to go with that change.
+
+Mon Feb 4 18:22:54 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (link_cc0_isns): New function.
+ (fill_simple_delay_slots, fill_slots_from_thread): Call it.
+ (fill_slots_from_thread): Don't make REG_CC_STATUS notes.
+ (delete_scheduled_jump): Use REG_CC_SETTER instead of REG_CC_STATUS.
+ Correctly locate compare insn in CC0 case.
+ (steal_delay_list_from_target): Don't steal an insn that sets cc0;
+ we can't safely copy it.
+ (fill_slots_from_thread): Can't put insn that sets CC0 in delay slot
+ if we don't own its thread; this would otherwise require copying it.
+ (relax_delay_slots): Don't collapse jump to next insn if it has a
+ cc0-setting insn in a delay slot.
+
+ * reorg.c (update_block): Accept location to place USE marker; use if
+ INSN is in a delay slot.
+ (mark_target_live_regs): Handle the case where we deleted the start
+ of the basic block that was previously used for a target.
+ Ignore insns with INSN_FROM_TARGET_P.
+ (optimize_skip, try_merge_delay_insns, fill_simple_delay_slots):
+ Pass new argument to update_block.
+ (try_merge_delay_insns, redundant_insn_p): Clear INSN_FROM_TARGET_P
+ to show that this insn will be used in both paths of the branch.
+ (try_merge_delay_insns): Add calls to update_block for insns deleted
+ from delay slots.
+
+ * reorg.c (mostly_true_jump): If no jumps between target and end of
+ function, predict as false.
+ If comparison == 0, predict false; != 0, predict true.
+
+ * reorg.c (steal_delay_list_from_{target,fallthrough}):
+ Ignore redundant insn even if it can't be placed in our delay slot.
+ (fill_slots_from_thread): Likewise.
+ Ensure we don't call redundant_insn_p on any insns that conflict
+ with what we need and set.
+
+ * reorg.c (fill_eager_delay_slots): Pick up new value of JUMP_LABEL;
+ it may have been changed by first call to fill_slots_from_thread.
+
+ * rtl.h (REG_TAIL_CALL): Deleted; never documented or used.
+ (REG_CC_SETTER, REG_CC_USER): Replacements for REG_CC_STATUS.
+ * rtl.c (reg_note_name): New names.
+ * final.c (final_scan_insn): Replace REG_CC_STATUS with REG_CC_SETTER;
+ now only one insn.
+ * emit-rtl.c (next_cc0_user, prev_cc0_setter): Use REG_CC_SETTER and
+ REG_CC_USER.
+
+ * cplus-cadillac.c, cplus-class.c, cplus-decl.c, cplus-lex.c:
+ Replace obstack_init with gcc_obstack_init.
+ * cplus-search.c, flow.c, gcc.c, loop.c, reload1.c: Likewise.
+ * reorg.c, stmt.c: Likewise.
+
+ * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo when making
+ new ASM_OPERANDS.
+
+ * recog.c: Now includes insn-flags.h and insn-codes.h.
+ (validate_replace_rtx_1): If replacing the source of a ZERO_ or
+ SIGN_EXTRACT with a MEM, try to put the MEM in the mode to be used for
+ the MEM.
+ * Makefile.in (recog.o): Depends on insn-flags.h and insn-codes.h.
+
+Mon Feb 4 17:39:36 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Error if init array with another array.
+
+Mon Feb 4 04:58:20 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-tree.def (TEMPLATE_DECL): New node type.
+ (TEMPLATE_PARM_IDX): New node type; like integer, with an extra
+ field.
+
+ * cplus-method.c (check_text_len): Fix up error message to be more
+ correct. Moved function before new_text_len so that the latter
+ can call it and inlining can work.
+ (new_text_len): Call check_text_len.
+
+ * cplus-method.c (build_overload_name): No longer static.
+
+ * cplus-class.c (unuse_fields): Now static.
+ (popclass): Use a temporary when building C_C_D.
+
+ * cplus-decl.c (lookup_tag): Don't complain about type mismatch if
+ the tag found is for a template.
+
+ * cplus-lex.c: New lookup tables, for new "template" keyword.
+ (reinit_lang_specific): Call init_template.
+ (init_lex): Ditto.
+ (file_from_saved_text): Renamed from input_from_saved_text.
+
+ * cplus-lex.c (identifier_type): New function; returns primary
+ type (IDENTIFIER, TYPENAME, PTYPENAME) indicated by token name. A
+ PTYPENAME is returned for (TYPE_DECL (TEMPLATE_DECL ...)) nodes.
+ (see_typename): Call it.
+
+ * cplus-lex.c (yylex): In handling identifiers, use subset of
+ TYPENAME code for PTYPENAME tokens.
+
+ * cplus-template.c: New file.
+ (begin_template_parm_list): Push new scope and switch to permanent
+ obstack.
+ (end_template_parm_list): Return parameter list as a tree vector.
+ (end_template_decl): Save away new TEMPLATE_DECL node.
+ (process_template_parm): Build up tree list of template
+ parameters.
+ (instantiate_template): For now, just complain.
+ (init_template): Set up template obstack.
+ (reinit_parse_for_template): Gobble up class definition text and
+ save it away.
+
+ * cplus-parse.y (template_header, template_parm_list): Call above
+ routines.
+ (datadef): Put template declarations here, instead of in
+ class_head.
+ (named_class_head_sans_basetype, named_class_head,
+ unnamed_class_head): Break up old class_head derivations.
+ (class_head): Now any of the above, plus template types with or
+ without instantiation.
+ (template_type): Call instantiate_template.
+ (template_arg_list): Build up list of args.
+
+ * cplus-tree.h (lang_type): Add TEMPLATE field. Also add macro
+ TYPE_TEMPLATE.
+
+Sun Feb 3 21:16:36 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * tm-m68k.h (PRINT_OPERAND): Handle `&' and `$'.
+ (PRINT_OPERAND_PUNCT_VALID): They are valid.
+
+ * out-next.c (handle_pragma): Unread the newline.
+
+ * toplev.c (main): Warn if meaningless optimizations are requested.
+ Don't enable options by default that would get warnings.
+
+ * m68k.md (extend QI to HI): Typo in clr insn.
+
+ * c-common.c (combine_strings): Decrement LEN properly when copying.
+ * c-parse.y (init_lex, yylex): max_wide now measured in chars.
+
+ * tree.c (gcc_obstack_init): Fix typo in forward decl.
+
+Sat Feb 2 09:24:56 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (poplevel): Change DECL_CONTEXT of decls only of
+ their context is CURRENT_FUNCTION_DECL.
+
+Fri Feb 1 13:46:07 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * print-tree.c (print_node): Don't print chain for `c' and `x' nodes.
+
+ * loop.c (record_excess_regs): Moved here.
+
+See file ChangeLog.2.
diff --git a/gcc/ChangeLog.4 b/gcc/ChangeLog.4
new file mode 100644
index 00000000000..af668a3be89
--- /dev/null
+++ b/gcc/ChangeLog.4
@@ -0,0 +1,10783 @@
+Mon Jan 13 19:12:18 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (find_splittable_givs): When completely unrolling loop,
+ use biv initial value stored in splittable_regs instead of
+ bl->initial_value, since the later may not be safe.
+
+ * sched.c (schedule_block): When calculating whether a register
+ crosses a call, must do this after registers are killed and before
+ new registers are made live.
+
+ * x-rs6000: Define INSTALL as /usr/ucb/install -c. /etc/install
+ (the SYS V version) does not handle -c option as Makefile.in
+ intends it.
+
+Mon Jan 13 11:21:24 1992 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile (parse_stabs_common): Don't relocate N_LBRAC and
+ N_RBRAC stabs for compatibility with other stabs implementations.
+
+Mon Jan 13 07:41:32 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't set TREE_PRIVATE here.
+ TREE_PRIVATE is only for visibility.
+ (start_function): Don't test TREE_PRIVATE here. #pragma
+ interface/implementation should properly handle the case of static
+ (i.e. non-public) defns in implementation section now.
+
+Mon Jan 13 07:31:38 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (output_ascii): The AIX assembler silently truncates
+ strings longer than 666 characters, so break them up well before that.
+
+Mon Jan 13 00:26:47 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (pushdecl): Warn about shadowing at top level any symbol
+ that was declared among the function parms. But don't warn for
+ parms in a nested function.
+ * tree.c (chain_member): New function.
+
+ * sparc.c (output_return): Handle structure value in all the cases.
+
+ * toplev.c (main): -gstabs+ means use stabs with gdb extensions.
+
+ * fixincludes: Insert #undef NULL before #define NULL.
+
+ * gvarargs.h (va_list): Check some macros to avoid redefinition.
+
+ * tree.h (DECL_PACKED): New macro.
+ * c-common.c (decl_attribute): Handle `packed'.
+ * stor-layout.c (layout_record): Handle DECL_PACKED.
+ * c-parse.y (attrib): Accept `packed' with no arg.
+
+ * c-decl.c (shadow_tag): For useless keyword, just warn.
+ (duplicate_decls): Don't preserve volatile bit from old decl
+ if that is just a default declaration for abort, exit, etc.
+
+ * cccp.c (do_assert, do_unassert, check_assertion):
+ No pedantic warnings in system header files.
+
+ * ultrix.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Defined.
+ (WCHAR_TYPE_SIZE): Defined.
+
+ * i386.h (HI_REGISTER_NAMES): Add a name for dummy reg 16.
+
+ * dbxout.c (flag_minimal_debug): Make it static.
+
+Sun Jan 12 18:10:46 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-lex.c (check_newline): Check #line for `3' meaning system header.
+ * cccp.c (output_line_command): Output `3' if system header.
+ * c-tree.h (system_header_p): Declare it.
+ (ridpointers): Declaration deleted.
+
+ * dwarfout.c (fundemental_type_code): Treat OFFSET_TYPE like integer.
+ (type_is_fundamental, output_type): Likewise.
+
+ * optabs.c (expand_float): Abort if FROM has VOIDmode.
+ * expr.c (expand_expr, FLOAT_EXPR case): Don't pass a VOIDmode.
+
+Sun Jan 12 16:11:40 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.h (ASM_OUTPUT_SPACE): If assembler is gas, don't use the
+ .space directive, since the table PREDICATE_CODES generates tickles
+ a bug.
+
+Sun Jan 12 15:59:41 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expmed.c: Include real.h.
+ (make_tree): Properly handle CONST_INT and handle many more rtl codes.
+ (expand_mult_add): Don't do folding here; just call make_tree and fold.
+ * Makefile.in (expmed.o): Includes real.h.
+
+Sun Jan 12 12:26:20 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (store_parm_decls): Finish change started 11 Jan 1992.
+
+ * cp-decl.c (pushtag): Don't set CLASSTYPE_TAGS after
+ CURRENT_CLASS_TYPE has been defined.
+
+ * cp-lex.c (check_newline): Set INTERFACE_UNKNOWN if we see a
+ #pragma implementation or if it's the toplevel file.
+
+Sat Jan 11 22:04:34 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.md (fix_truncsfsi2_opt): Delete, since the optimizer will
+ strip the clobbers when substituting a register for a cs'ed value,
+ unlike GCC 1.
+ (fix_truncdfsi2_opt): Likewise.
+ (long long shifts): Fix various typos.
+
+Sat Jan 11 15:26:24 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expr.h (GEN_FCN): Alternate definition if FUNCTION_CONVERSION_BUG.
+ * xm-romp.h (FUNCTION_CONVERSION_BUG): Define it.
+
+ * i386.md (cmpstrsi recognizers): Change back to repz.
+
+Sat Jan 11 11:18:32 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (store_parm_decls): Don't put non-PARM_DECL nodes in the
+ list that will become DECL_ARGUMENTS.
+
+ * cp-decl2.c (grokfield): Convert () initialization to =
+ initialization in FIELD context.
+ * cp-decl.c (parmlist_is_exprlist): Now non-static.
+
+ * cp-decl.c (grokdeclarator): Don't let static class members be
+ declared `static' at top-level.
+
+ * cp-decl.c (pushdecl_class_level): Don't use DECL_ASSEMBLER_NAME.
+
+ * cp-decl.c (grokdeclarator): Don't let language linkage interfere
+ with declarator grokking--the two are independent.
+
+ * cp-call.c (compute_conversion_costs): Look for constructor or type
+ conversions regardless of whether we have CONTRAVARIANCE_HARSHNESS
+ or not. Also, `#if 0' some dead code.
+
+ * cp-method.c (report_type_mismatch): Fix bugs in formatting error
+ messages.
+
+ * cp-decl.c (grokvardecl): Verify that when static class members are
+ declared at toplevel, the types match their initial declaration.
+
+Sat Jan 11 08:41:24 1992 Fred Fish (fnf at fishpond)
+
+ * config/m68kv4.h (NO_DOLLAR_IN_LABEL): Undefine so that the
+ default for m68k/SVR4 systems is to use '$', which is more
+ widely supported.
+
+Sat Jan 11 10:56:10 1992 Jeffrey A. Law (law at wombat.gnu.ai.mit.edu)
+
+ * Finish PIC implementation on the 68k
+ * output.h (flag_pic): Declare here so that insn-*.c can see it.
+
+ * reload1.c (reload): When compiling PIC ignore REG_EQUIV notes
+ which are CONSTANT_P, but are not LEGITIMATE_PIC_OPERAND_P.
+
+ * m68k.md (call, call_value): Make these into define_expands. If
+ compiling PIC code, then load the address of the function into a
+ register so that we make indirect calls.
+ (Non-PIC call, call_value): New define_insns. These are
+ standard call insns.
+ (PIC call, call_value): New define_insns which output PIC calls.
+ (movsi): Make this into a define_expand. Legitimize PIC addresses
+ if necessary. Old movsi code is now an unnamed define_insn pattern.
+
+ * m68k.h (GO_IF_LEGITIMATE_ADDRESS case INDIRECTABLE_1_ADDRESS_P):
+ Use LEGITIMATE_PIC_OPERAND_P to reject SYMBOL_REFS and LABEL_REFS
+ without PIC relocation when compiling PIC code.
+
+ * m68k.c (legitimize_pic_address): New function. Given an address
+ return that address as "legitimized" PIC code.
+ (print_operand_address): When generating PIC code, handle PIC
+ relocated label_refs just like a PIC relocated symbol_ref.
+ (print_operand_address): If -fpic then add ":w" to displacement in
+ PIC relocated references.
+ (print_operand_address): If -fPIC then add ":l" to displacement in
+ PIC relocated references.
+
+Fri Jan 10 18:03:08 1992 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-init.c (build_new): Don't allocate header for arrays if no
+ destructor is needed. Also fix broken calculation of array size.
+ (build_delete): Don't skip array header if no destructor is needed.
+
+Fri Jan 10 14:54:19 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-cvt.c cp-decl2.c cp-expr.c cp-gc.c cp-init.c cp-lex.c cp-parse.y
+ cp-pt.c cp-search.c cp-tree.c: Clean up problems found with -Wreturn
+ (from rfg).
+
+ * cp-typeck.c cp-tree.c cp-cvt.c cp-lex.c cp-call.c cp-class.c:
+ Add (unsigned) casts to all places where native SVr4 compilers
+ expect to see unsigned values.
+
+Fri Jan 10 08:34:36 1992 Fred Fish (fnf at sunfish)
+
+ * m68ksgs.h (REGISTER_NAMES): Provide separate versions for
+ SUPPORT_SUN_FPA defined and not defined.
+
+Fri Jan 10 22:36:41 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * Improve I/O performance of gcc on VMS.
+ * cccp.c (VMS_open, VMS_fopen, VMS_freopen): New functions.
+ (open, fopen, freopen): Define as macros on VMS.
+ * toplev.c (VMS_fopen): New function.
+ (fopen): Define as macro on VMS.
+
+Fri Jan 10 22:00:50 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genrecog.c (merge_trees): If two trees both have actions, but
+ one adds clobbers and one doesn't, ignore the one that does.
+
+ * genemit.c (gen_split): Say that we are giving the definition number
+ in our error message.
+ * genrecog.c (fatal): Likewise.
+ * genoutput.c (scan_operands): Likewise.
+
+ * caller-save.c: Include expr.h (for gen_move_insn).
+ (regno_save_elim): Deleted.
+ (init_save_areas): Don't initialize it.
+ (setup_save_areas): Don't set it.
+ (save_call_clobbered_regs, restore_referenced_regs): Accept mode,
+ not spill register.
+ (insert_save_restore): Don't do our own register elimination and
+ reloading; instead set the insns we make to the desired mode.
+ * reload1.c (struct elim_table): New field MAX_OFFSET.
+ (reload): Always call init_save_areas.
+ Initialize max_offset each pass.
+ At each CALL_INSN, create a need for a spill register that will
+ be used by caller-save.
+ Pass mode for insns to save_call_clobbered_regs instead of a
+ spill reg number.
+ Call reload_as_needed if we will have to reload the caller-save
+ insns, even if nothing else needs reload (unlikely).
+ (eliminate_regs_in_insn): Record maximum offset value.
+ * Makefile.in (caller-save.o): Includes expr.h.
+
+ * reload.c (find_reloads): CALL_INSNs can't have output reloads.
+ * reload1.c (emit_reload_insns): Put any reloads for a CALL_INSN
+ in front of any immediately-preceeding USE insns.
+
+ * flow.c (life_analysis): Mark all global regs as live at the end of
+ the function.
+ (propagate_block): Each call makes all global registers live.
+ (mark_used_regs): A RETURN may use the stack pointer and uses all
+ global regs.
+ * cse.c (cse_insn): A CALL_INSN clobbers any global regs.
+ * reorg.c (mark_referenced_resources): Calls used global regs.
+ (mark_set_resources): CALL_INSNs clobber global regs.
+
+Fri Jan 10 17:24:06 1992 Michael Meissner (meissner at osf.org)
+
+ * collect2.c (whole file): Major rewrite to merge in collect3
+ functionality which uses GCC to build up the constructor and
+ destructor tables, instead of using the assembler. Also improve
+ the support for cross compilers to find the tools. The old assembly
+ language support has been removed.
+
+ * mips-tfile.c (CODE_MASK): Move to mips.h to use with mips-tdump
+ also.
+ (MIPS_IS_STAB): Likewise.
+ (MIPS_MARK_STAB): Likewise.
+ (MIPS_UNMARK_STAB): Likewise.
+
+ * mips-tdump.c (various): Changes by Per Bothner to print
+ encapsulated stabs, and to shorten the output.
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 7.
+ (cmp2_op): Make cmp2_op a real function instead of just a
+ macro to cmp_op.
+ (OPTIMIZATION_OPTIONS): -O now sets flag_caller_saves and
+ flag_schedule_insns_after_reload.
+ (CC1_SPEC): Fix typo preventing -mgpopt from being set if
+ optimization.
+ (PREDICATE_CODES): Define.
+ (USE_COLLECT, EXTENDED_COFF, NO_UNDERSCORES): Delete, not needed in
+ GCC 2.00.
+ (ASM_INT_OP, ASM_SHORT_OP, ASM_CHAR_OP): Likewise.
+ (CODE_MASK): Move from mips-tfile.
+ (MIPS_IS_STAB): Likewise.
+ (MIPS_MARK_STAB): Likewise.
+ (MIPS_UNMARK_STAB): Likewise.
+
+ * mips.c (cmp2_op): Make this a real function, instead of a macro
+ pointing to cmp_op.
+ (volatile_buffer): New static variable to support .set volatile.
+ (mips_move_1word): Do .set volatile/.set novolatile around volatile
+ memory references.
+ (mips_move_2words): Likewise.
+
+ * mips.md (sne define_split): Fix so that it generates a gtu 0.
+ (all set cc define_splits): Remove reload_completed tests.
+ (all set cc define_insns): Don't allow 0 as operand 1.
+
+Fri Jan 10 16:40:45 1992 Jeffrey A. Law (law at wombat.gnu.ai.mit.edu)
+
+ * m68k.md (addsi3, addhi3, subsi3, stack adjustment peepholes):
+ Perform small (8 < N <= 16) constant additions and subractions to
+ address registers with two addqw (or subqw) instructions.
+
+Fri Jan 10 06:54:22 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): Check for _longjmp as well as longjmp;
+ clean up code a bit and merge with check for setjmp-like names.
+ Emit a BARRIER if this is a call to longjmp in addition to
+ volatile calls.
+
+Fri Jan 10 02:25:54 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Properly return error_mark_node
+ after invalid element in array initializer.
+
+ * gcc.c (pexecute): Use `fork' in error message if don't have vfork.
+
+ * Makefile.in: Add .NOEXPORT.
+
+Thu Jan 9 13:36:25 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr): Handle OFFSET_REF.
+
+ * cse.c (simplify_binary_operation): Never use associative law for
+ floating arithmetic.
+
+ * fixinc.svr4: Renamed INCLUDES to INPUT.
+
+ * i386.md (cmpstrsi recognizers): Output repe, not repz.
+
+Thu Jan 9 18:02:34 1992 Dennis P. Glatting (dennisg at tti)
+
+ * tree.h (CONSTRUCTOR_NAME_FORMAT): Changed name format. Old format
+ was recognized as destructors not constructors.
+ * objc-actions.c (build_module_descriptor):
+ Null-terminate global_object_name.
+
+Thu Jan 9 10:35:58 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sdbout.c (sdbout_syms): Don't attempt to output a LABEL_DECL.
+
+Thu Jan 9 08:17:44 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (merge_component_references): Treat constants as
+ unsigned, so we don't get extra sign bits where we don't want them.
+
+Wed Jan 8 19:12:59 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reload.c (combine_reloads): Don't use a fixed_reg as an reload
+ reg, even if it dies.
+
+ * loop.c (record_giv): Fix typo extracting insn_uid.
+
+Wed Jan 8 15:41:10 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cpp.texi, gcc.texi: Files renamed.
+ * invoke.texi, extend.texi, md.texi, rtl.texi, tm.texi: New subfiles.
+ * Makefile.in: Corresponding changes.
+
+ * fixincludes: Renamed INCLUDES to INPUT.
+
+ * m68k.c (notice_update_cc, print_operand): Fix typos.
+
+ * cp-decl.c (expand_static_init): Save and restore current obstacks.
+
+ * c-decl.c (poplevel): Put labels in BLOCK_VARS of top-level block.
+
+Wed Jan 8 12:53:48 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (expand_static_init): Switch to PERMANENT_OBSTACK during
+ expansion.
+
+Wed Jan 8 07:45:58 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kv3.h (STARTFILE_SPEC): SVR3 has *crt0.o files.
+
+ * configure (m88k-*sysv{3,4}): The files are named m88kv{3,4}.
+
+Wed Jan 8 06:01:44 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * romp.md (mftbi): Allow memory in the contraints since there can't
+ be an input reload on an insn that uses cc0.
+
+ * cse.c (FIXED_BASE_PLUS_P): Include virtual_incoming_args_rtx.
+ (NONZERO_BASE_PLUS_P): New macro.
+ (find_comparison, simplify_relational_operation_args): Use
+ NONZERO_BASE_PLUS_P instead of FIXED_BASE_PLUS_P when appropriate.
+
+ * m68k.md (peepholes): Don't change around stack adjusts and pushes
+ when we are pushing something whose address involves sp.
+
+ * cse.c (simplify_unary_operation): Check for operations on
+ integers by looking at mode of OP, not output mode, to avoid
+ confusion with FIX operations whose result is an integer.
+
+ * rtl.h ([df]const[012]_rtx): Deleted.
+ (const_tiny_rtx): New declaration.
+ (CONST0_RTX): Use const_tiny_rtx instead of {d,f,}const0_rtx.
+ (CONST1_RTX, CONST2_RTX): New macros.
+ * emit-rtl.c ([df]const[012]_rtx): Deleted.
+ (const_tiny_rtx): New definition.
+ (init_emit_once): Initialize const_tiny_rtx instead of old vars.
+ * cse.c (simpify_binary_operation): Use CONST[01]_RTX.
+ * varasm.c (immed_real_const_1): Likewise.
+ * combine.c (subst): Likewise.
+ * reg-stack.c (record_reg_life, stack_reg_life_analysis): Likewise.
+ * convex.md, i860.md, m88k.c, spur.md, vax.h, ns32k.md: Likewise.
+
+Tue Jan 7 22:11:17 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * x-i386isc (ENQUIRE_LDFLAGS): New defn: add -posix.
+
+ * protoize.c (_POSIX_SOURCE): Define only if POSIX.
+
+ * m68k.h (FPA_REG_P): Always define this somehow.
+
+ * c-decl.c (c_decode_option): Handle -Wchar-subscripts.
+ * c-typeck.c (build_array_ref): Do the real work.
+
+Tue Jan 7 21:15:54 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.md (branch_zero_false): Use correct mode (CC_0) on
+ match_operator.
+
+Tue Jan 7 14:24:45 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (replace_reg): get mode class from a mode, not a reg.
+
+Tue Jan 7 14:16:18 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * reg-stack.c (emit_pop_insn): Fix typo FPmode_reg.
+
+ * protoize.c (longjmp): Don't declare it.
+
+Tue Jan 7 09:47:47 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-lex.c (real_yylex): From John Hassey, allocate space for the
+ terminating null on wide character literals.
+
+Tue Jan 7 07:41:42 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kv3.h (LIB_SPEC): Add -lg.
+
+Tue Jan 7 06:29:30 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * stor-layout.c (layout_type): Don't over-align a structure
+ when strict alignment is not required.
+
+ * rs6000.h (CALL_USED_REGISTERS): r31 should not be marked call-used.
+
+ * rs6000.md (add-and-compare): Fix duplicate operand number.
+
+ * a29k.md (inbyte, inhw): Correct duplicate operand number.
+
+ * fold-const.c (fold, case MULT_EXPR): Simplify (a * (1 << b)).
+ * combine.c (subst, case MULT): Likewise.
+ (simplify_shift_const, shift cases): Similarly, associate A << B << C.
+
+ * genoutput.c (seen): New array.
+ (scan_operands): Give error if an operand number was specified
+ twice. Include pattern number in error message.
+ (gen_insn, gen_expand, gen_split, gen_peephole): Initialize `seen'.
+ (gen_split, gen_peephole): Add initializations for arrays that
+ are copied.
+
+ * optabs.c (expand_unop): Complete recent change; one TARGET was
+ not changed to TEMP.
+
+ * expmed.c (expand_mult): Always try multiplication by value and
+ by negated value. Fix bug where we don't include the cost of the negate
+ when seeing which way is better. Write proper value in REG_EQUAL
+ note.
+
+ * optabs.c (extendtab): Replacement for {zero,sign}_extend_codes.
+ (can_extend_p): Use new table and return type is not enum insn_code.
+ (gen_extend_insn): Deleted; not used.
+ (init_extends): Make like init_flottab: use new table and initialize
+ unused entries to CODE_FOR_nothing, not zero.
+ * expr.c (convert_move): can_extend_p fails if it returns
+ CODE_FOR_nothing, not zero.
+ * expr.h (can_extend_p): Add definition.
+
+ * expr.h: Add "extern" to function definitions.
+
+Mon Jan 6 10:12:34 1992 Leonard Norrgard (vinsci at nic.funet.fi)
+
+ * m68k.c (SUPPORT_SUN_FPA): Conditionalize references to the
+ optional Sun 3 Floating Point Accelerator with SUPPORT_SUN_FPA.
+ * m68k.h (SUPPORT_SUN_FPA): Likewise.
+
+ * m68k.c (notice_update_cc): New function.
+ * m68k.h (NOTICE_UPDATE_CC): Just call notice_update_cc.
+
+ * sun3.h (SUPPORT_SUN_FPA): New define.
+
+Mon Jan 6 16:42:43 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_global, assemble_label): New functions.
+ * objc-actions.c (finish_objc): Call them to define and globalize.
+ Use output_constant to reference a class.
+
+ * Makefile.in (install-limits-h): New target.
+ (install-headers): Depend on install-limits-h.
+ (USER_H): Deleted LIMITS_H.
+ (INSTALLED_H): Added limits.h.
+ (mostlyclean): Remove tmp-limits.h.
+ * limitx.h: New file.
+
+ * x-isc: File deleted.
+
+ * objc-actions.c (build_module_descriptor): Init global_object_name.
+
+ * Makefile.in (collect2): Depend on version.o.
+
+ * protoize.c (PATH_MAX): Definition deleted. Just test it
+ to see if param.h should be included.
+
+ * cse.c (simplify_binary_operation, case MULT): Make a copy
+ of the operand when converting 2.0 * X to X+X.
+
+ * reload.c (find_reloads): Refine when we set force_reload and
+ better document the cases.
+
+Mon Jan 6 08:22:19 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (output_float_compare): Output only single-pop compare
+ if both operands are the FP top of stack reg.
+ When comparing FP top of stack with itself, print `%st(0)' as the
+ reg name, not `%st'.
+
+Mon Jan 6 12:01:51 1992 Tiggr (rcpieter at mole.gnu.ai.mit.edu)
+
+ * arm.md (mulsi3): Fixed contraints.
+
+Mon Jan 6 08:21:46 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k-move.sh: Renamed from m88k-movstr.sh. Rename the generated
+ files move*.asm from movstr*.asm to be SVR3-legit.
+ * t-m88k, t-m88kluna, t-m88kv4: Use the new names.
+
+ * c-aux-info.c, dbxout.c: Include errno.h as in protoize.c.
+
+ * Makefile.in (BISONFLAGS): Don't use -v since *.output is big.
+ (cp-parse.c): Do use -d to create cp-parse.h.
+ (cp-parse.o): Don't define PARSE_OUTPUT.
+ * x-mips, x-m88kdgux (BISONFLAGS): No -v.
+
+Mon Jan 6 07:54:55 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genpeep.c (match_rtx): Loop over vectors (e.g., PARALLEL) in the
+ natural order so we see an operand before we see a MATCH_DUP referring
+ to it.
+
+ * genrecog.c (write_tree_1): Simplify code that writes braces and
+ avoid writing them unnecessarily.
+ Don't write dead code when last test was unconditional.
+
+ * optabs.c (expand_binop, expand_twoval_binop, expand_unop):
+ Standardize loop for wider mode.
+ (emit_cmp_insn, emit_float_lib_cmp): Likewise.
+ (expand_binop): Correct how extensions are done: use convert_to_mode,
+ don't use SUBREG for non-integer operations, and remove test
+ involving HOST_BITS_PER_INT.
+ (expand_unop): Similar changes; make code closer to expand_binop.
+ Handle failure of recursive call when expanding. Fix incorrect use
+ of TEMP when widening. Use SUBREG for NEG and NOT.
+
+ * reload.c (find_reloads_address_part): New function.
+ (find_reloads_address): Call it instead of push_reload when we are
+ reloading a PLUS or a constant.
+
+Sun Jan 5 18:34:15 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Change file names from cp-tab.* to cp-parse.*.
+
+Sun Jan 5 18:06:11 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Correctly grok REFERENCE_TYPE
+ parameters when TYPE_REFERENCE_TO is automagically converted.
+
+Sun Jan 5 05:19:19 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tree.h (CONSTRUCTOR_NAME_FORMAT): New macro.
+ * objc-actions.c (build_module_descriptor): Make constructor name
+ from name of file or of a global that it defines.
+ Return constructor name.
+ (finish_objc): Use name returned as name to call.
+
+ * protoize.c (GUESSPATHLEN): New macro.
+ (main): Use that for initial buffer size for getcwd.
+ * dbxout.c (getwd, getcwd, GUESSPATHLEN): Define as in protoize.c.
+ (dbxout_init): Call getcwd in loop, as in protoize.c.
+ * c-aux-info.c (getwd, getcwd, GUESSPATHLEN): Define as in protoize.c.
+ (gen_aux_info_record): Call getcwd in loop.
+ * i386v.h, i386vgas.h (MAXPATHLEN): Don't define.
+
+ * svr3.h (LINK_SPEC): Don't pass -K.
+
+ * reload.c (find_reloads): Do record in non_reloaded_operands if no -O.
+
+ * m68k.c (output_function_prologue, output_function_epilogue):
+ Add braces and adjust conditionals to fix balance and indentation.
+
+ * objc-actions.c (build_module_descriptor): Mark __objc_file_init used.
+
+Sat Jan 4 13:27:40 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * protoize.c: unprotoize getcwd & fork declarations.
+ (edit_fn_declaration): use "VOLATILE", not "volatile".
+
+Sat Jan 4 20:19:41 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.h (set_volatile): Add new global variable reference.
+
+ * mips.c (set_volatile): New global variable to keep track of the
+ number of .set volatile's done. At present, no code actually turns
+ this on.
+ (mips_move_1word): Use %. instead of putting const0_rtx into an
+ unused operator and using %z to get to $0, which is hardwired to 0.
+ (mips_move_2words): Likewise.
+ (override_options): Allow %., %{, and %} punctuation.
+ (print_operands): Add support for %. to get the current name of
+ register 0, %{ to turn on .set volatile, and %} to turn on .set
+ novolatile.
+ (function_epilogue): Give an error if .set volatile was left on in
+ the epilogue.
+ (mips_asm_file_start): Don't emit .set nobopt unless we are filling
+ branch delay slots.
+
+ * mips.md (set reg on comparison define_splits): Don't allow the
+ scheduler to split any set of a comparision insns, to work around a
+ bug in sched.c.
+
+Sat Jan 4 23:01:41 1992 Jeffrey A Law (law at planet.super.org)
+
+ * m68k.c (output_function_prolog): Decrement (instead of
+ increment) num_saved_regs when a frame pointer is needed.
+ (the link/unlk will restore the frame pointer register)
+
+Sat Jan 4 11:11:24 1992 Dennis P. Glatting (dennisg at tti)
+
+ * next.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): #undef before defining.
+
+Sat Jan 4 07:40:25 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (convert_to_mode): Correctly zero-extend a constant into
+ a mode whose size is twice the host int size.
+
+ * machmode.h (enum mode_class): Add MAX_MODE_CLASS.
+ (GET_CLASS_NARROWEST_MODE): New macro.
+ (byte_mode, word_mode): Add declarations.
+ * caller-save.c (choose_hard_reg_mode): Use GET_CLASS_NARROWEST_MODE.
+ * combine.c (make_extraction): Don't use explicit QImode and SImode.
+ * cse.c (simplify_unary_operation): Integer CONST_DOUBLEs have
+ VOIDmode, not DImode.
+ (simplify_binary_operation): Remove explicit DFmode reference.
+ * expmed.c (init_expmed): Don't make our own copy of word_mode.
+ (store_bit_field, extract_bit_field): Remove explicit
+ QImode reference; don't recompute word_mode.
+ (store_fixed_bit_field, {store,extract}_split_bit_field): Don't
+ recompute word_mode.
+ (emit_store_flag): Likewise.
+ (extract_fixed_bit_field): Replace explicit mode references with a
+ loop on modes; don't recompute word_mode.
+ * expr.c (convert_mode, move_block_{to,from}_reg, use_regs): Don't
+ recompute word_mode.
+ (emit_push_insn, do_jump_by_parts*): Likewise.
+ (push_block): Remove explicit QImode reference.
+ (get_inner_reference): Use mode_for_size.
+ * emit-rtl.c (restore_reg_data): Make unused regs word_mode.
+ (operand_subword): Don't recompute word_mode.
+ * fold-const.c (optimize_bit_field_compare): Likewise.
+ (merge_component_references): Likewise.
+ * flow.c (mark_set_1, mark_used_regs): Likewise.
+ * loop.c (combine_movables): Use GET_CLASS_NARROWEST_MODE.
+ * optabs.c (expand_binop): Replace SImode references in multi-word
+ multiply with the mode used for each subpart.
+ (expand_binop, expand_unop): Don't recompute word_mode.
+ * reg-stack.c (reg_to_stack): Use GET_CLASS_NARROWEST_MODE.
+ * reload.c (find_equiv_reg): Check for MODE_FLOAT, not SFmode/ DFmode.
+ * rtl.c (class_narrowest_mode, byte_mode, word_mode): Define.
+ (init_rtl): Initialize them.
+ * sched.c (attach_deaths): Don't recompute word_mode.
+ * stor-layout.c (mode_for_size): Use GET_CLASS_NARROWEST_MODE.
+ (get_best_mode): Likewise.
+ Don't recompute word_mode.
+ * unroll.c (unroll_loop): Replace default of SImode with word_mode.
+
+ * calls.c (calls_alloca): Don't recurse on BLOCK_SUPERCONTEXT.
+
+Sat Jan 4 03:42:09 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * protoize.c (pointer_type): Use char * if non-ANSI.
+ (const_pointer_type): Likewise.
+ (malloc, realloc): Declare to return pointer_type.
+ (setjmp): Don't declare, to avoid trouble with macro defns.
+ (const): If not ANSI, define as empty macro.
+
+Sat Jan 4 00:59:53 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (legitimize_pic_address): When converting a symbol_ref,
+ use an extra temp reg when -fPIC, and add a REG_EQUAL note to the
+ insn referencing the global offset table. This allows loop to
+ optimize these PIC sequences.
+
+Fri Jan 3 20:29:57 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (return): Always output return insns.
+
+ * i386.h (FUNCTION_PROLOGUE): If the last nonnote insn in a function
+ is a BARRIER, don't output a function epilogue.
+
+Fri Jan 3 12:43:09 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * t-decrose, t-decstatn, t-encrose, t-i386rose, t-mips (ALL):
+ Use libgcc.a, not libgcc.
+
+ * protoize.c (STRINGIFY): Provide non-ANSI alternative definition.
+
+ * c-decl.c (get_parm_info): Keep non-parms in the parm list.
+
+ * stmt.c (cost_table): Now short.
+ (estimate_case_costs): Handle that.
+
+ * Makefile.in (float.h, *protoize.1, gcc.xtar.Z):
+ Make temp files, then rename.
+ (clean): Delete those temp files.
+
+ * Makefile.in (c-parse.c): Don't use -d, since cp-parse.output is big.
+
+Fri Jan 3 10:32:31 1992 Michael Tiemann (tiemann at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (cp-parse.c): Add missing -o flag.
+
+Fri Jan 3 08:21:04 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reg-stack.c: Complete last change (renaming DFmode_reg).
+
+ * expmed.c (init_expmed): Pass dummy pointer to number of clobbers to
+ recog so it can let us see patterns that need added clobbers.
+
+Fri Jan 3 07:54:32 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-decl.c (implicitly_declare): Record whether this is an implicit
+ declaration before setting IDENTIFIER_IMPLICIT_DECL.
+
+Thu Jan 2 21:17:12 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.c (compute_frame_size): Don't count FP registers twice.
+
+Thu Jan 2 14:59:55 1992 Michael Tiemann (tiemann at hal)
+
+ * cp-lex.h: Renamed from cp-parse.h. Now cp-parse.h is the file
+ created by bison from cp-parse.y.
+ * Makefile.in: reflect this naming change.
+
+Thu Jan 2 12:37:32 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (build_obj_method_call): Typo in NEXT case.
+
+ * next.h (HAVE_ATEXIT): Defined.
+
+ * c-decl.c (duplicate_decls):
+ No error if override decl that has DECL_BUILT_IN_NONANSI.
+
+ * Makefile.in (c-parse.c): Don't use -o, since cp-parse.output is big.
+
+ * Makefile.in (protoize, PROTOIZE): Delee these 2 new targets;
+ `protoize' was redundant.
+
+ * c-typeck.c (build_function_call): If the fn is volatile,
+ make a pointer-to-volatile-function type pointer.
+ * calls.c (expand_call): Handle calls to such pointers as volatile.
+
+ * expmed.c (init_expmed): Pass all 3 args to `recog'.
+
+ * varasm.c (output_constant): For REAL_TYPE, mode_for_size arg is bits.
+
+ * sparc.md (storing SF into mem at symb addr): Fix typos.
+
+ * protoize.c (my_access, my_stat, my_execvp, my_link, my_unlink):
+ (my_open, my_chmod): Macros that run access, stat,... with casts.
+ Renamed from former POSIX-only macros and made unconditional.
+ All calls to these functions also renamed.
+
+ * m68k.h (LEGITIMATE_PIC_OPERAND_P): Undo change below,
+ thus making the behavior really change to accept all CONST_DOUBLE.
+
+ * libgcc1.c, libgcc2.c: Renamed from gnulib1.c, gnulib2.c.
+ * gcc.c (link_command_spec): Link with libgcc.a.
+ * Makefile.in (libgcc): Rename targets and variables from gnulib.
+ * *.h, t-*, x-*: Rename refs to those symbols and files.
+ * expr.c (LIBGCC_NEEDS_DOUBLE): Renamed from GNULIB_...
+
+ * m68k.c (symbolic_operand): Reject all CONST_DOUBLE.
+ * m68k.h (SELECT_RTX_SECTION): Use LEGITIMATE_PIC_OPERAND_P.
+ (LEGITIMATE_PIC_OPERAND_P): Reject the CONST_DOUBLEs
+ that symbolic_operand used to accept.
+
+Thu Jan 2 21:06:13 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * protoize.c (is_id_char,free_def_dec,check_aux_info):
+ Don't declare them `inline'.
+ (save_def_or_dec,munge_compile_params,find_extern_def,check_source,
+ scan_for_missed_items): Use alloca instead of variable length arrays.
+
+ * Makefile.in (protoize,unprotoize): Get $(LIBS) for alloca.
+
+Thu Jan 2 21:40:52 1992 Jeffrey A Law (law at b115.super.org)
+
+ * sparc.h (OPTIMIZATION_OPTIONS): Enable caller-saves for -O2
+ and higher optimization levels.
+
+Thu Jan 2 06:46:56 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * final.c (final_scan_insn): Compare debug_info_level with entries in
+ its enum, not with integers.
+
+ * reg-stack.c ({SF,DF}mode_reg): Deleted.
+ (FP_mode_reg): New array, indexed by register and by mode.
+ (reg_to_stack): Replace initialization of old vars with initialization
+ of FP_mode_reg.
+ (replace_reg): Use new array.
+
+ * romp.c, romp.h, romp.md: Rename symbolic_operand to
+ romp_symbolic_operand.
+
+ * emit-rtl.c (init_emit_once): Create virtual registers before the
+ structure value regsisters, since the latter might use the former.
+
+ * varasm.c (output_constant): Fix typo: missing arg to expand_expr.
+
+ * vax.md (call_pop, call_pop_value): Use correct register number for
+ stack pointer. Add new patterns for case of zero args.
+
+Thu Jan 2 08:12:59 1992 Fred Fish (fnf at sunfish)
+
+ * x-amix: Minor changes to some comments.
+ * x-amix (CCLIBFLAGS, GNULIB2_CFLAGS, XCFLAGS): Remove definitions.
+ * x-amix (manext): Add definition.
+
+Thu Jan 2 11:14:28 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * fold-const.c (fold, case PLUS_EXPR): If association permits
+ reduction to var+0, convert var to the desired type before returning
+ it.
+
+Wed Jan 1 10:37:50 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * expr.c (convert_move): When GET_MODE_BITSIZE (TO_MODE) >
+ BITS_PER_WORD, check that it's also > GET_MODE_BITSIZE (FROM_MODE).
+
+ * expr.c (expand_expr): In CONSTRUCTOR case, preserve
+ MEM_IN_STRUCT_P when creating a new target when TARGET and EXP might
+ not be independent.
+
+Wed Jan 1 18:32:03 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-parse.y (parmlist_1): Accept `PARMS; PARMS'.
+ (parmlist_or_identifiers_1): Likewise. Also use plain parmlist_2.
+ Delete the ([names] decls) syntax.
+ (defn_parms, defn_parmlist_2): Deleted.
+ * c-decl.c (get_parm_info): Put parm decls into original order.
+ Don't nreverse the original decls list.
+ (pushdecl, duplicate_decls): Avoid error for forward parm decl.
+ (clear_parm_order): New function.
+ (push_parm_decl): Record original order of parms.
+
+ * c-decl.c (struct binding_level): New slot subblocks_tag_transparent.
+ (pushlevel): Use that, not ->parm_flag.
+ (start_function): Set that slot.
+
+ * config.sub: Always distinguish between amix and sysv4.
+ Convert commodore to cbm and digital to dec.
+
+ * m68k.md (stack adjust then push SI): New peephole.
+
+ * m68k.h, fx80.h (WCHAR_TYPE): Use precisely "long int".
+ * sun3.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Undef before defining.
+
+ * cexp.y (yylex): Use LONG_TYPE_SIZE, not INT_TYPE_SIZE.
+ (LONG_TYPE_SIZE): Add default definition.
+
+ * objc-actions.c: Declare index and rindex.
+ (build_module_descriptor): Simplify last change.
+ Use a fixed name for the initialization function.
+ (init_objc): Don't do constructor here.
+ (finish_objc): Do it here, with proper name if not NEXT_OBJC_RUNTIME.
+
+ * protoize.c: Unprotoized.
+ (edit_file): Improve message in -n case.
+
+ * Makefile.in (LANGUAGES): Add proto.
+ (C, C++, OBJC, OBJECTIVE-C): Aliases for l.c. targets.
+ (PROTOIZE, protoize, PROTO): Aliases for proto.
+ (rest.encap): Delete dep `proto'.
+
+Wed Jan 1 15:07:41 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.md (extend*): Use gen_lowpart to make the SUBREG, rather than
+ doing it wrong by hand. If not optimizing, make sign extends from
+ memory not force the operand into a register first and do two
+ shifts -- combine already does this when optimizing.
+ (copyright): Add 1992 to list of years the file was modified.
+
+Wed Jan 1 06:10:01 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): When forcing an illegitimate constant into
+ memory, use mode of SET_DEST in case constant is VOIDmode.
+
+ * stmt.c (expand_end_case): Pass index type to emit_case_nodes instead
+ of unsigned flag.
+ (node_has_{low,high}_bound): Accept INDEX_TYPE as an argument and see
+ if the a node value is at the limit of values of the type.
+ (node_is_bounded): Accept INDEX_TYPE and pass to above functions;
+ always call them.
+ (emit_case_nodes): Accept INDEX_TYPE instead of UNSIGNEDP as arg;
+ pass index type to recursive calls and to calls to bound checking
+ functions.
+
+ * varasm.c (assemble_integer_zero): Deleted.
+ (assemble_integer, assemble_real): New functions.
+ (output_constant_pool, output_constant): Use new functions.
+ * final.c (end_final, profile_function): Likewise.
+
+ * calls.c (calls_alloca): Don't interpret operands that are RTL as if
+ they were trees; check args of nested CALL_EXPR for alloca calls.
+
+Wed Jan 1 16:51:30 1992 Fred Fish (fnf at fishpond)
+
+ * Makefile.in (manext): Include the '.' character.
+ (mandir): Don't use manext.
+ (install-man, uninstall): Change uses of manext.
+
+Wed Jan 1 21:31:01 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i860.md (cmpeqsi, cmpltsi, cmpgtsi): Made control flow more obvious.
+ (cmpnesi, cmplesi, cmpgesi): New patterns.
+ (cmpgeusi, cmpleusi): Fixed bug in compares against zero.
+
+Tue Dec 31 11:16:37 EST 1991 Dennis P. Glatting (...!uunet!tti!dennisg)
+
+ * objc-actions.c (build_module_descriptor): Emit a constructor
+ function. Constructor function calls a ObjC run-time routine passing
+ a pointer to the module's module structure.
+ (init_objc): Call different constructor function if not Next.
+ (build_selector_translation_table): Don't give a selector global scope.
+ Changed in construction of decl_specs.
+
+Tue Dec 31 18:06:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genrecog.c (add_to_sequence): Clear PREDS for "const_int_operand".
+ (same_modes): Properly check when we should ignore a mode test.
+
+ * reload1.c (emit_reload_insns): Only change spill_reg_store for
+ output reloads.
+ Clear spill_reg_store when we did an input reload to a spill register.
+ (delete_output_reload): Use single_set.
+ (count_occurrences): Don't count use which is SET_DEST.
+
+Tue Dec 31 16:51:37 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.h (MIPS_VERSION): Change Meissner version # to 6.
+ (ASM_FINAL_SPEC): Don't pass -d and friends to mips-tfile.
+ (CONSTANT_ALIGNMENT): Align constructors on word boundaries.
+
+ * mips.md (extend*): Replace sign extension insns with a
+ define_expand that converts the expansion into the appropriate
+ shifts. Add insns that do sign extension from memory, which the
+ optimizer will utilitize if the thing being sign extended really
+ comes from memory. This allows the shifts to compete for CSE, at a
+ potential cost of generating worse code if reload spills a HI or QI
+ register to the stack.
+ (sne define_split): Instead of using a constant 0 as the second
+ argument to the slti instruction, use a hard coded regisiter 0.
+
+ * mips-sysv.h (MD_STARTFILE_PREFIX): Define to point into the
+ directory where the MIPS compilers live.
+ (LIB_SPEC): Add crtn.o after all libs.
+ (STARTFILE_SPEC): Use crt1.o, not crtn.o.
+ (MACHINE_TYPE): Correct typo, this is System V, not BSD.
+ Changes are from Ron Guilmette (rfg at ncd.com).
+
+ * configure (mips-*-sysv): Correctly use mips-sysv.h instead of
+ mips.h. Change is from Ron Guilmette.
+
+Tue Dec 31 16:51:37 1991 Michael Stump (mrs at charlie.secs.csun.edu)
+
+ * t-decrose, t-decstatn, t-encrose, t-i386rose, t-mips: Remove
+ collect2 from EXTRA_PASSES, as collect2 does not need installing as
+ collect2. Also, change the symlink back to a hard link.
+
+ * Makefile.in: Add collect2 to STAGESTUFF as it is something that
+ needs removing or moving to stagen, but it should not be installed.
+
+Tue Dec 31 15:47:50 1991 Michael Tiemann (tiemann at hal)
+
+ * combine.c (simplify_comparison): Swap evaluation of OP0 and OP1 so
+ the lattern can use the result of the former.
+
+ * conditions.h: In comments, refer to `tm.h', since `tm-' is no
+ longer the form used for these files.
+
+Tue Dec 31 11:45:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cp-lex.c (lineno, finput): Decls deleted.
+
+ * global-alloc.c (find_reg): New arg RETRYING.
+ (retry_global_alloc, global_alloc): Pass that arg.
+
+ * Makefile.in (*protoize, *protoize.o): Compile with CC.
+ * protoize.c: Include config.h, not tconfig.h.
+ Always define _POSIX_SOURCE.
+
+ * convex*.h (CPP_SPEC): !ansi controls _POSIX_SOURCE, _CONVEX_SOURCE.
+ * conv1*.h, conv2*.h: Files deleted.
+
+ * m68k.h, fx80.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Defined.
+
+Tue Dec 31 08:08:32 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * cexp.y (yylex): Record the parsed characters when dealing with
+ multibyte characters.
+
+Mon Dec 30 17:13:30 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (mulhi3,mulsi3): If a multiply by constant 128, use the
+ two operand multiply instead of three operand form: the AT&T
+ assemblers generate incorrect object code for the latter.
+
+Mon Dec 30 17:39:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Complete last change: use expand_and result.
+
+ * reload1.c (emit_reload_insns): Check if reload_in needs a secondary
+ reload if we have an in-out reload, since it might have been the
+ output the needed the secondary reload.
+
+ * cse.c (simplify_unary_operation): Mode of integer CONST_DOUBLE is
+ VOIDmode, not DImode.
+
+ * fold-const.c (fold, case COND_EXPR): Make an ABS_EXPR when the
+ comparison is LE_EXPR or LT_EXPR.
+
+ * calls.c (calls_alloca): New function.
+ (expand_call): Preexpand any argument that contains a call to alloca
+ if this call will use the stack.
+
+ * rs6000.h (DATA_SECTION_OP): Make result a string to avoid compilation
+ error.
+
+ * rs6000.h, sparc.h, sun2o4.h, sun3.h (WCHAR_TYPE_SIZE): Fix
+ incorrect definition.
+
+Mon Dec 30 16:10:46 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.h (CC1_SPEC): Complete change deleting -mnogpopt and -mngpopt
+ in favor of -mno-gpopt.
+
+Mon Dec 30 11:32:05 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-class.c (build_vtable): If we're doing #pragma interface
+ and the interface is known, set TREE_PUBLIC, regardless of
+ TREE_EXTERNAL settings.
+
+ * cp-decl.c (make_temporary_for_reference): Don't call
+ `convert_pointer_to', since the type may not be an aggr type.
+
+ * cp-decl.c (finish_decl): Now takes 4th arg NEED_POP.
+ All callers changed.
+
+ * cp-class.c (permanent_obstack): Declare it.
+ (add_method): push and pop obstacks before changing out of/into
+ temporary allocation.
+ * cp-decl.c (implicitly_declare): Add
+ push_obstacks_nochange/pop_obstacks around changes out of/into
+ temporary allocation.
+ (shadow_tag,xref_tag,start_decl,finish_decl): Ditto.
+ * cp-decl2.c (grokfield,get_temp_name): Ditto.
+ * cp-except.c ({ansi_}lookup_exception_object): Ditto.
+ * cp-lex.c (get_time_identifier): Ditto.
+ * cp-tree.c (build_exception_variant): Ditto.
+ * cp-typeck.c (mark_addressable): Ditto.
+
+ * cp-decl.c (grokdeclarator,maybe_build_cleanup): Delete calls to
+ preserve allocation status. Now handled by callers.
+
+Mon Dec 30 01:44:21 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-lex.c (yyprint): Function moved here.
+ * c-parse.y, objc-parse.y: Moved from here.
+
+ * Makefile.in (c-parse.c, objc-parse.c, cp-tab.c, cexp.c):
+ cd to srcdir to run Bison.
+
+ * c-lex.c (check_newline): Get rid of #ident pedantic warning.
+ * cccp.c (do_ident): Put it here.
+ Don't warn if in system header file.
+
+ * cccp.c (main, finclude): Warn if file ends in backslash-newline.
+
+ * next.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): New definitions.
+
+ * global-alloc.c (find_reg): Kick out local regs if that helps.
+ (global_alloc): Set up vars local_regs_live_length, local_regs_n_refs.
+
+ * protoize.c (do_processing): Fix setting syscalls_absolute_filename.
+
+ * configure (m68k-*-sysv4*, m68k-*-amix*): New alternatives.
+ * config.sub (*-commodore): Default OS to Amigados.
+ (-amix*): Allow this as input.
+ (amiga): New abbreviation.
+
+ * sparc.c (output_function_epilogue): Skip unimp differently in leaf.
+ Use jmp insn rather than separate add.
+ (output_return): Skip unimp here too.
+ * sparc.md (return "peepholes"). Handle skipping the unimp.
+
+ * fold-const.c (fold, optimizing 2*EXPR): Use save_expr.
+
+ * varasm.c (make_decl_rtl): Permit initializer for local explicit reg.
+
+ * c-decl.c (kept_level_p): Changed to also return TRUE for binding
+ levels which contain only tagged type declarations.
+
+ * calls.c (expand_call): Cleaned up prev change.
+
+Mon Dec 30 11:29:47 1991 Michael Tiemann (tiemann at mole.gnu.ai.mit.edu)
+
+ * cp-lex.c (real_yylex): Call REAL_VALUE_TRUNCATE with 2 args.
+
+ * calls.c (expand_call): Handle allocating ARGBLOCK in the case
+ that ACCUMULATE_OUTGOING_ARGS is not defined.
+
+Mon Dec 30 10:27:11 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * protoize.c: fix typo in <sys/wait.h> inclusion.
+
+Mon Dec 30 06:16:16 1991 Leonard Norrgard (vinsci at nic.funet.fi)
+
+ * c-decl.c (grokdeclarator): Changed erroneus error message.
+
+Sun Dec 29 16:16:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * toplev.c (main): Last -On option wins.
+ * Makefile.in (ENQUIRE_CFLAGS): Add -O0.
+
+ * Makefile.in (cp-tab.c): Change "expect" message.
+
+ * final.c (leaf_renumber_regs): Renumber just the PATTERN.
+
+Sun Dec 29 14:20:15 1991 Per Bothner (bothner at cygnus.com)
+
+ * dbxout.c (dbxout_type): Tiemann's DECL_IGNORED_P optimization (Nov
+ 20) was a little too drastic: If it succeded, no type info was
+ emitted at all, which made for syntactically invalid stabs.
+ Instead, just set 'full=0',
+ * dbxout.c (dbxout_symbol): Re-write code for TYPE_DECL to be a
+ little cleaner. It *seems* to work ...
+
+Sun Dec 29 07:04:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (convert_move): Add truncates from DImode to smaller modes.
+ (move_by_pieces, move_by_pieces_ninsns): Rework to remove explicit
+ references to integer modes.
+ Never need to align greater than BIGGEST_ALIGNMENT.
+
+ * optabs.c (init_extends, init_fixtab, init_floattab, init_optabs):
+ Add TImode operations.
+
+ * reload.c (find_reloads): Prefer alternatives that reload SCRATCH
+ instead of something else.
+
+ * rs6000.md (movti): Adjust constraints and alternative order so
+ we actually get to use the stsi insn.
+
+ * rs6000.h (REG_ALLOC_ORDER): Put r9 in front of r11 so we don't try to
+ put a TImode value in r11 as often.
+
+ * caller-save.c (setup_save_areas): New parameter pchanged; set when
+ memory is allocated.
+ * reload1.c (reload): Pass pointer to something_changed to
+ setup_save_areas.
+
+ * loop.c (scan_loop): Don't suppress moving insns that can trap just
+ because we have passed a call inside a libcall/retval block.
+
+ * jump.c (get_label_before): Don't separate a CALL_INSN from any USE
+ insns immediately preceeding it.
+ (get_label_after): Likewise, for following CLOBBERs.
+
+ * cse.c (fold_rtx, case '<'): When seeing if we have seen this
+ comparison before, use a constant equivalence.
+ Add test for things like "(a | 1) != 0".
+ (fold_rtx, case '2'): Move code to handle associative operations to
+ here; add support for MINUS, SMAX, SMIN, UMAX, and UMIN.
+ (record_jump_equiv): See if OP1 is equivalent to a constant.
+
+ * jump.c (jump_optimize): Don't pass a SUBREG as a target to
+ expand_and.
+
+ * combine.c (subst): Never associate floating-point, even if not IEEE.
+ Associate MAX and MIN operations.
+
+ * output.h (output_asm_insn, asm_fprintf): Add "extern" to decls.
+ (alter_subreg): Add declaration.
+ * rs6000.md (movsf, movdf): Don't declare alter_subreg here.
+ (trunc_call_rtl): Don't declare trunc_used; use rs6000_trunc_used.
+ * rs6000.c (rs6000_trunc_used): New name of trunc_used.
+ * rs6000.h (rs6000_trunc_used): Add declaration.
+
+Sat Dec 28 18:14:21 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-method.c (build_overload_name): Don't call OB_FINISH unless END
+ is nonzero.
+
+Sat Dec 28 17:46:05 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Handle -ansi in the C++ entries
+ exactly the same way as the C entries do.
+
+ * rtl.c (add_dependence): Cast enums to int before doing an
+ ordered comparison, since some compilers can't do this.
+
+ * sparc.c (pic_address_needs_scratch): New function. Returns
+ true if the pic address X needs a scratch register when loaded.
+ (legitimize_pic_address): Clean up. New argument SCRATCH, which
+ is a scratch register for those loads that need it.
+ (emit_move_sequence): New argument SCRATCH_REG, which is a scratch
+ register for those loads that need it. When loading a pic label,
+ set %o7 instead of clobbering it so its value can be used later.
+ (compute_frame_size): Leaf functions need to allocate space for
+ register window in frame if size greater than 0.
+ (print_operand): Delete obsolete %^ which added %o7 to addresses.
+ All uses of %o7 are now explicit.
+ * sparc.h: Fix callers of legitimize_pic_address.
+ (REG_CLASS_FROM_LETTER): Add 'r' case.
+ (SECONDARY_INPUT_RELOAD_CLASS): New macro, to force reload to
+ allocate a scratch register for certain pic address reloads.
+ (flag_pic): Define as extern so that it will be defined for
+ insn-emit.c.
+ * sparc.md: Fix all callers of legitimize_pic_address and
+ emit_move_sequence.
+ (reload_insi): New pattern. Used to force reload to allocate a
+ scratch register for those pic address loads that need one.
+ (reload_insi+2): When loading pic label, set %o7 instead of
+ clobbering it.
+ (movdf, movsf): Reject matches that would require reloading via
+ use of a condition.
+ (tablejump): Now a define_expand, so can generate different
+ pattern when pic.
+ (pic_tablejump): Explicitly mention in rtl that %o7 is used,
+ instead of using %^.
+
+ * m88k.h, sparc.h: Delete references to non-existent
+ BLOCK_PROFILER_USED_REG_P macro.
+
+Sat Dec 28 14:31:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-lex.c (check_newline): Set ignore_escape_flag for reading filename.
+ (yylex): Handle ignore_escape_flag in string constant.
+
+ * gnulib2.c (__do_global_dtors): Count elements properly.
+
+ * m68k.md (tsthi): Don't allow address register.
+
+Sat Dec 28 11:49:06 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * final.c (final): Initialize elements of line_note_exists.
+
+ * protoize.c: Don't include <sys/wait.h> on USG unless SVR4.
+
+Sat Dec 28 11:09:36 1991 Fred Fish (fnf at fishpond)
+
+ * Makefile.in (includes): Pre-remove the tmp dir; fix INSTALLED_H ref.
+
+Sat Dec 28 06:31:16 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * sparc.md (movstrsi): Fix typo testing for more than 32 subunits.
+
+ * genrecog.c: Major rework.
+ We now check to see if pairs of comparison nodes can have anything
+ that they both match. If not, they can be reordered. An efficient
+ ordering is established that groups all nodes with identical rtl
+ codes inside groups with identical modes. This allows us to generate
+ a comparison tree that is a list of nested switch statements.
+ Also, genrecog.c is now indented properly so that debugging is eased.
+ (add_to_sequence): Enforce mode on the first arg of COMPARE, comparison
+ operation, SIGN_EXTEND, and ZERO_EXTEND.
+
+ * a29k.h, romp.h, rs6000.h (PREDICATE_CODES): Add definition.
+
+Fri Dec 27 17:31:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.h, decrose.h, encrose.h, m88kdgux.h (WCHAR_TYPE_SIZE):
+ Add definition.
+ * rs6000.h, sparc.h, sun2o4.h, sun3.h, svr3.h, svr4.h: Likewise.
+
+ * expmed.c (expand_mult): For negative values, try multiplication by
+ the original value as well as by negated value.
+
+Fri Dec 27 20:54:59 1991 Fred Fish (fnf at fishpond)
+
+ * m68kv4.h: Include m68ksgs.h rather than m68k.h.
+
+ * m68kv4.h: Define TARGET_DEFAULT to be 68020 + 68881.
+ (CPP_SPEC): Define based on TARGET_DEFAULT
+
+ * m68kv4.h (PCC_STATIC_STRUCT_RETURN): Undef this.
+ (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Defs deleted.
+ (ASCII_DATA_ASM_OP, ASM_OUTPUT_ASCII): Defs deleted.
+
+ * m68kv4.h (ASM_OUTPUT_SKIP, FUNCTION_VALUE_REGNO_P):
+ (FUNCTION_PROFILER, STRUCT_VALUE_REGNUM, BSS_ASM_OP):
+ (FUNCTION_VALUE, FUNCTION_EXTRA_EPILOGUE, LIBCALL_VALUE):
+ (STACK_BOUNDARY, EMPTY_FIELD_BOUNDARY, BIGGEST_ALIGNMENT):
+ Redefined to match m68k/SVR4 conventions.
+
+ * m68ksgs.h (ASM_OUTPUT_SKIP): Redefined to use `.space'.
+ (ASM_NO_SKIP_IN_TEXT): Defined.
+
+ * amix.h, xm-amix.h, x-amix: New files.
+
+Fri Dec 27 20:43:11 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-tree.h (build_overload_name): Declare this function.
+ * cp-decl2.c, cp-method.c: Delete random `extern' declarations.
+
+ * cp-lex.c (get_directive_line): Declare it extern.
+ (lineno,yychar,yylval,lastiddecl,finput): Ditto.
+ (ridpointers): Don't need to declare it here.
+ (check_newline): Handle new #pragmas.
+
+ * cp-class.c (add_method): Add a cast in call to `obstack_base'.
+
+Fri Dec 27 20:22:05 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (push_overloaded_decl): Now returns a value.
+ All callers changed.
+
+ * cp-decl.c (duplicate_decls): Give better error message when user
+ declaration conflicts with built-in one. Also, when we decide to
+ keep a builtin function builtin, copy the DECL_RTL from OLDDECL to
+ NEWDECL.
+
+Fri Dec 27 17:18:15 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.h (TRAMPOLINE_TEMPLATE): Define correctly for MIPS.
+ (TRAMPOLINE_SIZE): Define to be 9 words.
+ (INITIALIZE_TRAMPOLINE): Define correctly for MIPS.
+ (TRANSFER_FROM_TRAMPOLINE): Define to do a mprotect of the
+ trampoline, so that we can jump to it. I suspect the mprotect may
+ fail on some MIPS based systems, because the trampoline is on the
+ stack, and not in the data section.
+
+ * mips.c (mips_output_filename): Don't warn about ECOFF not
+ handling #line's within functions if we are using the OSF/rose
+ object format.
+
+Fri Dec 27 15:35:38 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_array_ref): Special warning about `register' array.
+
+ * gnulib2.c (L_trampoline): Don't create a function here.
+ The definition of TRANSFER_FROM_TRAMPOLINE can do that if nec.
+ * m68k.h (TRANSFER_FROM_TRAMPOLINE): Make the function here.
+
+ * fx80.*: Renamed from alliant.*.
+ * configure: Alternative renamed to fx80-alliant-*.
+ * config.sub: Corresponding changes.
+
+ * cccp.c (traditional): No longer static.
+ * cexp.y (yylex): Handle full variety of character constants.
+ Include stdlib.h and locale.h if needed.
+
+ * c-decl.c (shadow_tag): Change warnings to error or pedwarn.
+
+ * gnulib2.c (__do_global_dtors): If length not given, count it.
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Ignore length; scan till null.
+ (__CTOR_END__, __DTOR_END__): Declarations deleted.
+
+ * cp-decl2.c (finish_file): Always change $ to _
+ regardless of NO_DOLLAR_IN_LABEL.
+
+Fri Dec 27 15:04:40 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * svr4.h (ASM_OUTPUT_ALIGNED_COMMON): Fix typo.
+
+ * m88k.c: Move extern decls.
+ (output_ascii): Use ASCII_DATA_ASM_OP.
+ * m88k.h (HAVE_ATEXIT): Delete.
+ (ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL,
+ ASCII_DATA_ASM_OP): Override svr4.h.
+ (EXTRA_SECTIONS): No ctors/dtors for m88k-luna.
+ * m88kdgux.h (STANDARD_STARTFILE_PREFIX): No need to override svr4.h.
+
+Fri Dec 27 11:34:59 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-pt.c (mangle_class_name_for_template): Use a local obstack
+ rather than fixed-size buffers.
+
+ * cp-class.c (add_method): Case obstack_base value to desired type
+ when reallocating vector node.
+
+Fri Dec 27 09:16:50 1991 Ron Guilmette (rfg at ncd.com)
+
+ * sort-protos: New file.
+
+ * i386.c: Remove decls of frame_pointer_needed; include flags.h.
+ * i386.c (output_387_binary_op, output_float_compare):
+ Moved declarations of strcat to top level.
+
+ * i860.md (cmpnesf, cmpnedf): New patterns.
+ * i860.md (cmplesf, cmpgesf): Corrected to allow for IEEE conformance.
+
+Thu Dec 26 11:20:07 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-class.c: Declare N_* variables here.
+ * cp-class.h: Declare N_* variables extern here.
+
+ * cp-gc.c (build_static_gc_entry): Call `assemble_gc_entry' instead
+ of implementing it directly.
+ * varasm.c (assemble_gc_entry): New function.
+
+ * calls.c (expand_call): Don't crash if somebody declared a void
+ function `const'.
+
+ * cp-cvt.c (convert): Handle case when two equal array types are
+ distinct (in memory).
+ * tree.c (build_index_2_type): Don't set TREE_TYPE of lower bound.
+ (index_type_equal): New function.
+
+ * cp-spew.c (yylex): Extend special-case ptr-to-func ((*)()) parsing
+ to handle (*)[] and (&)[] declarations as well.
+
+ * cp-decl2.c (finish_file): Unconditionally call
+ assemble_{constructor,destructor}. Also, delete code for writing
+ _init and _fini sections that was #if 0'd. These actions belong in
+ varasm if anywhere.
+
+ * cp-class.c (add_method): Fix handling of obstacks to correctly
+ extend TREE_VECs.
+
+Thu Dec 26 15:24:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Add new option -include. Rename -i to -imacros.
+ * gcc.c (SWITCH_TAKES_ARG): Remove -i.
+ (WORD_SWITCH_TAKES_ARG): Add -include, -imacros.
+ * hp800.h (WORD_SWITCH_TAKES_ARG): Add all the standard alternatives.
+ * mips.h (SWITCH_TAKES_ARG): Remove -Y and -i.
+ * next.h, sparc.h (WORD_SWITCH_TAKES_ARG): Add -include, -imacros.
+ * sun2.h, sun3.h (WORD_SWITCH_TAKES_ARG): Copy from sparc.h.
+ * svr4.h (SWITCH_TAKES_ARG): Remove -i, -f.
+ (WORD_SWITCH_TAKES_ARG): Add -include, -imacros.
+
+ * toplev.c (flag_gnu_linker): New variable. -fgnu-linker.
+ * flags.h (flag_gnu_linker): Declare it.
+ * varasm.c (assemble_constructor, assemble_destructor):
+ Handle flag_gnu_linker.
+
+ * sparc.md (structure values): Separate unimp pattern deleted.
+ New pattern for combined call and unimp. `call' pattern changed.
+ (type): Deleted type marker, added call_no_delay_slot.
+
+Thu Dec 26 05:04:28 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (move_for_stack_reg): If a SET_DEST is REG_UNUSED,
+ just pop the SET_SRC.
+
+Wed Dec 25 17:23:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing): Fix type of exit, _exit.
+
+ * jump.c (cross_jump_death_matters): Move def to front, make static.
+
+Tue Dec 24 20:41:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * hard-reg-set.h (reg_names): Declare here.
+ * stmt.c (expand_asm_operands): Not here.
+
+ * gcc.c (handle_braces, do_spec_1, give_switch): Clear up %*.
+
+ * expr.c (expand_expr): Delete decl of lang_expand_expr.
+
+ * final.c (final_scan_insn): Delete line number followed by another
+ line number, if numbers are effectively consecutive.
+
+ * jump.c (jump_optimize): Set cross_jump_death_matters from cross_jump.
+ * reg-stack.c (reg_to_stack): Pass 2 for cross_jump to jump_optimize.
+ Don't set cross_jump_death_matters here.
+ (record_reg_life): Delete decl of call_used_reg_set.
+
+ * c-decl.c (init_decl_processing):
+ Declare abort, exit, and _exit as volatile.
+
+ * c-decl.c (implicitly_declare): Set IDENTIFIER_IMPLICIT_DECL earlier.
+ (pushdecl): Test that and avoid nested extern warning.
+
+ * c-decl.c (init_decl_processing): Don't handle EXPAND_BUILTIN_VARARGS.
+
+Tue Dec 24 15:42:34 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-init.c (add_friends): Add missing IDENTIFIER_POINTER macro
+ application to strncmp argument.
+
+ * cp-method.c (build_overload_*): Now uses SCRATCH_OBSTACK instead
+ of relying on fixed buffers of finite length.
+ (fndecl_as_string): Ditto.
+ All callers changed.
+ * cp-except.c (cplus_exception_name): Definition moved to
+ cp-method.c.
+
+Tue Dec 24 10:38:49 1991 Michael Collison (collison at osf.org)
+
+ * ns32k.c (hard_regno_mode_ok): Define this as a function now.
+ Also change the way it work so that we don't allow moves between
+ the general registers and the floating point registers.
+
+ * ns32k.h (HARD_REGNO_MODE_OK): Turn it into a function call.
+
+ * ns32k.md (call_value): fix to correct a bug where the compiler thinks
+ the return value of a function call is in f0 instead of r0. Fix
+ courtesy of vince russo.
+ (movqi, movhi): Fix up these patterns because they could return
+ undefined instruction templates. Fix courtesy of vince russo.
+
+Tue Dec 24 10:14:20 1991 Ron Guilmette (rfg at ncd.com)
+
+ * mips-tfile.c (main): Move nested extern decl of version_string to
+ file-scope.
+ (catch_signal): Move nested extern decl of sys_siglist to
+ file-scope.
+
+ * varasm.c (assemble_variable): Handle ASM_OUTPUT_ALIGNED_COMMON.
+ * svr4.h (ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL): New.
+ (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Deleted.
+
+ * gcc.c (SWITCH_TAKES_ARG, default_compilers): Eliminated -Y* option.
+ (execute): Moved decls of execv and execvp to top level.
+ (do_spec, do_spec1, handle_braces, give_switch): Support new %* spec.
+
+ * c-lang.c (recognize_objc_keyword): Added explicit return.
+
+ * svr4.h (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): New definitions.
+ (ASM_SPEC, LINK_SPEC): Support more standard svr4 options.
+ (LIB_SPEC): Fixed to link crtend.o *after* libc.a.
+
+ * svr4.h (CONST_SECTION_FUNCTION): Moved decl of `text_section' to
+ top level.
+
+ * cexp.y (main): Add explicit return type and explicit value.
+ Move decl of yydebug to top level.
+
+ * gnulib2.c (__bb_init_func): Moved decl of ___tcov_init to top level.
+
+ * toplev.c (main): Deleted obsolete checks for -opt and -noreg.
+ Moved decls of environ, version_string, language string to file-scope.
+ Compile-time error if PREFERRED_DEBUGGING_TYPE is missing.
+
+ * tree.c (dump_tree_statistics): Deleted decl of class_obstack.
+ (object_permanent_p): Added explicit return type.
+
+Tue Dec 24 09:29:24 1991 Charles Hannum (mycroft at hal.gnu.ai.mit.edu)
+
+ * expr.h (lang_expand_expr): Fix typo.
+
+Tue Dec 24 06:52:45 1991 Michael Meissner (meissner at osf.org)
+
+ * gnulib2.c (__main): Make sure the exit module is pulled in if we
+ have atexit, since that module defines constructor/destructor
+ variables as bss symbols rather than as references.
+
+ * decrose.h (HAVE_ATEXIT): Define.
+ * encrose.h (HAVE_ATEXIT): Define.
+ * i386rose.h (HAVE_ATEXIT): Define.
+ * decstatn.h (HAVE_ATEXIT): Define.
+
+ * gcc.texinfo (HAVE_ATEXIT): Expand documentation.
+ (EXIT_BODY): Document.
+
+ * protoize.c (POSIX): Make protoize accept TARGET_POSIX as a synonym
+ for POSIX to make the code and documentation agree. Also, if the
+ user defined _POSIX_SOURCE explicitly, turn on POSIX support in
+ protoize.
+
+Tue Dec 24 00:14:38 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * calls.c (emit_call_1): Additional arg STRUCT_VALUE_SIZE.
+ Use as arg in call and call_value insns.
+ (expand_call): Record the size, to pass it.
+ * expr.c (emit_library_call): Pass 0 for STRUCT_VALUE_SIZE.
+ * sparc.md (call, call_value): Make use of new arg.
+ Generate an unimp instruction to use sparc calling convention.
+ Add nameless pattern to recognize it.
+ * sparc.c (output_function_epilogue): Skip the caller's unimp insn.
+
+ * Makefile.in (INSTALLED_H): New variable.
+ (includes): Preserve just those specific files.
+
+ * expr.h (lang_expand_expr): Declare it.
+ * expr.c: Don't declare it.
+ * cp-expr.c (init_cplus_expand): Set up lang_expand_expr here.
+ * cp-lex.c (init_lex): Call init_cplus_expand.
+
+Mon Dec 23 15:17:59 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * configure: Delete m88k-v88r32 (this is supported by m88k-svr3)
+ and add m88k.
+ * config.sub: Delete v88r as a system type.
+
+Mon Dec 23 19:50:48 1991 Fred Fish (fnf at fishpond)
+
+ * 3b1.h, crds.h, hp320.h, m68k.md, m68ksgs.h, mot3300.h, news.h,
+ tower-as.h: Replace port oriented macros SGS_3B1, HPUX_ASM, and
+ SONY_ASM, with configuration oriented macros SGS_SWITCH_TABLES,
+ SGS_SWAP_W, SGS_CMP_ORDER, and SGS_NO_LI.
+
+ * m68ksgs.h: New file.
+
+ * m68k.c (print_operand_address): Change switch labels for MOTOROLA.
+ Don't use a `%'. Add missing `L' to some labels.
+ For SGS assembler, use one symbol for the offset.
+
+Mon Dec 23 17:03:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * recog.h (insn_name): New declaration.
+ * final.c (output_asm_insn): Don't declare insn_name here.
+
+ * dbxout.c (dbxout_function, dbxout_begin_function):
+ Pass missing arg to dbxout_really_begin_function.
+
+ * jump.c (jump_optimize): Set new var can_reach_end.
+ * c-decl.c, cp-decl.c (finish_function):
+ Merge that into current_function_returns_null.
+
+ * config.sub (fx2800): New machine alias.
+
+ * va-m88k.h (va_start): Test __GNUC__, not __CLASSIFY_TYPE__.
+
+ * m88kv4.h: New version from Wood.
+ (CPP_PREDEFINES): Put -A options here. Remove __CLASSIFY_TYPE__.
+
+ * cccp.c (initialize_builtins): Define __GNUC__ as 2.
+
+ * rtl.h (read_rtx): New declaration.
+
+ * c-lex.c: Don't include output.h.
+ (asm_out_file): Declare it.
+ (ridpointers): Allocate storage here.
+
+ * c-lex.h (lastiddecl, token_buffer): Declare here.
+ (yylex, make_pointer_declarator, reinit_parse_for_function): Likewise.
+ * c-parse.y, objc-parse.y: Not here.
+
+ * objc-actions.c (error_with_ivar, error_with_method):
+ (warn_with_method): Use count_error, not errorcount.
+
+Mon Dec 23 11:50:37 1991 Ron Guilmette (rfg at ncd.com)
+
+ * sdbout.c: Fixed typo.
+ * stmt.c (init_stmt, init_stmt_for_function): Explict return type.
+ * gnulib2.c (__fixunsdfdi, __fixunssfdi): Move extern decls.
+ * recog.c (init_recog): Added explicit return type.
+ * longlong.h (count_leading_zeros): Moved decl of `__clz_tab'.
+ * print-rtl.c (insn_name_ptr): Make decl `extern'.
+
+ * objc-actions.h, objc-actions.c (doing_objc_thang): Make extern.
+ * objc-actions.h, objc-actions.c (finish_class): Return void.
+ * objc-actions.c (continue_class): Added default error return value.
+
+ * fixinc.svr4: Map assertion tests to equivalent ANSI macro tests.
+
+ * i860.c (output_block_move): Disabled code to move by words or
+ halfwords until it can be made to work right.
+
+ * i860.c (output_block_move): Moved a sequence of common
+ `output_asm_insn' calls out of (and before) conditionals.
+
+ * i860.c (output_block_move): Corrected bugs in move loop.
+
+Mon Dec 23 15:25:01 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kv4.h (CPP_PREDEFINES): Fix for varargs/stdarg.
+ (includes): Include svr4.h before m88k.h so the overrides in m88k.h
+ will take effect.
+
+Mon Dec 23 07:06:27 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * i860.c (output_delayed_branch): Call insn_extract and
+ constrain_operands so that `which_alternative' is set properly.
+
+ * stor-layout.c (layout_type, case ARRAY_TYPE): Handle
+ TYPE_NO_FORCE_BLK similar to RECORD_TYPE.
+
+ * encrose.h, i386rose.h, mips.h (LIBG_SPEC): Deleted; unused.
+
+Sun Dec 22 12:02:03 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (function_epilogue): Use correct operand for insn mode.
+
+Sun Dec 22 12:20:16 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC for member
+ functions that are really declared as inline methods.
+
+ * cp-init.c (build_virtual_init): Add missing call to
+ `assemble_external' when we use a virtual function table.
+
+ * cp-decl.c (implicitly_declare): Don't allocate a decl if at the
+ global binding level.
+
+ * vax.h (PRINT_OPERAND): Handle new 'R' case.
+ * vax.md: Change all patterns which passed a negated operand for
+ `rotl' to use 'R' as the negator, since rotl cannot acctually handle
+ negative arguments.
+
+Sun Dec 22 12:31:46 1991 Ron Guilmette (rfg at ncd.com)
+
+ * i386v4.h (TARGET_VERSION): Added definition.
+ * i860v4.h (TARGET_VERSION): Added definition.
+
+ * m68kv4.h: New file.
+ * fx2800.h: New file.
+
+ * m88kv4.h (DWARF_DEBUGGING_INFO): Deleted redundant definition.
+ (It's defined already in svr4.h.)
+
+ * m88kv4.h (CPP_PREDEFINES): Added definition.
+
+ * m88kv4.h (CPP_SPEC, LIB_SPEC, LINK_SPEC, STARTFILE_SPEC):
+ Deleted redundant definitions. (These are defined in svr4.h.)
+
+ * cccp.c (errno, sys_nerr, sys_errlist): Moved extern decls to top lev.
+ * function.c (round_down): Likewise.
+ * calls.c, c-convert.c: Delete block-level extern decls.
+ * c-convert.c: Include flags.h.
+
+ * configure (i386-*-sysv*): Fixed tmake_file value.
+ (i860-*-sysv3*): Fixed xmake_file and tmake_file value.
+ (i860-alliant-*): New configuration.
+
+ * i860.c (recog_operand, call_used_regs, insn_template,
+ insn_n_operands, insn_outfun, alter_subreg): Moved extern
+ declarations out of local contexts and put them at file-scope.
+
+ * i860.c (zero_operand): Deleted useless function.
+
+ * i860.c (singlemove_string): Added code to optimize moving halfword
+ constants.
+
+ * i860.c (output_block_move): Don't do CC_STATUS_INIT until it is
+ definitely necessary & appropriate.
+
+ * i860.c (output_block_move): Create up to 16 sequential load/store
+ pairs for constant length moves regardless of operand sizes (e.g.
+ byte, halfword, word).
+
+ * i860.c (output_block_move): Try to generate widest kind of
+ sequential load/store pairs for constant length moves before trying
+ the less efficient (narrower) ones.
+
+ * i860.c (output_block_move): Don't do sequential load/store pairs
+ for constant length moves unless the size is a multiple of the
+ size of the operands moved each time (i.e. word, halfword, byte).
+
+ * i860.c (output_block_move): Re-wrote code to do inline variable
+ length block moves to correct fatal errors (e.g. no check for zero
+ or neagtive start count) and to make it more efficient (saved 1 cycle
+ per iteration).
+
+ * i860.c (output_block_move): Make variable length moves with starting
+ alignment of 4 or 2 `#if 0' for now, until they can be fixed to work
+ right. Also reordered all three cases so that longer alignments are
+ checked for first.
+
+Sun Dec 22 01:25:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * i386v4.h: Include svr4.h just once.
+
+ * protoize.c (fprintf, printf): Decls put in #if 0.
+
+ * emit-rtl.c (stack_slot_list): Delete superfluous extern decl.
+ (emit): Abort if arg isn't recognized.
+
+ * c-parse.y (current_declspecs, declspec_stack): Declare static.
+ (undeclared_variable_notice): Likewise.
+ (lastiddecl): Declare extern.
+ * objc-parse.y: Same changes as c-parse.y.
+ (token_buffer): Declare extern.
+
+ * c-lex.c: Include output.h.
+ (check_newline): Decl of asm_out_file deleted.
+
+ * c-lex.h (ridpointers, NORID): Declare/define here.
+ * c-lex.c, c-parse.y, objc-parse.y: Not here.
+
+ * sun3.h (WORD_SWITCH_TAKES_ARG): Add `-assert'.
+ (LINK_SPEC): Pass -assert to linker.
+
+ * gbl-ctors.h (__CTOR_END__, __DTOR_END__): Remove `extern'.
+
+ * sparc.h (RTX_COSTS): Increase multiply cost to 20.
+ (MULSI3_LIBCALL): Use .umul.
+ (UMULSI3_LIBCALL): Deleted.
+
+Sat Dec 21 18:34:27 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_comparison): Allow OP0 to be VOIDmode if it
+ is a COMPARE or a comparison operation.
+
+ * i860.md (bte): Remove now unneeded patterns.
+ Correct mode mismatch errors in patterns that will now be used.
+
+Sat Dec 21 00:14:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * ns32k.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Dummies deleted.
+ (INITIALIZE_TRAMPOLINE): Likewise. #error inserted.
+
+ * ns32k.c (print_operand_address): For invalid address, just abort.
+
+ * Makefile.in (FIXINCLUDES): New variable.
+ (includes, maketest): Use that.
+ * x-i386v4 (FIXINCLUDES): Override here.
+
+Fri Dec 20 18:28:54 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_really_begin_function): New subroutine.
+ (dbxout_function): Use that, but only if not DBX_FUNCTION_FIRST.
+ (dbxout_begin_function): New function.
+ * varasm.c (assemble_start_function): Call dbxout_begin_function.
+
+ * dbxout.c (dbxout_function): Implement DBX_OUTPUT_FUNCTION_END.
+
+ * sparc.md (movstrsi): Add missing double quote.
+
+ * gcc.c (process_command): Handle -Xlinker.
+
+ * calls.c (expand_call): Treat vfork like setjmp.
+
+ * c-decl.c (implicitly_declare): Use push_obstacks_nochange.
+
+ * sparc.h (WORD_SWITCH_TAKES_ARG): Add -assert.
+ (LINK_SPEC): Pass -assert to linker.
+
+ * svr4.h (ASM_OUTPUT_LOCAL): Fix typo.
+
+Fri Dec 20 07:52:19 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl2.c (lang_decode_option): Recognize more -fno-OPTION
+ options which need special treatment (in the turning off of the
+ option).
+
+ * cp-parse.y (named_class_head_sans_basetype_either): Rule deleted.
+ (identifier_either): Rule deleted.
+ (delete): Don't call `build_x_delete'' if the type does not have a
+ destructor. We may still need to adjust the address passed to
+ `operator delete'.
+
+ * cp-init.c (build_delete): New argument MAYBE_ADJUST. All callers
+ changed. Also, add #if 0/#endif around code dealing with ALIGNMENT.
+ It's dead code, and that's unclear otherwise.
+ (maybe_adjust_addr_for_delete): New function.
+ (build_new): Initialize special header for arrays allocated with
+ `operator new[]'. This is a rewrite of Ken's code.
+ (init_init_processing): New built-in type BI_header_type.
+
+ * cp-init.c (build_{new,delete}): Call `build_builtin_call' for BIN,
+ BID.
+ (build_builtin_call): New function.
+
+ * cp-decl.c (grokvardecl): Set TREE_EXTERNAL.
+ (grokdeclarator): Set TREE_PUBLIC for all member functions. They
+ are effectively global. Do the same for static members.
+ (start_function): Don't clear TREE_EXTERNAL in case the function
+ belongs to another file's implementation. Other fixes to
+ TREE_PUBLIC/TREE_EXTERNAL logic based on interface/implementation.
+
+ * cp-method.c (hack_identifier): Call `assemble_external' if
+ necessary.
+
+Fri Dec 20 06:27:38 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (emit_reload_insns): Always record first insn emitted
+ for a reload, including any insns for a secondary reload.
+ (gen_input_reload): Correct documentation of function.
+
+Thu Dec 19 22:01:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gnulib1.c (perform_fixdfsi): New customization macro.
+
+ * svr4.h (SELECT_RTX_SECTION): Undef before defining.
+
+Thu Dec 19 16:59:12 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * cccp.c (hack_vms_include_specification): Make conversion of
+ filenames more versatile for user specified include directories.
+
+Thu Dec 19 17:38:18 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.h (#error's): Put tab in front of all #error's, so that
+ ancient pre-ANSI compilers will not complain about unknown
+ directives, even if the #error is #ifdef'ed out.
+
+ * mips.md (fix_trunc*): Reorder constraints so that 'd' comes before
+ 'f', and put a '*' in front of 'f' constraints to keep integer in
+ the GP registers.
+ (define_splits): Add reload_completed check for all define_splits
+ that use subreg on the arguments to work around bug in sched.c.
+
+ * cccp.c (lang_asm): New static variable to indicate we are
+ processing an assembly file and to ignore unknown directives in case
+ they are comments, like they are on the MIPS systems.
+ (main): Set lang_asm if -lang-asm switch.
+ (handle_directive, skip_if_group): Don't report about unknown
+ directives if lang_asm is set.
+
+ * gcc.c (default_compilers array): Pass -lang-asm to cpp when
+ processing .S files instead of -lang-c.
+
+Thu Dec 19 15:06:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (c_decode_option): Handle -fno-ident.
+ * c-lex.c (check_newline): Ignore #ident for -fno-ident.
+
+ * svr4.h (ASM_OUTPUT_LOCAL): Use assemble_name.
+
+ * mips.h: Use #error, not #include, for error messages.
+
+ * cccp.c (warning, main): Implement -Werror.
+
+ * i386sco.h (CPP_SPEC): Move non-fixed option here.
+ (CPP_PREDEFINES): From here.
+
+ * gcc.c (do_spec_1): For %p, just pass -D options.
+ For %P, pass all -A options. Put in whitespace, fix typos.
+
+ * c-parse.y (parmlist_2, defn_parmlist_2): Warn about (...).
+ * c-decl.c (get_parm_info): Don't warn here.
+
+Thu Dec 19 06:15:46 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * toplev.c (compile_file): Avoid ordered comparison of debug_info_level
+ since it is an enum.
+
+ * mips.c: Include gstab.h.
+
+ * sparc.md: Fix typo.
+
+ * caller-save.c (save_call_clobbered_regs): Don't save regs that
+ die in a CALL_INSN or that are born there.
+
+Thu Dec 19 04:28:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-aux-info.c (gen_aux_info_record): Don't write space at line beg.
+
+Wed Dec 18 11:46:13 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * cse.c (cse_main): Use get_max_uid rather than computing it.
+
+Wed Dec 18 18:13:06 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (scan_loop): Ensure replacement made by single-use code
+ is not modified in the life of the register being replaced.
+
+Wed Dec 18 15:37:52 1991 Ron Guilmette (rfg at ncd.com)
+
+ * rtl.h (fconst2_rtx, dconst2_rtx): Added extern declarations.
+
+ * flags.h (flag_inhibit_size_directive): Declared.
+
+ * svr4.h (INT_ASM_OP, INIT_SECTION_ASM_OP): Moved around.
+ (ASCII_DATA_ASM_OP): Definition added.
+ (flag_inhibit_size_directive): Deleted superfluous extern decls.
+
+ * Makefile.in: Correct number of expected shift/reduce conflicts
+ reported by bison for cp-parse.y.
+
+ * sparcv4.h: New file.
+
+ * i860.h (FUNCTION_ARG_BOUNDARY): Added definition.
+ (sfmode_constant_to_ulong): Added extern declaration.
+
+ * i860.md (BTE/BTNE patterns): Changed all instances of
+ `(match_operand:SI 2 "zero_operand" "J")' to `(const_int 0)'.
+
+ * i860.md (load then BTE/BTNE patterns): Added 8 new patterns,
+ for cond branch on EQ/NE of a zero-extended memref with small integer.
+
+ * i860.md: 20 new patterns (involving BTE/BTNE) like existing 20
+ but simplified so that the combiner will find them.
+
+ * i860.md (sfmode_constant_to_ulong, fconst2_rtx): Removed
+ superfluous nested extern declarations.
+
+Wed Dec 18 15:39:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * va-i860.h (va_start for stdarg.h): Divide reg counts by 4.
+
+ * stmt.c (emit_case_nodes): Fix typo, near testing cost_table.
+
+ * i860.h (CUMULATIVE_ARGS): Define a named struct, then use it.
+
+ * function.c (expand_function_start): Compute sizes in proper order.
+
+ * svr4.h (MD_STARTFILE_PREFIX): Defined.
+ (STANDARD_STARTFILE_PREFIX): Deleted.
+
+ * sparc.md (movstrsi): Disable if needs more than 32 insns.
+
+ * expr.c (store_expr): Handle copying too-short STRING_CST.
+
+ * gstdarg.h (_VA_LIST): Handle this like _VA_LIST_.
+
+ * m68k.h (LOCAL_LABEL_PREFIX): Remove the `L'.
+ Fix uses of %L by adding `L'.
+ * m68k.c (print_operand_address): Fix use of %L.
+ * m68k.md (movhi): Fix use of %L. They were inconsistent.
+
+Wed Dec 18 14:59:26 1991 Michael Meissner (meissner at osf.org)
+
+ * limits.h (whole file): Protect against inclusion.
+
+ * t-decrose (LIMITS_H): Don't install limits.h on OSF/1.
+ * t-encrose (LIMITS_H): Don't install limits.h on OSF/1.
+ * t-i386rose (LIMITS_H): Don't install limits.h on OSF/1.
+
+ * x-decrose (SYSTEM_INCLUDES): Don't do -I/usr/include.
+ * x-encrose (SYSTEM_INCLUDES): Don't do -I/usr/include.
+ * x-i386rose (SYSTEM_INCLUDES): Don't do -I/usr/include.
+
+Wed Dec 18 04:53:23 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-init.c (build_new): Rewrote some of the array-handling code.
+ Now stores the number of elements (after stripping off all outer
+ ARRAY_TYPE nodes) at the start of allocated storage, just before the
+ pointer the user's program sees. We also store the 2s compliment
+ value of the pointer returned so we can distinguish when deleting a
+ pointer whether it was "adjusted" or not.
+ (expand_vec_init): Added a type conversion for cases when the
+ address of an array gets passed in and we want to deal with the
+ elements.
+ (build_delete): Catch a case where deletion of arrays could slip
+ through.
+ (build_vec_delete): More array-handling rewrites. Extract the
+ stored value and use it as the number of objects to destroy; ignore
+ any value supplied by the user.
+
+ * cp-init.c (init_vfields): Now static.
+
+ * cp-tree.h (struct lang_decl_flags): Merged "dummy" fields.
+
+ * cp-tree.h (DECL_TEMPLATE_INSTANTIATIONS): New macro for finding a
+ list of instantiations already made of a template. (Only
+ implemented for functions currently.)
+ * cp-tree.def (DECL_TEMPLATE_INSTANTIATIONS): Describe it.
+ * cp-pt.c (instantiate_template): Maintain and make use of it.
+
+ * cp-pt.c (tsubst, case REFERENCE_TYPE): Call build_reference_type
+ instead of constructing the type here.
+
+Wed Dec 18 03:37:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-parse.y (label_decl): Use identifiers_or_typenames.
+
+ * c-parse.y: Support FUNCTION ([ARGNAMES] DECLS) {...}.
+ (defn_parmlist_2, defn_parms): New nonterminals.
+ (identifiers_or_typenames): New nonterminal.
+ (parmlist_or_identifiers_1): Changed.
+ * c-decl.c (combine_parm_decls): New function.
+
+Tue Dec 17 22:18:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (expand_main_function): Build SYMBOL_REF with Pmode,
+ not VOIDmode.
+
+ * rs6000.h (HARD_REGNO_NREGS, CLASS_MAX_NREGS): FP regs can only hold
+ 64 bits, not any size FP value.
+
+ * reload1.c (reload): Remove variable old_caller_save_needed.
+ Call init_save_areas and setup_save_areas instead of
+ allocate_save_areas and elim_save_addrs.
+ * caller-save.c (init_caller_save): New function, from part of
+ allocate_save_areas.
+ (setup_save_areas): New function, from rest of allocate_save_areas
+ and elim_save_addrs.
+ When scanning pseudos to find hard regs that might need caller-save,
+ look at all parts of multi-word registers.
+
+ * flow.c (elim_reg_set): New variable.
+ (flow_analysis): Set it to contain those regs that we can eliminate.
+ (mark_used_regs): Don't set eliminable regs as live when they are used.
+
+ * global-alloc.c (global_alloc): Clear preferences with eliminable
+ regs, in addition to clearing conflicts.
+
+ * reload.c (find_reloads_toplev): Abort instead of making
+ a SUBREG of a VOIDmode constant.
+
+ * emit-rtl.c (copy_rtx_if_shared): SCRATCH may always be shared.
+
+Tue Dec 17 21:06:03 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.h (MIPS_VERSION): Bump MM version number to 5.
+ (processor_type): New enum to hold which type of
+ processor to schedule for.
+ (mips_cpu): New global to hold processor type.
+ (MASK_*, TARGET_*): Rearrange target bits, add bits to select
+ processor type, r4000 int/long/long long sizes.
+ (TARGET_SWITCHES): Delete redunant no options, only leave no-
+ version.
+ (CUMULATIVE_ARGS): Make this a structure, not a pointer to a
+ structure.
+ (INIT_CUMULATIVE_ARGS): CUMULATIVE_ARGS changes.
+ (FUNCTION_ARG_ADVANCE): Ditto.
+ (FUNCTION_ARG): Ditto.
+ (FUNCTION_ARG_PARTIAL_NREGS): Ditto.
+ (RTX_COSTS): Count simple memory refs as one instruction.
+ (REGISTER_MOVE_COST): Define as 4, to make sure constraints are
+ checked.
+
+ * mips.md (hilo type attribute): Add hilo type attribute to
+ separate moves to/from the hi/lo registers with other register
+ transfers.
+ (move patterns): Set hilo attribute as appropriate.
+ (define_function_units): Update the integer and memory functional
+ units to include R4000 and R6000 processors, keyed off of the
+ -mr[46]000 switches. Add a new functional unit for transfering
+ stuff between register sets.
+ (mov{sf,df}_xfer*): Remove these patterns, as they are no longer
+ needed in GCC 2.00 to move between the different register sets,
+ and generate insn not found messages if used.
+ (movsi_ulw, movsi_usw): Correct test to see if stack loads are
+ aligned. Use UNITS_PER_WORD-1 instead of a hard coded 3.
+ (move define_expands): Delete move define_expands, since they are
+ illegal according to the documentation, and the bug they guard
+ against has long ago been fixed.
+
+ * mips.c (mips_cpu): New global to hold processor type.
+ (override_options): Set mips_cpu, check for 64 bit r4000 switches
+ if processor not a r4000.
+ (init_cumulative_args): CUMULATIVE_ARGS changes.
+ (function_arg_advance): Ditto.
+ (function_arg): Ditto.
+ (function_arg_partial_nregs): Ditto.
+ (mips_output_filename): Except for first .file, don't emit any other
+ .file if encapsulating stabs in ECOFF, just put out stabs. This
+ confuses gdb.
+ (mips_output_lineno): Don't put out .loc's if encapulating stabs in
+ ECOFF.
+ (mips_asm_file_start): Put a .set nobopt for MIPS assembler to
+ work around bug where the assembler goes bonkers if a branch
+ inside of a .set noreorder section jumps to a label outside of a
+ .set noreorder section. This is supposed to be fixed in 2.20 of
+ the assembler.
+ (function_epilogue): Correctly emit nops with tabs and newlines if
+ needed.
+
+ * decrose.h (OBJECT_FORMAT_ROSE): Define, to tell collect to
+ enable OSF/rose support, rather than use nm.
+
+ * encrose.h (OBJECT_FORMAT_ROSE): Define, to tell collect to
+ enable OSF/rose support, rather than use nm.
+
+ * i386rose.h (OBJECT_FORMAT_ROSE): Define, to tell collect to
+ enable OSF/rose support, rather than use nm.
+
+ * t-decrose (EXTRA_PASSES): Build collect2 instead of collect-osf,
+ and link it to ld.
+
+ * t-encrose (EXTRA_PASSES): Build collect2 instead of collect-osf,
+ and link it to ld.
+
+ * t-i386rose (EXTRA_PASSES): Build collect2 instead of collect-osf,
+ and link it to ld.
+
+ * x-decrose (DEBUG): Delete -g, since CFLAGS already passes it.
+ (GCC_CFLAGS): Define POSIX so we can build protoize.
+
+ * x-encrose (DEBUG): Delete -g, since CFLAGS already passes it.
+ (GCC_CFLAGS): Define POSIX so we can build protoize.
+
+ * x-i386rose (DEBUG): Delete -g, since CFLAGS already passes it.
+ (GCC_CFLAGS): Define POSIX so we can build protoize.
+
+ * t-decstatn (EXTRA_PASSES): Explicitly mention collect2.
+ (ld): Use $(SYMLINK) rather than just ln.
+
+ * t-mips (EXTRA_PASSES): Explicitly mention collect2.
+
+ * collect2.c (whole file): Rewrite file based on collect-osf, to
+ make it more portable. Highlights include: running ld only once if
+ there are no constructors; OSF/rose support; not assuming that the
+ linker, assembler, nm live in /bin; -v support to trace the commands
+ being executed and print a version number; loops instead of
+ recursion used to write out the tables; support for user using -r;
+ checking all error returns; not using the shell to start processes.
+
+ * collect-osf.c (whole file): Deleted, merged into collect2.c.
+
+Tue Dec 17 15:49:06 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sched.c (schedule_insns): Don't update value of reg_live_length
+ when it is negative, because negative values are special.
+
+ * sched.c (schedule_block): Make new_needs an int not an enum, since
+ some compilers won't accept using `|' and `&' with enums.
+
+ * sparc.md: Don't emit nop after floating point compare; this is
+ no longer needed.
+
+ From Tom Wood:
+ * sched.c (memrefs_conflict_p): Exchange xsize and ysize when x
+ and y are exchanged.
+
+Tue Dec 17 15:01:04 1991 Mark Eichin (eichin at cygnus.com)
+
+ * cp-decl.c (set_nested_typename): use SET_IDENTIFIER_TYPE_VALUE,
+ not set_identifier_type_value, so that the binding doesn't get
+ unwound by leaving class scope.
+
+Tue Dec 17 10:57:12 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * toplev.c (main): Make -g0 produce no debugging information.
+
+Tue Dec 17 15:15:20 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): In %P, duplicate the names with __ just in front.
+
+ * gstab.h: Renamed from stab.h.
+ * collect2.c, dbxout.c, final.c, mips-tfile.c: #include changed.
+ * dbxout.c (N_CATCH): Define this if stab.h does not.
+ * Makefile.in: Depend on gstab.h where appropriate.
+
+ * Makefile.in (STAGESTUFF): Remove collect and collect2.
+
+ * c-parse.y (parmlist_2): Allow just `...' with no named args.
+ * c-decl.c (get_parm_info): Pedantic warning for that usage.
+
+ * final.c (final_scan_insn): Don't output blocks for -g1.
+
+ * Makefile.in (crtbegin.o, crtend.o): Use -g0.
+
+ * function.c (expand_main_function): Do nothing if INIT_SECTION_ASM_OP.
+
+ * varasm.c (assemble_asm): Handle ADDR_EXPR of a STRING_CST.
+ * stmt.c (expand_asm): Likewise.
+ * c-parse.y (extdef, stmt): Accept STRING_CST or ADDR_EXPR in asm.
+
+Tue Dec 17 15:01:11 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.h (INIT_SECTION_ASM_OP): Override svr[34].h.
+ * m88kv4.h (INIT_SECTION_ASM_OP): Override svr4.h and m88k.h.
+ * m88kdgux.h ({INIT,CTORS,DTORS}_SECTION_ASM_OP): Override m88k.h
+ except when compiling crtstuff.c.
+
+Mon Dec 16 21:50:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * stmt.c (struct case_node): Remove unused field `test_label'.
+ (pushcase, pushcase_range): Don't initialize it.
+
+ * stmt.c (check_for_full_enumeration_handling): Only print warnings
+ if -Wswitch is specified.
+ (expand_end_case): Call check_for_full_enumeration_handling even if
+ -Wswitch is not specified.
+
+ * expr.c (convert_move): Add missing arg to call to force_reg.
+ (convert_to_mode): Likewise, for protect_from_queue.
+
+Mon Dec 16 20:33:10 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_builtin): Check number and types of args.
+
+ * c-parse.y (stmt, extdef): Allow constant expression inside plain asm.
+
+ * m68k.md (movhi): Use asm_fprintf to print .set or equivalent.
+ * m68k.c (print_operand_address): Use %R when printing pc register.
+ * m68k.h (ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL):
+ Use %L.
+
+ * c-typeck.c, cp-typeck.c (c_sizeof): Give error for incomplete type.
+
+Mon Dec 16 11:14:28 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-decl.c (init_decl_processing): Don't declare unused function
+ __builtin_vec_delete.
+
+Mon Dec 16 08:35:04 1991 Torbjorn Granlund (tege at hal.gnu.ai.mit.edu)
+
+ * gnulib2.c (__udivmoddi4): Add comment.
+
+Mon Dec 16 07:47:13 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-call.c (ideal_candidate): Always set BEST before using it.
+ Also, call `build_component_ref_1' with 3 args everywhere, and
+ `build_indirect_ref' with 2 args everywhere.
+
+Mon Dec 16 07:17:46 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.h: Add `extern' to function declarations.
+ (gen_input_reload): Add declaration.
+ * reload1.c (reload): Allocate save area if caller-saves are needed;
+ check for case when it becomes needed after some spill registers are
+ obtained.
+ Can now eliminate frame pointer even when caller-saves are needed.
+ Perform register elimination of save area and see if caller-save needs
+ a spill register.
+ If required, find a spill register and pass it to caller-save code.
+ (gen_input_reload): No longer static.
+ * Makefile.in (caller-save.o): Now includes reload.h (again).
+ * global-alloc.c (global_alloc): Can eliminate frame pointer even if
+ we have caller-saves.
+ * toplev.c (compile_file): Call init_caller_saves.
+
+ * caller-save.c: Major rewrite; almost entirely new code.
+ Integrate caller-saving with frame pointer elimination.
+ Don't try to save and restore registers that cannot be directly
+ copied to memory (such as MQ).
+ Correctly place save and restore insns.
+ Don't restore a saved register until end of block or if it is needed.
+
+ * cse.c (mention_regs): Now returns int to indicate that the hash code
+ may have changed.
+ For COMPARE and comparison op, ensure that any register operand has
+ a quantity number.
+ (insert_regs): Return value from mention_regs.
+ (rehash_using_reg): New function.
+ (record_jump_equiv, mention_regs): Call rehash_using_reg if an operand
+ of a compare is a REG whose hash code is changing.
+
+Mon Dec 16 07:09:21 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * function.c (expand_main_function): New subroutine. Call __main.
+ * c-decl.c, cp-decl.c (store_parm_decls): Use that.
+ * cp-decl.c (init_decl_processing): Don't declare __main.
+
+ * objc-actions.c (init_objc): Call __objcInit as a constructor.
+
+ * toplev.c (compile_file): Reenable SDB code #if 0'd before.
+
+ * protoize.c (version_string): Make it extern.
+ * Makefile.in (protoize, unprotoize): Link with version.o.
+
+Sun Dec 15 23:31:47 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-tree.c (virtual_member): When recurring, don't dive into
+ nonexistent baseclasses.
+
+ * cp-decl.c (grokdeclarator): Set TREE_STATIC for initialized const
+ arrays.
+ * cp-typeck.c (mark_addressable): A decl that was TREE_STATIC might
+ be chagned to TREE_EXTERNAL due to #pragma interface/implementation.
+
+Sun Dec 15 14:57:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (SYSCALLS.c.X): Fix typo.
+ (INTERNAL_CFLAGS): Delete -DMERGED.
+
+ * dbxout.c (dbxout_init): Pass proper args to ASM_OUTPUT_MAIN_*.
+ * newpbb.h (ASM_OUTPUT_MAIN_SOURCE_FILENAME): Add proper arguments.
+
+ * stmt.c (emit_case_nodes): Rewrite to change induction conditions.
+ Handle boundedness in the bounded node itself.
+ Handle branching entirely at the parent level.
+
+ * gstdarg.h: Use va-i860.h.
+ * va-i860.h (va_start for ANSI): Fix typo. Call __builtin_next_arg.
+
+Sat Dec 14 20:45:30 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (USER_H): va-hp9k8.h should be va-hp800.h.
+
+ * loop.c (invariant_p): Call-clobbered register is not invariant if
+ loop has calls.
+ (count_loop_regs_set): Count a CLOBBER as a setting of a register.
+
+ * stmt.c: Move include of ctype.h and definition of cost variables to
+ front of file.
+ (expand_end_case): Always set use_cost_table. Check type here instead
+ of in estimate_case_costs. Don't suppress use of cost table when
+ not optimizing.
+ (estimate_case_costs): Now returns int. Check for any case tag
+ that is an unusual control character here and reject use of table
+ if so. Always do comparisons signed, since that's how we access the
+ cost table.
+ (balance_case_nodes): Don't check for strange control characters here.
+ (node_has_low_bound): Do checking if we don't have a left branch,
+ instead of if we do.
+ (node_has_{low,high}_bound): Remove spurious checks on branches.
+ (emit_case_nodes): Ensure operation passed to emit_cmp_insn matches
+ the branch we actually emit.
+ Fix case of a range node with no left or right branch; use of case
+ and default label were backward for the high test.
+ Remove unused variables defaulted_{left,right}.
+
+Sat Dec 14 16:10:11 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * protoize.c: Don't include limits.h.
+ Rename `pathname' to `filename' everywhere.
+ Clean up indentation of fprintf calls.
+ Use standard GNU format for file name/line in error messages.
+ (n_base_source_files): Renamed from base_source_files.
+ (convert_filename, invocation_filename, base_source_filenames):
+ `path' renamed to `filename'.
+ (syscalls_absolute_filename): Renamed from syscalls_pathname.
+ (find_file): Arg FILENAME no longer const.
+ (main): Fix getcwd error-checking logic.
+ (varargs_style_indicator): Delete `const'.
+ (savestring): Declare arg `input' const.
+
+ * Makefile.in (protoize, protoize.o, unprotoize, unprotoize.o):
+ Use GCC_FOR_TARGET.
+ (getopt.o, getopt1.o): Likewise.
+ (GCC_FOR_TARGET): Delete -B./.
+ (GCC_CFLAGS): Add -B./. Copy ALL_CFLAGS's definition, less XCFLAGS.
+
+ * cp-init.c (add_friends): Pass proper args to strncmp.
+
+ * toplev.c (compile_file): Clear DECL_RTL for vars not really output.
+ #if 0 possibly redundant code for SDB output.
+
+ * sys-types.h: Include gstddef.h to get size_t and wchar_t.
+
+ * ultrix.h (CPP_PREDEFINED): Add __unix, __ultrix, __bsd4_2.
+
+ * Makefile.in (STAGESTUFF): Add collect, collect2.
+
+Sat Dec 14 12:16:12 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-search.c (get_baselinks): Use obstacks right, instead of
+ aborting when we know we're using them wrong.
+
+ * cp-parse.y (structsp): Fix typo in exception declaration rule.
+
+ * cp-typeck.c (build_modify_expr_1): Recursive call to
+ `build_modify_expr_1' used pre-BINFO representation for
+ BASETYPE_PATH argument.
+
+ * cp-decl.c (start_decl): Don't switch to temporary allocation for
+ decls of type REFERENCE_TYPE, as their initializers may live a long
+ time, too.
+
+Sat Dec 14 07:11:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads_toplev): If we have a SUBREG of a multi-word
+ constant, try to extract just the word we want.
+
+ * global-alloc.c (global_alloc): Correct reference to ELIMINABLES.
+
+Fri Dec 13 15:28:38 1991 Michael Meissner (meissner at osf.org)
+
+ * configure (mips-mips-sysv): On MIPS System V, use xm-umips.h, not
+ xm-mips.h.
+
+ * gstddef.h (__PTRDIFF_TYPE__): Provide default definition in case
+ non-GCC 2.00 compiler is used.
+ (__SIZE_TYPE__): Ditto.
+ (__WCHAR_TYPE__): Ditto.
+
+Fri Dec 13 14:49:54 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * config.sub: Renamed from config.subr.
+ Support os -sym1.
+ Convert -svr3, -svr4 to -sysv3, -sysv4.
+ * configure: Used new name.
+
+ * Makefile.in (includes): Preserve files from GCC already in dir.
+
+Fri Dec 13 11:01:12 1991 Fred Fish (fnf at fishpond)
+
+ * att386.h: Fix unparenthesized macro arguments in
+ ASM_OUTPUT_ASCII macro.
+
+ * i386v4.h: Select an assembly language syntax file and include
+ it. Supply missing macros from ones in i386v.h (TARGET_DEFAULT,
+ VALUE_REGNO, FUNCTION_VALUE_REGNO_P).
+
+ * svr4.h: Fix misspelled variable name labelno (was labeno).
+
+Fri Dec 13 09:07:22 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-typeck.c (build_component_ref): Call `assemble_external' as
+ nec.
+ (build_function_call_real): Call `assemble_external' as nec. for
+ function calls we build. Code slightly rearranged for clarity.
+ * cp-call.c (build_method_call): Call `assemble_external' as nec.
+
+Thu Dec 12 22:03:52 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Change message given to user. Change c-parse_tab.*
+ to c-parse.*
+
+ * config-gcc.com: Purge excess versions of version.opt.
+
+Thu Dec 12 20:25:20 1991 Michael Meissner (meissner at osf.org)
+
+ * Makefile.in (BOOT_CFLAGS): Remove quotes around the argument,
+ since this causes a syntax error when it is later expanded.
+
+Thu Dec 12 17:53:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * config.subr: Add many new machines and some OS's.
+
+ * va-i860.h: Rewrite from rfg.
+
+ * toplev.c (main): Handle -dm on USG systems.
+
+ * m68k.c (print_operand, print_operand_address): New functions.
+ * m68k.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS): Just call them.
+
+ * m68k.c (S_*, D_*): Delete the #undefs at the end.
+
+ * stmt.c (expand_return): Special case if fcn returns void.
+
+ * objc-actions.c (build_objc_method_call): Fix typo in NeXT case.
+
+ * expr.c (expand_builtin, BUILT_IN_ARGS_INFO): Cast init of word_ptr.
+
+ * protoize.c: Delete the `extern "C"' for C++ compilation.
+
+Thu Dec 12 10:01:13 1991 Michael Meissner (meissner at osf.org)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Fix off by one error in
+ handling the constructor list when a valid count is supplied.
+
+ * collect2.c (write_hooks): Emit a count before the list of
+ constructors, to go back to the old format.
+
+ * collect-osf.c (write_s_file): Emit a count before the list of
+ constructors, to go back to the old format.
+
+ * gnulib2.c (exit): Provide default defintions as bss symbols for
+ all of the constructor/destructor related symbols if the macro
+ INIT_SECTION_ASM_OP is not defined. The second link that collect
+ does and/or gld will provide the right values.
+
+ * decrose.h (HAVE_ATEXIT): Nuke macro, no longer used.
+ * encrose.h (HAVE_ATEXIT): Nuke macro, no longer used.
+ * i386rose.h (HAVE_ATEXIT): Nuke macro, no longer used.
+
+Thu Dec 12 07:27:05 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * gbl-ctors.h (__CTOR_LIST__, __DTOR_LIST__): Renamed from *_BEGIN__.
+ * collect-osf.c collect2.c: Rename here as well.
+
+Thu Dec 12 04:15:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-parse.y (stmt): Make asm alternatives allow expr.
+ * c-typeck.c (c_expand_asm_operands): Get the STRING_CST from the expr.
+
+ * c-parse.y (datadecl, datadecls, lineno_datadecl): New rules.
+ (xdecls): Use them.
+
+Wed Dec 11 18:36:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Just one definition; use ON_EXIT.
+ Test for -1 and handle both kinds of table format.
+ * gnulib2.c (__do_global_dtors): Check for -1...
+ (__do_global_ctors): Dummy defn of ON_EXIT if no other defined.
+ (__main): Do nothing if called again.
+ (exit): Use EXIT_BODY if defined.
+ * crtstuff.c (__CTOR_LIST__, __DTOR_LIST__):
+ Renamed from *_BEGIN__. Add -1 as first elt.
+ (__CTOR_END__, __DTOR_END__): Add 0 as last elt.
+ (ON_EXIT): Dummy defn if no other is defined.
+
+Wed Dec 11 18:08:36 1991 Mark Eichin (eichin at cygnus.com)
+
+ * cp-parse.y (template_parm): removed some reduce/reduce conflicts
+ by noting which of identifier or identifier_defn would actually be
+ passed up in this context.
+
+Wed Dec 11 17:52:46 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * flow.c (propagate_block): Adjust loop depth if it is changed in
+ notes at the end of a block.
+ Abort if loop depth ever reaches zero.
+
+Wed Dec 11 16:30:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (do_endif): Don't call record_control_macro at top level.
+
+Wed Dec 11 14:45:42 1991 Mark Eichin (eichin at cygnus.com)
+
+ * cp-decl.c (set_identifier_type_value): If we're in a
+ class_binding_level, shadow the type there.
+ (xref_defn_tag): New function. Calls xref_tag with special flag set
+ to indicate that we know we're defining something.
+ (pushdecl_top_level): if class_binding_level is set, search from it
+ instead of only from current_binding_level when trying to find
+ shadowed values. This is in support of tests m5.cc through m8.cc,
+ which broke after the changes for m9.cc were installed.
+
+ * cp-spew.c (do_aggr): New function. Looks ahead from AGGR to see if
+ we have AGGR identifier { or AGGR identifier : which are both
+ definitions, and passes up identifier_DEFN instead. This is in
+ support of test m9.cc.
+ (yylex): add SPEW_DEBUG case after EMPTY, so we don't have gaps in
+ the displayed stream.
+ (yylex, case AGGR): added call to do_aggr.
+ (debug_yychar): added call to debug_yytranslate for proper
+ translations.
+
+ * cp-parse.y (debug_yytranslate): New function to support SPEW_DEBUG
+ translations.
+ (TYPENAME_DEFN): new token, TYPENAME seen by do_aggr.
+ (IDENTIFIER_DEFN): new token, ditto.
+ (PTYPENAME_DEFN): new token, ditto.
+ (identifier_defn): corresponds to identifier, but when the
+ identifier has been seen by do_aggr.
+ (named_class_head_sans_basetype_defn): specially recognize aggr
+ identifier_defn.
+ (named_class_head): add parallel clauses calling xref_tag_defn when
+ we know we're defining this aggr.
+ (named_class_head_sans_basetype_defn_either): for when we don't care
+ if it is a defn or not (such as templates)
+ (identifier_either): ditto.
+
+ * cp-tree.h (xref_defn_tag): New declaration.
+
+Wed Dec 11 12:37:51 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-parse.y (label_colon): New nonterminal, with all label prefixes
+ from "stmt" moved here.
+ (stmt): Use it. Also provide useful message for label followed by
+ end of block (close-brace).
+
+ * cp-init.c (BIVN): Deleted unused variable.
+ * cp-decl.c (init_decl_processing): Don't declare function
+ __builtin_vec_new; it's never used.
+
+Wed Dec 11 10:59:48 1991 Michael Meissner (meissner at osf.org)
+
+ * toplev.c (main): Complete last change from RMS, use variable
+ 'level' which used to be named 'arg'.
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Don't reference ON_EXIT for
+ those poor systems without atexit or on_exit.
+
+Wed Dec 11 09:06:52 1991 Jeffrey A. Law (law at wombat.gnu.ai.mit.edu)
+
+ * m68k.c (output_function_prologue, output_function_epilogue):
+ When saving/restoring only 2 registers, do so with two "movel"
+ instructions instead of a single "moveml". This results in
+ faster code for the 68020 and later machines.
+
+Wed Dec 11 06:45:08 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * x-romp (MAKE): Add definition; the supplied `make' doesn't define it.
+
+Tue Dec 10 22:17:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Always make a copy of I2's pattern if
+ it will be used in a PARALLEL (`added_sets_2' nonzero).
+
+ * Makefile.in (BOOT_CFLAGS): New parameter.
+ (bootstrap*): Use it.
+
+ * flow.c (find_basic_blocks): Set depth of last insn, not first,
+ into basic_block_loop_depth.
+ (propagate_blocks): Use consistently with new definition.
+
+ * cse.c (cse_end_of_basic_block, cse_basic_block): Remove previous
+ change; it can cause loops following around branches.
+
+ * Makefile.in (USER_H): Add va-hp9k8.h.
+
+Tue Dec 10 17:22:01 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k*.h: Include svr3.h as the default. m88kv4.h and m88kdgux.h
+ include svr4.h. Override svr[34].h as needed.
+ * t-m88k, t-m88kv4: Specify EXTRA_PARTS.
+
+ * m88k.c (uses_arg_area_p): Check current_function_varargs.
+
+Tue Dec 10 15:41:03 1991 Michael Meissner (meissner at osf.org)
+
+ * osf-main.c (whole file): Delete, since the constructor stuff was
+ moved to gnulib2.c.
+
+ * Makefile.in (collect2, collect2.o): Change to use the default
+ compiler to build collect2, instead of the newly built GCC, since
+ otherwise, collect2 will create a circular dependency. Also, pass
+ LDFLAGS when linking.
+
+ * collect-osf.c (write_s_file): Change to the new way of doing
+ constructors and destructors of having an end marker instead of a
+ count.
+
+ * collect.c (REAL_AS_PATH, REAL_LD_PATH, REAL_NM_PATH): New macros
+ to allow cross compilers to specify where the real linker,
+ assembler, and nm live.
+ (NM_FLAGS): New macro to allow a configuration to change what flags
+ get passed to nm.
+ (alloca defines): Remove alloca defines, since config.h provides
+ them.
+ (write_hooks): Change to the new way of doing constructors and
+ destructors of having an end marker instead of a count. Cast all
+ alloca calls to be the appropriate pointer type. Put both
+ constructors and destructors into the data section, because the MIPS
+ tools do not like non-instructions in the .text section.
+
+ * decrose.h (HAVE_ATEXIT): Define, OSF/1 has atexit.
+ (FULL_PROTOTYPES, NO_CONST_IN_SYSCALL): Remove, no longer used.
+
+ * encrose.h (HAVE_ATEXIT): Define, OSF/1 has atexit.
+ (FULL_PROTOTYPES): Remove, no longer used.
+
+ * i386rose.h (HAVE_ATEXIT): Define, OSF/1 has atexit.
+
+ * t-decrose (LIB2FUNCS_EXTRA): Remove, osf-main.c is no longer
+ needed, since constructor/destructor support moved into gnulib2.c.
+
+ * t-encrose (LIB2FUNCS_EXTRA): Remove, osf-main.c is no longer
+ needed, since constructor/destructor support moved into gnulib2.c.
+
+ * t-i386rose (LIB2FUNCS_EXTRA): Remove, osf-main.c is no longer
+ needed, since constructor/destructor support moved into gnulib2.c.
+
+ * t-decstatn (CCLIBFLAGS, GNULIB2_CFLAGS): Define so that gnulib1
+ and gnulib2 are both compiled with -G 0, in case the users compiles
+ and links this way. It also fixes a bug where the constructors and
+ destructors that collect2 produces are in the big data section, but
+ gnulib2 thinks they are in the small data section, because it only
+ sees a pointer.
+ (ld): Add -f to remove old ld link to collect2, if it exists.
+
+ * t-mips (CCLIBFLAGS, GNULIB2_CFLAGS): Define so that gnulib1
+ and gnulib2 are both compiled with -G 0, in case the users compiles
+ and links this way. It also fixes a bug where the constructors and
+ destructors that collect2 produces are in the big data section, but
+ gnulib2 thinks they are in the small data section, because it only
+ sees a pointer.
+ (ld): Add rule to link collect2 to ld.
+ (EXTRA_PASSES): Build collect2 (aka ld).
+
+ * xm-mips.h (alloca): If not GNU C, declare alloca to be char *.
+
+ * mips-tfile.c (add_aux_sym_tir): Move code to record bitfield size,
+ so that it agrees with MIPS ECOFF practice, rather than the
+ documentation, which affects enum bitfields. Changes from Per
+ Bothner.
+
+Tue Dec 10 14:10:10 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Get rid of __reverse_order, etc.
+ * gnulib2.c (__do_global_dtors): Remove & before arrays.
+
+ * configure: Set a default value for xm_file.
+ Remove redundant defaulting of cpu_type.
+
+ * svr4.h (ASM_DECLARE_FUNCTION_SIZE): Output internal label properly.
+
+ * function.c (assign_parms): Set current_function_args_info.
+ * output.h: Declare that var.
+ * tree.h (BUILTIN_ARGS_INFO): Renamed from BUILT_IN_VARARGS.
+ * expr.c (expand_builtin): Implement __builtin_args_info.
+ * c-decl.c (init_decl_processing): Declare it.
+ * va-i860.h: Use it.
+ Also update order of elements in struct __va_ctl.
+
+ * toplev.c (main): Eliminate -gsdb and -gdbx.
+ Clean up setting of use_gdb_dbx_extensions.
+
+Tue Dec 10 10:33:58 1991 Tom Wood (wood at gen-rtx)
+
+ * svr4.h (ASM_DECLARE_FUNCTION_SIZE): Use an internal label.
+
+Tue Dec 10 07:12:28 1991 James Van Artsdalen (james@raid)
+
+ * Makefile.in (crtbegin.o, crtend.o): crstuff.c is in $(srcdir).
+
+Tue Dec 10 06:56:26 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (kept_level_p): New function, borrowed from c-decl.c.
+ * cp-parse.y (compstmt): Call it.
+
+Mon Dec 9 18:37:32 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-decl.c (grok_enum_decls): Don't give warning for class-local
+ enum types; this is a perfectly reasonable usage.
+
+Mon Dec 9 12:23:48 1991 Ron Guilmette (rfg at ncd.com)
+
+ * toplev.c (main): Check that no extra chars follow the level #
+ in a -gNNN option. Also check that the debugging level requested
+ is between 0 and 3 (inclusive).
+
+Mon Dec 9 20:34:48 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sched.c (schedule_block): Don't crash if `line' is zero.
+ (schedule_insns): Initialize line_note_head.
+
+Mon Dec 9 15:31:46 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (pseudo_ops array): Correctly size the .stabs and
+ .stabn elements.
+
+ * mips.c (function_prologue, function_epilogue): Use assemble_name
+ to print the current function, instead of fprintf, in case there is
+ a leading '*'.
+
+ * mips-news.h (CPP_PREDEFINES): Define news3700, not news7300.
+
+ * mips.md (ashldi3_internal3): Fix typos.
+ (ashrdi3_internal3): Ditto.
+ (lshldi3_internal3): Ditto.
+
+Mon Dec 9 11:49:52 1991 Torbjorn Granlund (tege at hal.gnu.ai.mit.edu)
+
+ * longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand
+ 2 constraint.
+
+Mon Dec 9 11:22:58 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-typeck.c (build_x_function_call): A method might have type
+ pointer-to-method as well. Don't build an OFFSET_REF for any
+ "function" that already has pointer type. Only use
+ DECL_CLASS_CONTEXT to find type of `this' for FUNCTION_DECLs; for
+ method pointer expressions, look up the basetype of the method type.
+ (build_unary_op): Fix comment in typo.
+
+ * cp-tree.c: Fix typo in comment at start of file.
+
+Mon Dec 9 07:17:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): When a jump is converted to unconditional,
+ delete the dead code, but leave the notes.
+ (cse_basic_block, cse_end_of_basic_block): Some unconditional jumps are
+ part of the basic block.
+ (cse_basic_block): Add missing arg to cse_end_of_basic_block call.
+
+Mon Dec 9 07:16:15 1991 Ron Guilmette (rfg at ncd.com)
+
+ * sys-types.h: New file.
+ * sys-protos.h: New file.
+ * SYSCALLS.c: Just include those files.
+
+ * protoize.c (VOLATILE): Define this symbol conditionally so that
+ it can be used to declare GNU `volatile' functions.
+ (abort): Added VOLATILE extern declaration (but not if it's a macro).
+ (kill, fork): Added extern declaration.
+ (substr): Declare c as int.
+
+ * gbl-ctors.h: New file.
+ * crtstuff.c: Include gbl-ctors.h.
+ (INIT_SECTION_ASM_OP): Delete default definition.
+ Only compile .init section code if INIT_SECTION_ASM_OP is defined.
+ (pointer): Globally changed to `func_ptr'.
+ * Makefile.in (crtbegin.o, crtend.o, gnulib2): Depend on gbl-ctors.h.
+ * gnulib2.c: Added definition of __builtin_saveregs for i860/svr4
+ and fixed up definition of __builtin_saveregs for i860/non-svr4.
+ (__bb_avoid_warning): Added explicit return type.
+ (__builtin_new, __builtin_vec_new, __builtin_delete,
+ __builtin_vec_delete): Use `void*' where appropriate.
+ (exit): Change conditional to ON_EXIT. Make dummy if no real exit.
+ Include gbl-ctors.h.
+ (__main): Change conditional to INIT_SECTION_ASM_OP.
+ (__do_global_ctors): Conditional on INIT_SECTION_ASM_OP.
+ Use DO_GLOBAL_CTORS_BODY for the guts.
+ Include gbl-ctors.h.
+
+Mon Dec 9 01:07:56 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4: Don't change #ident or assertion tests.
+ Don't install inline.h.
+
+ * c-common.c (get_directive_line): Declare c as int.
+
+ * configure: Create additional file tconfig.h.
+ * protoize.c: Include that, not tm.h.
+ * Makefile.in (protoize.o, unprotoize.o): Depend on tconfig.h.
+
+ * svr4.h (HAVE_ATEXIT): Defined.
+ * gnulib2.c (_main, exit): Use HAVE_ATEXIT to control use of atexit.
+
+ * final.c (final_scan_insn): Output first and last note in a series.
+
+ * objc-actions.c (build_objc_method_call):
+ New arg LOOKUP_OBJECT.
+ (build_message_expr): Pass RECEIVER for LOOKUP_OBJECT.
+ Pass RECEIVER or self_decl as OBJECT.
+
+ * unx386.h (PRINT_IMMED_PREFIX, PRINT_OFFSET_PREFIX): Deleted.
+
+ * rtl.h: Undef FLOAT.
+
+ * svr4.h (ASM_DECLARE_OBJECT_NAME, ASM_DECLARE_FUNCTION_SIZE):
+ Fix typo.
+
+Sun Dec 8 21:46:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * protoize.c (main): Declare `value'.
+ (abspath): Declare endp. Declare and set outp and inp.
+
+ * cp-decl.c (sigsegv): Function deleted.
+ (init_decl_processing): Don't use it.
+ Also don't include signal.h.
+
+ * t-svr4: New file.
+ * configure (i386-*-sysv4*, i860-*-sysv4*): Use that file.
+
+Sun Dec 8 12:01:36 1991 Ron Guilmette (rfg at ncd.com)
+
+ * fixinc.svr4: New file.
+
+ * final.c (profile_function): Specify return type.
+ (get_attr_length): Added a return statement to prevent warnings.
+
+ * final.c (final_scan_insn): Switch to .text section before output
+ of jumptable lable (if requested by JUMP_TABLES_IN_TEXT_SECTION).
+ Don't switch sections again after the label.
+
+ * configure (i386-*-sysv*): Configuration deleted.
+ (i386-*-sysv3, i386-*-sysv4, i860-*-sysv3, i860-*-sysv4):
+ Added assignment to `tmake_file' (to pick up def of EXTRA_PARTS).
+ (i860-*-sysv3, i860-*-sysv4): Added assignment to `xmake-file'.
+ (i860-*-sysv3): Deleted bogus GAS related stuff.
+
+ * combine.c (combinable_i3pat): Added explicit return type.
+
+ * i860.h (TARGET_FPU): Deleted this target flag. i860 fpu is on chip.
+ (TARGET_XP): New target flag for XR and XP models.
+ (TARGET_FLAGS, HARD_REGNO_MODE_OK): Adjusted for above changes.
+ (REG_ALLOC_ORDER): Use first the regs less likely for other purposes.
+ (LITERAL_COMPARE_BETTER_UNSIGNED): Defined.
+ (BRANCH_COST): Defined.
+ (CC_ONLY_*): Deleted these obsolete defines.
+ (CC_NEGATED): Added for IEEE behavior with cmpgesf and cmplesf.
+ (ASM_OUTPUT_CASE_LABEL):
+ Added .align so assembler doesn't barf on subsequent .long(s).
+ (FLOAT_TYPE_VALUE, INTIFY, FLOATIFY, FLOAT_ARG_TYPE):
+ Added definitions needed to build a useable gnulib1 library.
+
+ * i860.md: Removed all references to CC_ONLY_* symbols.
+ (cmpledf, cmpgedf): Adjusted assembler code as suggested
+ by i860 manuals, for IEEE results.
+ (cbranch, flipped_cbranch, inverse_cbranch, flipped_inverse_cbranch):
+ Check for CC_NEGATED.
+ (bte, btne patterns): Complete rewrite.
+ (anonymous sign-extend patterns): Moved before the named patterns.
+
+ * i860.md (addsi3, subsi3): Disparaged alternatives with a floating-
+ pointer input register to avoid complicated reloading problem.
+ (negsi2): Deleted bogus `I' constraint on operand 1.
+ (divdf3, divsf3): Added additional continuation characters
+ needed to make lines acceptable to `read_rtx' in the gen* programs.
+
+ * i860.c: Include "flags.h" to get access to `optimize' flag.
+ (leaf_function_p): Added extern declaration.
+ (zero_operand): New function.
+ (must_preserve_r1, must_preserve_bytes): New variables.
+ (function_prologue, function_epilogue):
+ Support treatment of return-address reg (r1) in leaf functions.
+
+ * i860v4.h (CPP_PREDEFINES): Add pre-assertions for i860/svr4.
+ (CPP_SPEC): Deleted definition.
+ (TYPE_OPERAND_FMT): New definition.
+ (ASM_OUTPUT_FUNCTION_PREFIX): #undef before defining.
+ (ASM_OUTPUT_EPILOGUE_SUFFIX): Deleted obsolete macro.
+ (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
+ TDESC_SECTION_ASM_OP, EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
+ TDESC_SECTION_FUNCTION): Definitions added.
+
+ * i860v3.h: Complete rewrite. Uses svr3.h.
+
+ * i386v4.h: Don't include i386v.h. Include i386.h instead.
+ (SDB_DEBUGGING_INFO): #undef deleted.
+ (ASM_OUTPUT_DWARF_STRING): Added definition.
+
+ * gcc.c (default_compilers): Pass -g* options to cpp.
+
+ * gcc.c (do_spec_1): Don't duplicate -A options in CPP_PREDEFINES.
+
+ * gnulib2.c (exit, __main, __do_global_dtors, __do_global_ctors):
+ New functions.
+
+ * i386.h (PRINT_IMMED_PREFIX, PRINT_OFFSET_PREFIX):
+ Define here, and use IP.
+
+ * i386.h: Don't include syms.h or define FILNMLEN.
+
+ * x-i860v3, x-i860v4: New files.
+ * x-i386v4 (CCLIBFLAGS, GCC_CFLAGS): Added definitions.
+
+ * xm-svr3.h: New file.
+ * xm-i86v3.h, xm-i86v4.h, xm-i386v.h: Rewritten.
+ * xm-i38v4.h: New file.
+
+ * svr4.h (LIB_SPEC): Make crtend.o come before any *crtn.o
+ file (to avoid hitting return without standard epilogue in .init code).
+ (INIT_SECTION_ASM_OP): Added definition for crtstuff.c (and friends).
+ (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION):
+ Adjusted indentation of continuations to match those in rest of file.
+
+ * svr3.h (CPP_PREDEFINES): Don't define this here.
+ (ASM_FILE_START_1): Provide no-op default definition.
+ (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Undef these before defining.
+ (INT_ASM_OP, USE_CONST_SECTION, INIT_SECTION_ASM_OP,
+ CONST_SECTION_ASM_OP, CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
+ EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, READONLY_DATA_SECTION,
+ CONST_SECTION_FUNCTION, CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION,
+ ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR, SELECT_SECTION,
+ SELECT_RTX_SECTION): Definitions added.
+
+Sun Dec 8 15:27:56 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * next.c (handle_pragma): Use get_directive_line.
+
+ * gnulib2.c (__do_global_dtors, __do_global_ctors):
+ Remove the feature to control the order of execution.
+ This is not a clean solution to the overall problem.
+
+Sun Dec 8 14:47:44 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (toplevel, add_local_symbol, parse_stabs_common):
+ More changes for smuggling stabs through from meissner@osf.org and
+ bothner@cygnus.com.
+
+ * mips.h (ignore_line_number): New global, set when we must avoid
+ putting out a MIPS ECOFF .loc because the file changed inside of a
+ function, and we are also putting out stabs, which can handle this.
+ (ASM_STABS_OP, ASM_STABN_OP, ASM_STABD_OP): Define to put a comment
+ in front of the pseudo op, if we are encapsulating stabs in MIPS
+ ECOFF.
+ (ASM_OUTPUT_SOURCE_FILENAME): Change to call mips_output_filename.
+ (ASM_OUTPUT_SOURCE_LINE): change to call mips_output_lineno.
+
+ * mips.c (toplevel): Include stab.h for encapsulating stabs.
+ (ignore_line_number): New global variable.
+ (reg_or_0_operand): Call register_operand for REG's as well as
+ SUBREG's.
+ (override_option): Don't allow ints in FP registers unless -mdebugh.
+ (mips_output_filename): New function to write the filename to the
+ assembler output. Add special support for encapsulating .stabs in
+ MIPS ECOFF.
+ (mips_output_lineno): New function to write the line number to the
+ assembler output. Add special support for encapsulating .stabs in
+ MIPS ECOFF.
+ (function_epilogue): Clear ignore_line_number.
+
+ * mips.md (fix_trunc??si_opt, mov??_internal): Change '!' constraint
+ back to '*'.
+
+Sat Dec 7 16:58:57 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-spew.c (scan_tokens): Stop scanning at semi-colon.
+
+ * cp-spew.c: Made SPEW_DEBUG code useable:
+ (yylex): Use stderr in SPEW_DEBUG code.
+ (yytags): Deleted table.
+ (debug_yychar): Print to stderr, and don't try finding translations
+ for values over 256.
+
+ * cp-class.c (push_lang_context): Fix typo in comment.
+
+ * cp-decl.c (finish_decl): Undo `pushclass' done in start_decl for
+ top-level decls of methods.
+
+ * cp-lex.c (restore_pending_input): Cast 0 to pointer type for
+ obstack_free.
+
+ * cp-pt.c (do_pending_expansions): Use TREE_USED instead of
+ TREE_ADDRESSABLE for functions. Put in comments explaining why we
+ compile unused methods of classes that are interface-unknown: the
+ file initializer/cleanup functions might need them.
+ (mumblefrotz): Delete unused function; this code is in cp-parse.y.
+
+Sat Dec 7 15:46:55 1991 Timothy Moore (moore@cs.utah.edu)
+
+ * function.c: Handle ARGS_GROW_DOWNWARD.
+ (pad_below, pad_to_arg_alignment, round_down): New subroutines.
+ (locate_and_pad_parm): Use them, for the existing case.
+ Also handle the ARGS_GROW_DOWNWARD case, using them.
+
+Sat Dec 7 15:46:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tree.h (DECL_ARG_TYPE_AS_WRITTEN): New macro.
+ * c-decl.c (grokdeclarator): Store value there.
+
+ * m68k.c (output_function_prologue, output_function_epilogue):
+ Support MOTOROLA syntax.
+
+ * toplev.c (main): Testing for -ggdb catches -g also.
+ Default use_gdb_dbx_extensions to 1 for -gstabs, 0 for -gdbx.
+ Specified default is for -g.
+
+ * cccp.c (handle_directive): Store start address in directive_start.
+ (do_xifdef): Use that, checking if at start of file.
+ (do_endif): Compute ep properly.
+
+ * protoize.c (abspath): Fix errors referencing argument cwd.
+ (main): Allocate big enough buffer for getcwd.
+ Don't clobber varargs_style_indicator, copy it.
+ (savestring): New function.
+
+Sat Dec 7 00:53:16 1991 Ron Guilmette (rfg at ncd.com)
+
+ * c-decl.c (warn_redundant_decls, warn_nested_externs): New vars.
+ (c_decode_option): Support -Wredundant-decls and -Wnested-externs.
+ (pushdecl): Print those warnings.
+ * c-tree.h (warn_redundant_decls, warn_nested_externs): Declared.
+
+ * c-decl.c (pending_xref_error, c_mark_varargs): Added return type.
+
+ * cccp.c (main): Added code to support the presence of -A (assertion)
+ options within CPP_PREDEFINES.
+
+ * c-lang.c: Minor cleanups.
+
+ * c-lex.c (check_newline): Added support for the -g3 option.
+
+ * dwarfout.c (type_tag): Fixed bug in gcc Dwarf generation for
+ tagged types.
+
+ * dwarfout.c (output_decl): Added two pre-checks to see if nodes
+ are ERROR_MARK nodes before using them.
+
+ * dwarfout.c (generate_new_sfname_entry): Function added.
+
+ * dwarfout.c (lookup_filename): Call generate_new_sfname_entry
+ as soon as each new source filename is added to the list of
+ known filenames (thus avoiding an m68k forward-ref assembler bug).
+
+ * dwarfout.c (dwarfout_line): Initialize prev_file_entry_num to
+ (unsigned) -1 rather than zero to avoid bogus suppression of
+ first .debug_sfnames section entry.
+
+ * dwarfout.c (compare_filename_entries): Function deleted. (It's
+ no longer needed.)
+
+ * dwarfout.c (dwarfout_finish): Don't generate .debug_sfnames
+ section entries here anymore. (See lookup_filename.)
+
+ * Makefile.in (realclean): Delete c-parse.h.
+ Delete objc-parse.output just once.
+
+Fri Dec 6 17:49:28 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (FIXED_BASE_PLUS_P): The frame or argument pointer itself is
+ a fixed address.
+ (find_comparison_args): If we find something equivalent to a
+ fixed address, return the fixed address.
+
+ * combine.c (try_combine): Don't access new_i2_notes if it hasn't been
+ defined (it isn't defined unless newi2pat != 0).
+
+Fri Dec 6 16:01:02 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * rtl.h (enum reg_note): Define two new values REG_DEP_ANTI,
+ REG_DEP_OUTPUT, which are used to mark LOG_LINKS.
+ * rtl.c (reg_note_name): Likewise.
+ (add_dependence): Return void. New parameter DEP_TYPE to indicate
+ type of dependence.
+
+ * sched.c: Major rewrite to delete much obsolete code, correct many
+ comments, delete unused variables, etc. Modify all callers of
+ add_dependence to pass new argument. Significant changes are:
+ (reassign_dependence): Deleted, was unnecessary.
+ (priority): Account for type of dependence when calculating
+ priority.
+ (flush_pending_lists): New function. Encapsulate code which makes
+ dependencies between an INSN and every insn on the
+ pending_read_insns and pending_write_insns lists.
+ (rank_for_schedule): Account for type of dependence with last
+ scheduled insn when deciding which ready insn to schedule next.
+ (launch_link): Give all birthing insns the same priority.
+ (schedule_block): Only sort the ready list once, after all ready
+ insns have been added to it.
+ (schedule_block): When deciding what REG_DEAD notes are needed on a
+ just scheduled insns, process all sets first (sched_note_set) then
+ process all uses (attach_deaths_insn).
+ (attach_deaths): Simplified by above change.
+ (sched_note_set): Likewise.
+ (update_flow_info): Renamed from update_links, since it no longer
+ does anything with LOG_LINKS. Sched_analyze_insn creates all
+ necessary new LOG_LINKS already.
+ (schedule_insn): Delete no op move insns after reload.
+
+Fri Dec 6 13:33:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * crtstuff.c: Give permission to link with non-free programs.
+
+ * toplev.c (flag_inhibit_size_directive): New var and -f option.
+ * svr4.h (ASM_DECLARE_OBJECT_NAME, ASM_DECLARE_FUNCTION_SIZE): Use it.
+ * Makefile.in (crtbegin.o, crtend.o): Use that option. Use -g1.
+
+Fri Dec 6 08:42:53 1991 Ron Guilmette (rfg at ncd.com)
+
+ * Makefile.in (STAGESTUFF): Added __main and _exit to support g++.
+
+ * c-common.c (c_expand_expr_stmt): Made return type explicit.
+
+ * c-common.c: (get_directive_line): Function added to support -g3.
+
+Fri Dec 6 04:50:39 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-tree.h (OPERATOR_ASSIGN_CHARS_P): Flushed.
+ * cp-decl.c (grok_op_properties): Flush OPERATOR_ASSIGN_CHARS_P.
+ * cp-init.c (add_{friend,friends}): Ditto.
+
+Thu Dec 5 22:31:12 1991 Jeffrey A Law (law at super.super.org)
+
+ * m68k.h (CONST_COSTS): Show that constants which can be easily
+ generated are less expensive than most.
+
+ * m68k.md (movsi): Use two instruction sequences to load constants
+ which are just outside moveq's range (within 8 of moveq's range).
+ Likewise for positive even constants within twice moveq's range.
+
+Thu Dec 5 20:17:13 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil)
+
+ * config-gcc.com: Generate a file 'version.opt' which will be given
+ to the VMS linker to put the gcc version number in the image
+ header version number field.
+
+ * make-cc1.com: Compile c-lex.c when building gcc and objc, and
+ add c-lex.obj to the list of files given to the linker.
+ Add version.opt to the list of files given to the linker.
+
+ * make-cccp.com: Add version.opt to the list of files given to the
+ linker.
+
+Thu Dec 5 23:04:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (make_extraction): Don't make a STRICT_LOW_PART of a MEM;
+ clean up comments so they agree with the code.
+
+ * combine.c (try_combine): Correct test for when we can safely change
+ the mode of a pseudo; can't if it doesn't die in I3.
+
+ * c-decl.c (WCHAR_TYPE_SIZE): Deleted; never used.
+ * c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Deleted, no longer needed.
+ (combine_strings): Use size of `wchar_type_node' to get number of
+ bytes in wchar_t.
+ * next.h (WCHAR_TYPE_SIZE): Delete; no longer used.
+
+ * cse.c (cse_main): Add new argument to cse_basic_block_call.
+ Don't call cse_around_loop here.
+ (cse_basic_block): Call cse_around_loop from here while we still
+ have our arrays allocated.
+
+ * combine.c (simplify_comparison): Fix error in last change; don't
+ reference TEM before it is set.
+
+ * toplev.c (fatal_insn_not_found): Flush all files before aborting.
+
+Thu Dec 5 21:42:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (build_objc_method_call): Eval OBJECT and SELECTOR
+ only once. Always pass self_decl as self to the method.
+
+Thu Dec 5 14:52:16 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * ccrtstuff.c, gnulib2.c, protoize.c: Include tm.h not config.h,
+ since these are complied for the target, host defines do not apply.
+
+Thu Dec 5 14:52:24 1991 Michael Meissner (meissner at osf.org)
+
+ * dbxout.c (ASM_STABS_OP, ASM_STABN_OP, ASM_STABD_OP): If
+ not defined, define as .stabs/.stabn/.stabd respectively. Change
+ all places emitting stabs to use the macros.
+ * cp-decl2.c: Ditto.
+ * cp-gc.c: Ditto.
+ * final.c: Ditto.
+ * varasm.c: Ditto.
+ * gcc.texinfo: Document ASM_STAB[DNS]_OP macros.
+
+Thu Dec 5 12:03:40 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (process_command): Don't put `.' on startfile_prefix.
+ Cast result of alloca.
+
+ * config/*.h (ASM_OUTPUT_ASCII): Put parens around all uses of args.
+
+ * hp800.h, hp800.c, hp800.md, xm-hp800.h: New files.
+ * va-hp800.h: New file.
+ * gvarargs.h: Use va-hp800.h if needed.
+ * config.subr, configure: Add alternatives for hp800, hp700.
+
+Thu Dec 5 09:35:15 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-search.c (note_debug_info_needed): Do the right thing for
+ static member functions.
+
+Thu Dec 5 01:25:13 1991 Michael Tiemann (tiemann at mole.gnu.ai.mit.edu)
+
+ * version.c: Now 1.96.
+
+Wed Dec 4 23:17:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (try_merge_delay_insns, fill_simple_delay_slots): Correctly
+ update NEXT_TRIAL after possibly splitting an insn.
+
+Wed Dec 4 17:03:11 1991 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * gplus.gperf: Add throw and template keywords. Update private,
+ protected, and public definitions.
+
+ * print-tree.c (print_node): Add missing indentation argument to
+ print_node call for values field.
+
+Wed Dec 4 18:39:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (build_objc_method_call): Define as static.
+
+Wed Dec 4 17:04:49 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (add_varray_page, alloc_type enum): Keep track of how
+ many pages we allocated for varrays as well as the small stuff.
+ (stabs_filename): New static to hold the special filename used for
+ passing stabs through.
+ (parse_stabs_common, parse_stabs, parse_stabn): New functions to
+ smuggle stabs through to the debugger. Stabs must be commented out,
+ just like the other debug directives.
+ (add_local_symbol): Check hash_ptr to see if it's null before
+ storing into it, in case no name is passed.
+ (add_file): Add support for the special stabs file.
+ (copy_object): Before copying the external symbols, figure out the
+ file indexes of each of the files, and then explicitly remap the
+ original file indexes of the external symbol to be the new file
+ index. If this isn't done, then bad file numbers can get generated
+ if a filename is repeated.
+ (various): Change the name of small_alloc to alloc_counts, since we
+ now track large memory allocations as well.
+
+ * mips-tdump.c (toplevel): Delete unnecessary include file stamp.h.
+
+Wed Dec 4 11:05:04 1991 Michael Collison (collison at osf.org)
+
+ * encore.h (ASM_OUTPUT_LABELREF_AS_INT): add definition
+ * ns32k.h: ditto
+
+ * ns32k.h (ASM_OUTPUT_LABEL, ASM_GLOBALIZE_LABEL): If COLLECT is
+ defined provide alternate definitions
+
+ * encrose.h (ASM_OUTPUT_INT): If COLLECT is defined provide
+ alternate definition
+
+Wed Dec 4 01:39:07 1991 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-pt.c (end_template_decl): For method templates, pop the class
+ binding level before the others rather than after.
+
+ * cp-class.c: Added DEBUG_CP_BINDING_LEVELS code. Include cp-decl.h
+ if that symbol is defined, but don't list it in Makefile.in since
+ that's not the normal mode.
+ (pushclass): Print messages and frob indentation level.
+ (popclass): Likewise.
+
+ * cp-spew.c (yylex): If identifier_type says PTYPENAME, and
+ following token is "<", force looking_for_typename to be
+ non-negative.
+
+ * cp-pt.c (mangle_class_name_for_template): Drop extra spaces
+ between last parm and closing ">". Print a message before aborting
+ if a parm type isn't handled.
+
+ * cp-decl.c (maybe_globalize_type): Don't do it if the identifier
+ that names the type doesn't currently have a type value.
+
+Wed Dec 4 01:06:28 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (finish_enum): Call `rest_of_type_compilation' for
+ ENUMTYPE.
+ * cp-class.c (finish_struct): Ditto.
+ * cp-decl.c (pushtag): Set TYPE_STUB_DECL.
+ * cp-search.c (note_debug_info_needed): Call
+ `rest_of_type_compilation' if we notice we need debug info for TYPE.
+ * dbxout.c (dbxout_init): Fix typo in comment.
+
+ * cp-parse.y (DOT_STAR): New token.
+ (expr_no_commas): Handle DOT_STAR expressions.
+ * cp-lex.c (real_yylex): Recognize DOT_STAR. Also, rearrange
+ scanner to make it more efficient.
+
+ * cp-decl.c (maybe_build_cleanup): When building cleanups, pass
+ TYPE_MAIN_VARIANT to `build_delete'.
+
+Tue Dec 3 22:52:33 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * flow.c (mark_set_1): Make a REG_UNUSED note not a REG_DEAD note
+ for the part of multi-word hard registers not needed.
+
+Tue Dec 3 22:34:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * configure: Support --objdir.
+
+ * objc-parse.y: Get rid of many static decls.
+ Reorder all token definitions to match c-parse.y.
+ (recognize_objc_keyword): New function.
+ * c-lex.c (token_buffer): No longer static.
+ (yylex): For @, call recognize_objc_keyword. Don't use keyword table.
+ * c-lang.c (recognize_objc_keyword): Dummy definition.
+
+ * objc-actions.c (build_objc_method_call) [!NEXT_OBJC_RUNTIME]:
+ Pass selector as arg to the method.
+ Always cast the method to a function type.
+
+ * xm-sparc.h (alloca): If using Sun CC, include alloca.h.
+ If using GCC, define as __builtin_alloca the way other machines do.
+
+ * cccp.c (print_containing_files): Print the nominal file names.
+
+Tue Dec 3 16:54:04 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): If branches are expensive, convert jumps
+ around increments or decrements by one into an increment by the
+ conditional expression.
+
+ * combine.c (simplify_comparison): Don't remove a SUBREG unless
+ it doesn't affect either operand.
+
+ * cse.c (find_comparison_args): Rework so that we can correctly
+ fold comparisons on machines that set CC0 to the result of a
+ condition test, not just a COMPARE.
+ (cse_insn): Don't set THIS_INSN_CC0 to a constant if we don't know
+ its mode.
+
+Tue Dec 3 12:01:12 1991 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * mips.md: Use AND not IOR in define_function_unit definitions.
+ Correct setting of MODE attribute in various insn patterns.
+
+Tue Dec 3 08:31:18 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-spew.c (scan_tokens): Delete Dec 2 change.
+ (yylex): Instead, copy TMP_TOKEN.YYLVAL.TTYPE if it was allocated on
+ the wrong obstack.
+ (probe_obstack): New function to support the above change.
+
+ * cp-tree.h (CLASSTYPE_DEBUG_REQUESTED): New flag.
+ (CLASSTYPE_ASM_WRITTEN): Deleted.
+ cp-class.c (finish_struct): Now almost always assume that classes
+ with methods are to ignored for debugging purposes.
+ cp-search.c (dfs_debug_{mark,unmarkedp}): Rewritten to handle new
+ algorithm for minimizing debug output.
+
+ * cp-decl2.c (constructor_name): Handle case when THING is a
+ UNION_TYPE.
+
+Tue Dec 3 06:35:38 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * jump.c (duplicate_look_exit_test): If REG_MAP is non-zero, call
+ replace_regs on the REG_NOTES of COPY.
+
+ * cp-spew.c (scan_tokens): Don't read past '='.
+
+ * cp-call.c (compute_conversion_costs): For now, treat
+ CONTRAVARIANCE_HARSHNESS as EVIL_HARSNESS, since we cannot tell the
+ difference between when we should accept it (pointers to the right
+ sort of methods) and when we shouldn't (base* to derived*
+ conversions).
+
+Mon Dec 2 18:53:42 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * cse.c (cse_around_loop): Fix typo in comment.
+ * dbxout.c (dbxout_type_fields): Likewise.
+
+ * sched.c (sched_analyze_1): Pass the second and third args of a
+ ZERO_EXTRACT or SIGN_EXTRACT in the SET_DEST to sched_analyze_2.
+
+ * combine.c (make_compound_operation): Change (lshiftrt (ashift ...))
+ to a ZERO_EXTRACT, not a SIGN_EXTRACT.
+
+Mon Dec 2 15:09:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * jump.c (jump_optimize): New arg AFTER_REGSCAN.
+ If not set, don't use duplicate_loop_exit_test.
+ * toplev.c (compile_file): Pass new arg to jump_optimize.
+
+ * next.h (SELECT_SECTION): Test TREE_CONSTANT as well as TREE_READONLY.
+
+ * xm-i86v[34].h: Renamed from xm-i860v[34].h.
+ * configure: Corresponding changes.
+
+ * m68k.c (output_function_epilogue): Put %R on all regs in asm_fprintf.
+
+ * t-decstatn (ld): Just copy collect2.
+ (collect): Target deleted.
+ (EXTRA_PASSES): Deleted collect.
+ (mips-tfile, mips-tdump): Depend on LIBDEPS.
+ * t-mips (mips-tfile, mips-tdump): Depend on LIBDEPS.
+ * collect2.c (main): Run /bin/ld.
+ Use fatal_perror where appropriate.
+
+ * objc-actions.c (build_message_expr): Fix typo.
+
+ * configure: Add missing fi to finish last change.
+
+ * cse.c (simplify_binary_operation): Restore missing break in case DIV.
+
+ * sdbout.c (sdbout_init): Explicitly do nothing.
+ (sdbout_typedefs): Function deleted.
+
+Mon Dec 2 12:504:35 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil)
+
+ * config-gcc.com: Finish changeover from tm-*.h to *.h.
+
+Sun Dec 1 05:18:32 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-search.c (lookup_{field,fnfields}): If PROTECT is 0, don't
+ memoize the entry we find.
+
+ * cp-decl.c (grokvardecl): Call `build_lang_field_decl' instead of
+ `build_decl' if we retroactively allocate a VAR_DECL.
+
+Sun Dec 1 00:10:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * configure: Convert option syntax from + to --.
+ Support --target.
+
+ * i386v4.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_GLOBAL): Deleted.
+ (ASM_FILE_START): Deleted.
+ (STARTFILE_SPEC, LIB_SPEC, STANDARD_STARTFILE_PREFIX): Deleted.
+ (STDC_VALUE): Deleted.
+
+ * real.h (REAL_VALUE_TRUNCATE): Check for same size as SFmode.
+
+ * config/*.h: Renamed from tm-*.h. #includes and comments changed.
+ * configure: Changed accordingly.
+ * t-*: tm-*.h file names changed.
+
+ * gnulib2.c (__enable_execute_stack): Renamed function.
+ * convex.h (INITIALIZE_TRAMPOLINE): Use new name.
+
+Sun Dec 1 08:57:45 1991 Michael Meissner (meissner at osf.org)
+
+ * cccp.c (main): Add cast in front of alloca for non GCC compilers.
+
+Sat Nov 30 22:33:24 1991 Chris Smith (csmith@convex.com)
+
+ * config.subr: Recognize -c3*.
+ New alternatives for convex-c3*.
+ * configure: Alternatives for convex rewritten.
+
+ * gnulib2.c (__execute_enable_stack): New function for Convex only.
+
+ * gcc.c (do_spec_1): Use \ as quoting char.
+
+ * convex.h (TARGET_SWITCHES): Add new machine types c32, c34, c38.
+ Add flag TARGET_INDIRECTS, true for c1 and c2, false for c3.
+ * convex.h (GO_IF_LEGITIMATE_ADDRESS): Avoid indirect
+ addressing if ! TARGET_INDIRECTS.
+
+ * convex.h: (BITS_PER_WORD, UNITS_PER_WORD, WORDS_BIG_ENDIAN):
+ It now works to describe machine correctly.
+
+ * convex.h (SIZE_TYPE, PTRDIFF_TYPE): Make them ints rather
+ than longs to match usage in /usr/include.
+
+ * convex.h (enum reg_class): Add classes SP_REGS, the stack
+ pointer, and INDEX_REGS, the remaining A_REGS.
+ (REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS): Adjust
+ for new classes.
+ (INDEX_REG_CLASS, BASE_REG_CLASS): Use INDEX_REGS so gcc will
+ not index off the stack pointer (register 0).
+
+ * convex.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE,
+ INITIALIZE_TRAMPOLINE): Define.
+
+ * convex.h (INITIAL_FRAME_POINTER_OFFSET): Define.
+
+ * convex.h (RTX_COSTS): Specify costs to prevent multiply
+ from being synthesized from shifts (which aren't faster).
+
+ * convex.h (NOTICE_UPDATE_CC): No need to do CC_STATUS_INIT,
+ cc is never looked at.
+
+ * convex.h (VTABLE_USES_MASK, VINDEX_MASK, SET_DECL_VINDEX):
+ define so g++ works.
+
+ * convex.h: If COLLECT is defined, define output macros for
+ collect to call.
+
+ * convex*.h: If !traditional, define _LONGLONG and 64-bit
+ typedefs to prevent types.h from murdering ansi compilations.
+
+ * convex.md (movsi): split into define_expand and two
+ anonymous define_insns, one that uses indirection and
+ one that doesn't. TARGET_INDIRECTS selects which.
+
+ * convex.c (output_call): New routine. Scan forward from call
+ to decide if AP is live, omit AP reload if not.
+ * convex.md (call, call_value): use output_call.
+
+ * convex.md (bit manipulation peepholes): remove, now done in
+ combine.
+
+ * convex.md (indirect_jump): Define.
+
+ * convex.c (const_double_{high,low}_int): Just return the
+ appropriate word, remove slow float computations.
+
+ * math-convex: New file to use builtin instructions.
+
+ * x-convex: Use cc -pcc to bootstrap gcc.
+
+Sat Nov 30 10:21:26 1991 Ron Guilmette (rfg at ncd.com)
+
+ * tm-i386v4.h (DBX_REGISTER_NUMBER): Different renumbering.
+
+ * tm-svr4.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Changed
+ so that the progbits parameter actually appears in the definitions.
+
+ * tm-svr4.h (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Adapted
+ for change in CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP.
+
+Sat Nov 30 07:05:06 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-spew.c (follows_{identifier,typename}): New arrays.
+ * cp-spew.c (init_spew): Initialize new arrays.
+ * cp-decl.c (lookup_name): takes new parameter PREFER_TYPE.
+ All callers changed.
+ * cp-spew.c (yylex): Set LOOKING_FOR_TYPENAME every time we see an
+ AGGR or ENUM.
+
+ * cp-lex.c (real_yylex): When composing EXTERN_LANG_STRING, call
+ `real_yylex', not `yylex'. Changed other places that depended on
+ calling `real_yylex' for their input.
+
+ * cp-spew.c (scan_tokens): Never read past '{' or ':'. Fill the
+ token buffer with EMPTY tokens in that case.
+ (yylex): Handle EMPTY tokens.
+
+ * cp-parse.y (structsp): Avoid using `yyungetc' to push a ';' back
+ on the input stream.
+ (START_DECLARATOR): New token.
+ (absdcl): Handle START_DECLARATOR.
+ * cp-spew.c (consume_token): Renamed from `discard_token'.
+ (struct token): Changed structure to make it smaller.
+ (spew_init): Renamed from init_spew. Now called from init_lex.
+ (scan_tokens): Renamed from slurp_next_token.
+ Many functions reformatted to match GCC indentation style.
+
+ * cp-lex.c (arbitrate_lookup): Don't guess in favor of type if
+ yychar is ')'.
+
+ * cp-decl.c (lookup_name): Fixed so that all binding levels use
+ `looking_for_typename' consistently.
+ * cp-type2.c (build_functional_cast): Handle new case that we are
+ called in a context where a method is appropriate (but we parsed it
+ as a ctor call).
+
+ * cp-call.c (CONST_HARSHNESS): Change bit that we test.
+ (convert_harshness,compute_conversion_costs): Call CONST_HARSHNESS
+ consisently when needed.
+
+ * cp-init.c (decl_constant_value): Keep enabled even when
+ CURRENT_FUNCTION_DECL is null.
+
+Sat Nov 30 01:23:38 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * sdbout.c (sdbout_init): Just call sdbout_one_type on each type.
+
+ * tm-att386.h (ASM_OUTPUT_ASCII): Output a space after ASM_BYTE_OP.
+ * tm-sun386.h: Likewise.
+ * tm-i386.h (ASM_OUTPUT_BYTE, ASM_OUTPUT_CHAR): Likewise.
+ (ASM_OUTPUT_SHORT, ASM_OUTPUT_LONG, ASM_OUTPUT_DOUBLE): Likewise.
+ (ASM_OUTPUT_FLOAT, ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
+ * tm-att386.h (ASM_BYTE_OP, ASM_SHORT, ASM_LONG, ASM_DOUBLE):
+ Don't end with space.
+ * tm-sun386.h, tm-bsd386.h: Likewise.
+
+ * c-lex.h: Renamed from c-parse.h. All #includes changed.
+ * c-parse.c, c-parse.h: Renamed from c-parse.tab.*.
+ * Makefile.in: Changed accordingly.
+ (C_OJBS, realclean, TAGS): These changed too.
+
+ * tm-svr4.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS):
+ Undef before defining.
+
+ * tm-i386v4.h: Include tm-svr4.h.
+ (CPP_PREDEFINES): Define SVR4, and several assertions.
+ (LIB_SPEC): Delete -Qy. LINK_SPEC handles this.
+ (DBX_REGISTER_NUMBER): New macro.
+
+Fri Nov 29 22:16:06 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md: Cannot use "muls" and "muli" to do widening multiply
+ from HImode to SImode; delete the 12 patterns that try to do this.
+
+Fri Nov 29 21:32:52 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-cvt.c (build_type_conversion): Don't assume that if
+ TYPE_HAS_{INT,REAL}_CONVERSION implies that CLASSTYPE_CONVERSION for
+ the given type combination is non-NULL.
+
+Fri Nov 29 16:08:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * crtstuff.c: New file. Needs papers from rfg.
+ * Makefile.in (crtbegin.o, crtend.o): New targets.
+
+ * objc-actions.c (build_message_expr): Lots of cleanups.
+ (build_objc_method_call): New subroutine.
+ Handles new option NEXT_OBJC_RUNTIME.
+
+ * expr.c (do_jump): Any LABEL_REF is nonzero.
+ (expand_expr): Construct LABEL_REFs with Pmode.
+
+Fri Nov 29 14:43:32 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (parse_def): Change an error into a warning.
+
+ * mips.md (fix_trunc??si_opt, mov??_internal): Change '*' constraint
+ to '!' to keep reload from allocating FP registers from holding
+ excess integer values.
+ (ashift right define_splits): Fix typo, so that the long long
+ arithmetic right shifts are recognized.
+ (all define_splits): dummy out constraints, since they are not used.
+
+ * mips.c (override_options): Allow int's in FP registers again, now
+ that ! constraints are used.
+
+Fri Nov 29 13:20:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * dwarfout.c (output_compile_unit_die): Don't include the name
+ of the compiler which compiled the compiler in the AT_producer
+ string. It goofs up comparisons of stage2 & stage3 object files.
+
+ * c-parse.y, objc-parse.y: Don't declare position_after_white_space
+ as static; it is now in c-lex.c.
+
+Fri Nov 29 05:15:26 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (xref_tag): Check that TREE_CODE (ref) is aggr type
+ before storing into CLASSTYPE_DECLARED_CLASS (ref).
+
+ * cp-decl2.c (build_push_scope): Don't let non-aggr types appear in
+ `cname::fname' expressions.
+
+ * cp-class.c (resolves_to_fixed_type_p): VAR_DECL and FIELD_DECL
+ nodes of ARRAY_TYPE may resolved to fixed type. Also handle other
+ cases of WITH_CLEANUP_EXPR.
+
+ * cp-spew.c (frob_identifier): Handle case of a type conversion
+ operator that converts to a nested type.
+
+ * cp-expr.c (cplus_expand_expr): In NEW_EXPR case, if ARGS is
+ permanent, build a new arglist instead of modifying it in place.
+
+ * cp-typeck.c (convert_arguments): Add ??? to comment about virtual
+ function conversions. ??? I don't understand what that code is
+ supposed to do anymore.
+ (comp_target_parms): If STRICT <= 0, accept types whose
+ TYPE_MAIN_VARIANTs are equal.
+
+ * cp-call.c (convert_harshness): Revamped to handle contravariance
+ better.
+ * cp-class.h (struct candidate): Declaration moved from cp-tree.h.
+
+ * cp-class.c (duplicate_tag_error): New function.
+ * cp-parse.y (LC): Call it if we're redefining a tag.
+ * cp-decl.c (duplicate_decls): Only copy DECL_ARGUMENTS from OLDDECL
+ if non-NULL. Otherwise we get nonsense when we try to parse
+ inline function bodies of classes that have already been redefined.
+ * cp-lex.c (reinit_parse_for_method): If we get some text for a
+ class that's been redefined, flush the text.
+ * cp-tree.h (TYPE_REDEFINED): New field in `struct lang_type'.
+
+ * cp-cvt.c (convert_to_integer): Only warn about anachronistic
+ conversion from int to enum if PEDANTIC is nonzero.
+
+ * cp-typeck.c (convert_for_initialization): No longer give warning
+ messages about bitwise copy: this is currently how the default X(X&)
+ constructor is implemented.
+ * cp-init.c (expand_aggr_init_1): Ditto.
+
+ * cp-method.c (dump_init): Handle WITH_CLEANUP_EXPR and TARGET_EXPR.
+ * tree.c (simple_cst_equal): Handle WITH_CLEANUP_EXPR. Correct
+ handling of TARGET_EXPR case.
+
+ * cp-decl.c (grok_reference_init): If DECL is permanent, make it's
+ DECL_REFERENCE_SLOT permanent as well.
+
+ * cp-cvt.c (build_type_conversion): If PEDANTIC, give message about
+ conversions which cast away const.
+
+ * cp-decl.c (store_return_init): If PEDANTIC, give error about named
+ return values.
+
+ * cp-init.c (decl_constant_value): Don't return DECL_INITIAL if
+ CURRENT_FUNCTION_DECL is null or if the initializer is a
+ CONSTRUCTOR.
+
+Thu Nov 28 05:29:52 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * integrate.c (expand_inline_function): When passing objects by
+ invisible reference, correctly compute the amount of space to be
+ allocated in the pseudo-frame we create for the inline function.
+
+ * cp-typeck.c (mark_addressable): Add call to
+ `mark_inline_for_output' that got lost in Nov 25 change.
+
+ * cp-decl.c (push_overloaded_decl): If the value of a name is an
+ ADDR_EXPR, look inside to get the _DECL node.
+
+ * cp-decl.c (grokdeclarator): Don't convert type of operators new
+ and delete to METHOD_TYPE; they remain FUNCTION_TYPEs.
+
+ * function.c (expand_function_start): Set TREE_REGDECL bit on
+ RESULT_DECL if result starts life in a register.
+
+ * c-common.c (truthvalue_conversion): Don't treat a CONVERT_EXPR as
+ a NOP when it or the expression inside it is of REFERENCE_TYPE.
+
+ * cp-class.c (finish_struct): Test DESTRUCTOR_NAME_P on
+ DECL_ASSMBLER_NAME, not DECL_NAME.
+
+Wed Nov 27 13:49:10 1991 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * cse.c (simplify_relational_operation): Correct handling of
+ COMPARE as first argument. Always strip it off. Don't invert
+ return value for EQ when !HAVE_cc0.
+
+Thu Nov 28 20:08:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gmon.c: New file.
+
+Thu Nov 28 15:02:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst, case SET): Never make a paradoxical SUBREG of
+ a REG unless the SUBREG and REG occupy the same number of words.
+
+ * emit-rtl.c: Include flags.h.
+ (operand_subword): Always look inside floating if -fpretend-float.
+ * final.c (split_double): Likewise.
+ * Makefile.in (emit-rtl.o): Includes flags.h.
+
+ * c-lex.c (yylex): Add goto to `L' case.
+
+Thu Nov 28 08:37:02 1991 Michael Tiemann (tiemann at mole.gnu.ai.mit.edu)
+
+ * tm-mips.h (ASM_OUTPUT_INT): Use `do {...} while (0)' so it can be
+ used in if/else constructs.
+
+Thu Nov 28 00:23:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tree.h (BUILT_IN_FRAME_ADDRESS, BUILT_IN_RETURN_ADDRESS):
+ New function codes.
+ * c-decl.c (init_decl_processing): Declare the functions.
+ * expr.c (expand_builtin): Implement them.
+
+ * gcc.c: Pass to ld all the dirs in LIBRARY_PATH:
+ (library_prefix): New list of prefixes.
+ (process_command): Put dirs from LIBRARY_PATH on that list.
+ (do_spec_1): %D outputs those dirs.
+ (link_command_spec): Use %D after passing -L options.
+
+ * gcc.c (process_command): Don't require machine suffix
+ for dirs from COMPILER_PATH or LIBRARY_PATH.
+
+ * cccp.c (main): C_INCLUDE_PATH, etc., add dirs rather than replacing.
+
+ * Use the TYPE_DECLs to drive dbx and sdb output of type tags.
+ * toplev.c (rest_of_type_compilation): New function.
+ (compile_file): Pass list of initial decls to dbxout_init, sdbout_init.
+ (various): Don't call get_*_types.
+ * dbxout.c (dbxout_init): Get initial types from that list.
+ * sdbout.c (sdbout_init): Likewise.
+ * sdbout.c, dbxout.c: Don't call get_*_types.
+ (*out_typedefs): New subroutines.
+ * c-decl.c (finish_struct, finish_enum): Call rest_of_type_compilation.
+ (pushtags): Record TYPE_STUB_DECL.
+ * tree.h (TYPE_STUB_DECL): New macro.
+ * stor-layout.c (chain_type, get_permanent_types, get_temporary_types):
+ Deleted.
+ (save_storage_status, restore_storage_status): Don't frob chains.
+ (layout_type): Don't call chain_type.
+
+ * dbxout.c (dbxout_type_fields): Output `/'-spec after type tag
+ only if really needed.
+
+Wed Nov 27 18:52:55 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * expr.c (expand_expr): Typo in expand_end_bindings, in BIND_EXPR case.
+
+Wed Nov 27 23:10:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Use savestring, not strdup.
+
+Wed Nov 27 17:10:17 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.c (mips_load_reg3, mips_load_reg4): New global variables to
+ enable scheduling the second nop for the mfhi and mflo instructions.
+ (mips_hard_regno_mode_ok): New global array to give the results
+ of HARD_REGNO_MODE_OK for each register and mode.
+ (mips_fill_delay_slot): Instead of taking the number of nops as a
+ parameter, take an enumeration, giving what kind of delay this is.
+ If the next instruction is a label, put nops before label, not
+ after. Add support for mflo/mfhi, which need 2 nops if the next
+ instruction would modify the hi/lo registers.
+ (mips_move_1word, mips_move_2words): mips_fill_delay_slot calling
+ sequence changes. Pass mflo/mfhi to schedule nops.
+ (mips_move_2words): Move DImode to/from hi and lo registers is now
+ supported.
+ (function_arg): Correctly align long long parameters, just like
+ doubles. Also correct typo in debug code. Bug report from
+ lisa@MicroUnity.com.
+ (override_options): Initialize mips_hard_regno_mode_ok. Restrict
+ int's from going in the FP registers, to limit the register
+ allocator from allocating them instead of using memory. Also, make
+ the special registers (HI, LO, FPSW) only accept full sized ints, or
+ a double int for the HI:LO combination.
+ (compute_frame_size): Don't set the initialized member until reload
+ has completed, since otherwise the information may change.
+
+ * mips.md (various): Add 64 bit integer operations for addition,
+ subtraction, negation, and, inclusive or, exclusive or, one's
+ complement, shifts, and nor. Add 32x32->64 bit support for
+ multiply, which the compiler then uses to construct 64 bit
+ multiplies.
+ (mulsi3): Break mul into it's two instructions, and schedule the
+ two nops needed for the mflo instruction. Don't allow an integer
+ multiplier anymore.
+ (ffssi2): Delete define_expand, and use a second clobber'ed register
+ to preserve the original input, instead of (clobber (match_dup 1)).
+ (movsi_ulw): Change mips_fill_delay_slot calling sequence.
+ (movdi_internal): Allow DImode move from HI/LO to/from GP registers.
+ (movdi define_split): Add a define_split to separate the two parts
+ of DImode register pairs when using GP registers.
+ (movdf define_split): Add a define_split to separate the two parts
+ of DFmode register pairs when using GP registers.
+ (mov??_internal): Change condition to call memory_operand, instead
+ of just checking for MEM, which disallows (subreg (MEM)) during
+ the intermediate parts of the compilation. Reported by
+ lisa@MicroUnity.com.
+ (negsi2): Turn back into a real insn instead of just a
+ define_expand for subsi3.
+ (one_cmplsi2): Turn back into a real insn instead of just a
+ define_expand for norsi3.
+ (andsi3, iorsi3, xorsi3): Be more liberal than the real machine, and
+ allow 32 bit constants to improve the code generated for bitfields,
+ at the expense of potentially not moving the constant out of loops.
+ (various): Add = constraint to all clobbers.
+ (fix_trunc*): Go back to old method of using two clobbers, since
+ unoptimized compiles call abort otherwise, when returning the result
+ of truncating a float as a function result.
+
+ * tm-mips.h (delay_type): New enum to express different types of
+ delay slots.
+ (mips_load_reg3, mips_load_reg4): Declarations for more registers
+ to check for needing nops. Used by multiply/divide to schedule
+ the two nops needed after mfhi/mflo if the next instruction would
+ clobber the register.
+ (CONDITIONAL_REGISTER_USAGE): If -msoft-float, disable all FP
+ registers.
+ (MASK_DEBUG_G): Add comment saying -mdebugg turns of new DImode
+ patterns, in case the code is wrong.
+ (HARD_REGNO_NREGS): All FP registers use register pairs, so that
+ SF in a GP register takes only one register, and SI in a FP
+ register takes 2.
+ (HARD_REGNO_MODE_OK): Change macro to reference the array
+ mips_hard_regno_mode_ok, which is now built in override_options.
+ (CONST_OK_FOR_LETTER_P): 'N' is now for negative numbers, 'O' is
+ an exact power of 2, and 'P' is now for positive numbers.
+ (PREFERRED_RELOAD_CLASS): If -msoft-float, never prefer a FP
+ register.
+ (PREFERRED_RELOAD_CLASS_FM): Delete, since nobody uses it.
+ (FINAL_PRESCAN_INSN): Check for mips_load_reg3 and mips_load_reg4
+ being mentioned. Also add a missing tab when more than one delay
+ slot.
+ (CONST_COSTS): Make all constant ints cost 0 to lower register
+ pressure according to Richard Kenner.
+ (RTX_COSTS): Adjust costs for DI, SF, and DF modes, and add ABS/FFS
+ costs as well.
+ (REGISTER_MOVE_COSTS): Bump costs for moving between register
+ classes, so that reload doesn't try to store int type values in the
+ floating point registers.
+
+Wed Nov 27 15:01:52 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * config-gcc.com: Renaming of out-vax.c.
+ * make-cc1.com: Link dbxout with all languages. Add cp-spew.
+
+ * cccp.c (include_defaults_array): Fix typo.
+
+ * gstddef.h: Handle _STDDEF_H_.
+
+ * configure.bat, Makefile.dos: New files.
+
+ * c-lex.c: New file. All subroutines moved here.
+ (yylex): Small diffs between C and OBJC merged.
+ * c-parse.y, objc-parse.y: Deleted from here.
+ * c-lang.c (lookup_interface): New stub.
+ * Makefile.in (c-lex.o): New rule.
+ (OBJC_OBJS, C_OBJS): Changed for new files.
+
+Wed Nov 27 13:34:15 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * c-parse.y (yylex): Don't assume that long is 32 bits and long
+ long is 64 bits when warning for out of range integer constants,
+ and when creating a tree to represent integer constants.
+ * cp-lex.c (real_yylex): Likewise.
+ * objc-parse.y (yylex): Likewise.
+
+ * combine.c (simplify_comparison, ASHIFT case): Prevent shift by
+ HOST_BITS_PER_INT for inequality comparisons.
+
+ * fold-const.c (operand_equal_p): Arguments are not equal if
+ signedness differs. Conversions don't match if signedness differs.
+
+ * sparc.md (movsi, movhi, movqi, movdi): Prohibit matches that
+ would require reloading by the use of conditions.
+
+ * alloca.c (alloca): Add parens to make precedence clearer.
+
+ * tm-news.h (PRINT_OPERAND): Add 68040 support so that the compiler
+ will bootstrap.
+
+Wed Nov 27 09:41:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case MIN_EXPR): Fix typo in operand number
+ in safe_from_p call.
+
+ * recog.c (indirect_operand): Correctly handle case where we have
+ a (subreg (mem X) C) after reload.
+
+Tue Nov 26 16:24:03 1991 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (output_enumeration_type_die): Handle a GNU C
+ language extension: incomplete enum types.
+
+ * dwarfout.c (output_type): Fixed bug which causes DIEs for
+ file-scope tagged types to be generated in a local-scope
+ under some conditions.
+
+ * dwarfout.c (dwarfout_init, dwarfout_finish): Moved code which
+ generates most of the .debug_aranges entries from dwarfout_init
+ into dwarfout_finish to avoid m68k assembler bug.
+
+ * Makefile.in (EXTRA_PARTS): New parameter.
+ (install-common): Compile the things in EXTRA_PARTS.
+ (GCC_PASSES, GCC_PARTS): New variables.
+ (STAGESTUFF, native, enquire, enquire.o): Use them.
+ (protoize, protoize.o, unprotoize, unprotoize.o, SYSCALLS.c.X):
+ (gnulib2.ready, collect2, collect2.o, getopt.o, getopt1.o): Likewise.
+
+ * tm-svr4.h (CPP_PREDEFINES): Don't define this here. Undef it
+ so that other files which include this one will be forced to
+ define it appropriately for the specific target and OS.
+ (CPP_SPEC): Deleted.
+ (LIB_SPEC): Add crtend.o as last thing linked in on each link-step.
+ (STARTFILE_SPEC): Add crtbegin.o as the first thing linked in.
+ (NO_DOLLAR_IN_LABEL): Added define. Most svr4's don't support $.
+
+ * tm-svr4.h: Added support for the .ctors and .dtors sections
+ (as for the m88k).
+ (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): New macros.
+ * tm-svr4.h (HERE_ASM_OP, ASM_DECLARE_FUNCTION_SIZE): Deleted
+ define of HERE_ASM_OP and made ASM_DECLARE_FUNCTION_SIZE not
+ try to use a dot when computing a function's size in a .size
+ directive (because Tom Wood says that 88open doesn't approve
+ of dot as an asm operand).
+
+ * x-genix, x-i386sco, x-xenix (INSTALL): Define as cp.
+
+Tue Nov 26 16:24:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Pass -A* to cpp.
+
+ * Make names unique if unpacked on MSDOG.
+ * config/*.c: `out-' removed from all file names out-*.c.
+ * x-hp*: Renamed from x-hp9k*.
+ * tm-conv1.h, tm-conv2.h: Renamed from tm-convex*.h.
+ * tm-hp*.h: `9k' removed from these names.
+ * tm-isi*.h: `68' removed from these names.
+ * tm-i860b.h, tm-i860bg.h: `sd' removed.
+ * tm-i860g3.h: Renamed from tm-i860v3g.h.
+ * tm-i386sun.h: Renamed from tm-sun386i.h.
+ * tm-sun3o3.h, tm-sun4o3.h: Were tm-sun*os3.h.
+ * tm-sun3n3.h: Was tm-sun3os3nf.h.
+ * tm-sun3n.h: Was tm-sun3-nfp.h.
+ * tm-sun2o4.h: Was tm-sun2os4.h.
+ * xm-hp320.h: Was xm-hp9k320.h.
+ * xm-i386sun.h: Was xm-sun386i.h.
+ * configure: Adjust for those renamings.
+
+ * configure (m68000-hp-hpux*): Use xm-hp320.h.
+
+ * stmt.c (expand_value_return): New subroutine.
+ (expand_return): Use that.
+
+ * make-gcc.com: New name for make.com.
+
+ * stor-layout.c (layout_record): Return list of static members.
+ (layout_type): Lay them out here.
+
+ * expmed.c (init_expmed): Use 3 as shift count for shift_cost.
+
+ * x-sco: File deleted.
+
+ * print-tree.c (print_node): Always be brief for vector elts.
+
+Tue Nov 26 07:42:41 1991 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Fix typo involving ~RID_STATIC.
+
+Mon Nov 25 21:51:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * optabs.c (emit_cmp_insn): If both operands are VOIDmode,
+ put first operand into register, not second.
+
+ * alliant.md, gmicro.md, i386.md, m68k.md, ns32k.md, pyr.md:
+ Don't allow a constant as the first operand to tstxx insns.
+ * tahoe.md, vax.md: Likewise.
+ * convex.md: Remove erroneous comment on tstsi.
+
+Mon Nov 25 20:51:00 1991 DJ Delorie (dj@ctron.com)
+
+ * cccp.c (main): Look in env vars to override header dir list.
+ * gcc.c (process_command): Likewise.
+
+ * gcc.c (execute): Alternate way to get status on MSDOS.
+ Error for -pipe on MSDOS.
+ (pexecute): Alternate definition for MSDOS.
+ (find_a_file): Handle new hook EXECUTABLE_SUFFIX.
+ (EXECUTABLE_SUFFIX): Add default definition, and alternate for MSDOS.
+ (P_tmpdir): Add default definition for MSDOS.
+
+Mon Nov 25 17:18:52 1991 Michael Collison (collison at osf.org)
+
+ * x-encrose: New file for mmax running OSF/1.
+ * t-encrose: ditto.
+
+ * ns32k.md (movsi): Use new constraint letters 'x' and 'y'
+ representing the frame and stack pointer.
+ (movhi,movqi): Add constraints and template code to allow moves
+ between the floating point and general purpose registers.
+
+ * tm-ns32k.h (REGISTER_MOVE_COST): Use this macro to discourage
+ moves between the floating point registers and the frame and stack
+ pointer. Also discourage moves between the fp and general registers.
+ (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
+ REG_CLASS_FROM_LETTER): Add two new register classes representing
+ the frame pointer and stack pointer respectively.
+ (GO_IF_NONINDEXED_ADDRESS): Add check to see if register is also a
+ base register. This causes reload to reject pseudo registers when
+ REG_OK_STRICT is defined.
+
+ * tm-i386rose.h: New file for 386 running on OSF/1.
+ * x-i386rose: ditto
+ * t-i386rose: ditto
+
+ * config.subr: Added case for 'osf-'.
+ * configure: Added case for i386-osfrose
+
+ * tm-encrose.h (CC1_SPEC): Simplified so by default it passes nothing.
+ (ASM_SPEC): Changed so that under OSF/1 with NO_J_SWITCH defined
+ nothing is passed to the assembler.
+ (TARGET_DEFAULT): Changed so that, by default, no code is generated
+ using the static base (sb) register.
+ (OVERRIDE_OPTIONS): Removed in lieu of the new debug macros
+ PREFERRED_DEBUGGING_TYPE and DEFAULT_GDB_EXTENSION.
+ (DEFAULT_GDB_EXTENSIONS): Define it
+ (PREFERRED_DEBUGGING_TYPE): Use it.
+
+Mon Nov 25 17:18:52 1991 Jyrki Kuoppala (jkp at batman.hut.fi)
+
+ * ns32k.md (ashlhi3): use addw also on 32532 if shiftcount is 1.
+ (ashlqi3): likewise.
+ (addsi3): don't use addr instead of addd on the 32532.
+
+ * out-ns32k.c (calc_address_cost): don't assume unknown RTX codes
+ have XEXP's which are rtx's.
+
+ * ns32k.md (movsi): don't use addr for the 32532 immed displacements.
+ (shift patterns): fixed a typo with %$%n.
+
+ * out-ns32.c (calc_address_cost) new function.
+ tm-ns32k.h (ADDRESS_COST): call calc_address_cost.
+
+ * out-ns32k.c (print_operand_address): use error & debug_rtx if error.
+
+ * tm-ns32k.h (CONST_OK_FOR_LETTER_P): constraint 'I' shouldn't
+ match anything on the 32532 to make negative arithmetic left
+ shifts behave consistently.
+
+ * ns32k.md (subsf+1): don't use ajdspb on the 32532.
+
+ * tm-ns32k.h (CONST_OK_FOR_LETTER_P): positive values not OK for
+ constraint 'I' if on 32532.
+
+ * ns32k.md (ashl??): if TARGET_32532, use lsh{d,w,b}.
+
+ * ns32k.md (adjusting stack pointer): don't use ajdp{b,w} if not 32532.
+
+ * ns32k.md (isv,insv-1,insv-2,extzv): use constraint K instead of
+ n for offset.
+
+ * ns32k.md (insv-1): use only register_operand with constraint
+ "r" for operand 2, insd can't take constant offsets >= 8.
+ (pattern insv-2): added another insv-like pattern, for
+ offsettable operand.
+ (insv): constraint should be "+g".
+ (pattern before insv): installed an insv-like pattern
+ with operand 0 having register_operand and SImode.
+
+ * out-ns32k.c (print_operand): define as a void function.
+
+ * ns32k.md (call_value): use operands[1], not operands[0] to check
+ for CONSTANT_ADDRESS_P.
+
+ * out-ns32k.c (print_operand): eliminate
+ PRINT_OPERAND_EXTRACT_FLOAT, don't depend on HOST_WORDS_BIG_ENDIAN.
+
+ * tm-ns32.h (INDIRECTABLE_1_ADDRESS_P): use CONSTANT_ADDRESS_P,
+ not CONSTANT_P.
+
+ * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): checking for CONST_INT
+ is not right because displacements are not 32-bit. Use
+ CONSTANT_ADDRESS_NO_LABEL_P instead.
+
+ * tm-ns32k.h (output_move_double, output_shift_insn): New declarations.
+
+ * out-ns32k.c (print_operand_address): Use fatal for errors.
+
+ * ns32k.md (insv, extzv): Replaced with the pattern near insv in 1.40.
+
+ * out-ns32k.c (print_operand): function moved from tm-ns32k.h.
+ Modified to use PUT_IMMEDIATE_PREFIX, PUT_EXTERNAL_PREFIX; added
+ macro PRINT_OPERAND_EXTRACT_FLOAT.
+
+ * out-ns32k.c (print_operand_address): replaced the function with
+ a more clean version, written for gas syntax.
+
+ * ns32k.md (call): #if 0 code which was used when GAS_SYNTAX was not
+ defined.
+ (call_value): likewise.
+
+ * ns32k.md (pattern after ashrsi3): added % before $ so the
+ pattern works also for gas syntax.
+ (pattern after ashrhi3): likewise.
+ (pattern after ashrqi3): likewise.
+ (pattern after lshrsi3): likewise.
+ (pattern after lshrhi3): likewise.
+ (pattern after lshrqi3): likewise.
+ (pattern after rotrsi3): likewise.
+ (pattern after rotrhi3): likewise.
+ (pattern after rotrqi3): likewise.
+
+ * ns32k.md (movsf): put #ifndef GAS_SYNTAX part inside #if 0 since
+ for now we only use GAS syntax.
+
+ * tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): add TARGET_SB as a
+ condition in addition to CONSTANT_ADDRESS_P.
+
+ * tm-ns32k.h (MEM_REG): use CONSTANT_ADDRESS_P instead of GET_CODE
+ == SYMBOL_REG, add TARGET_SB to the second-part condition.
+
+ * ns32k.md (rotrsi3): fixed a typo NEGATE->NEG
+
+ * tm-ns32k.h: added a comment about CONSTANT_ADDRESS_P; it's not
+ strictly according to the spec.
+
+ * tm-ns32k.h: added defaults for ABSOLUTE_PREFIX,IMMEDIATE_PREFIX
+ etc, using gas syntax.
+
+ * out-ns32k.c: removed macro FP_REG_P.
+
+ * tm-ns32k.h: (ASM_OUTPUT_ALIGN_CODE): changed alignment from 4 to
+ 2 since GAS syntax is the default assembler syntax now.
+ (PRINT_OPERAND, PRINT_OPERAND_ADDRESS): defined to call
+ print_operand and print_operand_address in out-ns32k.c,
+ respectively.
+
+ * tm-ns32k.h: New macros TARGET_SB, TARGET_PIC.
+ Dummy code for trampolines, calls fatal().
+ Macro FP_REG_P moved here from out-ns32k.c.
+ Some reorganizations of blocks.
+ 68000 -> ns32k.
+
+ * tm-ns32k.h (TARGET_VERSION) says GAS syntax.
+ (TARGET_*) added some empty lines for clarity.
+
+Mon Nov 25 14:29:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (aux-output.o): Depend on insn-codes.h.
+
+ * make-cc1.com: Handle print-rtl.c.
+
+ * toplev.c (warn_aggregate_return): New variable.
+ (W_options): Define option to set it.
+ * flags.h: Declare it.
+ * calls.c (expand_call): Print warning if value is aggregate.
+ * function.c (init_function_start): Likewise.
+
+Mon Nov 25 13:29:50 1991 Per Bothner (bothner at cygnus.com)
+
+ * cp-except.c (init_exception_processing): Fix return type of
+ longjmp (from int to void).
+
+Mon Nov 25 13:11:51 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * rtlanal.c (refers_to_regno_p): Check for `x == 0' on repeat.
+
+ * x-mips, xm-vms.h: Change cplus-* to cp-* in comments.
+ * x-tower (X_CFLAGS): Add missing `-'.
+
+ * unroll.c (unroll_loop): When simplifying loops executed only once,
+ use last_loop_insn not copy_end.
+
+Mon Nov 25 07:45:46 1991 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cp-except.c (init_exception_processing): Mark `ExceptionHandler'
+ constructor and destructor as being TREE_EXTERNAL, and mark the
+ `ExceptionHandler' type as being interface-only.
+
+ * cp-decl.c (maybe_globalize_type): Don't test TYPE_BEING_DEFINED
+ for ENUMERAL_TYPE.
+
+ * cp-class.c (modify_vtable_entry): Disable code which attempts to
+ encode in a vtable an indirection to another vtable entry.
+
+ * cp-call.c (build_method_call): Convert FUNCTION to
+ DECL_MAIN_VARIANT (FUNCTION) once we are going to use it for real.
+ * cp-init.c (build_delete): Use DECL_MAIN_VARIANT (DTOR). *
+ * cp-typeck.c (mark_addressable): Use DECL_MAIN_VARIANT (X).
+
+Mon Nov 25 00:41:14 1991 Per Bothner (bothner at cygnus.com)
+
+ * dbxout.c (dbxout_type): Tiemann's DECL_IGNORED_P optimization (Nov
+ 20) was a little too drastic: If it succeded, no type info was
+ emitted at all, which made for syntactically invalid stabs.
+ Instead, just set 'full=0',
+ * dbxout.c (dbxout_symbol): Re-write code for TYPE_DECL to be a
+ little cleaner. It *seems* to work ...
+
+Sun Nov 24 19:32:07 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sched.c (update_links): Use PUT_REG_NOTE_KIND to change REG_NOTE.
+
+Sun Nov 24 14:53:37 1991 Ron Guilmette (rfg at ncd.com)
+
+ * cccp.c: Add `return 0;' statements to all do_* functions which
+ needed them to prevent spurious warnings. Also change plain
+ `return;' statements to `return 0;' statements where appropriate.
+
+Sun Nov 24 07:37:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): When making equivalences of subparts of
+ a SET, avoid putting a (hard) register in the hash table twice,
+ each time with different modes.
+
+ * genrecog.c (write_tree_1,change_state): Don't check for a position
+ containing a '*' since we don't set it to that.
+ (main): Don't define recog_addr_dummy; no longer used.
+ * recog.c (recog_addr_dummy): No longer needed; wasn't actually used.
+ (init_recog_no_volatile, init_recog): Don't set recog_addr_dummy.
+
+ * expmed.c (store_split_bit_field, extract_bit_field): Abort if
+ operand_subword of target returns 0.
+ * expr.c (convert_move, move_block_from_reg, emit_move_insn): Likewise.
+
+ * combine.c (subst, case SUBREG): Don't allow making a SUBREG of
+ a hard reg in a mode not valid for that hard reg.
+ * emit-rtl.c (gen_lowpart_common, operand_subword): Likewise.
+
+ * expmed.c (extract_split_bit_field): Use operand_subword_force.
+ * expr.c (emit_move_insn): If operand_subword fails for non-const,
+ use operand_subword_force.
+
+ * expmed.c (expand_mult): Pass OP0 through protect_from_queue so we can
+ use it in a REG_EQUAL note and check it for being a MEM.
+
+ * rtl.def (SMIN, SMAX, UMIN, UMAX): New RTL codes.
+ * fold-const.c (const_binop, case MIN_EXPR, MAX_EXPR): Use MIN and MAX.
+ (fold, case MIN_EXPR, MAX_EXPR): Check for operands equal; check for
+ min (x, lowest-value-for-type) and max (x, highest-value-for-type).
+ (fold, case COND_EXPR): Look for conditionals that are equivalent
+ to ABS_EXPR, MIN_EXPR, or MAX_EXPR and convert them to the appropriate
+ expression.
+ * expr.h (smin_optab, smax_optab, umin_optab, umax_optab): New vars.
+ * gcc.texinfo (smin, smax, umin, umax): Add documentation.
+ * expr.c (expand_expr, case ABS_EXPR): Ignore ABS on unsigned types.
+ If jumps are expensive, we can do ABS with shifts and xors.
+ (expand_expr, case MIN_EXPR, MAX_EXPR): Try to do using new optabs.
+ * optabs.c (smin_optab, smax_optab, umin_optab, umax_optab):
+ Initialize new optabs.
+ * cse.c (simplify_binary_operation): New cases SMIN, SMAX, UMIN, UMAX.
+ * rs6000.md (sminsi3, smaxsi3, uminsi3, umaxsi3): New patterns.
+ * m88k.md (abssi2): Delete pattern; now done in expr.c.
+
+ * rs6000.md (scc): Correct typos in last change.
+
+ * expmed.c (expand_mult): TARGET will only be written once, so
+ function return register is OK.
+ Write a REG_EQUAL note so multiplications can be cse'ed.
+
+ * expmed.c (emit_store_flag): Skip trying most sequences of insns
+ if branches are very cheap (BRANCH_COST == 0).
+ * expr.c (expand_expr, case COND_EXPR): Check for BRANCH_COST <= 1,
+ not equal to 1.
+ Know that emit_store_flag won't do most sequence if branches are very
+ cheap.
+
+ * tm-vax.h (BRANCH_COST): Define to be equal to zero.
+
+Sun Nov 24 07:07:31 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (maybe_globalize_type): Don't globalize a type that's
+ being defined.
+
+Sun Nov 24 05:08:57 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_struct): Use main variant checking ANSI bitfields.
+
+ * tm-tower-as.h (ASM_FILE_START): Use output_file_directive.
+
+ * gcc.c (process_command): Treat `-' as file name, not option.
+
+Sat Nov 23 20:28:58 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_binary_operation): Remove duplicate code for SFmode
+ and DFmode; use of REAL_VALUE_TRUNCATE means that all modes can be
+ handled with the same code.
+ Truncate result as well as inputs to computations.
+
+ * cse.c (cse_basic_block): Allow recording of destinations in the
+ final insn of a LIBCALL block.
+
+ * flow.c (insn_dead_p): Add new argument CALL_OK.
+ (propagate_block): Pass new arg.
+ (libcall_dead_p): Indicate that we can accept a CALL when we use
+ insn_dead_p to see if the destination of the CALL is dead.
+
+ * genrecog.c (struct decision): Remove fields `dupcount'
+ and `reg_class' and all references; they were being set but never
+ used and are now obsolete.
+
+ * emit-rtl.c (gen_lowpart_common, operand_subword): Don't make
+ a new REG for the function return value until we after the RTL
+ is copied for possible inlining; use a SUBREG instead.
+
+ * combine.c (can_combine_p): Don't move insn past a volatile ref if
+ it is an `asm', even if non-volatile.
+
+ * gmicro.md: Fix punctuation problem causing syntax error.
+
+ * tm-rs6000.h (CONST_OK_FOR_LETTER_P): Add `O' and `P'.
+ * out-rs6000.c (reg_or_neg_short_operand): New function.
+
+ * rs6000.md (attribute "type"): New type `delayed_compare'.
+ Add define_function_unit for delayed comparisons.
+ Mark comparison results of certain insns as being delayed for
+ longer that normal comparison results; add a new missing types
+ of `compare'.
+ (seq, sle): Remove special-cases for (const_int 0) operands; use
+ alternative with constraint of `O' instead.
+ (sltu, sgeu): Support most constants in second operand.
+
+ * cse.c (prev_insn_cc0_mode): New variable.
+ (fold_rtx): When folding CC0, get the mode from prev_insn_cc0_mode.
+ (cse_insn): Save mode of SET of CC0 in prev_insn_cc0_mode.
+
+Sat Nov 23 17:01:47 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expmed.c (init_expmed): Make REG a pseudo, not a hard reg.
+
+ * tm-m68k.h (RTX_COSTS): New macro.
+
+ * varasm.c (make_decl_rtl): Get rid of pedantic warning.
+
+ * gcc.c (link_command_spec): Delete code for handling -collect.
+ (default_compilers): Get rid of the %x for g++.
+ This is because now collect is always supposed to be run.
+
+ * tm-vms.h (ASM_OUTPUT_COMMON): Avoid void as type in :? operator.
+ * tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND):
+ Likewise.
+ * tm-vaxv.h (ASM_OUTPUT_ASCII): Declare `s' as unsigned char *.
+ * tm-crds.h (FUNCTION_EPILOGUE): Don't call FUNCTION_EXTRA_EPILOGUE.
+
+ * configure (i386-dontknow-*, ns32k-*-*): Alternatives deleted.
+ (m68k-tti2-*): Deleted.
+ (m68k-tti-*): Renamed from m68k-tti1-*.
+
+ * i860.md (floatsidf2): Escape the doublequotes.
+
+ * Makefile.in (final.o): Add insn-codes.h as dep.
+ (OBJS): Add dbxout.o.
+ (C_OBJS, OBJC_OBJS): Deleted here.
+ (CPLUS_OBJS): Deleted cp-dbxout.o.
+ (cp-dbxout.o): Target deleted.
+
+Sat Nov 23 06:33:24 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-spew.c (yylex): Don't see TYPENAME if LOOKING_FOR_TYPENAME
+ is < 0. Definitely see TYPENAME if LOOKING_FOR_TYPENAME > 0.
+
+ * cp-decl.c (grokdeclarator): Any type construction that uses a
+ struct/union/enum type that is not yet defines pushes that type into
+ the global namespace.
+
+ * cp-spew.c (discard_token): Renamed from `eat_token'.
+ Also, make all local functions static. Some day we'll use inlining.
+
+Thu Nov 21 16:06:14 1991 Mark Eichin (eichin at cygnus.com)
+
+ * Makefile.in: added rule for cp-spew.o
+
+ * cp-parse.y (TYPENAME_SCOPE): added an action, since it is no
+ longer done in the lexer.
+ (yyprint): Took out case for TYPENAME_SCOPE.
+
+ * cp-lex.c (real_yylex): renamed from yylex. Also all of the code
+ dealing with nested classes has been #if 0'd in favor of the code in
+ cp-spew.c.
+
+ * cp-spew.c (New File): This calls yylex (which is now real_yylex)
+ and looks ahead as far as possible to bind up nested classes and
+ pass them on to the parser.
+
+Thu Nov 21 18:14:11 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * out-sparc.c (output_function_epilogue): Correct parameters in
+ call to final_scan_insn, write_symbols parameter no longer exists.
+
+ * integrate.c (save_for_inline_copying): Use GET_RTX_CLASS.
+
+Thu Nov 21 17:44:46 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * gcc.texinfo (PCC_BITFIELD_TYPE_MATTERS): Clarify that macro
+ must always be non-zero unless MEM extv/extzv/insv exist.
+
+ * romp.md (movdi): Disable define_split when we are moving
+ between overlapping registers prior to reload to work
+ around hard-to-fix sched.c bug.
+
+Thu Nov 21 17:14:54 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * jump.c (invert_exp): Correct typo in comment.
+
+Thu Nov 21 15:34:27 1991 Michael Meissner (meissner at osf.org)
+
+ * gcc.texinfo (warning options): Make the documentation agree with
+ the code, -Wstrict-prototypes and -Wmissing-prototypes are not
+ turned on via -Wall; -Wnoparenthesis is now spelled
+ -Wno-parenthesis.
+ (option header): Mention that -W options take the no- prefix as well
+ as -f options.
+
+Thu Nov 21 08:12:51 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * out-m88k.c (check_float_value): Change use of REAL_VALUE_TRUNCATE.
+ * tm-m88k.h (FLOAT_TO_INT_INTERNAL): Ditto.
+ (AS_BUG_POUND_TYPE): Simplify.
+ * tm-m88kdgux.h: Don't need AS_BUG_DOT_LABELS or AS_BUG_POUND_TYPE.
+
+Thu Nov 21 06:47:11 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (scc): Add missing '&' in some alternatives of constraints.
+
+ * a29k.md (negdf2): Fix typo in constraints for SCRATCH in 29050 case.
+
+ * real.h (REAL_VALUE_TRUNCATE): Default is to truncate to float if
+ mode size is BITS_PER_WORD instead of when mode if SFmode.
+
+Thu Nov 21 01:58:27 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type): Test TYPE_BINFO before TYPE_BINFO_BASETYPES.
+
+Thu Nov 21 01:45:53 1991 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-parse.y (unary_expr): Break out `new' expressions with
+ parenthesized types into more basic forms, and handle trailing array
+ dimensions with an appropriate warning message.
+
+ * cp-class.c (pushclass): For UPType, overload the template name.
+ (popclass): For UPType, undo the overload.
+
+ * cp-decl.c (pop_decl_level): Don't look up DECL_NAME slot of a
+ null pointer.
+ (pushdecl_top_level): Reworked handling of shadow lists to be
+ correct.
+ (lookup_tag): Bypass redefinition error message for UPT as well as
+ for TEMPLATE_DECL.
+ (start_decl): Add template decls only to top level. Print message
+ for non-function, non-class templates.
+ (finish_decl): Disable code that renames anonymous types; leave it
+ disabled until we figure out why it was being done in the first
+ place.
+ (grokdeclarator): Eliminate hack to deal with destructor templates.
+ Extend some code handling constructors to handle destructors as
+ well. Deleted some unnecessary code dealing with function
+ templates.
+
+ * cp-decl2.c (constructor_name): Treat class template decl like
+ type decl.
+
+ * cp-lex.c (store_pending_inline): If a function is not to be
+ compiled, discard its text only if can_free flag is set.
+
+ * cp-decl.c (start_function): For `pre-parsed' functions, only
+ set extern-inline flag if inline flag is set.
+ * cp-lex.c (do_pending_inlines): Don't set inline flag for method
+ templates, regardless of default-inline flag setting.
+ (process_next_inline): Ditto.
+
+ * cp-method.c (dump_type): Do something semi-useful with UPT
+ nodes, instead of crashing.
+ (fndecl_as_string): For constructor and destructor, use name of
+ function rather than looking up class constructor name; should be
+ the same, and it's cheaper this way.
+ (build_overload_name): Make template-related names unique, as well
+ as unlikely to be accepted by the assembler.
+
+ * cp-parse.y (yyprint): Handle PRE_PARSED_CLASS_DECL.
+ (template_def): In case handling destructors, pass new decl to
+ end_template_decl, rather than ungrokked call_expr node. Rewrote
+ last derivation.
+ (scoped_typename): Don't try building from template type; it doesn't
+ work.
+ (try_for_typename): Treat typename using template parms like any
+ other typename.
+
+ * cp-pt.c: New comment at start lists some known problems.
+ (end_template_decl): Do nothing for error_mark_node. Check
+ DECL_CLASS_CONTEXT and DECL_EXTERNAL when setting TREE_EXTERNAL
+ field of template decl. Don't need to pop extra class level for
+ non-operators any more, but do need to assign class context field.
+ (instantiate_member_templates): Now returns void.
+ (tsubst, case FUNCTION_DECL): Process flag fields of method as for
+ other functions. Handle class context field. Push decl at top
+ level only if decl context is null.
+ (tsubst, case TREE_LIST): Use via-public and via-virtual fields.
+ (do_pending_expansions): Correct handling of methods.
+
+ * cp-pt.c (overload_template_name): If not class-level, push
+ extra binding level. Disable check that overload hasn't already
+ been done; for now, it's needed.
+ (undo_template_name_overload): Pop it.
+
+Thu Nov 21 00:15:33 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type_methods): Don't dereference TYPE_NAME and
+ ctor_name until after checking for non-null methods.
+
+ * sched.c (create_reg_dead_note): New function. Add a REG_DEAD note
+ for REG to INSN, reusing a REG_DEAD note from the dead_notes line.
+ (attach_deaths): Add quick exit for many rtx that can't contain a
+ register. Rewrite REG_DEAD note code to use the new scheme (see
+ the Nov 1 ChangeLog entry).
+ (new_insn_dead_notes): Don't add a REG_DEAD note to an insn that
+ already has one.
+ (update_links): Must convert REG_UNUSED notes to REG_DEAD when a
+ register formerly just clobbered is now explicitly set and used in
+ the new split insns.
+
+Wed Nov 20 18:02:38 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * c-decl.c, cccp.c: Change all -Wno options to
+ -Wno- options so as to be consistent with toplev.c, and so as
+ to also be consistent with the -fno- options.
+ * objc-actions.c: Add a -Wno-selector option to match the
+ -Wselector option.
+
+ * gcc.c (default_compilers): Pass all -W options to cpp, so that
+ -Wno options will be passed along with the -W options that it
+ understands.
+ * cccp.c (main): Accept -Wno option counterparts for every
+ existing option.
+
+Wed Nov 20 00:03:41 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-tree.c (lang_output_debug_info): Deleted.
+ * cp-class.c (finish_struct): Set DECL_IGNORED_P on the TYPE_DECL
+ nodes for types that should not have their debugging info written
+ out.
+ * dbxout.c (dbxout_{symbol,type}): Check DECL_IGNORED_P for
+ TYPE_DECLs of RECORD_TYPE nodes.
+
+ * cp-decl.c (grok_op_properties): Fix bug in grokking NEW_EXPR
+ and DELETE_EXPR operators.
+ * cp-method.c (hack_operator): Deleted.
+ * cp-init.c (init_init_processing): Use `ansi_opname' for
+ {NEW,DELETE}_EXPR instead of calling hack_operator and build_opid.
+ * cp-decl2.c (grokopexpr): Deleted.
+ * cp-lex.c (build_opid): Deleted.
+ * cp-class.c (build_instantiated_decl): Deleted.
+ * All cp-* files: OP_IDENTIFIER is no longer used.
+
+ * cp-parse.y (operator_name): For most cases, Use `ansi_opname'
+ directly instead of calling `build_opid'.
+
+Tue Nov 19 16:02:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (xref_tag): If we find wrong kind of type, return it.
+ (lookup_tag): Fill in pending_invalid_xref_file, ..._line.
+
+ * real.h (REAL_VALUE_TRUNCATE): New argument MODE.
+ * cse.c (simplify_unary_operation, simplify_binary_operation):
+ Pass that arg.
+ * c-parse.y, objc-parse.y, cp-lex.c (yylex): Likewise.
+ * fold-const.c (combine): Truncate floating result to fit mode.
+ (fold): Don't add 1 to float constant if that doesn't change the value.
+
+Tue Nov 19 09:37:36 1991 Michael Meissner (meissner at osf.org)
+
+ * configure (ns32k-encore-osf): Restore Encore Multimax using the
+ OSF/rose object format, since the necessary files, such as
+ tm-encrose.h, are present in the distribution.
+
+Mon Nov 18 21:38:13 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * out-sparc.c (output_cbranch): Always emit a nop before a FP branch
+ to avoid illegal assembly output.
+ * sparc.md: Don't define delay slot for FP compare insns. This was
+ meant to solve the above problem, but fails with insn scheduling.
+
+ * sparc.md (movsi): Must accept 'f' in addition to 'r' because
+ combine can convert FP hard registers to SImode.
+
+Mon Nov 18 13:43:12 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (replace_regs): Correct code that prevents nested SUBREGs.
+
+Mon Nov 18 13:43:12 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_decl): Reinstall lost end_temporary_allocation.
+
+ * tree.h (DECL_LANG_FLAG_8): Deleted.
+ * print-tree.c (print_node): Don't use it. Do print DECL_IGNORED_P.
+
+Mon Nov 18 06:59:37 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (value_identifier): Gone, following c-decl.c. Now use
+ zero DECL_NAME for this purpose.
+ * cp-typeck.c: Also affected by this change.
+
+ * c-lang.c, objc-lang.c (lang_output_debug_info): New function.
+ * dbxout.c (dbxout_type_methods): Fix minor problems arising from
+ assuming all RECORD_TYPE are C++ RECORD_TYPE nodes.
+ (dbxout_type): Ditto.
+
+Sun Nov 17 17:33:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tree.c (struct obstack_stack): New slots expression and rtl.
+ (push_obstacks, push_obstacks_nochange, pop_obstacks):
+ Save and restore all 4 obstack vars individually.
+
+ * c-decl.c (start_decl): Call push_obstacks_nochange here.
+ (push_parm_decl, grokfield): Also here.
+ (finish_decl): Not here.
+ Also clean up test for whether to replace DECL_INITIAL with error mark.
+
+Sun Nov 17 14:25:15 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-typeck.c (c_expand_return): Be more careful about throwing
+ away only cleanup generated by 'build_functional_cast'.
+
+ * cp-init.c (build_new): Use TRUE_TYPE instead of TYPE more
+ consistently, in case TYPE is really an ARRAY_TYPE on its own.
+
+ * cp-dbxout.c: Gone. Now G++ uses dbxout.c.
+ * cp-tree.h (OPERATOR_NAME_P): Changed to IDENTIFIER_OPNAME_P.
+ (OPERATOR_TYPENAME_P): Changed to IDENTIFIER_TYPENAME_P.
+ (OPERATOR_{NEW,DELETE}_FORMAT): Deleted.
+ * cp-lex.c (ansi_{opname,assopname}): New variables. All cp-* files
+ changed to use these where comparisons against *_FORMAT were made.
+ (init_lex): Initialize `ansi_{opname,assopname}' arrays.
+ Also, update {opname,assignop}_tab grok new ANSI equivalences.
+ (build_operator_fnname): Changed to build ANSI-style overloaded
+ names.
+ * cp-dem.c (optable): Add new ANSI equivalences.
+ (cplus_demangle): Fixed to recognize new ANSI demangling. Note that
+ old-style destructors, and possibly other codes were broken by the
+ (undocumented) 27 Oct changes.
+
+ * cp-decl2.c (grokclassfn): Set DECL_CLASS_CONTEXT here.
+ * cp-class.c (finish_struct): Don't skip over FUNCTION_DECL that
+ already has a DECL_CLASS_CONTEXT.
+
+ * cp-except.c (cplus_expand_end_try): Set BLOCK_HANDLER_BLOCK for
+ blocks that handle exceptions.
+ (EXCEPTION_NAME_PREFIX): Shorted to "__ex" (from "__exception").
+ (EXCEPTION_NAME_LENGTH): Reduced to 4 from 12.
+
+ * dbxout.c (flag_minimal_debug): Define new variable that is
+ non-zero when symtab output routines can output abbreviated.
+ (dbxout_type_fields): Move code that writes out debugging info about
+ fields of RECORD_TYPE and UNION_TYPE nodes from `dbxout_type' into
+ this function.
+ (dbxout_type_{method,method_1}): Move code from `dbxout_type' into
+ these new functions.
+ (dbxout_type): Now writes out info about basetypes. Also, no longer
+ need to record info about types having ctors, dtors, or both. GDB
+ now figures out what it needs to, when it needs to.
+ (dbxout_symbol): Implement special abbreviated form for C++ classes,
+ which place their names in both the struct and decl namespaces.
+ (dbxout_block): Write out special debugging stabs for exception
+ handler blocks.
+
+ * tree.h (BLOCK_HANDLER_BLOCK): Define new flag to indicate that a
+ BLOCK is an exception handler block (a `catch' block for C++).
+ (TREE_VFIELD, DECL_IGNORED_P): New macros.
+
+Sat Nov 16 22:21:56 1991 Jeffrey A Law (law at super.super.org)
+
+ * tm-m68k.h (CONST_COSTS): Integer values between -128 and 127
+ inclusive are very cheap because of moveq.
+
+Sat Nov 16 00:40:04 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-cross-tools): Avoid clobbering symlinks already
+ made. Double the $ before the @ in the indirection script.
+
+ * t-decstatn: New file.
+ * configure: (mips-dec-ultrix*): Use t-decstatn.
+
+ * collect-ld: Always run collect if collect is installed.
+
+ * collect-osf.c, enquire.c, gnulib2.c: Use gstddef.h, not stddef.h.
+
+ * gnulib2.c (__eprintf): Undef NULL.
+
+ * c-typeck.c (build_array_ref): Ref is volatile if array is volatile.
+
+Fri Nov 15 19:53:41 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op_nodefault): Delete ERROR_CODE
+ argument because it is always the same as CODE. Add new argument
+ CONVERT_P, and call default_conversion on the operand trees if
+ true. Rename to build_binary_op.
+ (old build_binary_op): Deleted because it is now unnecessary.
+ * c-common.c, c-convert.c, c-decl.c, c-tree.h, c-typeck.c: All
+ callers and other references to build_binary_op* fixed.
+ * c-typeck.c (new build_binary_op): Add warning message for
+ comparisons of signed and unsigned variables that won't give the
+ expected result due to unexpected sign extension.
+
+ * expr.c (convert_move): Add TFmode support and clean up code.
+ * optabs.c (init_fixtab): Add TFmode support.
+ (init_floattab): Likewise.
+ (expand_float): Likewise.
+ (expand_fix): Likewise.
+ (init_optabs): Likewise.
+
+ From Per Bothner:
+ * collect2.c: Define vfork as fork for USG. Rewrite to not use
+ prototypes, so it doesn't need gcc for compilation.
+ (main): No longer uses static sized array for ld arguments, so
+ that long command lines will work. Vfork ld instead of running
+ via popen with nm.
+ (write_hooks): Use type names not variable names in sizeof calls.
+
+Fri Nov 15 15:01:41 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (size_int): Properly preserve old obstack settings.
+ * c-decl.c (finish_decl, grokdeclarator, xref_tag): Likewise.
+ * stor-layout.c (layout_type): Likewise.
+ * varasm.c (output_constant_def): Likewise.
+ * tree.c (push_obstacks_nochange): New function.
+
+ * stor-layout.c (layout_type): Make size of temp type saveable.
+ * tree.c (saveable_allocation): New function.
+
+ * configure: Comment out certain alternatives not yet updated.
+ (sparc-unicom-*, m68k-tti1-*, m68-tti2-*): New alternatives.
+ (m88k-*-v88r32*): New alternative.
+ (i386-alternate-sysv): New alternative, not sure why.
+ (sparc-*-sysv*): Commented out--not really supported.
+
+Fri Nov 15 22:22:32 PDT 1991 Mike Stump (mrs at csun.edu)
+
+ * configure: Recognize only canonical names. Added missing entries
+ for some configurations that obviously have not been tested in a
+ while.
+
+ * config.subr: Massive overhaul. It claimed to canonicalize
+ the machine specification, but it never really did. Now it
+ does. In general, it is not necessary to specify the os for
+ popular machines that have a popular os, or given the os, it
+ can sometimes figure out the vendor. Added in all the old
+ ways of specifying machines from configure. Also added
+ support for all (before it was missing a few) of the tm-*.h
+ files. It now supports the concept of guessing the vendor for
+ a given CPU type. It now supports the concept of guessing the
+ os version given the vendor and/or the CPU type. Changed the
+ default os for vax to ultrix, changed the default os for i386
+ to sco.
+
+ * collect-ld: New file. It is useful when compiling C++ programs
+ on machines that use collect. This includes the decstation.
+
+Fri Nov 15 14:19:29 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * out-sparc.c: Singlemove_string no longer static.
+ (emit_move_sequence): Emit sethi/low_sum insn pair for values which
+ are not arith_double_operands, was missing not.
+ * sparc.md: DImode sethi pattern now uses singlemove_string to load
+ a constant into a reg.
+ * tm-sparc.h (LEGITIMATE_CONSTANT_P): Accept anything except a
+ floating point constant.
+ Declare singlemove_string so it can be used in sparc.md.
+
+ * jump.c (jump_optimize): Correct typos in comments.
+
+Fri Nov 15 08:05:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * out-rs6000.c (scc_comparison_operator): Allow non-FP EQ.
+
+ * combine.c (subst, case NEG): Correct shift count in code that
+ negates ZERO_EXTRACT to SIGN_EXTRACT.
+
+Thu Nov 14 23:03:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * genrecog.c (try_merge_1): Add big new comment.
+
+Thu Nov 14 19:28:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * m68k.md: Fix peephole that merges a stack adjust with a push to
+ use addqw instead of addql since we know we are incrementing an
+ address register (sp).
+
+ * loop.c (scan_loop): Rework code that looks for loops starting at the
+ exit test; don't skip non-jump insns at start of loop and modernize
+ and clean up code.
+
+ * gcc.texinfo (SECONDARY_RELOAD_CLASS): Update description to
+ show uses for both intermediate and scratch registers.
+ * reload.h (SECONDARY_{INPUT,OUTPUT}_RELOAD_CLASS): Default from
+ SECONDARY_RELOAD_CLASS, if defined.
+ (HAVE_SECONDARY_RELOADS): Defined if any of the secondary reload
+ macros are defined.
+ (reload_secondary_icode, reload_{in,out}_optab): New vars.
+ * reload.c: Include insn-codes.h.
+ (find_secondary_reload): New function.
+ (push_reload): Call find_secondary_reload to process input and
+ output reloads. Create both secondary and tertiary reloads,
+ as required.
+ * reload1.c: Include insn-codes.h.
+ (init_reload): Initialize reload_{in,out}_optab.
+ (emit_reload_insns): Handle cases where a secondary reload
+ is a scratch register and where tertiary reloads are required.
+ * Makefile.in (reload.o, reload1.o): Now include insn-codes.h.
+
+ * tm-romp.h (SECONDARY_OUTPUT_RELOAD_CLASS): Define to use a BASE_REGS
+ for symbolic memory locations.
+ * romp.md (reload_outsi, reload_outhi, reload_outqi): New patterns.
+
+ * expr.c (expand_expr): Pass BRANCH_COST to do_store_flag.
+ (do_store_flag): Canonicalizations done in emit_store_flag
+ need to be done here as well.
+ Test for ffs as well as abs when seeing if scc is expensive.
+ * expmed.c (emit_store_flag): Correct cases that are open-coded:
+ Add a few missing cases and correct handling of normalizep.
+ * combine.c (simplify_shift_const, case IOR): Convert sequence
+ open-coded by emit_store_flag into LE or (neg (le ..)), as
+ appropriate.
+ (simplify_shift_const, case MINUS): Similarly, for GT.
+ (simplify_comparison): sign_bit_comparison_p now true only if
+ also comparing against constant zero.
+ (simplify_comparison, case NOT): If sign bit comparison, just
+ reverse comparison.
+ (simplify_comparison, case MINUS): Move case where we subtract
+ one from the absolute value of something to PLUS, since we
+ subtract one using a PLUS operation.
+ (simplify_comparison, case MINUS): Handle GT case done by
+ emit_store_flag.
+ (simplify_comparison, cae IOR): Similarly, for IOR.
+
+ * tm-rs6000.h (BRANCH_COST): Define as 2.
+ * rs6000.md (scc): Allow some more cases.
+ (new scc patterns): Add numerous patterns to reflect superoptimizer
+ results for scc insns on RS/6000.
+
+Thu Nov 14 16:42:19 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (all): Change small allocation requests to use
+ separate allocation and free functions, instead of using the word8
+ union to hold each request. In order to support this easily, a free
+ field was added to each small structure that is released.
+ (main): If debugging, print a summary of the number of small
+ allocations, frees, and the number of pages used.
+ (add_procedure, copy_objects): Stuff the pointer to the end symbol
+ into the shash chain, and use it's value to generate the new value
+ for the computed end block. This is much safer than trying to
+ calculate this on the fly.
+ (main): Don't try to avoid using malloc by setvbuf'ing the streams
+ we use.
+
+Wed Nov 13 23:47:10 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ From tege@sics.se:
+ * sparc.md: In DF load peephole, use operands not xoperands, so
+ that output_asm_insn will use the right values.
+
+ * tm-sun3.h, tm-sun2os4.h: Define PTRDIFF_TYPE, SIZE_TYPE,
+ WCHAR_TYPE same as tm-sparc.h.
+
+ * c-decl.c (finish_function): Don't clear current_function_decl
+ for nested functions.
+
+ * dbxout.c: Include insn-config.h and reload.h.
+ (dbxout_symbol): Pass DECL_RTL (decl) through eliminate_regs before
+ using.
+ (dbxout_parms): Pass DECL_RTL and DECL_INCOMING_RTL of parms through
+ eliminate_regs before using.
+ * sdbout.c: Include insn-config.h and reload.h.
+ (sdbout_symbol): Pass DECL_RTL (decl) through eliminate_regs before
+ using.
+ (sdbout_parms): Pass DECL_RTL and DECL_INCOMING_RTL of parms through
+ eliminate_regs before using.
+ * Makefile.in: Update dependency lists for dbxout.c and sdbout.c.
+
+ * combine.c (try_combine): Don't pass sets with (USE (MEM ...))
+ dests to reg_referenced_p.
+
+Wed Nov 13 21:38:03 1991 John Bunda (bunda at cs.utexas.edu)
+
+ * reload1.c (gen_input_reload): If IN is a PLUS whose second arg
+ is the same as the reload register, swap the args of the PLUS.
+
+Wed Nov 13 14:43:09 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * tm-sparc.h (OPTIMIZATION_OPTIONS): Don't redefine options set in
+ toplev.c, only effect flag_omit_frame_pointer.
+
+ * sparc.md: Delete obsolete sign_extract and zero_extract patterns.
+ We get better code without them.
+ (indirect_jump, tablejump): Extend indirect_jump pattern to accept
+ any address, not just a register. Add tablejump like pattern which
+ also accepts any address.
+
+ * unroll.c (final_biv_value): Make sure the initial value of the biv
+ is invariant if it is used after the loop.
+
+Tue Nov 12 23:16:51 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Correct so
+ ASM_OUTPUT_REG_PUSH actually does a push instead of pop, and vica
+ versa. Also make ASM_OUTPUT_REG_POP turn on .set noreorder, and
+ increment the appropriate -mstats load delay counters.
+
+Tue Nov 12 22:53:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.h (BRANCH_COST): Supply default value here.
+ * jump.c (BRANCH_COST): Don't default BRANCH_COST here.
+
+ * global-alloc.c (global_alloc): Use proper entry in eliminables
+ when searching for the frame pointer.
+
+Tue Nov 12 22:23:36 1991 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * expr.c: (expand_expr, MIN_EXPR case): Check for const_true_rtx
+ not const1_rtx as return value from compare_from_rtx.
+ (do_jumps_by_part_greater): Handle const0_rtx and const_true_rtx
+ return values from compare_from_rtx.
+ (do_jumps_by_part_equality, do_jumps_by_part_equality_rtx): Likewise.
+
+ * sched.c (sched_analyze_2): Correctly handle ASM_OPERAND and
+ ASM_INPUT rtx. Volatile and traditional asm statements are
+ assumed to use and clobber all hard registers and all memory.
+ (schedule_block): Delete code that incorrectly handles ASM_OPERAND
+ and ASM_INPUT rtx by exiting early.
+
+Tue Nov 12 15:38:56 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sched.c: Introduce names for various priority values. Reduce
+ LAUNCH_PRIORITY to avioid wrap-around in launch_link.
+
+Tue Nov 12 14:21:52 1991 Per Bothner (bothner at cygnus.com)
+
+ * cp-lex.c (init_lex): Exception-handling fixes.
+ * cp-tree.h: Add new OPERATOR_CHARS_P that is like
+ OPERATOR_NAME_P, except if takes a (char*), not a tree.
+ * cp-dbxout.c (dbxout_type_methods): Handle operators
+ specially when chopping prefix for minimal_debug.
+
+ * config/tm-news.h: In PRINT_OPERAND, recognize new 68040
+ operand types. Add definition of CPP_DEFINES for cross-compiling.
+
+Tue Nov 12 13:11:01 1991 Michael Meissner (meissner at osf.org)
+
+ * protoize.c (__OSF1__ ifdef): Remove OSF/1 specific ifdefs, since
+ the problem they address has been fixed, and the ifdefs now cause
+ spurious warnings.
+
+ * tm-mips.h (INT_TYPE_SIZE): Define.
+ (SHORT_TYPE_SIZE): Define.
+ (LONG_TYPE_SIZE): Define.
+ (LONG_LONG_TYPE_SIZE): Define.
+ (CHAR_TYPE_SIZE): Define.
+ (FLOAT_TYPE_SIZE): Define.
+ (DOUBLE_TYPE_SIZE): Define.
+ (LONG_DOUBLE_TYPE_SIZE): Define.
+
+ * out-mips.c (block_move_load_store): New commn function to create
+ one load and store for the block move functions. The load is
+ emitted directly, and the store is returned, to be emitted later.
+ (block_move_sequence): Call block_move_load_store. For straight
+ line moves, have two outstanding loads before a store, for newer
+ machines that want two delay slots.
+ (block_move_loop): Call block_move_load_store. Move 4 words per
+ loop, for a loop that moves 16 bytes in 11 cycles if aligned, and 16
+ bytes in 19 cycles if not aligned.
+ (block_move_memcpy): Change argument names for consistancy.
+ (expand_block_move): Always move address into a register, even for
+ one byte moves. Fix bugs in calling memcpy. If moving a large
+ constant amount of unaligned data, emit a runtime check to see if
+ the data is really aligned, and if so do an aligned move, otherwise
+ an unaligned move loop.
+
+ * mips-tfile.c (toplevel): Make some changes, so that mips-tfile can
+ be debugged on OSF/1.
+ (efdr structure): Align identifiers in declaration.
+ (cur_proc_value): Delete variable.
+ (cur_oproc_begin): New global to record original proc .ent symbol.
+ (cur_oproc_end): New global to record original proc .end symbol.
+ (add_procedure): Set cur_oproc_begin, cur_oproc_end variables
+ instead of cur_proc_value.
+ (parse_begin, parse_end): Add check for cur_oproc_begin being set.
+ (parse_end): Use cur_oproc_end's value node for new value node.
+ (main): Add cast to free_multiple_pages call.
+
+Tue Nov 12 08:57:39 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * jump.c (jump_optimize): Merge the "if (...) x = 0;" case with
+ the "x = a; if (...) x = b;" case.
+
+Mon Nov 11 19:27:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cp-cvt.c (convert_pointer_to): Correctly get type of a TREE_VEC
+ object. (This patch is from someone at Cygnus.)
+
+ * combine.c (try_combine): Add missing parens.
+
+Mon Nov 11 19:26:24 1991 Ron Guilmette (rfg at ncd.com)
+
+ * c-typeck.c (build_binary_op_nodefault, convert_for_assignment):
+ A (void *) object is compatible with a function pointer if it is
+ the constant zero.
+ (build_conditional_expr): Properly check for pointers to functions.
+
+Sun Nov 10 19:59:12 1991 Michael Meissner (meissner at osf.org)
+
+ * cccp.c (make_undef): Fix by off by one error.
+ (MIN, MAX): Add #undef, in case some system include file defined
+ these macros.
+
+Sun Nov 10 10:34:17 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl2.c (grokfield): Set TREE_EXTERNAL on static const
+ decls that are either uninitialized in their initial declaration,
+ or initialized by something we cannot evaluate at initial
+ declaration time.
+
+ * cp-init.c (build_new): Make `operator new' with placement cast
+ its return type to the type of the object being allocated.
+
+ * cp-typeck.c (commonparms): If the last element of P1 is
+ VOID_LIST_NODE, use that.
+
+ * stor-layout.c (layout_record): Return PENDING_STATICS.
+ (layout_type): Don't commit static members to a particular mode
+ until REC has been laid out completely.
+
+Sat Nov 9 23:16:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cccp.c (fancy_abort): Don't declare as static.
+
+Sat Nov 9 20:38:30 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (push_overloaded_decl): Don't cons new decl to
+ existing ERROR_MARK_NODE. If the old decl was erroneous, just
+ ignore it.
+
+ * cp-call.c (ideal_candidate): Fix typo in error message.
+
+Sat Nov 9 14:13:46 1991 Jeffrey A Law (law at super.super.org)
+
+ * tm-hp9k2bsd.h (MULSI3_LIBCALL): New define which avoids
+ the use of __mulsi3 for signed integer multiplication.
+ (UMULSI3_LIBCALL, DIVSI3_LIBCALL, UDIVSI3_LIBCALL): Likewise.
+ (MODSI3_LIBCALL, UMODSI3_LIBCALL): Likewise.
+
+Fri Nov 8 12:05:39 1991 Per Bothner (bothner at cygnus.com)
+
+ First cut at ANSI-style exception handling (using
+ syntax and semantics of Stroustrup 2nd ed).
+ THIS IS WORK IN PROGRESS!
+ * cp-tree.h: Declare flag_ansi_exceptions.
+ * gplus.gperf: Add 'throw' (for ANSI exception handling),
+ and update private/protected/public from (old) cp-lex.c.
+ * cp-hash.h: New file, generated from gplus.gperf.
+ * cp-lex.c: #include cp-hash.h, instead of requiring
+ manual cut-and-paste when keywords are changed.
+ * cp-lex.c: Commented out some extern declarations that
+ were conflicting with inlines in cp-input.c.
+ Hooks for ANSI-style exception handling.
+ * cp-parse.y: Parse ANSI-style exception stuff.
+ * cp-decl2.c: Define new flag flag_ansi_exceptions.
+ * cp-decl2.c (finish_table): Off-by-one error in
+ calculating index type.
+ * clus-decl2.c (finish_vtable_vardecl): Add missing
+ TREE_OPERAND to get dossier decl.
+ * cp-except (cplus_expand_start_except): Allow NULL name,
+ since there is no distinguished name for ANSI exceptions.
+ * cp-except (cplus_expand_raise): Too few
+ parameters to expand_expr; add them.
+ * cp-except.c: New functions for ANSI exceptions:
+ cplus_exception_name, ansi_exception_object_lookup,
+ cplus_expand_throw, ansi_expand_start_catch.
+ These are heavily hacked from similar old functions.
+
+ Try to make -fdossier work better (but more work is needed).
+ (Especially, generate fewer unneeded descriptors.)
+ * cp-class.c (add_virtual_function, finish_struct): Do not
+ create a vtable just because of -fdossier.
+ * cp-gc.c: Each type points to an array of fields,
+ instead of an array of pointers to fields. Ditto for methods.
+ This saves one pointer per field or method by removing
+ unneded extra indirection. Also other tweaks to save space.
+ * cp-decl.c (init_decl_processing): Add length of
+ field and method arrays to descriptors, instead of
+ relying on NULL-termination (since we no longer have
+ the extra pointer array).
+ Make the parameter count and required count of
+ method descriptors be shorts.
+ * cp-method.c: Remove no-longer-needed functions
+ build_i_desc_overload and build_m_desc_overload.
+
+ Other C++ fixes:
+ * cp-dbxout.c (dbxout_symbol): Class types were
+ emitting only a "t" spec which made gdb unhappy.
+ Kludged it so that it once more emits "Tt".
+ * cp-tree.c (lang_output_debug_info): Do emit debugging
+ info if this implementation file corresponds the the
+ type's interface, even if nothing is written.
+
+Fri Nov 8 08:18:55 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tm-m88k*.h: Fix comments, minor cleanups.
+
+Thu Nov 7 16:21:05 1991 Torbjorn Granlund (tege at mole.gnu.ai.mit.edu)
+
+ * longlong.h (__ibm032__): Fix operand order for add_ssaaaa and
+ sub_ddmmss.
+
+Thu Nov 7 12:47:14 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (MIPS_VERSION): Bump meissner version number to 3.3.
+ (PCC_BITFIELD_TYPE_MATTERS): Define this to be 1.
+
+ * out-mips.c (block_move_loop): New function to generate a loop to
+ do a block move.
+ (block_move_call): Pass the source, destination, size as separate
+ arguments, rather than a pointer to an array of operands.
+ (expand_block_move): Change block_move_call calling sequence.
+ (expand_block_move): If moving big aligned items, generate a loop to
+ do it, rather than calling memcpy/bcopy.
+ (override_options): If -msoft-float, 'f' constraint picks GP
+ registers.
+
+ * t-decrose (collect): Use ALL_CFLAGS instead of CFLAGS, since this
+ gets the shared library flags in x-decrose.
+
+Thu Nov 7 07:57:36 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tm-m88k.h (MEMORY_MOVE_COST): Define.
+ (TARGET_88*): Fix.
+
+Wed Nov 6 19:07:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.md (negsf2, negdf2): Add missing CLOBBER in 29050 case.
+
+ * jump.c (jump_optimize): When looking for a conditional jump
+ skipping an unconditional jump, be sure the conditional jump is
+ not an unconditional jump.
+
+ * combine.c (try_combine): If we make an unconditional jump,
+ be sure it is followed by a BARRIER.
+ (subst, case SET): Convert (set (pc) (return)) to (return).
+
+Wed Nov 6 13:41:55 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tm-m88kv3.h, xm-m88kv3.h: Renamed from *m88ksysv3*.
+
+Wed Nov 6 09:27:16 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (MIPS_VERSION): Bump meissner version number to 3.2.
+ (TARGET_SWITCHES): Add -msoft-float and -mhard-float.
+ (GP_RETURN): Use GP_REG_FIRST as base of GP registers.
+ (FP_RETURN): Use FP_REG_FIRST as base of FP registers. If
+ -msoft-float, make $2 be the return register.
+ (GP_ARG_FIRST, GP_ARG_LAST): Use GP_REG_FIRST as 1st GP reg.
+ (FP_ARG_FIRST, FP_ARG_LAST): Use FP_REG_FIRST as 1st FP reg.
+
+ * mips.md (ffssi2, ffssi2_internal): Fix ffs builtin so that it
+ doesn't clobber the input argument by turning it into a
+ define_expand, and using a parallel operation including the
+ necessary clobber's.
+ (abssi2, ffssi2, ffssi2_internal): Use the 'd' constraint which only
+ matches the integer registers, rather than 'r' which can match
+ floating point registers as well.
+
+ * tm-mips-news.h (CPP_SPEC): Add -Dnews7300, -Dsony_news, -Dmips,
+ and -Dhost_mips.
+
+Wed Nov 6 08:46:54 1991 Mark Eichin (eichin at cygnus.com)
+
+ * cp-class.c (add_method): when adding a new constructor or
+ destructor, actually chain onto method_vec[0] rather than replacing
+ the list with the current entry.
+
+Wed Nov 6 07:04:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (store_field): Handle case where we are storing into a BLKmode
+ field of an object that is in a register.
+ (expand_expr, case COMPONENT_REF): Handle case where we are extracting
+ a BLKmode field from an object in a register.
+
+Tue Nov 5 22:16:39 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (target_flags): Delete second declaration.
+ (MASK_G0, MASK_G1, MASK_G2): Delete, since -G xx now works to set
+ the size of the small data/bss area cutoff.
+ (MASK_G012_USED, MASK_G012_NUSED): ditto.
+ (TARGET_GVALUE): ditto.
+ (TARGET_G012_USED): ditto.
+ (TARGET_SWITCHES): Delete -mGx, -mno-Gx switches.
+ (TARGET_DEFAULT): Set to 0 instead of MASK_G012_NUSED.
+
+ * tm-decrose.h (TARGET_DEFAULT): Eliminate MASK_G012_NUSED.
+
+ * out-mips.c (override_options): Remove support for -mGx and -mno-Gx
+ switches to set the cutoff size for small data/bss.
+
+ * mips.md (abssi2): Add new pattern.
+ (ffssi2): Add new pattern.
+
+Tue Nov 5 18:36:29 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * gcc.texinfo (MEMORY_MOVE_COST): Document new macro.
+ * regclass.c (MEMORY_MOVE_COST): Default it to 2.
+ (regclass, reg_class_record): Use MEMORY_MOVE_COST, not constant 2.
+ (regclass): Look at result of single_set instead of checking again if
+ pattern is a SET.
+ * tm-rs6000.h (MEMORY_MOVE_COST): Add definition.
+
+Tue Nov 5 17:01:05 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-pt.c (tsubst): For char_type_node, just build variant and
+ return it.
+ (tsubst, case FUNCTION_DECL): Walk methods more efficiently.
+
+ * cp-pt.c (overload_template_name): Push a binding level, to
+ separate template name binding from method parameters. Check
+ identifier value slots for TYPE_DECLs, not RECORD_TYPEs. Don't need
+ to do extra push of TYPE_DECL for template name.
+ (undo_template_name_overload): Pop it. Don't need to explicitly
+ clear template name binding.
+
+ * cp-ptree.c (print_lang_decl): For FIELD_DECL, don't try to
+ print fields that go off the end of the lang_decl_flags structure.
+
+ * cp-pt.c (pop_template_decls): Don't explicitly clear out value
+ slots of identifier; let poplevel/poplevel_class do it.
+
+ * cp-pt.c: Use build_lang_decl insteaed of build_decl for
+ all TEMPLATE_DECL and TYPE_DECL nodes.
+
+ * cp-tree.h (make_anon_name): Declare it.
+
+ * cp-pt.c (unify): Deleted unreachable code.
+
+ * cp-decl.c (push_overloaded_decl): Fixed typo from merge.
+ (start_decl): Ditto.
+ (grokdeclarator, case CALL_EXPR): Remove debug_tree call
+ accidentally left in. Handle constructor templates specially, like
+ destructor templates. Removed some commented-out code.
+ (grokdeclarator, case SCOPE_REF): If the type is uninstantiated,
+ treat it like any other aggregate type code.
+
+ * cp-lex.c (identifier_typedecl_value): If no binding slot from
+ the identifier is the right type decl, use the type name if it is
+ non-null, even if the name doesn't match.
+ (build_lang_decl): If new decl node is TREE_PERMANENT, make sure the
+ lang-specific info gets allocated that way too; don't assume that
+ the current obstack is permanent.
+ (copy_decl_lang_specific): If decl is TREE_PERMANENT, assert that
+ the current obstack is permanent.
+
+ * cp-parse.y (template_def): Delete derivations that were
+ purportedly for constructors; they didn't work.
+ (notype_declarator): Deal with them here.
+ (template_instantiate_once): Copy decl node with permanent obstacks,
+ thereby clearing the chain pointer, before pushing it into top
+ level.
+ (structsp): Don't need to undo template name overload here.
+ (scoped_typename): Want TYPENAME with template type, not PTYPENAME.
+
+Tue Nov 5 13:46:06 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sdbout.c (sdbout_init, sdbout_symbol): Don't reverse the
+ permanent types.
+
+ * cccp.c (make_definition): Eliminate previous change associated
+ with pretty-printing strings passed to do_define.
+ (pass_thru_directive): Move pretty-printing here.
+
+Tue Nov 5 11:21:34 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips-news.h (ASM_SPEC, LINK_SPEC): Correctly pass -EB instead
+ of -EL, since the Sony News system is big endian not little endian.
+
+Tue Nov 5 09:54:08 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tm-m88kv4.h, t-m88kv4, x-m88kv4: Renamed from *m88ksysv4*.
+
+Tue Nov 5 06:36:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_relational_operation, unsigned comparisons): Don't
+ simplify unless mode of operand is a MODE_INT mode.
+
+ * Makefile.in (*CFLAGS): More clearly document the purposes of each
+ of the flags. Add X_CFLAGS and T_CFLAGS for x-* and t-* to override.
+ * x-decrose, x-hp9k320g, x-i386isc, x-m88ksysv4, x-mips, x-tower:
+ Override X_CFLAGS instead of CFLAGS or INTERNAL_CFLAGS.
+ * x-vax: Likewise.
+ * x-sco: Don't include XCFLAGS in definition of CFLAGS.
+
+ * gstddef.h: Renamed from stddef.h.
+ * Makefile.in (USER_H, install-common-headers): Install gstddef.h as
+ stddef.h.
+
+Mon Nov 4 17:54:04 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * integrate.c (save_constants): If we are referencing a constant in
+ the constant pool in a different mode than its normal mode, make
+ a SUBREG so that we can record both modes.
+ (copy_for_inline, restore_constants): Handle these SUBREG's.
+ (copy_for_inline): Must copy a MEM if it's address contains an
+ ADDRESS (i.e., the address of a constant pool entry).
+
+ * expr.c (expand_expr, case PLUS_EXPR): If adding constant, FP, and
+ something else, add FP to the constant and then add the other operand.
+
+ * global-alloc.c (find_reg): If all_regs_p, use ALL_REGS, not
+ GENERAL_REGS.
+ * local-alloc.c (block_alloc): Likewise.
+
+ * genoutput.c (gen_expand): Record all the same information as
+ for a DEFINE_INSN.
+
+ * cse.c (simplify_binary_operation, case PLUS): Simplify expressions
+ like (a +/- b) - (a +/- c).
+ (simplify_binary_operation, case MULT): For X * (-1), try to simplify
+ the NEG before we make it.
+
+Mon Nov 4 16:29:01 1991 Mark Eichin (eichin at cygnus.com)
+
+ * cp-pt.c (overload_template_name): use build_lang_decl so that
+ lang_specific gets initialized properly.
+
+ * cp-parse.y (LC): use make_lang_type to produce complete node,
+ not just make_node.
+
+ * cp-ptree.c (print_lang_type): return if TYPE_LANG_SPECIFIC is
+ null, since everything printed here is in lang_specific.
+
+Mon Nov 4 16:17:48 1991 James Van Artsdalen (james at raid.dell.com)
+
+ * x-i386v4: New file.
+ * configure (i386-sysv4): Use it.
+
+Mon Nov 4 12:36:09 1991 Michael Meissner (meissner at osf.org)
+
+ * gcc.texinfo (BRANCH_COST): Move so BRANCH_COST formats correctly.
+
+Mon Nov 4 08:03:44 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * x-m88kdgux, x-m88ksysv4: Don't set XCFLAGS.
+
+ * jump.c (jump_optimize): Change "if (...) x = 0;" to use a
+ store-flag insn if jumps are expensive (BRANCH_COST).
+
+ * tm-m88k.h (BRANCH_COST): Branches are cheap on the m88100.
+ (OVERRIDE_OPTIONS): Make m88100 the default.
+ (STORE_FLAG_VALUE): Use -1.
+ (.ctors and .dtors sections): Change section flags.
+ * m88k.md (sxx, negate sxx): Use ext and extu. Eliminate extendsxx.
+
+Mon Nov 4 07:19:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * romp.md (movdf, movdi): When splitting, ensure we put in a CLOBBER
+ for a scratch register, when needed.
+
+ * tm-a29k.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Define to be
+ compatible with those chosen by EPI.
+
+ * tm-rs6000.h (REG_ALLOC_ORDER): Put CR registers before integer regs.
+
+ * cse.c (simplify_relational_operation): Fix error in last change.
+
+Sun Nov 3 12:22:41 1991 Torbjorn Granlund (tege at sics.se)
+
+ * longlong.h (m68020 count_leading_zeros): Fix typo in previous
+ change.
+
+Sun Nov 3 09:25:39 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_relational_operation, cases GEU, LTU, GTU, LEU):
+ Simplify comparisons that have known values such as (unsigned) x < 0.
+
+ * final.c (final_scan_insn): If we've just made a branch unconditional,
+ convert (set (pc) (return)) to (return).
+ Use const_true_rtx instead of calling gen_rtx to make it again.
+
+ * x-romp (CC): Pass -Hnocpp to hc so it will use builtin preprocessor.
+ (INTERNAL_CFLAGS): Don't define BSTRING here.
+ * xm-romp.h (alloca): Add definition to allow use of hc's builtin.
+ (BSTRING): Define here.
+
+ * reload1.c (spill_hard_reg): Correct typo in previous change; had
+ test backwards.
+
+ * function.c (instantiate_virtual_regs_1, case PLUS): If can't
+ replace operand with register, try to replace all copies of operand
+ with the register in case of MATCH_DUP.
+
+ * recog.c (validate_replace_rtx_1): Use rtx_equal_p to see if
+ things are equal.
+
+ * genconfig.c (max_recog_operands, max_dup_operands): Remove `_flag'
+ in name since these aren't flags.
+ (max_clobbers_per_insn): Likewise.
+ (main): Default to at least 10 operands (for asm) and 1 dup operand.
+
+Sun Nov 3 07:26:57 1991 Ron Guilmette (rfg at ncd.com)
+
+ * Makefile.in (gnulib1.null): Use $(GCC_FLAGS) instead
+ of $(CCLIBFLAGS).
+ (gnulib1): Don't copy gnulib1.c into a temporary .c file before
+ compiling. That messes up the source file names in the debug info,
+ which makes it harder to debug gnulib1 problems.
+
+ * Makefile.in (install-*): Force removal of previously installed files
+ before installing new ones (in case they got set to read-only somehow).
+
+ * Makefile.in (uninstall): Remove protoize.1 and unprotoize.1 man
+ page files.
+
+Sat Nov 2 22:42:06 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * out-a29k.c (output_epilog): Remove write_symbols from parameter list
+ of call to final_scan_insn.
+ * out-m88k.c (preserve_registers): Likewise.
+ * out-mips.c (function_epilogue): Likewise.
+ * out-sparc.c (output_function_epilogue, output_tail_call): Likewise.
+
+Sat Nov 2 22:02:45 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-search.c (push_class_decls): Added missing argument to
+ overload_template_name.
+
+ * cp-ptree.c (print_lang_decl): Don't print lang-specific fields
+ for FIELD_DECL, since it has only the shorter flags structure.
+
+ * cp-class.c (finish_struct_method): Fixed comment typo.
+
+ * cp-decl.c: Add some code for debugging binding level
+ manipulations, conditionalized on DEBUG_CP_BINDING_LEVELS.
+ (debug_bindings_indentation): New var, used to maintain indentation
+ to indicate which changes are on the behalf of other routines.
+ (push_binding_level): Print debugging messages to track binding
+ level changes and call/nesting sequences.
+ (pushlevel, poplevel): Ditto.
+ (pushlevel_class): Ditto.
+ (pop_binding_level): Ditto. Also scribble over freed binding level,
+ and don't store it for re-use.
+ (poplevel_class): Ditto.
+ * cp-decl.h (debug_bindings_indentation): Declare it.
+ * cp-pt.c (push_template_decls, pop_template_decls): Added
+ debugging fprintf calls here too.
+
+Sat Nov 2 17:00:22 1991 Ron Guilmette (rfg at ncd.com)
+
+ * cp-except.c (finish_exception_decl): Change `enum debugger' to
+ `enum debug_info_type'.
+ * final.c (final_start_function, final, final_end_function,
+ output_source_line): Delete the `write_symbols' parameter.
+ Instead use the global `write_symbols' declared in flags.h.
+ * sched.c (unlink_notes, schedule_block, schedule_insns): Compare
+ `write_symbols' with NO_DEBUG rather than with zero.
+ * toplev.c (rest_of_decl_compilation, rest_of_compilation): Don't
+ pass `write_symbols' to assemble_variable, final_start_function,
+ final, final_end_function.
+ * varasm.c (assemble_variable): Delete the `write_symbols' parameter.
+ Instead use the global`write_symbols' declared in flags.h
+
+Sat Nov 2 09:48:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * caller-save.c: Don't include reload.h; not used.
+ * Makefile.in (caller-save.o): Likewise.
+
+ * final.c (final_start_function, final_end_function, final): Change
+ enum debugger to enum debug info to finish previous change.
+ (final_scan_insn, output_source_line): Likewise.
+ * varasm.c (assemble_variable): Likewise.
+
+ * rtlanal.c (modified_between_p, find_last_value): New functions; not
+ yet used.
+ * rtl.h (find_last_value): Declare.
+
+ * cse.c (simplify_binary_operation): Remove comparison cases from
+ here; now in simplify_relational_operation.
+
+Fri Nov 1 19:04:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtl.h (REG_DEAD): More precisely describe when a REG_DEAD note
+ should be present.
+ * rtlanal.c (dead_or_set_regno_p): New function.
+ (dead_or_set_p): A value is dead or set only if each register in it
+ is dead or set.
+ * combine.c (reg_bitfield_target): New function.
+ (distribute_notes, case REG_DEAD): Place REG_DEAD note only if both
+ dead_or_set_p and reg_bitfield_target are false.
+ * flow.c (cc0_live): New variable; replaces following_insn_dead.
+ (propagate_block): Initialize cc0_live instead of following_insn_dead.
+ Track CC0's life just like other regs instead of using special
+ mechanism involving following_insn_dead.
+ Clear last_mem_set even when not final pass.
+ Don't call mark_used_regs on dead insns.
+ (insn_dead_p): Use cc0_live to see if a set of CC0 is dead.
+ Correctly test if set of multi-word value is needed; set if dead only
+ if none of the words are needed.
+ (libcall_dead_p): Allow CALL to be in any part of PARALLEL.
+ Use insn_dead_p to see if SET of return register is dead; old code
+ incorrectly tested multi-word registers.
+ (mark_set_1): Track whether all or only some words of a value are
+ needed; write partial REG_UNUSED note if only some words won't be
+ needed.
+ (mark_used_regs): Likewise for REG_DEAD notes.
+ Set cc0_live for a reference to CC0.
+ Don't write REG_DEAD note if register is already dead or set in INSN.
+ No longer check for unused SET_DEST since it won't be called for dead
+ insns; if a single SET's result was unneeded but the insn can't be
+ deleted, the source of the SET is live.
+ Clear last_mem_set even if not final pass.
+
+ * reload1.c (gen_input_reload): Handle REG+MEM the same as REG+INT.
+
+ * gcc.c (xmalloc, xrealloc): Use unsigned instead of size_t for `size'.
+
+ * cccp.c (bcopy, bzero, bcmp): No longer static. Only declare at
+ front of file if we are going to define them later.
+
+Fri Nov 1 18:57:25 1991 Ron Guilmette (rfg at ncd.com)
+
+ * cccp.c (timebuf): Declaration moved out of `special_symbol' and
+ made global (and "static") to get values of __DATE__ and __TIME__
+ to remain constant throughout compilation.
+ (debug_output): New variable.
+ (main): Accept -g3 option and set debug_output when seen.
+ (main): Moved initializations of `outbuf' and `fp' to before call
+ to `initialize_builtins'.
+ Pass fp and &output to initialize_builtins so that it can write out
+ artificial #define lines for builtin symbols.
+ Call `output_line_directive' before doing each make_define or
+ make_undef so that when `debug_output' is in effect, we'll
+ get #line 0 directives before each artificial #define or #undef.
+ (special_symbol): Initialization of `timebuf' deleted from here.
+ (initialize_builtins): Initialize timebuf here.
+ (pass_thru_directive): New function.
+ (do_define, do_undef): Use `pass_thru_directive' for "precompilation"
+ of header files.
+ Call `pass_thru_directive' when -g3 option used.
+ (initialize_builtins): Generate artificial #define directives (in the
+ output) to represent the values of all builtin symbols whose defs
+ can't change during compilation.
+ (make_undef): Added output buffer param so that make_undef could let
+ do_undef do output to stdout.
+ Call do_undef with a real output buffer.
+ (make_definition): Likewise.
+ Many minor changes to get strings passed to do_define to always look
+ like correctly formed #define directives.
+
+ * c-decl.c (store_parm_decls): Remove non-params from the list before
+ checking to see if the type of any element of the list is complete.
+ (pushlevel): Fixed bug which caused scope of tagged types to be
+ incorrectly assigned to the outermost {} block of functions rather
+ than to the outermost binding contours of functions.
+ (pushtag): Revised to clarify code used to find applicable
+ binding level for a tagname.
+ Set TYPE_CONTEXT of new tagged type so that dwarfout.c can tell
+ file-scope tagged types from non-file-scope tagged types.
+ Create a NULL-named TYPE_DECL node for each new tagged type
+ (even incomplete ones).
+ (finish_struct, finish_enum): Don't create NULL-named
+ TYPE_DECL nodes for complete tagged types. (This is now done in
+ `pushtag' for *all* new tagged type declarations and definitions.)
+
+ * toplev.c (compile_file): Adjust conditions under which
+ `dwarfout_file_scope_decl' is called during final traversal of
+ the chain of file-scope decls so that it is called also for
+ file-scope TYPE_DECLs.
+ (rest_of_decl_compilation): Deleted call to `dwarfout_file_scope_decl'
+ for file-scope TYPE_DECLs; call `dwarfout_file_scope_decl' instead of
+ `dwarfout_file_scope_symbol'.
+
+ * dbxout.c, sdbout.c, flags.h, toplev.c: Change DEBUG_LEVEL_* to
+ DINFO_LEVEL_* to prevent possible confusion about meaning.
+
+ * flags.h, toplev.c: (enum debug_info_type): Renamed type from
+ `debugger' and cleaned up definition of type (including deletion
+ of useless EXTENDED_DBX_DEBUG code).
+ (use_gdb_dbx_extensions): Make declarations conditional on
+ DBX_DEBUGGING_INFO being defined.
+
+ * out-i860.c (output_fp_move_double, find_addr_reg): Add return stmts
+ to avoid warnings when compiling with -Wreturn-type.
+ (output_delayed_branch): Fix test for CONST_INT values which must be
+ loaded in two instructions (as two halves).
+ (function_epilogue): Remove ASM_OUTPUT_EPILOGUE_SUFFIX. (Superceeded
+ by ASM_DECLARE_FUNCTION_SIZE in varasm.c.)
+
+ * xm-i386.h (i386): Define in case the native host compiler doesn't.
+
+ * tm-svr4.h (SVR4): Define this rather than SVR4_target.
+ (ASM_FINAL_SPEC): Support the -pipe option.
+ (ASM_DECLARE_FUNCTION_NAME, ASM_DECLARE_OBJECT_NAME): Allow easy
+ redefinition of the syntax for second operand of .type.
+ (ASM_DECLARE_FUNCTION_SIZE): Fix line continuations.
+
+Fri Nov 1 14:14:14 1991 Michael Meissner (meissner at osf.org)
+
+ * out-mips.c (mips_asm_file_end): Generate correct code if the user
+ uses asm("name"). Patch from bothner@cygnus.com.
+
+ * mips-tfile.c (init_file initialization): Fix #ifdef
+ BYTES_BIG_ENDIAN to be #if BYTES_BIG_ENDIAN, to allow the DECstation
+ to work again.
+ (toplevel): Remove declarations of internal library functions,
+ _flsbuf, _filbuf.
+
+Thu Oct 31 14:59:11 1991 Torbjorn Granlund (tege at mole.gnu.ai.mit.edu)
+
+ * longlong.h (m68020 count_leading_zeros): Use %b for offset and
+ width syntax for bfffo instruction.
+
+Thu Oct 31 05:45:54 1991 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-decl.c (PUSH_BINDING_LEVEL, POP_BINDING_LEVEL): Replaced
+ uses of macros with their expansions, and deleted the macros.
+
+Wed Oct 30 12:45:33 1991 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c, dwarf.h, README.DWARF: Replacement files that bring
+ the Dwarf implementation up to that defined by draft 5 of the
+ UI/PLSIG Dwarf specification.
+
+Wed Oct 30 10:50:07 1991 Michael Meissner (meissner at osf.org)
+
+ * objc-parse.y (yylex): Cast short types to int before shifting, to
+ avoid bogus warnings from the MIPS C compiler.
+
+ * cccp.c (fancy_abort): Make this global again, so that
+ -Dabort=fancy_abort will not cause a link error, because obstack.c
+ contains a reference to abort.
+
+Wed Oct 30 07:38:08 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * SYSCALLS.c (abort): Undefine first.
+
+ * xm-m88k.h (HOST_WORDS_BIG_ENDIAN): Define it.
+ * out-m88k.c (output_and): Choose "clr" last.
+
+Tue Oct 29 22:49:47 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (num_refs): New global array.
+ (mips_count_memory_refs): New function decl.
+
+ * out-mips.h (num_refs): New global array to count number of 1, 2,
+ or 3 instruction data references with -mstats.
+ (mips_count_memory_refs): New function decl to determine whether a
+ data memory reference uses 1, 2, or 3 instructions.
+ (mips_move_1word, mips_move_2words): Call mips_count_memory_refs
+ as appropriate.
+ (function_epilogue): Print number of 1, 2, and 3 instruction
+ memory references if -mstats.
+
+ * mips.md (movsi_ulw, movsi_usw): Call mips_count_memory_refs if
+ needed.
+
+Tue Oct 29 05:14:27 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-parse.y (template_def): Don't pass bogus declspecs to
+ start_decl.
+
+ * cp-pt.c (tsubst, case FUNCTION_DECL): Build new argument list
+ from method template, instead of retaining the old one.
+
+Tue Oct 29 00:44:51 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-class.c (finish_struct): Skip type fields if they are
+ template names bound to their expansions.
+
+ * cp-decl.c (binding_levels_sane): Define only if PARANOID; use a
+ macro returning 1 otherwise. Check class_binding_level stack for
+ consistency also.
+ (pushdecl): Verify that bindings pushed at global scope are in
+ permanent obstack storage.
+ (start_decl): While processing_template_decl, don't also need to
+ verify that the decl uses the template parameters. For method
+ templates, construct proper method type for result. TREE_EXTERNAL
+ flag for methods should be cleared if DECL_EXTERNAL is clear.
+ (grokdeclarator, case CALL_EXPR): Intercept destructor templates,
+ which have a different internal form, and convert them to a form
+ that can be recognized.
+
+ * cp-decl2.c (grokclassfn): Include length of class name when
+ creating assembler name for destructor; otherwise ambiguities
+ result.
+
+ * cp-lex.c (identifier_typedecl_value): New fn; scans bindings of
+ identifier for a given type decl; falls back to name of type.
+ * cp-tree.h (IDENTIFIER_TYPEDECL_VALUE): Call it.
+
+ * cp-method.c (fndecl_as_string): Print constructor_name of type
+ for constructor and destructor, not type name.
+
+ * cp-parse.y (template_def): Don't output warning about missing
+ type and storage class, since this gets printed for destructor
+ templates.
+ (notype_declarator): Accept '~' PTYPENAME.
+ (scoped_typename): Want a PTYPENAME, not TYPENAME. Build a
+ SCOPE_REF node instead of calling resolve_scope_to_name.
+
+ * cp-pt.c (instantiate_member_templates): New fn. Instantiates
+ members associated with template for a given template class.
+ * cp-method.c (template_instantiate_once): Call it.
+
+ * cp-pt.c (end_template_decl): Catch destructor templates that
+ are being passed through without being converted to TEMPLATE_DECL
+ nodes; convert them now. Copy argument list for function template
+ into permanent storage.
+ (lookup_template_class): Supply IDENTIFIER_TEMPLATE data for new
+ anonymous type name.
+ (tsubst, case FUNCTION_DECL): Improve method lookup code.
+ (tsubst): Use hash table and build_cplus_* functions for building
+ new nodes when possible, so equality tests are easier. Extend
+ FUNCTION_TYPE case to handle METHOD_TYPE as well.
+ (instantiate_template): Don't do anything for error_mark_node.
+ (do_pending_expansions): Keep expansions not used in queue to check
+ again later.
+
+ * cp-tree.def: Fix up some comments relating to PT-related types.
+
+ * tree.c (init_tree_codes): Now void, in agreement with decl
+ elsewhere.
+
+Mon Oct 28 22:07:44 1991 Jeffrey A Law (law at b117.super.org)
+
+ * output.h (current_function_uses_pic_offset_table): Declare here
+ so that out-*.c can see it.
+
+ * tm-m68k.h (FINALIZE_PIC): New macro.
+ (PIC_OFFSET_TABLE_REGNUM): New macro. Defines which address
+ register is used to hold the offset table for PIC.
+ (CONDITIONAL_REGISTER_USAGE): Make PIC_OFFSET_TABLE_REGNUM be
+ fixed when generating position independent code.
+
+ * out-m68k.c (finalize_pic): New function.
+ (output_function_prologue): If generating position independent
+ code output assembler text to load the pic_offset_table register.
+
+Mon Oct 28 10:02:36 1991 Michael Meissner (meissner at osf.org)
+
+ * toplev.c (main): If -G is used, set g_switch_set to true, and set
+ g_switch_value to be the integer value of it's argument, for use in
+ the MIPS port to determine whether a static or global item goes into
+ the normal data area, or into the small data area.
+
+ * out-mips.c (g_switch_set, g_switch_value): Delete these global
+ variables, since toplev.c now defines them.
+
+ * tm-mips.h (EXTRA_INT_OPTIONS): Delete macro which is no longer
+ used in internal OSF patches to provide -G xx support.
+ (ASM_SPEC, CC1_SPEC, LINK_SPEC): Remove -G32, since the new -G
+ patches take care of it now.
+
+ * tm-decrose.h (ASM_SPEC, LINK_SPEC): Remove -G32.
+
+ * tm-decstatn.h (ASM_SPEC, LINK_SPEC): Remove -G32.
+
+ * tm-iris.h (ASM_SPEC, LINK_SPEC): Remove -G32.
+
+ * tm-mips-bsd.h (LINK_SPEC): Remove -G32.
+
+ * tm-mips-news.h (ASM_SPEC, LINK_SPEC): Remove -G32.
+
+ * tm-mips-sysv.h (LINK_SPEC): Remove -G32.
+
+Mon Oct 28 07:11:28 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Don't delete unused SETs if they have
+ side-effects.
+
+ * Makefile.in, t-i386sco: Had both LIMIT_H and LIMITS_H; latter
+ is correct.
+
+ * combine.c (subst): New argument `unique_copy'; if non-zero ensure
+ each copy of `from' replaced gets a unique copy of `to'.
+ Pass arg to recursive callers.
+ (try_combine): Pass new arg to subst.
+
+ * Makefile.in (LANGUAGES): Use `objective-c' instead of `class-c'
+ to avoid confusion.
+
+ * gcc.c (xmalloc, xrealloc): Really make non-static.
+
+Mon Oct 28 00:21:56 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (CC1_SPEC): Convert -gline into -g1.
+
+Sun Oct 27 17:15:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (spill_hard_reg): Rework code that relies on the fact that
+ reg_class_superclasses[i][0] == i, since it isn't true!
+
+Sun Oct 27 06:15:24 1991 Ron Guilmette (rfg at ncd.com)
+
+ * configure: Always remove any files before we write them in case
+ the old copy was read-only.
+
+ * Makefile.in (manext): Now just extension without the period.
+ (mandir): Default to include manext.
+ (install-man): Adjust to new definition of manext.
+ (uninstall): Remove protoize.1 and unprotoize.1 from mandir.
+
+ * genemit.c (gen_exp): Write integer using %u instead of %d to
+ avoid warnings from some compilers when most negative int is written.
+
+ * cccp.c: Make variables not used outside this file static.
+ (main, line_to_error, xmalloc, xrealloc, xcalloc): Add missing return
+ statements (in unreachable paths).
+ (xmalloc, xrealloc, xcalloc, savestring): Make SIZE arg unsigned.
+
+Sun Oct 27 06:14:45 1991 Jeffrey A Law (law at b115.super.org)
+
+ * tm-m68k.h (SELECT_RTX_SECTION): New macro. Used to force
+ symbolic objects in the constant pool into the read-write data
+ section when generating position independent code.
+
+ * recog.c (general_operand, immediate_operand, nonmemory_operand):
+ Use LEGITIMATE_PIC_OPERAND_P to reject constants which are not
+ valid when generating position independent code.
+
+ * reload.c (find_reloads): Do not win in 's', 'i', or 'g' cases
+ if the constant does not satisfy LEGITIMATE_PIC_OPERAND_P.
+
+ * tm-m68k.h (LEGITIMATE_PIC_OPERAND_P): New macro.
+
+ * out-m68k.c (symbolic_operand): New function. Copied from
+ tm-sparc.h.
+
+ * gcc.texinfo: Document LEGITIMATE_PIC_OPERAND_P.
+
+Sat Oct 26 07:51:40 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.md (movsi_usw): Remove invalid '&' constraint on a memory
+ address.
+
+Sat Oct 26 07:16:15 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * flow.c (find_basic_blocks): Build label_value_list as list of
+ CODE_LABELs, not LABEL_REFs.
+
+ * fold-const.c (optimize_bit_field_compare): Call fold on result
+ of build1 call that converts integer to proper mode.
+
+ * rtl.h (unsigned_condition, signed_condition): Add definition;
+ functions were previously added to jump.c.
+ * combine.c (simplify_comparison): Use unsigned_condition to simplify
+ last change.
+
+Sat Oct 26 06:48:59 1991 Jeffrey A Law (law at b115.super.org)
+
+ * tm-sun2.h, tm-sun3.h (ASM_SPEC): Pass "-k" to the assembler if
+ -fpic or -fPIC.
+
+Fri Oct 25 20:43:54 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (CC1_SPEC): Remove special rules for -g0, -g1, etc., now
+ that GCC supports these directly.
+
+ * configure (dec-mips-osf): DECstation running OSF/rose uses
+ t-decrose, not t-mips.
+
+ * x-decrose (COFF_CC, COFF_CFLAGS, WARNINGS): Delete.
+ (libdir, bindir, mandir): Put GCC 2 in the /usr/ccs/gcc tree.
+
+ * x-mips (comment): Delete a comment about cross compilers that is
+ no longer true.
+
+ * t-decrose (coff-obstack.o): Delete rule that is no longer used.
+
+Fri Oct 25 18:46:51 1991 Mark Eichin (eichin at cygnus.com)
+
+ * cp-dem.c (cp-demangle): added support for templates, static
+ data, and the new (correct) mangling for destructors.
+
+Fri Oct 25 16:18:18 1991 Mark Eichin (eichin at tweedledumber.cygnus.com)
+
+ * cp-decl2.c: (grokclassfn): destructor names *should* contain
+ the length; otherwise, we can't tell the difference between a
+ destructor for a class whose name begins with 't' and a destructor
+ for an instance of a template class.
+
+Fri Oct 25 02:15:12 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * SYSCALLS.c, protoize.c: Changes from rfg.
+ waiting for real changelog entries from rfg.
+
+ * gcc.c (xmalloc, xrealloc): No longer static.
+
+Thu Oct 24 19:21:04 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (optimize_bit_field_compare):
+ Use build1 rather than convert, to avoid warnings.
+
+ * final.c (output_source_line): Fix if-scope for DBX fmt.
+
+Thu Oct 24 13:29:34 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * gcc.c gen*.c: Don't make fancy_abort static.
+
+Thu Oct 24 12:07:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * combine.c (simplify_comparison): When narrowing a comparison
+ and removing ANDs, make it unsigned.
+
+Thu Oct 24 08:02:04 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-decl.c (binding_levels_sane): New function, tests that stack
+ of binding levels is consistent. Argument provides extra
+ identification for call site, in case compiler optimizes too well.
+ If PARANOID is not set, does nothing.
+ (push_binding_level, pop_binding_level): Now functions, for easier
+ debugging. Inlined under GNU C if not PARANOID.
+ (PUSH_BINDING_LEVEL, POP_BINDING_LEVEL): Invoke functions.
+ (push_to_top_level): Use type-shadowed slots to unwind
+ IDENTIFIER_TYPE_VALUE back to top level.
+ (start_decl): When processing a template decl, shouldn't need to
+ check uses_template_parms. For methods, modify arg list to include
+ `this'. Don't set context of template. Use perm_tree_cons when
+ building members list for class template.
+ (grokdeclarator): Check "friend" flag before calling
+ globalize_nested_type. Build a method type for a function that has
+ a context.
+
+ * cp-pt.c (end_template_decl): If template has non-null context,
+ chain it off of the containing class, rather than using pushdecl.
+ (instantiate_class_template): Instantiate all the member templates
+ hanging off the class template. Also, simplify some code in the
+ case where setup_parse is 0.
+ (tsubst): Check for several common values that won't be modified by
+ substitutions.
+ (tsubst, case FUNCTION_DECL): Don't return type passed if it has a
+ non-null context that might need fixing. Process that context while
+ building up the new decl node; use it to notify build_decl_overload
+ that we've got a method rather than a function.
+ (tsubst, case METHOD_TYPE): Handle like FUNCTION_TYPE; enhance that
+ case to handle TYPE_METHOD_BASETYPE when set.
+ (unify): Increment value pointed to by nsubsts, not the pointer
+ itself.
+ (do_pending_expansions): Method context is in DECL_CONTEXT, not
+ DECL_CLASS_CONTEXT.
+
+ * cp-lex.c (do_identifier): Don't try looking up fields in base
+ classes of UNINSTANTIATED_P_TYPE.
+
+ * cp-parse.y (primary): Call require_complete_type only for
+ CALL_EXPR nodes of types other than void.
+ (template_type): Don't call IDENTIFIER_TYPE_VALUE on
+ error_mark_node.
+
+ * cp-ptree.c (print_lang_decl): For UNINSTANTIATED_P_TYPE, show
+ template as well as parameters.
+
+ * cp-tree.h (DECL_TEMPLATE_*, UPT_*): New accessor macros for
+ TEMPLATE_DECL and UNINSTANTIATED_P_TYPE nodes. All (most?) uses
+ except for node creation changed to use these.
+ * cp-tree.def: Updated comments for these node types.
+
+ * cp-pt.c (uses_template_parms): Handle ADDR_EXPR.
+ (end_template_decl): For function with non-null context, pop class
+ binding level.
+
+Thu Oct 24 06:57:28 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.md, romp.md, rs6000.md (movdi, movdf, movti): Handle case of
+ reg-reg copy with overlapping registers correctly.
+
+ * out-rs6000.c (ccr_bit, case NE): Fix typo in bit number.
+ (output_epilog): Must restore stack using backchain if alloca called.
+
+ * romp.md, rs6000.md (extendxxyy2, zero_extendxxyy2): Use DEFINE_EXPAND
+ to force operand to register; DEFINE_INSN allows memory (better cse).
+
+ * rs6000.md (ffssi2): New patterns.
+ (maskir): Add patterns to use maskir instructions.
+
+ * tm-a29kunix.h (TARGET_DEFAULT, CPP_SPEC): Default to 29050.
+
+ * tm-rs6000.h (LINK_SPEC): Add -bnodelcsect.
+ (HARD_REGNO_MODE_OK): Delete kludge that didn't allow DImode in reg 31
+ and TImode in 29-31; the bug was fixed elsewhere.
+
+Wed Oct 23 17:48:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): If an insn doesn't match, check for case
+ where first SET's result isn't used; previously only checked second.
+
+ * combine.c (try_combine): When we substitute into a COMPARE, check
+ SELECT_CC_MODE to see if we should try to change the mode of the
+ COMPARE and its result.
+
+Wed Oct 23 16:38:26 1991 Torbjorn Granlund (tege at hal.gnu.ai.mit.edu)
+
+ * gnulib2.c (__ashrdi3): Compute sign extension shift count from
+ machine word size instead of using 31.
+
+Wed Oct 23 14:25:04 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (PREFERRED_DEBUGGING_TYPE): Unless otherwise defined,
+ set to SDB_DEBUG.
+
+ * tm-decrose.h (PREFERRED_DEBUGGING_TYPE): Define to DBX_DEBUG.
+
+ * out-mips.c (override_options): Don't override debugger choice now
+ that PREFERRED_DEBUGGING_TYPE is provided.
+
+Wed Oct 23 07:25:32 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sdbout.c (sdbout_symbol/FUNCTION_DECL, sdbout_toplevel_data,
+ sdbout_end_epilogue): Use DECL_ASSEMBLER_NAME to avoid link-time
+ multiple definitions.
+
+Tue Oct 22 15:06:31 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): For now, we must always have a frame pointer
+ if a function calls alloca and EXIT_IGNORE_STACK is non-zero.
+
+ * cse.c (insert_regs): Don't make new quantity for the register in
+ a SUBREG.
+ (merge_equiv_classes): Don't invalidate the register inside a SUBREG.
+ (canon_hash, case SUBREG): Remove code to treat SUBREGs like REGs.
+
+Tue Oct 22 10:25:29 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tm-m88kdgux.h (PREFERRED_DEBUGGING_TYPE): Use it.
+ * tm-m88k.h (OVERRIDE_OPTIONS): Don't override write_symbols.
+
+ * out-m88k.c (m88k_output_{prologue,epilogue}): Renamed.
+
+Tue Oct 22 00:51:48 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c++: New shell script.
+
+ * gcc.c (default_compilers): Treat .ii files as cpp'd C++.
+
+ * varasm.c (make_function_rtl): Don't alter DECL_ASSEMBLER_NAME.
+
+ * toplev.c (main): Use PREFERRED_DEBUGGING_TYPE if support
+ more than one format.
+
+Mon Oct 21 23:08:02 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (grokdeclarator): Fix error message for long float.
+
+Mon Oct 21 16:55:31 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * optabs.c (add_equal_note): New function.
+ (expand_binop): Delete some obsolete, turned-off code.
+ Use GET_RTX_CLASS to see if operator is commutative.
+ Call add_equal_note if we make a multi-insn sequence; if it fails,
+ redo the operation without our target.
+ In multi-word cases, don't allow TARGET to be the same as an input.
+ (expand_unop): Allow operation to fail.
+ Call add_equal_note and allow failure, like in expand_binop.
+ In multi-word case, don't allow TARGET to be OP0.
+ (emit_unop_insn): Use add_equal_note; ignore its failure here.
+
+ * optabs.c (expand_float, expand_fix): In cases when we will jump,
+ ensure we call emit_queue before protect_from_queue.
+ Eliminate redundant calls to protect_from_queue and force_non_mem.
+
+ * reorg.c (steal_delay_list_from_target): Don't take an insn from
+ the fallthrough thread of an annulled branch insn.
+
+Mon Oct 21 16:55:08 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * configure (m88k targets): Complete last change.
+
+Mon Oct 21 16:06:25 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * integrate.c (copy_rtx_and_substitute): When making copy of frame,
+ round size to keep substituted frame pointer aligned.
+ (CEIL_ROUND): New macro.
+
+Mon Oct 21 15:16:17 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (GP_REG_OR_PSEUDO_NONSTRICT_P): New macro for
+ REG_OK_FOR_{BASE,INDEX}_P in non strict mode. Fix typos in the
+ previous change.
+ (GP_REG_OR_PSEUDO_P): Rename to GP_REG_OR_PSEUDO_STRICT_P.
+ (REG_OK_FOR_BASE_P): Use GP_REG_OR_PSEUDO_NONSTRICT_P if non strict.
+ (REG_OK_FOR_INDEX_P): Use GP_REG_OR_PSEUDO_NONSTRICT_P if non strict.
+ (GO_IF_LEGITIMATE_ADDRESS): Indicate if strict checking is being
+ used if -mdebugb tracing.
+
+Mon Oct 21 15:08:15 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * Makefile.in (*.o): Add insn-codes.h to all lists using expr.h.
+ (dwarfout.o): Add dwarf.h, reload.h, output.h, and insn-config.h.
+
+ * c-tree.h (TYPE_ACTUAL_ARG_TYPES): New macro for list of actual
+ types.
+ * c-decl.c (store_parm_decls): Compute TYPE_ACTUAL_ARG_TYPES if a
+ prototype is not present. Delete old method.
+ (duplicate_decls): Provide better diagnostics if a prototype
+ follows a function definition.
+
+ * m88k.md (gen_divsi3): Delete REG_EQUAL workaround.
+ * t-m88k{,luna,sysv4}: Target makefile portion (from Mike Stump).
+ * x-m88k{,dgux,luna,sysv4}: Corresponding deletions.
+ * {tm,t,x}-m88ksysv4: Renamed from m88ksvr4. Deleted xm-m88ksvr4.
+ * {tm,xm}-m88ksysv3: Renamed from v88r32.
+ * configure: Corresponding changes.
+
+ * tm-m88k.h (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Output to
+ .ctors/.dtors sections.
+ (TARGET_SWITCHES): Add -m88000, -m88100, and -m88110. Replace
+ DG/UX MXDB options with SUBTARGET_SWITCHES macro.
+ * tm-m88kdgux.h (SUBTARGET_SWITCHES, ASM_SPEC, ASM_FIRST_LINE):
+ Put MXDB options here changing -mdwarf to -mstandard.
+
+Sun Oct 20 06:39:54 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_comparison, case PLUS): Only do simplification
+ for equality comparison due to overflow problems.
+
+ * gen*.c: Remove "void *" and uses of size_t added by recent change.
+
+ * reload.c (find_reloads): If "&" given without any registers,
+ turn off earlyclobber, in addition to giving error.
+
+ * Makefile.in (STAGE_GCC): Deleted.
+ (STAGESTUFF): Add gcc (from STAGE_GCC) and gcc-cross.
+
+Sun Oct 20 04:37:21 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (grokfndecl): Use DECL_NAME, not DECLARATOR at end of
+ function, since DECL_NAME may be different if it's an operator name.
+
+ * cp-cvt.c (convert_pointer_to): Test if PARENT is TREE_VEC
+ before testing IS_AGGR_TYPE.
+
+Sun Oct 20 00:40:47 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (link_command_spec): -collect converts to -c.
+
+ * toplev.c (main): Support -gstabs and -gcoff. Fix args to strncmp.
+
+Sat Oct 19 21:51:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c: Use const_true_rtx instead of const1_rtx.
+ (delete_scheduled_jump): Don't delete an insn that sets CC0 if it
+ has a side-effect.
+ (update_block): Add missing declaration for parameter WHERE.
+ (fill_slots_from_thread): Stop search if we find an insn that we
+ can't put into the delay slot unless we own the thread.
+
+Sat Oct 19 17:30:23 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (GP_REG_OR_PSEUDO_P): New macro to make sure a reg or
+ pseudo reg during reload will eventually be a GP register for use as
+ a base or index register. This fixes a bug where a FP register
+ could be used as a base or index register in some cases after
+ convert from floating point to integer was done.
+ (REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_INDEX_P): Use GP_REG_OR_PSEUDO_P.
+ (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): In the non strict version,
+ don't allow hard FP registers ever.
+
+Sat Oct 19 11:59:55 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tm-sun3.h, tm-sparc.h (WORD_SWITCH_TAKES_ARG):
+ Check for Tdata as well as target.
+
+ * c-decl.c (grokdeclarator): Don't warn for array of incomplete elt.
+
+ * expr.c (expand_expr): For INDIRECT_REF, don't set unchanging bit.
+ * c-typeck.c (build_indirect_ref): Do set TREE_UNCHANGING if nec.
+
+ * reload.c (find_reloads): Warning or error for misuse of `&'.
+ * toplev.c (warning_for_asm): New function.
+
+ * t-i386sco: New file.
+ * x-i386sco: Add -Di286 to CC, OLDCC.
+ (LIMIT_H): Moved to t-i386sco.
+
+Sat Oct 19 09:08:11 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * gcc.c: Add missing extern declarations deleted by last change.
+ (xrealloc, xmalloc): Don't declare as void *; non-ANSI compilers
+ can't handle it.
+
+Sat Oct 19 08:26:13 1991 Ron Guilmette (rfg at ncd.com)
+
+ * tree.h: Fix spelling error in comment.
+
+ * tree.def, cp-parse.y: Change comments that refer to LET_STMT nodes to
+ refer to BLOCK nodes.
+
+ * gcc.c, gen*.c: Declare as static objects that aren't referenced
+ outside the file they are in.
+ (xrealloc, xmalloc): Functions return char *, not int.
+ (main): Add missing returns (in unreachable code) to avoid warnings
+ when compiled with -Wreturn-type.
+ * gcc.c (pexecute): Likewise.
+ * genattrtab.c (operate_exp): Likewise.
+
+Fri Oct 18 16:58:12 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Finish changeover from cplus-* to cp-*.
+
+Fri Oct 18 16:57:37 1991 Ron Guilmette (rfg at ncd.com)
+
+ * tm-svr4.h: Delete lines duplicated due to transmission problems.
+
+Fri Oct 18 16:55:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (unsigned_condition, signed_condition): New functions.
+
+ * configure (vax): Set tm_file to tm-vax.h so "configure vax-dec-bsd"
+ works.
+
+ * combine.c (subst, case PLUS, MINUS): Remove some simplifications
+ from here.
+ * cse.c (simplify_binary_operation, case PLUS, MINUS): Put these
+ simplifications here.
+ Strip off CONST when looking for some simplifications.
+ Add code to simplify (a - (a - b)).
+
+ * combine.c (expand_compound_operation): Correctly handle case where
+ we have a ZERO_EXTRACT that extends beyond the bounds of the object.
+
+ * global-alloc.c (mark_elimination): No longer have FORBIDDEN_REGS as
+ argument.
+ * reload1.c (reload): Don't pass FORBIDDEN_REGS to mark_elimination.
+
+ * cse.c (simplify_{unary,binary,relational}_operation): Complete
+ change that removes warnings from floating-point traps when constant
+ folding (some cases had been omitted).
+
+Fri Oct 18 16:41:29 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * stmt.c (expand_anon_union_decl): When creating new mem, copy the
+ RTX_UNCHANGING_P and MEM_IN_STRUCT_P bits from the old one.
+
+ * sparc.md: Add new scc addx/subx patterns.
+
+Fri Oct 18 09:10:43 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-parse.y (stmts): Fix parsing rules to match C++ semantics
+ better (and hence give the compiler better error recovery).
+
+Thu Oct 17 19:31:15 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-pt.c (tsubst): For NEGATE_EXPR, call build1, not build.
+ Handle NOP_EXPR likewise.
+ (unify, case TEMPLATE_CONST_PARM): Copy value to permanent obstack.
+
+ * cp-method.c (PARM_CAN_BE_ARRAY_TYPE): If not already defined,
+ define it to be 1.
+ (build_overload_name): Test to see if it's nonzero, rather than
+ whether it's defined; this permits compilation options to disable
+ it, but leave it enabled by default. Add one to the array size,
+ since the value retrieved appears to be the maximum index, not the
+ true array size.
+
+Thu Oct 17 19:15:37 1991 Mark Eichin (eichin at tweedledumber.cygnus.com)
+
+ * cp-pt.c (instantiate_class_template): has an argument to
+ indicate whether to setup for parsing or not. (All existing cases
+ did a feed input, but if we are trying to set up intermediate nodes
+ while waiting for the parser to return to a template_instantiate
+ site we need to suppress the parsing part of it, which will get
+ redone later.)
+ (tsubst): under case UNINSTANTIATED_P_TYPE, actually instantiate any
+ class templates that are needed for function return values, and set
+ them up as pending templates to be run later.
+
+ * cp-parse.y (primary): since build_x_function_call doesn't
+ require a complete type any more in certain cases, we instantiate
+ any pending templates and then require_complete_type on the
+ remainder.
+
+ * cp-typeck.c (build_function_call_real): added an argument to
+ optionally skip the require_complete_type... implicit template
+ instantiation has to be postponed, so we won't get a complete type
+ until the parser can grab it.
+
+ * cp-call.c (build_overload_call_real): added an argument do
+ allow choice of build_function_call_maybe or build_function_call
+ based on whether we thought we would require a complete type out of
+ build_function_call.
+
+Wed Oct 16 09:06:57 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-decl.c (store_parm_decls): Fix and disable recording the arg
+ type list for the function indicating the number of arguments.
+ * c-typeck.c (self_promoting_args_p): Allow the arg type to be null.
+
+ * expmed.c (store_bit_field, extract_bit_field): Add checks for
+ MEM_IN_STRUCT_P if the structure reference is a MEM.
+
+Tue Oct 15 18:37:50 1991 Ken Raeburn (raeburn at cygnus.com)
+
+ * cp-call.c (build_overload_call): If template match fails, still
+ set function field of candidate structure, and set bad_arg field to
+ new magic number -4 to indicate failed type unificiation.
+
+ * cp-class.c (add_method): Call make_function_rtl only if not
+ processing a template declaration.
+
+ * cp-tree.def: New node type, UNINSTANTIATED_P_TYPE, for
+ parameterized types that haven't had parameters filled in yet.
+ Looks like a type node.
+
+ * cp-decl.c (struct binding_level): New flag indicating any name
+ should be accepted when looked up at this level. This is a kludge
+ to try to deal with methods of parameterized types.
+ (declare_uninstantiated_type_level): Set it.
+ (uninstantiated_type_level_p): Return it.
+ * cp-class.c (pushclass): If the "class" type is
+ UNINSTANTIATED_P_TYPE, flag it in the new binding level.
+
+ * cp-decl.c (push_overloaded_decl): New argument to indicate
+ whether the decl should be forgotten when the current level is
+ exited. Callers changed.
+ (push_overloaded_decl_top_level): Ditto.
+ (dont_forget_overload): Deleted.
+ (push_overloaded_decl_1): New fn; like push_overloaded_decl, but
+ never forgets. Intended only for use by auto_function macro.
+ (auto_function): Use it.
+
+ * cp-decl.c (print_binding_level): Print type-shadowed field at
+ each level. Skip fields with no values.
+
+ * cp-decl.c (adjust_type_value): Use SET_IDENTIFIER_TYPE_VALUE,
+ not set_identifier_type_value.
+
+ * cp-decl.c (pushdecl): Undo Oct 4 back-out of previous change.
+ Set type value of name of passed decl, instead of name of type in
+ passed decl.
+ (pushdecl_top_level): Search type-shadowed fields of outer binding
+ levels, munging outermost one if found to cause it to "restore" the
+ new global value.
+
+ * cp-decl.c (push_overloaded_decl): Don't punt second or later
+ templates of a given name.
+
+ * cp-decl.c (start_decl): Template-handling code moved up, to
+ cope better with variable declarations. Don't check for incomplete
+ type or constructor requirements when processing template.
+
+ * cp-decl2.c (build_push_scope): If passed error mark node, just
+ return it.
+ (constructor_name): Handle UNINSTANTIATED_P_TYPE.
+
+ * cp-lex.c (identifier_type): Don't return PTYPENAME for function
+ template name.
+
+ * cp-method.c (report_type_mismatch): New magic bad-arg value -4
+ indicates type unification failure.
+ (build_overload_name, case UNINSTANTIATED_P_TYPE): Handle like other
+ template-related types that shouldn't get visibility outside the
+ compiler.
+
+ * cp-parse.y (template_type): Use IDENTIFIER_TYPE_VALUE from
+ name, if expansion doesn't happen.
+ (tmpl.1, tmpl.2): Now type <ttype>. Value is null or return value
+ from instantiate_class_template.
+ (template_instantiation): Always put copy of decl in global scope.
+ Use pushdecl_top_level instead of setting IDENTIFIER_GLOBAL_VALUE
+ slot.
+ (LC): If type has been or is being defined, push a new type with the
+ same name, to avoid conflict.
+ (try_for_typename): New type <itype>. Value is non-zero iff type to
+ be pushed uses no template parms and isn't error_mark_node.
+ (scoped_id): Return error_mark_node for template parameter uses, and
+ leave error_mark_node alone. Only pop class if try_for_typename
+ value is non-zero.
+ (scoped_typename): Ditto.
+
+ * cp-pt.c (end_template_decl): If template decl/class head arg is
+ null, punt. For non-type templates that didn't come in as template
+ decls, clear public flag. Such cases shouldn't arise any more; just
+ put in abort call for now until we're sure. Comment out code for
+ forcibly removing temporary values of template type parms; Michael
+ broke the code and fixed the original problem. Handle error case
+ where decl to be pushed might be null.
+ (coerce_template_parms): Handle arg list as TREE_VEC as well as
+ TREE_LIST. If arg list uses template parms, return
+ UNINSTANTIATED_P_TYPE node.
+ (uses_template_parms, case UNINSTANTIATED_P_TYPE): Return 1.
+ (instantiate_class_template): Now returns tree -- error_mark_node or
+ NULL_TREE or class type; callers and decls changed. Assign
+ TYPE_NAME field when building new RECORD_TYPE and TYPE_DECL nodes.
+ Don't need to do extra poplevel any more.
+ (tsubst): Handle UNINSTANTIATED_P_TYPE, MINUS_EXPR, PLUS_EXPR,
+ NEGATE_EXPR.
+ (undo_template_name_overload): Don't need to explicitly clear type
+ field any more.
+ (overload_template_name): Push a TYPE_DECL, instead of explicitly
+ setting type value field.
+ (end_template_instantiation): Don't need to pop a level any more.
+ (reinit_parse_for_template): Throw away saved block for null or
+ error template node.
+ (type_unification): Handle variadic functions, and functions with
+ default values for arguments.
+ (unify): Handle TREE_VEC and UNINSTANTIATED_P_TYPE.
+
+ * cp-ptree.c (print_lang_type): Handle UNINSTANTIATED_P_TYPE.
+
+ * cp-tree.h (push_overload_decl): Declare here, not in
+ cp-decl.c.
+ (TEMPLATE_TYPE_* macros): Delete unused (and now incorrect)
+ versions.
+
+Mon Oct 14 14:30:32 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * integrate.c (expand_inline_function): Fix typo from last edit,
+ where TYPE_MODE was applied to an argument, not the type of an
+ argument.
+
+ * cse.c (canon_hash, SUBREG case): Add cast which is needed by some
+ compilers.
+
+Mon Oct 14 07:59:50 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * toplev.c (rest_of_compilation): Compute the function's name and
+ pass it to assemble_{start,end}_function.
+ * varasm.c (assemble_start_function): New parameter.
+ (assemble_end_function): New function for ASM_DECLARE_FUNCTION_SIZE.
+ * final.c, sdbout.c: Correct comments.
+ * tm-svr4.h, tm-sysv4.h (ASM_DECLARE_FUNCTION_SIZE): Add and use a
+ NAME parameter.
+ * tm-m88k.h (ASM_DECLARE_FUNCTION_SIZE): Override svr4 definition.
+ * out-m88k.c (output_prologue): Delete previous method.
+
+ * m88k.md: Use trap_if.
+ (divsi3): Store into output operand only once to aviod problems
+ with REG_EQUAL note.
+ * out-m88k.c (output_call): Accomodate assembler range
+ restriction.
+ * tm-m88kdgux.h (AS_BUG_IMMEDIATE_LABEL): Specify the restriction.
+ (ASM_SPEC): Pass -KV3 to the assembler in some cases.
+ * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): Mark the addressing base
+ register global.
+
+Sat Oct 12 00:30:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (.SUFFIXES): Rule added.
+
+ * dbxout.c (dbxout_block): Handle debug_info_level.
+ * sdbout.c (sdbout_begin_block): Likewise.
+ * toplev.c (compile_file): Likewise, when calling init_emit_once.
+ * emit-rtl.c (init_emit_once): Cosmetic change.
+ * Makefile.in (sdbout.o): Include flags.h.
+
+ * configure: Default srcdir from dir in which configure is found.
+
+ * i860.md (floatsidf2): Rewrite to be independant of host machine.
+ (divdf3, divsf3): New patterns.
+
+ * tm-i860.h (ASM_DECLARE_FUNCTION_NAME): Macro deleted.
+ (ASM_OUTPUT_FUNCTION_PREFIX): Macro added.
+
+ * stmt.c (pushcase, pushcase_range, expand_end_case):
+ Don't give "unreachable code" warning for a USE.
+
+ * tm-i386.h (HARD_REGNO_MODE_OK): Fp regs reject TFmode.
+
+Fri Oct 11 16:43:37 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * cse.c (find_comparison_args): Reject VOIDmode to avoid invalid
+ shift.
+
+Fri Oct 11 14:30:31 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (function_types_compatible_p):
+ NULL as arg type matches self-promoting type.
+ (self_promoting_type_p): New function.
+ (common_type): NULL for arg in one fcn type means use arg from other.
+ * c-decl.c (store_parm_decls): Record arg type list for the fn,
+ just to indicate how many args there are.
+
+ * i860.md, out-i860.c, tm-i860.h: Merge many changes by rfg.
+ * tm-i860bsd.h, xm-i860.h: Likewise.
+ * tm-i860v3.h, tm-i860v4.h: New files.
+ * xm-i860v3.h, xm-i860v4.h: New files.
+ * tm-i860v3g.h: Renamed from tm-i860g.h.
+ * configure (i860-sysv3*): Renamed from i860-sysv*. New filenames.
+ (i860-sysv4*): New alternative.
+
+ * print-rtl.c: New file, split from rtl.c.
+ * Makefile.in (print-rtl.o): New target.
+ (OBJS): Add that target.
+
+ * toplev.c (DEFAULT_GDB_EXTENSIONS): Provide default definition.
+ (main): Use that for -g with dbx format.
+ Don't support -G.
+ * gcc.c (default_compilers): Get rid of -G.
+
+Fri Oct 11 14:30:43 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * stmt.c (expand_anon_union_decl): Correctly handle anonymous
+ unions, whether in memory or registers.
+
+ These were written by Michael Tiemann.
+ The following changes net a 16% speedup compiling some
+ machine-generated CAD synthesis code.
+ * c-decl.c (field_decl_cmp): New function, use as comparison
+ function for qsort.
+ (finish_struct): If there are more than 15 fields, allocate a
+ LANG_TYPE for the FIELD_DECLs, and sort them according to
+ `field_decl_cmp'.
+ * c-tree.h (lang_type): Define a LANG_TYPE for RECORD_TYPEs.
+ * c-typeck.c (build_component_ref): If LANG_TYPE set, then use
+ binary search to find the field, otherwise use linear search as
+ before.
+
+ * tree.h: Declare savealloc.
+ * c-common.c: Delete now unnecessary cast of savealloc result.
+
+Fri Oct 11 10:06:09 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * cse.c (simplify_binary_operation): Fix typo in last change.
+
+ * cp-*, gcc.texinfo, make-cc1.com, tree.c, undocumented: Change
+ cplus- to cp-. Rename cplus-parse.y to cp-parse.y.
+
+Fri Oct 11 07:48:40 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * recog.c (find_single_use_1): Ignore appearances of DEST in
+ contexts where it is being set, not referenced.
+ (find_single_use): Use dead_or_set_p instead of looking for REG_DEAD
+ notes.
+
+Fri Oct 11 07:29:33 1991 Ron Guilmette (rfg at ncd.com)
+
+ * c-parse.y, cp-lex.c, objc-parse.y (check_newline): Use `pedwarn'
+ instead of `error' when we see an #ident if -pedantic.
+ * cccp.c (do_assert, do_unassert, check_assertion, do_sccs): Warn
+ if -pedantic.
+
+Thu Oct 10 18:30:28 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Correctly handle new debugging
+ options, pass all -g* and -G* options.
+
+ * Makefile.in, c-decl.c, cp-decl.c, final.c, flags.h, gcc.1,
+ gcc.c, print-tree.c, toplev.c, tree.def, tree.h: Delete support
+ for obsolete GDB_DEBUG format, -gg option, symout.c, etc.
+ * gdbfiles.h, symseg.h, symout.c: Delete obsolete files.
+
+Thu Oct 10 17:56:16 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (convert_move): When widening FROM to multi-word, ensure that
+ we only reference each piece of TO once so that emit_no_conflict_block
+ can be safely used.
+
+ * toplev.c (float_signal): Re-enable the signal after we catch it.
+
+ * cse.c (simplify_binary_operation): Add missing fp error handler
+ setup in DFmode case.
+
+ * combine.c (subst, case XOR): Fix typo in checking for
+ STORE_FLAG_VALUE equal to just the sign bit.
+ (simplify_comparison): Fix typo in computing maximum signed number in
+ a mode; also, use GET_MODE_MASK rather than trying to compute it.
+
+Thu Oct 10 17:52:44 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing): Turn off `alloca' for -ansi.
+ (c_decode_option): Handle -fbuiltin, -fno-builtin.
+
+Thu Oct 10 17:42:03 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * caller-save.c (emit_mult_restore): Initialize MAYBE_TEMPREG.
+
+ * function.c (assign_parms): Set MEM_IN_STRUCT_P when creating a
+ MEM for a aggregate passed by reference.
+ * expr.c (expand_expr, INDIRECT_REF case): Set MEM_IN_STRUCT_P
+ when dereferencing an aggregate.
+
+ * sched.c (sched_note_set): Add missing parens.
+
+ * sparc.md: Delete unnecessary clobbers from all SCC patterns.
+
+ * integrate.c (expand_inline_function): Correct handling of arguments
+ passed by invisible reference.
+
+ * cse.c (canon_hash): Compute hash code for SUBREG same as we do
+ for REG. Otherwise, SUBREG hash codes can change when qty_const
+ changes, which results in duplicate SUBREG entries, which can
+ cause a crash.
+
+Wed Oct 9 15:55:42 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * cccp.c (main): Update MAX_INCLUDE_LEN if GCC_EXEC_PREFIX gets into
+ the act.
+
+ * xm-a29k.h: Change copyright message back to GPL version 2.
+ * xm-a29k-ultra.h: Use GPL version 2 copyright.
+
+ * reload1.c (reload): Put array size in cast, to prevent compiler
+ warning.
+
+ * dwarfout.c (type_attribute): Check for ERROR_MARK nodes.
+
+Wed Oct 9 13:59:22 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (float_signal): Reenable handler.
+
+ * configure: Comment out various options not yet updated.
+
+ * cp-*.c, cp-*.h: Renamed from cplus-*.[ch].
+ * Makefile.in: Renaming here also.
+
+ * x-*: Renamed from make-*.
+ * Makefile.in (tmake_file, xmake_file): New vars.
+ (Makefile): Depend on them.
+ * configure: Replace host_make_var_file with host_xmake_file.
+ Handle tmake_file also, for target machine.
+ Form file names from x- and t-.
+ Rearrange use of temporary files during editing of Makefile.
+
+ * t-mips: Most of x-mips moved here.
+ * t-decrose: Likewise from x-decrose.
+
+ * xm-a29k-ult.h: Renamed from xm-a29k-ultra.h.
+
+ * Makefile. in (install-common): Don't handle `collect' specially.
+ It should be in EXTRA_PASSES if it is needed.
+
+ * cse.c (simplify_binary_expression): Use float handler for DF like SF.
+ Don't warn about traps; leave them for run time.
+
+ * tm-hp9k320.h (SIZE_TYPE): New definition.
+ Note: this affects tm-3b1.h by inheritance. Not sure that's right.
+
+Wed Oct 9 12:15:40 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * rtl.def (TRAP_IF): Make TRAP into a conditional trap.
+ * rtl.h (TRAP_CONDITION): Define.
+ * rtlanal.c (reg_referenced_p may_trap_p): Deal with TRAP_IF properly.
+ (volatile_refs_p side_effects_p): Not currently true for TRAP_IF.
+
+Wed Oct 9 03:55:21 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * make-mips (BISONFLAGS): Assignment deleted.
+
+ * real.h (REAL_VALUE_MINUS_ZERO): New macro.
+ * fold-const.c (target_minus_zero): New function.
+ * tm-sun2os4.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_FLOAT_OPERAND):
+ (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_DOUBLE_OPERAND):
+ Use REAL_VALUE_ISINF, REAL_VALUE_MINUS_ZERO.
+
+Tue Oct 8 17:56:13 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (duplicate_decls): If redeclaring builtin as static,
+ replace the old decl.
+
+ * tm-seq386.h (HARD_REGNO_MODE_OK): Copy usual def into override def.
+
+ * tm-news.h (CPP_PREDEFINES): Get rid of invalid conditionals.
+ * tm-tower.h: Likewise.
+
+ * tm-gmicro.h (MODES_TIEABLE_P): Fix typo.
+
+ * ns32k.md (rotrsi3): Fix typo `NEGATE' for `NEG'.
+
+ * c-typeck.c (mark_addressable): Handle CONSTRUCTOR.
+ * expr.c (expand_expr): Handle addressable contructors.
+
+Tue Oct 8 14:42:56 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * expmed.c (lshift_value): Ensure the shift amount is in range.
+
+Mon Oct 7 20:45:35 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * integrate.c (function_cannot_inline_p, save_for_inline_copying,
+ save_for_inline_nocopy, expand_inline_function,
+ output_inline_function): Use GET_RTX_CLASS.
+
+ * listing: Remove RCS Author and Log fields.
+
+ * cse.c (exp_equiv_p): Fix typos in comments/spacing.
+ * emit-rtl.c: Likewise.
+ * expmed.c (store_fixed_bit_field): Likewise.
+ * integrate.c (subst_constants): Likewise.
+
+ * longlong.h: Again fix same typo previously fixed Sept 5.
+
+Mon Oct 7 17:28:23 1991 Michael Meissner (meissner at osf.org)
+
+ * xm-mips.h (MIPS): Define MIPS to 1 instead of nothing, so
+ mips-tfile will compile once again.
+
+Mon Oct 7 17:10:32 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Pedantically warn if no newline at end of file.
+ (finclude): Likewise.
+
+ * c-decl.c (grokdeclarator): funcdef_flag overrides parm level.
+
+Sun Oct 6 16:37:31 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sparc.md (peephole for lo-sum and load df): Use output_move_double.
+
+ * tree.h (DECL_BUILT_IN_NONANSI): New flag.
+ * c-decl.c (init_decl_processing): Set flag for `alloca'.
+
+ * c-decl.c (duplicate_decls): Rearranged to reduce conditionals.
+ Allow redefining built-in functions as static even if new decl
+ is not a function. Also allow if built-in is not ANSI.
+
+ * out-sparc.c (output_move_double): Fix typo in test for using ldd.
+
+Sun Oct 6 12:56:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case COND_EXPR): Rename var added in last
+ change; some C compilers don't like "optab optab;".
+
+Sun Oct 6 09:26:55 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-method.c (build_overload_name): When walking up contexts, if
+ CONTEXT becomes a _TYPE node, point it at the _DECL node for the
+ type.
+
+ * cplus-decl2.c (grokclassfn): Paremeter COMPLAIN deleted. No
+ longer performs sanity check by itself.
+ (check_classfn): New function. Performs sanity check that
+ `grokclassfn' used to do. All callers changed.
+
+ * tree.h (struct tree_decl): Add new ignored_flag; delete
+ lang_flag_8 to make room.
+ (DECL_IGNORED_P): New macro.
+ (DECL_LANG_FLAG_8): Deleted.
+ * cplus-dbxout.c (dbxout_type): Use this macro instead of
+ ANON_AGGRNAME_P.
+ * cplus-decl.c (pushtag): Set DECL_IGNORED_P when appropriate.
+ * cplus-decl.c (duplicate_decls): Ensure DECL_IGNORED_P remains
+ consistent.
+
+ * cplus-decl.c (grokfndecl): If we have an overloaded operator, set
+ the DECL_NAME to something that dbxout.c can handle.
+ * cplus-method.c (hack_operator): Change this function to handle
+ this new behavior.
+ * cplus-init.c (do_friend): Ditto.
+
+Sat Oct 5 14:32:01 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expmed.c (expand_mult): Avoid fetching memory more than once.
+
+ * tm-ultrix.h (DOLLARS_IN_IDENTIFIERS): Define as 1.
+
+ * expr.c (expand_builtin): Clarify error message for BUILT_IN_NEXT_ARG.
+
+Sat Oct 5 08:42:02 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (clear_anon_tags): New function.
+ (make_anon_name): Moved here from cplus-method.c.
+ * cplus-lex.c (check_for_missing_semicolon, note_list_got_semicolon):
+ call `clear_anon_tags' when done.
+ * cplus-dbxout.c (dbxout_type): No longer test ANON_AGGRNAME_P for
+ TYPE_NAMEs that are IDENTIFIER_NODES. They no longer appear in GNU
+ C++. Also, we can rely on the fact that there are no anon aggrnames
+ in tag lists.
+
+ * cplus-decl.c (xref_tag): Set TREE_VEC_LENGTH (BINFOS) to the
+ number of basetypes that were actually accepted.
+
+ * cplus-parse.y (datadef, fndef): Accept `extern "C"' as a storage
+ class specifier.
+
+ * cplus-init.c (build_new): Handle allocating types whose TRUE_TYPEs
+ start off as ARRAY_TYPEs.
+
+ * cplus-typeck.c (build_unary_op): We don't need to wrap
+ CURRENT_CLASS_DECL in a NON_LVALUE_EXPR when taking the address of
+ C_C_D.
+
+ * cplus-init.c (resolve_offset_ref): Fix error message for
+ non-static member references. Also, don't crash if EXP is not a
+ TREE_LIST or an OFFSET_REF.
+
+ * cplus-expr.c (cplus_expand_expr): Handle OFFSET_REFs.
+
+ * cplus-typeck.c (build_binary_op_nodefault): If PEDANTIC, don't
+ permit comparisons between pointers and integers.
+
+ * cplus-decl2.c (explicit_warn_return_type): New variable.
+ * cplus-decl.c (grokdeclarator): Test `explicit_warn_return_type'
+ instead of `warn_return_type'.
+
+ * cplus-decl.c (grokdeclarator): Fix criterium for deciding whether
+ to turn a FUNCTION_TYPE declaration into a METHOD_TYPE declaration
+ based on FRIENDP and STATICP.
+ (implicitly_declare): If PEDANTIC, treat this as an error.
+
+ * cplus-cvt.c (convert_to_integer): Make anachronisms errors if
+ PEDANTIC is nonzero.
+
+ * cplus-typeck.c (convert_for_assignment): If PEDANTIC, don't let
+ void * convert to non-void* types. Similarly, don't let const*
+ pointers be assigned to non-const* pointers. Similarly for signed
+ vs. unsigned pointers.
+ (warn_for_assignment): Add new parameter SEVERE.
+
+ * cplus-decl.c (push_overloaded_decl): If PEDANTIC, give error when
+ functions overload variables.
+
+ * cplus-decl2.c (grokfield): If PEDANTIC, don't let fields have
+ initializers (conditionalized on PEDANTIC).
+ * cplus-class.c (finish_struct): Set TYPE_GETS_{ASSIGNMENT,INIT_REF}
+ for UNION_TYPE.
+
+Sat Oct 5 06:52:29 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case COND_EXPR): Case for X ? A + 1 : A can
+ also handle MINUS_EXPR and BIT_*_EXPR.
+
+ * rtl.h (copy_rtx_if_shared): Declare here.
+ * emit-rtl.c (unshare_copies): Delete unused variable.
+ (copy_rtx_if_shared): No longer static.
+ (reset_used_flags): New function.
+ * combine.c (copy_substitutions): Deleted.
+ (try_combine): When making new insns, ensure that we do not have any
+ improper sharing by using copy_rtx_if_shared; no longer call
+ copy_substitutions.
+
+ * combine.c (try_combine): If an insn that is a PARALLEL of two sets
+ isn't recognized and the result of the second SET is unused, ignore it.
+
+Fri Oct 4 15:25:33 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (set_identifier_type_value): New function. Change
+ all callers of macro SET_IDENTIFIER_TYPE_VALUE to call this function
+ instead.
+
+ * cplus-decl.c (pushdecl): Back out Sep 26 change. ??? This problem
+ really has to be solved in a more global fashion.
+ (struct binding_level): New field `type_shadowed' for typenames that
+ get shadowed. All pop* routines that restore from shadowed lists
+ now restore IDENTIFIER_TYPE_VALUE from the `type_shadowed' field.
+
+Fri Oct 4 14:47:52 1991 Michael Meissner (meissner at osf.org)
+
+ * sdbout.c (include of syms.h): Don't include <syms.h> on MIPS
+ systems, since the system does not provide the file, rather use
+ "gsyms.h". This is a problem for Silicon Graphics, and the System V
+ varient on RISC-OS, both of which define the USG macro. Patch from
+ jonathan@isor.vuw.ac.nz.
+
+Fri Oct 4 13:37:11 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * stor-layout.c (get_best_mode): Add a volatilep parameter
+ indicating that the smallest mode is desired.
+ * expmed.c, fold-const.c: All callers changed.
+ (optimize_bit_field_compare): Initialize {l,r}volatilep now that
+ they are used.
+
+Thu Oct 3 22:08:45 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * objc-actions.h (CLASS_SUPER_NAME): Change type.basetypes to
+ type.binfo so that it will compile.
+
+Thu Oct 3 06:46:38 1991 Niklas Hallqvist (niklas at appli.se)
+
+ * cplus-tree.h (PARANOID): Don't define if already defined.
+ ({SET,CLEAR}_CLASSTYPE_MARKED*): New macros needed to get through
+ C compilers who don't allow comma expressions as lvalues.
+ ({SET,CLEAR}_BINFO_*): Ditto.
+
+ * cplus-init.c: Use new SET/CLEAR macros.
+
+ * cplus-search.c: Ditto.
+
+ * cplus-decl.c: Ditto.
+ (lookup_tag): Accept *_DECLs as nodes in the context chain.
+ (lookup_nested_type): Accept FUNCTION_DECLs not only as head of
+ the context chain, but at any place in it.
+
+Thu Oct 3 06:42:08 1991 Michael Meissner (meissner at osf.org)
+
+ * c-decl.c (c_decode_option): Add new switch -Wparentheses and
+ -Wnoparentheses to control whether GCC warns about adding extra ()'s
+ around a subexpression. Make -Wparentheses default behavior.
+ (warn_parentheses): New global variable.
+
+ * c-tree.h (warn_parentheses): New variable.
+
+ * c-typeck.c (parser_build_binary_op): Check for warn_parentheses
+ before emitting warnings about adding ().
+
+Wed Oct 2 20:51:04 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * gcc.texinfo: Correct documentation for CONSTANT_ADDRESS_P,
+ CONSTANT_P, and HIGH.
+
+Wed Oct 2 15:08:32 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-class.c (modify_vtable_entries): Fix error in computing
+ offsets to use for virtual functions from virtual baseclasses.
+ * cplus-except.c (lookup_exception_type): Change local variable name
+ `binfo' to `link'.
+ * cplus-lex.c (yylex): Cast shorts to (long) when building longlong.
+
+Wed Oct 2 11:32:35 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-encrose.h (new file): New configuration file for Encore
+ Multimax running OSF/1, and using the OSF/rose object formats.
+
+Wed Oct 2 08:33:08 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tree.h (TYPE_UID): Add this field to TYPE nodes.
+ * tree.c (make_node): Initialize it.
+ * dwarfout.c (TYPE_NAME_FMT): Use TYPE_UID rather than TREE_UID.
+ (equate_type_number_to_die_number): Discard type qualifiers.
+ (output_typedef_die): Don't use equate_type_number_to_die_number.
+
+Wed Oct 2 08:04:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_process_notes): Fix typo; missing arg in return.
+
+Wed Oct 2 06:56:13 1991 Ron Guilmette (rfg at ncd.com)
+
+ * Makefile.in (ENQUIRE_CFLAGS): Remove duplicate use of GCC_CFLAGS.
+
+ * Makefile.in (cplus-tab.c): Adjust number of expected conflicts.
+
+ * Makefile.in (mostlyclean): Remove collect and collect2.
+
+ * tm-svr4.h: Add new file; prototype for System V, Release 4.
+
+Tue Oct 1 23:00:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads_address): Fix error in previous change;
+ clean up REG case so it is easier to read.
+
+Tue Oct 1 14:05:46 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (finish_{decl,function}): Use new function
+ `note_debug_info_needed' instead of setting CLASSTYPE_ASM_WRITTEN.
+ * cplus-search.c (note_debug_info_needed): New function.
+ Recursively set CLASSTYPE_ASM_WRITTEN in a hierarchy when called.
+
+ * cplus-class.c (finish_struct): If DECL_NAME of the BASE_FNDECL is
+ NULL_TREE, we know we're looking at a virtual destructor.
+
+Tue Oct 1 09:47:25 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (OPTIMIZATION_OPTIONS): Enable scheduling insns now for
+ -O2 optimization.
+
+ * Makefile.in (STAGESTUFF): Add $(EXTRA_PASSES), to allow moving any
+ extra passes into the stage[1234] directories, and to remove the
+ extra stuff when doing make clean.
+
+Tue Oct 1 08:35:11 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarfout.c (FUNC_END_LABEL_FMT, TYPE_NAME_FMT): Undo this change.
+
+ * c-decl.c (grokdeclarator): When making an unsigned bitfield
+ type from a typedef, preserve the size. A typedef of an
+ explicitly signed typedef is explicitly signed.
+
+Mon Sep 30 22:51:07 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * out-sparc.c: Fix misc typos and indentation problems.
+ Delete all unnecessary extern declarations.
+ Include "recog.h".
+ Consistently use Pmode instead of SImode for addresses.
+ Use macros defined in tm-sparc.h instead of magic numbers.
+ (reg_or_0_operand): Accept CONST_DOUBLE zero.
+ (symbolic_operand): Accept CONST_DOUBLE.
+ (move_operand): Accept arith_double_operand ('H'), SMALL_INT
+ ('I'), and sethi operands ('K').
+ (move_pic_label): Renamed from move_reg_or_immed_operand. If
+ flag_pic is true, accept a LABEL_REF, otherwise fail.
+ (arith_double_operand): Accept SMALL_INT ('I') CONST_INTs. Correct
+ computation of when a CONST_DOUBLE is a SMALL_INT ('H').
+ (eligible_for_epilogue_delay): Accept arith_double_operands.
+ (emit_move_sequence): Handle arith_double_operands. Handle
+ loading of labels for pic, need to add a clobber of %o7 (reg 15).
+ (find_addr_reg): Don't return FRAME_POINTER_REGNUM. It is not
+ safe to play around with the frame pointer.
+ (hard_regno_mode_ok): Change from short to int array.
+ (output_pic_sequence, output_pic_sequence_2, fp_zero_hook): Delete
+ long obsolete routines.
+ (print_operand): Delete support for obsolete 'S' and 'H' cases.
+ (output_double_int): New function. Outputs assembler code for 64
+ bit (DImode) values.
+
+ * sparc.md: Fix misc typos and indentation problems.
+ Delete unnecessary (set_attr "type" "binary") lines.
+ Consistently use %a1 in sethi and ori output templates.
+ Consistently use Pmode not SImode for addresses.
+ Consistently use the same predicate for both operand 1 and
+ operand 2 in commutative patterns. Don't use same predicate in
+ non-commutative patterns.
+ Consistently use \; to separate multiple instuctions.
+ Change "r%" to "%r".
+ (define_attr length): Handle arith_double_operand predicate.
+ (movsi): Combine two movsi patterns into one, except for loading
+ of pic labels. New pattern to load pic labels, which clobbers %o7.
+ (movhi): Combine two movhi patterns into one.
+ (movqi): Combine two movqi patterns into one.
+ (movdi): Discourage the Q/f constraint option so that DImode
+ variables won't end up in floating pointer registers.
+ (floatsisf2, floatsidf2): Delete patterns accepting a const_int
+ operand. These should never be matched. In remaining patterns,
+ accept nonimmediate_operand instead of general_operand.
+ (adddi3, subdi3, anddi3, iordi3, xordi3, xnordi3, one_cmpldi2):
+ Accept arith_double_operand predicates and "HI" constraints.
+ (last peephole): Reg 0 should be CCmode not SImode.
+
+ * tm-sparc.h: Fix misc typos.
+ (WORDS_BIG_ENDIAN): Indicate why it must be true.
+ (hard_regno_mode_ok): Change from short to int array.
+ (CONST_DOUBLE_OK_FOR_LETTER_P): Add new 'H' constraint, for DImode
+ constants that can fit in an immediate field.
+ (CONSTANT_ADDRESS_P): Accept any CONSTANT_P, including
+ CONST_DOUBLEs.
+ (LEGITIMATE_CONSTANT_P): Accept CONST_DOUBLEs if match 'H'
+ constaint.
+ (RTX_COSTS): Define cost for FLOAT to be more expensive than
+ CONST_DOUBLEs, so that cse will prefer the latter.
+ (ASM_OUTPUT_DOUBLE_INT): New macro to output DImode constants.
+
+ * sched.c (schedule_block): When calculating register lifetime
+ info, handle CLOBBERs and USEs. The code that adds REG_DEAD notes
+ already handles them.
+ (update_n_sets): New function, subroutine of update_links.
+ Given a SET or CLOBBER, updates reg_n_sets as appropriate,
+ depending on whether this is in a deleted or a new insn.
+ (update_links): Call update_n_sets to subtract info for split
+ insn, and add info for insns resulting from the split.
+
+Mon Sep 30 19:06:50 1991 Michael Meissner (meissner at osf.org)
+
+ * ecoff-cmp (TMP): Fix typo, from jonathan@isor.vuw.ac.nz.
+
+ * mips-tfile.c (toplevel): Don't declare _flsbuf under Silicon
+ Graphics, from jonathan@isor.vuw.ac.nz.
+
+Mon Sep 30 15:54:02 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_process_notes): New function.
+ (cse_basic_block): Call it for each insn.
+ (count_reg_usage): Count usage in a REG_EQUAL note.
+ (delete_dead_from_cse): Call count_reg_usage with insn, not pattern.
+ * loop.c (scan_loop): Replace a register used in a REG_EQUAL note.
+ (find_single_use_in_loop): Two uses in single insn doesn't disqualify.
+ Allow argument to be REG_NOTES.
+ (count_loop_regs_set): Call find_single_us_in_loop on REG_NOTES.
+
+Mon Sep 30 15:47:03 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-call.c (ideal_candidate): Return 0 if the top two candidates
+ have identical rankings but incompatible types.
+
+ * cplus-lex.c (cons_up_default_function): Set DECL_NAME (FN) to
+ NULL_TREE in order to mark the function as being generated by the
+ compiler.
+ * cplus-init.c (emit_base_init): Change to use this interface.
+ * cplus-decl.c (duplicate_decls, redeclaration_error_message): Ditto.
+ (store_parm_decls): Ditto.
+ * cplus-decl2.c (grokclassfn): Ditto.
+ * cplus-dbxout.c (dbxout_type_methods): Ditto.
+ * cplus-class.c (finish_struct_methods): Ditto.
+ * cplus-method.c (fndecl_as_string): Ditto.
+ * cplus-search.c (lookup_fnfields_1): Ditto.
+ (compute_visibility): Ditto.
+ * cplus-typekc.c (build_function_call): Ditto.
+ * cplus-tree.c (lang_printable_name): Ditto. Also use
+ DECL_ASSEMBLER_NAME instead of DECL_NAME in DESTRUCTOR_NAME_P test.
+ * calls.c (expand_call): Change also needed here.
+
+Mon Sep 30 15:31:53 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * dbxout.c: Include <param.h> before config.h, because it may define
+ MIN and MAX.
+
+ * fold-const.c (const_binop): Delete incorrect short cut for
+ (0 - const).
+
+ * expr.c (do_tablejump): Pass GET_MODE (index) instead of Pmode to
+ emit_cmp_insn, because the latter fails when integers and pointers
+ are different sizes.
+
+ * combine.c (subst): When checking to see if associating helps
+ simplify rtl, make sure we pass the constant operand if any as the
+ second one if this is a commutative operation.
+
+ * cccp.c (rescan): Save obufp_before_macroname as an offset from
+ the start of op->buf instead of as a pointer into the middle, in
+ case op->buf gets realloced.
+
+Mon Sep 30 14:07:20 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarfout.c (FUNC_END_LABEL_FMT, TYPE_NAME_FMT): TREE_UID is
+ unique only if the node is TREE_PERMANENT. Augment the spelling
+ of labels using TREE_UID with the TREE_UID of the current function.
+
+ Changes from Ron Guilmette:
+ * dwarfout.c (output_symbol): Deal with formal parameters with an
+ incomplete tagged type.
+ (output_bound_representation): Fix for arrays with dynamic bounds.
+
+ Changes from Jim Wilson:
+ * dwarfout.c: Define strrchr to rindex for non USG systems.
+ Use DECL_BIT_FIELD_TYPE not DECL_BIT_FIELD to test for bitfields.
+
+Sun Sep 29 16:29:08 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.h (indirect_symref_ok): New variable.
+ * reload.c (find_reloads_address): Remove shadowing decls of `tem'.
+ Only allow certain forms addresses as indirect; check
+ indirect_symref_ok to see if (mem (symbol_ref ...)) is a valid
+ address; if not that form or simple, not valid indirect address.
+ * reload1.c (indirect_symref_ok): Define here.
+ (init_reload): Initialize vars used to determine which addrs are valid.
+ (reload): Don't do it here.
+ Update comment to relect what `alter_regs' currently does.
+
+ * tree.h (struct tree_decl): Add new from_inline_flag; delete
+ lang_flag_9 to make room.
+ (DECL_FROM_INLINE): New macro.
+ (DECL_LANG_FLAG_9): Deleted.
+ * c-decl.c, cplus-decl.c (pushdecl): Use DECL_FROM_INLINE instead of
+ TREE_INLINE where appropriate.
+ * cplus-decl.c (finish_decl): Likewise.
+ * integrate.c (integrate_parm_decls, integrate_decl_tree): Set
+ DECL_FROM_INLINE instead of TREE_INLINE.
+ * print-tree (print_node): Print DECL_FROM_INLINE.
+ Delete reference to DECL_LANG_FLAG_9.
+
+Sun Sep 29 12:49:47 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * c-decl.c, c-typeck.c, cplus-decl.c, toplev.c:
+ Set/test TREE_ADDRESSABLE of DECL_ASSEMBLER_NAME, not DECL_NAME for
+ function decls.
+
+ * cplus-class.c: Export `current_lang_stack' and
+ `current_lang_base'.
+ cplus-decl.c (push_overloaded_decl): Allow redeclaration of a
+ function that was previously given a linkage specification at
+ top-level (i.e., not in an explicit linkage arena).
+
+ * cplus-typeck.c (convert_arguments): Strip the `&' from an
+ overloaded function passed as an argument into an ellipses.
+
+Sat Sep 28 15:37:26 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-typeck.c (build_x_binary_op): We have to special-case the
+ failure of MEMBER_REF to be overloaded as an operator.
+
+Sat Sep 28 10:44:36 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): If we find at some point that we need
+ caller-saves, disable elimination of the frame pointer.
+
+ * reload.c (subst_reloads): Re-enable code to prevent making
+ a SUBREG inside a SUBREG.
+
+Sat Sep 28 00:40:51 1991 Ken Raeburn (raeburn@cygnus.com)
+
+ * cplus-pt.c (do_pending_expansions): Adjust "DECIDE" macro to avoid
+ compiler warning from Sun cc.
+
+Fri Sep 27 17:30:39 1991 Per Bothner (bothner at cygnus.com)
+
+ * configure[.in]: Move most of the target_vendor switch
+ entries (e.g. next, sun, sony) from the m88k architecture to m68k,
+ where they belong.
+
+Fri Sep 27 16:21:04 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-search.c (recursive_bounded_basetype_p): Add new parameter
+ UPDATE_CHAIN so that function now behaves as comment prescribes.
+ * cplus-search.c (compute_visibility): Fix error in conversion of
+ data structures from list-based to binfo-based nodes.
+
+Fri Sep 27 07:05:57 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-decl.c (pushdecl): Fix typo: TREE_EXTERNAL misspelled.
+
+Thu Sep 26 17:36:14 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (ASM_FINAL_SPEC): Handle gcc -c -o foo bar.c.
+
+ * tm-decrose.h (ASM_FINAL_SPEC): Handle gcc -c -o foo bar.c.
+
+ * make-decrose (cplus-lex rule): Remove hacks in compiling
+ cplus-lex, since bug in 1.39 inlining was fixed to allow us to
+ compile the module normally.
+
+Thu Sep 26 11:53:49 1991 Ken Raeburn (raeburn@cygnus.com)
+
+ * cplus-tree.h (TEMPLATE_TYPE_*): Use slower versions that uses tree
+ structures more properly, so accessor macros don't lose.
+
+ * cplus-pt.c (end_template_parm_list): For type parameters, make the
+ new decl be the name of the "type".
+
+ * Makefile.in (cplus-tab.{c,h}): There are now 30 s/r conflicts.
+
+ * cplus-class.c (resolves_to_fixed_type_p, case CALL_EXPR): Deleted
+ duplicate code.
+
+ * cplus-decl.c (poplevel): Deleted duplicate code saving info on
+ accesses to external via non-global decls.
+ (pushdecl): For typedef of unnamed type, don't store new name for
+ type if not at global binding scope. Also, don't need to test for
+ TYPE_DECL when previous conditional guarantees it.
+ (start_decl): Clear TREE_PUBLIC flag of templates.
+ (finish_decl): For variables in static storage with constructors,
+ force it into data section (out of common storage) only if the name
+ is externally visible.
+
+ * cplus-gc.c (type_needs_gc_entry): If the type has no base types,
+ don't check to see whether they need gc entries.
+
+ * cplus-parse.y (yyprint): Handle SCSPEC and AGGR.
+
+ * cplus-pt.c (end_template_decl): Clear IDENTIFIER_TYPE_VALUE slots
+ for type parameters, then call adjust_type_value.
+ (instantiate_class_template): Do nothing if classname is
+ error_mark_node.
+ (mangle_class_name_for_template): Make buf a static array, since
+ its address gets returned.
+
+ * reload1.c (reload): Provide array size in cast, to avoid compiler
+ warnings.
+
+ From Niklas Hallqvist:
+ * cplus-tree.h (struct template_info): Added new field "aggr", which
+ will be class_type_node or struct_type_node for class or struct
+ templates.
+ * cplus-parse.y (template_def): Pass current_aggr to
+ end_template_decl.
+ (template_instantiation): Use aggr field.
+ * cplus-pt.c (end_template_decl): Argument IS_CLASS is now a tree,
+ used to set the aggr field.
+ (overload_template_name): Use aggr field.
+
+ Suggested by John Carr:
+ * cplus-dbxout.c (dbxout_tags): Don't omit argument to
+ dbxout_finish_symbol.
+ (dbxout_continue): Omit declaration and definition if
+ DBX_CONTIN_LENGTH is not greater than zero, like its calls.
+ (print_int_cst_octal): Ditto, based on defined(WINNING_GDB).
+ * cplus-decl.c (GNU_end_scope): Never used; deleted.
+ (pushdecl): Vars nglobals, len are used only in code under "#if 0";
+ comment out decls as well.
+ * cplus-gc.c (expand_gc_prologue_and_epilogue): Variable "head" was
+ unused; deleted.
+ * cplus-init.c (expand_aggr_vbase_init_1): All args are type tree.
+ (expand_vec_init): Don't return without a value when "initializer
+ ends prematurely".
+ * cplus-method.c (build_overload_nested_name): Pass all necessary
+ arguments in recursive call.
+ * cplus-search.c (pop_type_level): Cast argument to pop_stack_level
+ to proper type.
+ (push_memoized_context): Ditto for push_type_level.
+ (my_copy_node): Unused; deleted.
+ (lookup_fnfields): Add missing arg to get_binfo.
+ (lookup_field): Ditto.
+
+ From Niklas Hallqvist:
+ * cplus-decl.c (push_to_top_level): Handle case of function with
+ unnamed parms.
+ (pop_from_top_level): Ditto.
+
+Thu Sep 26 07:46:08 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * loop.c (scan_loop): Don't eliminate register that is set by
+ consecutive insns.
+
+Wed Sep 25 18:53:52 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (pushdecl): Suppress warnings about mismatch of
+ extern decl when it comes from inlining a function.
+
+ * emit-rtl.c (set_new_first_and_last_label_number): New function.
+ (max_label_num): Use last_label_num if valid.
+ * integrate.c (output_inline_function): Call set_new_...
+
+Wed Sep 25 18:37:36 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (find_auto_inc): Set BLOCK_NUM of new insns emitted while
+ making an auto-inc.
+
+ * Makefile.in (getopt*.o): Each file depends on its .c file and on
+ the compiler executable files.
+
+Wed Sep 25 18:18:46 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (debug_info_level): New variable.
+ * flags.h (debug_info_level, enum debug_info_level): New declarations.
+ * toplev.c (main): Rewrite handling of -g* and -G* options.
+ Now -G indicates use of GDB extensions. -g0 removed.
+
+Tue Sep 24 03:20:07 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * alloca.c: Test __STDC__, not X3J11.
+ Do nothing if alloca is defined as a macro.
+
+Tue Sep 24 09:15:17 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * global-alloc.c (eliminable_regset): New variable.
+ (global_alloc): Compute it and use to turn off conflicts.
+ Refine computation of no_global_alloc_regs when ELIMINABLE_REGS is
+ defined.
+ (mark_elimination): Don't do anything with allocnos and don't do
+ any allocation.
+
+ * reload1.c (eliminate_regs_in_insn): Try to re-recognize insn if
+ we replaced a (set X (plus Y Z)).
+
+Tue Sep 24 06:34:04 1991 Michael Tiemann (tiemann at mole.gnu.ai.mit.edu)
+
+ * cplus-tree.c (virtual_member): Change TREE_VALUE accessor macro to
+ BINFO_TYPE.
+ * tree.h (BINFO_TYPE): New name for BINFO_VALUE.
+ * All cplus-* files: Changed to reflect new name.
+
+Mon Sep 23 12:56:11 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (ASM_SPEC): Fix typo, and close {}'s properly.
+
+Mon Sep 23 10:30:51 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-tree.c (propagate_assoc_offsets): Keep relative offsets of
+ child_child correct when copying children.
+
+ * cplus-class.c Use `BINFO_VALUE' instead of `TREE_VALUE' when
+ accessing the type value of a binfo node.
+ * cplus-decl.c (finish_function): Ditto.
+ * cplus-init.c (build_vbase_delete): Ditto.
+
+Mon Sep 23 06:11:56 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (reg_n_refs): Use int, not short. Short can overflow
+ if we have very deep loop nesting.
+ (allocate_for_life_analysis): Allocate reg_n_refs as int.
+ * regs.h (reg_n_refs): Now int.
+ * sched.c: Delete duplicate definitions of objects defined in regs.h.
+
+ * combine.c (try_combine): Correctly check for independent insns
+ in a PARALLEL.
+
+ * combine.c (distribute_note, case REG_DEAD): If we discover a register
+ is never used, see if we can delete the insn that set it.
+
+Sun Sep 22 19:24:52 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-type2.c (build_functional_cast): Don't forget a valid
+ function call if we found one (and nothing more).
+
+Sun Sep 22 07:48:18 1991 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (rtx_varies_p, case REG): Correct typo; sense of comparison
+ was backwards.
+
+ * global-alloc.c (mark_elimination): Don't use HARD_REG_SET macros
+ to access basic_block_live_at_start.
+
+ * reload1.c (set_label_offsets): New function.
+ (offsets_known_at, offsets_at): New variables.
+ (reload): Allocate and initialize them.
+ Set each label in FORCED_LABELS to be at initial offsets.
+ Call set_label_offset on all insns that might involve labels.
+ Use GET_RTX_CLASS when appropriate.
+ (eliminate_regs, mark_not_eliminable): Ignore sets of FP when looking
+ for sets of a "to" register.
+ (eliminate_regs_in_insn): No longer suppress elimination for any
+ pair not at its initial offet at a jump.
+
+ * combine.c (distribute_links): Correctly find the place to put a
+ link. Handle the case when we eliminate all uses of something that
+ we used to use; in that case, we must seach forward.
+ No longer need I3, I2, or ALL_ADJACENT arguments.
+ (try_combine): Change calls to distribute_links.
+
+ * reload.c (find_equiv_reg): Use GET_RTX_CLASS when appropriate.
+ If GOAL is a MEM whose address varies, check whether registers
+ that are SET appear in the address rather than assuming they do.
+ Ensure REG_INC note is a REG; ignore it if not.
+
+ * rtlanal.c (rtx_varies_p): Rework to use switch statement.
+ Check for {frame,arg}_pointer_rtx, not just register number.
+ (rtx_addr_can_trap_p): New function.
+ (may_trap_p): Use rtx_addr_can_trap_p instead of rtx_varies_p.
+ * genattrtab.c: Define {frame,arg,stack}_pointer_rtx for rtlanal.c.
+
+ * combine.c (make_extraction): Make a ZERO_EXTRACT for something with
+ pos == 0 if it will be placed in a SET_DEST.
+
+ * expmed.c (expand_shift): Rotate case was missing return statement.
+ extzv case had wrong arg to delete_insns_since.
+ Remove unneeded calls to delete_insns_since.
+ Allow BITS_BIG_ENDIAN to vary at run-time.
+ Use variable TEMP in a consistent manner.
+ Other miscellaneous changes and cleanups were made.
+
+ * flow.c (max_uid_for_flow): New variable.
+ (flow_analysis): Compute maximum uid into max_uid_for_flow; if
+ we might have auto-inc, leave some space.
+ (find_auto_inc): Verify that the uid's of the insns we make are
+ within the allocated space of our per-insn tables.
+ Use get_insns instead of gen_sequence.
+
+ * global-alloc.c (retry_global_alloc): When we allocate a register,
+ update regno_reg_rtx and mark the allocated register live.
+ (mark_elimination): New function.
+ * reload1.c (reload): Call mark_elimination for every elimination
+ we have been able to do.
+ (spill_hard_reg): No longer need to call mark_home_live.
+
+Sun Sep 22 02:07:55 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Redirect cmp output to /dev/null; don't close it.
+
+ * varasm.c (assemble_function): Handle ASM_OUTPUT_FUNCTION_PREFIX.
+
+ * final.c (final_scan_insn): No need to goto text section
+ for label on jump table. We're normally in the text section.
+
+Sat Sep 21 14:59:32 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Fix typo in code that decides if bison needs to be
+ run. Also, display a message when building the compiler that informs
+ the user about the need to update the assembler.
+
+Sat Sep 21 17:23:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (struct movable): Add field DEPENDENCIES.
+ (scan_loop): Remove mechanism based on REG_TO_FORCE and
+ MOVABLE_TO_FORCE. Replace with use of new field.
+ Optionally allocate and initialize reg_single_usage and pass it to
+ count_loop_regs_set.
+ If an invariant register is used exactly once and this is a loop
+ that has a CALL_INSN, try to substitute the definition of the register
+ into its use.
+ (record_excess_regs): Fix typo in sense of checking in NOT_IN_THIS;
+ only check pseudo-regs.
+ (libcall_other_reg): Always return the list of registers used,
+ no matter how many there are.
+ (combine_movable): Only combine two movables if they have the same
+ dependencies.
+ (move_movables): Can only move something if its dependencies have
+ already been moved.
+ (find_single_use_in_loop): New function.
+ (count_loop_regs_set): Delete code that prevents moving a reg that
+ is used as a function address.
+ Call find_single_use_in_loop when required.
+
+Sat Sep 21 16:28:34 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_unary_op):
+ Handle const and volatile lvalues correctly in ADDR_EXPR.
+
+ * output.h (current_function_contains_functions):
+ Just declare it, don't define it.
+
+ * cse.c (exp_equiv_p): New arg EQUAL_VALUES. All callers changed.
+
+Sat Sep 21 12:59:15 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-parse.y (object_star): New rule.
+ (POINTSAT_STAR): New token.
+ * cplus-lex.c (init_lex): Define entry for MEMBER_REF.
+ GNU C++ now overloads `operator->*' according to ARM semantics. It
+ no longer attempts to implement operator->* as two distinct
+ operations.
+
+Fri Sep 20 18:08:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst): Don't replace a CC0 or a PC in a SET_DEST if
+ FROM is the same thing.
+
+ * combine.c (simplify_shift_const): Compute SHIFT_MODE at start of
+ loop and use its width, rather than width of RESULT_MODE, when checking
+ shift count.
+
+Fri Sep 20 10:55:55 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-pt.c (uses_template_parms): Handle COMPONENT_REF case.
+
+Fri Sep 20 00:27:43 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_modify_expr): When assigning to a cast,
+ convert value first to the type being cast to.
+ (build_unary_expr): Disallow adress of a cast.
+
+ * explow.c (allocate_dynamic_stack_space):
+ Handle SETJMP_VIA_SAVE_AREA before rounding to STACK_BOUNDARY.
+
+Thu Sep 19 21:13:17 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (dist, gcc-*.tar, gcc-*.tar.Z): New targets.
+
+ * jump.c (jump_optimize): In handling `if (...) x = a; else x = b;',
+ don't crash if scan reaches start of insns.
+
+ * Makefile.in (protoize): Link with getopt.o and getopt1.o.
+ (unprotoize): Likewise.
+ (protoize.o): Depend on getopt.h. Pass -D options for include dirs.
+ (unprotoize.o): Likewise.
+ (getopt.o, getopt1.o): New targets.
+
+ * protoize.c: Major rewrite by RFG and RMS.
+
+Thu Sep 19 09:58:25 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ Changes from Ron Guilmette:
+ * dwarfout.c: Keep track of next_block_number correctly.
+ * final.c (final_scan_insn): Don't invoke dwarfout_{begin,end}_block
+ for the outermost block of a function.
+
+Thu Sep 19 06:16:34 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (copy_replacements): New function.
+ * optabs.c (gen_move_insn): Don't call gen_lowpart while reloading
+ is in progress; it calls change_address, which wants to make pseudos.
+
+ * combine.c (subst, case SET): Fix typo in last change.
+
+ * combine.c (distribute_notes): When searching back for a place that
+ uses a register marked REG_DEAD, check for set and reference separately
+ since reg_overlap_mentioned_p doesn't check SET_DEST.
+
+ * combine.c (simplify_shift_const): Correct handling of shift counts
+ that become out-of-range.
+
+ * combine.c (expand_field_assignment): Don't allow sharing the RTL
+ for the inner object.
+
+ * combine.c (can_combine_p, try_combine, record_value_for_reg): Use
+ reg_overlap_mentioned_p instead in reg_mentioned_p in most places.
+ (distribute_notes, distribute_links): Likewise.
+ (combinable_i3pat): New function, from try_combine.
+ (try_combine): Default I1DEST and I1SRC to zero.
+ New var I1_FEEDS_I3.
+ Delete code to validate I3's pattern from here; call combinable_i3pat
+ instead.
+ If a substitution returns a (clobber (const_int 0)), stop immediately.
+ Don't abort if substitution made new regs; just don't do combine.
+ (subst): If IN_DEST, don't replace a matching object.
+ Don't look at a REG as a SET_DEST.
+ If substitution inside a PARALLEL fails, give up immediately.
+ Return (clobber (const_int 0)) even for a SET whose operand fails.
+ (subst, case SET): Correctly test for low-order SUBREG.
+ Don't use gen_lowpart_for_combine; make SUBREG explicitly since it
+ can't handle modes larger than a word.
+
+ * combine.c (subst, case NOT): Code for (not (ashiftx ..)) was too
+ general; only handle (not (ashift 1 X)).
+ (subst, case NEG): Handle (neg (ashift ...)).
+ (merge_outer_ops): Support NEG.
+ (simplify_shift_const, case NEG): Handle (ashift (neg ...)).
+
+ * cse.c (simplify_binary_operation, case ROTATE, ROTATERT):
+ Rotating all one bits is just all ones.
+
+Thu Sep 19 01:08:14 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-parse.h, cplus-decl.h: Remove trailing comma after the last
+ enum value in enum declarations.
+
+ * cplus-type2.c (digest_init): Set TREE_PURPOSE of union initializer
+ when initializing a union by the first field.
+
+ * cplus-method.c (fndecl_as_string): Test whether DECL_CLASS_CONTEXT
+ is NULL before using it.
+ (dump_aggr_type): New function. Print aggr type's context when
+ appropriate.
+ (dump_type{_prefix}): Use `dump_aggr_type' to print ENUMERAL_TYPE,
+ UNION_TYPE, and STRUCT_TYPE types.
+
+ * cplus-decl.c (start_decl): Don't use DECL_CLASS_CONTEXT if DECL
+ has no DECL_LANG_SPECIFIC.
+
+Wed Sep 18 21:46:32 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (cur_proc_value): New static to remember the starting
+ location of the current function.
+ (add_procedure): Save current procedure location.
+ (parse_begin, parse_bend): Subtract cur_proc_value from location.
+ (parse_bend): Correct error messages.
+ The above changes are from bothner@cygnus.com.
+
+ * tm-mips.h (ASM_FINAL_SPEC): Use -mno-mips-tfile to suppress
+ invoking mips-tfile, instead of using -g0. If -save-temps, preserve
+ the original .o file before mips-tfile is called. Pass the correct
+ name for the assembler file.
+ (MASK_MIPS_TFILE): New mask for -mmips-tfile, -mno-mips-tfile, set
+ to 0, since that switch is handled entirely in ASM_FINAL_SPEC.
+ (TARGET_FLAGS): Add -mmips-tfile, -mno-mips-tfile switches.
+ (MUST_SAVE_REGISTER): Allow $30 to be saved, even if not being used
+ as the frame pointer.
+
+ * tm-decrose.h (ASM_FINAL_SPEC): Use -mno-mips-tfile to suppress
+ invoking mips-tfile, instead of using -g0. If -save-temps, preserve
+ the original .o file before mips-tfile is called. Pass the correct
+ name for the assembler file.
+
+Wed Sep 18 18:54:15 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-*.c: Use DECL_CLASS_CONTEXT to figure out where a (static or
+ non-static) member function is declared, rather than trying to
+ divine the info from TYPE_METHOD_BASETYPE of the function's type.
+
+Wed Sep 18 15:38:52 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (grokdeclarator): Error if nested function is extern.
+
+Wed Sep 18 02:41:08 1991 Per Bothner (bothner at cygnus.com)
+
+ * cplus-typeck.c (convert_arguments): Don't crash if the
+ formal parameter type is unknown (type==NULL) and the
+ actual is a function. Do the default instead.
+
+Tue Sep 17 22:33:30 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (check_format):
+ No warning if types match except for signedness.
+
+Tue Sep 17 10:56:46 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-decl.c (pushtag): When creating a TYPE_DECL that's in class
+ scope, allocate the space needed for DECL_CLASS_CONTEXT.
+
+ * cplus-search.c (get_abstract_virtuals): If the BASE is not on the
+ main spine, look at the virtuals that come from the most derived
+ class that has BASE on its main spine.
+ * cplus-tree.h (VF_*): New macros for dealing with VFIELDS.
+
+Mon Aug 16 12:09:32 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make.com: Fix typo.
+
+Tue Sep 17 15:13:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-common.c (shorten_compare): Always compute args with side effects.
+
+ * varasm.c (decode_addr_const): Use SYMBOL_REF unchanged in 1st switch.
+
+ * varasm.c (output_addressed_constants): Handle a CONSTRUCTOR in
+ an ADDR_EXPR correctly.
+
+ * cccp.c (rescan): For unterm string, mention lineno of first newline.
+
+ * fold-const.c (fold): Call optimize_bit_field_compare in constant case
+ even if not optimizing.
+
+ * c-decl.c (finish_function): Don't clear DECL_INITIAL if nested.
+ (pop_c_function_context): Do it here instead.
+
+Tue Sep 17 11:30:32 1991 Michael Meissner (meissner at osf.org)
+
+ * collect-osf.c (scan_prog_file): Recognize alternate forms for the
+ constructor and destructor names.
+
+ * osf-main.c (_entry): Provide an alternative function (_entry) to
+ start up the static constructors/destructors.
+
+Mon Sep 16 05:35:21 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_shift_const): Correct errors involving modes
+ to use for shift.
+
+Sun Sep 15 19:13:58 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_as_needed): Remove code that deletes insns that
+ create equivalences.
+ (reload): Put it here so it is executed even if reload_as_needed
+ isn't called.
+
+Sun Sep 15 17:13:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (GNULIB2_CFLAGS): Include GCC_CFLAGS.
+ (ENQUIRE_CFLAGS): Likewise (in place of plain CFLAGS).
+
+ * genattrtab.c (main): Don't index by id->insn_code if negative.
+
+ * genrecog.c (write_tree_1): Avoid pos[depth-1] if depth is 0.
+
+Sun Sep 15 15:19:16 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make.com: Modify to allow direct submission to a batch queue.
+ Also, add instructions to build GNU C++ as well as GNU CC.
+
+ * cccp.c (hack_vms_include_specification): If [000000] is present in
+ (implying a physical device or a rooted logical) try to open it.
+ If the open fails, then remove the [000000] (making the name suitable
+ for use with a non-rooted logical name) and return that.
+
+Sun Sep 15 15:12:41 1991 Michael Meissner (meissner at osf.org)
+
+ * make-mips (Makefile): Remove rule building Makefile, since
+ Makefile.in now has one.
+
+ * make-decrose (Makefile): Remove rule building Makefile, since
+ Makefile.in now has one.
+
+Sun Sep 15 14:12:47 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makeflags (SYSCALLS.c.X): Use CPPFLAGS and INCLUDES.
+
+Sun Sep 15 12:03:35 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * cplus-decl.c (poplevel): Match change made to c-decl.c on Oct 3,
+ 1989.
+
+Sun Sep 15 06:52:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * caller-save.c (save_call_clobbered_regs): Deaden registers mentioned
+ in REG_UNUSED notes.
+ (clear_reg_live): Verify that note refers to a REG.
+ (choose_hard_reg_mode): Rewrite to not use specific modes and to
+ handle the case where separate CCmode registers exist.
+
+Sat Sep 14 13:03:29 1991 Michael Tiemann (tiemann at cygnus.com)
+
+ * all cplus-* files: Change {ASSOC,assoc} to {BINFO,binfo} where
+ appropriate.
+ cplus-tree.h, tree.h: Change name of CLASSTYPE_ASSOC to TYPE_BINFO.
+ Change names of CLASS_ASSOC_* to TYPE_BINFO_*.
+ all cplus-* files: FUNCTION_DECLs that are class methods now have
+ their DECL_VCONTEXT stored in the DECL_CONTEXT.
+ (lang_decl): The VCONTEXT field is now gone.
+ (lang_decl): _DECL nodes in class scope now record the class as a
+ context in the DECL_CLASS_CONTEXT field.
+ tree.h (TYPE_BINFO): Renamed TYPE_BASETYPES to this.
+ dbxout.c (dbxout_type): User of TYPE_BASETYPES changed.
+ (BINFO_{VALUE,OFFSET,VTABLE,VIRTUALS,BASETYPE{S}}): New macros
+ inherited from GNU C++.
+ (DECL_{VINDEX,FCONTEXT}): Ditto.
+ (TREE_VIA_{PUBLIC,VIRTUAL}): Ditto.
+
+Sat Sep 14 09:14:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (reg_set_p): Remove abort for MEM; reg_overlap_mentioned_p
+ now handles that case correctly.
+ REG is set if it is really a MEM and this is a CALL_INSN.
+
+Sat Sep 14 01:34:39 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (vax-ultrix*): New alternative.
+
+ * reload1.c (choose_reload_regs): Always ignore cancelled reloads.
+
+ * real.h (atof): Alternate declaration on MIPS.
+
+Thu Sep 12 18:55:06 1991 Torbjorn Granlund (tege at mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop): Fix carry propagation code for multiple
+ words.
+
+ * tm-*.h: Fix systematic typo in comment.
+
+Thu Sep 12 18:23:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gvarargs.h, va-mips.h, va-sparc.h (_va___list): Was __va_list.
+
+Thu Sep 12 12:53:36 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
+
+ * cpp.texinfo: (titlepage) use @title/@subtitle/@author
+ (copyright page) add note re future C manual; add 1991 to copyrights
+ (general) prepare for easy @smallbook formatting; clarification on
+ strings; less passive; add AMD29K predefined macros; update -d refs,
+ add -dM; add examples; add -pedantic-errors; add -MD, -MMD, -H; fix
+ minor typos.
+
+Thu Sep 12 07:58:11 1991 Torbjorn Granlund (tege at mole.gnu.ai.mit.edu)
+
+ * m68k.md (umulsidi3, mulsidi3): New DEFINE_EXPANDs and DEFINE_INSN
+ recognizers.
+
+Wed Sep 11 22:11:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.md, romp.md: Update calling sequence to emit_no_conflict_block.
+
+Wed Sep 11 21:06:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (const_binop): Fix last change for ceil and round.
+
+ * gvarargs.h, va-mips.h, va-sparc.h (va_list): Now a macro again.
+ (__va_list): This is the typedef.
+
+Wed Sep 11 16:52:20 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op_nodefault, RSHIFT_EXPR): Change
+ "shift count" warnings changed to errors back to warnings.
+
+ * cse.c (canon_hash): Also do not record global_regs if
+ SMALL_REGISTER_CLASSES. Makes the code match the comment.
+
+ * cexp.y (yylex): Add sprintf call to create error message,
+ because yyerror does not call *printf itself.
+
+ * gcc.c (default_compilers): Support new option -traditional-cpp,
+ which passes traditional to cpp, but not to cc1.
+ * gcc.texinfo: Document it.
+
+ * sched.c (INSN_LUID): New variable. Give instructions logical
+ numbers, which can be used when sorting, to make the scheduling
+ algorithm more stable.
+ (sched_analyze): Initialize it.
+ (rank_for_schedule): Sort on it.
+ (schedule_insns): Alloca(te) it and (b)zero it.
+ (priority): New priority algorithm. Don't include latency of
+ current insn, and subtract one from total priority calculated.
+ Makes the scheduling algorithm more stable, and doesn't hurt
+ performance.
+
+ * sched.c (swap_sort): Must pass &insn to rank_for_schedule, not a
+ pointer into the array being sorted.
+
+ * cplus-lex.c (do_identifier): Put function return type on
+ preceeding line.
+
+Wed Sep 11 05:51:00 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-typeck.c (build_binary_op_nodefault): If OP0 or OP1 is a
+ zero pointer, canonicalize it to NULL_POINTER_NODE.
+
+ * expr.c (preexpand_calls): Don't preexpand calls inside a
+ WITH_CLEANUP_EXPR. The gestalt of a WITH_CLEANUP_EXPRs must be
+ understood at the top level.
+
+ * cplus-tree.c (build_cplus_new): When building cleanup, make
+ the call to the cleanup nonvirtual.
+
+Tue Sep 10 20:28:56 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (const_binop): Shortcut for dividing single-word
+ sizes
+
+ * Makefile.in (varasm.o): Depend on insn-codes.h.
+
+Tue Sep 10 19:29:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * optabs.c (expand_binop): Try to open-code muldi3 if we have mulsi3
+ and mulsidi3. Idea due to tege@sics.se.
+
+ * cse.c (fold_rtx, case MEM): Don't call find_best_addr when insn == 0.
+ Pass 0 to recursive call that tries to fold the address.
+
+Tue Sep 10 18:16:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * m68k.md (fix_trunc*): Call CC_STATUS_INIT, since these patterns
+ do not leave the condition codes in the expected state.
+
+ * tm-ultrix.h (CPP_PREDEFINES): Add __vax.
+
+Tue Sep 10 04:12:53 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-decl.c (finish_decl): Fix bug where the conversion from
+ WITH_CLEANUP_EXPR -> init/cleanup pair was not setting bits of
+ CURRENT_BINDING_LEVEL.
+ (init_decl_processing): Set FLAGS_THIS_IS_VARIABLE before calling
+ `init_exception_processing'.
+
+Mon Sep 9 22:09:27 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-tree.h (prev_class_type): Delete this bogus definition.
+
+ * cplus-class.c (instantiate_type): Don't complain about no static
+ member functions being found until we have been through all the
+ baselinks.
+
+ * cplus-dbxout.c (dbxout_type_methods): Don't write symbol
+ information about methods that were generated by the compiler.
+ (??? Is this really the right thing to do?)
+
+ * cplus-decl2.c (lang_decode_option): Turn on warn_uninitialized if
+ -Wall is the argument.
+
+Mon Sep 9 19:05:01 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): For .S files, pass -traditional not
+ -ftraditional to cpp.
+
+Mon Sep 9 15:01:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (optimize_bit_field_compare): Distinguish NE from EQ.
+
+ * explow.c (allocate_dynamic_stack_space):
+ Handle SETJMP_VIA_SAVE_AREA by allocating extra space.
+
+ * cplus-parse.y (empty_parms): Change inline to __inline.
+
+Mon Sep 9 15:16:24 1991 Torbjorn Granlund (tege at zevs)
+
+ * longlong.h (m68000 umul_ppmm): Clobber one register less by
+ slightly rearranging the code.
+
+Sun Sep 8 16:47:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (main, fatal): Delete the deps output file if error.
+ (deps_file): New variable.
+
+ * expr.c (convert_move): Update call to emit_no_conflict_block.
+
+ * expmed.c (CEIL): New macro.
+
+ * optabs.c (expand_binop): Don't do add by words for more than 2 words.
+
+ * c-typeck.c (build_modify_expr): Test TREE_READONLY of lhs.
+
+Sun Sep 8 01:17:47 1991 Torbjorn Granlund (tege at zevs)
+
+ * sparc.md (sgtu, sleu): Test for SUBREG as well as REG.
+
+Sun Sep 8 07:04:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * optabs.c (emit_no_conflict_block, emit_libcall_block): Rework to
+ accept a list of insns rather than a SEQUENCE.
+ (expand_binop, expand_unop, expand_float, expand_fix): Change calls to
+ above functions.
+ * emit-rtl.c (add_insn): No longer static.
+ * calls.c (expand_call): Change call to emit_libcall_block.
+
+ * cse.c (fold_rtx): Fix typo with parens in associative operation case.
+
+Sat Sep 7 21:49:46 1991 Jim Wilson (wilson at cygint.cygnus.com)
+
+ * expmed.c (store_bit_field): In the code handling bitfields
+ larger than the word size: set fieldmode to size large enough
+ to hold bitfield; new variable orig_bitsize; don't let
+ bit_offset calculation for WORDS_BIG_ENDIAN hosts go negative.
+ (extract_bit_field): Likewise.
+ (store_split_bit_field): For second word, strip of SUBREG if any
+ before calling operand_subword. Offset for second word if in
+ memory is the next UNITS_PER_WORD aligned address.
+ (extract_split_bit_field): Likewise.
+
+ * expr.c (emit_move_insn): When emitting multiple move insns in
+ the loop, remember last insn emitted so that it can be returned.
+
+ * tree.c (enum tree_node_kind): Add new entry vec_kind to
+ represent TREE_VECs.
+ (tree_node_kind_names): Add name "vecs" for it.
+ (make_node): Handle TREE_VECs in the 'x' case.
+ (make_tree_vec): Use vec_kind instead of x_kind.
+
+Sat Sep 7 16:25:50 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-call.c (ideal_candidate): Prefer non-const member functions
+ to const member functions when there is a choice.
+ * cplus-tree.c (propagate_assoc_offsets): Moved here from
+ cplus-class.c
+ (copy_nonvirtual_children): Deleted.
+
+ * cplus-class.c, cplus-tree.c (layout_{v}basetypes,
+ propagate_assoc_offsets, finish_base_struct): New offset
+ computation/hierarchy implementation. Now the lattice contains
+ vbasetypes with zero-based offsets (and children from these types
+ assume they are zero-based). The CLASSTYPE_VBASETYPE list contains
+ vbasetypes with hierarchy-dependent offsets (and children from these
+ types have hierarchy-dependent offsets). Note that now, virtual
+ baseclasses are fully shared in the hierarchy. The still are not
+ shared at all in the CLASSTYPE_VBASETYPE list.
+ * cplus-decl.c (xref_tag): Share vbasetypes in the lattice.
+ * cplus-tree.h (lang_type): Add CLASSTYPE_VASSOC field so we can
+ share virtual basetypes in inheritance lattices.
+
+Sat Sep 7 13:07:12 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-parse.y (cast_expr): Supply OFWHAT arg to digest_init.
+ * c-typeck.c (error_init, pedwarn_init): New functions.
+ (digest_init, process_init_constructor): Use them.
+
+ * out-m68k.c (output_function_prologue): Add a negative constant
+ to sp rather than adding a positive one, since this is faster.
+
+ * out-m68k.c (output_function_prologue, output_function_epilogue):
+ Use word sized immediates when possible.
+
+ * Makefile.in (install-dir): Don't die if can't create mandir.
+ (install-man): Don't put . in front of manext.
+ (manext): Add . to the value.
+ (mandir): Don't use manext.
+
+ * genextract.c (main): Don't use __builtin_memcpy in GCC 1.
+
+Fri Sep 6 19:29:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * caller-save.c (emit_mult_save, emit_mult_restore): Copy constant to
+ TEMPREG and add integer, instead of the opposite order, which might
+ not work on some machines.
+
+ * fold-const.c (fold): Ensure we always return an object of the
+ desired type.
+
+ * reload1.c (reload, reload_as_needed): reload_in_progress must be
+ set during caller-save processing.
+
+Fri Sep 6 18:36:55 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * out-sparc.c (leaf_reg_{remap,backmap}): Define mapping for
+ %o7/%i7, since user-defined registers might reference these.
+ (legitimize_pic_address): Set CURRENT_FUNCTION_USES_PIC_OFFSET_TABLE
+ if ORIG is a LABEL_REF. For CONST_INT case, don't call force_reg
+ during reload, use REG if available otherwise abort.
+
+Fri Sep 6 17:16:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * configure: Default $cpu_type properly.
+
+Fri Sep 6 05:50:58 1991 Ken Raeburn (raeburn at watch.com)
+
+ * genextract.c: Generate one large function with a switch, instead
+ of a table of small functions to call. Use __builtin_memcpy under
+ GNU C.
+
+ * genoutput.c: For "@" constructs, now generates a lookup table per
+ insn, instead of a switch.
+
+Fri Sep 6 15:40:54 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * cccp.c (skip_if_group): Deal with invalid directives the same
+ way handle_directive does.
+
+Fri Sep 6 16:37:04 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * tm-sparc.h (RTX_COSTS): Define costs for MULT and various divides.
+
+ * loop.c (move_movables): Call `gen_lowpart_common' instead of
+ building SUBREG manually.
+
+ * local-alloc.c (block_alloc): When convert scratch to a reg, must
+ set regs_ever_live for all hard registers used by the new reg, not
+ just the first.
+
+Fri Sep 6 07:15:44 1991 Torbjorn Granlund (tege at mole.gnu.ai.mit.edu)
+
+ * gnulib2.c (__negdi2): Change it to work like __subdi3.
+ * gnulib2.c (_udivmoddi4): Make faster special case for CPUs with
+ a udiv_qrnnd that can handle unnormalized (i.e. with less than
+ LONG_TYPE_SIZE significant bit) divisors.
+
+ * gnulib2.c (__muldi3): Cast operands to unsigned.
+
+ * gnulib2.c (__Xcmpdi): Use `long' for all variables for
+ consistency.
+
+ * gnulib2.c (__udivmoddi4): New function with code from __udivdi3,
+ extended to give remaider.
+ * gnulib2.c (__divdi3, __moddi3, __udivdi3, __umoddi3): Use
+ __udivmoddi4.
+ * gnulib2.c: (__moddi3): Result sign is only dependent on U, not V.
+
+Fri Sep 6 05:44:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Accept new arg IN_LIBCALL_BLOCK.
+ If in libcall block, don't record destinations in hash table.
+ Remove explicit use of SFmode and DFmode when checking -ffloat-store.
+ (cse_basic_block): Pass new arg to cse_insn to indicate when we
+ are processing an insn surrounded with REG_LIBCALL/REG_RETVAL notes.
+
+ * optabs.c (emit_libcall_block): New function.
+ (expand_binop, expand_unop): Remove kludge of referencing library
+ function SYMBOL_REF before libcall block.
+ Use emit_libcall_block.
+ (expand_float, expand_fix): Rework library calls to use
+ emit_libcall_block.
+ * calls.c (struct arg_data): Add new field, initial_value.
+ (expand_call): Don't make libcall block for calls that return
+ aggregates.
+ Remove kludge of referencing function SYMBOL_REF outside of block.
+ For constant calls, save RTL for arg in args[i].initial_value and
+ start a sequence.
+ When making REG_EQUAL note, use INITIAL_VALUE instead of VALUE.
+ Use emit_libcall_block for constant calls.
+ * expr.h (emit_libcall_block): Define it.
+
+Fri Sep 6 15:58:52 1991 Torbjorn Granlund (tege at zevs)
+
+ * longlong.h (68020, i386): Don't define machine-dependent
+ __umulsidi3 (so the default definition is used).
+ * longlong.h (all machines): Cast all operands, sources and
+ destinations, to `unsigned long int'.
+ * longlong.h: Add gmicro support.
+
+Fri Sep 6 01:42:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * jump.c (jump_optimize): Delete duplicate line number notes.
+
+Thu Sep 5 19:23:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * configure (romp): Fix typo in name of xm_file.
+
+ * rtlanal.c (dead_or_set_p): If INSN has a CLOBBER for X, X is
+ dead.
+
+ * gnulib1.c (cmpdf2, cmpsf2): Delete unused functions.
+ * gnulib2.c (anddi3, iordi3, xordi3, one_cmpldi2, adddi3, subdi3):
+ Likewise.
+ * optabs.c (emit_cmp_insn): Clean up code now that integer and
+ float comparisons are done differently.
+ (init_optabs): Remove references to unused functions listed above.
+ * Makefile.in (LIB1FUNCS, LIB2FUNCS): Likewise.
+
+Thu Sep 5 18:32:27 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * m68k.md (zero_extend*): Don't allow memory-memory due to aliasing.
+
+ * expr.c (do_jump): Don't lose if only 1 insn precedes new jump.
+
+ * sparc.md (ashldi3): Fix dumb bug detecting constant 1.
+
+ * out-sparc.c (output_move_double): Use split_double for constant.
+ Properly decrement addreg1.
+
+Thu Sep 5 15:20:25 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * out-sparc.c: Include expr.h and delete extern declarations.
+
+ * rtlanal.c (rtx_equal_p): Correct typo in comment or spacing.
+ * reload1.c (reload): Likewise.
+ * protoize.c: Likewise.
+ * longlong.h: Likewise.
+ * local-alloc.c (block_alloc): Likewise.
+ * jump.c: Likewise.
+
+ * unroll.c (iteration_info): Don't calculate loop iterations based
+ on a giv iterator, since the current code often gives the wrong
+ result. This case is rare, so it does not seem worth handling at all.
+
+ * sched.c (schedule_insns): When the only sched pass is after
+ reload, must clear unused_insn_list and unused_expr_list then,
+ instead of during the nonexistant pass before reload.
+
+ * sched.c (schedule_block): When calculating estimated IPC, avoid
+ divide by zero.
+
+ * sparc.md: Correct two define_splits for seq/sne patterns of the
+ form `x + (i == 0)', and add a missing `addx' pattern used by
+ these define_splits.
+
+ * toplev.c (fatal_insn_not_found): Correct typo in error message.
+ (main): Include "gsdb" and "gdbx" in warning message when -g is not
+ supported.
+
+ * expr.h (enum expand_modifier): Delete last vestige of
+ EXPAND_INTO_STACK.
+
+Thu Sep 5 13:50:21 1991 John Gilmore (gnu at cygint.cygnus.com)
+
+ * c-typeck.c (digest_init, process_init_constructor): Include the
+ variable name, member name, and/or array indices in error messages.
+ This makes it tolerable to debug large data structure initializers.
+ Reword some messages to work with the name and/or function call
+ argument included. New arg OFWHAT. All callers changed except
+ one digest_init call in each of c-parse.y and objc-parse.y.
+ (warn_for_assignment): Reduce to a single message argument,
+ automatically handling formatting for function call arguments.
+ All callers changed.
+ (convert_for_assignment): If ERRTYPE is a null string, this is
+ parameter passing for a function, so output different error messages.
+ (convert_arguments): Pass null string to convert_for_assignment to
+ indicate parameter passing.
+
+Thu Sep 5 13:44:19 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sched.c: Correct typos in comments.
+ (sched_note_set): Don't try to calculate live info for global
+ register variables.
+ (attach_deaths): Don't add REG_DEAD notes for global register
+ variables.
+
+ * tm-sparc.h (SELECT_SECTION): Can't put a variable in text section
+ if flag_pic and RELOC are both true, same test that varasm.c does.
+
+Thu Sep 5 13:15:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (reg_referenced_p): Handle USE and CALL.
+ Use switch instead of if-then-else.
+
+Thu Sep 5 08:03:58 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-class.c (propagate_assoc_offsets): Don't fail to
+ propagate the offset to the rightmost basetype.
+
+ * cplus-decl.c (xref_tag): Allocate nodes for basetype info on
+ permanent obstack, not temporary obstack.
+
+Wed Sep 4 18:53:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fixincludes : Change `m68k' to `__m68k__' in all #if's.
+
+ * Makefile.in (ALLOCA_FLAGS): Add -Demacs.
+ (ALLOCA_FINISH): Put option before input file name.
+ (alloca.o): Supply $(INCLUDES).
+
+ * Makefile.in (GCC_CFLAGS): New parameter.
+ (protoize, protoize.o, unprotoize, unprotoize.o): Use GCC_CFLAGS.
+ (enquire, enquire.o, collect2, collect2.o, SYSCALLS.c.X): Likewise.
+
+Wed Sep 4 18:13:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (make_extraction): When picking up low-order part,
+ ensure that we don't create a non-aligned object if alignment
+ is required.
+
+ * expr.c (emit_push_insn): Ensure we only call force_const_mem on a
+ constant.
+
+ * config.subr: Set `os' to be the last `-' and everything following it.
+ `romp' is the basic machine name for the rtpc.
+ `aos' is IBM's name for BSD.
+ * configure: Default `cpu_type' to the first field before an
+ optional `-'.
+ Add a29k, a29k-ultra, romp, and rs6000.
+ * xm-a29k-ultra.h: New file.
+
+Wed Sep 4 15:46:50 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ Changes from Ron Guilmette:
+ * dwarfout.c (output_symbol): Move tests for omitting declarations
+ to dwarfout_file_scope_symbol. No need for `local' parameter.
+ Use TREE_PUBLIC and TREE_EXTERNAL to determine whether a variable
+ or function is global.
+ (finalizing, dwarfout_file_scope_delayed_symbol): Delete.
+
+ * toplev.c (compile_file): Delete use of dwarfout_file_scope_symbol
+ for initialized VAR_DECLs. All global declarations are passed to
+ dwarfout_file_scope_symbol (except function definitions and types).
+
+ (compile_file, rest_of_decl_compilation): Attribute time in
+ {dbxout,sdbout,dwarfout} functions to symout_time.
+
+ * varasm.c (assemble_variable): Check and update TREE_ASM_WRITTEN
+ for a global register variable.
+ Delete use of dwarfout_file_scope_symbol for VAR_DECLs.
+
+Tue Sep 3 23:34:57 1991 Torbjorn Granlund (tege at zevs)
+
+ * sparc.md (ashldi3 expander & recognizer): Make shift count have
+ SImode. Used to have DImode.
+
+ * expmed.c (emit_store_flag): Declare arg UNSIGNEDP.
+
+ * vax.md (adddi3): Make operands 2 and 3 commutative.
+
+ * sparc.md (subtract constant then return): Peephole deleted.
+
+Tue Sep 3 22:23:52 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (mostlyclean, clean, realclean): Some files were missing.
+
+ * gvarargs.h (va_list): Make it typedef, not macro.
+ * va-mips.h, va-pyr.h: Likewise.
+
+Tue Sep 3 22:07:04 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-init.c (build_vec_delete): Fix off-by-one error for arrays
+ of length 1.
+
+Tue Sep 3 19:30:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Don't pass a STRICT_LOW_PART to
+ reg_overlap_mentioned_p.
+
+ * cse.c (fold_rtx): If INSN is zero, copy X before we change
+ anything inside it.
+ When looking for associative operation, pass zero as missing arg to
+ recursive call.
+ (find_comparison_args): Add zero for missing arg to fold_rtx calls.
+
+ * reload.c (find_reloads): Correct code that prevents replacing
+ a SET_DEST with a constant so that it correctly looks for an
+ operand being a SET_DEST.
+
+Tue Sep 3 19:17:34 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * out-i386.c (split_di): Call split_double for CONSTANT_P.
+ (fix_op): Delete.
+ (float_op): Don't examine the mode of the FLOAT operand.
+ (output_float_compare): Don't make new %ax RTX: use scratch
+ operand from insn.
+
+ * i386.md (float mode tstM,cmpM,fixuns_truncMN2,fix_truncMN2): Use
+ match_scratch.
+ (float mode tstM,fixuns_truncMN2,fix_truncMN2): Don't gen temp RTX:
+ use scratch operand.
+ (fix_truncMN2,floatMN2): Split pattern into a separate DFmode and
+ SFmode patterns so that operands[1] has a mode.
+ (sCOND patterns): Don't set cc_status to previous status.
+ (cmpstrsi): Don't explicitly reference reg 2.
+
+Tue Sep 3 16:28:56 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop): Fix carry calculation.
+
+ * varasm.c (decode_addr_const): Given a LABEL_DECL, Make a LABEL_REF.
+ (const_hash): Handle a LABEL_REF.
+ * expr.c (expand_expr): Use FUNCTION_MODE for memref to a LABEL_REF.
+
+ * configure: Fix typo in last change.
+
+ * cccp.c (handle_directive): Normally no error for line with `###'.
+
+Tue Sep 3 10:53:12 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * out-m88k.c, tm-m88k.h: Delete remnants of the fancy abort.
+ * tm-m88kdgux.h: No longer identify as version DG-*.
+ * m88k files: Update copyright dates.
+
+Tue Sep 3 03:18:54 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr): Get rid of EXPAND_INTO_STACK.
+
+Mon Sep 2 14:07:54 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): In %X, terminate the arg after each option.
+
+ * config.subr: If argument contains `local', always accept it.
+ * configure: If machine type contains `local',
+ construct file names from that machine type name.
+
+ * configure: Make config.status a shellscript to redo the configure.
+ No need now to change / to - when storing $(target) in Makefile.
+ Store $(host_make_var_file) in Makefile also.
+ Set host_make_var_file to ../Makefile.in after creating Makefile
+ if no make-... file actually exists for this host.
+ * Makefile.in (host_make_var_file): Dummy definition to be filled in.
+ (Makefile): New rule to rerun `configure'
+
+ * tm-sysv4.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
+
+ * tm-mips.h, tm-m88k.h (abort): Macro definition deleted. It is
+ not right for any machines description to specify use of fancy_abort.
+
+ * protoize.c [v.4]: Include fcntl.h.
+ (execvp): Correct type for second arg.
+ (compile_params): Remove `const'; that loses when calling execvp.
+
+ * cccp.c (directive_table): Typo in entry for do_ident.
+
+ * xm-m68k.h (alloca): Define macro with arg.
+
+ * emit-rtl.c (reorder_insns_with_line_notes): New function.
+ (find_line_note, emit_line_note_after): New functions.
+
+ * jump.c (jump_optimize): When moving else clause before test,
+ only move the insn as far as needed, and use new function
+ reorder_insns_with_line_notes.
+
+Mon Sep 2 03:30:35 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * Makefile.in (collect2): Compile with gcc.
+
+Sun Sep 1 9:03:46 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ Define two macros to eliminate the need for a seperate collect pass.
+
+ * tm-vms.h (ASSEMBLE_OUTPUT_CONSTRUCTOR): Define.
+ (ASSEMBLE_OUTPUT_DESTRUCTOR): Define.
+
+Sun Sep 1 08:14:22 1991 Michael Meissner (meissner at osf.org)
+
+ * collect-osf.c (main): Print version number if -v. Also ignore all
+ arguments beginning with -c rather than just '-c'.
+
+ * make-decrose (collect): Add version.o to link.
+
+Sat Aug 31 17:03:23 1991 Michael Meissner (meissner at osf.org)
+
+ * cplus-input.c (inline macro definition): If inline is already
+ defined, don't redefine it.
+
+ * collect-osf.c (main): Look for gld and gas instead of ld and as,
+ so collect-osf can be installed as ld. Use a default path of
+ /usr/ccs/gcc to find the linker and assember. Ignore the -c switch,
+ which GCC uses to say that collect is needed.
+
+ * osf-main.c (__finis): Don't call descructors already called if one
+ of the destructors calls exit (which in turn calls __finis).
+
+ * tm-mips.h (DBX_REGISTER_NUMBER): Use mips_dbx_regno to map
+ register number to debug register number.
+ (GP_DBX_FIRST, FP_DBX_FIRST): New macros, giving the first debug
+ register numbers for gp registers and fp registers.
+
+ * out-mips.c (mips_dbx_regno): New global array to map GCC register
+ number to debug register number, to fix problem with OSF/1 stabs
+ using 38 for the first fp registers, rather than 32.
+ (override_options): Set up OSF/1 SIGINFO signal handler to notmake
+ the interruptable system calls read, write, and wait not return
+ error condition. Also initialize mips_dbx_regno.
+
+ * make-decrose (CFLAGS): Add $(MSTATS) variable to set -mstats.
+ (CFLAGS_NODEBUG): Like CFLAGS, except no debugging or inlining.
+ (DEB_OPT): Define in terms of DEBUG, OPT, and PROFILE.
+ (cplus-lex rule): Build cplus-lex with no debug or inlinings.
+
+Sat Aug 31 12:52:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (handle_directive): Be more fussy detecting `# LINE' case.
+
+ * cccp.c (directive_table): Pass through and ignore #ident.
+ (do_ident): New function.
+ (skip_if_group): Error if unrecognized directive seen.
+
+ * jump.c (jump_optimize): In converting x=a; if (...) x=b; to
+ store flag, insert all the new code in just one line.
+
+ * gcc.c (do_spec_1): Use xmalloc to make linker_options the first time.
+
+ * expr.c (expand_expr): Make EXPAND_SUM and EXPAND_INITIALIZER
+ imply EXPAND_CONST_ADDRESS in all cases.
+
+ * c-decl.c (c_decode_option): -Wall sets warn_uninitialized.
+ * flags.h (warn_uninitialized): Declared.
+ * toplev.c (warn_uninitialized): No longer static.
+
+ * cccp.c (main): Make no assumptions about include_defaults
+ in calculation of max_include_len. Add fudge space if VMS.
+
+ * reload.c (find_reloads_toplev): New arg IS_SET_DEST.
+ Don't replace reg with constant in destination of a SET.
+ (find_reloads): Pass that arg. Also don't replace here.
+
+ * cplus-xref.c: Finish installing changes from Youngdale.
+
+Sat Aug 31 09:02:25 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-decl2.c (finish_file): Call varasm routines to assemble ctor
+ and dtor lists.
+
+ * cplus-dbxout.c (dbxout_type_methods): Fix error in printing symbol
+ info for classes that only define a destructor.
+
+Sat Aug 31 08:32:12 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_end_of_basic_block): Correctly handle the case of a basic
+ block where a conditional branch out of the block becomes unconditional
+ and a conditional branch to the end of the block becomes a noop.
+
+ * combine.c (try_combine): In case where we have a PARALLEL
+ involving a load and sign extend, use reg_overlap_mentioned_p
+ instead of reg_mentioned_p.
+ If we have a PARALLEL of two independent SETs, try to split them
+ up into separate insns.
+
+ * combine.c (move_deaths): Instead of placing the REG_DEAD notes
+ on TO_INSN, add them to a list whose address is given as an
+ operand.
+ (distribute_notes): Allow for the case when the death of an object
+ is between I2 and I3.
+ Set reg_last_death to corrspond to the location of the REG_DEAD
+ note being placed.
+ (try_combine): Call move_deaths in new way and pass returned list
+ to distribute_notes if it is non-empty.
+
+ * local-alloc.c (requires_inout_p): Don't have cases for '[Q-U]' unless
+ EXTRA_CONSTRAINT is defined..
+
+ * local-alloc (block_alloc): Don't allocate SCRATCH on machines with
+ SMALL_REGISTER_CLASSES defined.
+
+ * regclass.c (reg_class_record): Add missing case for 'V'.
+
+Fri Aug 30 04:42:19 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * tm-i386.h (OUTPUT_JUMP): Use cc_prev_status.
+
+Fri Aug 30 17:08:52 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * xm-vms.h (LOCATE_START_OF_FILE_NAME): Remove.
+ (FILE_NAME_NONDIRECTORY): Fix typo.
+ (XREF_FILE_NAME): Use FILE_NAME_NONDIRECTORY instead of
+ LOCATE_START_OF_FILE_NAME, and omit the leading underscore in the
+ generated file name.
+ (FILE_NAME_ABSOLUTE_P): Define to use hook in cplus-xref.c.
+ (FILE_NAME_JOINER): Define to use hook in cplus-xref.c.
+
+ * cplus-xref.c: Fix bug in default definition of FILE_NAME_ABSOLUTE_P.
+ (GNU_xref_open): Fix bug - wrong argument to XREF_FILE_NAME.
+ (FILE_NAME_JOINER): New macro.
+ (GNU_xref_file): Use it.
+
+Fri Aug 30 17:30:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cplus-xref.c: Reinstall Aug 25 changes discarded by Tiemann.
+
+ * expr.c (expand_expr): New modifier option EXPAND_INITIALIZER.
+ * varasm.c (output_constant): Use that.
+ * jump.c (forced_labels): New var records labels not to delete.
+ (jump_optimize): Don't delete those labels.
+ * flow.c (find_basic_blocks): Any computed goto goes to those labels.
+ * varasm.c (decode_addr_const): Deal with LABEL_DECL.
+
+Fri Aug 30 15:41:03 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.md (copyleft): Use separate copyright years.
+ (mov*): Use nonimmediate_operand instead of general_operand.
+
+ * tm-mips.h (copyleft): Use separate copyright years.
+
+ * xm-mips.h (copyleft): Use separate copyright years.
+
+ * xm-umips.h (copyleft): Use separate copyright years.
+
+Fri Aug 30 08:47:30 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-typeck.c (build_x_*): Try first calling `build_opfncall'
+ with FLAGS==0. If that succeeds, check protection.
+ (build_conditional_expr): `fold' does not preserve the type of it's
+ expressions, which is a problem for C++ when trying to keep ints and
+ enums distinct.
+
+ * cplus-decl.c (lookup_name): When there is a choice between seeing
+ a name as a type and seeing as a decl, call `arbitrate_lookup' to
+ make the decision.
+ * cplus-lex.c (arbitrate_lookup): New function. Uses minute amounts
+ of syntactic context to decide whether to see a name as a type or
+ something else.
+
+Fri Aug 30 07:40:49 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * jump.c (delete_jump): When checking REG_DEAD notes, make sure they
+ have a legal value.
+
+Fri Aug 30 00:57:05 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * local-alloc.c (alloc_qty_for_scratch): Treat Q - U as reg class if
+ EXTRA_CONSTRAINT is not defined.
+ * regclass.c (reg_class_record): Likewise.
+
+Thu Aug 29 21:39:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op_nodefault): Fix last change.
+
+Thu Aug 29 19:11:05 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * recog.c (general_operand, const_double_operand): Similar to
+ immediate_operand, don't accept a VOIDmode operand if the
+ caller wants floating.
+ * out-pyr.c (nonindexed_operand): Likewise.
+
+Thu Aug 29 09:53:27 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * cplus-tree.h ({SET,CLEAR}_ASSOC_*): New macros needed because not
+ all C compilers support conditional expressions as lvalues.
+ (lang_type): Change type of MEMOIZED_TABLE_ENTRY and SEARCH_SLOT
+ from `void *' to `char *', to make braindead compilers at less of a
+ disadvantage.
+
+Thu Aug 29 08:07:40 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (define_function_unit): Update latencies.
+
+ * out-m88k.c (output_function_profiler): Correct offsets for
+ register saves.
+ * tm-m88ksvr4.h (FUNCTION_PROFILER): Use the name _mcount and do
+ register saves.
+
+ * tm-m88k.h (ASM_DWARF_POP_SECTION): Specify "previous".
+
+ Changes from Ron Guilmette:
+ * dwarfout.c (lookup_filename): Only increment valid_ft_entries
+ once when adding a filename to the table.
+ (output_symbol): Do output DIEs for a global VAR_DECL definition.
+
+Thu Aug 29 06:15:32 1991 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cplus-type2.c (build_functional_cast): If we have a valid value in
+ `expr_as_conversion' return that before returning error_mark_node.
+
+ * cplus-init.c (expand_recursive_init): Fix typo is testing
+ TYPE_USES_VIRTUAL_BASECLASSES.
+
+Wed Aug 28 23:12:35 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op_nodefault): For shift and rotate ops,
+ if traditional, use the common type of the operands.
+
+Wed Aug 28 07:31:33 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarfout.c, dwarf.h, README.DWARF: Replacement files from Ron
+ Guilmette that bring the dwarf implementation up to that defined by
+ draft 4 of the dwarf specification (dated 7/31/91).
+
+Wed Aug 28 06:24:30 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * all *.md files except a29k.md and romp.md: Don't allow CONST_INT
+ as operand for RTL operations that need a mode to be well-defined,
+ e.g., SIGN_EXTEND, ZERO_EXTEND, TRUNCATE, FLOAT. Similarly, don't
+ allow CONST_INT as first operand of a COMPARE.
+
+ * machmode.h (MIN, MAX): Undefine these before our definition.
+
+Tue Aug 27 21:33:04 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * version.c: Now 1.95.
+
+Tue Aug 27 18:05:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * reload1.c (possible_group_p): Use earliest class that needs a group.
+
+ * gcc.c (do_spec_1): Handle %x and %X.
+ (link_command_spec): Use %X. If given -collect, pass -c.
+ (default_compilers c++): Use %x to pass -c to linker.
+
+ * cse.c (find_comparison_code): Don't call fold_rtx,
+ because we don't know which insn to pass for its second argument.
+
+ * cse.c (fold_rtx): Don't fold what we get from lookup_as_function.
+
+Tue Aug 27 17:46:59 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (rtx_cost): A USE is free; it is likely being used as a marker.
+
+ * cse.c (cse_insn): If we decided not to make a reg-reg copy between
+ equivalent regs into a no-op, see if there is an equivalent constant
+ that is cheaper than the register we decided to use.
+
+ * cse.c (cse_insn): Fix arg in insert_regs call when making a
+ secondary equivalence due to a SUBREG; we are not modifying the
+ register.
+
+ * cse.c (delete_dead_from_cse): Treat a SET that copies a register
+ to itself as if it were setting a dead register.
+
+ * cse.c (find_comparison_args): Call fold_rtx on the args that we
+ are about to return.
+ (fold_rtx, case SUBREG): Copy code from equiv_constant that looks up
+ a SUBREG in the hash table.
+ If our our folded operand is equivalent to a constant, use that when
+ seeing if we can get a part of a constant.
+ (fold_rtx): Don't short-circuit recursive call for an operand that
+ is a SUBREG; add comment in REG case that we are doing equiv_constant.
+ When looking for associative operation, call fold_rtx on potential
+ constant as well as equiv_constant.
+ (equiv_constant): Just look up a constant quantity for a register;
+ fold_rtx will do the SUBREG operations.
+
+ * fold-const.c ({neg,mul,lshift,rshift,lrotate,rrotate}_double):
+ No longer static.
+ * cse.c (simplify_{unary,binary}_operation): Fold some DImode
+ operations.
+
+ * fold-const.c (fold, case EQ_EXPR, NE_EXPR, ...): Add code to handle
+ cases where we are comparing the result of a comparison.
+
+Tue Aug 27 14:35:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * flow.c (mark_used_regs): Set regs_ever_live for all hard regs.
+ Warning: this might break FUNCTION_PROLOGUE and FUNCTION_EPILOGUE
+ in some ports. But I've checked all the installed ones.
+ * tm-gmicro.h (FUNCTION_PROLOGUE):
+ Clear bit for fp reg if used as such.
+ * tm-mips.h (MUST_SAVE_REGISTER): Only frame_pointer_needed affects fp.
+
+ * c-decl.c (store_parm_decls): No error if arglist contains type tag.
+
+ * optabs.c (expand_fix): Really call emit_cmp_insn right.
+
+ * floatlib.c: New file.
+
+ * gnulib2.c (__clz_tab): Moved to _udivdi3.
+
+Tue Aug 27 06:44:12 1991 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cplus-typeck.c (c_expand_return): Don't use the cleanup generated
+ by `build_functional_cast'.
+
+ * cplus-class.c (resolves_to_fixed_type_p): Handle WITH_CLEANUP_EXPR.
+
+Mon Aug 26 20:55:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-parse.y (yylex): Cast shorts[n] to long before shifting.
+ * fold-const.c (decode): Likewise.
+
+ * Makefile.in (INSTALL_DATA): Renamed from INSTALL_FILE.
+
+ * cse.c (canon_hash): Don't crash if subexpression is 0.
+
+ * cplus-lex.c (interface_strcmp): Put back variable s1.
+
+Mon Aug 26 18:14:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (instantiate_virtual_regs_1): Complete previous change;
+ had omitted arg on two returns.
+
+Mon Aug 26 15:16:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_float, expand_fix): Pass new arg to emit_cmp_insn.
+
+ * out-m68k.c (singlemove_string): Fix last change.
+
+Mon Aug 26 11:20:51 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (cmpsi insn): Don't provide an insn that compares two
+ constants.
+
+Mon Aug 26 08:34:48 1991 Michael Meissner (meissner at osf.org)
+
+ * collect-osf.c (toplevel, read_file, end_file): Don't use mmap,
+ unless all defines needed are defined.
+ (various): If -debug turn on debugging code. Change all occurances
+ of #ifdef DEBUG sections to if (debug).
+ (main, add_to_list): Correctly cast xcalloc calls.
+ (scan_prog_file): Correct xcalloc to allocate enough space
+ (scan_prog_file): If -debug, don't dump entire symbol table, just
+ dump the constructors and destructors.
+
+ * make-decrose (CFLAGS): Use DEB_OPT for default debug and optimize
+ options, use SHLIB for default shared library versions.
+ (DEB_OPT): Define to be -g -O2.
+ (SHLIB): Define to be -L${BUILD}/usr/ccs/lib, which forces static
+ libraries with both old and new 1.39 compilers.
+ (COFF_CFLAGS): Define to be -O2 -g0.
+ (collect): Add LIBDEPS dependency.
+
+Mon Aug 26 07:22:21 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * machmode.h (MIN, MAX): Define here.
+ * c-decl.c, calls.c, cplus-class.c, cplus-decl.c, cplus-tree.c:
+ Don't define here.
+ * expr.c, fold-const.c, function.c, integrate.c, recog.c: Likewise.
+ * rtl.c, sdbout.c, stmt.c, stor-layout.c, varasm.c: Likewise.
+ * c-typek.c, combine.c, cse.c, emit-rtl.c, expmed.c, final.c:
+ Delete definitions of "min" and "max"; use MIN and MAX now defined
+ in machmode.h.
+ * genemit.c, regclass.c, reload.c, reload1.c: Likewise.
+ * cccp.c (MIN, MAX): Define instead of min and max for consistency.
+
+ * tm-rs6000.h (HARD_REGNO_MODE_OK): Don't put DImode in reg 31;
+ similarly for TImode.
+
+ * cse.c (cse_skip_to_next_block): Variable deleted.
+ (cse_insn): Don't set it anymore.
+ (cse_basic_block): Don't use cse_skip_to_next_block; instead, look
+ for unconditional jumps explicitly; correctly handle unconditional
+ jumps to the end of the basic block by extending the basic block in
+ that case.
+
+ * reload1.c (alter_reg): Ensure that stack slot is always the correct
+ mode.
+
+Mon Aug 26 06:20:43 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-type2.c (build_functional_cast): Treat constructor casts as
+ having cleanups in this function.
+ * cplus-decl.c (finish_decl): Use cleanups created by functinal
+ casts used as initializers.
+
+ * cplus-init.c (expand_member_init): Call error with
+ IDENTIFIER_POINTER, not DECL_NAME, of NAME.
+
+ * cplus-method.c (fndecl_as_string): Don't skip `in_charge'
+ parameter twice.
+
+ * cplus-init.c (build_new): Delete code which short-circuited
+ multiple indirections in ABSDCL and made everything look like just a
+ single level of indirection.
+
+ * cplus-typeck.c (warn_for_assignment): Now takes a FUNCTION_DECL
+ instead of an IDENTIFIER_NODE as an argument. Also, print
+ reasonable message when ARGNUM < 0.
+
+ * cplus-typeck.c (type_unknown_p): If TREE_CODE (EXP) == TREE_LIST,
+ it's type is unknown.
+
+ * cplus-typeck.c (commonparms): Don't insert default parmeter values
+ into existing arg lists. Instead, unify them into new ones only.
+
+ * cplus-typeck.c (convert_for_{initialization,assignment}): Pass
+ FNDECL instead of function name. Use `lang_printable_name' to pass
+ printable name to `warn_for_assignment'.
+
+ * cplus-typeck.c (convert_arguments): Don't forcibly convert ptrs to
+ other things into ptrs to functions just to satisfy the conversion
+ of virtual functions.
+
+Sun Aug 25 22:44:57 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-typeck.c (compparms): Deal with STRICT == 3.
+ * cplus-search.c (get_first_matching_virtual): Call `compparms' with
+ STRICT == 3.
+
+ * cplus-lex.c (operator_name_string): Don't abort if we cannot find
+ a operator name for NAME. Instead, return identifier for
+ <invalid operator>.
+
+Sun Aug 25 15:42:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cplus-xref.c (FILE_NAME_ABSOLUTE_P): New macro.
+ (GNU_xref_file): Use it.
+ (open_xref_file): Use new macro XREF_FILE_NAME if defined.
+ * cplus-lex.c (FILE_NAME_NONDIRECTORY): New macro.
+ Used frequently instead of strrchr.
+ * xm-vms.h: Define those three macros.
+
+ * optabs.c (expand_binop): Use word mode for force_reg on op1 of shift.
+
+ * out-m68k.c (singlemove_string): Use moveq when appropriate.
+
+ * final.c (split_double): Handle all integer constants.
+ * out-m68k.c (output_move_double): Use split_double for all constants.
+ * ??? Most out-*.c need changing.
+
+ * c-decl.c (finish_enum): Make some local vars unsigned.
+ * c-common.c (type_for_size):
+ * c-convert.c (convert_to_integer):
+ * tm-i860.h (ASM_OUTPUT_ASCII):
+ * c-parse.y (yylex):
+ * expr.c (get_pointer_alignment):
+ * stor-layout.c (layout_union, layout_record):
+ * tree.c (get_unwidened, get_narrower):
+
+ * expr.c (emit_library_call): Don't declare va_list as register.
+ * final.c (asm_fprintf): Likewise.
+ * tree.c (build, build_nt, build_parse_node): Likewise.
+
+ * expr.c (do_jump_for_compare): Don't assume the compare survives
+ when the branch is emitted.
+
+ * expr.c (convert_move): Fix typo in prev change.
+
+ * emit-rtl.c (fconst2_rtx, dconst2_rtx): New vars.
+ (init_emit_once): Initialize them.
+
+ * expmed.c (extract_bit_field, store_bit_field):
+ For multi-word field, do words from least significant first.
+
+ (extract_split_bit_field): OP0 is only the first word of the
+ source, so if this is a SUBREG, must call operand_subword on
+ SUBREG_REG (OP0) instead of OP0.
+
+ * varasm.c (output_constructor): Correctly output constants for
+ bitfields which are greater than HOST_BITS_PER_INT. Use
+ TREE_INT_CST_HIGH for the high bits.
+
+ * Makefile.in (ENQUIRE_CFLAGS, ENQUIRE_LDFLAGS): New parameters.
+ (enquire, enquire.o): Use them.
+
+ * tm-sysv4.h: New file, cut out from tm-m88k.h.
+ * tm-m88k.h: Include that.
+
+ * vax.md (sltu, sgeu): New patterns.
+
+Sat Aug 24 11:19:43 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-init.c (build_offset_ref): Pass a TYPE_DECL node, not a
+ RECORD_TYPE node, to `build_component_type_expr'.
+
+ * cplus-cvt.c (convert_to_integer): Warn about conversion from
+ integral type to enumeral type if FLAG_INT_ENUM_EQUIVALENCE is zero.
+ (convert_force): Set FLAG_INT_ENUM_EQUIVALENCE non-zero when calling
+ `convert'.
+
+ * cplus-typeck.c (build_x_*_op): Don't try using built-in operators
+ if user-defined ones are not accessible.
+
+ * cplus-init.c (expand_aggr_init_1): Use `expand_expr' to set the
+ DECL_RTL of the TARGET_EXPR. This is a generalization of code that
+ used to require that EXP be some sort of _DECL.
+
+ * cplus-init.c (init_init_processing): Link global runtime functions
+ __builtin_new and __builtin_delete to their canonical operator
+ names (i.e., op$nw and op$dl).
+
+ * cplus-lex.c (init_lex): Don't see `dynamic' as a reserved word if
+ SOS is not defined.
+ * cplus-decl2.c (flag_dynamic): Delete unused variable.
+
+ * cplus-decl.c (define_case_label): Give error when case label cuts
+ into a binding contour with cleanups.
+ * stmt.c (last_cleanup_this_contour): Changed name from
+ `this_contour_has_cleanups_p'. Now returns last cleanup, if there
+ was one.
+ * tree.h: Declare `last_cleanup_this_contour'.
+
+ * cplus-decl.c (grokdeclarator): Don't let member functions have
+ static linkage.
+
+ * cplus-tree.c (layout_basetypes): Copy non-virtual basetypes of
+ virtual basetypes so that search routines can find ambiguities
+ arising in lattices where the same type appears as a non-virtual
+ basetype of different types in the lattice.
+ (copy_nonvirtual_children): Implement a recursive deep-copy of
+ nonvirtual types in an inheritance lattice.
+
+ * cplus-search.c (lookup_fnfields): Correctly catch case where there
+ are multiple functions in an MI lattice.
+ * cplus-call.c (ideal_candidate): If we find a requested function is
+ ambiguous in an MI lattice, set CP->EVIL to 1.
+ (build_method_call): If CP->EVIL is set on return from
+ `ideal_candidate', return error_mark_node.
+
+ * cplus-decl.c (lookup_name): Prefer finding typenames to overloaded
+ functions where there's a collision.
+ (pushdecl): Don't override the declaration of global functions with
+ a TYPE_DECL that has the same name. `lookup_name' now knows how to
+ find both.
+ (globalize_nested_type): Changed to look in IDENTIFIER_TYPE_VALUE
+ slot for global definitions that are not in IDENTIFIER_GLOBAL_VAL.
+ * cplus-type2.c (build_functional_cast): Deal with more ambiguities
+ and more cases where the syntactic form `NAME ( PARMS )' can have
+ meaning.
+
+Sat Aug 24 01:33:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expr.c (convert_move): Make integer extension general.
+
+ * optabs.c (init_extends, gen_extend_insn): Finish and turn on.
+
+ * reload1.c (possible_group_p): Insist on regs in needed class.
+
+ * SYSCALLS.c (alloca): Declare arg as size_t.
+
+ * expr.c (store_constructor): Handle union constructor.
+
+ * final.c (split_double): long long CONST_DOUBLE now has VOIDmode.
+
+ * optabs.c (expand_binop): Fix carry propagation bugs.
+ Handle carry propagation for big-endian case.
+
+Fri Aug 23 21:29:46 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-decl.c (finish_decl): More PIC fixes. Also, don't assign
+ any storage for static member variables except when they are being
+ defined.
+
+ * cplus-init.c (build_virtual_init): Change interface to take
+ MAIN_ASSOC instead of FOR_TYPE.
+ (expand_aggr_init_1): Ditto.
+ (expand_recursive_init_1): Ditto.
+ (expand_aggr_vbase_init{_1}): Change interface to take an assoc
+ instead of a type.
+ (expand_recursive_init): Ditto.
+
+ * cplus-pt.c (uses_template_parms): Handle PARM_DECL nodes.
+
+ * cplus-search.c (get_base_assoc): Use ASSOC_MARKED instead of
+ ASSOC_BASETYPE_MARKED to mark visited nodes.
+ (lookup_field, loopup_fnfields): Use ASSOC_FIELDS_MARKED instead of
+ ASSOC_VBASE_MARKED when searching.
+ ({bfs_,un,bfs_un}marked2p): Deleted, unused.
+ (dfs_{un}mark2): Deleted, unused.
+ (dfs_unmark12): Deleted, unused.
+ (build_vbase_vtables_init): Change interface to take MAIN_ASSOC
+ instead of FOR_TYPE.
+
+Fri Aug 23 18:31:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * expr.c (do_store_flag): Give up if can't directly compare args.
+
+Fri Aug 23 18:00:58 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (instantiate_virtual_regs_1): Add new arg and now returns
+ int instead of void.
+ All callers changed.
+
+ * expr.c (compare_constants): Deleted.
+ (compare_from_rtx): Use simplify_relational_operation instead of
+ compare_constants; abort is not needed since
+ simplify_relational_operation will return 0 if given VOIDmode.
+
+ * cse.c (fold_rtx): Correctly compute mode of operands being
+ compared.
+
+Fri Aug 23 17:16:27 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_end_case):
+ Avoid special cases for modes when widening.
+ Realize __builtin_classify_type reduces to int constant.
+
+ * optabs.c (emit_cmp_insn): New arg, MODE. All callers changed.
+ If both args are const_int, copy one to a reg.
+
+Fri Aug 23 15:54:21 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Fix bug where cplus-parse.y was always being passed
+ through bison, whether it needed it or not.
+
+Fri Aug 23 15:20:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_end_case): Remove Aug 12 change.
+ Convert index to nominal_type for subtraction.
+
+Thu Aug 22 14:34:21 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * configure, config.gcc: Switch to all-dashes config names.
+
+ * gnulib2.c [U_udivdi3, L_muldi3]: Define __clz_tab for longlong.h.
+
+Thu Aug 22 00:28:29 1991 Torbjorn Granlund (tege at zevs)
+
+ * longlong.h: Rename BITS_PER_LONG to LONG_TYPE_SIZE.
+ * longlong.h (__ibm032__): Define count_leading_zeros and umul_ppmm.
+ * longlong.h: Define UMUL_TIME and UDIV_TIME for some CPUs.
+ * longlong.h (__sparc__ umul_ppmm): Move two insn from end to the
+ nops. (Saves two insn.)
+ * longlong.h (__sparc__ umul_ppmm): Rewrite in order to avoid
+ branch, and to permit input/output register overlap.
+ * longlong.h (__29k__): Remove duplicated udiv_qrnnd definition.
+ * longlong.h (__29k__ umul_ppmm): Split asm instructions into two
+ asm statements (gives better code if either the upper or lower
+ part of the product is unused.
+ * longlong.h: Mention UDIV_NEEDS_NORMALIZATION in description of
+ udiv_qrnnd.
+ * longlong.h (IBMR2): Add udiv_qrnnd.
+ * longlong.h (add_ssaaaa, sub_ddmmss [C default versions]): Make __x
+ `unsigned long int'.
+ * longlong.h: Add `int' after `unsigned' and `long' everywhere.
+ * longlong.h: Add ARM, i860 support.
+ * longlong.h (sparc umul_ppmm): Use __asm__, not asm.
+ * longlong.h (IBMR2 umul_ppmm): Refer to __m0 and __m1, not to m0
+ and m1 (overlap between output and input operands did not work).
+ * longlong.h: Add VAX, ROMP and HP-PA support.
+ * longlong.h: Sort the machine dependent code in alphabetical order
+ on the CPU name.
+ * longlong.h: Hack comments.
+ * longlong.h: Define BITS_PER_LONG to 32 if it's not already
+ defined.
+ * Define __BITS4 to BITS_PER_LONG / 4.
+ * Don't assume 32 bit word size in "count_leading_zeros" C macro.
+ Use __BITS4 and BITS_PER_LONG instead.
+ * longlong.h (68k): Define add_ssaaaa sub_ddmmss, and umul_ppmm
+ even for plain mc68000.
+ * longlong.h: Clean up comments.
+ * longlong.h: Don't use #elif.
+ * longlong.h: Use __asm__ instead of asm.
+ * longlong.h (sparc udiv_qrnnd): Make it to one string over several
+ lines.
+ * longlong.h: Preend __ll_ to B, highpart, and lowpart.
+ * longlong.h: Move array t in count_leading_zeros to gnulib2.c
+ Rename the array __clz_tab.
+ * longlong.h (umul_ppmm [C variant]): Make __ul...__vh
+ `unsigned int', and cast the multiplications. This way
+ compilers more easily can choose cheaper multiplication
+ instructions.
+
+Thu Aug 22 07:36:40 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * rtl.h: Declare simplify_relational_operation.
+
+ * out-m88k.c (output_file_start): Put the `gcc2_compiled.' symbol
+ in the data section. Eliminates symbol translation problems with
+ debuggers.
+
+ Changes from Ron Guilmette:
+ * toplev.c (compile_file): Use dwarfout_finish when done.
+ * final.c (output_source_line): Use dwarfout_line.
+ * dwarfout.c (dwarfout_finish): Rename from dwarfout_finalize.
+ * tm-m88k.h (ASM_OUTPUT_DWARF_LINE, ASM_FILE_END): No need for
+ dwarf specific actions.
+
+Thu Aug 22 05:29:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (can_combine_p): Don't combine if INSN has REG_RETVAL note.
+ (try_combine): Similarly, don't combine if I3 has REG_LIBCALL note.
+
+ * flow.c (propagate_block): Don't use variable PREV in
+ nested blocks that shadows PREV at function level.
+ If we handle this insn normally, arrange to scan any insns that
+ were inserted in front of it for making auto-inc addressing.
+
+ * integrate.c (save_for_inline_copying): Clear CONST_DOUBLE
+ memory chain.
+
+ * toplev.c (fatal_insn_not_found): Now that it is called in final.c
+ when an insn doesn't match constraints, write different error
+ message in that case.
+ * genattrtab.c (write_attr_case): Call fatal_insn_not_found instead
+ of abort when constrain_operands fails.
+
+Thu Aug 22 05:29:09 1991 Matthew Self (mself at next.com)
+
+ * rtl.c (add_dependence): Uses of RTX_UNCHANGING_P should now be
+ SCHED_GROUP_P.
+
+Thu Aug 22 00:34:20 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * recog.c (offsettable_address_p): Always pass QImode to addressp.
+
+Wed Aug 21 09:20:09 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-decrose.h (LINK_SPEC): Allow -pic-none, -glue, -noshrlib
+ switches.
+ (LIB_SPEC): Add -L/usr/ccs/lib to get new 1.1 linker to use static
+ libraries instead of shared libraries, since the shared library
+ support has not yet been added.
+
+Wed Aug 21 06:18:12 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * out-rs6000.c (print_operand, case 'Y', 'Z'): Fix typo in
+ auto-inc case.
+ * rs6000.md (movti): Add missing %U in memory cases.
+
+ * tm-rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Indexed addresses are not
+ valid for DImode and TImode.
+ * out-rs6000.c (indexed_mem_operand): Deleted.
+ (print_operand, case 'X'): Don't use indexed_mem_operand; check
+ ourselves instead.
+ * rs6000.md (movdi, movti): Don't check for indexed memory operands.
+
+Tue Aug 20 16:02:41 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sdbout.c (sdbout_parms): Handle parm passed in reg and living in
+ pseudo that was optimized away.
+
+Mon Aug 19 19:10:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_comparision, case NEG): Can only convert
+ (-a) < C to a > C if C is zero.
+
+ * expmed.c (store_bit_field, extract_bit_field): Use WORD_MODE for
+ mode of BITS_PER_WORD to avoid conflict with other use of variable
+ named MODE.
+
+ * cse.c (cse_insn): Don't make a REG_EQUAL note whose contents
+ are a REG; the REG might have been eliminated.
+
+ * reload1.c (reload_as_needed): Pass any CLOBBERs made when reloading
+ an insn to `forget_old_reloads_1'.
+
+Mon Aug 19 12:47:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * configure (m88k-luna): Rename alternative appropriately.
+
+ * cse.c (simplify_relational_operation): Split out from ..._binary_...
+ (fold_rtx): Use that function for relationsals.
+ (simplify_binary_operation): Don't allow relationals.
+ * combine.c (subst, gen_binary): Use simplify_relation_operation.
+ * integrate.c (subst_constants): Likewise.
+ * jump.c (jump_optimize): Likewise.
+
+ * c-common.c (shorten_compare): Warn about unsigned >= 0.
+
+Sun Aug 18 17:29:16 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * tm-vms.h (ASM_OUTPUT_EXTERNAL): Remove code to round the storage
+ size up to a multiple of 4 bytes.
+
+Sun Aug 18 15:35:27 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_parms):
+ Handle parm passed in reg and living in pseudo that was optimized away.
+
+ * function.c (init_function_start): Give decl_printable_name both args.
+
+ * expr.c (compare_from_rtx):
+ Don't change to unsigned if too wide for host int.
+ * cse.c (fold_rtx): Use mode_arg0 to simplify comparison ops.
+ Update mode_arg0 when we look at value of cc0.
+
+ * cse.c (cse_insn): Really don't record bitfield destinations
+ unless source is constant which fits.
+ But pre-truncate other constants.
+
+ * config.subr: Allow $os to be empty.
+
+ * function.c (lookup_static_chain): Check for 0 before inline function.
+
+ * config.subr (pc532, minix): New alternatives.
+
+ * configure (editing Makefile): Use cross-make.
+ * Makefile.in (install-cross): Change dep to install-gnulib.
+
+Sat Aug 17 17:18:05 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * All cplus-* files: Change the representation of the C++
+ inheritance lattice for types. There is no longer such a thing as a
+ classtype_variant. Instead, types all have their own lattices
+ accessed via their CLASSTYPE_ASSOC field.
+
+ * cplus-tree.h (lang_type): Delete fields OFFSET,
+ MAIN_CLASS_VARIANT, NEXT_CLASS_VARIANT, VIA_PUB_OR_VIRT.
+ Rename field AS_ID_LIST to ID_AS_LIST, since it's a list.
+ (CLASSTYPE_AS_ID_LIST): Renamed to CLASSTYPE_ID_AS_LIST.
+ Add field ASSOC_AS_LIST, which is a TREE_LIST whose TREE_VALUE is
+ the assoc for the type.
+ (CLASSTYPE_VIA_*, SET_CLASSTYPE_VIAS): Deleted.
+ (CLASSTYPE_OFFSET*): Deleted.
+ (CLASSTYPE_N_BASECLASSES): Now uses type's assoc. TYPE_BASETYPES
+ field is unused. Next change will make TYPE_BASETYPES hold the
+ assoc field.
+ (CLASSTYPE_VBASE_SIZE): Use slot in TYPE_LANG_SPECIFIC instead of
+ sneaking it into the TREE_TYPE field of the basetypes.
+
+ (ASSOC_TYPE): Deleted. Now use ASSOC_VALUE everywhere.
+ (ASSOC_{BASETYPE,BASETYPES}): New macros. Both are operations on
+ assocs and return assocs.
+ (CLASS_ASSOC_BASETYPE): New macro. This performs roughly the same
+ function that CLASSTYPE_BASECLASS used to, but it retains no assoc
+ info in the type it returns.
+ (ASSOC_NEXT_ASSOC): New macro used for traversing assoc chains built
+ up by search routines.
+ (ASSOC_VIA_{PUBLIC,VIRTUAL}): New macros for accessing inheritance
+ information. CLASSTYPE_VIA_{PUBLIC,VIRTUAL} no longer used.
+ (ASSOC_CID): New macro.
+
+ (DECL_ANON_UNION_ELEM): Deleted. Now anonymous union decls are
+ distinguished as FIELD_DECLs with NULL DECL_NAMEs and UNION_TYPE
+ types.
+
+ (DERIVED_FROM_P): New macro. Change calls that testing inheritance
+ relationships (get_base_type and get_base_distance) to use this macro.
+
+ * cplus-type2.c (basetype_or_else): Change interface to use/return an
+ assoc instead of a type. Change name to base_assoc_or_else.
+
+ * cplus-tree.c (build_classtype_variant): Deleted.
+ (copy_type_lang_specific): Deleted.
+ * all cplus-* files: Everything that used to use CLASSTYPE_OFFSET on
+ types now uses ASSOC_OFFSET on assocs.
+
+ * cplus-class.c (propagate_basetype_offsets): Change interface to use
+ assocs instead of types. Change name to propagate_assoc_offsets.
+ * cplus-search.c (get_base_type): Ditto; name changed to
+ get_base_assoc.
+
+ * cplus-cvt.c (convert_pointer_to): Change interface to use an assoc
+ instead of a type.
+ (convert_pointer_to_vbase): Ditto.
+ * cplus-call.c (build_field_call): Ditto.
+ * cplus-class.c (get_vfield_offset): Ditto.
+ (build_method_call): Ditto.
+ (maybe_fixup_vptrs): Ditto.
+ * cplus-search.c (get_first_matching_virtual): Ditto.
+ (get_virtuals_named_this): Ditto.
+ (tree_needs_constructor_p): Ditto.
+ (get_virtual_destructor): Ditto.
+ (tree_has_any_destructor_p): Ditto.
+ (get_baselinks): Ditto.
+ (lookup_{field,fnfields}): Ditto. Also, use ASSOC_VBASE_MARKED
+ instead of CLASSTYPE_MARKED2 to mark virtual basetypes that have
+ been visited.
+ (build_vbase_vtables_init): Ditto.
+ ({build,free}_mi_matrix): Ditto.
+ * cplus-init.c (expand_aggr_init_1): Ditto.
+ (expand_aggr_vbase_init_1): Ditto.
+ (build_virtual_init): Ditto.
+ * cplus-class.c (build_class_init_list): Rewritten to build list with
+ assoc entries instead of types. Also, use new macro
+ ASSOC_BASEINIT_MARKED instead of CLASSTYPE_MARKED6.
+ (finish_base_struct): New argument ASSOCS is the list of assocs that
+ describe the basetypes of T.
+
+ * cplus-tree.c (make_lang_type): Always initialize
+ CLASSTYPE_VBASE_SIZE to integer_zero_node. To test if a class has
+ virtual baseclasses, test CLASSTYPE_VBASECLASSES, not
+ CLASSTYPE_VBASE_SIZE.
+
+ * cplus-class.c (finish_struct): Rewritten to use assocs instead of
+ types where appropriate.
+
+ * cplus-search.c (get_base_distance): Change interface to use assocs
+ or types. Also, PATH_PTR argument is now an assoc chain, not a
+ TREE_LIST. Algorithm to find leftmost path is now more efficient.
+ (compute_visibility): Uses assoc chain instead of TREE_LIST of
+ types.
+ (recursive_bounded_basetype_p): New function.
+ (dfs_walk, dfs_* functions): Change to be called with assocs instead
+ of types.
+ (breadth_first_search, all bfs_*): Ditto.
+ cplus-tree.c (reverse_path): New function. Like nreverse, but works
+ on assoc chains.
+
+ * cplus-class.c (build_vtable, prepare_fresh_vtable,
+ modify_vtable_{entries,entry},): Change interfaces to use assocs
+ instead of types. Use macro ASSOC_VTABLE_PATH_MARKED on the assocs
+ instead of CLASSTYPE_MARKED3. Use macro ASSOC_NEW_VTABLE_MARKED on
+ the assocs instead of CLASSTYPE_MARKED4.
+
+ * cplus-dbxout.c: Now needs to know more about assocs. When assocs
+ are put in the TYPE_BASETYPEs field, it should not need to know
+ about lang_type.
+
+ * cplus-decl.c (xref_tag): Rewritten to build proper assoc lists. No
+ longer builds basetype lists.
+ (finish_function): Make `flag_no_inline' really take effect.
+
+ * cplus-tree.c (make_assoc): Changed for new assoc structure. The
+ fields in assocs are now: VALUE (pointer to TYPE that this assoc is
+ for), OFFSET (the byte offset of this basetype in the whole object),
+ VTABLE (the virtual function table that should be used to initialize
+ objects controlled by this assoc), VIRTUALS (the virtual functions
+ to use for initializing VTABLE), BASETYPES (a TREE_VEC of basetypes
+ that this assoc has, or NULL_TREE if none), NEXT_ASSOC (a temporary
+ slot used to point to the next assoc in an assoc chain),
+ VIA_{PUBLIC,VIRTUAL} bits saying whether this assoc is a basetype of
+ its parent via public or virtual inheritance.
+
+ * cplus-ptree.c (print_lang_type): Modified as necessary to cope with
+ new inheritance structure.
+
+ * cplus-search.c (get_base_type_1): This function was unused and
+ wrong. Deleted.
+
+ * cplus-tree.c (layout_basetypes): Take new arg ASSOCS. Layout the
+ basetypes my modifying the assocs, not the types.
+ (layout_vbasetypes): Ditto.
+
+ * all cplus-* files: Removed dead code, unused variables, and change
+ asserts where appropriate.
+
+ * all cplus-* files: DECL_VIRTUAL_P is no longer used as a truth test
+ for whether or not a function is virtual. Use a test for non-NULL
+ DECL_VINDEX instead.
+
+Sat Aug 17 15:16:40 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * function.h (inline_function_decl): Declare it.
+ * integrate.c: Include function.h; don't declare var here.
+
+ * rtl.h (regno_reg_rtx): Declare it.
+
+ * stmt.c (expand_end_case):
+ When filling labelvec from case range, avoid overflow in i.
+
+Fri Aug 16 23:06:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op_nodefault):
+ Take out warning added by recent changes.
+
+Fri Aug 16 22:00:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (inline_function_decl): New var.
+ (lookup_static_chain): Decl is local if context is function being
+ inlined.
+ * integrate.c: Remove partially-completed previous change.
+ (expand_inline_function): Set inline_function_decl.
+
+Fri Aug 16 21:41:10 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * a29k.md (insv,extv): Changed POS / SIZE to POS / 8, since high
+ order bit of BP selects half-word position for half-word ops.
+
+Fri Aug 16 18:52:35 1991 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * combine.c (distribute_links): Only put link on new insn if the
+ insn uses the register. If first find an insn that sets the
+ register but does not otherwise use it, then drop the link.
+
+ * combine.c (distribute_links): Strip off SUBREG, ZERO_EXTRACT,
+ etc. from the destination of the set before passing it to
+ reg_mentioned_p and reg_referenced_p.
+
+Sat Aug 16 17:02:53 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-pt.c (uses_template_parms): Run loop over _EXPR nodes from
+ TREE_CODE_LENGTH-1 to 0, not from TREE_CODE_LENGTH.
+
+ * cplus-decl.c (grokfndecl): Change `==' to `=' in assignment to
+ `raises'
+ (finish_decl): If FLAG_PIC is nonzero, leave initialized data in
+ common space.
+
+Fri Aug 16 13:13:11 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (current_function_returns_real): New variable.
+ (reg_to_stack): Set it.
+ (stack_reg_life_analysis): Use it.
+ (emit_pop_insn): Return the new insn.
+ (convert_regs): Pop any stack regs live at the end of the last basic
+ block.
+
+Fri Aug 16 16:16:45 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * tm-sparc.h (SELECT_SECTION): Don't put relocatable values into
+ text space if generating position-independent code.
+
+Fri Aug 16 16:00:30 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * protoize.c (__flsbuf): Decl deleted; no need.
+ [ultrix]: Include string.h, not strings.h.
+
+ * function.c (instantiate_virtual_regs_1): Bug adding NEW to addr of X.
+
+Fri Aug 16 08:51:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case ABS_EXPR, MIN_EXPR, MAX_EXPR): Don't
+ allow TARGET to be a hard reg because evaluating the comparison
+ might clobber it.
+
+Thu Aug 15 23:38:04 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tm-m68k.h (PRINT_OPERAND): Use asm_fprintf to print immed prefix.
+
+Thu Aug 15 23:36:12 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * cplus-decl.c (finish_enum): Remove last traces of Wood's mistaken
+ changes for tag handling in C++.
+ * cplus-class.c (finish_struct): Ditto.
+
+Tue Aug 13 06:12:18 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (find_cross_jump): When avoiding CALL_INSNs, don't
+ return a CODE_LABEL as a cross-jump point; use next_real_insn instead
+ of next_nonnote_insn.
+
+ * fold-const.c (optimize_bit_field_compare, merge_component_reference):
+ Use mode_for_size to get mode for word; don't use SImode.
+ * tree.c (build_index_type, build_index_2_type): Don't use SImode;
+ get mode of SIZETYPE instead.
+
+ * optabs.c (emit_cmp_insn): Use type of int instead of SImode for
+ return from memcmp and bcmp.
+
+Mon Aug 12 17:54:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * stmt.c: Include recog.h.
+ * stmt.c (expand_end_bindings): Expect abort to return void.
+ (expand_end_case): Give tablejump whatever mode it wants.
+
+ * integrate.c (integrate_type): New function.
+ * c-typeck.c (build_binary_op_nodefault): Rewrite last change.
+
+ * Makefile.in (install): Indirect through INSTALL_TARGET.
+ (install-native): New name for old install target.
+ (INSTALL_TARGET): New variable.
+ * cross-make (INSTALL_TARGET): Override it.
+
+Mon Aug 12 17:25:48 1991 Michael Meissner (meissner at osf.org)
+
+ * out-mips.c (toplevel, override_options, siginfo): If the OSF/1
+ SIGINFO signal is provided, invoke siginfo handler, which prints
+ which file is being compiled, and runs ps on the compiler and it's
+ parent.
+
+ * make-decrose (CC, OLDCC): Define CC and OLDCC to be the same, so
+ that tests within Makefile.in work as expected.
+ (LIB2FUNCS_EXTRA): Put osf-main in the gnulib2 portion of the
+ library, instead of the gnulib1 portion.
+
+Mon Aug 12 16:31:47 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * explow.c (expr_size): Fix typo.
+
+Mon Aug 12 14:27:31 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr, case COND_EXPR): Fix typo in comment.
+ In the singleton code, 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.
+
+ * rtl.h (SCHED_GROUP_P): Fix typo in definition.
+
+Mon Aug 12 08:01:01 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (find_cross_jump): Look at REG_EQUIV notes in addition to
+ REG_EQUAL notes.
+ (do_cross_jump): Remove REG_EQUAL or REG_EQUIV notes present on only
+ one branch of the cross-jump so we don't get confused by them if we
+ cross-jump again.
+
+Mon Aug 12 01:44:26 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (unroll_loop): When naively unrolling loops, if the last
+ jump insn is an unconditional jump, and it does not jump to the loop
+ top, then it must be copied with the rest of the loop body.
+
+ * rtl.h: Clean up documentation for uses of volatil and in_struct
+ fields of an rtx.
+ * gcc.texinfo: Document macros CONST_CALL_P, LABEL_PRESERVE_P, and
+ SCHED_GROUP_P. Clean up documentation for uses of used, in_struct,
+ and unchanging fields of an rtx.
+
+ * final.c (final_scan_insn): In the ASM_OUTPUT_LOOP_ALIGN code,
+ must verify that next exists before checking whether it is a label.
+
+Sun Aug 11 16:46:17 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (cmpstrsi): Enable it. Now uses REG as output, not cc0.
+ Old cc0-output pattern remains for combining cmpstrsi & test pairs.
+
+Sun Aug 11 15:52:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_symbol): Handle var-length array with reference.
+
+ * c-decl.c (xref_tag): Copy default mode from unsigned_type_node.
+ * explow.c (expr_size): Get it from size_type.
+ * reload1.c (allocate_reload_reg): No need to validate mode of
+ reload_in if that value is a const_int.
+
+ * expr.c (expand_builtin): Get value mode properly, for memcmp.
+
+Sun Aug 11 15:52:33 1991 Jim Wilson (wilson at cygint.cygnus.com)
+
+ * dbxout.c (dbxout_symbol): DECL_ASSEMBLER_NAME is a tree, not a
+ character string, so call IDENTIFIER_POINTER before printing it.
+
+ * fold-const.c (fold): When converting foo++ == CONST to ++foo ==
+ CONST + INCR, the plus must have the same TREE_TYPE as the
+ postincrement, not the comparison.
+
+Sat Aug 10 22:58:01 1991 Michael Meissner (meissner at osf.org)
+
+ * mips.md (extendqihi2 define_split): Use SImode on shifts rather
+ than HImode, and turn result register into SImode as well.
+
+Sat Aug 10 21:00:59 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * calls.c (emit_call_1): New argument is_const. Set CONST_CALL_P
+ true for the call_insn if is_const is true.
+ (expand_call): Pass is_const to emit_call_1.
+ * expr.c (emit_library_call): Pass no_queue to emit_call_1.
+ Document that no_queue means that the function call is const.
+ * local-alloc.c (validate_equiv_mem): Don't invalidate memory for
+ const calls.
+ * rtl.h: Update comments describing uses of rtl unchanging and
+ in_struct bits.
+ (CONST_CALL_P): New macro. True for a call_insn if it is calling
+ a const function. Uses the unchanging bit.
+ (SCHED_GROUP_P): New macro. True for an insn if it must be
+ scheduled together with the previous insn. Uses the in_struct bit.
+ * sched.c: Rewrite to use new SCHED_GROUP_P macro insead of
+ RTX_UNCHANGING_P.
+ (sched_analyze): Rewrite to use new CONST_CALL_P macro.
+
+ * sched.c (schedule_block): Don't schedule a block with a volatile
+ or traditional asm insn. There is currently no code to correctly
+ handle dependencies for them.
+
+ * combine.c (distribute_links): Fix typo in comment.
+
+Sat Aug 10 18:42:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (operand_subword): Replace explicit SImode references
+ with mode for BITS_PER_WORD bits.
+
+Sat Aug 10 14:17:08 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * calls.c (expand_call): Handle ARGS_GROW_DOWNWARD.
+
+ * ns32k.md (call_value): Consistently realize function is operand 1.
+
+ * cccp.c (do_include): Get current dir from nominal_fname.
+
+ * expr.c (expand_builtin): Give cmpstr* a target in the mode it wants.
+ * optabs.c (expand_cmp_insn): Likewise.
+
+Fri Aug 9 09:59:27 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarfout.c (output_symbols_for_block): Fix typo in iterating over
+ subblocks.
+
+ * make-m88k{,dgux,luna}: Eliminate m88k-trace.asm.
+ * tm-m88k.h, out-m88k.c: Make -mbig-pic a synonym for -fPIC.
+ Delete -mtrace-function.
+
+ * Makefile.in (CROSS_TOOLS): New variable.
+ (gnulib1.null, gnulib2.ready): Depend on CROSS_TOOLS.
+ (gnulib1.null): Use $(AR) $(AR_FLAGS).
+ * cross-make (CROSS_TOOLS): Define as install-cross-tools.
+
+Fri Aug 9 15:21:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * optabs.c (emit_cmp_insn): Expect cmpstr* to have result operand.
+ Test the sign of the result we get.
+ i386.md needs to be changed.
+
+Fri Aug 9 11:09:22 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Fix bug where the wrong program was being run to
+ generate insn-attrtab.c, and, add DEBUG option, so that images can be
+ linked to run under the debugger.
+
+Fri Aug 9 06:42:15 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genemit.c (gen_split): Add "_fail:" label here too.
+
+ * tree.h (STRIP_NOPS): Define macro here; add CONVERT_EXPR to list
+ of operations to possibly ignore.
+ * fold-const.c (STRIP_NOPS): Not here.
+ * expr.c (strip_nops): Delete function.
+ (string_constant): Use STRIP_NOPS macro instead of strip_nops function.
+
+ * global-alloc.c (expand_preferences): New function.
+ (global_alloc): Call it.
+
+Fri Aug 9 01:19:26 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * optabs.c (emit_cmp_insn): Correct typo in spacing.
+
+ * unroll.c: Correct typo in comment. Document that unrolling a
+ loop by a multiple of the number of memory accesses is a win.
+ (unroll_loop): New variable last_loop_insn, points to the last
+ real insn in the loop, which will either be a jump or a barrier.
+ Use last_loop_insn instead of assuming that PREV_INSN (loop_end)
+ is that last real insn in the loop.
+ Standardize comments printed to loop dump file when we can't
+ unroll a loop, so that they all start with "Unrolling failure".
+ No longer assumes that the insn before the backward jump is a
+ compare unless HAVE_cc0. If not HAVE_cc0, then must copy this
+ insn, and for loop_iterations == 1 case, can not delete this insn.
+ If last_loop_insn is not a JUMP_INSN or BARRIER, then do not
+ unroll the loop.
+ (precondition_loop_p): Fail if loop_iteration_var is not live
+ before loop_start.
+ (copy_loop_body): Rewrite obsolete and misleading comment
+ concerning the splitting of address givs.
+ (back_branch_in_range_p): Correct typo in comment. No longer
+ assumes that PREV_INSN (loop_end) is the backward branch at the
+ end of the loop.
+ (fold_rtx_mult_add): Rewrite to use simplify_binary_operation.
+ (iteration_info): Fail if iteration variable is larger than
+ HOST_BITS_PER_LONG, or if it does not have an integer mode.
+ (find_splittable_givs): If an address giv was combined with
+ another address giv, then we can only split the first giv if the
+ second was actually reduced.
+ (loop_iterations): New variable last_loop_insn, use instead of
+ assuming that the last jump insn if PREV_INSN (loop_end).
+ Correct typo in comment.
+
+Thu Aug 8 17:57:41 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (gnulib1.null): Use *_FOR_TARGET variables.
+ (TARGET_TOOLPREFIX): New variable.
+ (AR_FOR_TARGET, AR_FOR_TARGET_FLAGS): New variables.
+ (RANLIB_FOR_TARGET, RANLIB_TEST_FOR_TARGET): New variables.
+ * cross-make: New file.
+ * configure: Insert cross-make into Makefile.
+
+ * tm-m68k.h (LEGITIMIZE_ADDRESS): Copy address before changing it.
+ (COPY_ONCE): New macro, subroutine for LEGITIMIZE_ADDRESS.
+
+ * toplev.c (main): Accept -g with warning if not supported.
+
+ * Makefile.in (install-cross-tools): Do nothing unless have gcc-cross.
+ (gnulib2.ready): Depend on install-cross-tools.
+
+Thu Aug 8 14:34:53 1991 Ken Raeburn (raeburn at watch.com)
+
+ * expr.c (c_strlen): New function; determines strlen of string const.
+ (expand_builtin, cases BUILT_IN_STRCMP, BUILT_IN_STRCPY): Call it
+ instead of relying on TREE_STRING_LENGTH. For strcmp, optimize
+ cases where two lengths are available, if at least one of them is
+ constant.
+ (expand_builtin, case BUILT_IN_MEMCMP): If alignment test fails, and
+ function was really BUILT_IN_STRCMP, delete length parameter before
+ expanding call.
+
+ * tree.h (enum built_in_function): Added BUILT_IN_STRLEN.
+ * c-decl.c (sizet_ftype_string): New variable, for strlen prototype.
+ (init_decl_processing): Set it, and declare strlen and
+ __builtin_strlen as built-in functions. Deleted variable `decl'
+ since it was only assigned to, never read.
+ * expr.c (expand_builtin, case BUILT_IN_STRLEN): Implement it.
+
+ * cplus-decl.c (sizet_ftype_string, init_decl_processing): Copy
+ changes from c-decl.c. Also initialize const_string_type_node.
+
+Thu Aug 8 14:34:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (pushdecl): Just warn if trad. extern type is temporary.
+
+Wed Aug 7 15:16:55 1991 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * local-alloc.c (block_alloc): When converting a SCRATCH rtx to a
+ REG rtx, must clear the `used' bit.
+
+Tue Aug 6 14:17:09 1991 Jim Wilson (wilson at wombat.gnu.ai.mit.edu)
+
+ * stmt.c (expand_start_bindings): Fix typo in comment or spacing.
+ * rtlanal.c (reg_referenced_between_p): Likewise.
+ (reg_set_last): Likewise.
+ * loop.c (make_loop_jump): Likewise.
+ * longlong.h (UDIV_NEEDS_NORMALIZATION): Likewise.
+ * local-alloc.c (update_equiv_regs): Likewise.
+ * global-alloc.c (hard_reg_copy_preferences): Likewise.
+ * fixcpp: Likewise.
+ * tm-m68k.h (CONDITIONAL_REGISTER_USAGE): Likewise.
+ * combine.c (reg_significant): Likewise.
+ * calls.c (expand_call): Likewise.
+ * cplus-tree.c (build_cplus_new): Likewise.
+
+ * function.c (fixup_var_refs_insns): When emitting a move insn,
+ don't put it between a CALL_INSN and its USE insns as this will
+ break sched and reorg. Instead, put it before the USE insns.
+
+ * combine.c (subst): Convert (ior (ashift A CX) (lshift A CY)) where
+ CX+CY equals the mode size to (rotate A CX).
+
+ * out-sparc.c (emit_move_sequence): For DImode constants, can not
+ create a temporary register to hold the high part.
+ (output_scc_insn): When in a delay slot, verify that NEXT_INSN (insn)
+ really is the next insn.
+
+ * sparc.md: Fix support for DImode constants. Two new patterns
+ added, one for high:DI operators and one for lo_sum:DI operators.
+ (*extend*): Rework these patterns. Don't accept memory input
+ operands in the define_expands, as this gives better code.
+ Delete patterns for combining two loads into a load and move;
+ these are obsoleted by combiner improvements.
+ Delete define_splits for splitting these obsolete patterns.
+ (one_cmplsi2): Can not accept general_operand destinations, only
+ register destinations.
+
+ * tm-sparc.h (STACK_POINTER_OFFSET): Explain how value is derived,
+ and compute in terms of another macro.
+ (STRUCT_VALUE_OFFSET): Explain how value is derived.
+ (FIRST_PARM_OFFSET): Fix typo in comment.
+
+ * expr.c (MOVE_RATIO): Check for HAVE_movstrdi.
+ (emit_block_move): Add code to use HAVE_movstrdi if present.
+ (emit_push_insn): Likewise.
+
+ * final.c (final_scan_insn): When insn fails constraint check,
+ call fatal_insn_not_found instead of just aborting to make
+ debugging easier.
+
+ * tree.c (integer_all_onesp): Rewrite code to avoid shift by
+ HOST_BITS_PER_INT which is undefined according to ANSI. Also,
+ abort for precision values not handled, i.e. those greater than
+ twice times HOST_BITS_PER_INT.
+
+Tue Aug 6 14:05:42 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (seq,sne): Use setb/setnb mnemonics instead of setc/setnc:
+ GAS doesn't understand the latter yet.
+
+Tue Aug 6 13:01:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common): Use -d, not -f, for tooldir/bin.
+
+Tue Aug 6 10:37:02 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Replacement file. This new version can build cc1plus
+ and cc1obj in addition to cc1 (known on VMS systems as gcc-cc1plus.exe,
+ gcc-cc1obj.exe and gcc-cc1.exe respectively).
+
+Tue Aug 6 06:30:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (canon_hash): If a REG in an operand is equivalent to a
+ constant, hash as if we had the constant.
+ (exp_equiv_p): See if a REG and constant are equivalent.
+
+Tue Aug 6 03:59:16 1991 Ken Raeburn (raeburn at watch.com)
+
+ * cplus-tree.c (make_deep_copy): Handle PARM_DECLs.
+
+ * cplus-init.c (build_offset_ref): Use DECL_CHAIN, not TREE_CHAIN
+ when trying to determine if a function is unique.
+
+ * cplus-decl.c (start_decl): When constructing a decl tree for a
+ function template, copy last_function_parms to permanent storage,
+ and save it as the function argument list. Call build_lang_decl
+ instead of build_decl, instead of duplicating the extra work it does.
+ Set `overloaded' flag to 1. Call dont_forget_overload, so the
+ template decl won't get discarded.
+ Also deleted some commented-out code.
+
+ * cplus-pt.c (uses_template_parms, cases VAR_DECL, FUNCTION_DECL):
+ Give a warning if template parms are only used in places where they
+ can't be resolved (e.g., return types or global or fixed-class
+ variable types).
+ (tsubst): Preserve storage qualifiers on type field, and pass it to
+ layout_type if it has changed.
+ (tsubst, case TEMPLATE_TYPE_PARM): Preserve storage qualifiers.
+ (tsubst, case INTEGER_TYPE): Process min and max fields, if needed.
+ (tsubst, case FUNCTION_DECL): Process arguments and result fields.
+ (tsubst, case PARM_DECL): New branch. Handle parm list for
+ FUNCTION_DECL nodes.
+ (tsubst, case TREE_LIST): Copy TREE_PARMLIST flag from source.
+ Don't bother processing TREE_CHAIN field if it is void_type_node.
+ (tsubst, cases POINTER_TYPE, REFERENCE_TYPE): Preserve storage
+ qualifiers.
+ (tsubst, case FUNCTION_TYPE): Eliminate recursion for simple common
+ cases for values and context fields. Preserve storage qualifiers.
+ (tsubst, default case): Print node type of correct variable in error
+ message.
+ (instantiate_template): Set function_maybepermanent_obstack to
+ permanent, along with the others, and restore old value after tsubst
+ call. This permits the PARM_DECL case to work.
+
+Mon Aug 5 22:44:51 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-tree.h (struct pending_inline): Add new field `deja_vu' to
+ mark if this pending_inline has already been seen.
+ * cplus-lex.c (do_pending_inlines): Set DEJA_VU when seen.
+ * cplus-lex.c (reinit_parse_for_method, cons_up_default_function):
+ Initialize DEJA_VU to 0.
+ * cplus-decl2.c (mark_inline_for_output): Don't add DECL to
+ PENDING_INLINES if it's already been seen.
+ * cplus-pt.c (instantiate_template): Initialize DEJA_VU to 0.
+
+ * cplus-method.c (do_inline_function_hair): Change some assignments
+ to asserts, since they seem to be copying values that are already
+ there.
+
+Mon Aug 5 22:23:34 1991 Michael Meissner (meissner at osf.org)
+
+ * genemit.c (gen_expand, main): Change FAIL macro to be a simple
+ goto _fail, and initialize the return value to 0 in the prologue.
+ This avoids a useless warning message that the MIPS C compiler
+ gives if a return is encountered inside of a do { ... } while (0).
+
+Mon Aug 5 21:28:06 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cplus-xref.c (GNU_xref_file): Treat VMS like USG.
+
+ * optabs.c (expand_binop): In libcall, use actual mode of op1.
+
+ * c-typeck.c (build_binary_op_nodefault):
+ In signed versus unsigned compare warning, note promotions of unsigned.
+
+ * c-parse.y (simple_if): Allow error instead of lineno_labeled_stmt.
+ (if_prefix): New subroutine of simple_if.
+
+ * gnulib2.c (__ashldi3, __ashrdi3, __lshldi3, __lshrdi3):
+ Accept second arg as int, not long long.
+
+Sun Aug 4 22:31:53 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-except.c (cplus_expand_start_except): Set up variables
+ `current_exception_name_as_rtx' and `current_exception_parms_as_rtx'.
+ These variables are used to factor out calls to `expand_assignment'
+ and allow instead calls to `emit_move_insn', which takes about 1/2x
+ the compilation time when called directly.
+ (various places): Use `store_expr' instead of `expand_assignment'
+ when reasonable.
+ (cplus_expand_reraise): Take advantage of above changes.
+ (setup_exception_throw_decl): This is where *_as_rtx variables are
+ initialized.
+
+ * cplus-input.c (getch): Rewritten slightly to help GNU C optimizer.
+ * cplus-lex.c (yylex): In IDENTIFIER case, pre-test condition that
+ `getch' tests, and call `getc' directly when possible. This cuts
+ calls to `getch' by a factor of 4 for typical C++.
+
+ * cplus-class.c (add_virtual_function): Memoize the first 256
+ virtual function table index nodes (0x80000001, 0x80000002, etc.).
+ (finish_struct): Use `size_int' instead of `build_int_2' when we
+ know the int will not be changed in place (such as the size value of
+ virtual function tables).
+ * cplus-decl2.c (finish_table): Same change as for `finish_struct'.
+ * cplus-tree.c (layout_basetypes): Same change.
+ * cplus-decl.c (init_decl_processing): Use `size_int' to initialize
+ `size_zero_node' and `size_one_node'.
+
+ * cplus-tree.h (TREE_OVERLOADS_ARROW): Define this.
+ * cplus-parse.y (operator_name): Set TREE_OVERLOADS_ARROW where
+ appropriate.
+ * cplus-type2.c (build_x_arrow): Use TREE_OVERLOADS_ARROW and
+ reorganize the logic for better speed.
+ * cplus-ptree.c (print_lang_type): Print when TREE_OVERLOADS_ARROW.
+
+Sun Aug 4 16:44:54 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (reg_referenced_p): Properly handle ASM_OPERANDS.
+
+ * cse.c (cse_insn): When recording this_insn_cc0, build a COMPARE
+ rtl if SRC is a floating-point value.
+
+Sun Aug 4 16:16:11 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (fold): Don't compute shift with negative count.
+ * cse.c (simplify_binary_operation): Likewise.
+
+Sat Aug 3 15:57:55 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * tm-vms.h (ASM_OUTPUT_EXTERNAL): Modify to always write the
+ correct size of the data object, if it is known.
+ (ASM_OUTPUT_COMMON): Modify to select the const or the data section
+ as appropriate. This definition shadows a definition in tm-vax.h
+ (const_section): Change data type to void.
+
+Sat Aug 3 15:02:40 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * integrate.c (save_for_inline_copying): Clear constant pool after
+ saving constants into the insns.
+
+ * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Ensure items
+ passed to emit_block_move are valid MEMs.
+
+ * recog.c (offsettable_address_p): Don't change INTVAL of a CONST_INT
+ within an address; that CONST_INT is likely shared and may be used
+ elsewhere in the address.
+
+ * stmt.c (expand_end_stmt_expr): Don't try to copy result to
+ REG; it might be BLKmode.
+
+ * reload.c (MATCHES): Don't consider two things equal if they have
+ side effects.
+
+ * combine.c (try_combine): When replacing SET_DEST inside a PARALLEL,
+ don't replace it with something that has a side effect.
+
+Sat Aug 3 13:17:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing):
+ If traditional, omit builtins with names that don't start with _.
+ Also omit if not optimizing.
+
+ * Makefile.in (combine.o, emit-rtl.o, expr.o, final.o, tree.o):
+ Depend on gvarargs.h.
+
+Fri Aug 2 11:00:10 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ Merge some VMS changes from 1.39 that did not make it to 2.0.
+ These changes will prohibit GCC from addressing external symbols with
+ indirect addressing modes, to be compatible with sharable
+ image libraries under VMS.
+
+ * tm-vms.h: Define NO_EXTERNAL_INDIRECT_ADDRESS, define
+ ENCODE_SEGMENT_INFO to make use of hook in varasm.c
+
+ * tm-vax.h: Provide alternative definitions of INDIRECTABLE_CONSTANT_P,
+ INDIRECTABLE_CONSTANT_ADDRESS_P, and INDIRECTABLE_ADDRESS_P, which
+ are used when NO_EXTERNAL_INDIRECT_ADDRESS is defined. Also, define
+ INDIRECTABLE_CONSTANT_ADDRESS_P. Modify definitions of
+ GO_IF_NONINDEXED_ADDRESS, and GO_IF_LEGITIMATE_ADDRESS to work with
+ either alternative.
+
+Fri Aug 2 21:54:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (check_dbra_loop): Fix typo in arg to single_set.
+
+ * reload1.c (choose_reload_regs): Verify that all registers in a
+ group still contain the desired value.
+ (emit_reload_insns): Set reg_reloaded_contents and reg_reloaded_insn
+ for all registers in a group.
+
+ * combine.c (set_significant): Handle a complex SET_DEST correctly.
+
+Fri Aug 2 17:12:24 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tree.c (build_array_type): Make pointer type before array type.
+
+ * Makefile.in (install-common): Never install gcc if gcc-cross exists.
+
+Fri Aug 2 14:58:42 1991 Michael Meissner (meissner at osf.org)
+
+ * make-mips (CC, OLDCC): Comment why we need to define CC and OLDCC
+ to get around fixed size table complaints in the MIPS compiler.
+
+Fri Aug 2 14:08:01 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * configure (writing VPATH definition): Avoid temp file.
+
+ * tm-i860.h (MAX_PARM_BOUNDARY): Defined.
+ (GO_IF_LEGITIMATE_ADDRESS): Add parens around & operator.
+ (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Use sp, not r3 (that's fp).
+ * i860.md (movsf): Don't reload high address part if already loaded.
+ (cmplesf, cmpledf, cmpgesf, cmpgedf): Set CC_NEGATED; swap operands.
+ * out-i860.c (strict_single_insn_op_p):
+ Fix criterion for loading high half.
+ (output_load_address): #if 0 since not used.
+
+Fri Aug 2 01:46:39 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (swapdf): Don't condition on TARGET_387.
+ (bit set/complement/clear insns): Don't use if -m486.
+ (bit test insns): Don't allow a MEM operand.
+
+Thu Aug 1 19:05:31 1991 Matthew Self (mself at next.com)
+
+ * local-alloc.c (block_alloc): Record regs_live_at for last insn
+ in basic block too. Otherwise REG_UNUSED regs may overlap hard
+ regs set in the last insn of the basic block.
+
+Thu Aug 1 19:02:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (gen_rtx): Don't return frame_pointer_rtx (e.g.) if
+ mode is not Pmode.
+
+ * emit-rtl.c (operand_subword): Don't write explicit divide by 0;
+ some (broken) compilers give errors for it.
+
+ * m68k.md (udivhi3): One pattern had constraint of "d" with
+ const_int_operand.
+ (FPA insns): Operand 1's constraints allow memory and constants, but
+ the predicate is register_operand; change to general_operand.
+
+Thu Aug 1 13:41:47 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-lex.c (do_pending_inlines, process_next_inline): Zero out
+ the DECL_PENDING_INLINE_INFO field after processing it.
+ (store_pending_inline): Don't delay processing a virtual function,
+ since it needs to be processed in case the virtual function table is
+ needed.
+
+ * cplus-decl2.c (mark_inline_for_output): If DECL has pending inline
+ info, cause it to be processed.
+
+ * cplus-pt.c: Removed extraneous declaration of `permanent_obstack'.
+ Also, added comment for `reinit_parse_for_template'.
+
+ * cplus-typeck.c (mark_addressable): For FUNCTION_DECL case, also
+ test DECL_PENDING_INLINE_INFO.
+
+Thu Aug 1 13:26:12 1991 Michael Meissner (meissner at osf.org)
+
+ * mips-tfile.c (main): If input file is not specified, use the same
+ file for both input and output. If renaming output file and rename
+ fails, copy the file.
+ (free_multiple_pages): New function.
+
+ * tm-decrose.h (ASM_FINAL_SPEC): Add this to call mips-tfile if
+ using the MIPS assembler.
+
+ * tm-mips.h (ASM_FINAL_SPEC): Add this to call mips-tfile unless
+ using gas.
+ (TARGET_VERSION): Do not put __DATE__ in the output.
+
+ * make-mips (BISONFLAGS): Add -l to bison flags because the MIPS
+ based compilers have problems with #line.
+ (CC): Define in terms of $(OLDCC) so the USE_HOST macros work.
+ (EXTRA_PASSES): Build mips-tfile and mips-tdump.
+ (Makefile): Explicitly use sh to invoke configure.
+
+ * make-decrose (EXTRA_PASSES): Build collect.
+ (Makefile): Explicitly use sh to invoke configure.
+
+Thu Aug 1 12:22:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (directive_table, node_type): Add #include_next.
+ (do_include): Support #include_next.
+ (finclude): New arg DIRPTR. All callers changed.
+
+ * reload1.c (reload_as_needed): Check live_known before accessing
+ basic_block_head.
+
+Thu Aug 1 11:47:37 1991 Michael Meissner (meissner at osf.org)
+
+ * gcc.c (compilers): Add new spec %A, which expands ASM_FINAL_SPEC.
+ This option is added after all other arguments to the assembler. It
+ is for the MIPS port to run a cleanup program after the assembler
+ finishes, by having ASM_FINAL_SPEC be "\n mips-tfile args..."
+ (set_spec): If name is 'asm_final', set the asm_final_spec.
+ (process_command): print out asm_final_spec for -dumpspecs.
+ (do_spec_1): Expand %A to be ASM_FINAL_SPEC.
+ (validate_all_switches): look at any switches handled in
+ ASM_FINAL_SPEC.
+
+Thu Aug 1 07:42:37 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarfout.c (element_list_attribute): AT_element_list is a BLOCK4.
+
+Wed Jul 31 17:42:40 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): In "if (...) x = 1; else {...} if (x) ...":
+ Don't assume that SYMBOL_REFs are always non-zero.
+ Handle operations other than EQ and NE.
+ Handle conditional RETURN properly.
+
+ * out-a29k.c (print_operand, case 'e'): When writing LXn, use number
+ of last label in function.
+ (output_prolog): Fix missing arg in ADD in a29k_first_epilogue_insn.
+
+Wed Jul 31 13:41:37 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sdbout.c (sdbout_parms): Don't crash if MEM address is a MEM.
+
+Wed Jul 31 12:36:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fixincludes: New variable INCLUDES specifies input dir.
+
+ * Makefile.in (install-common): Add dummy elt to EXTRA_PASSES.
+ Fix typo in test.
+
+ * Makefile.in (install-cross-tools): Use /. in args to test -d.
+ (cccp.o, dbxout.o, c-plus-*): Added missing dependencies.
+
+ * c-common.c: Don't include rtl.h--that was unmodular.
+
+ * make-i386v (INSTALL): Define this.
+
+Wed Jul 31 07:38:12 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * Makefile.in (LIB2FUNCS_EXTRA): Extra C and assembler files for
+ gnulib2.
+ * make-m88k*: Put the assembler files in gnulib2 and eliminate use
+ of gnulib1.
+
+Tue Jul 30 20:21:41 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * stddef.h (WCHAR_T):
+ Test _WCHAR_T_, __WCHAR_T, _T_WCHAR_ and ___int_wchar_t_h.
+
+ * tm-i386isc.h (RETURN_POPS_ARGS): Caller pops the struct value addr.
+
+ * cccp.c (default_include): Search local dir, system, then standard.
+
+ * Makefile.in (USE_HOST_MALLOC, USE_HOST_OBSTACK):
+ Don't depend on which C compiler is in use.
+
+ * reload1.c (reload): Use pseudoreg to compute spill_indirect_levels.
+
+ * c-decl.c (start_function): Don't take arg types from builtin.
+ (duplicate_decls): Cancel builtin function if new arg types differ.
+ Don't take arg types from buiiltin.
+
+Tue Jul 30 18:45:39 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (decompose): Don't blow up for constants; they are safe.
+
+Tue Jul 30 15:49:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_parms): Don't crash if MEM address is a MEM.
+
+ * Makefile.in (install-common): Don't lose if EXTRA_PASSES is empty.
+ Don't install gcc if gcc-cross exists.
+ (install-cross-tools): Fix typos.
+ Avoid doing cd -- use absolute file names.
+ (gcc-cross.o): Rule deleted.
+ (gcc-cross): Build gcc, then copy it.
+
+Tue Jul 30 15:37:25 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-init.c (build_vec_delete): Use `size_binop' when building up
+ the array end boundary.
+
+Tue Jul 30 10:03:54 1991 Michael Meissner (meissner at osf.org)
+
+ * tm-mips.h (DOLLARS_IN_IDENTIFIERS): Define to be 1.
+
+Mon Jul 29 18:56:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (refers_to_regno_for_reload_p): New function.
+ (push_reload, find_dummy_reload, immune_p): Use
+ refers_to_regno_for_reload_p instead of refers_to_regno_p.
+
+ * cse.c (fold_rtx): Don't make shifts wider than object.
+
+Mon Jul 29 17:17:55 1991 Michael Collison (collison at osf.org)
+
+ * configure: Added entry for mmax-osfrose (Multimax with ns32k
+ running OSF/1).
+
+Mon Jul 29 14:51:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (SYMLINK): New variable.
+ (install-cross-tools): Make symlinks if possible.
+ Otherwise, for executables, indirect to tooldir with a shell script.
+ (install-native): Install gcc-cross as bin/gcc under tooldir.
+
+ * Makefile.in (USE_HOST_ALLOCA):
+ Generate nothing if don't need separate alloca.
+ (USE_HOST_OBSTACK, USE_HOST_MALLOC): New variables.
+ (HOST_LIBS): Use them.
+ (HOST_PREFIX_1): Make a dummy file with this name,
+ for cross-compiling for a machine that needs no separate alloca, etc.
+
+ * c-parse.y (stmts): Accept either labels or unlabeled statements.
+ (lineno_labeled_stmt): New nonterminals.
+ (stmt_or_label, lineno_stmt_or_label): New nonterminals.
+ (stmts): Use lineno_stmt_or_label.
+ (stmt): Don't allow labels at this level.
+ Use lineno_labeled_stmt in place of lineno_stmt.
+
+ * cccp.c (default_include): Get rid of extra #endif.
+ Use CROSS_COMPILE, not CROSS.
+
+ * make-i386mach: New file.
+ * configure (i386-mach): Use that file.
+
+Mon Jul 29 09:10:13 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * tm-m88kluna.h (SYSTEM_INCLUDE_DIR): Define (also MACH).
+
+Sun Jul 28 16:15:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (default_include): Use SYSTEM_INCLUDE_DIR.
+ Delete special cases for MACH, UNOS.
+ * tm-i386mach.h, tm-sun3mach.h, tm-crds.h (SYSTEM_INCLUDE_DIR): Define.
+
+ * cccp.c (default_include): Use CROSS_INCLUDE_DIR if cross-compiler.
+ * Makefile.in (cccp.o): Pass a definition for CROSS_INCLUDE_DIR.
+
+ * Makefile.in (gnulib1.null): New target.
+ (install-common, install-common-headers, install-cross-tools):
+ (install-cross-rest, install-float-h-cross): New targets.
+ (install-float-h): New target.
+ (install-cross, install-headers): Use them.
+ (tooldir): New variable.
+ (EXTRA_PASSES): New variable.
+
+ * sdbout.c (plain_type_1): Don't record the size in sdb_type_size
+ unless a tag is output.
+
+ * Makefile.in (install-cross): Install specs by copying.
+ Install either gcc or gcc-cross, whichever exists.
+ (native): Remove gcc from deps.
+ (start.encap): Add gcc to deps.
+ (all.cross): Add gcc-cross to deps.
+ (gcc-cross): Like gcc rule except different output file name.
+ (gcc-cross.o): Likewise.
+
+ * Makefile.in (EXTRA_PASSES): New variable.
+ Used for machines which have extra passes to run.
+ (install-cross): Install those programs.
+ (native): Compile them.
+
+ * c-parse.y: Support `foo:' before a close brace.
+ (label): New nonterminal.
+ (stmt): Use that. Treat a label as a statement in itself.
+
+ * Makefile.in (gnulib*.portable): Rules deleted.
+ (GNULIB1, GNULIB2): Point directly at gnulib1, gnulib2.
+ (gnulib): Use GNULIB1, GNULIB2 directly both as deps
+ and to specify the input files.
+ (gnulib1.conv): Renamed from gnulib1.convert; no longer phony.
+ (gnulib*.target): Rules deleted.
+ make-hp9k320 (GNULIB1): Use gnulib1.conv.
+ (LIBCONVERT): Override.
+
+ * move-if-change: Use -f with rm and mv.
+
+ * Makefile.in (gnulib2.ready): No longer phony.
+
+Sat Jul 27 13:03:50 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * combine.c (can_combine_p): Don't use NEXT_INSN, in previous change.
+
+ * Makefile.in (class-c, objective-c): New targets.
+
+ * tm-i386.h (ASM_OUTPUT_ALIGN_CODE): Define it.
+ (ASM_OUTPUT_LOOP_ALIGN): Use ASM_OUTPUT_ALIGN_CODE.
+ * tm-i386gas.h, tm-i386vgas.h (ASM_OUTPUT_ALIGN_CODE): Override it.
+ (ASM_OUTPUT_LOOP_ALIGN): Definition deleted.
+
+ * fixincludes (memvar.h): Make two defs of CAT, one ANSI and one trad.
+
+ * expmed.c (emit_store_flag): Set ICODE only after CODE is right.
+
+Sat Jul 27 06:45:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * flow.c (insn_dead_p): Don't clobber NEEDED while ensuring that we
+ don't delete insns that set the frame or arg pointer.
+
+ * flow.c (flow_analysis, find_basic_blocks, propagate_block):
+ Use GET_RTX_CLASS.
+
+Fri Jul 26 08:18:08 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * sdbout.c: Use <syms.h> for USG and provide a definition of
+ T_VOID if none existed. Use ./gsyms.h for non-USG systems.
+ * gsyms.h: Renamed from syms.h.
+
+Fri Jul 26 22:47:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (macroexpand): Fix error message syntax.
+
+ * Makefile.in (gnulib2.target): Add semicolon.
+
+Fri Jul 26 18:17:36 1991 Michael Meissner (meissner at pogo.gnu.ai.mit.edu)
+
+ * make-mips (CC): Bump -Wf,-XNg option to 1500 to allow the MIPS
+ compiler to compile cc1plus.
+
+Fri Jul 26 14:42:35 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-parse.y (yylex): Don't use mbtowc to translate L'\0'.
+
+ * tm-m88ksvr4.h (CPP_SPEC): Specify SVR4 pre-assertions.
+
+Fri Jul 26 09:53:53 1991 Michael Meissner (meissner at pogo.gnu.ai.mit.edu)
+
+ * Makefile.in (cplus_expr.o): Add missing dependencies, so cc1plus
+ can be built without first building cc1.
+
+Fri Jul 26 07:30:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (can_combine_p): Can't combine if DEST is used in an
+ insn in the range (succ, i3).
+
+ * expmed.c (store_bit_field): Don't use insv if the mode of its
+ input is narrower than the width of the field.
+ (store_fixed_bit_field): Handle value with MODE_FLOAT mode.
+ (extract_bit_field): Don't use extzv/extv if its output mode is
+ narrower that width of field.
+ (extract_bit_field): Handle returning MODE_FLOAT mode.
+
+ * reorg.c (steal_delay_list_from_target): Add new arg PNEW_THREAD.
+ Instead of redirecting jump, return its target in *PNEW_THREAD.
+ (fill_slots_from_thread): Pass &NEW_THREAD to
+ steal_delay_list_from_target.
+
+Thu Jul 25 21:57:42 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sched.c: Correct tiemann's email address.
+ (schedule_block): Note that the values of leftover REG_DEAD notes
+ are meaningless.
+ (new_insn_dead_notes): If find an instruction that both uses and
+ sets dest, then no new REG_DEAD note is needed.
+ (update_links): When handling dest of last insn, no new REG_DEAD
+ note is needed if the last insn also uses its dest.
+
+Thu Jul 25 18:15:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * flow.c (regno_clobbered_at_setjmp): Don't blow up if no basic blocks.
+
+Thu Jul 25 16:55:57 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cse.c (invalidate, cse_insn): Don't use HASHREG directly.
+ (HASH): Substitute HASHREG in.
+ (HASHREG): Deleted.
+
+ * tm-i386mach.h: New file.
+ * configure (i386-mach): Use that.
+
+ * tm-i386isc.h: New file, copied from 1.40.
+
+ * i386.md (jump, indirect_jump, tablejump, return):
+ Use ASM_OUTPUT_ALIGN_CODE.
+ * tm-i386gas.h, tm-i386vgas.h (ASM_OUTPUT_LOOP_ALIGN):
+ Override the usual definition.
+
+ * rtl.h (FUNCTION_FLAGS_USES_PIC_OFFSET_TABLE): Fix typo.
+
+Thu Jul 25 16:25:52 1991 Tom Wood (wood at dg-rtp.dg.com)
+
+ * out-m88k.c (legitimize_address): Note use of addressing base.
+ (m88k_layout_frame): Establish PIC addressing base as needed.
+
+ * tm-m88kdgux.h (GPLUSPLUS_INCLUDE_DIR): Specify.
+
+Thu Jul 25 07:54:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * rtl.h (FUNCTION_FLAGS_USES_PIC_OFFSET_TABLE): Defined.
+
+ * integrate.c (expand_inline_function): Propagate the value of
+ FUNCTION_FLAGS_USES_PIC_OFFSET_TABLE.
+
+ * function.h (struct function): Add new field USES_PIC_OFFSET_TABLE
+ to structure. Leave it to md files to initialize this field.
+ * expr.h (current_function_uses_pic_offset_table): New declaration.
+ * function.c ({save,restore}_tree_status): Save and restore
+ CURRENT_FUNCTION_USES_PIC_OFFSET_TABLE to/from this slot.
+ * out-sparc.c (legitimize_pic_address): Set
+ CURRENT_FUNCTION_USES_PIC_OFFSET_TABLE when appropriate.
+ (finalize_pic): If the current function does not use the PIC offset
+ table, there's no need to emit the PIC prologue.
+
+Wed Jul 24 13:54:41 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tm-m68k.h (NOTICE_UPDATE_CC):
+ Calls clear status even if value in address reg.
+
+ * tm-i386gas.h, tm-i386vgas.h (ASM_OUTPUT_ALIGN_CODE): Align with NOPs.
+
+ * i386.md (andsi3): Don't use movzbl if op1 can't support it.
+
+Wed Jul 24 07:47:59 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * cplus-decl.c (finish_decl): Don't build a cleanup for an variable
+ that is TREE_EXTERNAL.
+
+Tue Jul 23 20:48:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * make-mips: Delete rules for saber C.
+ * Makefile.in (STAGESTUFF, gnulib2.ready): Undo last change.
+
+ * tm-vax.h (LIB_SPEC): Supply missing close braces.
+
+Tue Jul 23 14:03:10 1991 Michael Meissner (meissner at osf.org)
+
+ * protoize.c (toplevel): If FULL_PROTOTYPES is defined, assume that
+ the system provides full prototypes, and include stdlib.h and
+ unistd.h.
+ (toplevel): If _POSIX_SOURCE is defined, wait takes a pointer to an
+ int, even if the system is otherwise BSD.
+ (toplevel): If NO_CONST_IN_SYSCALL and __STDC__ is defined, assume
+ the system takes char *'s instead of const char *'s.
+ (process_aux_info_file, edit_file): Always pass 3 arguments to open,
+ to allow the NO_CONST_IN_SYSCALL macro to properly cast the
+ arguments.
+
+ * make-decrose (ALL): Make sure Makefile is rebuilt if either
+ Makefile.in or make-decrose changes.
+ (BUILD, SYSTEM_INCLUDES, LDFLAGS): Add BUILD variable to retarget
+ which build is used.
+ (CPP_ABORT): Don't define abort=fancy_abort here, do it in
+ tm-mips.h.
+ (INSTALL): Use installbsd program, since install uses System V
+ semantics on OSF/1.
+ (LANGUAGES): Rename collect-osf to collect.
+ (CFLAGS, XCFLAGS): Make CFLAGS use standard args and use XCFLAGS to
+ add additional arguments.
+ (libdir, bindir, mandir): Define to current install values.
+ (cplus-lex.o): Work around problems with 1.39 bootstrap compiler
+ producing bad stabs for certain inlines.
+ (osf-main.c): Add a simple G++ constructor/destructor to gnulib.
+
+ * make-mips (ALL): Make Makefile depend on Makefile.in and
+ make-mips.
+ (CFLAGS, XCFLAGS): Make CFLAGS use standard args and use XCFLAGS to
+ add additional arguments.
+ (CC): Add -Wf,-XNg500 switch to compile with due to the MIPS
+ compiler having fixed size tables.
+ (SABER_*): Add rules to run saber-C.
+
+ * mips.md (movsi_ulw): Allow unaligned register->register moves,
+ which is caused by the optimizer, and generate the normal reg move
+ code. Also, turn loads from the stack into normal moves.
+ (movsi_usw): Turn stores into the stack into normal moves.
+ (call, call_value): Turn into a define_expand which takes three
+ arguments, to make Saber happier.
+
+ * tm-mips.h (abort macro): Define abort to be saber_stop if running
+ under Saber C.
+ (__PTR_TO_INT, __INT_TO_PTR): Define as casts if running on a MIPS
+ machine instead of with subtraction, in an attempt to quiet Saber C.
+ (ASM_MODIFY_SPEC): Run mips-tfile after the assembler, needs
+ corresponding gcc.c change to enable.
+
+ * tm-decrose.h (ASM_SPEC): Pass -v switch to gas as well as mips
+ assembler.
+ (ASM_MODIFY_SPEC): Run mips-tfile if -mmips-as.
+ (LINK_SPEC): Pass -v switch to linker.
+ (LIB_SPEC): Redefine as just -lc.
+ (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): Undefine, use standard
+ libdir, bindir, and mandir in Makefile now.
+ (FULL_PROTOTYPES, NO_CONST_IN_SYSCALL): Define to get protoize
+ to compile cleanly.
+
+ * osf-main.c (new file): Provide simple constructor, destructor
+ capability to be linked into gnulib.
+
+ * collect-osf.c (various): General rewrite to improve speed and
+ portability.
+
+ * Makefile.in (CPLUS_OBJS): If CPLUS_INPUT is defined to be
+ cplus-input.o, compile it separately to work around problems with
+ bootstraping when it is included in cplus-lex.c.
+ (STAGESTUFF): Use $(LANGUAGES) instead of hard coded list of
+ languages, so make-xxx file can override, and provide others.
+ (gnulib2.ready): Make gnulib2 depend on all LANGUAGES targets, so
+ that if a target needs something else built, such as mips-tfile, it
+ will be.
+ (mostlyclean): Add missing -f to rm.
+ (install-dir): Use test to see if the directory exists before trying
+ to create it, and fail if the mkdir fails.
+ (install-headers): ditto.
+ (stage?, risky-stage?): ditto.
+ (install-cross): Install collect and mips-tfile if they are present.
+
+ * mips-tfile.c (toplevel, main): Add -I file option, which renames
+ the original output file to the given file.
+
+ * cplus-lex.c (toplevel): Include <assert.h> instead of "assert.h"
+ in order to avoid problems when including cplus-input.c, which also
+ uses <assert.h>.
+
+ * cplus-pt.c (toplevel): Move include of config.h before obstack.h
+ in case config.h defines some macros obstack.h uses such as
+ __PTR_TO_INT.
+
+Tue Jul 23 13:15:43 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * xm-i386.h, xm-i860.h, xm-spur.h, xm-tahoe.h: Use __builtin_alloca.
+
+Tue Jul 23 12:26:01 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * function.c (instantiate_virtual_regs_1): Change dubious code that
+ used to assign NEW to XEXP (x, 1) regardless of whether
+ validate_change accepted it to instead set XEXP (x, 0) back to OLD.
+ I.e., if the rtx is out of range and OBJECT is NULL, don't make any
+ change at all.
+
+ * out-sparc.c (compute_frame_size): If a function has any
+ stack-local objects, it's frame size is non-zero and space must be
+ reserved for the register window.
+
+ * loop.c (loop_optimize): Use get_max_uid to compute max_uid_for_loop.
+
+ * fold-const.c (size_int): Extend SIZE_TABLE's range from
+ 0..HOST_BITS_PER_INT-1 to 0..2*HOST_BITS_PER_INT.
+
+ * integrate.c (expand_inline_function): Add minor efficiency
+ hack to not free all the temp slots as parameters are passed
+ from "caller" to "callee".
+
+ * integrate.c (expand_inline_function): If the inline function
+ returns its value via a structure_value_addr, we must prepare for
+ this to take place, even if the value is ignored by the caller.
+
+ * tm-decstatn.h (SIZE_TYPE): Define this to be "unsigned int".
+
+ * emit-rtl.c (try_split): If `split_insns' actually returns a SEQ
+ which is isomorphic to PAT, return TRIAL.
+
+ * out-sparc.c (eligible_for_epilogue_delay): FP register moves are
+ only eligible for leaf-function epilogue delay slots.
+
+Tue Jul 23 11:52:50 1991 Michael Meissner (meissner at geech.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_symbol): Correct typo in getting static member
+ names. The problem is DECL_ASSEMBLER_NAME returns a tree, and not a
+ char *.
+
+Tue Jul 23 07:10:41 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * varasm.c (immed_double_const): Use CONST_INT if MODE fits within
+ HOST_BITS_PER_INT, not BITS_PER_WORD.
+
+Mon Jul 22 21:37:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * fold-const.c (fold): Always preserve type after using const_binop.
+
+Mon Jul 22 18:34:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): Fix typo in condition for reg_equiv_address
+ being set from reg_equiv_memory_loc; had X instead of XEXP (X, 0).
+
+Mon Jul 22 15:25:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (process_command): -xnone turns off any -x option.
+
+ * tree.c (copy_chain): Deleted.
+ * integrate.c (copy_decl_tree): Use copy_list and copy_node.
+
+Mon Jul 22 11:35:47 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * tree.c, tree.h: Fix typos in Jul 22 merge.
+
+Mon Jul 22 08:51:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (thread_jumps): Don't set CHANGED if the jump's label isn't
+ changing.
+
+Mon Jul 22 02:37:23 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu)
+
+ * version.c: Bumped to 1.94 because of significant changes to
+ cplus-* files.
+
+Sun Jul 21 18:45:57 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * toplev.c (rest_of_compilation):
+ Save and restore DECL_INITIAL if we use save_for_inline_copying.
+ * integrate.c (save_for_inline_copying): Really copy DECL_INITIAL.
+ Calling integrate_decl_tree doesn't do it; deleted that call.
+ (copy_decl_tree): New function.
+
+ * integrate.c (integrate_decl_tree): Renamed from copy_decl_tree.
+ (integrate_parm_decls): Renamed from copy_parm_decls.
+
+ * tree.c (copy_chain): New function.
+
+Sun Jul 21 06:43:23 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (tstsi): Add comment noting potential -m486 enhancement.
+ (SImode push): With -m486, don't push from MEM.
+ (addsi3): Don't use lea for three operand add if -m486.
+ (ashlsi3): Don't use lea for shift of 1 if -m486.
+ (zero_extendhisi2,zero_extendqihi2,zero_extendqisi2): If dest is
+ %eax, or if -m486, AND is faster than MOVZX.
+
+Sun Jul 21 06:27:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expmed.c (store_fixed_bit_field): Pass actual bit position (including
+ offset) to get_best_mode; also limit mode size to BITS_PER_WORD.
+ Use failure of get_best_mode to indicate that field spans word
+ boundary.
+ Pass actual bit position to store_split_bit_field.
+ (store_split_bit_field): Accept actual bit position, hence handing
+ bitpos > BITS_PER_WORD.
+ Abort if BITPOS and BITSIZE don't cross exactly one word boundary.
+ Pass offset to store_fixed_bit_field; if register, use operand_subword;
+ else adjust offset for second word.
+ (extract_{fixed,split}_bit_field): Likewise.
+
+Sun Jul 21 06:11:55 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * All cplus-* files: DECL_VIRTUAL_P is no longer applied to
+ FUNCTION_DECLs. Instead, to test if a function is virtual or not,
+ it suffices to test whether its DECL_VINDEX is non-NULL. We use
+ ERROR_MARK_NODE as the placeholder for a FUNCTION_DECL we know will
+ be virtual, but for which we don't yet know the actual index.
+
+ * cplus-decl.c (define_function): Don't set up DECL_ASSEMBLER_NAME
+ until after having the chance to call through PFN. Since `pushdecl'
+ now keys off of DECL_ASSEMBLER_NAME, we don't want to create
+ inadvertent aliases between builtin and library functions.
+
+ * cplus-typeck.c (build_modify_expr): We don't need to build a
+ SAVE_EXPR for a WITH_CLEANUP_EXPR.
+ (unary_complex_lvalue): For good measure, know how to deal with a
+ WITH_CLEANUP_EXPR inside a SAVE_EXPR.
+
+ * cplus-pt.c (uses_template_parms): Add handler for ARRAY_TYPE.
+
+ * cplus-method.c (do_inline_function_hair): Use TYPE_METHODS instead
+ of CLASSTYPE_METHOD_VEC for traversing all methods when looking for
+ inline functions.
+
+ * cplus-class.c (finish_struct_methods): Fix fencepost error if
+ there were no member functions except for ctors/dtors.
+
+Sun Jul 21 06:19:01 1991 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * tree.h, output.h (current_function_calls_longjmp): New variable.
+ * function.c (top level): Define it.
+ (push_function_context): Save it.
+ (pop_function_context): Restore it.
+ (init_function_start): Initialize it.
+
+ * calls.c (expand_call): Set current_function_calls_longjmp if
+ this call is to `longjmp'.
+
+ * flow.c, global-alloc.c: Include output.h so that
+ FRAME_POINTER_REQUIRED can use current_function_calls_*.
+ * Makefile.in (flow.o,global-alloc.o): Includes output.h.
+
+ * rtl.h (FUNCTION_FLAGS_CALLS_LONGJMP): New macro.
+
+ * integrate.c (initialize_for_inline): Record
+ current_function_calls_lonjmp in `function_flags'.
+ (output_inline_function): Set current_function_calls_longjmp if
+ the inline code calls longjmp.
+
+ * function.h (struct function): New field `calls_longjmp'.
+
+ * out-i386.c (simple_386_epilogue): Add function description.
+ Return 0 if NON_SAVING_SETJMP && `setjmp' is called in function.
+
+ * tm-i386v.h (NON_SAVING_SETJMP): New macro.
+ (FRAME_POINTER_REQUIRED): New macro.
+
+Sat Jul 20 12:25:56 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * tm-m88k.h (OPTIMIZATION_OPTIONS): Don't change flag_signed_bitfields.
+
+ * cccp.c (include_defaults) Use LOCAL_INCLUDE_DIR macro instead
+ of "/usr/local/include". Provide default definition.
+
+ * cccp.c (include_defaults) Added INCLUDE_DEFAULTS macro to
+ provide complete control over default include directories.
+ Delete the special case for VMS.
+ * xm-vms.h (INCLUDE_DEFAULTS): Defined.
+
+ * proto-man: Renamed from proto-unproto.1.
+
+ * final.c (final_scan_insn): Do ASM_OUTPUT_LOOP_ALIGN only for real loop.
+
+Sat Jul 20 05:34:13 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
+
+ * tree.h (tree_type): Use the MAXVAL slot for TYPE_METHODS.
+ * cplus-class.c (finish_struct): Methods are now chained with
+ TREE_CHAIN and placed in the TYPE_METHODS of their _TYPE node.
+ * cplus-dbxout.c (dbxout_type_methods): Use this fact, instead of
+ using more C++-specific knowledge.
+
+ * cplus-decl.c (init_decl_processing): Variable
+ `const_ptr_type_node' was not being initialized. Same with
+ `const_string_type_node'.
+
+ * tree.h (DECL_PRINT_NAME): Marked for death.
+ (DECL_ASSEMBLER_NAME): Changed from a char* to a tree node.
+ All front-end files changed as necessary.
+
+ * cplus-tree.h (DECL_ORIGINAL_NAME): Deleted. Now we use
+ DECL_NAME.
+ (DECL_NAME): No longer means the mangled name. Now we use
+ DECL_ASSEMBLER_NAME for that purpose.
+ All cplus-* files changed as necessary.
+
+ * cplus-tree.c (lang_printable_name): Use a ring-buffer to hold
+ printable names instead of DECL_PRINT_NAME slot of a _DECL node.
+
+ * collect2.c: #define COLLECT, and let config.h provide definition
+ of macros.
+
+See file ChangeLog.3.
diff --git a/gcc/ChangeLog.5 b/gcc/ChangeLog.5
new file mode 100644
index 00000000000..c6248db5290
--- /dev/null
+++ b/gcc/ChangeLog.5
@@ -0,0 +1,8954 @@
+Sun Jun 14 16:30:07 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.2.2 released.
+
+ * Makefile.in (gcc.xtar.Z): Don't give up if texinfo files not updated.
+ Just sleep to emphasize the message.
+
+ * i860.h (PREFERRED_RELOAD_CLASS): Avoid f regs for HI and QI if poss.
+
+ * protoize.c: Don't include wait.h.
+ (gen_aux_info_file): Test wait_status as in gcc.c.
+ Report fatal signals explicitly. Report exit status.
+ * xm-next.h (wait): Definition deleted.
+
+ * sparc.c (print_operand): In `r' case, recognize any kind of zero.
+
+Sat Jun 13 02:51:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * va-sparc.h (va_arg): Handle all 8-byte types, not just double.
+
+Fri Jun 12 23:40:41 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i860v4.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT):
+ Use `e' format, not `g' format.
+
+Fri Jun 12 12:52:48 1992 Tim Moore (moore at fast.cs.utah.edu)
+
+ * pa.md (absdf2): Fix bug in output template.
+
+Fri Jun 12 10:25:25 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * ultrix.h (WCHAR_*): Set to correct values.
+
+Fri Jun 12 10:07:43 1992 Michael Meissner (meissner@osf.org)
+
+ * x-mips, x-mipsv, x-decstatn, x-iris (OLDCC): Add -Olimit 3000 to
+ bump the number of basic blocks that the MIPS compiler handles, so
+ that it doesn't issue warning messages saying to bump the limit.
+ Move the -O1 option here from X_CFLAGS, so that it doesn't
+ get passed when bootstraping.
+ (X_CFLAGS): Delete.
+
+Thu Jun 11 15:08:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sparc.h (RETURN_IN_MEMORY): Do nothing for structs and unions.
+ (EXTRA_CONSTRAINT): During reload, accept pseudo reg for Q.
+
+ * va-sparc.h (va_arg): Handle unaligned doubles.
+
+ * fixincludes: Fix return type of `free' in malloc.h.
+ Recognize #define.NULL only at start of line.
+ In sys/types.h, find size_t only in a typedef.
+ In netdnet/dnetdb.h, don't add semicolon in wrong place.
+
+ * configure: Set use_collect2 to empty rather than unsetting.
+
+ * gstddef.h (__need_wchar_t): Fix typo in #undef.
+
+Wed Jun 10 04:30:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (process_command): In gcc_exec_prefix, machine precedes vers.
+
+ * i386sco4.h (CPP_SPEC): Don't redefine __STDC__.
+ fixincludes knows how to fix the conditionals in system headers.
+
+ * collect2.c (scan_prog_file): Initialize ldptr.
+
+ * dbxout.c (dbxout_symbol): Make tag precede typedef.
+
+ * configure: Initialize host, host_xm_file, host_xmake_file,
+ host_broken_install, and broken_install.
+
+ * Makefile.in (enquire.o): Add `./' when removing enquire.c.
+
+Tue Jun 9 20:52:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.2.1 released.
+
+ * Makefile.in (clean): Don't delete unprotoize.c.
+
+ * configure: Fix typo in modifying INSTALL variable in Makefile.
+
+Mon Jun 8 15:14:09 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.2 released.
+
+ * Makefile.in (extraclean): Delete *.rej and *.orig under config.
+ Delete *.xtar.
+ (dist): Update README *before* making tar file.
+ Fix quoting of error message about gcc.texi; exit if that test fails.
+ Don't print error messages from ln.
+
+ * assert.h [__cplusplus]: Use `extern "C"' around __eprintf decl.
+
+ * configure (rs6000-*-mach*, pyramid-*-*, mips-sgi-*):
+ Patterns made canonical.
+ (rs6000-*-mach*): Fix typo in `xmake_file'.
+
+ * configure (i386-*-osfrose*): Renamed from i386-osfrose*.
+
+ * Makefile.in (.NOEXPORT): Moved after `all'.
+ Comments put on separate lines.
+
+Mon Jun 8 18:33:01 1992 Michael Meissner (meissner@osf.org)
+
+ * configure (mips-dec-osf*): Set xmake_file to x-mips.
+
+Sun Jun 7 15:55:34 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (set_spec): Fix braino in "appending" spec values.
+
+ * integrate.c (expand_inline_function): Fix dumb bug in last change.
+
+Sun Jun 7 07:16:25 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * romp.md: Disable two more define_splits during the first sched
+ pass until long-standing sched.c bug is fixed.
+
+Thu Jun 4 16:49:56 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * reorg.c (dbr_schedule): Global registers are needed at function end.
+
+Sat Jun 6 17:07:16 1992 Torbjorn Granlund (tege at david.ultra.nyu.edu)
+
+ * pyr.md (shift patterns): Declare output_shift.
+ (movdi, movdf): Declare output_move_double.
+
+Sat Jun 6 15:07:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (c-parse.o): Depend on c-parse.h.
+
+ * reload.c (find_reloads): Fix typo in format string.
+
+ * mips.c (override_options): BSD 4.3 does line buffering differently.
+
+ * Makefile.in (SYSCALLS.c.X): Put GCC output in file, not /dev/null.
+ (mostlyclean): Delete temp file.
+
+ * configure (handling broken_install): Add -c option.
+
+Sat Jun 6 11:34:00 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * gstdarg.h (va_arg): Fix typo incrementing AP.
+
+Sat Jun 6 16:27:18 1992 Michael Meissner (meissner@osf.org)
+
+ * mips-n5.h, mips-sysv.h: Include sys/param.h, not types.h.
+
+Fri Jun 5 19:00:36 1992 Howard Chu (hyc@hanauma.jpl.nasa.gov)
+
+ * fx2800.h (ASM_OUTPUT_FUNCTION_PREFIX): Output a nop before
+ every function, to accomodate tdescs. Also, save function
+ name in current_function_original_name for use in i860.c.
+ Also define OUTPUT_TDESC to get ABI-compliant tdesc info
+ generated for each function.
+
+ * i860.c (function_epilogue): Add code to output tdesc info
+ after each function. Tdesc structure versions 1-4 are
+ supported.
+
+ * i860v4.h (ASM_FILE_END) [OUTPUT_TDESC]: Output a null tdesc entry
+ after the last function in a file.
+
+Fri Jun 5 19:03:22 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (main, scan_prog_file): Use bcopy, not memcpy.
+
+Fri Jun 5 16:27:18 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h, mips.c, mips.md: Undo June 3 changes.
+
+ * mips-n5.h, mips-sysv.h (getpagesize): If _SC_PAGE_SIZE is undefined,
+ use NBPC defined in sys/types.h.
+
+Thu Jun 4 14:36:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (delete_dead_from_cse): Don't delete anything inside a libcall.
+
+ * Makefile.in (install-libgcc): Depend on install-dir.
+
+ * c-lex.c (yylex): Suppress int out of range warning if -traditional.
+
+Thu Jun 4 23:34:05 1992 Howard Chu (hyc@hanauma.jpl.nasa.gov)
+
+ * fx2800.h (DBX_OUTPUT_ENUM): Add missing argument, add a
+ missing semi-colon.
+ (ASM_OUTPUT_DOUBLE): undef definition from i860v4.h, replace
+ with definition used in i860.h.
+ (ASM_OUTPUT_FLOAT): same as above
+ Also undef MD_EXEC_PREFIX which is defined in i860v4.h.
+ Also define I860_STRICT_ABI_PROLOGUES for ABI-compliant function
+ prologues.
+
+Thu Jun 4 13:15:30 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * enquire.c (fake_f_rep): Use __extension__ to avoid pedantic warnings.
+
+ * cse.c (cse_process_notes): Don't stick VOIDmode into *_extract.
+
+ * c-decl.c (get_parm_info): For forward parm decls, check for
+ non-parm before checking TREE_ASM_WRITTEN.
+
+Thu Jun 4 13:57:47 1992 Tim Moore (moore at defmacro.cs.utah.edu)
+
+ * pa.h (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Delete
+ FP_OR_SNAKE_FP_REGS (useless), add GENERAL_OR_FP_REGS,
+ GENERAL_OR_SNAKE_FP_REGS.
+ (ASM_DECLARE_FUNCTION_NAME): Handle DImode arguments correctly.
+ (PROFILE_BEFORE_PROLOGUE, FUNCTION_PROFILER): Do the same thing
+ for BSD and HPUX.
+
+ * pa.c (output_function_prologue): Do profiling right (compatible
+ with HPUX).
+ (output_arg_descriptor): Handle DImode argument registers.
+
+Thu Jun 4 13:48:24 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): Count reload register used by caller-save
+ handling in any basic block that contains a CALL_INSN.
+
+Thu Jun 4 09:23:19 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i860v4.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Remove leading 0r.
+ (ASM_OUTPUT_FLOAT): Use .float (not .single).
+
+Fri Jun 5 14:58:43 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * pyr.h (REGNO_OK_FOR_{INDEX,BASE}): Correctly test reg_renumber.
+ * configure (pyramid): Turn it back on.
+
+Thu Jun 4 11:26:55 1992 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu)
+
+ * pa.c (output_move_double): Handle overlapping moves between
+ registers.
+
+Wed Jun 3 22:08:18 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (fold, NOP_EXPR case): Don't drop intermediate in
+ (unsigned int) (unsigned short) char-variable.
+
+Wed Jun 3 11:18:43 1992 Ron Guilmette (rfg at ncd.com)
+
+ * stdarg.h (va_arg): Use casts to avoid doing (pedantically invalid)
+ arithmetic on `void *' values when __svr4__ is defined.
+
+Wed Jun 3 17:51:21 1992 Torbjorn Granlund (tege@zevs.sics.se)
+
+ * longlong.h (sparc): Test symbol __sparcv8__ for sparc.h conformance.
+
+Wed Jun 3 16:22:38 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (print_operand): Correct typo.
+ (sparc_type_code): Correctly handle C int and float types.
+
+ * sparc.h (CONSTANT_ALIGNMENT): Align strings to 8 byte boundary.
+ (DATA_ALIGNMENT): Likewise for character arrays.
+
+ * i960.c (function_prologue): Fixed calculation of offsets for
+ compiler's register save area.
+
+ * sparc.md (mulsi3,mulsidi3,umulsidi3,divsi3,udivsi3): Patterns
+ added to support V8 sparc architectures.
+ * sparc.h (TARGET_DEFAULTS): Add -mv8 and -msparclite options.
+
+ * reload1.c (reload): If can't satisfy reload for a group of more
+ than two registers, then abort to avoid an infinite loop.
+ (count_possible_groups): Skip to last reg of group, not first reg
+ of next group.
+
+Wed Jun 3 14:35:00 1992 Tom Wood (wood at gen-rtx)
+
+ * c-lex.c (yylex): Let skip_white_space handle \r.
+
+ * expr.c (expand_builtin, fsqrt case): Stabilize the argument in
+ case a library call is done.
+
+ * final.c (final_scan_insn): Function begin, and block begin/end
+ notes are "real" in that they depend on the current line number.
+
+Wed Jun 3 14:34:28 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (andsi3_internal2): Fix typo in previous change, to
+ use %3, the clobbered register, instead of %@, the assembler
+ temporary.
+ (iorsi3_internal2): Ditto.
+ (xorsi3_internal2): Ditto.
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 20.
+ (final_prescan_insn): Add declaration.
+ (lui_int): Add declaration.
+ (FINAL_PRESCAN_INSN): Just call final_prescan_insn.
+
+ * mips.c (lui_int): New function, return true if value fits in a
+ LUI instruction.
+ (final_prescan_insn): Move the checking for filling the delay
+ slots here from the FINAL_PRESCAN_INSN macro. If the safe
+ attribute is set, we do not need a NOP to fill a load delay slot.
+
+ * mips.md (safe attribute): New attribute to indicate that the
+ current insn is safe to fill a delay slot even if the register
+ operand(s) are set in the load instruction which has the delay
+ slot. This is for and/ior/xor expansions that have a large
+ constant integer as operand[2]. The load of the constant can
+ overlap the load.
+ (andsi3, iorsi3, xorsi3): Replace logical define_insn's with
+ define_expand's that either map directly to the hardware
+ instruction, or have a clobbered register to load the large
+ constant into. This is instead of using $1 to hold the
+ intermeidate value. Set the safe attribute to yes for the cases
+ where we need to load the integer. Add define_split's to break
+ the large logical operations into the separate pieces.
+
+Wed Jun 3 00:00:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (do_warning): Do just a warning, not an error.
+
+Tue Jun 2 17:30:09 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (cse_basic_block): When a jump becomes unconditional,
+ check whether this caused TO to be deleted.
+
+Tue Jun 2 16:11:42 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst, case IF_THEN_ELSE): Don't try reversing
+ something that isn't a comparison.
+
+Tue Jun 2 16:50:47 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cccp.c (do_pragma): Don't warn about #pragma once if used in a
+ system header file.
+
+Tue Jun 2 15:21:07 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 19.
+ (ASM_OUTPUT_DOUBLE): Call mips_output_double.
+ (ASM_OUTPUT_FLOAT): Call mips_output_float.
+
+ * mips.c (mips_output_double): If REAL_VALUE_TO_TARGET_DOUBLE is
+ defined, use it to split the floating point value into 2 long
+ integers, and print them out in hex. Otherwise use .double.
+ (mips_output_float): If REAL_VALUE_TO_TARGET_FLOAT is defined, use
+ it to split the floating point value into a long integer, and
+ print in out in hex. Otherwise use .float.
+
+ * dec-osf1.h (new file): Config file for DEC's offical OSF/1
+ product (as opposed to the OSF/1 reference port from OSF).
+
+ * configure: Support mips-dec-osf1 target.
+ * config.sub: Support mips-dec-osf1 target.
+
+ * decstatn.h (CPP_PREDEFINES): If CPP_PREDEFINES is defined, don't
+ supply another definition. Also, define _SYSTYPE_BSD.
+
+Mon Jun 1 00:04:01 1992 Ron Guilmette (rfg at ncd.com)
+
+ * gstdarg.h (va_list) [__svr4__]: Typedef it to `void *'.
+ * va-sparc.h (__va___list) [__svr4__]: Typedef this as `void *'.
+
+Sun May 31 15:26:32 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * calls.c (stack_arg_under_construction): New variable.
+ (store_one_arg): Set stack_arg_under_construction before calling
+ expand_expr if expand_expr might call a constructor to initialize
+ a stack argument.
+ (expand_call): Push the stack around function calls if
+ stack_arg_under_construction is nonzero.
+ Also copy structure_value_addr in that case.
+ Push the stack around an inline function if it makes calls
+ and there are outgoing arguments on the stack which must be preserved.
+ Move the call to expand_cleanups_to before that.
+ Do this stack adjustment before computing argument locations.
+
+Sun May 31 01:03:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sdbout.c (sdbout_symbol): Test DECL_IGNORED_P only for
+ variables and types.
+ * dwarfout.c (output_decl): Never ignore a FUNCTION_DECL
+ even if DECL_IGNORED_P is set.
+
+Sat May 30 07:07:55 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h, romp.h (FUNCTION_ARG): Fix typo in last change.
+
+ * combine.c (subst, significant_bits, simplify_comparison):
+ Only look at STORE_FLAG_VALUE if comparison result is integer.
+
+Fri May 29 18:04:45 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (output_decl): Moved test for ERROR_MARK node out of
+ switch statement and added a test for DECL_IGNORED_P after that.
+ (dwarfout_file_scope_decl): Check input node to see if it is an
+ ERROR_MARK before checking for DECL_IGNORED_P. Also makes sure that
+ any node marked as DECL_IGNORED_P isn't also a function definition.
+
+Fri May 29 14:46:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * integrate.c (expand_inline_function):
+ Don't discard setting return value from a volatile source.
+
+ * c-decl.c (init_decl_processing): If traditional, strlen returns int.
+ (sizet_ftype_string): Deleted.
+
+ * expr.c (expand_builtin, fsqrt case): Return proper mode if arg error.
+
+Fri May 29 13:36:32 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (m88k_builtin_saveregs): Don't copy result to a register.
+
+ * m88k.h (FIXED_REGISTERS): Allow use of r1.
+ (REG_LEAF_ALLOC_ORDER): Choose r1 last.
+ (REG_ALLOC_ORDER): Choose r1 before any preserve register.
+ (ORDER_REGS_FOR_LOCAL_ALLOC): Switch between orderings.
+ * m88k.c (m88k_layout_frame): Save r30 when used as an ordinary
+ register.
+
+ * m88k.h (CHECK_FLOAT_VALUE): Delete, not needed.
+ * m88k.c (check_float_value): Delete, not needed.
+
+ * m88k.c (mostly_false_jump): Fix return check.
+
+ * m88k.md (mstore type): Delete.
+ (return, indirect_jump): These are jumps, not branches.
+ * m88k.c (eligible_for_epilogue_delay): No TYPE_MSTORE insns.
+
+Fri May 29 12:33:21 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (emit_reload_insns): Add missing arg to gen_input_reload.
+
+Fri May 29 06:43:15 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h, romp.h (FUNCTION_ARG): Don't put variable-sized
+ operands in registers.
+
+ * explow.c (emit_stack_{save,restore}): Don't call validize_mem
+ on a null rtx.
+
+ * cse.c (cse_insn): Don't call canon_reg on entry from
+ hash table; instead, call it after we did the substitution.
+
+Thu May 28 18:47:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (malloc.h): Allow space or tab btwn typedef and char.
+
+Thu May 28 17:35:37 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_as_needed): Properly disable optional reload
+ that we can't do.
+ Don't abort if disabled reload uses a register we don't have.
+
+Thu May 28 14:43:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * next.c (get_directive_line): Declare it.
+
+ * defaults.h (ASM_OUTPUT_ASCII): Use unsigned chars.
+
+ * i860v4.h, i386v4.h, sparcv4.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE):
+ Use the override definitions only if word order matches host.
+
+Wed May 27 17:32:36 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (find_splittable_givs): When completely unrolling loop,
+ precompute giv value into a reg before loop if it is complex.
+
+ * sparc.c (singlemove_string): Handle SFmode CONST_DOUBLE.
+ * sparc.h (PREFERRED_RELOAD_CLASS): Don't allow reloads of
+ constants to FP registers, nor reloads of FP constants that won't
+ match the 'E' constraint.
+ * sparc.md (movsf-1): Add pattern to efficiently handle SFmode
+ constants.
+
+ * sparc.md (lo_sum:DI pattern): Use constraint "0" for operand 1.
+
+ * i960.h (OVERRIDE_OPTIONS): Disable function inlining.
+
+ * function.c (assign_parms): When MAYBE_REG_PARM_STACK_SPACE,
+ don't assume that register parameters already have a stack slot.
+ * i960 (*): Change all tests of current_functions_args_size from
+ 48 to 0 due to above change.
+ * i960.md (*): Likewise.
+
+ * sparc.h (LONG_DOUBLE_TYPE_SIZE): Add ifdefed out definition.
+ (FIXED_REGISTERS): g4 is not a fixed register.
+ (RETURN_IN_MEMORY): Define.
+ (FUNCTION_ARG_PASS_BY_REFERENCE): Also pass TFmode by reference.
+
+ * fixincludes: Fix stdio.h and math.h for Ultrix 4.0.
+
+Tue May 26 15:29:21 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * x-we32k: new file, need alloca.o
+ * xm-we32k.h [NO_SYS_SIGLIST]: define this
+ * we32k.h [STRICT_ALIGNMENT] define as `1'
+ [NO_WAIT_H]: also define this
+ * collect2.c [NO_WAIT_H]: don't include sys/wait.h if this is
+ defined.
+
+ * Makefile.in (clean): rm libgcc1.null.
+
+Wed May 27 15:36:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * real.h (REAL_VALUE_TO_TARGET_SINGLE): Test HOST_BITS_PER_WORD right.
+
+ * i386sco.h (SIZE_TYPE): New definition.
+
+ * c-typeck.c (build_binary_op): When shortening, handle case
+ where op0 and arg0 are different but have same width. op1/arg1 too.
+
+ * toplev.c (compile_file): Cast xmalloc when arg to setvbuf.
+
+ * expmed.c (expand_divmod): Clear can_clobber_op0 if doing mod.
+
+ * Makefile.in (protoize.1, unprotoize.1): Delete target before mv'ing.
+ (mostlyclean): Delete tmp-unproto.1.
+
+ * sdbout.c (sdbout_symbol, sdbout_toplevel_data): Test DECL_IGNORED_P.
+ * dwarfout.c (dwarfout_file_scope_decl): Likewise.
+
+Wed May 27 13:48:36 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (ashldi3,ashrdi3,lshrdi3): Fix typo in comparison.
+
+Wed May 27 02:11:22 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i386v4.h, i860v4.h, sparcv4.h: Include real.h.
+ (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE):
+ New definitions, if host and target formats match.
+
+ * real.h (REAL_VALUE_TO_TARGET_SINGLE, REAL_VALUE_TO_TARGET_DOUBLE):
+ Defined, but only if host and target formats match.
+
+Wed May 27 06:20:26 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_as_needed): For asm insn, check all reload
+ insns for validity.
+ (emit_reload_insns, gen_input_reload): Remove previous change that
+ checked them here.
+ * recog.c (constrain_operands, case 'm', 'o', 'g'): Accept pseudo if
+ reload is in progress.
+
+Tue May 26 19:24:21 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (combinable_i3pat): Allow a hard register as the
+ destination even if SMALL_REGISTER_CLASSES if source is a CALL.
+
+ * emit-rtl.c (gen_lowpart_common): Fix handling of int->float
+ union conversions.
+
+Tue May 26 19:23:43 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * a29k.h (HARD_REGNO_MODE_OK): Don't let anything larger than
+ UNITS_PER_WORD be allocated to an odd numbered register.
+
+Tue May 26 15:22:27 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub (defaulting the OS): Separate subversions with periods.
+
+ * limits.h: Fix condition for defining long-long macros, to suit libc.
+
+ * Makefile.in (specs): New target.
+ (gcc): Don't write `specs' here.
+ (start.encap): Depend on `specs'.
+ (all.cross): Depend on EXTRA_PARTS.
+ (rest.cross): New target.
+
+ * c-common.c (declare_function_name):
+ Set TREE_USED, not TREE_NO_UNUSED_WARNING.
+
+Tue May 26 04:52:53 1992 Michael Meissner (meissner@osf.org)
+
+ * loop.c (loop_has_volatile): New static variable to record
+ whether the loop has any volatile references in it.
+ (prescan_loop): Set loop_has_volatile.
+ (check_dbra_loop): Don't reverse loop if there are any volatile
+ references in it.
+
+Mon May 25 16:04:08 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386gas.h (ASM_OUTPUT_OPCODE): Translate "repnz" to "repne".
+ * seq386gas.h (ASM_OUTPUT_OPCODE): Likewise.
+
+Mon May 25 15:53:31 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (emit_indirect_jump): Emit barrier here.
+ * stmt.c (expand_computed_goto): Not here.
+
+Mon May 25 06:22:59 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (canon_reg): Must call validate_change if insn has any
+ MATCH_DUPs even if replacing a pseudo with another pseudo.
+
+ * explow.c (emit_stack_{save,restore)}: Call validize_mem on save area.
+
+ * combine.c (simplify_shift_const, case PLUS): Simplify cases where
+ the PLUS is just turning on bits that will be shifted out.
+
+ * emit-rtl.c (gen_lowpart_common): Add new case for single-word
+ float->integer conversion; all others already present.
+ Check for -fpretend-float in this and the other cases.
+
+ * stmt.c (expand_goto): Fix typo in previous change.
+
+ * reload1.c (gen_input_reload): When checking for validity of
+ reloads made for asms, also check the constraints.
+
+ * explow.c (allocate_dynamic_stack_space): Don't add to size
+ if we aren't going to need to align the size.
+
+ * fold-const.c (fold, case *_DIV_EXPR): Fold (a * C1) / C2 for
+ some C1 and C2.
+
+Sun May 24 14:07:53 1992 Ron Guilmette (rfg at ncd.com)
+
+ * toplev.c (main):
+ Fix typo setting use_gdb_dbx_extensions in xcoff case.
+
+ * c-decl.c (pushdecl): Call `build_type_copy' rather than calling
+ `c_build_type_variant' to duplicate a type.
+
+Sun May 24 16:56:09 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): Refine setting of basic_block_needs.
+
+Sun May 24 15:43:08 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * combine.c (try_combine): Don't split an insn if that would move
+ a use of a register across a set of the same register.
+
+Sun May 24 14:50:38 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (constrain_asm_operands): Ignore constraint letters
+ following '#' in each alternative.
+
+Sun May 24 02:28:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (pexecute): New alternative definition for OS2.
+ Take SEARCH_FLAG as arg instead of FUNC.
+ (execute): Change call to pexecute.
+
+ * toplev.c (main): Don't run ps for -dm if on OS2.
+
+ * cccp.c (main): Use PATH_SEPARATOR computing num_dirs.
+ (path_include): Likewise, setting q.
+
+ * gcc.c: Include sys/file.h.
+
+ * Makefile.in (extraclean): Delete install1.texi.
+
+Sat May 23 14:14:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * crtstuff.c (__do_global_ctors) [not INVOKE__main]: Make body empty.
+
+ * fold-const.c (float_error): Renamed from const_binop_error.
+ (const_binop, fold_convert):
+ Call set_float_handler around REAL_VALUE_TRUNCATE.
+
+ * Makefile.in ($(srcdir)/INSTALL): New target.
+ (doc): Depend on that.
+ ($(srcdir)/gcc.info, $(srcdir)/cpp.info): Delete $(srcdir) from deps.
+ ($(srcdir)/gcc.info): List all subfiles as deps.
+
+ * math-68881.h: Use %! instead of fpcr.
+
+ * install.sh: New file.
+ * configure: Changed install_with_cp to broken_install.
+ Test that flag for the host, not for the target.
+ If set, use install.sh.
+
+ * Makefile.in (EXTRA_HEADERS): New variable.
+ (USER_H): Use that.
+ * configure: Let alternatives set EXTRA_HEADERS via var header_files.
+ (m68k-...): Set header_files to install math-68881.h.
+
+ * Makefile.in (install-dir): Create (libsubdir)/include.
+ (install-limits-h, install-float-h): Depend on install-dir.
+
+ * Makefile.in (gcc.xtar): Warn if version in gcc.texi is old.
+
+ * genconfig.c (main): Add 1 when outputting MAX_RECOG_OPERANDS.
+ Initialize to just 9.
+
+ * gcc.c (MD_STARTFILE_PREFIX_1): New config macro.
+ (main): Use that like MD_STARTFILE_PREFIX.
+
+Sat May 23 08:13:38 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * reload1.c (reload): Copy MEM_IN_STRUCT_P flag when converting
+ pseudo register to equivalent memory location.
+
+Sat May 23 07:12:15 1992 Michael Meissner (meissner@osf.org)
+
+ * x-iris (OLDCC): Add -cckr to turn off strict ANSI checking.
+
+ * mips.c (current_function_name): Delete definition, function.c
+ defines this and mips.h has a declaration.
+
+ * longlong.h (mips umul_ppmm): Use "d" constraint instead of "r", so
+ that we know the value is an integer register.
+
+Sat May 23 01:14:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * vax.h (PRINT_OPERAND): Undo last change.
+ Fix the comment instead.
+
+ * x-dpx2200, x-dpx2300 (ALLOCA_FINISH, AS): New variables.
+
+Fri May 22 01:52:22 1992 Ron Guilmette (rfg at ncd.com)
+
+ * svr4.h (MD_EXEC_PREFIX): Added definition.
+
+ * protoize.c [POSIX]: Include dirent.h rather than sys/dir.h.
+ (_POSIX_SOURCE): Undef before defining.
+ (getpwd): Change declaration to an `extern'.
+ (open): Add declaration in the #if 0 section along with fprintf.
+ (link, unlink, access, execvp): Add `extern' declarations.
+ (strlen): Don't mention arg type in declaration.
+ (main): Declare `params' as `const char *' to avoid botch when doing
+ test-protoize-simple.
+
+Fri May 22 17:15:36 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * calls.c (expand_call): Allocate stack space for arguments passed
+ in registers when OUTGOING_REG_PARM_STACK_SPACE is defined and
+ stack space has not been preallocated.
+
+Fri May 22 17:16:55 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_comparison): Try to reduce size of a
+ constant by changing comparison code; don't only do for 1 and -1.
+
+ * reload.h (reg_equiv_memory_loc): Declare.
+ * reload.c (refers_to_regno_for_reload_p): Use reg_equiv_memory_loc
+ instead of reg_equiv_mem and reg_equiv_address; look for constant.
+ (reg_overlap_mentioned_for_reload_p): LIkewise.
+ Use new function to check for MEM.
+ (refers_to_mem_for_reload_p): New function.
+ * reload1.c (reg_equiv_memory_loc): No longer static.
+
+Fri May 22 17:15:12 1992 Ron Guilmette (rfg at ncd.com)
+
+ * Makefile.in (test-protoize-simple): Only delete files made by this
+ target (not the man pages!)
+ (test-protoize-simple): Use -x option to avoid munging getopt.h.
+ (test-protoize-simple): Fixed number of differences message.
+ (mostly-clean): Properly remove all temp files relating to protoize/
+ unprotoize.
+ (install-common): Force removal of previously installed g++ and c++
+ command files before trying to install new ones.
+
+ * spc-sol2.h: New file.
+
+ * configure (sparc-*-solaris2*): New configuration added.
+
+ * x-sparcv4 (X_CFLAGS): Removed -Bstatic and -dn options.
+
+Fri May 22 15:30:05 1992 Chip Salzenberg (chip@tct.com)
+
+ * c-common.c (declare_function_name): Move from c-decl.c.
+ Construct function names instead of expecting them as parameters.
+ Set TREE_READONLY and other attributes before calling pushdecl.
+ * c-decl.c (init_decl_processing, store_parm_decls): Calls changed.
+ (declare_function_name): Remove to c-common.c.
+
+ * cp-decl.c (init_decl_processing, store_parm_decls):
+ Call declare_function_name.
+
+Fri May 22 12:15:16 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparcv4.h (ASM_OUTPUT_CASE_LABEL): Define.
+
+Fri May 22 11:40:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * x-dpx2200, x-dpx2300 (CFLAGS): Definition deleted.
+
+ * c-decl.c, cp-decl.c (pushdecl): No shadow warnings if DECL_IGNORED_P.
+
+ * c-decl.c (declare_function_name):
+ Change names to __FUNCTION__ and __PRETTY_FUNCTION__
+
+ * vax.h (PRINT_OPERAND): In M case, don't complement after subtract 1.
+
+ * c-lex.c (yylex): Use pedwarn for overflow warnings.
+ Pedwarn if constant doesn't fit its type.
+
+Fri May 22 13:32:39 1992 Chip Salzenberg (chip@tct.com)
+
+ * xcoffout.h (DBX_TYPE_DECL_STABS_CODE): Was DBX_DECL_STABS_CODE.
+
+Fri May 22 08:31:16 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * longlong.h (all machines): Define UMUL_TIME and UDIV_TIME.
+ Auxiliary formatting changes.
+ (header): Define __CLOBBER_CC and __AND_CLOBBER_CC.
+ (__sparc__ macros): Use them.
+ (__hppa__ add_ssaaaa,sub_ddmmss): Accept zero using `M' constraint.
+ (__hppa__ umul_ppmm): Define if _PA_RISC1_1.
+ (__mc88110__ umul_ppmm,udiv_qrnnd): New.
+ (__pyr__ umul_ppmm): Rewrite.
+ (default count_leading_zeros): Make it work for 64 bit longs.
+
+Fri May 22 06:27:31 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Invalidate a volatile destination.
+
+ * expmed.c (expand_divmod): Correctly handle volatile operands.
+
+Fri May 22 06:26:50 1992 Chip Salzenberg (chip@tct.com)
+
+ * rs6000.h (ASM_DECLARE_FUNCTION_NAME): Use new function
+ xcoffout_declare_function.
+ * rs6000.c (output_epilog): Shorten internal label.
+ (output_toc, output_function_profiler): Likewise.
+ * xcoffout.c (xcoffout_declare_function): New function, created
+ to localize knowledge of end-of-function internal label.
+ (xcoffout_end_epilogue): Shorten internal label.
+
+Thu May 21 15:31:42 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * reorg.c (relax_delay_slots): Clear INSN_FROM_TARGET_P when
+ remove insns from a delay slot.
+
+Thu May 21 13:54:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads):
+ Don't abort for % in last operand in asm_operands.
+
+ * alloca.c: Make symlink to master copy.
+
+ * stmt.c (expand_asm_operands): Count nclobbers properly.
+
+ * explow.c (allocate_dynamic_stack_space): Call mark_reg_pointer.
+
+ * c-parse.y (stmt, WHILE case): Start loop *after* parsing end test.
+ (do_stmt_start): Broken out from DO rule.
+ (stmt, DO case): Use that.
+ Add error-handler rule for parse error in end test.
+
+ * sparc.h (ADDITIONAL_REGISTER_NAMES): Support `cc'.
+
+ * c-lex.c (yylex): Pedwarn if `f' constant exceeds range of `float'.
+ Just once even if `f' appears twice.
+ This and the like warning for `double' are only if -pedantic.
+
+Thu May 21 08:46:30 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * Makefile.in (STAGESTUFF): Add stamp-proto.
+
+Thu May 21 04:04:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * svr3.h (LOCAL_LABEL_PREFIX): Override as a period.
+ (ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL):
+ Use LOCAL_LABEL_PREFIX.
+ * dpx2.h (LOCAL_LABEL_PREFIX): Definition deleted.
+ * tower-as.h (LOCAL_LABEL_PREFIX): Override as empty.
+
+Wed May 20 23:29:15 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * config-gcc.com: Take care of situation if sources are NFS mounted.
+
+Wed May 20 14:35:10 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Add additional validation check to
+ case that detects "if (foo) bar++;".
+
+Wed May 20 13:18:09 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * pa.md : Changed "xy" constraints to "x" constraints.
+ (movsi+6): Let "r" registers match too. Add define_split to change
+ into 2 insns if needed.
+ (decrement_and_branch_until_zero): New pattern.
+ * pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Fix for TYPE == 0.
+ (REGISTER_MOVE_COST): Do stuff for SNAKE_FP_REGS.
+ (PRINT_OPERAND_ADDRESS): Write CONST_INT case.
+
+Wed May 20 00:04:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * ns32k.h (NS32K_DISPLACEMENT_P): Fix typo.
+ * ns32k.md (extzv-1): New pattern for extracting from SImode.
+
+ * c++: -M suppresses -lg++.
+
+ * svr3.h (DO_GLOBAL_CTORS_BODY): Flush spurious #endif.
+
+ * reload1.c (gen_input_reload): New arg IS_ASM. Can now return 0.
+ (emit_reload_insns): Pass new arg. Error if it returns 0.
+
+ * configure: Use $cpu_type to default $tm_file.
+
+ * configure, config.sub: Correct we32 to we32k.
+ * configure (decstation-dec): Deleted--doesn't fit as machine alias.
+ (we32k): Add company default.
+ (fx2800): This is a machine alias, not a company default.
+
+ * configure (i386-*-bsd*, we32-att-sysv*, m68k-crds-unos*):
+ Missing *'s added at ends of config names.
+
+ * c-typeck.c (convert_arguments): Use warn_for_assignment to handle
+ -Wconversion. Fix typo in width-mismatch test.
+
+ * svr3.h (ASM_GENERATE_INTERNAL_LABEL): Put a * at the front.
+
+Tue May 19 21:53:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (clean): Add -f in rm *.dvi.
+
+ * x-dpx2200, x-dpx2300 (CFLAGS): Make value conditional on CC.
+
+ * genattrtab.c (simplify_test_exp, evaluate_eq_attr):
+ Delete tests of current_alternative_string; they caused bugs.
+
+ * cross-test.c: New file.
+ * Makefile.in (cross-test, cross-test.o): New targets.
+ (all.cross): Depend on cross-test.
+
+ * c-decl.c (declare_function_name): Fix bug in previous change.
+
+Tue May 19 19:57:39 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * i960.h (FUNCTION_ARG_BOUNDARY): Return mode's alignment if type 0.
+
+ * calls.c (expand_call): Set MEM_IN_STRUCT_P for aggregate return
+ values in memory.
+
+ * function.c (locate_and_pad_parm): Use MAYBE_REG_PARM_STACK_SPACE
+ if defined.
+ * i960.c (i960_function_arg_advance): Put MUST_PASS_IN_STACK
+ parameters on the stack.
+ (i960_function_arg): Likewise.
+
+ * m68k.md (zero_extendqisi2+1): Add condition to exclude MEM/MEM
+ case which would require reloading.
+
+ * unroll.c: Delete incorrect Feb 26 1992 change.
+ (copy_loop_body): For combined address givs, scale giv_inc by the
+ two giv's multiplicative factors if they are different.
+
+ * i960.md (zero_extendqisi2): Add comment.
+
+ * combine.c (apply_distributive_law): Don't distribute subregs
+ which change the mode class.
+
+ * fixincludes: Fix memory.h for SunOS.
+
+ * sparc.h (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CCFPEmode, for
+ compares which should generate exceptions for qNaNs.
+ (SELECT_CC_MODE): Use CCFPEmode for non EQ/NE FP compares.
+ * sparc.c (normal_comp_operator): Handle CCFPEmode.
+ (C_MODES, output_cbranch): Likewise.
+ * sparc.md (cmpdf, cmpsf): Modify patterns to use fcmpe for CCFPE
+ mode, and fcmp for CCFP mode.
+
+ From rfg:
+ * sparc.h: Declare output_move_quad, output_fp_move_quad and
+ output_floatsitf2.
+ * sparc.c (mem_aligned_8): New function.
+ (output_move_double): Clean up a little. Call mem_aligned_8.
+ Load operands[] into register variables for efficiency.
+ (output_move_quad, output_fp_move_quad): New functions.
+ (output_floatsitf2): New function.
+ (print_operand): Support 'S' and 'T'.
+ * sparc.md (cmptf, movtf, extendsftf2, extenddftf2, trunctfsf2,
+ trunctfdf2, floatsitf2, fix_trunctfsi2, addtf3, subtf3, multf3,
+ divtf3, negtf2, abstf2, sqrttf2): New patterns added for TFmode
+ support.
+
+Tue May 19 19:34:10 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i386v4.h (DBX_REGISTER_NUMBER): Fixed DWARF numbers for
+ x86 floating-point registers.
+
+Tue May 19 15:30:32 1992 Mats Lofkvist (d87-mal@nada.kth.se)
+
+ * fixincludes: Fix return type of malloc and friends.
+
+Tue May 19 13:30:16 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub (iris4d): If $os is some kind of Irix, don't clobber it.
+ Make the default -irix4.
+
+ * c-decl.c (declare_function_name): New arg printable_name.
+ Declare __PRINTABLE_NAME__.
+ (init_decl_processing, store_parm_decls): Pass the new arg.
+
+Tue May 19 09:50:01 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (output_options): Check profile_block_flag.
+ (m88k_layout_frame): Ditto.
+ (output_function_block_profiler): Save and restore the parameter
+ registers when calling __bb_init_func.
+ (output_block_profiler): Use @LPBX2.
+
+ * m88k.h (CASE_VECTOR_INSNS): Choose a table of branch
+ instructions or addresses. The latter is a win for the m88110.
+ (ASM_OUTPUT_CASE_END): Nothing needed for table of addresses.
+ (ASM_OUTPUT_ADDR_VEC_ELT): Use "br" or "word".
+ * m88k.md (casesi, casesi_jump): Updated.
+
+ * m88k.md (m88110 function units): Count in half cycles.
+
+ * m88k.md (call insns): Clobber rather than use r1.
+
+ * m88k.c (m88k_layout_frame): Fix m88k_fp_offset for zero case.
+
+Mon May 18 10:38:20 1992 Michael Meissner (meissner@osf.org)
+
+ * iris.h (DEFAULT_SIGNED_CHAR): Define as 0 for compatibility with
+ IRIS defaults. Patch from kevin@tamri.com (Kevin Dalley).
+
+ * xm-irix4.h (HAVE_VPRINTF): Define.
+
+ * x-iris (CLIB): Add -lmalloc.
+
+ * mips.md (fp_comp functional unit): Use adder functional unit
+ instead to more closely model MIPS behavior and make genattrtab
+ faster.
+ (transfer functional unit): Use memory functional unit instead.
+ (sqrt functional unit): Use divide functional unit instead.
+ (branch_zero): If CSE has folded a value which is constant, and
+ the jump would be omitted, do not eliminate putting a jump there.
+ This causes bad code to be generated when using gas, since the
+ previous instruction may be a load which had it's delay slot
+ filled by the 'branch', and the next instruction depends on the
+ value loaded.
+
+ * mips-at.c (whole file): Delete, no longer needed.
+
+ * mips-at.md (whole file): Delete, no longer needed.
+
+ * Makefile.in (stamp-attrtab): Remove $(srcdir) in front of
+ $(PREMADE_ATTRTAB) so that MIPS builds can be done in
+ subdirectories.
+
+ * t-decrose (PREMADE_ATTRTAB*): Don't define, genattrtab is now fast
+ enough that we don't have to save a pre-made genattrtab.c.
+ (LIBGCC1): Use libgcc1.null rule to turn off building libgcc1.a.
+
+ * t-decstatn (PREMADE_ATTRTAB*): Don't define, genattrtab is now fast
+ enough that we don't have to save a pre-made genattrtab.c.
+ (LIBGCC1): Use libgcc1.null rule to turn off building libgcc1.a.
+
+ * t-mips (PREMADE_ATTRTAB*): Don't define, genattrtab is now fast
+ enough that we don't have to save a pre-made genattrtab.c.
+ (LIBGCC1): Use libgcc1.null rule to turn off building libgcc1.a.
+
+ * mips.h (ASM_OUTPUT_CONSTRUCTOR,ASM_OUTPUT_DESTRUCTOR): Define.
+ Patch from wilson@cygnus.com.
+ (DEFAULT_SIGNED_CHAR): Don't define if already defined.
+
+Mon May 18 01:34:38 1992 Kayvan Sylvan (kayvan@satyr.Sylvan.COM)
+
+ * svr3.h (DO_GLOBAL_CTORS_BODY): Start at end, if STACK_GROWS_DOWNWARD.
+
+Mon May 18 01:34:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (protoize.o, unprotoize.o):
+ Do nothing, but depend on stamp-proto.
+ (stamp-proto): New target. Compile both protoize.o and unprotoize.o.
+
+ * configure (ns32k-ns-genix): Commented out.
+
+ * expmed.c (expand_mult): Use synth_mult even if not -O.
+
+Sun May 17 02:54:21 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (push_parm_decl): Pedantic warning if shadowing typedef.
+
+ * c-typeck.c (constant_expression_warning): New function.
+ (store_init_value): Call that.
+ * tree.h (TREE_CONSTANT_OVERFLOW): New flag.
+
+ * c-lex.c (yylex): "exceeds range" warning changed to pedwarn.
+ * c-decl.c (grokdeclarator): Likewise for duplicate keywords.
+
+ * c-typeck.c (build_unary_op): For increment operators,
+ test TREE_READONLY in operand, not the data type.
+
+ * unprotoize.c: New file.
+ * Makefile.in (unprotoize.o): Use that.
+
+ * c-decl.c (init_decl_processing): Make global decl for __NAME__.
+ (store_parm_decls): Make local decl for __NAME__.
+ (declare_function_name): Subroutine for that.
+ * toplev.c (rest_of_decl_compilation):
+ Ignore initialized statics if DECL_IGNORED_P is set.
+ * c-lex.c (yylex): Convert invisible initialized char array vars
+ to string constants.
+
+ * c-decl.c (get_parm_info): Change error message.
+
+Sat May 16 21:25:21 1992 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (fold): Do not fold X-X to 0 if X is floating point.
+
+ * cse.c (simplify_unary_operation): - -X simplifies to X even
+ with IEEE floating point.
+
+Sat May 16 14:14:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (clean): Delete *.dvi.
+ (distclean): Not here.
+
+ * Makefile.in (install-man): Ignore errors in all commands.
+
+ * combine.c (expand_compound_operation):
+ Don't simplify extending a const_int.
+
+ * ns32k.h (NS32K_DISPLACEMENT_P): New macro.
+ (INDIRECTABLE_1_ADDRESS_P): Use that.
+ * ns32k.md (addsi3): Likewise.
+
+Sat May 16 07:47:11 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h: Override SET_ASM_OP in svr4.h.
+
+Sat May 16 00:10:09 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.y (parmlist_1): Add pedantic warning.
+
+Fri May 15 13:10:07 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i386-*-sco3.2v4*): New file.
+ * config.sub: For SCO, produce -sco3.2v2. For ISC, make just -isc.
+
+ * dbxout.c (DBX_TYPE_DECL_STABS_CODE): Was DBX_DECL_STABS_CODE.
+ (DBX_OUTPUT_ENUM): Pass type as arg; make it do the whole job.
+
+ * svr4.h (ASM_BYTE_OP): Delete the tab.
+ (SET_ASM_OP): New definition.
+
+ * Makefile.in (gcc.xtar): Depend on doc.
+ (gcc.info, cpp.info): Duplicate rules deleted.
+
+ * i386.c (handle_pragma): Use SET_ASM_OP, not DEF_ASM_OP.
+
+Fri May 15 12:38:18 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * final.c (final_scan_insn): Don't set new_block when within a
+ sequence. Set it after the last insn of the sequence.
+
+Fri May 15 07:23:09 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (m88k_handle_pragma_token, output_short_branch_defs):
+ Use SET_ASM_OP.
+
+Fri May 15 14:54:54 1992 Howard Chu (hyc@hanauma.jpl.nasa.gov)
+
+ * fx2800.h: Replace Ron Guilmette's version with working version.
+ Tested on Concentrix 2.1 and 2.2.
+
+ * i860.c (singlemove_string): Comparison of const0_rtx was in the
+ wrong place and would never be reached. Added check for negative
+ short int constants.
+ (output_size_for_block_move): call singlemove_string instead of
+ just emitting a mov.
+ (sfmode_constant_to_ulong): eliminate bogus "# error" directive.
+
+ * t-fx2800, x-fx2800, xm-fx2800.h: New files.
+ * configure: Corresponding changes.
+
+ * dbxout.c (DBX_MEMPARM_STABS_LETTER): New macro.
+ (dbxout_type): Check for DBX_OUTPUT_ENUM.
+ (dbxout_parms): Use DBX_MEMPARM_STABS_LETTER.
+ (dbxout_block): Check for DBX_OUTPUT_LBRAC, DBX_OUTPUT_RBRAC.
+
+Thu May 14 18:26:13 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparcv4.h (ASM_OUTPUT_ALIGN_JUMP_TABLE, ASM_OUTPUT_INTERNAL_LABEL,
+ ASM_GENERATE_INTERNAL_LABEL): Delete.
+
+Thu May 14 13:51:01 1992 Chip Salzenberg (chip@tct.com)
+
+ * toplev.c (compile_file): Use IO_BUFFER_SIZE for finput.
+ * xm-i386sco.h, xm-rs6000.h (IO_BUFFER_SIZE): Defined.
+
+Thu May 14 15:21:24 1992 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+
+ * config.sub: Recognize "none" as a valid os.
+
+Thu May 14 13:37:52 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (assign_parms): Make new stack slot if entry stack
+ slot isn't aligned as much as the mode wants.
+ And don't make an eqv for entry_parm in that case.
+ * sparc.c (output_move_double): Assume memory always ok for ldd, std
+ except when explicit offset from stack.
+
+ * c-decl.c (duplicate_decls):
+ Don't warn about qualifier mismatch for a function.
+
+ * c-decl.c (grokdeclarator): Give explicit list of types to promote
+ to int (and sometimes to unsigned int) for parms.
+
+ * Makefile.in (gcc.info, cpp.info): New targets.
+ (gcc.xtar): Depend on those.
+
+ * expmed.c (extract_bit_field): Don't fail to compute
+ all of a DImode value.
+
+ * dwarfout.c (SET_ASM_OP): Renamed from DEF_ASM_OP.
+ (ASM_OUTPUT_DEF): Use SET_ASM_OP.
+ * m88k.h (SET_ASM_OP): Renamed from DEF_ASM_OP.
+ * sparcv4.h (DEF_ASM_OP): No need for #undef.
+
+ * cccp.c (main): Handle -iprefix option instead of GCC_EXEC_PREFIX.
+ * gcc.c (process_command): Set gcc_exec_prefix.
+ (do_spec_1): Handle %I.
+ (default_compilers): Use %I when running cpp.
+
+ * protoize.c (savestring, savestring2): Change parm decls.
+
+ * i860.h, we32k.h (CONST_COSTS): Add missing parm OUTER_CODE.
+
+ * i386v4.h (DEF_ASM_OP, WEAK_ASM_OP): Deleted.
+
+Wed May 13 17:23:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * rtl.c (init_rtl): For byte_mode and word_mode, use first fit.
+
+ * protoize.c (munge_compile_params): Increase size of temp_params.
+
+Wed May 13 13:30:40 1992 Chip Salzenberg (chip@tct.com)
+
+ * i386sco4.h: New file.
+
+Tue May 12 23:23:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_increment): A subreg as op0 is not necessarily a copy.
+ Treat subregs like regs.
+
+ * c-typeck.c (mark_addressable): Different messages for reg var
+ if reason is a use in a nested function.
+
+Tue May 12 14:28:22 1992 Tom Wood (wood at gen-rtx)
+
+ * gcc.c (process_command): -save-temps uses a switches entry.
+
+Tue May 12 21:24:46 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (vfork): Declaration deleted.
+
+Tue May 12 06:16:49 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * tower-as.h: Added support for basic block profiling.
+
+Tue May 12 02:34:45 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * unx386.h (AS3_SHIFT_DOUBLE): New macro to print shift-double
+ opcodes.
+
+ * i386gas.h (AS3_SHIFT_DOUBLE): Redefine for GAS shift-double rules.
+ (GAS_MNEMONICS): New macro to force use of opcodes for GAS.
+ * seq386gas.h (AS3_SHIFT_DOUBLE,GAS_MNEMONICS): Likewise.
+
+ * i386.c (print_operand): Use GAS_MNEMONICS to choose long-long
+ opcode suffix.
+
+ * i386.md (ashldi3,ashrdi3,lshrdi3): Split into separate
+ recognizers for constant and variable shifts.
+ Use AS3_SHIFT_DOUBLE for variable shifts.
+ (all shifts and rotates): Don't allow memory operands for shift
+ count.
+ (bit set/clear): Don't allow non-CONST_INT constants as SET_SRC.
+ (movstrsi,cmpstrsi,strlensi): Allow any address_operand within
+ a MEM:BLK, not just register_operand.
+ (movstrsi): Rewrite to avoid match_dup on the address_operand
+ above.
+
+Mon May 11 23:31:47 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ Sun May 10 18:44:58 Per Bothner (bothner@cygnus.com)
+
+ * dbxout.c (dbxout_type_methods): Only emit final semi-colon
+ of method list of we have emitted any methods. (The converse
+ of only emitting the operation name initially if needed.)
+
+Mon May 11 22:45:18 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c, reload1.c: Use reg_overlap_mentioned_for_reload_p and
+ refers_to_regno_for_reload_p instead of the normal versions.
+ * reload.c (reg_overlap_mentioned_for_reload_p): New function.
+
+Mon May 11 22:44:50 1992 Ron Guilmette (rfg at ncd.com)
+
+ * integrate.c (expand_inline_function): Copy LABEL_NAMEs to new
+ copies of CODE_LABELs.
+ * tree.c (decl_function_context, decl_type_context): Renamed `fndecl'
+ formal parameter to `decl' throughout these functions.
+
+Mon May 11 18:43:45 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c: (deps_file): Deleted.
+ (main): Do not open deps_file until needed.
+ Check error status of dep_stream and stdout more carefully.
+ (timestamp): New function; avoids calling localtime unless needed.
+ (special_symbol, initialize_builtins): Use new timestamp function.
+
+Mon May 11 20:48:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * genix.h: Added #error, since this hasn't been updated.
+
+Mon May 11 14:33:32 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (is_pseudo_reg): New function.
+ (location_attribute): Use `is_pseudo_reg'.
+ (location_or_const_value_attribute): Use DECL_INCOMING_RTL as the
+ basis for forming the location decsriptor for any register parameter
+ which was optimized into non-exitance.
+
+ * dwarfout.c (DWARF_VERSION): New (default) definition.
+ (ASM_OUTPUT_DWARF_STACK_OP, ASM_OUTPUT_DWARF_FMT_BYTE,
+ ASM_OUTPUT_DWARF_TYPE_MODIFIER, ASM_OUTPUT_DWARF_DATA1): Output tab
+ before ASM_BYTE_OP.
+ (ASM_OUTPUT_DWARF_ADDR_CONST): Encapsulate all statements in a
+ `do { ... } while (0)'
+ (data_member_location_attribute, bit_offset_attribute): Both fixed
+ to use alignment of declared type of field as the "containing object"
+ size.
+ (location_or_const_value_attribute): Fixed to use DECL_INCOMING_RTL
+ only for parms passed in memory.
+ (output_decl): Don't output DIEs for externals if DWARF_VERSION == 1.
+
+Sun May 10 17:18:33 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.h (CPP_PREDEFINES): Define for BSD here.
+ Remove conditional #ifdef hpux.
+ * pa-hpux.h, pa-ghpux.h (CPP_PREDEFINES): Define for hpux here.
+ * pa.h (CPP_SPEC): Define.
+
+Sun May 10 12:12:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (clean): Delete unprotoize.c.
+
+ * stmt.c (expand_decl): Set MEM_IN_STRUCT_P right in dynamic case.
+
+ * expr.c (get_inner_ref): Handle ARRAY_REF only if constant offset.
+ Handle non-PLUS_EXPR variable offset by assuming multiple of byte.
+ (expand_assignment, expand_expr): Fix gen_rtx added in last change.
+
+Sat May 9 02:39:58 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (get_inner_reference): New output arg poffset.
+ (expand_assignment, expand_expr): Pass new arg. Handle nonzero offset.
+ (do_jump): Pass new arg but ignore result.
+ * fold-const.c (optimize_bit_field_compare, decode_field_reference):
+ Pass the new arg. Just return 0 if offset comes back nonzero.
+
+ * reload.c (find_equiv_reg): Always test valueno >= 0.
+
+ * c-aux-info.c: Don't include param.h or errno.h; don't declare errno.
+
+ * rtl.c (read_rtx): Fix error in prev change.
+
+ * gcc.c (process_command): Handle -print-libgcc-file-name.
+ (main): Handle print_libgcc_file_name by printing the name.
+
+ * c-decl.c (finish_struct): Use TYPE_PRECISION to see whether
+ bitfield's type is narrower than int, for promoting to int.
+
+ * cccp.c (struct definition, struct reflist): New field `rest_args'.
+ (struct arglist): Likewise.
+ (rest_extension, REST_EXTENSION_LENGTH): New var and macro.
+ (create_defnition): Recognize `...' and set flag in arglist.
+ (collect_expansion): Propagate flag to definition.
+ (macroexpand): Check flag when parsing arglist.
+ Special handling for ## next to a rest arg.
+ (macarg, macarg1): New arg rest_arg affects parsing in macarg1.
+
+ * genattrtab.c: Misc speedups and size reductions.
+ (check_attr_test): Set RTX_UNCHANGING_P for tests of const attributes.
+ Also for symbol_ref and comparison ops.
+ (make_canonical): Likewise. Also check for degenerate cond values.
+ (operate_exp, simplify_cond, insert_right_side, evaluate_eq_attr):
+ Avoid copying in some cases. Detect opportunities to simplify.
+ (compute_alternative_mask): Avoid atoi in most cases.
+ (copy_rtx_unchanging): New function.
+ (evaluate_eq_attr, simplify_test_exp): Use that.
+
+ * genattrtab.c (optimize_attrs): Work pattern by pattern,
+ doing all the work for each pattern before moving on.
+ Use temp_obstack during simplification, then copy the end result.
+ (temp_obstack): New obstack.
+ (clear_struct_flag): New subroutine.
+ (SIMPLIFY_TEST_EXP): Test MEM_IN_STRUCT_P.
+ (simplify_test_exp): Add code for debugging stop.
+ Avoid consing when possible; sometimes free storage.
+ Check MEM_IN_STRUCT_P. Add shortcuts.
+
+ * genattrtab.c: Add simplification per alternative (not in use now).
+ (insn_n_alternatives): New array filled in by gen_insn.
+ (current_alternative_string): Nonzero means we are simplifying
+ for a particular alternative. Value is string for that numeral.
+ (SIMPLIFY_ALTERNATIVE): New macro simplifies eq_attr for alternative.
+ (evaluate_eq_attr, simplify_test_exp): Call SIMPLIFY_ALTERNATIVE.
+ (simplify_by_alternatives, count_sub_rtxs): New functions.
+
+ * genattrtab.c (attrs): Now an array indexed by first char.
+ (MAX_ATTRS_INDEX): Length of above.
+ (find_attr, main): Use that new data structure.
+
+ * genattrtab.c: Clarify use of hash-consing:
+ (hash_obstack): New obstack.
+ (attr_hash_add_rtx, attr_hash_add_string): Use hash_obstack.
+ (attr_rtx): Use hash_obstack if object is hashed.
+ Set RTX_INTEGRATED_P if object is hashed.
+ Don't hash object if subexpressions aren't hashed.
+ If making symbol_ref, hash the symbol name.
+ Uniquize const_int with value 0 or 1.
+ (attr_equal_p): New compare function; uses RTX_INTEGRATED_P.
+ (simplify_and_tree, simplify_or_tree, simplify_test_exp): Use that.
+ (attr_copy_rtx): New; copy all but hashed subexpressions.
+ (attr_eq): New function.
+ (attr_numeral): New function.
+ (check_attr_test): Use attr_eq. Hash symbol_ref and comparison ops.
+ (check_attr_value): Return modified value. Callers changed.
+ Hash symbol_ref.
+ (convert_set_attr_alternative): Use attr_eq and attr_numeral.
+ (convert_const_symbol_ref): Hash symbol_ref and eq.
+ (make_alternative_compare): Use attr_numeral.
+ (alternative_name): Fill in using hasher.
+ (copy_boolean): Hash a boolean expression if possible.
+
+Fri May 8 23:10:18 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (ashldi3,ashrdi3,lshrdi3): Fix typo in output template.
+
+ * cse.c (cse_insn): Handle SUBREGs in CLOBBERs.
+
+Fri May 8 14:55:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (PREMADE_ATTRTAB, PREMADE_ATTRTAB_MD): New vars.
+ (stamp-attrtab): Use them, to use presupplied file if suitable.
+ * t-mips, t-decstatn, t-decrose (PREMADE_ATTRTAB, PREMADE_ATTRTAB_MD):
+ Defined.
+ * mips-at.md, mips-at.c: New files.
+
+ * c-common.c (shorten_compare): Extend "always 0" warning
+ to fencepost case with le or ge.
+
+ * cccp.c (pass_thru_directive): Don't output a newline.
+ (initialize_builtins): Add explicit newlines in sprintfs.
+
+Fri May 8 14:49:12 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (adddi3): Force -32768 into a register, since the
+ define_insn's won't accept that one value.
+ (all attributes): Where an attribute is set to the same value in all
+ alternatives, don't use the alternative notation, since it will make
+ genattrtab somewhat faster.
+
+ * rtl.c (read_rtx): Use the current obstack to read in strings,
+ rather than repeated malloc/realloc's.
+
+Thu May 7 18:41:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (expand_call): Never set must_preallocate if no stack args.
+
+Thu May 7 16:52:56 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa1*: New names for pa1.1*.
+ * configure: Corresponding changes.
+
+ * m68k.md (u?mulsidi3): Don't permit immediates for operand 2.
+ (u?mulsidi3 recognizers): Split into immediate/nonimmediate cases.
+ * m68k.md ({zero,sign}_extend recognizers): Remove `n' from constraint
+ if predicate doesn't permit constants.
+
+Thu May 7 15:42:32 1992 Michael Collison (collison at osf.org)
+
+ * i386rose.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE): Fix these to
+ avoid printing NaNs, and infinity.
+ (SUBTARGET_SWITCHES): Add OSF dependent switches for half-pic
+ support.
+ (MASK_HALF_PIC, TARGET_HALF_PIC): Likewise.
+ (CC1_SPEC): Map pic-none, pic-lib, pic-extern and pic-calls
+ to appropriate half-pic compiler switches.
+ (LINK_SPEC): If not -noshrlib or -pic-none, pass -warn_nopic.
+ Allow user to pass -noshrlib directly.
+ (OPTIMIZATION_OPTIONS): Customize levels for OSF.
+ (CONSTANT_ADDRESS_P: Add check to determine if we have a
+ half-pic constant.
+ (ENCODE_SECTION_INFO): Check to see if we have a half-pic
+ declaration.
+ (ASM_DECLARE_OBJECT_NAME): Output the label (definition) for a
+ object and check to see if it is half-pic.
+ (ASM_DECLARE_FUNCTION_NAME): Likewise but for functions.
+
+Thu May 7 15:56:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): Remover unterm comment from recent changes.
+
+ * genattrtab.c (compute_alternative_mask): Usually bypass atoi.
+
+Thu May 7 15:56:51 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * genattrtab.c (fill_attr): Do nothing for constant attribute.
+ (check_attr_test): Set unchanging flag for constant attribute.
+ (write_test_expr): Expand constant attributes here.
+
+Thu May 7 06:01:46 1992 Michael Meissner (meissner@osf.org)
+
+ * decrose.h (CPP_SPEC): Fix typo in last change.
+
+Wed May 6 17:39:31 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * convex.h (HAVE_STRERROR, vfprintf, WTERMSIG, WEXITSTATUS): Deleted.
+
+ * dbxout.c (dbxout_type): Don't repeat a cross-reference
+ merely because full is nonzero.
+
+ * calls.c (expand_call):
+ Avoid rounding error testing copy_to_evaluate_size.
+
+ * xm-mipsbsdn.h: Renamed from xm-mipsbsdnews.h.
+ * xm-sun386.h: Renamed from xm-xm-i386sun.h.
+ * configure: Corresponding changes.
+
+Wed May 6 23:11:55 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * cse.c (simplify_binary_operation): Support MIN and MAX for
+ SImode and narrower integers.
+
+Wed May 6 17:25:37 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 18.
+ (mips_cpu_attr): New define, which is the mips_cpu variable recast
+ to the attr_cpu enumeration for mips.md.
+ (HALF_PIC_NUMBER_PTRS, HALF_PIC_NUMBER_REFS): Add dummy
+ definitions if halfpic.h is not included.
+
+ * mips.c (function_epilogue): Print half-pic stats if -mstats and
+ the stats are non-zero.
+
+ * mips.md (cpu attribute): Just use symbol_ref "mips_cpu_attr"
+ instead of a four way if statement.
+ (movsi_internal, movhi, movqi): Use 'z' constraint for fpsw, not 's'.
+
+ * halfpic.h (half_pic_number_ptrs): Add counter for the number of
+ pointers generated.
+ (half_pic_number_refs): Add counter for the number of references.
+
+ * halfpic.c (half_pic_number_ptrs): Add counter for the number of
+ pointers generated.
+ (half_pic_number_refs): Add counter for the number of references.
+ (half_pic_ptrs): Update new counters.
+
+ * decstatn.h (CPP_SPEC): Define __LANGUAGE_x__ and __LANGUAGE_x
+ where x is C_PLUS_PLUS, OBJECTIVE_C, C, or ASSEMBLY. Fix
+ undef'ing LANGUAGE_C for .S files.
+ (HALF_PIC_PREFIX): Define as '$Lp.'.
+
+ * decstatn.h (CPP_SPEC): Define __LANGUAGE_x__ and __LANGUAGE_x
+ where x is C_PLUS_PLUS, OBJECTIVE_C, C, or ASSEMBLY.
+
+ * mips-tfile.c (toplevel): Don't define anything in the standard
+ headers, such as open, etc.
+ (add_procedure): Delete unused variable orig_fdb.
+
+ * mips-tdump.c (toplevel): Don't define anything in the standard
+ headers, such as open, etc.
+
+ * collect2.c (main): Don't pass -f<xxx> switches to GCC when
+ building the constructor table.
+ (write_c_file): Put extern in front of all external declarations.
+ (scan_prog_file, COFF varient): On ECOFF systems, check whether
+ the header pointer is non-NULL before using it.
+
+ * cp-lex.c (store_pending_inline): Cast obstack_copy arg to char *.
+ (copy_lang_decl): Cast bcopy args to char *.
+
+Wed May 6 13:28:58 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * i960.h, i960.c (hard_regno_mode_ok): Use unsigned int not short.
+
+ * Makefile.in (USER_H): Add va-i960.h.
+
+Wed May 6 07:31:54 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * explow.c (emit_stack_{save,restore}): New functions.
+ * expr.h: Declare them and enum save_level.
+ * calls.c (expand_call): Call emit_stack_save.
+ * expr.c (expand_builtin, case BUILT_IN_ALLOCA): Likewise.
+ * function.c (delete_handlers): Make test for insn that sets
+ a slot more general.
+ (expand_function_end): Call emit_stack_{save,restore}.
+ * stmt.c (declare_nonlocal_label): Call emit_stack_save.
+ (expand_goto_internal): Likewise.
+ (expand_goto): Likewise.
+ Copy slots so they don't get instantiated incorrectly; also
+ update use of virtual regs and frame pointer.
+ (expand_end_bindings): Call emit_stack_restore.
+ (expand_decl): Call emit_stack_save.
+ Set current_function_calls_alloca when allocating variable-sized
+ objects.
+ * rs6000.md ({save,restore}_stack_{block,function,nonlocal}): New.
+
+Tue May 5 13:17:29 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * configure (a29k-*-*, i960-*-*): New default configurations.
+
+ * i960.c, i960.h, i960.md, xm-i960.h, va-i960.h: New files.
+
+ * gstdarg.h, gvarargs.h: Include va-i960.h for i960.
+
+ * calls.c (expand_call): Call REG_PARM_STACK_SPACE once and save
+ result. Add code to Use new macros MAYBE_REG_PARM_STACK_SPACE and
+ FINAL_REG_PARM_STACK_SPACE.
+ (store_one_arg): New parameter reg_parm_stack_space.
+ * function.c (assign_parms): Use MAYBE_REG_PARM_STACK_SPACE.
+
+ * cse.c (NONZERO_BASE_PLUS_P): Don't consider arg pointer by itself
+ to be non-zero, because it isn't on the i960.
+
+ * dbxout.c (dbxout_symbol): Use decl_function_context not
+ TREE_PERMANENT to identify function local statics.
+
+ * integrate.c (copy_rtx_and_substitute): Also remap SYMBOL_REFs
+ that point to LABEL_REFs in the constant pool.
+
+ * expr.c (expand_expr, PLUS case): Canonicalize MULT
+ when associating a constant.
+
+Tue May 5 12:56:29 1992 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu)
+
+ * pa.c (singlemove_string): Make it global.
+ * pa.md: Add high:DI and lo_sum:DI patterns.
+
+Tue May 5 12:04:56 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_array_ref): Require int index *after* promotion.
+
+ * convex.h (REG_OK_FOR_{BASE,INDEX}_P): Virtual regs that will
+ turn into stack_pointer_rtx are not valid for indexing.
+
+ * config.sub: NeXT is BSD, not SysV.
+
+ * att386.h (ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL):
+ Undef before defining.
+
+ * dbxout.c (dbxout_parms): Handle invisible reference parms.
+
+Tue May 5 22:48:54 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * Makefile.in (test-protoize-simple):
+ Change tmp-protoize* to tmp-proto*.
+ (mostlyclean): Remove that temporary file.
+
+Tue May 5 09:35:30 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (print_operand): Handle VOIDmode CONST_DOUBLE correctly.
+
+ * reload.c (find_reloads): Recompute `code' before preferred_class.
+
+Mon May 4 00:23:29 1992 Ron Guilmette (rfg at ncd.com)
+
+ * svr3.h (ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL):
+ Added definitions appropriate for most svr3 systems.
+
+ * protoize.c (volatile): Define to nothing if !defined(__STDC__).
+ (setjmp, longjmp): Declared external if not defined as pp-macro.
+ (include_defaults): Fix type of `fname' field.
+ (compiler_file_name): Fixed type.
+ (savestring): Fixed type of `size' parameter.
+ (savestring2): New function.
+ (string_list_cons): Removed trailing blanks from parm declaration.
+ (find_file): Moved comments out of formal parm declarations area.
+ (munge_compile_params): Fixed type of `temp_parms'.
+ (gen_aux_info_file): Construct new filename using `savestring2'.
+ (find_extern_def): Suppress annoying warnings about missing
+ definitions for extern functions.
+ (edit_fn_declaration): Declare `clean_text_p' as `volatile' not as
+ `VOLATILE'.
+ (scan_for_missed_items): Make text of warning more obvious.
+ (edit_file): Make text of warning shorter.
+
+ * libgcc2.c (__builtin_new): Changed arg type to `size_t'. Moved
+ nested declaration of malloc out to file-scope.
+ (__builtin_vec_new): Prototype preceeding function declarations.
+ (__builtin_vec_new, __builtin_vec_delete): Changed types of non-pointer
+ arguments and local variables to `size_t'.
+ (__clear_cache): Use type `void *' variables to store addresses.
+ (__do_global_dtors): Use unsigned type for counters.
+ (__main): Add explicit type to declaration of `initialized'.
+
+Mon May 4 16:16:56 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarfout.c (dwarfout_file_scope_decl): Ignore a global register
+ variable.
+
+Mon May 4 08:28:18 1992 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu)
+
+ * pa-ghpux.h, pa-hpux.h: #define HAVE_ATEXIT.
+
+ * genextract.c (print_path, main): Make the generated code use
+ `pat', not `insn', except for fatal_insn_not_found. Remove
+ insn_code variable from generated code, and switch directly on
+ INSN_CODE (insn).
+
+ * hppa*: Rename to be unique in first 8 characters.
+ * configure: Corresponding changes.
+
+Mon May 4 00:20:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): Compute preferred_class after
+ calling find_reloads_toplev or equivalent.
+
+ * vax.h (PRINT_OPERAND): Add codes M, h, b.
+
+ * ns32k.h (PREFERRED_RELOAD_CLASS): Change GEN_AND_MEM_REGS
+ to GENERAL_REGS.
+
+ * config.sub: Recognize we32 and 3b*.
+
+ * varasm.c (readonly_data_section): Move after data_section.
+
+ * Makefile.in (print-rtl.o): Compile also for host machine.
+ (genattrtab): Link in host's print-rtl.o.
+
+ * i386v4.h (ASM_OUTPUT_ALIGNED_LOCAL): Deleted. Dfn in svr4.h is good.
+
+Sun May 3 21:39:22 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.h (RTX_COSTS): Add missing break.
+
+Sun May 3 19:40:50 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ From law:
+ * sparc.md (fp unit attributes): Change result ready delays to
+ match how the FP unit really works.
+
+ * sched.c (schedule_block): Don't move USE at the end of any block.
+
+ From rfg:
+ * sparc.c (handle_pragma_token): Added new function (based on original
+ `handle_pragma_token' in i386.c).
+ * sparcv4.h (INIT_SECTION_PREAMBLE): Definition added.
+ (PUSHSECTION_FORMAT): Added leading tab.
+ (HANDLE_PRAGMA): Added definition to handle #pragma weak (based on
+ original definition in i386v4.h).
+
+ From jfc:
+ * sched.c (insn_costs): New variable.
+ (insn_cost): Save cost of insn in insn_costs to avoid recomputation.
+ (sched_analyze_2): Handle UNSPEC_VOLATILE.
+ (schedule_insns): Init insn_costs.
+
+ * sparc.c (output_move_double): Correctly check for constant
+ DFmode addresses. Assume that DFmode addresses with MEM_IN_STRUCT_P
+ set are always aligned.
+
+Sun May 3 16:52:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (PATH_SEPARATOR): New macro. From Alex Zatsman.
+ (process_command): Use it when scanning a path.
+
+ * expr.c (expand_builtin): Cast icode to int for indexing.
+
+ * xm-i386dos.h: New file.
+ * configure.bat: Use that file.
+ * gcc.c (EXECUTABLE_SUFFIX): Remove special default for MSDOS.
+ (putenv): Remove conditionals for MSDOS, since HAVE_PUTENV now defined.
+
+ * c-typeck.c (build_array_ref): Promote after -Wchar-subscripts test.
+
+ * c-decl.c (builtin_function): If traditional and name is user-visible,
+ set DECL_BUILT_IN_NONANSI.
+
+ * cccp.c (PATH_SEPARATOR): Add default definition.
+ (main): Use that.
+
+Sun May 3 08:17:02 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pyr.h (FRAME_POINTER_REGNUM): Work around pyr cpp bug.
+
+ * xm-hppa.h (NO_SYS_SIGLIST): Define.
+
+Sat May 2 15:03:08 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * callc.c (emit_call_1): Restore inhibit_defer_pop after popping args.
+
+Thu Apr 30 20:00:00 1992 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: Complete rewrite to use Makefile.in.
+ * Makefile.dos: File deleted.
+
+Thu Apr 30 23:38:00 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * xcoffout.h (DBX_FINISH_SYMBOL): Use DECL_ASSEMBLER_NAME
+ instead of DECL_NAME when writing out a global symbol.
+ (Makes a big difference for C++ static class members.)
+
+Thu Apr 30 23:13:01 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, comparisons): Don't call omit_one_operand in
+ a case where the operand isn't really being omitted.
+
+ * combine.c (distribute_notes, case REG_DEAD): Don't write a USE for
+ a partially-dead register if we already wrote one.
+
+Thu Apr 30 21:51:29 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * Makefile.in (enquire.o, install-common-headers): Make these work
+ when $(srcdir) is .
+
+ * c-decl.c (init_decl_processing): Use void_ftype_any as the type
+ for _exit, exit and abort.
+
+Wed Apr 29 21:42:30 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genattrtab.c (insn_name_ptr): Define so we could link with
+ debug_rtx.
+
+ * genattrtab.c (check_attr_test, simplify_test_exp): Copy expression
+ before setting as unchanging.
+ (make_canonical): Set result as unchanging after calling
+ convert_const_symbol_ref.
+ (evaluate_eq_attr): When returning original expression, set it
+ as unchanging.
+
+Wed Apr 29 13:30:33 1992 Michael Meissner (meissner@osf.org)
+
+ * halfpic.c (half_pic_ptr): Allocate space for the NULL byte.
+
+Wed Apr 29 06:28:35 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (src_coords_attribute): Don't #ifdef code based on
+ DWARF_DECL_COORDINATES.
+ (name_and_src_coords_attributes): Do #ifdef calls to `lookup_filename'
+ and `src_coords_attribute' based on DWARF_DECL_COORDINATES. Also,
+ pop out of .debug section temporarily while calling `lookup_filename'.
+
+Wed Apr 29 02:01:03 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ * Complete another Cygnus <--> FSF merge.
+
+ Tue Apr 28 19:24:52 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-init.c (do_friend): Handle overloaded and extern "C"
+ friends correctly.
+
+ Mon Apr 27 21:04:40 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-search.c (build_vbase_vtables_init): Don't set
+ flag_this_is_variable to -2 when not doing a ctor.
+
+ * cp-class.c (build_vbase_path): Don't unconditionally set
+ code to be a PLUS_EXPR.
+
+ Mon Apr 27 14:14:08 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Allow contructors to be friends.
+ Cannot find anything prohibiting it.
+
+ Mon Apr 27 13:26:20 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-init.c (do_friend): bullet proof handling of friends,
+ fixes problem introduced on Apr 26 18:24:35.
+
+ Sun Apr 26 23:18:24 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-call.c (ideal_candidate): Allow one to overload static
+ member functions without dumping core.
+
+ Sun Apr 26 18:44:57 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-tree.c (break_out_calls): Call build1 instead of build for
+ trees with only one operand to avoid abort in build.
+
+ Sun Apr 26 18:24:35 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-init.c (do_friend): Allow extern "C" functions to be
+ friends.
+
+ Sat Apr 25 02:57:07 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-*.[chy]: Fix all pedantic warnings to be pedwarn.
+
+ Sat Apr 25 01:46:50 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-tree.c (break_out_calls): Handle NULL_TREE properly.
+
+ Fri Apr 24 23:49:39 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-type2.c (store_init_value): Provide an error message
+ about bad syntax instead of core dumping.
+
+ Fri Apr 24 16:46:03 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ Fri Apr 24 18:55:45 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-parse.y (component_decl): Fix small problem to take us
+ back down to 14 reduce/reduce errors.
+
+ Thu Apr 23 19:48:54 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ Wed Apr 22 22:47:15 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-type2.c (readonly_warning_or_error): Eliminate arbitrary
+ limit of 80 characters per warning message.
+
+ Thu Apr 23 04:14:59 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Handle const and volatile
+ member functions properly.
+
+Tue Apr 28 22:05:05 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * tower-as.h (svr3 support): Generic svr3.h included.
+ (SELECT_RTX_SECTION): m68k.h's version #undef'd in favour of svr3.h's.
+ (CPP_PREDEFINES): Overriding svr3.h version.
+ (STARTFILE_SPEC): Added crtbegin.o.
+ (ASM_OUTPUT_SOURCE_FILENAME): Added ugly section directives to get
+ rid of NCR assembler bug.
+ (ASM_OUTPUT_IDENT): #undef'd svr3.h version.
+ (NO_{DOLLAR,DOT}_IN_LABEL): Defined.
+ (ASM_LONG): Defined.
+ ({INIT,FINI,CONST}_SECTION_ASM_OP): Overrides svr3.h versions.
+ (CTOR_LIST_{BEGIN,END}): New macros.
+ (BSS_SECTION_ASM_OP): New macro.
+ (ASM_OUTPUT_CONSTRUCTOR): New macro.
+ (ASM_OUTPUT_LABELREF): Redefined svr3.h version.
+
+ * tower.h (LIB_SPEC): Added -shlib support plus crtend.o.
+
+ * configure (m68k-ncr-sysv): Defined xmake_file and tmake_file.
+
+Tue Apr 28 21:27:10 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (floatsidf2, floatsisf2): Fix typo in last change.
+
+Tue Apr 28 18:21:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c: Include obstack.h, etc.
+ (util_obstack, util_firstobj): New obstack, and 1st object in it.
+ (init_objc): Init those two.
+ (encode_*): Rewrite to use util_obstack, Callers changed.
+ (handle_class_ref, handle_impent): New subroutines, broken out
+ from finish_objc so each can use alloca (instead of utlbuf).
+ (utlbuf): Variable deleted.
+
+ * c-decl.c (init_decl_processing): Treat abort and exit as ANSI.
+ -traditional no longer affects ANSI builtins; use -fno-builtin.
+
+ * configure: Insert assignment of INSTALL where old one was.
+
+Tue Apr 28 17:14:57 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * vax.md (cmpdf, cmpsf): Use tstf/tstd if second argument is zero.
+ (movsi, movhi, movqi): Patterns changed to reflect different
+ space/time tradeoffs for modern VAXes.
+ (movstricthi, movstrictqi): New patterns.
+ (extv, extzv): Use rotl/bicl sequence when possible.
+
+Tue Apr 28 10:00:25 1992 Michael Meissner (meissner@osf.org)
+
+ * mips-tfile.c (read_line): Make read_line act like the assembler,
+ and use ';' to separate multiple logical lines.
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 17.
+ (MASK_DEBUG_C): Swap meaning of -mdebugc.
+ (ADDITIONAL_REGISTER_NAMES): Use 'cc' for the floating point status
+ register, so user asm's can clobber it. Allow $fp for the frame
+ pointer in addition to fp and $30, and also $sp for the stack
+ pointer in addition to sp and $29.
+
+ * mips.c (gen_int_relational): Emit faster sequence for NE.
+ (mips_asm_file_start): Don't call data_section for gcc2_compiled.
+
+ * mips.md (branch define_delay): Specify all of the preconditions
+ correctly for branch likely (mips2) support.
+ (floatsidf2): Update dslots_load_total. Support getting the
+ integer value from memory as well as from an integer register.
+ Fix the length attribute.
+ (floatsisf2): Ditto.
+ (All set from condition code patterns): Swap meaning of -mdebugc,
+ so that if used, it means support all of the set condition code
+ patterns as if the machine can do them equally well. If not
+ -mdebugc, call gen_int_relational to generate an appropriate set
+ of INSNs.
+
+ * decrose.h (ASM_IDENTIFY_GCC): Define as null on OSF/1.
+ * encrose.h (ASM_IDENTIFY_GCC): Define as null on OSF/1.
+ * i386rose.h (ASM_IDENTIFY_GCC): Define as null on OSF/1.
+
+ * decrose.h (CPP_SPEC): If .S files, add an explicit
+ -ULANGUAGE_C to mimic the OSF GCC 1.39 behavior.
+
+Mon Apr 27 16:44:30 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * dwarf.h (AT_... values): Correct typos present in version 1.0.1
+ of the DWARF spec. The values should be unchanged.
+
+ * dwarfout.c (data_member_location_attribute): Use INTEGER_CST.
+
+ * dwarfout.c (data_member_location_attribute): Use TYPE_MODE.
+ (bit_offset_attribute): Ditto.
+
+ * dwarfout.c (name_attribute): Add the tests back.
+
+ * m88k.h (WEAK_ASM_OP): Override svr4.h.
+
+Mon Apr 27 15:48:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * limits.h: Use _LIMITS_H___, not _LIMITS_H_, to protect contents.
+
+Mon Apr 27 15:15:25 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 16.
+ (delay_type enum): Add DELAY_FCMP for specifing the
+ c.{eq,lt,le}.{d,s} delay.
+ (fpsw_register_operand): New declaration.
+ (gen_int_relational): New declaration.
+ (pc_or_label_operand): New declaration.
+ (MASK_DEBUG_C): Use -mdebugc for new relational code.
+ (REG_CLASS_FROM_LETTER): Use 'z' for fpsw register, not 's' which
+ is already used.
+ (EXTRA_CC_MODES): Add CC_REV_FPmode to handle fp comparisons,
+ which need to be reversed (!=).
+ (EXTRA_CC_NAMES): Add CC_REV_FP.
+ (SELECT_CC_MODE): Use SImode for all integer comparisons,
+ CC_REV_FP for floating point != comparisons.
+
+ * mips.c (internal_test enum): Move and rename the enumeration
+ used in gen_conditional to make the comparison RTL codes to
+ something that can be indexed out to top level.
+ (fpsw_register_operand): New function to return true if the
+ operand is the FP status register.
+ (pc_or_label_operand): New function to return true if the operand
+ is either a label_ref or the pc for if_then_else tests.
+ (mips_fill_delay_slot): Add support for DELAY_FCMP, the delay
+ after a floating point comparison is done and it can be tested.
+ (map_test_to_internal_test): New function to take a RTL code of a
+ comparison operator, and return the internal_test enumeration.
+ (gen_int_relational): New function to generate the appropriate
+ INSNS for comparing two integers for either branches, or the set
+ from condition code insns.
+ (gen_conditional_branch): Rewrite to not use the CISC condition
+ code register CC0, but instead generate the appropriate INSNs so
+ that the test can be scheduled independely of the branch.
+ (override_options): Use 'z' for the fpsw register, not 's'. Only
+ allow the fp comparison condition codes in the fpsw register. Do
+ not allow non float or int things in FP registers, even if
+ -mdebugh. Don't allow ints in the fpsw.
+
+ * mips.md (various): Rewrite comparisons and branches so that we
+ do not use CC0, but instead put the comparison in a pseudo and
+ generate the appropriate branch instructions directly. This
+ eliminates calls to the various b<xx> macros provided by the
+ assembler. Change the type of integer comparisons from the
+ various CCxx modes used to SImode. Make fp != use CC_REV_FPmode.
+ (mode attribute): Add FPSW mode for floating compare.
+ (fp_comp): New functional unit for comparing fp values.
+ (divmodsi4): No longer use -mdebugc to turn off divmodsi4.
+ (divsi3): Ditto.
+ (modsi3): Ditto.
+ (udivmodsi4): No longer use -mdebugc to turn off udivmodsi4.
+ (udivsi3): Ditto.
+ (umodsi3): Ditto.
+
+ * mips-gn5.h: Rename from mips-gnews5.h for MSDOS.
+ * mips-n5.h: Rename from mips-news5.h.
+ * xm-mipsbsdnews.h: Rename from xm-mipsnbsd.h.
+
+ * configure (mips-sony*): Handle the above changes.
+
+ * README-mips (whole file): Remove bogus patches, and update with
+ some common warnings about the MIPS.
+
+Mon Apr 27 12:41:21 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (find_splittable_givs): Don't split a giv combined with
+ a giv that was not reduced.
+
+ * c-parse.y (primary): Clear the TREE_USED flag of a block tree
+ put in a BIND_EXPR.
+ * print-tree.c (print_node): Print the block operand of a BIND_EXPR.
+
+ * flow.c (find_basic_blocks): Assume MEM source in jump insn makes
+ it an indirect jump.
+
+ * collect2.c (strip_flag, strip_file_name): New variables.
+ (main): Don't pass -s to the first ld call. Pass it to the second
+ ld call, or else run strip.
+
+ * Makefile.in (bootstrap): Only build C compiler for stage1.
+
+ * sparc.h (GO_IF_LEGITIMATE_ADDRESS): Rewrite to accept SUBREGs.
+
+ * combine.c (force_to_mode): Correctly form mask from BITS.
+
+ * Makefile.in (bootstrap): Fix a typo (\n between b and ootstrap).
+
+Sun Apr 26 14:14:23 1992 Ron Guilmette (rfg at ncd.com)
+
+ * getattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c,
+ genextract.c, genflags.c, genoutput.c, genpeep.c, genrecog.c (main):
+ Move nested extern declaration of `read_rtx' out to file-scope.
+
+Sun Apr 26 21:41:33 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (varasm.o): Includes defaults.h.
+
+Sun Apr 26 21:15:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * enquire.c (f_rep, f_define): Handle NO_LONG_DOUBLE_IO.
+ (f_define): Print defn of union __convert_long_double, just once,
+ with #ifndef to protect it.
+ (fake_f_define): New function.
+
+Sat Apr 25 15:04:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_end_case): Test DI index against range before casesi.
+ Don't truncate before calling do_tablejump.
+ Use expand_expr to turn RANGE into rtl.
+ * expr.c (do_tablejump): Convert to Pmode after testing vs range.
+
+ * stmt.c (expand_end_case): Delete test default_label != 0; always is.
+
+ * configure (i386-ibm-aix): Set install_with_cp.
+
+Fri Apr 24 21:32:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xm-spcv4.h: Renamrd from xm-sparcv4.h.
+ * configure: Changed accordingly.
+
+ * Makefile.in (unprotoize.o): Leave unprotoize.c around.
+
+ * c-common.c (decl_attributes): Change warnings to errors.
+
+Fri Apr 24 11:17:53 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarf.h: Added copyleft.
+ Revised to use enumerators instead of #defines.
+ Updated to conform to version 1.0.1 of the DWARF spec.
+ Added implementation-defined fundamental type codes for GCC
+ mode-specific types.
+
+ * dwarfout.c: Include defaults.h.
+ (getpwd): Declare as `extern'.
+ (BITFIELD_OFFSET_BITS, BITFIELD_OFFSET_UNITS,
+ BITFIELD_OFFSET_WORDS_IN_UNITS): Unnecessary definitions deleted.
+ (ASM_BYTE_OP, PUSHSECTION_ASM_OP, POPSECTION_ASM_OP): Delete
+ leading tabs from definitions.
+ (PUSHSECTION_FORMAT): Add leading tab to definition.
+ (*_LABEL): Changed to all start with `.L' to internalize these
+ symbols for *all* svr4 assmeblers (including sparc).
+ (ASM_OUTPUT_POP_SECTION): Add leading tab.
+ (ASM_OUTPUT_DWARF_TAG, ASM_OUTPUT_DWARF_ATTRIBUTE,
+ ASM_OUTPUT_DWARF_STACK_OP, ASM_OUTPUT_DWARF_FUND_TYPE,
+ ASM_OUTPUT_DWARF_FMT_BYTE, ASM_OUTPUT_DWARF_TYPE_MODIFIER): Print
+ DWARF comments only if flag_verbose_asm set.
+ (ASM_OUTPUT_ASCII): Moved to defaults.h
+ (tag_name): Renamed `dwarf_tag_name' to avoid possible conflicts.
+ (dwarf_tag_name): Updated for version 1.0.1 DWARF spec.
+ (attribute_name): Renamed `dwarf_attr_name' to avert conflicts.
+ (dwarf_attr_name): Updated for version 1.0.1 DWARF spec.
+ (stack_op_name): Renamed `dwarf_stack_op_name' to avert conflicts.
+ (format_byte_name): Renamed `dwarf_fmt_byte_name' to avert conflicts.
+ (fundamental_type_name): Renamed `dwarf_fund_type_name' to avoid
+ possible conflicts.
+ (dwarf_fund_type_name): Added support for implementation-defined
+ GCC mode specific fundamental types codes (to support new `mode'
+ attribute).
+ (data_member_location_attribute): Rewritten to avoid major lossage
+ primarily for little-endian targets.
+ (location_or_const_value_attribute): Fixed comments and removed
+ spurious code.
+ (name_attribute): Removed test for NULL name (now done in
+ `name_and_src_coords_attributes').
+ (byte_size_attribute): Fixed to get size from DECL_BIT_FIELD_TYPE
+ for bit-fields.
+ (bit_offset_attribute): Rewritten to avoid major lossage primarily
+ for little-endian targets.
+ (src_coords_attribute): GNU-specific extension added.
+ (name_and_src_coords_attributes): New function.
+ (output_entry_point_die, output_formal_parameter_die,
+ output_global_subroutine_die, output_global_variable_die,
+ output_inline_subroutine_die, output_label_die,
+ output_local_variable_die, output_member_die,
+ output_local_subroutine_die, output_typedef_die): Call
+ `name_and_src_coords_attributes' rather than `name_attribute' for
+ all potentially-named declarations.
+ (output_global_subroutine_die, output_inline_subroutine_die,
+ output_local_subroutine_die, dwarfout_file_scope_decl): Use
+ DECL_ASSEMBLER_NAME rather than DECL_NAME when referencing
+ assembly level names (e.g. in AT_low_pc attributes).
+ (output_type): Revised to produce DWARF info for C++ member functions
+ even for classes with no constructors & destructors.
+
+ * flags.h (flag_verbose_asm): Option flag added.
+ * toplev.c (flag_verbose_asm): Option flag added.
+
+ * defaults.h: New file.
+ * varasm.c: Include defaults.h.
+ (ASM_OUTPUT_ASCII): Deleted.
+
+ * c-common.c (decl_attributes): Call `type_for_mode' rather than
+ `type_for_size'. Also, `break' after a matching mode is found.
+
+ * 3b1.h (ASM_OUTPUT_ASCII): Tab before ASCII_DATA_ASM_OP.
+ * amix.h (ASM_OUTPUT_CASE_END): Tab before SET_ASM_OP.
+ (ASM_OUTPUT_ASCII) Tab before BYTE_ASM_OP.
+ * i860b.h (ASM_OUTPUT_ASCII): Tab before ASCII_DATA_ASM_OP.
+ * i860v3.h (ASM_OUTPUT_ASCII): Tab before BYTE_ASM_OP.
+ * sparcv4.h (*_ASM_OP): Delete the initial tabs.
+
+ * assert.h: Modified to treat source line numbers as `unsigned'.
+
+ * Makefile.in (test-protoize): New target.
+
+ * svr4.h (WEAK_ASM_OP): Default svr4 definition added.
+ (ASM_DECLARE_FUNCTION_SIZE): Use `assemble_name' to output
+ generated internal label.
+
+Thu Apr 23 11:31:58 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * optabs.c (emit_libcall_block): Correct code which determines
+ whether it is safe to emit an insn setting a pseudo before the block.
+
+Thu Apr 23 18:13:08 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (sleu): Finish Apr 21 change.
+
+Thu Apr 23 14:15:05 1992 Michael Meissner (meissner@osf.org)
+
+ * Makefile.in (enquire.o): Delete enquire.c from the current
+ directory before moving it in from the source directory, unless
+ the current directory is the same as the source directory. This
+ occurs if the user keeps GCC under source control, like RCS.
+ (install-common-headers): Ditto for byteorder.h.
+
+Thu Apr 23 12:39:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * amix.h (ASM_OUTPUT_CASE_END): Add missing \.
+
+Thu Apr 23 07:14:38 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_binary_operation, case MINUS): Don't do any
+ of the simplifications for IEEE floating-point.
+
+Wed Apr 22 23:20:59 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ Tue Apr 21 02:21:42 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-method.c (build_overload_value): Handle function names as
+ constant expressions for template arguments. Also, make double
+ values work again as template arguments.
+
+ Mon Apr 20 17:08:17 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-call.c (ideal_candidate): remove incorrect error message about
+ ``ambiguous request for function from distinct base classes of
+ type'' when base and parent are switched.
+
+ Mon Apr 20 14:14:35 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * Makefile.in: Now expect 15 reduce/reduce conflicts, instead of 14.
+
+ Mon Mar 16 14:02:09 1992 Chip Salzenberg (chip at tct.com)
+
+ * cp-parse.y (maybe_attributes, attribute_list): clone
+ from c-parse.y.
+ cp-parse.y: call decl_attributes between start_decl and
+ finish_decl, and after grokfield.
+
+ Mon Apr 20 09:21:00 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-tree.h (break_out_calls): Declare.
+
+ Mon Apr 20 08:29:16 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-tree.c (break_out_calls): New function.
+ (break_out_cleanups): Added comment.
+
+ * cp-typeck.c (build_modify_expr): Call `break_out_calls' instead of
+ `copy_to_permanent'.
+
+ Mon Apr 20 06:29:16 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-type2.c (my_friendly_abort): New function, please see
+ Rational there.
+
+ * cp-*.[chy]: Change all calls from abort to my_friendly_abort.
+
+ Mon Apr 20 05:45:08 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-cvt.c (build_up_reference): Fix a latent const problem.
+
+ Mon Apr 20 03:08:12 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-decl.c (pop_from_top_level): Deleted duplicate code in C_C_D
+ restoration.
+
+ * cp-call.c (build_method_call): Call `error_with_aggr_type' with
+ correct number of arguments.
+
+ Sun Apr 19 18:39:25 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-class.c (finish_struct): Only provide a warning about
+ non-virtual destructors if the user asks for -Wall.
+
+ Sun Apr 19 17:36:16 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): Make a deep copy of lhs, as
+ expr.c expects to be able to preexpand_calls on the conditional
+ parts without insuring that it would even be legal to do so.
+
+ * cp-tree.c (make_deep_copy): Fix comment.
+
+ Fri Apr 17 04:55:18 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-cvt.c (convert_pointer_to): Provide the user with a meaningful
+ error message instead of a core dump when dealing with bad syntax.
+
+ * cp-typeck.c (build_binary_op): Make error message on undefined
+ operator call more readable.
+
+ * cp-decl.c (grok_reference_init): Handle T& = const T&
+ error messages.
+
+ Thu Apr 16 18:59:15 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-typeck.c (convert_arguments): Disable code that auto converted
+ functions and methods to pointers and left them that way without error.
+
+ Thu Apr 16 17:35:13 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ Sat Apr 4 22:28:23 1992 Gerald Baumgartner (gb at cs.purdue.edu)
+
+ * cp-decl.c (finish_decl): Call `abstract_virtuals_error'
+ when the return type of a method is an abstract class.
+
+ * cp-type2.c (abstract_virtuals_error): Print error message
+ for an invalid method declaration.
+
+ Thu Apr 16 16:18:35 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl2.c (lang_decode_option): Handle import by ignoring it.
+
+Wed Apr 22 19:46:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (synth_id_with_class_suffix, finish_class):
+ Don't use utlbuf; alloca a buffer.
+ (forward_declare_categories): Use build_decl directly since
+ create_builtin_decl wants a string, not an id.
+
+ * Makefile.in (STAGESTUFF): Add USE_COLLECT2.
+
+ * dbxout.c (dbxout_symbol): Clean up last change.
+
+Wed Apr 22 17:06:16 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (gpc_reg_operand): Renamed from gen_reg_operand.
+ * rs6000.h (PREDICATE_CODES): Likewise.
+ * rs6000.md: Likewise.
+
+ * a29k.c (gpc_reg*_operand): Renamed from gen_reg*_operand.
+ * a29k.h (PREDICATE_CODES): Likewise.
+ * a29k.md: Likewise.
+
+ * romp.c (output_fpop): Extend workaround for RT FP codegen bug.
+
+Wed Apr 22 06:20:09 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * fold-const.c (fold, comparison cases): Use omit_one_operand to
+ yield a simplified result to avoid loosing a side-effect.
+
+Tue Apr 21 13:19:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_symbol): For TYPE_DECL, always make requisite tag
+ one way or another even if !have_used_extensions.
+
+ * configure: Specifically detect unrecognized options.
+
+Tue Apr 21 08:16:05 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-convert.c (convert_to_integer): Don't distribute a truncation
+ down past an ABS_EXPR.
+
+ * m88k.md (bxx insn): Choose bb0 over bb1 if the branch is likely
+ to fall-through (m88110 optimization).
+ * m88k.c (mostly_false_jump): New function.
+
+ * m88k.h (INIT_SECTION_ASM_OP): Define only for svr3 and svr4 targets.
+
+ * m88k.c (output_call): Use the insn address of the sequence.
+ * m88k.h (ADJUST_INSN_LENGTH): Account for space added at barriers
+ due to ASM_OUTPUT_ALIGN_CODE.
+
+Tue Apr 21 07:30:46 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (mark_jump_label, case MEM): New case to look for label
+ in a constant-pool entry.
+
+Tue Apr 21 00:41:39 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (compare_for_stack_reg): link cc0 user and setter
+ before separating them.
+
+ * reorg.c (link_cc0_insns): Move function from here -
+ * emit-rtl.c (link_cc0_insns): to here.
+
+ * i386.h (TARGET_IEEE_FP): New macro.
+ (TARGET_SWITCHES): Add switches for ieee floating point support.
+ (EXTRA_CC_MODES,EXTRA_CC_NAMES): Add CCFPEQmode.
+ (SELECT_CC_MODE): Select CCFPEQmode for FP equality comparisons.
+ (i386_compare_gen*,i386_compare_op*): Declare new variables to
+ generate comparisons from within branch and sCC insns.
+ (RTX_COSTS): Fix argument name typo.
+
+ * i386.c (i386_compare_gen*,i386_compare_op*): Define variables here.
+ (notice_update_cc): Notice if a comparison involves FP values.
+ (output_float_compare): Add support for "unordered" compare.
+ Use output_fp_cc0_set to set flags after a compare.
+ (output_fp_cc0_set): New function.
+
+ * i386.md (tstM,cmpM): New expanders. Don't generate RTL; just
+ save data for when cc0 user is generated.
+ (bCOND,sCOND): New expanders. Generate the compare/test as well
+ as the bCOND or sCOND.
+
+ (tstsf,tstdf): Disable patterns if generating ieee compliant code.
+ (tstsf,tstdf,cmpsf,cmpdf): Use output_fp_cc0_set to set flags
+ after test.
+ Don't change cc_status here: that won't work with REG_CC_SETTER
+ and REG_CC_USER.
+
+ (all COMPAREs): Use CCmode as mode of a COMPARE.
+
+Mon Apr 20 11:17:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * limits.h (LONG_LONG_MIN, LONG_LONG_MAX, ULONG_LONG_MAX): New macros.
+
+ * configure: Clear out_file before the big case, like tm_file, etc.
+
+ * expr.c (expand_expr, case LABEL_DECL): Handle label from outer fcn.
+
+Mon Apr 20 10:17:49 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * x-m88kluna: Delete.
+ * x-m88kv3: Renamed from x-m88k.
+ * configure (m88k-*): Rearrange.
+
+Mon Apr 20 21:29:00 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * config-gcc.com: Generate libgcc2.list from Makefile.in
+ * make-l2.com: Use libgcc2.list; supply gcc version number to gas.
+
+ * config-gacc.com: Generate linker options files from Makefile.in
+
+ * make-cc1.com: Use said linker options files instead of static
+ list of files.
+ * make-cc1.com: Handle errors better.
+
+Mon Apr 20 10:05:34 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (divmodsi4, udivmodsi4): Remove unneeded PARALLEL. Patch
+ from Richard Kenner.
+
+Mon Apr 20 08:38:26 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * expr.c (expand_expr, case CONSTRUCTOR): For static CONSTRUCTOR,
+ require a valid memory address only if modifier does.
+
+Sun Apr 19 15:09:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * genemit.c (gen_insn): Mode of SCRATCH must match in clobber lists.
+
+ * sched.c (add_dependence, remove_dependence): Moved from rtl.c.
+ * rtl.c: Functions deleted here.
+
+ * Make installation of collect2 automatic.
+ * configure: Define use_collect2 for all BSD and Mach and HP/UX
+ configurations, plus the ones below, and a few others.
+ * t-decrose, t-decstatn, t-encrose, t-i386rose, t-mips, t-next:
+ (EXTRA_PROGRAMS): Deleted.
+ * t-apollo68, t-convex, t-dpx2, t-rs6000: Files deleted.
+
+ * libgcc1.c (nongcc_SI_type): Renamed from SItype.
+
+ * recog.c (constrain_operands): Check only earlyclobbers that are REGs.
+
+ * m68k.h (TRANSFER_FROM_TRAMPOLINE): Delete comma in globalize cmd.
+
+ * m68k.md (movhi): Don't use switch_table_difference_label_flag
+ except in ports that need it. (Again!)
+
+Sun Apr 19 14:06:59 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (sched_analyze_2): Add missing comment close.
+
+ * rtl.c (add_dependence): Make next point to last insn with
+ SCHED_GROUP_P set, not after the last insn with the bit set.
+
+Sun Apr 19 06:06:03 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genextract.c (walk_rtx): Fix typo in vector case.
+
+ * hppa.h (RTX_COSTS): Add new argument OUTER_CODE.
+
+ * Makefile.in (compare, compare3): Change $file to $$file.
+
+ * romp.h (CONST_CONSTS): Clean up formatting of definition.
+
+ * rs6000.md (extzv): Correct when we can use andi[lu].
+
+Sat Apr 18 21:56:20 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (ashldi3): Compact operand numbers.
+
+ From Jeffrey Law:
+ * sparc.md (ldd, std peepholes): New peepholes to recognize cases
+ where two ld (or st) insns could be replaced by a single ldd or std.
+ * sparc.c (registers_ok_for_ldd): New function. Return true if the
+ given register pair is suitable for an ldd or std instruction.
+ (memory_ok_for_ldd): Likewise, but for memory locations.
+
+Sat Apr 18 17:22:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (skip_white_space): Warn only for first carriage return.
+
+Sat Apr 18 10:08:45 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genemit.c (struct clobber_ent): New structure.
+ (gen_insn): See if the clobbers required to be added were seen
+ for another insn.
+ (output_add_clobbers): Write case statements for all insn codes
+ using a particular clobber pattern.
+
+ * cse.c (mention_regs): Always retun a value.
+
+ * rs6000.md (call): Compact operand numbers.
+
+ * genextract.c: Now includes insn-config.h.
+ (struct extraction, struct code_ptr): New structures.
+ (gen_insn): Record what extractions are needed and compare with
+ those for previous insns.
+ (mark_operand_seen): Function deleted.
+ (walk_rtx): Use strings as path and just record; don't write.
+ (print_path): Use strings for paths.
+ (copystr): New function.
+ (main): Write out all extractions here.
+ * Makefile.in (genextract.o): Includes insn-config.h.
+
+ * hppa*.h: Change references from hp800* files to hppa*.
+
+ * rs6000.md (lshrdi3, ashrdi3): Fix typos.
+
+ * rs6000.md (extzv): Correctly install last change.
+
+Sat Apr 18 12:37:54 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * expmed.c (store_bit_field): Storing into a bitfield in memory
+ which is the size of a standard machine mode can be done with a
+ simple move instruction.
+
+ * c-lex.c (skip_white_space): carriage return (^M) is whitespace,
+ but warn about ^M if pedantic.
+
+ * cse.c (rtx_cost): New argument OUTER_CODE, the rtx code of the
+ expression in which the rtx argument is contained.
+ * expmed.c (init_expmed): Pass second argument to rtx_cost.
+ * optabs.c (expand_binop, expand_twoval_binop, emit_cmp_insn): Likewise.
+ * loop.c (init_loop, general_induction_var): Likewise.
+ * vax.c (vax_rtx_cost, vax_address_cost): New functions.
+ * vax.h (CONST_COSTS, RTX_COSTS, ADDRESS_COST): Call these
+ functions.
+ * romp.h (CONST_COSTS): Give constants different costs depending
+ on whether they can fit into a 2 byte instruction, a 4 byte
+ instruction, or would require insn splitting to use.
+ * i386.h (CONST_COSTS, RTX_COSTS): Move PLUS case to RTX_COSTS.
+ * m68k.h (CONST_COSTS): Constant in range -254..-136 is only cheap
+ in a move insn, not as an operand to some other instruction.
+ * config/*.h: Update machine descriptions to define CONST_COSTS
+ and RTX_COSTS macros with 3 arguments.
+
+Fri Apr 17 11:14:02 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (safe_from_earlyclobber): New function.
+ * recog.c (constrain_operands): Verify that earlyclobber
+ operands don't conflict with inputs.
+
+ * combine.c (subst, case SUBREG): Don't fold paradoxical SUBREGs
+ of constants.
+
+ * cse.c (fold_rtx, case SUBREG): Extend previous change so it
+ folds widened operations with one operand a constant.
+
+ * expr.c (safe_from_p, case BIND_EXPR): Only look at operand 1.
+
+ * cse.c (fold_rtx, case SUBREG): Don't fold paradoxical SUBREGs.
+ Instead, when we have a narrowing SUBREG, see if it is narrowing
+ the result of a widened arithmetic operation.
+
+Fri Apr 17 09:16:56 1992 Charles Hannum (mycroft@hal.gnu.ai.mit.edu)
+
+ * Makefile.in (install-dir): Don't use '-' prefix on continuation line.
+
+Fri Apr 17 06:52:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (rest_of_compilation):
+ If -Wreturn-type, don't stop before jump.c.
+
+ * calls.c (expand_call): Delete unused arg MODIFIER.
+ * expr.c: Arg deleted from calls (those which had it).
+
+ * ns32k.c (print_operand_address): Handle UTEK_ASM.
+ (print_operand): Handle NO_IMMEDIATE_PREFIX_IF_SYMBOLIC.
+ Abort if must get fp number as bits but cannot do so.
+ * ns32k.h (TRAMPOLINE_TEMPLATE): Use PUT_ABSOLUTE_PREFIX.
+ * ns32k.md (call, call_value): Handle ENCORE_ASM.
+ * encore.h (PRINT_OPERAND): Just call print_operand.
+ (CALL_MEMREF_IMPLICIT): Defined.
+
+ * config.sub: encore implies bsd, not sysv.
+
+ * stmt.c (expand_expr_stmt): Handle reference of volatile BLKmode.
+
+ * vax.md (indirect_jump): Delete the extra condition.
+
+ * configure (...-hpux): Set install_with_cp.
+
+ * jump.c (delete_insn): After a label, go past other deleted labels.
+
+ * m68k.md (movhi): Don't use switch_table_difference_label_flag
+ except in ports that need it.
+
+ * stmt.c (warn_if_unused_value): Don't warn for constant after comma.
+ Don't warn for volatile decl or ref.
+
+ * c-typeck.c (build_unary_op): ++ on void * warns if -Wpointer-arith.
+
+Thu Apr 16 22:56:20 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (enum block_move_type): New enumeration for classing what
+ type of block move is used when splitting the last store off.
+ (RTX_COSTS): Don't use -mdebugd to set multiply costs to 2.
+
+ * mips.c (output_movstrsi): Take an additional argument to determine
+ whether this block move is a normal block move, or one that has been
+ split. For the split block moves, there are two parts -- the first
+ part is everything but the last store, and the second part is the
+ last store, suitable to fill a delay slot.
+
+ * mips.md (all define_splits): Don't do any define_split if
+ -mdebugd.
+ (movstrsi_internal*): Add support to split block moves into two
+ pieces, one that is everything except for the last store, and the
+ second piece, which is the last store that can fill a delay slot.
+
+Thu Apr 16 21:52:59 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * x-rs6k-mach: New file.
+ * configure (rs6000-*-mach): Use it.
+
+Thu Apr 16 21:52:17 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * cse.c (cse_end_of_basic_block): Fix test for infinite loop.
+
+Thu Apr 16 21:50:38 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * rs6000.h (bss_section): Delete. No longer needed.
+
+ * a29k.c (print_operand, case 'F'): Always emit insn to fill empty
+ delay slot.
+
+Thu Apr 16 18:45:41 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * cse.c (simplify_ternary_operation): Correctly sign-extend result.
+
+Thu Apr 16 18:43:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c: Rename OBJC_NONUNIQUE_SELECTORS to
+ OBJC_SELECTORS_WITHOUT_LABELS.
+
+ * c-decl.c (duplicate_decls): Allow extern vs extern inline.
+
+ * c-parse.y (parmlist_or_identifiers_1): Use parmlist_1.
+ * c-decl.c (get_parm_info): Treat forward parm decls like nonparm
+ decls.
+
+ * m68k.md (movhi before dispatch table):
+ Set switch_table_difference_label_flag.
+ * 3b1.h, amix.h, m68ksgs.h (ASM_OUTPUT_CASE_END): Test that flag.
+ Declare the flag.
+
+ * m68k.c (output_function_prologue, print_operand_address): Add
+ HPUX_ASM conds.
+
+ * mips.c (output_block_move): If we get a case we can't handle,
+ don't print anything--just abort, because that implies a bug.
+
+ * c-decl.c (c_decode_option): -ansi sets flag_no_nonansi_builtin,
+ not flag_no_builtin.
+ (init_decl_processing): Check flag_no_nonansi_builtin for alloca, etc.
+
+ * dbxout.c (dbxout_symbol): Make pointer, not reference,
+ when variable's address is in a register.
+
+ * c-decl.c (c_decode_option): Ignore -Wimport, -Wno-import.
+
+Thu Apr 16 16:17:13 1992 Mike Stump (mrs@mole.gnu.ai.mit.edu)
+
+ * merge in Cygnus changes...
+
+ Thu Apr 16 12:23:06 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-call.c (build_method_call): propagate const around to avoid an
+ incorrect error message. This type of fix may now be necessary in
+ other parts of the compiler. This solves all but one known const
+ problems.
+
+ Wed Apr 15 14:18:27 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-type2.c (readonly_warning_or_error): because the compiler
+ is now warning about const alot more, for a release or two,
+ lets just warn about const problems, just in case it is a compiler
+ problem and not a user problem.
+
+ * cp-cvt.c (build_up_reference): Lets get tougher on const problems
+ on COMPONENT_REFs.
+
+ Wed Apr 15 11:59:42 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-decl.c (finish_function): Check for any debug info enabled,
+ not just DBX_DEBUG.
+
+ Wed Apr 15 10:03:36 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-cvt.c (build_up_reference): Propagate const and volatile
+ down into the type so error checking works better.
+
+ Tue Apr 14 11:44:32 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl.c (start_decl): Shouldn't use flag_this_is_variable
+ to make what this points to const, but I don't have the heart
+ to do it right now.
+
+ * cp-decl2.c (grokclassfn): Don't use flag_this_is_variable
+ to make what this points to const.
+
+ * cp-typeck.c (convert_arguments): Let build_up_reference handle
+ const errors correctly. Removes April 10 change.
+
+ * cp-cvt.c (build_up_reference): Don't let people subvert const
+ when passing const argements to non-const functions.
+
+ * cp-tree.c (build_cplus_method_type): Don't use
+ flag_this_is_variable to make what this points to const.
+
+ From Wed Apr 1 12:00:59 1992 Chip Salzenberg (chip at tct.com)
+
+ * cp-class.c (import_export_vtable): New function to set
+ TREE_PUBLIC and/or TREE_EXTERNAL on vtables.
+ (build_vtable): Use it.
+ (prepare_fresh_vtable): Use it.
+
+ * cp-decl.c (finish_decl): Don't assume that TREE_PUBLIC means
+ "exported"; it can mean "imported". Decide with TREE_EXTERNAL.
+ (finish_function): Ditto.
+ * cp-decl2.c (write_vtable_entries): Ditto.
+ (finish_vtable_typedecl): Ditto.
+ (finish_vtable_vardecl): Ditto.
+ (finish_file): Ditto.
+
+ * cp-lex.c (set_vardecl_interface_info): Public objects always
+ have TREE_PUBLIC, whether exported or imported.
+ * cp-pt.c (instantiate_member_templates): Ditto.
+
+
+ Fri Apr 10 21:44:15 1992 Per Bothner (bothner@cygnus.com)
+
+ * cp-method.c (build_overload_name): Mangle 'signed char'
+ as 'Sc' (i.e. differently from 'char'!).
+
+ Fri Apr 10 17:38:04 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (convert_arguments): don't allow people to wipe const.
+
+ Thu Apr 9 18:28:36 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-tree.h: Add entry for $vb and $vf so that NO_DOLLAR_IN_LABEL
+ works.
+ * cp-class.c (finish_struct): Use the new macros from cp-tree.h.
+ * cp-tree.c (layout_basetypes): Use the new macros from cp-tree.h.
+
+ Thu Apr 9 02:11:01 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-typeck.c (build_function_call_real): Merge in a change made to
+ the C front end into the C++ front end to handle volatile functions.
+
+ Thu Apr 9 03:45:03 1992 Mark Eichin (eichin at cygnus.com)
+
+ * cp-class.c (finish_struct): sanity check before calling popclass.
+ If we're already hosed due to previous parse errors (specifically,
+ we're not inside a class anymore) just report an error rather than
+ crashing in popclass (if there wasn't a previous parse error, as the
+ message suggests, we should get reports; this closes gcc/p0000525.)
+
+ Wed Apr 8 08:56:49 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Fix an eichin bug introduced seconds
+ ago. Shame, he didn't put:
+
+ Workaround for p869:
+ 1) grokdeclarator (around cp-decl.c:7462) is using popclass(1)
+ uses popclass(1) to close the pushclass(3) done by
+ build_push_scope; however, it's coming around another time and
+ popping all the way out, which leads to the core dump when
+ do_friend is called from global scope (do_friend uses
+ current_class_name to figure out whose friendship it is
+ bestowing.) Current workaround: if (friendp) don't allow
+ popping all the way out. We still need to figure out how to
+ make sure it only gets called the *right* time; we also need
+ to figure out if the correct scope is being used, but that's a
+ matter of regression testing.
+
+ into a ChangeLog entry.
+
+ Wed Apr 8 01:10:44 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl.c: Cleanup binding_levels_sane related code. Deleted
+ argument, and changed to void type. Removed extraneous asserts.
+
+ * cp-parse.y: Add fourth parameter to all finish_decl calls.
+ Defaulted the guess to 0.
+ * cp-decl.c: consistently use #if on all PARANOIDs.
+
+Wed Apr 15 14:00:14 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (movstrsi_internal): Add '&' constraint on clobbers.
+
+ * mips.c (output_movstrsi): If one of our temporary registers is
+ used as an address register, don't use it and emit a warning. This
+ is a temporary measure.
+
+Wed Apr 15 09:04:22 1992 Richard M. Stallman (rms at lyssenko)
+
+ * xm-ns32k.h (memcpy, memcmp, memset): New macro definitions.
+ * rtl.c (gcc_memset): New function.
+
+Wed Apr 15 09:03:28 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (umulsidi3): Define for m88110.
+ (unit attribute): Define.
+
+ * x-m88kdgux (INSTALL_HEADERS): Define as empty.
+
+Tue Apr 14 13:28:11 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * c-lex.c (yylex): When warn_traditional, don't abort for harmless
+ type differences. Instead warn of possible problems on other systems.
+
+ * rtl.c (add_dependence): Skip notes when HAVE_cc0.
+ * sched.c (sched_analyze_2): Likewise.
+
+ * sparc.md (movdf-1): Delete special case for moving 0.0 to integer
+ registers; it resulted in poor code.
+ (fix_truncdfsi2+1): Add patterns to optimize float->fix and
+ float->fix->float conversions.
+ * sparc.c (output_move_double): Clean up ldd/std code. Don't emit
+ ldd/std for obviously unaligned address even when TARGET_HOPE_ALIGN.
+ (output_fp_move_double): Call output_move_double for MEM cases.
+ It is not safe to assume double reg addresses are always aligned.
+
+Tue Apr 14 07:55:47 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * *hp800*, *hp700*: Rename to *hppa* and *hppa1.1*, respectively.
+ * config.sub: Recognize PA model numbers for PA 1.0 and 1.1.
+ Disable "hppa" with no model number.
+ * configure: Update for new PA file names and basic_machine names.
+ * README-PA-HPUX: New name for README-PA-RISC, with some corrections.
+
+Tue Apr 14 05:46:37 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * Makefile.in ("if" and "["): Romp, 4.3 BSD, and Ultirx systems
+ fail when the condition is false. Change troublesome instances to
+ either use "case" or use '-' as a prefix to the compilation rule.
+
+Mon Apr 13 18:20:56 1992 Mike Stump (mrs@cygnus.com)
+
+ * dwarfout.c: Add default definition for ASM_OUTPUT_ASCII
+ as that is what varasm.c does now. This really maybe should go
+ into a file like tree.h or some machine independant file, for
+ maintainability.
+
+Mon Apr 13 18:16:32 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sun3.h, sparc.h (LINK_SPEC): Change nostdlib to !nostdlib.
+
+Mon Apr 13 07:17:36 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * rs6000.md (extzv): Generate andi[ul] when practical.
+
+Mon Apr 13 07:17:36 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (rtx_cost, case SUBREG): If modes can't be tied, make
+ expensive.
+ (cse_insn): Make extra entries when DEST is a multi-word SUBREG
+ as long as it is the same number of words as its inner REG.
+
+ * emit-rtl.c (gen_lowpart_common): Handle casting integer to
+ float and vice versa.
+
+ * emit-rtl.c (gen_lowpart_common): Rework code to truncate a
+ constant so we don't convert negative values into positive values;
+ use same code as in simplify_binary_operation in cse.
+
+Mon Apr 13 07:16:56 1992 Richard M. Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * cccp.c (handle_directive): When find quote during copying,
+ give bp as limit arg in skip_quoted_string.
+ When find \ while copying, copy next char without special handling.
+
+Mon Apr 13 06:57:18 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kv3.h (CTOR_LIST_BEGIN): Avoid complex #if.
+
+ * tree.h (saved_insns): Make this a union holding an rtx or an int.
+ (DECL_FIELD_SIZE): New macro for overloaded uses of DECL_FRAME_SIZE.
+ * c-decl.c (finish_struct): Use DECL_FIELD_SIZE for bitfields.
+ * cp-class.c (finish_struct): Ditto.
+ * objc-actions.c (objc_copy_list, encode_field_decl): Ditto.
+ * stor-layout.c (layout_decl): Ditto.
+
+Sun Apr 12 17:46:30 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * expr.c (expand_builtin, case SQRT): Don't defer popping args on
+ function calls, as the call might be deleted.
+
+ * i386.c (print_operand): Delete references to unused codes.
+ Abort if an unrecognized code is seen.
+
+ * i386.md (bit opcode recognizers): Accept starting bit numbers
+ that are constants but not CONST_INT.
+ (QI/HI register bit test): Delete.
+ (SImode bit test): Don't accept CONST_INT starting bit number.
+
+Sun Apr 12 17:05:25 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (ADDITIONAL_REGISTER_NAMES): Add "cc" as alias for cr0.
+
+ * cse.c (equiv_constant): See if a MEM is foldable or has a
+ constant equivalent.
+
+ * expr.c (store_constructor): If building a static constructor
+ into a register, start out by zeroing the register so we can
+ constant-fold the constructor to a single constant.
+ (expand_expr, case CONSTRUCTOR): Don't write constant objects
+ into memory if the target is a register.
+ (expand_expr, case *_REF): Simplify getting field or array
+ entry from a CONSTRUCTOR.
+ Don't use value of const array unless -O.
+
+Sun Apr 12 14:15:33 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * Makefile.in (compare, compare3): New targets.
+ (mostlyclean): Delete temporary files made by those targets.
+
+ * stmt.c (expand_asm_operands): Ignore `cc' as clobbered reg if name
+ not known.
+ * varasm.c (decode_reg_name): Ret -3 if `cc' not recognized.
+ (make_decl_rtl): Understand -3 as value.
+
+ * configure (i386-sequent-bsd*): Use collect2.
+
+Sun Apr 12 13:28:00 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * configure: Correctly interpret use_collect2.
+
+Sun Apr 12 10:34:58 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-typeck.c (digest_init): Use INIT to pass to convert_for_assignment
+ for a raw constructor.
+
+ * fold-const.c (fold, case COND_EXPR): Get the type right when
+ the test is folded away.
+
+ * loop.c (strength_reduce): Correct off-by-one error in INSN_LUID
+ safety check.
+
+ * stor-layout (layout_record, layout_union): When limiting the
+ effect of PCC_BITFIELD_TYPE_MATTERS to bitfields, use
+ DECL_BIT_FIELD_TYPE to determine if it was a bitfield.
+
+Sat Apr 11 19:54:00 1992 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * config.sub: Don't "standardize" an os of newsos* to bsd
+ (it breaks gdb/readline/configure.in, which checks for newsos*).
+
+Sat Apr 11 16:32:21 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * Makefile.in: Remove spaces after reg-stack.o deps.
+
+Sat Apr 11 16:32:15 1992 Michael Meissner (meissner@osf.org)
+
+ * c-decl.c (init_decl_processing): Make -fno-builtin supress all
+ builtin functions in the user's name space like memcpy, strlen,
+ etc.
+
+Sat Apr 11 14:00:53 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (LEGITIMIZE_ADDRESS): Add missing force_reg call.
+ Jump to WIN when we do something.
+
+ * rs6000.c (non_{short,add,logical,and}_cint_operand): New functions.
+ * rs6000.h (PREDICATE_CODES): Add these predicates.
+ * rs6000.md (addsi3, andsi3, iorsi3, xorsi3, cmpsi3): Remove
+ define_expands; instead, add define_split for long constants.
+
+ * combine.c (try_combine): Try to split the pattern using
+ split_insns before trying find_split_point.
+ (find_split_point, case MEM): Try to split an invalid address that
+ is a PLUS with a CONST_INT.
+
+ * combine.c (try_combine): Correctly check if an auto-inc
+ side-effect has been duplicated.
+
+ * expr.c (expand_expr, case PARM_DECL): Return zero of proper mode
+ if no DECL_RTL.
+
+ * tree.c (save_expr): Must do something with read-only tree that
+ has side-effects.
+ (stabilize_reference_1): Don't ignore read-only trees.
+
+ * reload.c (find_replacement): New function.
+ * reload.h (find_replacement): Declare it.
+ * reload1.c (gen_input_reload): Use it to ensure substitutions
+ get done if we need to recreate a PLUS.
+
+Sat Apr 11 14:00:02 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * cse.c (cse_end_of_basic_block): Don't stop scanning insns if a
+ jump is found that can't be followed.
+
+ * genextract.c: Make insn_extract copy the address of
+ recog_operand and recog_operand_loc into register variables.
+
+Sat Apr 11 13:59:17 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * c-parse.y (stmt): Parse entire parens of `for'
+ before actually starting the loop.
+
+Sat Apr 11 10:35:06 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * caller-save.c (restore_referenced_regs): Do not call XEXP on
+ reg_equiv_address since reg_equiv_address is already an address.
+
+ * expr.c (expand_builtin, case SQRT): Note the dangers involved in
+ changing the argument test condition.
+
+ * m68k.md (sqrtdf2): New pattern to take advantage of the 68881
+ sqrt function.
+
+Fri Apr 10 18:37:08 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * hp800.c (output_function_epilogue): Output code to restore gr2 in
+ non-frame-pointer case correctly.
+
+Fri Apr 10 15:24:57 1992 Michael Meissner (meissner@osf.org)
+
+ * decrose.h (TARGET_MEM_FUNCTIONS): Define, memcpy/memset are
+ provided.
+
+ * i386rose.h (TARGET_MEM_FUNCTIONS): Define, memcpy/memset are
+ provided.
+
+ * encrose.h (TARGET_MEM_FUNCTION): Define, memcpy/memset are
+ provided.
+
+ * mips-tfile.c (copy_object): Omit the test for zero flags, since
+ MIPS vendors are now putting bits in there.
+
+ * mips-svr4.h (HAVE_ATEXIT): Define, atexit is provided.
+ (TARGET_MEM_FUNCTIONS): Define, memcpy/memset are provided.
+
+ * mips-sysv.h (TARGET_MEM_FUNCTIONS): Define, memcpy/memset are
+ provided.
+
+ * mips-news5.h (TARGET_MEM_FUNCTIONS): Define, memcpy/memset are
+ provided.
+ (getpagesize): Define a getpagesize that uses sysconf, just like the
+ MIPS V.4 port.
+
+ * mips.c (output_block_move): Don't emit ulw/usw if GAS is the
+ assembler, use the lwl/lwr/swl/swr building blocks instead, since
+ GAS doesn't yet support the ulw/usw macro instructions.
+
+ * configure (mips-sgi-irix4): Use config/iris4.h instead of
+ config/iris.h.
+
+ * iris4.h (new file): Just like iris.h, atexit is provided (unlike
+ IRIX revision 3).
+
+ * iris.h (TARGET_MEM_FUNCTIONS): Define, memcpy/memset are provided.
+
+Fri Apr 10 11:59:02 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (cmpstr patterns): Correctly handle zero length
+ compares. Rewrite to avoid needing scratch register.
+
+Thu Apr 9 14:05:04 1992 Michael Collison (collison at osf.org)
+
+ * i386rose.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE): Fix these to
+ avoid printing NaNs, and infinity.
+
+Thu Apr 9 11:34:31 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kluna.h (DEFAULT_GDB_EXTENSIONS): Define as 0.
+
+Wed Apr 8 20:21:59 1992 Michael Meissner (meissner@osf.org)
+
+ * halfpic.c (all functions): Add a hash table for the lookup instead
+ of linear search. Don't use bits in the IDENTIFIER node, store the
+ information in the hash table. Always rebuild the SYMBOL_REF
+ returned by half_pic_ptr, instead of storing it away, since the RTL
+ gets reused at the end of the function.
+ (half_pic_declare): New function, called when a label is laid down
+ to say that it is no longer half-pic.
+
+ * halfpic.h (half_pic_declare, HALF_PIC_DECLARE): Add function
+ defintion, and accessor macro.
+
+ * mips.h (HALF_PIC_DECLARE): Add dummy macro if not OSF/rose.
+ (ASM_DECLARE_OBJECT_NAME): Invoke HALF_PIC_DECLARE on name.
+ (ASM_DECLARE_FUNCTION_NAME): Ditto.
+ (*_SECTION_ASM_OP): Put the leading tab back in.
+
+ * mips.md (dslot attribute): 'pic' type requires a delay slot, since
+ it is really a load.
+ (movsi): Make movsi a define_expand, and if it's moving the address
+ of a half-pic item into a register, convert it into a load.
+ (movsi_internal): The old movsi define_insn renamed.
+ (movstrsi_internal): Add '=' constraint on all stores and clobbers.
+
+ * decrose.h (LINK_SPEC): If not -noshrlib or -pic-none, pass
+ -warn_nopic. Allow user to pass -noshrlib directly.
+
+Wed Apr 8 00:11:56 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.h (MOVE_MAX): Set to 8 instead of 4.
+
+ * sched.c (sched_analyze_2): Don't abort if find note before a CC0
+ using insn.
+
+ * sparc.h (ADDITIONAL_REGISTERS_NAMES): Add. Define fake reg name
+ ccr, for use in asm clobbers.
+
+ * sparc.h (TARGET_FORCE_ALIGN): Add comment explaining that it
+ is for experimental purposes only.
+ (FIRST_PARM_OFFSET): Add 4 when TARGET_FORCE_ALIGN to ensure that
+ stack is double-word aligned.
+ (FIRST_PARM_CALLER_OFFSET): Delete obsolete macro.
+
+ From Tom Wood:
+ * unroll.c (final_giv_value): Put the subtracts in the right place.
+
+ * sparc.c (compute_last_arg_offset): Delete, no longer needed.
+ (FRAME_POINTER_REQUIRED): Do not depend on frame size.
+
+Tue Apr 7 22:36:33 1992 Michael Meissner (meissner@osf.org)
+
+ * halfpic.c (whole file): Flesh out initial half-pic implementation
+ for the OSF/1 reference ports. This is still a work in progress.
+
+ * halfpic.h (toplevel): Add declarations for half_pic_finish and
+ half_pic_ptr. Add macros HALF_PIC_FINISH, HALF_PIC_PTR, and
+ HALF_PIC_PREFIX.
+
+ * mips.h (call_memory_operand): Delete call_memory_operand
+ function declaration.
+ (PREDICATE_CODES): Ditto.
+ (CONSTANT_ADDRESS_P): Correctly reject half-pic addresses.
+
+ * mips.c (call_memory_operand): Delete function.
+
+ * mips.md (call* patterns): Use memory_operand instead of
+ call_memory_operand for predicates. Use the test not register and
+ not CONSTANT_ADDRESS_P instead of call_memory_operand in the
+ define_expand body to test whether the function address needs to be
+ forced to a register.
+
+ * decrose.h (HALF_PIC_DEBUG): Define as true if -mdebugb, to debug
+ the half-pic code, just like debugging normal addressing.
+ (CPP_SPEC): Use the __<name>__ form of the language macros instead
+ of __<name>.
+ (LINK_SPEC): If -pic-lib and not -noshrlib, pass -warn_nopic.
+ (LIB_SPEC): Don't pass -L/usr/ccs/lib.
+
+ * x-decrose (CCLIBFLAGS): Pass -pic-extern when building libgcc1.a.
+ (LIBGCC2_CFLAGS): Pass -pic-extern when building libgcc2.a.
+
+Tue Apr 7 19:00:56 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * xm-m88k.h (NO_SYS_SIGLIST): Not provided by the 88open standards.
+
+ * m88k.c (output_ascii): Generalize to support ident
+ * m88k.h (ASM_OUTPUT_IDENT, ASM_OUTPUT_ASCII): Use output_ascii.
+
+ * m88k.c, m88k.md, m88k.h: Integrate all changes to support the m88110.
+
+Mon Apr 6 22:51:02 1992 John Wroclawski (jtw@lcs.mit.edu)
+
+ * mips-tfile.c (read_seek): Fix argument order in calls to
+ fatal.
+
+Mon Apr 6 21:17:38 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ * merged in Cygnus sources.
+
+ Mon Apr 6 15:26:09 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-spew.c (hack_more_ids): Reimplement. Change from Niklas
+ Hallqvist.
+
+ Thu Apr 2 02:36:36 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-*: Simplify DECL_NAME (TYPE_NAME into TYPE_IDENTIFIER.
+
+ * cp-call.c (build_method_call): Fix an error message.
+
+ * cp-parse.y (LC): Renamed to left_curly.
+ (TYPENAME_SCOPE): Renamed to typename_scope.
+
+Mon Apr 6 14:04:49 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.h (TARGET_HOPE_ALIGN): Fix typo, `-fast' -> `-dalign'.
+
+ * expr.c (expand_expr, INDIRECT_REF case): Set MEM_IN_STRUCT_P if
+ this is an indirect of the address of an array, struct, or union.
+
+ * jump.c: Delete declaration of squeeze_notes.
+ (jump_optimize): Use new return value from squeeze_notes.
+ (squeeze_notes): Handle the case where START may be a note that
+ must be moved outside the range. Now returns the new start value.
+ * loop.c (find_and_verify_loops): Use squeeze_notes return value.
+ * stmt.c (expand_end_case): Call squeeze_notes before reorder_insns.
+ * rtl.h: Declare squeeze_notes.
+
+ * rs6000.h (PTRDIFF_TYPE): Define to int.
+
+ Mostly from tege@sics.se:
+ * sparc.c (eligible_for_epilogue_delay): Clarify comment. Delete
+ unreachable test of leaf_function.
+ (singlemove_string): Correct test for when can use sethi alone.
+ (output_function_prologue): Declare leaf_function. More
+ efficiently frame sizes greater than 4095. Correctly handle leaf
+ functions with frame greater than 4095.
+ (output_function_epilogue): Likewise.
+ (output_return): Likewise.
+
+Mon Apr 6 10:11:08 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * config.sub : Add hp700 cpu type.
+ * configure : Make hp700-bsd and hp700-hpux cases, with use of gas
+ an option.
+ * hp700hpuxg.h, hp800hpuxg.h : New files for using gas under hpux.
+ * hp800.h (REGISTER_NAMES): Change to use %r style register names;
+ required to name PA-RISC 1.1 fp registers.
+ * x-hp800hpux : Don't invoke the assembler to compile alloca.c.
+ * README-PA-RISC: New file.
+
+Mon Apr 6 08:00:06 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (relax_delay_slots): Don't get confused when a label
+ becomes zero (meaning end of function).
+
+Sun Apr 5 13:45:37 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i860.md (floatsidf3): Fixed to expand to a correct insn sequence.
+
+Sun Apr 5 12:33:02 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * rs6000.h (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CCEQmode.
+ (SELECT_CC_MODE): Select it for equality comparison of comparison.
+ * rs6000.c (scc_comparison_operator): Reject improper use of
+ CCEQmode.
+ (ccr_bit): Handle CCEQmode, where bit is always third in field.
+ (print_operand, case 'E'): New case.
+ * rs6000.md: New pattern to compare two comparisons with
+ creqv/crxor.
+ Add peephole for two consecutive scc insns.
+
+ * combine.c (subst, case FFS): (ffs (*_extend X)) -> (ffs X)
+ (make_compound_operation): Handle (and (rotate X C) M).
+
+ * flags.h (flag_cse_skip_blocks): New variable.
+ * toplev.c (flag_cse_skip_blocks): Define it here.
+ (f_options): Add it to table.
+ (main): -O2 turns it on.
+ * cse.c (invalidated_skipped_{set,block}): New functions.
+ (enum taken): New value, AROUND.
+ (cse_end_of_basic_block): New argument SKIP_BLOCKS. If it is
+ nonzero, follow a branch around a block of code which contains
+ no labels and set status = AROUND for the jump.
+ (cse_main): Pass FLAG_CSE_SKIP_BLOCKS argument to
+ cse_end_of_basic_block.
+ (cse_basic_block): If jump status is AROUND, call scan_skipped_block
+ before following jump.
+
+Sun Apr 5 04:16:46 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * optabs.c (emit_cmp_insn): Add missing parameter type declaration.
+
+ * expr.c (expand_builtin, case SQRT): Fix typo emitting insns.
+ Reformat to look like the rest of gcc. Use accessor macros to
+ access fields of an RTX. Make comments match code.
+
+ * i386.md (cmpstr patterns): Handle zero length compares.
+
+Sat Apr 4 04:40:58 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_equiv_reg): Avoid passing zero to true_regnum.
+
+ * expr.c (expand_expr, case COMPONENT_REF): Handle case where we
+ are extracting a field of a constant.
+
+ * a29k.h ({TEXT,READONLY_DATA,DATA}_SECTION_ASM_OP): Put tab back.
+
+ * rs6000.c (output_epilog): Reduce number of lines generated to
+ write traceback table.
+
+ * combine.c (move_deaths): A destination is used in this insn
+ unless is it completely overwritten.
+
+Sat Apr 4 04:39:16 1992 John Carr (jfc at ATHENA.MIT.EDU)
+
+ * expmed.c (store_bit_field, extract_bit_field): Remove redundant
+ tests for MEM.
+
+ * c-common.c (binary_op_error): Handle FLOOR_DIV_EXPR, FLOOR_MOD_EXPR,
+ *ROTATE_EXPR.
+ * c-typeck.c (build_binary_op): Handle FLOOR_MOD_EXPR.
+
+Sat Apr 4 00:29:40 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (c_decode_option): `-' was missing in -Wno-redundant-decs.
+
+ * Makefile.in (USE_COLLECT2, MAYBE_USE_COLLECT2): New variables.
+ (GCC_PARTS, native, install-common): Use USE_COLLECT2.
+ (toplev.o): Use MAYBE_USE_COLLECT2.
+ * configure: Let particular cases set use_collect2
+ and have that control use of collect2 through editing Makefile.
+ Handle --with-gnu-as and --with-gnu-ld options. Ignore --with-*.
+ --with-gnu-ld turns off use_collect2.
+ * i386rose.h (CC1PLUS_SPEC): Deleted.
+
+ * gcc.c (do_spec_1): In case 'D', strip final / from prefixes.
+
+ * c-decl.c (push_c_function_context): Add pedantic warning.
+
+ * collect2.c (main): Figure STANDARD_EXEC_PREFIX into clen.
+
+ * c-typeck.c (get_spelling): Move alloca outside fn call.
+
+Fri Apr 3 16:36:54 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c (output_constant_def): Set MEM_IN_STRUCT_P if nec.
+
+Fri Apr 3 05:32:39 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * m88k.md (call_block_move{,_loop}): Don't write USE for regs
+ we don't set; remove unneeded CLOBBERs for call-used registers.
+
+ * caller-save.c (insert_save_restore): Abort rather than writing
+ out an insn having a null source or destination.
+
+ * explow.c (allocate_dynamic_stack_space): Don't reference
+ STACK_BOUNDARY if it isn't defined.
+
+ * explow.c (allocate_dynamic_stack_space): Don't use TARGET if it
+ isn't a pseudo reg.
+
+Fri Apr 3 01:50:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4: Don't reconvert __i386 if have _ after.
+
+ * c-decl.c (grokdeclarator): Use size_binop to get array hbound - 1.
+
+ * enquire.c: Include sys/types.h.
+
+ * c-typeck.c (check_format): Don't use type name for integer types
+ or pointers to them.
+
+ * explow.c (allocate_dynamic_stack_space): New arg KNOWN_ALIGN.
+ All callers changed.
+
+Thu Apr 2 15:24:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type): Output just xref for var-size struct/union.
+
+ * reload.c (find_equiv_reg): In previous change, verify valtry != 0.
+
+Thu Apr 2 08:34:38 1992 Michael Meissner (meissner@osf.org)
+
+ * iris.h (SIZE_TYPE): Make type unsigned int, not unsigned long.
+ (PTRDIFF_TYPE): Define to be 'int', not 'long int'.
+ (WCHAR_TYPE): Define to be 'unsigned char', not 'int'.
+ (WCHAR_TYPE_SIZE): Define to be 8, not 32.
+
+Thu Apr 2 06:01:07 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case COND_EXPR): Add missing test for zero.
+
+ * expr.c (expand_expr, case ARRAY_REF): Handle case of constant
+ array whose initializer is a string.
+
+ * optabs.c (emit_libcall_block): Don't move up insns that set
+ pseudos whose old values are used in previous insns.
+
+ * genattrtab.c (attr_rtx): Add some casts to int from enum rtx_code.
+
+Thu Apr 2 04:20:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xm-mipsnbsd.h: New file.
+ * configure (mips-sony-bsd*): Use that.
+
+ * stmt.c (expand_end_case): Move the convert_to_mode after emit_queue.
+
+Thu Apr 2 00:49:18 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * stmt.c (expand_end_case): Fix typo.
+
+Wed Apr 1 19:01:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (size_int): Always switch to permanent_obstack
+ to make a node that will be saved
+
+Wed Apr 1 15:36:19 1992 Michael Meissner (meissner@osf.org)
+
+ * xm-irix4.h (alloca.h): Don't include <alloca.h> if not using the
+ GNU compiler, since the Silicon Graphics compiler's alloca complains
+ if the result of alloca is stored in something that is not a simple
+ variable. Just use the C version of alloca.c.
+
+Wed Apr 1 14:42:24 1992 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu)
+
+ * pyr.md (HImode compare recognizers): Don't match if subsequent
+ branch has unsigned predicate.
+
+Wed Apr 1 14:20:13 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (output_function_epilogue): Drop unused true_epilogue
+ parameter. Delete obsolete tail-call support code, which worked
+ by passing -1 for leaf_function.
+ (tail_call_valid_p): Delete obsolete function.
+ (output_tail_call): Likewise.
+ * sparc.h (TARGET_TAIL_CALL): Delete obsolete option.
+ (FUNCTION_EPILOGUE): Fix call to output_function_epilogue.
+ * sparc.md (tail_call): Delete obsolete pattern.
+
+ * rs6000.c (output_epilogue): Output a traceback table.
+
+Wed Apr 1 06:42:54 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.h: Override ASM_OPs added to svr4.h.
+
+Wed Apr 1 03:12:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * emit-rtl.c (operand_subword): Swap words from const_double if nec
+
+ * ns32k.h (GO_IF_INDEXING): New arg MODE; caller changed.
+ Pass to INDEX_TERM_P.
+
+Tue Mar 31 18:10:10 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genattrtab.c (check_attr_value): Fix some backwards tests.
+
+ * expr.c (move_by_pieces{,_ninsns}): Only look at MODE_INT modes.
+
+ * fold-const.c (fold, case COND_EXPR): Fix typo in last change.
+
+ * stor-layout.c (layout_record): Add missing call to size_int.
+
+ * expr.c (do_store_flag): Handle case where EXP is a TRUTH_NOT_EXPR.
+
+Tue Mar 31 17:18:20 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing): Enable `sqrt'.
+ * expr.c (expand_builtin, case SQRT): By default check that the
+ argument to sqrt is in sqrt's domain. If the argument is not in the
+ domain, then call the library function. Skip argument checking if
+ -ffast-math is in use.
+
+ * flags.h (flag_fast_math): Declare new variable.
+ * toplev.c (f_options): Add flag_fast_math to table.
+
+Tue Mar 31 17:11:09 1992 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * cccp.c: Add new flag -nostdinc++ to disable searching
+ standard C++-specific include directories. This is useful
+ for building libg++.
+ * gcc.c: Pass -nostdinc* to cpp, not just -nostdinc.
+ * cpp.texi: Document -nostdinc++.
+
+Tue Mar 31 15:32:34 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (link_command_spec): Use %l before %X.
+
+ * svr4.h (MULTIBYTE_CHARS): Turned off.
+
+ * sun3.h, sparc.h (LINK_SPEC): Inhibit -e if -nostdlib.
+
+ * collect2.c (my_strerror): Renamed from strerror.
+
+ * reload.c (find_equiv_reg): Find constants in REG_EQUIV notes.
+
+ * m68k.h (PRINT_OPERAND_PRINT_FLOAT): Fix typo in #ifdef.
+
+ * Makefile.in (install-dir): Create include subdir.
+
+Tue Mar 31 18:03:21 1992 Thorsten Ohl (ohl@apollo.desy.de)
+
+ * x-apollo68 (CFLAGS, LIBGCC2_CFLAGS): Defined.
+ * t-apollo68: new file, use collect2.
+ * configure: use `t-apollo68'.
+
+ * apollo68.h (ASM_SPEC): Delete -C.
+ (STRUCT_VALUE_INCOMING): Now 0.
+ (HAVE_ATEXIT): Defined.
+ (PROMOTE_PROTOTYPES): Delete #undef.
+ (USER_LABEL_PREFIX): Undef.
+ (LOCAL_LABEL_PREFIX, REGISTER_PREFIX, REGISTER_PREFIX_MD): Override.
+ (ASM_RETURN_CASE_JUMP): Defined.
+ (REGISTER_NAMES): Override.
+
+Tue Mar 31 14:59:53 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * hp800.md (movsi+4, call_value+1): Add x,y constraints for Snake
+ fp registers.
+ * hp800.h (INITIAL_FRAME_POINTER_OFFSET): Fix for Snake stack
+ alignment.
+ (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Fix for Snake fp
+ registers.
+ * hp800.c (output_function_prologue): Align stack for Snakes.
+ (output_arg_descriptor): Fix Snake typos.
+
+ * hp700.h, hp700hpux.h : New files
+ (TARGET_DEFAULT): Emit Snake code by default.
+ * hp700hpux.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Define to work
+ around assembler syntax difference between 700 and 800 series HPUX.
+ * hp800.h (ASM_DOUBLE_ARG_DESCRIPTORS): Conditionalize on the
+ above symbol.
+
+Tue Mar 31 09:58:52 1992 Michael Meissner (meissner@osf.org)
+
+ * mips-sysv.h (getpagesize): When compiling the trampoline code,
+ define a macro getpagesize which uses the POSIX sysconf function.
+
+ * mips-svr4.h (getpagesize): When compiling the trampoline code,
+ define a macro getpagesize which uses the POSIX sysconf function.
+
+Mon Mar 30 19:25:48 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * loop.c (strength_reduce): In recent maybe_multiple code, only
+ apply INSN_LUID to insn when safe.
+
+Mon Mar 30 17:24:33 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.c (output_block_move): Fix typos that would generate
+ incorrect code if either the source or destination is a global or
+ static memory address. Increment appropriate -mstats counters.
+
+ * x-iris (INSTALL): Use cp to install stuff, not install -c.
+
+Mon Mar 30 16:39:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * m68k.md: Use `\;', not `;', to separate insns.
+
+ * toplev.c (main): Add cast when setting debug_info_level.
+
+ * m68k.h (GLOBAL_ASM_OP): New macro.
+ (ASM_GLOBALIZE_LABEL): Use that.
+ * hp320.h, m68ksgs.h, mot3300.h (GLOBAL_ASM_OP): Override this.
+ (ASM_GLOBALIZE_LABEL): Not this.
+
+ * libgcc2.c (__builtin_saveregs) [sparc]: Define both assembler labels
+ __builtin_saveregs and ___builtin_saveregs, to handle all systems.
+
+ * m68k.h (TRANSFER_FROM_TRAMPOLINE): Add a globalize command.
+ (TRAMPOLINE_TEMPLATE): Make the JSRs really JSRs.
+ Always use precisely ___trampoline.
+
+Mon Mar 30 07:17:50 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (inc_for_reload): Declare CODE consistently.
+ (constraint_accepts_reg_p): Add missing cast.
+
+ * fold-const.c (fold, case TRUTH_ANDIF_EXPR): Fix typo in last change.
+
+Mon Mar 30 01:07:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * rtl.h: Don't continue #if lines.
+
+Mon Mar 30 03:30:54 1992 Mike Stump (mrs@cygnus.com)
+
+ * Merge in Cygnus cp-* sources, below are the ChangeLog entries from
+ the Cygnus ChangeLog file. Note, I am experimenting with a slightly
+ different format, as Tiemann would like the dates to remain intact,
+ but Stallman does not want the dates out of order and would rather
+ have the entries altogether anyway.
+
+ Sun Mar 29 16:57:31 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Handle typedef before other
+ specifiers, as typedef is now more complex in c++ than in c.
+
+ Sun Mar 29 12:00:03 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-decl.c (start_function): Always set TREE_PUBLIC if DECL1 is
+ part of any interface.
+
+ * cp-cvt.c (convert_to_reference): Don't type to convert a type to
+ itself.
+ (build_type_conversion): Don't look for alternatives to default
+ type conversion except to integral and real types. Fixes bug
+ exposed in 19 March change.
+
+ Tue Mar 24 07:53:46 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-tree.c (lvalue_p): POST{INC,DEC}REMENT_EXPR is not an lvalue.
+ * cp-typeck.c (build_modify_expr): Ditto.
+
+ * cp-init.c (emit_base_init): If debugging, force out a line note so
+ we can step into ctors for base initializers.
+ (build_virtual_init): Note that we need to do some more work to
+ handle replicated base classes in multiple inheritance lattices.
+
+ Mon Mar 23 00:33:35 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-init.c (expand_aggr_init_1): Finish Mar 15 change concerning
+ INDIRECT_REFs that have TREE_HAS_CONSTRUCTOR set.
+
+ * cp-call.c (build_overload_call_real): Ensure FINAL_CP->EVIL is set
+ when FINAL_CP is non-NULL and we encounter an ERROR_MARK_NODE in the
+ operands we are processing.
+
+ * cp-cvt.c (convert_to_reference): Propagate ERROR_MARK_NODE from
+ failed type conversions.
+
+ Sun Mar 22 20:01:51 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-init.c (is_aggr_typedef): Don't give an error message if NAME
+ is ERROR_MARK_NODE.
+
+Sun Mar 29 09:29:10 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-gcc.com: Remove patch from March 7.
+
+ * make-l2.com: Use compiler that was just built, if available,
+ otherwise use system compiler if it is version 2.
+
+Sun Mar 29 19:53:33 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * fold-const.c ({invert,swap}_tree_comparison): New functions.
+ (comparison_equiv_p): Deleted.
+ (operand_equal_for_comparison_p): New function.
+ (invert_truthvalue): Use invert_tree_comparison.
+ (fold): Use variables T1 and TEM consistently.
+ Don't mix arg[01] and TREE_OPERAND (t, [01]); they aren't
+ identical.
+ (fold, comparison cases): Use new functions to adjust comparison
+ codes; add var INVERT.
+ Convert f >= f to f == f for FP and similar.
+ Correctly compute FP <= and >= when one arg is a NaN.
+ Clean up handling of constant results.
+ (fold, case COND_EXPR): Rework considerably to catch more forms
+ of abs, min, max, and -abs and also clean up; use new function
+ operand_equal_for_comparison_p.
+
+Sun Mar 29 00:00:35 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (simplify_relational_operation): Arg ptr reg may be 0.
+
+ * gcc.c: Always define R_OK, etc. if system headers don't.
+
+ * c-parse.y (maybe_attribute): Accept `mode (m)' attribute.
+ * c-common.c (decl_attributes): Handle that attribute.
+
+ * tower.h (REGISTER_NAMES): Discard the fpa regs.
+ * tower-as.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
+ Don't handle fpa regs.
+ (PUT_SDB_START_DIM, PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM):
+ New macros.
+ (PUT_SDB_DIM): Deleted.
+
+ * m68k.h (RTX_COSTS): Smaller multiply costs on 68040.
+
+ * stmt.c (expand_end_case): Reduce amount of specific modes
+ used in handling casesi.
+
+ * collect2.c (savestring): Copy only SIZE bytes of string.
+
+ * gstddef.h: Handle __need_size_t, __need_wchar_t, __need_ptrdiff_t,
+ and _need_null.
+
+ * c-typeck.c (digest_init): Save INIT with nops not stripped
+ to pass to convert_for_assignment.
+
+Sun Mar 29 12:27:01 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * vms.h (FUNCTION_PROLOGUE): Redefine to add 4 bytes to local
+ storage on the stack.
+ (STARTING_FRAME_OFFSET): Redefine as -4.
+
+Sun Mar 29 19:58:57 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (store_parm_decls): Function prototypes now override
+ old-style definitions if argument types disagree only because of
+ promotions.
+
+Sun Mar 29 17:40:56 1992 Fred Fish (fnf at fishpond)
+
+ * fixincludes (stdlib.h): Fix free/calloc/malloc/realloc return types.
+
+Sun Mar 29 15:12:39 1992 Ron Guilmette (rfg at ncd.com)
+
+ * sparc.c (sparc_type_code): Added this new routine.
+ (tree.h): Included to support `sparc_type_code'.
+ (output_block_move): Cleaned up code to handle assembler-specific
+ aspects of internal labels.
+
+ * sparc.h: (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER, LEAF_REGISTERS):
+ Deleted spurious semicolons.
+ (ASM_DECLARE_RESULT): New macro to generate the .proc directive.
+ (ASM_DECLARE_FUNCTION_NAME): Changed to use ASM_DECLARE_RESULT.
+ (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Changed to use
+ ASM_GENERATE_INTERNAL_LABEL when generating jump table elements.
+
+ * svr4.h (SVR4): Don't define this symbol here. (It was never
+ needed, and it will be used to indicate an SVR4 *host* from now on.)
+ (SKIP_ASM_OP): Define this new macro.
+ (ASM_OUTPUT_SKIP): Use SKIP_ASM_OP.
+ (ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL): Added
+ new definitions appropriate for most SVR4 assemblers.
+ (COMMON_ASM_OP, LOCAL_ASM_OP): Define these new macros.
+ (ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL): Use them.
+ (ASM_OUTPUT_ALIGNED_LOCAL): Allocate things in common rather than
+ trying for the .bss section (which may not work).
+ (ASM_DECLARE_RESULT): Define this to do nothing (if not already
+ defained for target machine).
+ (ASM_DECLARE_FUNCTION_NAME): Add invocation of ASM_DECLARE_RESULT.
+
+ * dwarfout.c (ASM_DWARF_POP_SECTION): Renamed ASM_OUTPUT_POP_SECTION.
+ (PUSHSECTION_ASM_OP, POPSECTION_ASM_OP): New macro definitions.
+ (SECTION_ASM_OP): Deleted. Replaced by PUSHSECTION_ASM_OP.
+ (ASM_OUTPUT_PUSH_SECTION, PUSHSECTION_FORMAT): New macro definitions.
+ (*_SECTION): New macro definitions for important section name strings.
+ (ASM_DWARF_*_SECTION): Deleted all macros to change to specific
+ sections and replaced them globally with calls to the new parameterized
+ ASM_OUTPUT_PUSH_SECTION macro.
+
+Sat Mar 28 17:28:17 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 15.
+ (output_block_move): Add function defintion.
+ (HALF_PIC_PTR, HALF_PIC_FINISH): Provide dummy definitions.
+ (OPTIMIZATION_OPTIONS): Set flag_gnu_linker to FALSE, and
+ flag_no_cse_function to TRUE.
+ (CC1PLUS_SPEC): Delete -- it just passed -fno-gnu-binutils to
+ cc1plus.
+
+ * mips.c (block_move function): Use movstri_internal, instead of
+ emitting the moves directly.
+ (output_block_move): New function to emit the correct code for block
+ moving a constant amount of data.
+ (siginfo): Change options to ps.
+
+ * mips.md (movstrsi_internal): New block move pattern.
+ (movsi_ulw): Add an appropriate REG_EQUIV regnote.
+ (movsi_usw): Type attribute is store, not load.
+
+ * mips-gbsd.h (toplevel): Include mips-bsd.h, not mips-gbsd.h.
+
+ * mips-bsd.h (MD_STARTFILE_PREFIX, MD_EXEC_PREFIX): Use explicit
+ BSD43 prefixes.
+
+ * mips-sysv.h (MD_STARTFILE_PREFIX, MD_EXEC_PREFIX): Use explicit
+ System V prefixes.
+
+ * mips-svr4.h (MD_STARTFILE_PREFIX, MD_EXEC_PREFIX): Use explicit
+ System V.4 prefixes.
+
+ * decstatn.h (TARGET_MEM_FUNCTIONS): Define.
+
+Sat Mar 28 15:12:39 1992 Ron Guilmette (rfg at ncd.com)
+
+ * libgcc2.c (eprintf): Make argument types comsistant with assert.h.
+ (__builtin_new, __builtin_vec_new): Declare all external functions.
+ (default_new_handler): Use a macro for the "memory exausted" message.
+
+ * sparcv4.h: File completely replaced (with one that works).
+
+Sat Mar 28 15:09:46 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (flag_gnu_linker): Default to 0 if USE_COLLECT2.
+
+ * i386.h (TARGET_SWITCHES): Add svr3-shlib.
+ (TARGET_SVR3_SHLIB): New macro.
+ * i386v.h (ASM_OUTPUT_LOCAL): Override definition here.
+
+ * Makefile.in (gcc.xtar): Update version in README.
+
+ * libgcc2.c [sparc] (__builtin_saveregs): Add optional .proc,
+ .type and .size assembler commands.
+
+ * dbxout.c (dbxout_type): New arg SHOW_ARG_TYPES. All calls changed.
+ (dbxout_type_methods): Mostly rewritten, with Tiemann's help.
+
+ * Eliminate limit on alignment value of a variable or field.
+ * tree.h (DECL_ALIGN): Use frame_size slot.
+ (struct tree_decl): `align' slot deleted.
+ * print-tree.c (print_node): Print `align' or `frame_size', not both.
+ * expr.c (get_pointer_alignment): Don't use DECL_ALIGN of function.
+ * c-decl.c (duplicate_decls, finish_enum): Likewise.
+ * tree.c (make_node): Likewise.
+ * c-common.c (decl_attributes): Eliminate limit of 255 on alignment.
+
+ * collect2.c: Don't include gstdarg.h or gvarargs.h.
+ Make error messages follow standards.
+ (error, fatal, fatal_perror): Don't use varargs.
+ Accept as many args as anyone tries to use.
+
+ * cp-decl2.c: Get rid of -fgnu-binutils.
+
+ * ns32k.h (INDIRECTABLE_ADDRESS_P): Deleted.
+ (GO_IF_NONINDEXED_ADDRESS): Delete dupllicate test for reg+offset.
+ (MEM_REG): Don't accept constant here.
+ (INDIRECTABLE_2_ADDRESS_P): Adapt usage of MEM_REG.
+ (GO_IF_INDEXING, GO_IF_INDEXABLE_ADDRESS): New macros.
+ (GO_IF_LEGITIMATE_ADDRESS): Use them.
+
+Sat Mar 28 20:48:20 1992 Chip Salzenberg (chip at tct.com)
+
+ * stor-layout.c (layout_record, layout_union):
+ Limit effect of PCC_BITFIELD_TYPE_MATTERS to actual bitfields.
+ (layout_decl): Do not override a packed decl's alignment.
+
+ * c-common.c (decl_attributes): Don't expect a simple
+ attribute like "packed" to be in a LIST_NODE.
+
+ * c-decl.c (finish_struct): If a field has the "packed"
+ attribute, don't override it with type's normal alignment.
+
+Sat Mar 28 06:51:12 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * integrate.c (initialize_for_inline): Replace DECL_INCOMING_RTL
+ if it has an address shared with DECL_RTL, not just when the entire
+ value is shared.
+
+ * rs6000.c (input_operand): Clean up and make comments agree with
+ code; no changes to what is matched.
+
+ * loop.c (add_label_notes): Handle operands of type 'E'.
+
+ * rs6000.c (print_operand, case 'A'): Fix typo.
+
+Sat Mar 28 01:29:06 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * output.h (current_function_uses_const_pool): New declaration.
+
+ * i386.c (function_{prologue,epilogue}, simple_386_epilogue):
+ If the constant pool is used, the PIC reg will be used.
+
+ * expr.c (expand_builtin): Add support for named pattern strlenM.
+ * expr.h (strlen_optab): New declaration.
+ * optabs.c (init_optabs): Initialize strlen_optabs.
+ * i386.md (strlensi): New pattern.
+
+Fri Mar 27 12:11:03 1992 Fred Fish (fnf at fishpond)
+
+ * fixinc.svr4 (dbm.h): Fix unconditional redefinition of NULL
+
+ * config.sub: Add i486 as a distinct CPU type. Recognize i486v4
+ as distinct from i386v4. Change ncr3000 to i486.
+ * configure: Add i486-ncr-sysv4.
+ * config/x-ncr3000: New file.
+
+Fri Mar 27 18:44:45 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (twoval_comparison_p, eval_subst): New functions.
+ (fold): If an operand of a comparison is a COMPOUND_EXPR, move
+ it outside the comparison.
+ (case GT_EXPR, ...): Replace old code to fold comparisons
+ of comparisons with new code using new functions above.
+ When changing code of unsigned comparisons, set variable CODE.
+
+ * expr.c (get_inner_reference): Return BLKmode and -1 size for a
+ variable-sized object instead of aborting.
+ (do_jump, case COMPONENT_REF): If get_inner_reference returns a
+ size of -1, don't do anything special.
+ * fold-const.c (optimize_bit_field_compare, decode_field_reference):
+ Likewise.
+
+ * combine.c (reg_bitfield_target_p): Replace test with one that
+ compares the register number of X with that of a register which
+ is the target of the assignment.
+
+ * loop.h (struct_induction): New field maybe_multiple.
+ * loop.c (strength_reduce): Track when code may be executed more
+ than once per iteration; pass to record_biv.
+ Call update_giv_derive on every JUMP_INSN.
+ (record_biv): Copy new maybe_multiple arg to struct induction.
+ (record_giv): Clear maybe_multiple.
+ (update_giv_derive): If passing JUMP_INSN, look at maybe_multiple
+ in biv update.
+
+ * expr.c (expand_expr, case MODIFY_EXPR): Add missing call to
+ do_pending_stack_adjust.
+
+ * rs6000.h (OBJECT_FORMAT_COFF): Add definition.
+
+Fri Mar 27 15:58:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (check_format): If arg wants void *, accept any ptr.
+
+ * ns32k.md (CALL_MEMREF_IMPLICIT, MOVD_FLOAT_OK):
+ New parameters replace GAS_SYNTAX.
+ * pc532.h (CALL_MEMREF_IMPLICIT, MOVD_FLOAT_OK): Define both.
+ * sequent.h (CALL_MEMREF_IMPLICIT): Defined.
+
+ * sequent.h (INDEX_RATHER_THAN_BASE): Defined.
+ * ns32k.c (print_operand_address): Check it here.
+
+ * ns32k.c (print_operand_address): Treat all non-ints as symbolic.
+ (print_operand): Likewise. Also fix typo, use PUT_ABSOLUTE_PREFIX,
+ and test NO_ABSOLUTE_PREFIX_IF_SYMBOLIC.
+
+ * svr4.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
+ Output newline after section op.
+ * i860v3.h (DTORS_SECTION_ASM_OP, CTORS_SECTION_ASM_OP):
+ Delete newlines.
+
+ * Makefile.in (clean): Don't delete stage*.
+ (distclean): Do it here.
+ (extraclean): Delete config/patch*.
+
+ * Makefile.in (SYSCALLS.c): Target deleted.
+ (SYSCALLS.c.X): Create SYSCALLS.c and use it in one rule. Delete also.
+
+ * Makefile.in (ld): New target.
+ * t-* (ld, collect2*): Targets deleted.
+ (EXTRA_PROGRAMS): Moved ld here if it was in EXTRA_PASSES.
+ (EXTRA_PASSES): Delete ld.
+
+ * gcc.c, cccp.c: Don't include sys/file.h.
+
+ * fold-const.c (operand_equal_p): Floats must match bit for bit.
+
+ * gcc.c (link_command_spec): Put back -u*.
+
+Fri Mar 27 11:33:46 1992 Simon J. Gerraty (sjg@melb.bull.oz.au)
+
+ * configure (m68k-bull-sysv*): Added config for Bull DPX/2
+ * dpx2.h, dpx2g.h: New files.
+ * x-dpx2200, x-dpx2300, t-dpx2: New files.
+ * gstddef.h: Added _SIZET_ to the list of protection for size_t
+
+Fri Mar 27 14:47:47 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-typeck.c (convert_arguments): -Wconversion wrongly warned when
+ passing enums, and didn't warn about int precision mismatches.
+
+ * fold-const.c (fold): If IEEE, 0-x is not x.
+
+ * cse.c (simplify_unary_operation): fabs(-0.0) is 0.0, not -0.0.
+ * fold-const.c: Replace target_minus_zero with target_negative.
+ (fold_convert): Warn when converting NaN constants to integer.
+ (fold): fabs(-0.0) is 0.0, not -0.0. 0-x may not equal -x.
+ Do not optimize X++ == C to ++X == C+1 if C is floating point,
+ because it runs afoul of rounding error.
+ * real.h (REAL_VALUE_NEGATIVE): Add.
+
+Fri Mar 27 09:19:11 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (emit_move_sequence): Check the size required for a zero
+ constant.
+
+ * varasm.c (const_hash, compare_constant_1, record_constant_1):
+ For constructor of an array, include the size of the array in bytes.
+
+Fri Mar 27 09:09:53 1992 Michael Meissner (meissner@osf.org)
+
+ * t-decstatn (ALL): Remove variable.
+ * t-decrose (ALL): Ditto.
+ * t-i386rose (ALL): Ditto.
+ * t-encrose (ALL): Ditto.
+
+Fri Mar 27 17:51:32 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * rs6000.c (first_reg_to_save): When profiling, save space for the
+ argument registers, which need to be saved around the mcount call.
+ (output_prolog): Mark the link register as live when profiling.
+ (output_function_profiler): New function. Output code to call
+ mcount.
+ * rs6000.h (LIB_SPEC): Replace incorrect definition. Add
+ -L/lib/profiled and -L/usr/lib/profiled when profiling, -lg when
+ debugging, and -lc always.
+ (OVERRIDE_OPTIONS): No longer zero profile_flag.
+ (FUNCTION_PROFILER): Call output_function_profiler.
+
+ * .gdbinit (complaints): Set to 20.
+ (pbs): New command to call the cc1plus print_binding_stack function.
+
+ * calls.c (expand_call): Delete obsolete references to is_builtin_new.
+
+ * Makefile.in (Makefile): Add dependence on version.c.
+
+Thu Mar 26 19:21:00 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (fixuns_truncMN2,fix_truncMdf2): Make a copy of the input
+ operand and clobber that, rather than clobbering the operand itself.
+
+Thu Mar 26 18:06:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c (shortpath): Add early check of size of shortname.
+
+ * expr.c (do_jump): Adjust stack after any code that might be skipped.
+
+Thu Mar 26 06:37:35 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.c (toplevel): If NO_STAB_H is defined, include gstab.h
+ instead of stab.h.
+
+Thu Mar 26 02:21:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (STAGESTUFF): Add EXTRA_PROGRAMS.
+
+ * configure: Reorder mips alternatives; put mips-mips-* at end.
+
+ * sparc.h (FRAME_POINTER_REQUIRED): 0 if frame is too big.
+ * sparc.c (compute_last_frame_offset): New function.
+
+Wed Mar 25 21:17:36 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * genattrtab.c (check_attr_test): Use XSTR instead of XEXP in one
+ place.
+
+ * genextract.c (mark_operand_seen): Call xrealloc properly.
+
+Wed Mar 25 17:05:56 1992 Torbjorn Granlund (tege at zevs.sics.se)
+
+ * hp800.c (srcsi_operand): New function.
+ * hp800.md (mulsi, divsi, udivsi, modsi, umodsi): Use srcsi_operand
+ for inputs.
+ (mulsi): Use general_operand for output.
+ (one_cmplsi2): Use register_operand for output.
+
+Wed Mar 25 15:50:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * m68k.md (fsgldiv pattern): If FSGLDIV_USE_S, opcode has .s, not .x.
+ * amix.h (FSGLDIV_USE_S): Defined.
+
+ * xm-rs6000.h (REAL_NM_FILE_NAME): Defined.
+
+ * x-i386sco (CCLIBFLAGS): Define as empty.
+
+Wed Mar 25 16:52:53 1992 Michael Meissner (meissner at osf.org)
+
+ * collect2.c (OSF/rose scan_prog_file): If we are building a
+ program instead of a shared library, don't create an initializer
+ function entry.
+
+Tue Mar 24 04:00:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.1 released.
+
+ * xcoffout.h: Renamed from xcoff.h.
+ * dbxout.c, final.c, toplev.c, varasm.c, xcoffout.c: Use new name.
+ * Makefile.in: Corresponding changes.
+
+ * dbxout.c (dbxout_type): Don't check DECL_IGNORED_P.
+
+ * t-rs6000: Complete replacement, to build collect2 properly.
+
+ * Makefile.in (mostlyclean): Delete sorted indices that aren't used.
+ (extraclean): Delete patch outputs, *.d, *.Z, *.tar.
+
+ * Makefile.dos (getpwd.o): New target.
+ (OBJS, protoize, unprotoize): Add getpwd.o.
+ (SYSCALLS.c, SYSCALLS.c.X): Copy from Makefile.in.
+
+Tue Mar 24 06:26:26 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): When deleting dead code after
+ making unconditional branch, check for end of chain.
+
+ * sched.c (update_flow_info): Add code for REG_LABEL case.
+
+ * function.c (instantiate_virtual_regs_1): Don't modify a MEM
+ without copying it unless the modified MEM is valid.
+
+ * cse.c (rtx_cost): Assign ASM_OPERANDS a high cost.
+
+Tue Mar 24 05:48:25 1992 Ken Raeburn (raeburn@wombat.gnu.ai.mit.edu)
+
+ * cp-*: Disabled 22 March changes relating to dbxout.c; the problem
+ will be fixed properly, with more extensive reworking of the C++
+ front end, later. This fix was buggy.
+ * dbxout.c (dbxout_type_methods): Reverted 22 March changes; if a
+ template class is passed, print a warning message and emit no info
+ about methods.
+
+Mon Mar 23 14:18:30 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Add getpwd.c.
+
+Mon Mar 23 12:53:02 1992 Jyrki Kuoppala (jkp@batman.cs.hut.fi)
+
+ * pc532-min.h (HAVE_ATEXIT): Defined.
+
+ * ns32k.c (print_operand) [PC_RELATIVE]:
+ Always use output_address for MEM.
+
+ * pc532.h (BASE_REG_NEEDED): Defined.
+
+Mon Mar 23 07:28:14 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Correct error in last change; don't
+ pass STRICT_LOW_PART or ZERO_EXTRACT to reg_overlap_mentioned_p.
+
+ * sun3.h (CPP_SPEC): Delete extra brace.
+
+Mon Mar 23 02:43:56 1992 Michael Tiemann (tiemann@mole.gnu.ai.mit.edu)
+
+ * cp-decl.c (pop_from_top_level): Take care of C_C_D.
+
+Sun Mar 22 17:24:09 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pyr.h: Remove TARGET_INDEX. Update other TARGET switches.
+ Fix several comments.
+ (REGNO_OK_FOR_BASE_P): Allow reg 0.
+ (REGNO_OK_FOR_INDEX_P): Reformulate.
+ (REG_OK_FOR_INDEX_P): Disallow reg 0.
+
+Sun Mar 22 15:10:49 1992 Michael Meissner (meissner@osf.org)
+
+ * mips-tfile.c (mark_stabs): Make function defintion agree with
+ prototype.
+
+ * mips.md (cpu, branch_likely attributes): Make these attributes
+ const.
+ (all functional units): Restore functional units that look at the
+ -mcpu= switch for scheduling now that genattrtab uses less memory.
+
+Sun Mar 22 13:57:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (convert_for_assignment):
+ Only explicit 0 converts to pointer.
+
+ * Makefile.in (doc): Don't depend on gplus.info.
+ (gplus.info): Target deleted.
+
+ * c-decl.c (store_parm_decls): Call build_type_copy with just one arg.
+
+ * cccp.c (do_include): Use entire filename when checking for repeat.
+ Use lookup_include.
+ (lookup_include): New function.
+
+ * protoize.c (find_extern_def): Store ??? one char at a time.
+
+ * sparc.h (ASM_OUTPUT_FLOAT): Fix typo.
+
+ * fold-const.c (operand_equal_p): Reject NaNs and infinities.
+
+ * varasm.c (immed_real_const): Distinguish minus zero from zero.
+
+ * sparc.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT):
+ Use `inf' for infinities. Use hex for minus-zero.
+
+ * objc-actions.c (build_selector_translation_table):
+ Don't make a duplicate decl here for _OBJC_SELECTOR_REFERENCES.
+ Just call finish_decl to store the initial value.
+ Call push_obstack_nochange to balance with finish_decl.
+ Use selector_type for declaring individual selector names.
+
+Sun Mar 22 13:11:32 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (update_giv_derive): Correctly handle the case where
+ more than one biv update occurs after a giv is defined.
+
+ * cse.c (rehash_using_reg): Add missing arg to call to exp_equiv_p.
+
+ * expmed.c (expand_mult_add): Add missing arg to call to type_for_mode.
+
+ * reorg.c (fill_slots_from_thread): In the case where have a reg-reg
+ copy and will substitute our destination for our source in the
+ following insn, correctly check for it modifying our destination.
+
+Sun Mar 22 09:20:16 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-typeck.c (unary_complex_lvalue): Don't complain about taking
+ the ``address'' of a bound static method or member.
+
+ * cp-init.c (resolve_offset_ref): Fix bug in handling of static
+ members and member functions.
+
+ * cp-decl2.c (finish_file): If CURRENT_CLASS_TYPE is non-NULL on
+ entry to this function, punt.
+
+ * cp-parse.y (template_parm): Use CLASS_TYPE_NODE instead of
+ CLASS_TYPE value.
+
+ * cp-cvt.c (build_type_conversion): Add another add-hoc rule to find
+ unsigned->int conversion (if conversion to long does not exist).
+
+ * cp-method.c (build_overload_name): Don't call `array_type_nelts'
+ if the TYPE_DOMAIN of an array type is NULL_TREE.
+
+ * cp-init.c (build_offset_ref): Set up and use DECL even in case
+ where NAME resolves to a method.
+
+ * cp-call.c (ideal_candidate): Half of Jan 28 change was missing.
+ Now PARMS are not converted in place if BASETYPE is NULL.
+
+ * cp-typeck.c (build_component_ref): Don't return a TYPE_DECL.
+
+ * cp-type2.c (build_functional_cast): If CURRENT_FUNCTION_DECL is
+ NULL, don't wrap EXPR_AS_CTOR in a NEW_EXPR. This make it possible
+ to parse default initializers that involve constructor calls.
+ * cp-typeck.c (convert_for_initialization): Handle this change.
+ * cp-method.c (dump_init): Grok INDIRECT_REFs that have
+ TREE_HAS_CONSTRUCTOR set.
+
+ * cp-decl.c (push_overloaded_decl): Don't use the
+ DECL_ASSEMBLER_NAME for GLOB as the TREE_PURPOSE of the new GLOB.
+ Use ORIG_NAME instead.
+
+ * cp-decl.c (grokvardecl): If FIELD has incomplete type, complete it
+ with TYPE.
+
+ * cp-decl2.c (flag_this_is_variable): Define the value -2 to mean an
+ object of known type is being constructed.
+ * cp-decl.c (resolves_to_fixed_type_p): Test FLAG_THIS_IS_VARIABLE
+ for the value -2 instead of testing DECL_CONSTRUCTOR_P in case we
+ are looking at `current_class_decl'.
+ * cp-search.c (init_vbase_pointers): Set FLAG_THIS_IS_VARIABLE to -2
+ instead of 0.
+ (build_vbase_vtables_init): Ditto.
+ * cp-*.c: All tests of FLAG_THIS_IS_VARIABLE changed to reflect the
+ new semantics.
+
+ * cp-typeck.c (comptypes): Don't use IS_AGGR_TYPE_2; test explicitly
+ that both are RECORD_TYPE.
+ (build_binary_op_nodefault): Ditto.
+ (convert_for_assignment): Ditto.
+ * cp-cvt.c (convert_to_pointer): Ditto.
+ (convert_to_pointer_force): Ditto.
+ * cp-call.c (convert_harshness): Ditto.
+
+ * cp-search.c (get_first_matching_virtual): Fix typo.
+
+ * cp-tree.c (layout_basetypes): When warning about certain
+ inheritance relationships, only print "virtual" when the
+ inheritance is virtual.
+
+Sun Mar 22 01:28:41 1992 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ Fix dbx info for methods of template classes:
+ * cp-decl.c (make_type_decl): New function. Creates a TYPE_DECL
+ node and assigns as its DECL_ASSEMBLER_NAME the encoded form of the
+ type name as it will be used in assembler output. All calls to
+ build_decl(TYPE_DECL,...) changed to call this.
+ * dbxout.c (dbxout_type_methods): Instead of skipping digits and
+ assuming the human-readable type name follows in the assembler names
+ for methods, use DECL_ASSEMBLER_NAME of the type.
+ Handle the special DECL_NAME that is made for templates.
+ * cp-lex.c (build_lang_field_decl): Set DECL_ASSEMBLER_NAME
+ correctly if new decl is a TYPE_DECL.
+ (build_lang_decl): Ditto.
+ * cp-decl.c (pushdecl): Use DECL_ASSEMBLER_NAME only for
+ FUNCTION_DECL and VAR_DECL nodes; all others use DECL_NAME.
+ * cp-tree.h (make_type_decl): Declare it.
+
+ * cp-pt.c (overload_template_name, undo_template_name_overload):
+ Revert 4 March change.
+
+ * cp-decl2.c: No longer define NEW_OVERLOAD_SCHEME.
+ (grokfield): Use new encoding scheme always.
+
+ * cp-pt.c (overload_template_name): Deleted extra assignment to
+ IDENTIFIER_LOCAL_VALUE slot.
+
+ * cp-method.c (dump_aggr_type): Use DECL_CONTEXT rather than
+ DECL_CLASS_CONTEXT.
+
+ * cp-pt.c (instantiate_class_template): Move some common code from
+ two branches to before branch point.
+
+ * cp-method.c (dump_aggr_type): Don't discard last character of
+ context string; it's not whitespace.
+
+Sun Mar 22 15:58:48 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * cp-tree.h: Add more enum->int casts needed by some compilers.
+
+Sun Mar 22 20:40:25 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): Handle preincrement and
+ predecrement as valid lvals.
+
+ * gplus.gperf: Finish off changing ASM to ASM_KEYWORD.
+ * cp-hash.h: Rebuilt.
+
+Sat Mar 21 15:43:04 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_c_cast): Don't warn if convert explicit 0 to ptr.
+
+ * local-alloc.c (wipe_dead_reg): If insn has multiple sets and
+ the reg appears in a destination, extend life to end of insn.
+ * global-alloc.c (global_conflicts): Analogous change.
+ (mark_reg_conflicts): New function.
+ * combine.c (try_combine): If I2 has multiple dests, make sure
+ we don't change one of them to overlap anything used within another.
+
+ * configure (pyramid): Commented out.
+
+ * toplev.c (main): Handle -gen-aux-info, with argument.
+ (compile_file): Assume aux_info_file_name already computed.
+ Don't make it local here.
+ * protoize.c (munge_compile_params): Produce -aux-info.
+ Set aux_info_file_name_index.
+ (gen_aux_info_file): Produce and store the aux-info file name.
+ (input_file_name_index): Renamed from filename_index.
+ (aux_info_file_name_index): New var.
+ * Makefile.in (SYSCALLS.c.X): Use -aux-info.
+ * gcc.c, hp800.h, next.h, sparc.h, sun2.h, sun3.h, svr4.h:
+ (WORD_SWITCH_TAKES_ARG): Handle -aux-info.
+ * gcc.c (default_compilers): Pass -aux-info to cc1*.
+
+ * configure (mips-*-sysv*): Renamed from mips-*-sysv and moved down.
+
+ * gcc.c (execute): Undo Mar 12 change.
+
+ * configure (i386-*-bsd*): New alternative.
+ * i386bsd.h: New file.
+
+Sat Mar 21 15:14:08 1992 Ron Guilmette (rfg at ncd.com)
+
+ * sparc.c (output_move_double): Check for XEXP (op2, 0) being a
+ LOW_SUM, rather than checking op2. Handle both ldd and std there.
+
+Sat Mar 21 14:14:10 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * vms.h (CPP_PREDEFINES): Do not define __GNU__.
+
+Sat Mar 21 21:35:37 1992 Jyrki Kuoppala (jkp@batman.cs.hut.fi)
+
+ * ns32k.md (call_value): Added a missing "{".
+
+ * ns32k.c (print_operand): Fixed typo X -> x, FILE -> file.
+
+Sat Mar 21 11:11:04 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 14.
+ (CPP_PREDEFINES): Always define SYSTYPE_BSD43.
+ (CPP_SPEC): Don't define it here.
+ (ASM_SPEC): Pass -cpp/-nocpp/-mips1/-mips2/-mips3 to MIPS assembler,
+ and only pass -nocpp by default unless .s files are assembled for
+ MIPS compatibility.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to MIPS linker.
+ (MD_STARTFILE_PREFIX): Define to be /usr/lib/cmplrs/cc/ if not
+ already defined.
+ (NM_FLAGS): Define as appropriate for most MIPS systems.
+ (PREFERRED_DEBUGGING_TYPE): If -ggdb prefer stabs over the normal
+ ECOFF debug format, but -g selects ECOFF.
+ (DEFAULT_GDB_EXTENSIONS): Define as 1.
+ (DOLLARS_IN_IDENTIFIERS): Don't define if already defined.
+
+ * mips.c (mips_output_filename): If emitting encapsulated stabs,
+ emit #@stabs immediately after the first .file, so that the @stabs
+ is the second symbol. GDB 4.4 only checks symbol #2 to see whether
+ it is encapsulated stabs, or ECOFF.
+
+ * mips.md (subdi define_splits): Use ltu instead of lt.
+ (branch_zero_true): Generate correct code when not optimizing, and
+ an always true/false branch is generated.
+ (branch_zero_false): Ditto.
+
+ * mips-bsd.h (CPP_PREDEFINES): Always define SYSTYPE_BSD43.
+ (CPP_SPEC): Don't define it here. Remove -Z{BSD43,SYSV} support.
+ Don't pass -I in here.
+ (SYSTEM_INCLUDE_DIR): Define to be /bsd43/usr/include.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the linker. Remove
+ -Z{BSD43,SYSV} support. Always pass -systype /bsd43/ to the linker.
+
+ * mips-sysv.h (CPP_PREDEFINES): Always define SYSTYPE_SYSV.
+ (CPP_SPEC): Don't define it here. Remove -Z{BSD43,SYSV} support.
+ Don't pass -I in here.
+ (SYSTEM_INCLUDE_DIR): Define to be /sysv/usr/include.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the linker. Remove
+ -Z{BSD43,SYSV} support. Always pass -systype /sysv/ to the linker.
+ (MD_STARTFILE_PREFIX): Remove, this is now defined in mips.h.
+
+ * mips-news.h (CPP_SPEC): Don't pass -I in here.
+ (SYSTEM_INCLUDE_DIR): Define to be /usr/include2.0.
+ (ASM_SPEC): Pass -cpp/-nocpp/-mips1/-mips2/-mips3 to MIPS assembler,
+ and only pass -nocpp by default unless .s files are assembled for
+ MIPS compatibility.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the linker.
+
+ * mips-news5.h (CPP_PREDEFINES): Define SYSTYPE_SYSV.
+ (CPP_SPEC): Don't define it here. Remove -Z{BSD43,SYSV} support.
+ Don't pass -I here.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the linker.
+
+ * iris.h (ASM_SPEC): Pass -cpp/-nocpp/-mips1/-mips2/-mips3 to MIPS
+ assembler, and only pass -nocpp by default unless .s files are
+ assembled for MIPS compatibility.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the linker.
+
+ * iris.h (DOLLARS_IN_IDENTIFIERS): Define as 0, for iris assembler.
+ (NO_DOLLAR_IN_LABEL): Define, to force static constructors to use a
+ period instead of a dollar sign.
+
+ * decstatn.h (ASM_SPEC): Pass -cpp/-nocpp/-mips1/-mips2/-mips3 to
+ MIPS assembler, and only pass -nocpp by default unless .s files are
+ assembled for MIPS compatibility.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the MIPS linker.
+
+ * decsrose.h (ASM_SPEC): Pass -cpp/-nocpp/-mips1/-mips2/-mips3 to
+ MIPS assembler, and only pass -nocpp by default unless .s files are
+ assembled for MIPS compatibility.
+ (LINK_SPEC): Pass -mips1/-mips2/-mips3 to the MIPS linker.
+
+ * Makefile.in (collect2.o): Define macros where the standard places
+ binaries are installed, so that if it is invoked outside of gcc, it
+ has a better chance of finding the correct version of the tools to
+ invoke.
+
+ * mips-tdump.c (toplevel): Declare things void * on Silicon Graphics.
+
+ * mips-tfile.c (toplevel): Declare things void * on Silicon
+ Graphics.
+ (stabs_seen): Move static variable to file scope.
+ (mark_stabs): New function to put out the @stabs symbol for GDB to
+ switch to encapsulated stabs.
+ (pseudo_ops): Call mark_stabs if #@stabs found.
+ (parse_stabs_common): Call mark_stabs if needed to add @stabs.
+
+ * sdbout.c (sdbout_dequeue_anonymous_types): Don't core dump if
+ TREE_VALUE is null.
+
+ * decstabs.h (new file): DECstation w/encapsulated stabs.
+ * irisgdb.h (new file): SGI iris w/encapsulated stabs.
+ * mips-gbsd.h (new file): Mips BSD43 w/encapsulated stabs.
+ * mips-gdb.h (new file): Mips w/encapsulated stabs.
+ * mips-gnews.h (new file): Sony NEWS w/encapsulated stabs.
+ * mips-gnews5.h (new file): Sony NEWS 5.0 w/encapsulated stabs.
+ * mips-gsvr4.h (new file): Mips SV.4 w/encapsulated stabs.
+ * mips-gsysv.h (new file): Mips SV.3 w/encapsulated stabs.
+ * mips-svr4.h (new file): Mips System V.4.
+ * x-iris (new file): Specify that iris needs alloca.o since it's
+ alloca is buggy.
+
+ * dbxout.c (toplevel): If NO_STAB_H is defined, include gstab.h just
+ like if USG is defined.
+ * final.c (toplevel): Ditto.
+ * mips-tfile.c (toplevel): Ditto.
+ * xcoffout.c (toplevel): Ditto.
+
+ * xm-mips.h (NO_STAB_H): Define, except on OSF/1.
+
+Fri Mar 20 23:51:54 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (subst_asm_stack_regs): A REG_UNUSED note never
+ applies to an input reg, even if that reg is tied to an output.
+
+ * reg-stack.c (record_asm_reg_life): Use XVECLEN only on a PARALLEL.
+ (subst_asm_stack_regs): Likewise.
+
+Fri Mar 20 18:57:43 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 13.
+ (mips_declare_object): Declare new function.
+ (ASM_OUTPUT_LABEL): Remove cruft from when collect spit out assembly
+ language instead of C code.
+ (ASM_GLOBALIZE_LABEL): Ditto.
+ (ASM_OUTPUT_INT): Ditto.
+ (ASM_OUTPUT_INT_CONST): Remove, no longer used.
+ (ASM_OUTPUT_PTR_INT_SUM): Ditto.
+ (ASM_OUTPUT_LABEL): Don't set that we've seen an identifier here.
+ (ASM_DECLARE_OBJECT_NAME): New macro, call mips_declare_object to
+ emit the label, and mark that no .extern is needed for the name.
+ (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Call mips_declare_object.
+
+ * mips.c (mips_declare_object): New function to output the stuff
+ needed for global variables, bss variables, and static bss
+ variables.
+
+Fri Mar 20 14:13:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cp-xref.c (GNU_xref_file): Get rid of arbitrary limit--malloc nmbuf.
+
+ * cp-parse.y (scoped_id): Error if spec'd type is undefined.
+
+ * m68k.c (output_function_epilogue): Output at least a nop.
+
+ * xm-hp320.h (USG): Defined.
+
+ * m68k.c (output_function_prologue, output_function_epilogue):
+ Change %I to %0I.
+ (print_operand): Likewise.
+
+ * varasm.c (data_section): Add forward decl.
+
+ * m68k.c (print_operand): Make %! print fpcr.
+ * crds.h, hp320.h, mot3300.h, news.h, tower-as.h (PRINT_OPERAND):
+ Likewise.
+ * m68k.md (fix_trunc*): Use %!.
+
+ * toplev.c (compile_file): Optionally call setvbuf for output file.
+
+ * loop.c (move_movables): Fix typo.
+
+Fri Mar 20 17:42:12 1992 Paul Eggert (eggert@twinsun.com)
+
+ * Makefile.in (SYSCALLS.c): Use `cat' to create this file, instead
+ of having it consist of `#include' directives.
+ (mostlyclean): Delete SYSCALLS.c.
+ * SYSCALLS.c: File deleted.
+
+ * getpwd.c (new file): Get and cache working directory, using PWD
+ if it works and getcwd otherwise.
+ * Makefile.in (OBJS, protoize): add getpwd.o
+ * cp-xref.c (GNU_xref_file): Likewise.
+ * dbxout.c (dbxout_init): Likewise.
+ * dwarfout.c (output_compile_unit_die): Likewise.
+ * protoize.c (main): Likewise.
+
+Fri Mar 20 12:58:57 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (location_or_const_value_attribute): Fixed to use
+ DECL_INCOMING_RTL as the "location" for formal parameter variables.
+
+Fri Mar 20 13:26:16 1992 Michael Collison (collison@osf.org)
+
+ * i386rose.h (INIT_SECTION_ASM_OP): OSF doesn't support a true
+ initialization section.
+
+Fri Mar 20 07:23:15 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (set zero_extract patterns): Use the + constraint.
+
+ * crtstuff.c (__do_global_ctors_aux): Declare it.
+
+ * m88k.h (CONDITIONAL_REGISTER_USAGE): Mark the PIC register fixed,
+ but not call used.
+
+ * m88k.c (m88k_builtin_saveregs): Get a properly aligned block.
+
+ * m88k.md (cpu attribute): Use const form.
+
+ * m88k.h, m88k.c, m88kdgux.h (uses of *_ASM_OP): Add tabs.
+
+Fri Mar 20 05:46:26 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expmed.c (emit_store_flag): Need to prevent SUBTARGET from being
+ OP0 in one more case.
+
+ * loop.c (add_label_notes): New function.
+ (move_movables): Use it when hoisting a `move_insn' movable
+ to ensure we create any required REG_LABEL notes.
+
+ * hp800.h (CONDITIONAL_REGISTER_USAGE): Make reg 27 a global_reg
+ for now.
+
+ * combine.c (make_field_assignment): Use correct mode when shifting
+ the source of the assignment.
+
+ * fold-const.c (invert_truthvalue): Correct error in last change.
+
+Thu Mar 19 18:59:24 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_end_case): Convert do_tablejump arg to Pmode.
+
+Thu Mar 19 16:54:15 1992 Michael Meissner (meissner@osf.org)
+
+ * collect2.c (main): Only pass -fxxx and -mxxx options to gcc when
+ building constructors.
+
+Thu Mar 19 16:44:21 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (invert_truthvalue): Correctly check for floating
+ comparison.
+
+Thu Mar 19 14:42:49 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * function.c (expand_main_function): Do so if INVOKE__main is defined.
+ * libgcc2.c (__main): Provide if INVOKE__main is defined.
+ * crtstuff.c (__do_global_ctors_aux): Renamed from __do_global_ctors.
+ (__do_global_ctors): Simple non-static function that invokes
+ __do_global_ctors_aux.
+
+ * crtstuff.c ({CTOR,DTOR}_LIST_{BEGIN,END}): Allow alternate way
+ to represent and define __{CTOR,DTOR}_LIST__.
+ * i386v.h, aix386.h (CTOR_LIST_{BEGIN,END}): Use these to push
+ instead of the funny definition of CTORS_SECTION_ASM_OP.
+ * svr3.h (CTORS_SECTION_ASM_OP): Use the .init section.
+
+ * m88kv3.h (CTOR_LIST_BEGIN): Emit code to .init to push a zero.
+ (CTOR_LIST_END): Do nothing.
+ (ASM_OUTPUT_CONSTRUCTOR): Emit code to .init to push the address.
+ (DTOR_LIST_{BEGIN,END}): Output a block of four words.
+ (ASM_OUTPUT_DESTRUCTOR): Output the address and three words of -1.
+ (DO_GLOBAL_DTORS_BODY): Ignore all values of -1.
+
+ * real.h (REAL_VALUE_ISNAN): Define.
+ * fold-const.c (target_isnan): New function.
+ * sun3.h, sparc.h (ASM_OUTPUT_{FLOAT,DOUBLE}): Use REAL_VALUE_ISNAN.
+
+ * sun3.h: Delete extra #endif.
+
+Thu Mar 19 14:25:50 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * hp800.c (output_move_double): Don't check for CONST_DOUBLE
+ when classifying operand types, CONSTANT_P now includes it.
+ Use split_double to assign operand vectors for CNSTOP.
+
+Thu Mar 19 13:59:16 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * hp320.h (SPACE_AFTER_L_OPTION): Defined.
+ (LIB_SPEC): Defined.
+
+ * toplev.c (compile_file): Output aux_info_file in source file's dir.
+
+Wed Mar 18 17:42:12 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-aux-info.c (gen_aux_info_record): Don't put the absolute path
+ name into the output file: it's useless, expensive, and often wrong.
+ Use "." instead.
+ * protoize.c (is_syscalls_file): Look for SYSCALLS.c only at the
+ end of the file name.
+ (abspath): Remove useless test of '\0' versus '/'. Add apollo fix.
+ (shortpath): Stop when replacement filename is longer than the
+ original; this avoids buffer overrun. Do not pretend that
+ `a/b/c' is a path prefix of `a/b/cd'.
+ (gen_aux_info_file): Report errors when compilation fails.
+ Do not use stdio in child process.
+ Don't say `exit(errno)'; errno might be too large.
+ (process_aux_info_file): Increment error count if aux info file cannot
+ be generated. Allow the invocation filename to be relative;
+ for now, it will always be ".".
+ (do_processing): Replace strlen (x) with sizeof (x) - 1.
+
+Thu Mar 19 13:31:24 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * cse.c (simplify_binary_operation, PLUS and MINUS cases): Use
+ arg0s and arg1s instead of arg0 and arg1, so that resulting values
+ will be sign extended.
+
+ * sched.c (sched_analyze_1): Don't call sched_analyze_2 at the end.
+ This code was never executed, and is wrong.
+ (sched_analyze_2): Convert from if statements to a switch.
+ Add support for PRE_DEC/PRE_INC/POST_DEC/POST_INC; pass them to
+ sched_analyze_1 because they are writes.
+ (sched_analyze_insn): Delete special case code to handle REG_INC
+ notes, obsoleted by change above.
+
+ * sparc.c (output_block_move): Rewrite to more efficiently handle
+ constant length strings whose length is not a multiple of their
+ alignment. Also, the length of strings handled without a loop now
+ is a multiple of their alignment, instead of fixed size.
+
+ * objc-actions.c (build_selector_translation_table): Add cast for
+ array index from enum to int to satisfy old compiler.
+
+ * c-parse.gperf: Change ASM to ASM_KEYWORD.
+ * gplus.gperf: Likewise.
+
+ * Makefile.in (install-man): Delete duplicate lines.
+
+Thu Mar 19 02:32:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (init_decl_processing): Disable `sqrt'.
+
+Thu Mar 19 01:09:16 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (output_move_double): Properly check for signedness in a
+ const_double.
+
+Wed Mar 18 18:51:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (link_command_spec) [not LINK_LIBGCC_SPECIAL]: Put back -s.
+
+ * config.sub (i486): Accept as CPU type.
+
+ * collect2.c (do_wait): Handle NO_SYS_SIGLIST.
+ * xm-hp320.h (NO_SYS_SIGLIST): Defined.
+
+Wed Mar 18 15:58:31 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * crtstuff.c, dwarfout.c, svr3.h, svr4.h (*_ASM_OP): Remove tabs
+ and newlines.
+ * dwarfout.c, svr3.h, svr4.h
+ (ASM_OUTPUT_*, ASM_DECLARE_*, ASM_DWARF_*): Put tabs here when needed.
+
+Wed Mar 18 17:26:44 1992 Ron Guilmette (rfg at ncd.com)
+
+ * svr4.h (MULTIBYTE_CHARS): Added definition.
+
+Wed Mar 18 17:36:30 1992 Michael Meissner (meissner@osf.org)
+
+ * gcc.c (collect_obstack): New static obstack to build the
+ environment variables to pass to collect, so that it can reliably
+ find the compiler passes.
+ (putenv): New function to add a variable to the environment.
+ Stubbed out for MSDOS and VMS at present, or if HAVE_PUTENV is
+ defined.
+ (putenv_from_paths): New function to take a path list, and build
+ the corresponding environment variable for it.
+ (main): Pass argv[0] to collect through the environment variable
+ COLLECT_GCC. Rebuild the COMPILER_PATH and LIBRARY_PATH
+ environment variables to include all prefixes specified with -B,
+ -b, and -V. Construct COLLECT_GCC_OPTIONS environment variable to
+ consist of all of the options passed to gcc, except for the -B,
+ -b, and -V options.
+
+ * collect2.c (main): Correctly size the number of arguments passed
+ to the compiler when building the constructor lists to account for
+ any options passed through the environment variable
+ COLLECT_GCC_OPTIONS. If the environment variable COLLECT_GCC
+ specifies a full pathname, use that for the pathname to invoke gcc
+ with. Print the name "collect2" in lowercase if -v.
+
+ * xm-mips.h (HAVE_PUTENV): Define if OSF/1.
+
+Wed Mar 18 07:27:50 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * hp800.c (actual_fsize): Remove duplicate declaration.
+ (profile_flag): Remove definition; defined in flags.h.
+ (hp_profile_labelno, local_fsize, save_fregs): Move declarations to
+ top of file.
+
+ * hp800.h (OPTIMIZATION_OPTIONS): Do same thing as Sparc.
+
+ * combine.c (reg_bitfield_target_p): Use rtx_equal_p instead of
+ assuming the actual rtx is used.
+
+Wed Mar 18 00:20:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstddef.h: Handle _GCC_PTRDIFF_T, _GCC_SIZE_T, _GCC_WCHAR_T.
+ * fixincludes: Use those macros in inserted conditionals.
+
+ * gstddef.h: Handle _T_SIZE_ and _T_PTRDIFF_, like _T_WCHAR_.
+
+ * sun3.h (CPP_SPEC): Delete the alternative for fpa as default.
+ Define symbols with __ as well as without.
+
+ * hp320.h (LINK_LIBGCC_SPECIAL, RELATIVE_PREFIX_NOT_LINKDIR):
+ Define unless USE_GAS.
+
+Tue Mar 17 17:19:07 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (making directories): Always use find.
+
+ * c-decl.c (pushdecl): Don't warn if define nonansi builtin as static,
+ or if define ANSI builtin as inline static.
+
+ * hp800hpux.h (LINK_LIBGCC_SPECIAL, RELATIVE_PREFIX_NOT_LINKDIR): New.
+
+ * fixinc.svr4: Special changes for Sony MIPS-NEWS.
+
+Tue Mar 17 15:12:57 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * hp800.h (INITIAL_FRAME_POINTER_OFFSET): Get sign right, include
+ fixed area.
+
+Tue Mar 17 14:06:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (all.indirect): Renamed from all-internal.
+
+ * t-mips (ALL): Deleted.
+
+Tue Mar 17 10:35:18 1992 Michael Meissner (meissner@osf.org)
+
+ * halfpic.c (half_pic_address_p): Fix typo in last change.
+
+ * x-decrose (CLIB): Add -lbsd, since vfork moved to libbsd.a.
+ * x-encrose (CLIB): Ditto.
+ * x-i386rose (CLIB): Ditto.
+
+Tue Mar 17 07:02:29 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * mips.md (movdi): FP_REGS don't allow DImode, so remove them
+ from the constraints.
+
+ * mips.md (unaligned moves): Use UNSPEC to distinguish SETs that are
+ unaligned from those that aren't.
+
+ * combine.c (try_combine): Update LOG_LINKS correctly when we split a
+ PARALLEL that loads from memory both as a full-word and sign-extended.
+
+Tue Mar 17 21:23:10 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * vax.c (split_quadword_operands): Fix typo.
+
+ * make-cc1.com: Add xcoffout.c.
+
+Mon Mar 16 17:12:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (mips-dec-ultrix*): Use x-decstatn.
+ * x-decstatn (CLIB): Delete.
+
+ * expr.c (move_by_pieces_1): Add negative ints--don't subtract ints.
+
+ * next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Turned off.
+ * t-next (EXTRA_PROGRAMS, ld): Use collect2.
+ * configure (m68k-next-*): Use t-next.
+
+ * mips-bsd.h (TARGET_MEM_FUNCTIONS): Defined.
+
+Mon Mar 16 14:04:08 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * hp800.md (movsi + 10, movsi + 11): Add '*' to constraints.
+ (fix_truncsfsi2, fix_truncdfsi2): Add an alternative to put result
+ directly in a general register.
+ * hp800.h (ASM_DECLARE_FUNCTION_NAME): If function is not
+ TREE_PUBLIC, don't do the argument descriptor magic.
+ (EXPAND_BUILTIN_SAVEREGS): call hppa_builtin_saveregs.
+ (LEGITIMIZE_ADDRESS): Don't legitimize CONST addresses.
+ (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Put tabs back in.
+ * xm-hp800.h (S_ISDIR): Define for BSD.
+
+ * hp800.c (hppa_builtin_saveregs): New function.
+ * va-hp800.h : Rewrite.
+
+
+Sun Mar 15 23:38:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (really_start_method): Dynamically allocate `buf'.
+
+ * sparc.h (TARGET_HOPE_ALIGN): Renamed from TARGET_ALIGN.
+ * sparc.c (output_move_double, output_fp_move_double): Use new name.
+ * sparc.h (TARGET_FORCE_ALIGN): New flag.
+ (FUNCTION_ARG_BOUNDARY): Defined.
+ (FUNCTION_ARG, FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE):
+ (FUNCTION_ARG_PARTIAL_NREGS): Handle TARGET_FORCE_ALIGN.
+ (ROUND_REG): New subroutine macro.
+
+ * sparc.h (CC1_SPEC): Don't try to recognize -dalign.
+
+ * hp320.h (ASM_OUTPUT_ASCII): Put tab here.
+ (ASCII_DATA_ASM_OP): Not here.
+ * mot3300.h: Likewise.
+
+ * Makefile.in (mostlyclean): Don't delete .s or .i files.
+ (extraclean): Do that here.
+
+ * a29k.h, fx80.h, gmicro.h, i860v3.h, i860v4.h (*_ASM_OP): Remove tabs.
+ * m88kv4.h, m88kdgux.h, mips.h, romp.h, rs6000.h: Likewise.
+ * sun386.h, tower-as: Likewise.
+ * arm.h, hp800.h (*_ASM_OP): Remove extra tabs and newlines.
+ * m68ksgs.h (*_ASM_OP): Remove tabs.
+ (ASM_OUTPUT_*): Put the tabs here when appropriate.
+ * m68kv4.h, m88k.h, next.h: Likewise.
+
+Sun Mar 15 18:37:49 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (inc_for_reload): Rework to try to do addition in
+ INCLOC rather than assuming when it can be done; this fixes a bug
+ on hp800 and generates better code on some CISC machines.
+
+Sun Mar 15 15:12:39 1992 Ron Guilmette (rfg at ncd.com)
+
+ * crtstuff.c: If defined, invoke INIT_SECTION_PREAMBLE.
+
+ * xm-sparcv4.h, x-sparcv4: New files.
+ * configure (sparc-*-sysv4*): Use them.
+
+Sun Mar 15 16:41:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sparc.md (subdi3): Fix unterminated comment.
+
+Sun Mar 15 04:08:59 1992 Torbjorn Granlund (tege at zevs.sics.se)
+
+ * hp800.c (output_block_move): Major rewrite.
+ * hp800.md (movstrsi): Rewrite to match new output_block_move. FAIL
+ if the actual operands are better handled by a library call.
+ (movstrsi recognizer): Rewrite.
+
+ * sparc.md (movstrsi): FAIL for all blocks with unknown size.
+
+Sat Mar 14 19:06:02 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * c-decl.c (builtin_function): Don't declare static.
+
+Sat Mar 14 15:57:53 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (get_pointer_alignment): Convert bytes to bits
+ when handling PLUS_EXPR.
+
+ * cp-search.c (push_stack_level): Declare tp as char *.
+
+ * mips.c (mips_asm_file_end): Use TREE_ASM_WRITTEN to avoid
+ duplicate .extern commands.
+
+ * mips-tdump.c: Include fcntl.h.
+ * mips-tfile.c (open, fstat): Declarations deleted.
+
+ * xm-mipsnews.h: New file.
+ * mips-news5.h: New file. Needs papers from Ron Cole.
+ * configure (mips-sony-sysv*): New alternative.
+
+Sat Mar 14 07:11:14 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * integrate.c (initialize_for_inline): If DECL_INCOMING_RTL is
+ the same object as DECL_RTL, store copy in both places.
+
+Sat Mar 14 10:12:39 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-spew.c (yylex): Fix some fencepost errors found by Chip
+ Salzenberg.
+
+ * cp-init.c (is_aggr_typedef): Now calls `error' instead of `fatal'
+ if NAME is non-AGGR type.
+
+ * cp-class.c (duplicate_tag_error): Set CLASSTYPE_VBASE_SIZE.
+
+Sat Mar 14 00:28:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): Don't copy closing delim in %(...) or %[...].
+ (read_specs): Don't ignore newline that ends a comment.
+ (handle_braces): Properly terminate scan for %*.
+ (validate_all_switches): Scan any extra specs from specs file.
+
+ * x-iris: File deleted.
+
+ * cccp.c (output_line_command): Avoid outputting line number 0.
+
+ * final.c (asm_fprintf): Handle %O.
+ * m68k.c: Insert %O before `move' in MOTOROLA calls to asm_fprintf.
+
+Fri Mar 13 20:17:40 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c, cp-type2.c, cp-tree.c, cp-spew.c, cp-search.c,
+ cp-parse.y, cp-init.c, cp-decl.c, cp-cvt.c, cp-class.c, cp-call.c:
+ Merged in updated cp-* files for gcc-2.1.
+
+ Thu Mar 12 02:29:26 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-type2.c (build_functional_cast): remove incorrect error message.
+
+Fri Mar 13 14:54:23 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (get_arg_type_list) [not NEXT_OBJC_RUNTIME]:
+ 1st arg always an object.
+ (synth_module_prologue): Don't use parser interface, just build nodes.
+ Use `void *' to avoid problems with TAG_SUPER vs _TAG_SUPER.
+ (TAG_SUPER, _msg_id, _msgSuper_id): Deleted.
+ (objc_getClass_id, objc_getMetaClass_id): Deleted.
+ (selector_type): Renamed from _selector_type.
+ (forward_declare_categories, build_objc_symtab_template):
+ Don't use parser interface, just build nodes.
+ (create_builtin_decl): New function.
+
+ * hp800hpux.h (LIB_SPEC): New definition.
+
+ * arm.h (TARGET_WHEN_DEBUGGING): Name corrected.
+
+ * protoize.c (abspath): Make abs_buffer a little longer.
+
+ * encore.h (NO_ABSOLUTE_PREFIX_IF_SYMBOLIC): Defined.
+ (EXTERNAL_PREFIX, IMMEDIATE_PREFIX): Defined.
+ (TARGET_DEFAULT): Changed to 9.
+ (ENCORE_ASM): Defined.
+
+ * sequent.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS): Deleted.
+ (IMMEDIATE_PREFIX): Define as 0.
+ (SEQUENT_ASM): Defined.
+ * ns32k.c (print_operand): Output f.p. as ints if SEQUENT_ASM.
+ Output doubles using 0f, not 0d, if ENCORE_ASM.
+
+ * configure: If no configuration matches, print error and exit.
+ (m68k-sun-sunos*): Renamed from m68k-sun-sunos4*.
+
+ * configure (copy): New variable.
+ If hard link fails, make a copy.
+
+ * mips.c (mips_asm_file_end): Don't set flags in identifiers.
+ Just output every identifier found in extern_head.
+
+ * configure (sparc-tti-*): Renamed from sparc-unicom-*.
+ (m68k-tti-*): Replaced.
+ (m68k-tti2-*): Deleted
+
+ * config.sub (pbd): Alias for sparc-tti, not sparc-unicom.
+ (pbb): New machine alias.
+ (*-tti): Implies os=-sysv3.
+ (-oss*): Alias for -sysv3.
+
+Fri Mar 13 17:20:52 1992 david d [zoo] zuhn (zoo at lynx.spa.umn.edu)
+
+ * x-mips: add -mld.
+
+Fri Mar 13 14:48:05 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * hp800.h (REGISTER_NAMES): Name register 112, the shift amount
+ register, as "SAR". It was left out.
+
+Fri Mar 13 04:08:53 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386isc.h (STARTFILE_SPEC): Use crt1, not crt0.
+
+ * x-i386sco (CC,OLDCC): Don't define `i386' here.
+ (RCCFLAGS): Define it here, along with other SCO symbols.
+ (XCFLAGS): Use that. New variable.
+ (CLIB): Use -lPW to get alloca.
+
+Fri Mar 13 14:11:41 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * Changes to enable use of sqrt builtin functions.
+ * c-decl.c (init_decl_processing): Enable BUILT_IN_FSQRT for
+ __builtin_sqrt. Also enable for sqrt if not traditional.
+ * cp-decl.c (init_decl_processing): Enable BUILT_IN_FSQRT for
+ __builtin_sqrt.
+ * expr.c (expand_builtin, case BUILT_IN_FSQRT): New case. Call
+ expand_unop to expand the operation. If that fails break and
+ emit a call to the library sqrt function.
+ * optabs.c (init_optabs): Initialize new optabs for sqrt functions.
+ * expr.h (sqrt_optab): Declare here so that expr.c can see it.
+
+Fri Mar 13 08:56:50 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (delete_dead_from_cse): Fix error in last change.
+
+ * a29k.h (PCC_BITFIELD_TYPE_MATTERS): Define as 1.
+
+ * reorg.c (fill_slots_from_thread): Add missing arg in call to
+ try_split call that was recently added.
+
+ * fold-const.c (invert_truthvalue, case COMPOUND_EXPR): New case.
+
+Fri Mar 13 01:02:56 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (ordinary scan_prog_file): Don't count | in sym name.
+
+ * ns32k.md (movsf): Remove #if 0 around #ifndef GAS_SYNTAX.
+
+ * pc532.h (GAS_SYNTAX): Defined.
+
+Thu Mar 12 00:10:23 1992 Stefan Petri (petri@jupiter.ibr.cs.tu-bs.de)
+
+ * configure (pyramid): Re-enable.
+
+ * pyr.h (STRUCTURE_SIZE_BOUNDARY): Restore definition from gcc-1.40.
+ (PCC_BITFIELD_TYPE_MATTERS): Define as 1 instead of empty.
+
+ * pyr.h (STATIC_CHAIN_INCOMING_REGNUM): Added.
+
+ * pyr.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT,
+ INITIALIZE_TRAMPOLINE): Added, inspired by convex.h
+
+ * pyr.h (INITIAL_FRAME_POINTER_OFFSET): New definition.
+
+ * pyr.md (indirect_jump): New pattern.
+
+ * libgcc2.c [L_trampoline]: Don't include gstddef.h in this case.
+ (__enable_execute_stack): Cloned definition for pyramid
+ from that for convex.
+
+Thu Mar 12 13:23:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (FREAD, FWRITE): #undef if USG.
+
+ * x-mipsv: New file.
+ * configure (mips-*-sysv): Use it.
+
+ * cccp.c (skip_to_end_of_comment): New arg NOWARN. Callers changed.
+ (do_xifdef, do_endif): Pass 1 for NOWARN.
+
+ * i386.h, hp800.h (ENCODE_SECTION_INFO): Handle CONSTRUCTOR node.
+ * i386.h (ENCODE_SECTION_INFO): Only decls can be global.
+
+ * cccp.c (warn_import): New variable.
+ (do_include): Test that.
+ (main): Handle -Wimport.
+
+ * hp800hpux.h (DBX_DEBUGGING_INFO): #undef it.
+ * x-hp800hpux: New file.
+ * configure (hp800-hp-hpux*): Use it.
+
+ * config.sub: Make triton alias for sysv3.
+
+ * collect2.c: If CROSS_COMPILE, #undef the special OBJECT_FORMAT_*.
+
+Thu Mar 12 10:35:50 1992 Ron Guilmette (rfg at ncd.com)
+
+ * gcc.c (default_compilers): Use .i suffix (instead of .cpp) for all
+ preprocessor output files.
+ (execute): Print commands used to invoke passes if -save-temps.
+
+ * Makefile.in (mostlyclean): Delete *.i, not *.cpp.
+ Don't delete *.co.
+
+Thu Mar 12 07:13:33 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * xcoff.h (DBX_FINISH_SYMBOL): When writing function name, strip off
+ any storage class at the end.
+
+Thu Mar 12 05:16:49 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * config.sub (-triton*): Delete this OS (it's sysv3).
+ * configure (m88k-dolphin-sysv3): Rename alternative.
+ * xm-m88kdolph.h: Delete. Use xm-m88kv3.h instead.
+ * x-m88kdolph: New file.
+
+Thu Mar 12 00:19:14 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (movstrsi recognizers): Fix reversed operands.
+
+Thu Mar 12 00:01:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (main):
+ Don't require machine_suffix for md_startfile_prefix or md_exec_prefix.
+
+ * toplev.c (main): Force flag_no_inline if not optimizing.
+
+ * dbxout.c (dbxout_type): Ignored names don't count in case UNION_TYPE.
+
+ * cp-decl.c (pushtag): Push on ->tags and make TYPE_STUB_DECL
+ even if type has no tag name.
+ * cp-class.c (finish_struct): Always call rest_of_type_compilation.
+
+ * cse.c (simplify_unary_operation): For SQRT, do nothing.
+
+ * byteorder.h: Test __i860_big_endian__.
+
+ * ns32k.c (print_operand_address): Test NO_ABSOLUTE_PREFIX_IF_SYMBOLIC.
+ Test BASE_REG_NEEDED inside indirect address too.
+ * sequent.h (NO_ABSOLUTE_PREFIX_IF_SYMBOLIC): Defined.
+ (SEQUENT_ADDRESS_BUG, SEQUENT_BASE_REGS): #if 0.
+
+Wed Mar 11 22:55:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (push_parm_decl): Clear immediate_size_expand temporarily.
+ * stor-layout.c (get_pending_sizes): Fix up SAVE_EXPR_CONTEXT.
+ (variable_size): No longer static.
+ * c-decl.c (grokdeclarator): Call variable_size, not save_expr.
+ Rename local `variable_size' to `size_varies'.
+
+Wed Mar 11 18:53:23 1992 Chip Salzenberg (chip@tct.com)
+
+ * collect2.c (OBJECT_FORMAT_COFF, OBJECT_FORMAT_ROSE):
+ (OBJECT_FORMAT_NONE): Three alternative strategies for finding inits.
+ OBJECT_FORMAT_COFF is completely new.
+ (is_ctor_dtor): New function.
+ [OBJECT_FORMAT_NONE, OBJECT_FORMAT_ROSE] (scan_prog_file):
+ Use is_ctor_dtor.
+
+ * x-rs6000 (CLIB): Add -lld.
+ * t-rs6000: New file.
+ * configure (rs6000...): Use that file.
+
+Wed Mar 11 17:31:13 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * reload1.c (inc_for_reload): Call gen_add2_insn with negated
+ constant instead of gen_sub2_insn.
+
+Wed Mar 11 17:30:35 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op): For shifts, always use op0 type.
+
+ * stmt.c (expand_end_bindings):
+ Load virtual_incoming_args_rtx via a pseudo reg.
+
+ * math-68881 (pow): Add missing parens; typo in fp constant.
+
+ * i386isc.h (LIB_SPEC): Add -lg.
+
+ * libgcc2.c (__CTOR_LIST__, __DTOR_LIST__):
+ Don't define if CTOR_LISTS_DEFINED_EXTERNALLY.
+ (__builtin_saveregs): Handle NO_UNDERSCORES for sparc.
+
+ * pbb.h, pbd.h: New files from Mike Bloom.
+ * configure (m68k-tti2-*): Turned back on.
+
+ * c++: Add a colon command in case system doesn't handle #!/bin/sh.
+
+Mon Mar 11 19:54:43 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (integer truncMN2): Delete patterns. Not needed on i386.
+
+Wed Mar 11 16:58:56 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88kv3.h (STARTFILE_SPEC, LIB_SPEC): Search for crt{begin,end}.o
+ (DO_GLOBAL_CTORS_BODY, CTORS_SECTION_ASM_OP, ASM_OUTPUT_CONSTRUCTOR,
+ DTORS_SECTION_ASM_OP): Implement new svr3 scheme.
+
+Wed Mar 11 16:24:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (fold): When correcting constant result of GE, LE, NE,
+ make sure we really have a constant result.
+
+ * ns32k.md (call, call_value): Support GAS_SYNTAX and GNX_V3 like 1.40.
+
+ * c-decl.c (pushdecl): Properly use prev implicit decl in warning.
+
+Wed Mar 11 16:05:20 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * Makefile.in (OBJS): Add xcoffout.o.
+ (dbxout.o, final.o, toplev.o, varasm.o): Add xcoff.h dependency.
+ (xcoffout.o): Add rule to build.
+
+ * xcoffout.c: Change names of rs6000_*_section_name variables to
+ xcoff_*_section_name, and move definitions of them here from
+ rs6000.c.
+ * xcoff.h: Likewise, move declarations here from rs6000.h.
+ * rs6000.c: Delete definitions of rs6000_*_section_name variables.
+ * rs6000.h: Delete declarations of rs6000_*_section_name variables.
+
+ * rs6000.c (output_epilog): Add comment to note lack of traceback
+ table support.
+ * rs6000.h: Refine comment explaining ASM_SPEC definition.
+ (XCOFF_DEBUGGING_INFO): Define.
+ (DBX_CONTIN_LENGTH, DBX_NO_XREFS): Move to xcoff.h.
+ (ASM_FILE_START): When -g, emit private_data_section.
+ (ASM_DECLARE_FUNCTION_NAME): When -g, output .lglobl for static
+ functions. Also, output .function debug info.
+ (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Add bss_section call.
+
+ * dbxout.c: Include xcoff.h when XCOFF_DEBUGGING_INFO is defined.
+ Define default values for DBX_DECL_STABS_CODE,
+ DBX_STATIC_CONST_VAR_CODE, DBX_REGPARM_STABS_CODE, and
+ DBX_REGPARM_STABS_LETTER. These exist to be overriden for xcoff.
+ Include entire file if either DBX_DEBUGGING_INFO or
+ XCOFF_DEBUGGING_INFO is defined.
+ (dbxout_type): Add early exit if DBX_TYPE_DEFINED, used for xcoff.
+ (dbxout_symbol): Use DBX_DECL_STABS_CODE instead of N_LSYM for
+ tags and typedefs. Use DBX_STATIC_CONST_VAR_CODE instead of N_FUN
+ for static const variables. Add DBX_STATIC_BLOCK_START and
+ DBX_STATIC_BLOCK_END around output of stab info, for xcoff use.
+ (dbxout_finish_symbol): Use DBX_FINISH_SYMBOL instead if defined.
+ (dbxout_syms, dbxout_parms): No longer static, referenced from
+ xcoffout.c.
+ (dbxout_parms): Use DBX_REGPARM_STABS_CODE instead of N_RSYM. Use
+ DBX_REGPARM_STABS_LETTER instead of 'P'.
+ (dbxout_reg_parms): No longer static.
+ * final.c: Also include gstab.h if XCOFF_DEBUGGING_INFO defined.
+ Include xcoff.h if XCOFF_DEBUGGING_INFO defined.
+ (final_start_function): Call xcoffout_output_first_source_line
+ when XCOFF_DEBUG. Set next_block_index if XCOFF_DEBUG.
+ (final_end_function): Call xcoffout_end_function if XCOFF_DEBUG.
+ Call xcoff_end_epilogue if XCOFF_DEBUG.
+ (final_scan_insn): Call xcoffout_begin_function,
+ xcoffout_begin_block, and xcoffout_end_block if XCOFF_DEBUG.
+ (output_source_line): Also call dbxout_source_file if XCOFF_DEBUG.
+ * flags.h: Define XCOFF_DEBUG. Also declare
+ use_gdb_dbx_extensions if XCOFF_DEBUGGING_INFO.
+ * toplev.c: Also declare use_gdb_dbx_extensions if
+ XCOFF_DEBUGGING_INFO. Include xcoff.h in XCOFF_DEBUGGING_INFO.
+ (compile_file): Also call dbxout_init, and dbxout_finish if
+ XCOFF_DEBUG.
+ (rest_of_decl_compilation): Also call dbxout_symbol if
+ XCOFF_DEBUG.
+ (rest_of_type_compilation): Also call dbxout_symbol if
+ XCOFF_DEBUG.
+ (main): Add support for recognizing -g when XCOFF_DEBUGGING_INFO.
+ * varasm.c: Include xcoff.h if XCOFF_DEBUGGING_INFO.
+ (assemble_variable): Also call dbxout_symbol when XCOFF_DEBUG.
+ Change all returns to goto finish. At finish label,
+ call dbxout_symbol if XCOFF_DEBUG.
+
+ * dbxstclass.h: New file. Define XCOFF specific storage classes.
+ * xcoff.h: New file, for XCOFF support. Included by xcoffout.c,
+ dbxout.c, final.c, toplev.c, and varasm.c.
+ * xcoffout.c: New file for XCOFF support. Most of the support is
+ implemented by dbxout.c, this just includes stuff that can not be
+ easily performed within dbxout.c.
+
+ * toplev.c (struct W_options): Add entry for warn_inline, so user
+ can turn this warning on.
+
+Wed Mar 11 15:11:42 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * optabs.c (init_optabs): Fix typo (Imode instead of TImode) in
+ HAVE_subti3 case.
+
+Wed Mar 11 13:10:20 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * sparc.h (REG_ALLOC_ORDER): Make %g3 more desirable.
+
+Wed Mar 11 12:35:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (egrep cmd): Delete misplaced `#e[nl]'.
+
+ * jump.c (jump_optimize): Try to fix last change.
+
+ * expmed.c (init_expmed): Use big, ugly factor in mult_is_very_cheap.
+
+Wed Mar 11 08:00:18 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * toplev.c (rest_of_compilation): Use sdbout_types to clear the
+ anonymous types queue if any.
+ * sdbout.c: Correct spelling of sdbout_dequeue_anonymous_types.
+
+ * genattrtab.c (attr_string): Don't assume a terminating null.
+
+Wed Mar 11 07:05:38 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_as_needed): Delete erroneous test of
+ basic_block_needs.
+
+ * stmt.c (expand_end_case): Know that we will obtain a constant
+ if we were passed a COMPOUND_EXPR whose second operand is constant.
+ Fold the MINUS_EXPR we make for casesi.
+
+ * reorg.c (update_block_from_store): Deleted.
+ (update_block): Always leave USE; don't try to update live regs.
+
+ * explow.c (copy_to_suggested_reg): Add new arg for mode to use.
+ * expmed.c (expand_divmod): Pass new arg to copy_to_suggested_reg.
+
+ * reload1.c (set_label_offsets, reload_as_needed): Consistently
+ ignore non-eliminables when computing num_not_at_initial_offset.
+
+ * rs6000.md (subsi3): Remove unnecessary call to force_reg.
+
+ * rs6000.c (output_epilog): Separate setting LR from loading
+ it from memory in some cases.
+ Branch to FP restore routine instead of calling it.
+
+ * flow.c (propagate_block): CC0 is not live when we delete a dead
+ insn.
+ * cse.c (delete_dead_from_cse): An insn setting CC0 is not live
+ if the next insn doesn't reference CC0.
+
+ * cse.c (cse_insn): If we see a narrow AND with a constant, check if
+ we have seen a wider AND.
+
+ * combine.c (can_combine_p): Allow SUBREG of non-tiable regs if we
+ are going to do is copy it to CC0.
+
+ * reload.c (find_secondary_reload): If X is a pseudo with an
+ equivalent MEM, use the MEM to see if a secondary reload is needed.
+ Don't call REG_CLASS_FROM_LETTER for 'r'.
+ * reload1.c (emit_reload_insns): Handle reloading pseudos
+ with equivalent MEM when we have secondary reloads; use the MEM
+ when required.
+
+ * romp.md (reload_outsi): Pattern should be a single PARALLEL
+ whose second component is a CLOBBER.
+
+Wed Mar 11 03:11:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (find_a_file, do_spec_1): Always obey require_machine_suffix.
+ (machine_explicit): Var deleted.
+
+Tue Mar 10 23:12:24 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * m68k.md (68000 special shifts): No longer accept a shift count
+ of 16. Delete support for shifts by 16 places.
+ (shift by 16 bits): New patterns which apply to all 68k models.
+ * m68k.h (RTX_COSTS): Shifts by 16 are cheap.
+
+Tue Mar 10 20:37:31 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dwarfout.c (location_or_const_value_attribute):
+ Reenable changes disabled on Feb 21.
+ * function.c (instantiate_decls): Likewise.
+
+ * sdbout.c (sdbout_symbol): Handle (mem (const...)).
+ * dbxout.c (dbxout_symbol): Likewise.
+
+ * xm-i386isc.h: New file.
+ * configure (i386-*-isc*): Use it.
+
+ * hp320.h (MD_STARTFILE_PREFIX): Deleted.
+
+ * m68k.h (RTX_COSTS): If MULT is a shift, jump to shift case.
+
+ * sun3.h (TARGET_MEM_FUNCTIONS): Defined.
+
+ * toplev.c (rest_of_compilation): Call sdbout_dequeue_anonymous_types
+ even if we don't output assembler code.
+
+ * jump.c (jump_optimize): In `if (foo) bar; else break;' optimization,
+ include in range1 and range2 any line numbers at the beginning.
+
+ * c-typeck.c (spelling_length): Initialize `size'.
+ (PUSH_SPELLING): `spelling_size' is measured in elements.
+ (get_spelling): Use xmalloc if there is no buffer yet.
+
+Tue Mar 10 20:25:56 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * integrate.c (save_for_inline_copying):
+ Set up LABEL_NAME of label copies.
+
+ * sparc.md: Clean up attribute settings. Add default length of 2
+ for insns of type multi. Make sure all insns have correct type and
+ length attribute values.
+
+Tue Mar 10 19:13:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (warn_parentheses): Default is 0.
+ (c_decode_option): -Wall implies -Wparentheses.
+
+Tue Mar 10 17:49:51 1992 Torbjorn Granlund (tege at mole.gnu.ai.mit.edu)
+
+ * hp800.md (shNadd recognizers): Put the MULT first, to obey insn
+ canonicalization rules.
+
+ * hp800.md (subsi3): Don't handle constants for operand 2, but
+ do handle them for operand 1, for the subi insn.
+
+ * hp800.md (compare into ordinary reg): Use "arith11_operand", not
+ "arith_operand" for operand 2. Use `I', not `J' as constraint.
+ Don't change the constant in the output code (i.e. undo Mar 10
+ change).
+ * hp800.c (arith11_operand): New predicate function. Fix comment.
+
+ hp800.md (mulsi3): Don't handle CONST_INT specifically, rely on
+ machine independent code.
+ * hp800.h (RTX_COST): Define.
+ * hp800.c (ABS, mul_operands, emit_mul_by_constant) Remove.
+ (mul_by_constant_aux, test_factor_and_output): Remove.
+
+ * hp800.md (addsi3): Use "register_operand" for operand 1, not
+ "arith_operand".
+
+ * hp800.md: Clean up spacing and comments in a few places.
+
+ * hp800.c (output_move_double): Handle auto increment and auto
+ decrement. Remove unused enums. Test for either operand being a
+ REGOP instead if RNDOP, since we require at least one operand to
+ be a register. Pass the MEM address to find_addr_reg, not the
+ entire MEM rtx (in two places).
+
+ * hp800.h (WORDS_BIG_ENDIAN): Fix typo in comment.
+ (RTX_COST): Return cost of a PLUS, to indirectly give the right
+ cost for the shNadd insns. Adjust the cost for division.
+
+Tue Mar 10 15:57:24 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md: Add pattern for optimizing bitfield compares. This
+ pattern was accidently lost when other (now-obsolete) bitfield
+ patterns were removed.
+
+ * sparc.c (arith32_operand): Deleted.
+ * sparc.md (movstrsi): Now uses nonmemory_operand for length.
+
+ * sparc.c (output_arc_profiler): Emit insns from first to last
+ instead of last to first, since it is much clearer. Eliminate
+ profiler_target, since it resulted in illegal rtx sharing.
+
+ * sparc.c (legitimize_pic_address): Make -fPIC work again, re the
+ Feb 27 cse.c LO_SUM fix. Put addresses inside UNSPEC when loading
+ them to ensure that cse won't mistakenly optimize them.
+ * sparc.md: Two new patterns, to match (HIGH (UNSPEC (..))) and
+ (LO_SUM (reg) (UNSPEC (..))) as generated above.
+
+Tue Mar 10 14:58:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * mips-news.h (ASM_SPEC): Move %{G*} outside of -mgas conditional.
+ * nws3250v4.h, xm-nws3250v4.h, x-nws3250v4: New files. From cph.
+
+ * i860.c (sfmode_constant_to_ulong): Fix typo in last change.
+
+ * expr.c (store_expr): Initialize `label'.
+
+ * 3b1.h (HAVE_ATEXIT): #undef this.
+
+ * hp800.md (compare into ordinary reg): Make large ints "negative".
+
+ * hp800hpux.h: New file.
+ * configure (hp800-*-bsd*): Renamed from hp800-*-*.
+ (hp800-*-hpux*): New configuration.
+
+Tue Mar 10 11:03:47 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * expmed.c (init_expmed): Make the lea pattern in the canonical way.
+
+Tue Mar 10 10:32:30 1992 Tom Wood (wood@hal)
+
+ * m88k.h (ASM_OUTPUT_{COMMON,LOCAL}): Compute size consistently.
+
+Tue Mar 10 07:41:09 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * recog.c (constrain_operands, case 'E'): Fix typo.
+
+ * function.c (setjmp_protect): Don't put vars from inline functions
+ on the stack.
+
+ * c-typeck.c (process_init_constructor): Don't use host integers for
+ bounds and index computation; use trees instead.
+ If specifying index in array with unset bounds, assume lower bound
+ of zero and check specified index against zero.
+
+ * tree.h (mode_for_size): Don't declare here.
+ * machmode.h (mode_for_size): Declare here instead.
+
+ * reorg.c (fill_slots_from_thread): Try to split THREAD immediately
+ so we don't get confused if it gets split later.
+
+ * reorg.c (fill_slots_from_thread): Don't take add from loop
+ head if the increment amount depends on the target register, since
+ we can't undo the operation.
+
+Mon Mar 9 12:18:04 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (final_biv_value): Fail if the biv is not MODE_INT.
+
+ * combine.c (distribute_notes, case REG_DEAD): Call rtx_equal_p
+ to verify that it was the set that modified the register, and
+ not a clobber.
+
+Sun Mar 8 22:20:24 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * c-parse.y,c-lex.c,cp-hash.h,cp-parse.y,cp-spew.c,objc-parse.y:
+ Rename `ASM' to `ASM_KEYWORD' to avoid trouble with SCO
+ <sys/signal.h>.
+
+Sun Mar 8 23:16:37 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * expr.c (move_by_pieces, move_by_pieces_ninsns): Remove March 4 and
+ March 5 changes. Set max_size to MOVE_MAX + 1 instead.
+
+Sun Mar 8 17:08:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (do_tablejump): New arg MODE.
+ * stmt.c (expand_end_case): Pass that arg.
+
+ * c-decl.c (pushtag): Push even anonymous types on tags list.
+ (parmlist_tags_warning): Handle anonymous types in the list.
+
+Sun Mar 8 15:08:58 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386mach.h (perform_fixdfsi): Rename from *_fix_trundfsi2.
+ Restore float control word correctly.
+ * i386rose.h (perform_fixdfsi): Likewise.
+
+ * i386.h (CONST_DOUBLE_OK_FOR_LETTER_P): Allow float constants,
+ even if -msoft-float is used: reg-stack.c may emit an insn to load
+ the function value register with 0.0.
+
+ * i386.md (bit test insns): Don't allow memory operands as the
+ first argument of the zero_extract.
+
+ * i386isc.h (RETURN_POPS_ARGS): Comment this out: ISC uses the
+ standard definition.
+
+ * i386sco.h (STARTFILE_SPEC): Use crtbegin.o.
+ (ENDFILE_SPEC): Use crtend.o.
+ (CPP_SPEC): #undef before defining.
+ (RETURN_POPS_ARGS): Caller pops args on SCO.
+
+Sun Mar 8 14:25:16 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure: Fatal error if srcdir has already been configured.
+ Remove periods from error messages.
+
+ * 3b1.h, mot3300.h (ASM_OUTPUT_OPCODE): Change swap to swap.w.
+ (SGS_SWAP_W): Deleted.
+ * m68ksgs.h (ASM_OUTPUT_OPCODE): If SGS_SWAP_W, change swap to swap.w.
+ * m68k.md: Delete all SGS_SWAP_W conditionals.
+
+ * m68k.md (shift using swap, dbra patterns): Change clrw to clr%.w.
+
+ * hp800.h (output_global_address): Use `-' for PLUS of neg integer.
+ Clean up spacing and braces in several places in file.
+
+ * byteorder.h (htons): Use unsigned int for arg type.
+
+Sun Mar 8 07:36:44 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (print_operand, case 'A'): New case.
+ * rs6000.md (sri): New %A to use "sli" for count of zero to work
+ around bug in RS/6000 assembler.
+
+ * config.sub (os): Add "aos" to basic list, no longer the same
+ as "bsd"; "acis" is an alternate for "aos".
+ (romp): No longer has a default system.
+ * configure (romp-*-aos*): Renamed from romp-*-bsd*; BSD means
+ real BSD (4.3 Tahoe+), AOS means IBM system.
+
+ * Makefile.in (crtbegin.o, crtend.o): Use -o for output instead of
+ putting in crtstuff.o and renaming to desired name.
+
+ * reload1.c (reload): Re-check eliminability of registers on each
+ reload pass.
+
+ * jump.c (mark_jump_label): Make multiple REG_LABEL notes if
+ more than one label is mentioned in an insn.
+
+ * integrate.c (copy_rtx_and_substitute): Properly initialize
+ const_equiv_map for the equivalents of AP and FP.
+
+ * rs6000.h (TARGET_MEM_FUNCTION): Define.
+
+Sun Mar 8 00:05:47 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (store_parm_decls): Copy function type before changing it.
+ * tree.c (build_type_copy): New subroutine.
+
+ * t-next (LIBGCC1): Assigned, instead of LIBGCC.
+
+ * m68k.h (SHIFT_COUNT_TRUNCATED): Deleted.
+
+Sat Mar 7 23:47:57 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (xorsi3,xorhi3): Don't emit a byte opcode with an SImode
+ operand.
+
+Sat Mar 7 22:49:21 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (convert_arguments): -Wconversion warning
+ if argument is passed as float.
+ For fixed arguments, warn if type passed doesn't match
+ what default_conversion produces.
+
+ * gcc.c (cross_compile): New variable, 1 if cross-compiling.
+ (read_specs): Read it from specs.
+ (process_command): Dump it to specs.
+
+ * gcc.c (process_command): Don't use MD prefixes and
+ standard_startfile_prefix* here.
+ (main): Use them here, if not cross-compiling.
+
+Sat Mar 7 18:13:45 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_as_needed): Eliminate regs in (use (mem ..))
+ and (clobber (mem ...)) insns.
+
+ * combine.c (distribute_notes): Fix minor bug in handling of
+ multi-register values when only one part is used.
+
+ * optabs.c, expr.c: Always call emit_library_call with no_queue == 1.
+
+ * function.c (fix_lexical_addr): Correctly set BASE in non-separate
+ AP case.
+
+Sat Mar 7 15:39:57 1992 Jyrki Kuoppala (jkp@batman.cs.hut.fi)
+
+ * ns32k.h (TRANSFER_FROM_TRAMPOLINE): changed "ret" to "ret 0"
+
+Sat Mar 7 15:41:46 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * fixincludes: Don't do special fixes on signal.h, which were only
+ needed because of #endif comment fixes.
+
+Sat Mar 7 15:11:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * m68k.h (ASM_OUTPUT_ALIGN): Don't crash if LOG is more than 1.
+
+ * varasm.c (decode_reg_name): Make various prefixes optional
+ whether or not they are in REGISTER_NAMES.
+ (strip_reg_name): New subroutine.
+
+ * i386.c: Fatal error if EXTRA_CONSTRAINT is defined.
+
+ * collect2.c [USG] (R_OK, W_OK, X_OK): Define them if missing.
+
+ * x-hp320g (RANLIB, RANLIB_TEST): Defined.
+
+ * Makefile.in (EXTRA_PROGRAMS): New variable is list of programs.
+ (native): Build them. Don't build EXTRA_PARTS.
+ (rest.encap): Build EXTRA_PARTS.
+ (GCC_PARTS): Include EXTRA_PROGRAMS.
+ (install-common): Build EXTRA_PROGRAMS.
+ * t-convex (EXTRA_PROGRAMS): Define instead of EXTRA_PARTS.
+
+ * Makefile.in (distclean): Don't delete backups, etc.
+ (extraclean): New target--delete those things here.
+ (gcc.xtar): Use extraclean.
+ (cleanconfig): Deleted.
+ (realclean): Depend on distclean.
+
+Sat Mar 7 14:54:29 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * genattrtab (attr_printf): Provide alternate based on HAVE_VPRINTF.
+
+Sat Mar 7 14:25:58 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * hp800.c (secondary_reload_class): Change `=' to `==' in `if'.
+
+Sat Mar 7 13:25:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (do_line): Fix typo.
+
+ * configure (decoding args): Delete excess fi.
+
+Sat Mar 7 09:29:41 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (CONST_COSTS): Complete last change.
+
+ * mips.md (movsi_ulw, movsi_usw): Complete last change.
+
+Sat Mar 7 07:28:03 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * config.sub (*-dolphin, -triton*): New vendor/OS.
+ * configure (m88k-dolphin-trition): New alternative.
+ * m88kdolph.h: New file.
+ * xm-m88kdolph.h: New file.
+
+Sat Mar 7 10:07:44 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-l2.com: Do not allow the user to run this with gcc 1.nn.
+
+ * make-gcc.com: Use the new compiler to build libgcc2.c (through
+ make-l2.com).
+
+Sat Mar 7 05:36:16 1992 K. Richard Pixley (pixley@nutrimat.gnu.ai.mit.edu)
+
+ * Makefile.in: added the exec_prefix variable for installing host
+ dependent programs and libraries.
+
+Sat Mar 7 00:09:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * genextract.c (mybzero): New fn. Used instead of bzero.
+
+ * Makefile.in (all): Indirect to all-internal.
+ (all-internal): New rule, following where cross-make gets inserted.
+
+ * vms.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Defined.
+
+ * protoize.c: Don't declare fork or vfork.
+
+ * i860.c (sfmode_constant_to_ulong): Use REAL_VALUE_FROM_CONST_DOUBLE.
+
+ * gcc.c (handle_braces): Verify actual suffix length matches
+ desired.
+
+ * hp800.h (GO_IF_LEGITIMATE_ADDRESS): Add parens for clarity.
+
+ * c-typeck.c (pointer_int_sum): Handle intop which is sum or diff
+ of arguments with different types.
+
+ * c-typeck.c (PUSH_SPELLING): If no buffer yet, use xmalloc.
+
+ * m68k.c (output_dbcc_and_branch): Use \n\t between pair of insns.
+
+ * sparc.h (TARGET_MEM_FUNCTIONS): Defined.
+
+Fri Mar 6 18:48:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Don't call ON_EXIT here.
+ * crtstuff.c, libgcc2.c (__do_global_ctors): Call it here.
+
+ * i386sco.h (HAVE_ATEXIT): Defined.
+
+ * collect2.c (my_exit, main): Avoid dereferencing 0.
+
+ * stmt.c (expand_decl_init): Don't alter TREE_USED of the variable.
+
+Fri Mar 6 18:24:39 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * mot3300.h (SIZE_TYPE): Define as "unsigned int".
+
+ * combine.c (make_extraction): STRICT_ALIGNMENT is now non-zero if
+ true, instead of relying on whether it is defined or not.
+ * c-typeck.c, cp-typeck.c (build_c_cast): Likewise.
+ * stor-layout.c (layout_type) Likewise.
+ * expr.h (MUST_PASS_INSTACK_BAD_ALIGN): Likewise.
+ * expr.c: Set default value of SLOW_UNALIGNED_ACCESS to zero.
+ (move_by_pieces, move_by_pieces_ninsns, emit_push_insn):
+ SLOW_UNALIGNED_ACCESS and STRICT_ALIGNMENT now true if non-zero.
+ * function.c (assign_stack_local, assign_outer_stack_local):
+ Remove turned-off code using STRICT_ALIGNMENT.
+ * config/*.h: Change representation of STRICT_ALIGNMENT and
+ SLOW_UNALIGNED_ACCESS.
+ * gmicro.h (SLOW_UNALIGNED_ACCESS): Set to 1.
+
+ * Makefile.in (cleanconfig): Remove obsolete reference to
+ file aux-output2.c.
+
+ * c-lex.c (yylex): Don't make out-of-range shift for very wide chars.
+
+Fri Mar 6 18:07:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (compile_file): No -Wunused warnings for static vars.
+
+ * collect2.c (main): Don't handle -B, -b, -V, -m or -f.
+ collect2 gets only the options that ld would get.
+ Process COLLECT_GCC_OPTIONS envvar.
+ (savestring): New function.
+
+ * genattrtab.c: Revert to previous version
+ because the new one uses vsprintf and it isn't trivial
+ to avoid it.
+
+Fri Mar 6 17:26:09 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.md (<O5> expressions): Don't rely on the assembler being able
+ to handle constant expressions (Dolphin Triton88 can't).
+
+ * genattrtab.c: Add a hash table mechanism to share RTL and strings.
+ (attr_hash_add_rtx, attr_hash_add_string): New functions.
+ (attr_rtx): New function to generate a shared RTL.
+ (attr_printf, attr_printf): New functions to generate a shared string.
+
+ * genattrtab.c: Extend the treatment of DEFINE_ATTR to allow a CONST
+ expression as the default value, indicating a constant attribute.
+ (struct attr_desc): Add `is_const' field.
+ (check_attr_test): Add `is_const' parameter. Disallow use of insn
+ attributes and MATCH_OPERAND in a constant expression; allow
+ SYMBOL_REF in a constant expression. All callers updated.
+ (chech_attr_value): Allow a SYMBOL_REF as a constant expression.
+ (convert_const_symbol_ref): New function that converts a constant
+ SYMBOL_REF to a COND that explictly tests each value.
+ (make_canonical): Use `convert_const_symbol_ref' for constant
+ SYMBOL_REF expressions.
+ (make_length_attrs, find_attr, make_internal_attr): Mark `is_const'
+ as false.
+ (gen_attr): Get rid of a top-level CONST node and mark `is_const' true.
+ (walk_attr_value): Use of a constant SYMBOL_REF does not set
+ `must_extract' or `must_constrain'.
+ (write_attr_get): Deal with constant attributes.
+
+Fri Mar 6 16:14:27 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main, path_include) [__MSDOS__]: Handle MSDOS syntax in path.
+
+ * expr.c (store_expr): Fix bugs in last change.
+
+ * objc-actions.c (receiver_is_class_object): Fix typos.
+
+ * ecoff-cmp: File deleted.
+
+ * config.sub (3b1): Convert to m68000, not m68k.
+
+ * cccp.c (do_line): Handle "syetem header" indicator flag `3'.
+
+ * t-i386isc: New file.
+ * configure (i386-*-isc*): Use the new file.
+ * i386isc.h (LIB_SPEC, ENDFILE_SPEC): Use crtbegin.o/crtend.o.
+
+Fri Mar 6 14:37:25 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * expmed.c (expand_dec): Fix comment.
+
+Fri Mar 6 09:49:54 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.c (emit_move_sequence): Check reload_in_progress in
+ addition to reload_completed.
+
+ * m88k.md (cpu attribute): Fix.
+
+Fri Mar 6 06:24:08 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (CONST_COSTS): Fix eliminate_constant_term calling
+ sequence.
+
+ * mips.c (simple_memory_operand): Move offset variable for calling
+ eliminate_constant_term into a local block by the call.
+ (mips_address_cost): Ditto.
+
+ * mips.md (movsi_ulw, movsi_usw): Fix eliminate_constant_term
+ calling sequence.
+
+Fri Mar 6 00:30:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Don't fix comments on #endif, #else.
+ It made the egrep string too long.
+
+ * expr.c (store_expr): Handle size mismatch copying from string cst.
+
+Thu Mar 5 22:11:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (receiver_is_class_object): Clean up syntax.
+
+ * sun386.h (ASM_GENERATE_INTERNAL_LABEL): Start with a star.
+
+ * reload1.c (reload): Change `=' to `==' in `if'
+ inside REGISTER_CONSTRAINTS conditional.
+
+Thu Mar 5 21:29:33 1992 Michael Tiemann (tiemann@mole.gnu.ai.mit.edu)
+
+ * cp-parse.y (yyprint): Make declarations declare __inline
+ consistently.
+
+Thu Mar 5 18:34:32 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * m68k.md (dbra patterns): Fix NO_ADDSUB_Q ifdef conditionals.
+ Fix location of comment regarding use of REG_NOTES in dbra insns.
+
+Thu Mar 5 18:30:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (libgcc.a): If $(LIBGCC1) is empty, ignore it.
+ * cross-make (LIBGCC1): Make definition empty.
+
+Thu Mar 5 17:48:38 1992 Torbjorn Granlund (tege@wombat.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): Correctly detect different operand
+ constraint alternatives (by changing subscription from 0 to loop
+ variable i).
+
+Thu Mar 5 16:58:38 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * Makefile.in (libsubdir): Rename $(libdir)/gcc gcc-lib.
+ * gcc.c (STANDARD_EXEC_PREFIX): Ditto.
+
+ * c-typeck.c: Implement a spelling stack to store and print
+ compoment names for error messages.
+
+ (push_{string,member_name,array_bounds}): New functions.
+ (SPELLING_DEPTH, RESTORE_SPELLING_DEPTH, SAVE_SPELLING_DEPTH): New
+ macros to save and restore the spelling stack.
+ (digest_init, process_init_constructor): Use these.
+
+ (spelling_length, print_spelling): New functions.
+ (error_init, pedwarn_init): Use them.
+
+ (get_spelling): New function.
+ (convert_for_assignment): Use `get_spelling' to interpret messages
+ that are based on the spelling stack.
+ (process_init_constructor): Pass `&initialization_message'.
+
+Thu Mar 5 15:22:22 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * expr.c (init_expr): Initialize forced_labels to zero.
+ (save_expr_status): Saved forced_labels away and initilize to
+ zero.
+ (restore_expr_status): Restore value of forced_labels.
+ * function.h (struct function): Add forced_labels field.
+ * integrate.c (function_cannot_inline_p): Reject function with
+ nonzero forced_labels.
+
+Thu Mar 5 15:08:47 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * regclass.c (fix_register): Use decode_reg_name.
+ * stmt.c (expand_asm_operands): Ditto.
+ * varasm.c (decode_reg_name): Ignore a leading '#'.
+
+ For RMS:
+ * cp-call.c (build_method_call): Delete now redundant tests of
+ TREE_EXTERNAL before calls to assemble_external.
+ * cp-init.c (build_virtual_init, build_builtin_call): Ditto.
+ * cp-method.c (hack_identifier): Ditto.
+ * cp-typeck.c (build_component_ref, build_function_call_real): Ditto.
+ * c-parse.y (primary): Ditto.
+
+Thu Mar 5 13:49:29 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * expr.c (move_by_pieces_ninsns): Finish Mar. 4 change. Do not
+ choose a mode which has a size greater than MOVE_MAX.
+
+ * m68k.c: Change all occurances of "mov." to "move%.l" so that
+ ASM_OUTPUT_OPCODE can choose the right syntax.
+ * m68k.md: Change "mov." to "move." in comments for consistency.
+
+Thu Mar 5 10:04:52 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * stmt.c (warn_if_unused_value): Handle NON_LVALUE_EXPR.
+
+ * limits.h (_LIMITS_H_): Correct misspellings.
+
+ * Makefile.in ("if" and "["): Romp, 4.3 BSD, and Ultirx systems
+ fail when the condition is false. Change troublesome instances to
+ either use "case" or use '-' as a prefix to the compilation rule.
+
+Thu Mar 5 09:08:11 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (lshrdi3): Add earlyclobber to first alternative.
+
+ * explow.c (stabilize): Copy RTX_UNCHANGING_P and MEM_VOLATILE_P.
+
+Thu Mar 5 06:05:31 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-parse.y (.pushlevel): Stack and unstack STMT_DECL_MSG.
+
+ * cp-parse.y (unary_expr): Add EXTENSION support.
+ ({maybe_label,label}_decls, label_decl): Define these rules as from
+ c-parse.y.
+ * cp-decl.c ({lookup,shadow,define}_label): Update from c-decl.c.
+ * gplus.gperf: Add EXTENSION and LABEL.
+ * cp-hash.h: Remade using gperf.
+
+Wed Mar 4 21:38:41 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * expr.c (move_by_pieces): Do not choose a mode which has a size
+ greater than MOVE_MAX.
+
+Wed Mar 4 23:24:25 1992 Per Bothner (bothner@cygnus.com)
+
+ * cp-class.c, cp-decl.c, cp-decl2.c, cp-init.c, cp-lex.c,
+ cp-method.c, cp-typeck.c: Casts from enum to int that
+ are necessary (not alas not quite sufficient) to get
+ cc1plus to compile using system cc on Sony NewsOS 3.2
+ (presumably Portable C Compiler).
+
+Wed Mar 4 22:05:39 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-type2.c (build_functional_cast): Fix typo in code searching
+ down type lattice looking for constructor.
+
+Wed Mar 4 16:52:21 1992 Jim Wilson (wilson@cygnus.com)
+
+ * gstdarg.h: Include va-sparc.h on sparc systems. Delete now
+ obsolete `#ifndef __sparc__'.
+ * va-sparc.h (va_start): Provide alternate definition when
+ included via stdarg.h. Delete obsolete comment.
+ (va_arg): Add missing set of parentheses.
+
+Wed Mar 4 15:21:20 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes: Make egrep pattern more general. Check for
+ additional special case problems in Ultrix, News-OS, and IRIX.
+
+Wed Mar 4 15:15:45 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (function_epilogue): Don't make a special case for
+ current_function_returns_struct: this is done via
+ current_function_pops_args.
+
+ * sun386.h (DATA_SECTION_ASSM_OP): Fix typo in undef.
+
+Wed Mar 4 14:21:37 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes, fixinc.svr4: Only change #else and #endif at the
+ beginnings of lines, aside from whitespace, so it doesn't change
+ them within comments.
+
+Wed Mar 4 09:48:21 1992 Michael Tiemann (tiemann@mole.gnu.ai.mit.edu)
+
+ * cp-method.c (build_decl_overload): Braino in handling of DELETE
+ (NEW was handled correctly).
+
+Wed Mar 4 09:14:57 1992 Jeffrey A. Law (law@wombat.gnu.ai.mit.edu)
+
+ * Makefile.in (install-man): Install the g++ manual page.
+
+ * m68k.md (dbCC peepholes): Two new peepholes to recognize cases
+ where a compare/branch can be done (for free) as part of a dbCC
+ insn. This turns jCC;dbf into dbCC;jCC (the jCC is now outside the
+ inner part of the loop).
+
+ * m68k.c (valid_dbcc_comparison_p): New function which returns TRUE
+ if the given comparison is a valid comparison operator for the dbCC
+ instruction.
+ (output_dbcc_and_branch): New function to output a dbCC;jCC
+ instruction sequence (including possible counter adjustments in
+ SImode)
+
+Wed Mar 4 04:32:11 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-dem.c (optable): Add entry for `operator='.
+
+ * cp-decl.c (finish_function): Emit a jump to RETURN_LABEL if
+ CLEANUP_LABEL is non-zero. (Suggested by niklas@appli.se)
+
+Wed Mar 4 04:28:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc1.c (perform_lesf2): Condition tested was backwards.
+
+Wed Mar 4 03:11:48 1992 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-pt.c (overload_template_name): Extra pushlevel isn't needed;
+ omit it.
+ (undo_template_name_overload): Don't pop the level that isn't pushed
+ any more.
+
+ * cp-class.c (pushclass): Don't bother processing unnamed tags.
+ (popclass): Likewise.
+
+ * cp-init.c (build_vec_delete): If pointer is null, don't do
+ anything.
+
+ * cp-parse.y (member_init): Accept base class names that are
+ template type names.
+
+ * cp-decl.c (start_decl): Don't prepend decl of `this' to arg lists
+ of methods of uninstantiated types.
+
+ * cp-pt.c (instantiate_template): If no text has been saved away,
+ don't try to parse it; an external reference will result.
+
+ * cp-parse.y (yyprint): Declare this at head of file.
+
+ * cp-pt.c (instantiate_class_template): If the template specified
+ hasn't been defined, don't reject the instantiation; make it a
+ normal undefined type.
+
+ * cp-parse.y (template_def): Try to recover from errors more
+ gracefully.
+
+Tue Mar 3 15:37:35 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * protoize.c (munge_compile_params): Compute the maximum number of
+ params (`temp_parms' length) safely.
+
+ * dwarfout.c (const_value_attribute): Punt quasi-constant values.
+ (location_or_const_value_attribute): Ditto.
+
+ * Makefile.in (install-common): Install the cross compilation
+ driver program even when $(tooldir)/bin doesn't exist.
+
+Tue Mar 3 14:39:55 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.h (enum reg_class): Undo Jan 17 change that deleted class BREG.
+ (REG_CLASS_NAMES,REG_CLASS_CONTENTS,REGNO_REG_CLASS): Likewise.
+ (REG_CLASS_FROM_LETTER): Likewise.
+ * i386.c (regclass_map): Likewise.
+
+ * svr4.h (LINK_SPEC): Don't do -z or -t here: it's already in
+ link_command_spec. But do handle -G.
+
+ * i386.md (casesi): Rewrite pattern to reflect the way to emitted
+ code actually works.
+
+Tue Mar 3 09:59:15 1992 Jeffrey A. Law (law@super.super.org)
+
+ * m68k.md (dbra pattern in HImode): New pattern to match
+ decrement_and_branch insns when the loop counter is decremented in
+ HImode.
+
+Tue Mar 3 07:57:18 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (doz patterns): Add missing `I' constraint.
+
+ * reorg.c (mark_target_live_regs): A CALL_INSN livens all global regs.
+
+ * vax.h (EXTRA_CONSTRAINT): New macro to select non-mode-dependent
+ MEM operands.
+ * vax.md (jlbc/jlbs): Use jbc/jbs if mode-dependent memory.
+ * vax.c (reg_or_nxmem_operand): Function deleted.
+
+ * expr.c (do_store_flag): Swap comparison code when putting
+ constant arg second.
+
+ * m68k.md (addhi3): Convert, e.g., 65535 to -1 before seeing if
+ we can use subqw.
+ (addqi3): Similarly for QImode constants
+
+ * local-alloc (optimize_reg_copy_1): Renamed from optimize_reg_copy.
+ (optimize_reg_copy_2): New function.
+ (update_equiv_regs): Call optimize_reg_copy_[12].
+
+ * combine.c (make_compound_operation, case AND): Turn SUBREG case
+ back on now that bug in i386.md has been fixed.
+ (simplify_comparison, case ASHIFT): If shifting low-order bit to
+ sign bit and doing equality comparison, convert to AND with low-order
+ bit (inequality case was already handled).
+ Also remove redundant test of CONST_OP in an earlier case.
+
+ * sun2o4.h (LINK_SPEC): No longer need -Bstatic with -g.
+
+ * m68k.c, m68k.h: Avoid %X% for most upper-case X since it means
+ something special to SCCS.
+
+ * rs6000.md (type): Add new type, mtlr.
+ (function_unit branch): Add delay from mtlr to br.
+ (movsi): When moving to lr, type is "mtlr".
+
+ * unroll.c (reg_dead_after_loop): Check for infinite loop by
+ counting JUMP_INSNs we follow.
+ Use GET_RTX_CLASS, reg_referenced_p, and single_set.
+
+ * expr.c (expand_increment): Set op0_is_copy when we are referencing
+ the low-order part of some value in a register.
+
+ * combine.c (force_to_mode): New arg REG; pass in recursive call.
+ If X has the same value as REG, use REG.
+ (make_field_assignment): Handle case when DEST and part of source
+ aren't the same, but are equal; pass destination to force_to_mode.
+
+ * m68k.md (addhi3): Generate addqw, subqw, or addw for
+ STRICT_LOW_PART versions the same way we handle the normal case.
+ (addqi3): Similarly for addqb, subqb, and addb.
+
+ * genattrtab.c (write_test_expr, case MOD): Double `%' in printf call.
+ (write_eligible_delay): Internal attribute "*delay_type" is always
+ used literally; it has no suffix or prefix.
+
+ * m68k.md, vax.md (sob): Rewrite inequality versions so that they
+ have a PLUS inside the comparison; combine cannot remove the PLUS
+ due to overflow considerations.
+
+Tue Mar 3 07:56:30 1992 Eric Youngdale (youngdale at v6550c.nrl.navy.mil)
+
+ * vms.h (L__main): Remove #include <stdio.h>
+
+ * make-gcc.com: Call make-l2.com.
+
+Tue Mar 3 05:37:08 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * stor-layout.c (layout_type): Handle OFFSET_TYPE.
+ * cp-tree.c (build_member_type): Deleted.
+ * cp-typeck.c, cp-decl.c, cp-init.c: All callers of
+ `build_member_type' now call `build_offset_type'.
+ * cp-typeck.c (convert_arguments): An argument that's an OFFSET_REF
+ must be resolved by `resolve_offset_ref'. The OFFSET_REF case in
+ expand_expr does not do the right thing for G++ yet.
+
+ * cp-decl.c (grokdeclarator): Take CONSTP and VOLATILEP into account
+ when building METHOD_TYPEs.
+ (start_function): Ditto.
+
+ * cp-method.c (build_decl_overload): Change interface to take DNAME
+ instead of NAME. Also, special-case handling of the default
+ operator new and operator delete for the std. signatures.
+ * cp-*.c: All callers changed.
+
+ * cp-class.c (build_vtable_entry): Rewrite built-in limit check to
+ work on platforms where SIZETYPE is unsigned.
+
+Mon Mar 2 08:49:16 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.c (m88k_debugger_offset): Delete warning.
+
+ * m88k.h (OVERRIDE_OPTIONS): Set `m88k_cpu' based on `target_flags'.
+
+ * m88k.md (cmpsi insn): Delete alternative that complements the
+ compare string for a swapped compare (it's wrong and unnecessary).
+ (cpu attribute): Define.
+
+ From Jyrki Kuoppala:
+ * pc532.h, pc532-mach.h, pc532-min.h, xm-ps532-min.h: New files.
+ * configure (ns32k-pc532-mach*, ns32k-pc532-minix*): New alternatives.
+
+ * dbxout.c (dbxout_type): Don't invoke dbxout_type_methods if
+ there are none.
+
+ * vax.c (print_operand_address): Allow REG+TERM.
+
+ * c-typeck.c (process_init_constructor): Reuse space for error
+ message strings.
+
+Mon Mar 2 02:54:48 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * seq386gas.h: New file, for Sequent using 386 & GAS.
+
+ * xm-i386sco.h: New file.
+
+ * optabs.c (ldexp): New function. Used if host ldexp is broken.
+
+ * configure (i386-sequent-bsd*): Use seq386gas.h if --gas.
+ (i386-*-sco*): The host file is now xm-i386sco.h.
+
+ * i386.md (SImode and HImode logical compare): If we are only
+ testing one byte of a mem, use a byte test opcode.
+ (bit test patterns): Likewise when emitting test opcodes.
+
+Sun Mar 1 14:47:31 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * longlong.h (_IBMR2 udiv_qrnnd): Switch off due to overflow problems.
+
+Sun Mar 1 11:19:55 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (force_to_mode): New function.
+ (make_field_assignment): Rework code that handles fixed-position
+ fields to make it both much more general and much simpler.
+
+ * m68k.md: Add missing insns for using byte operations with
+ STRICT_LOW_PART; add was missing commutative equivalent and
+ most operations other than add and subtract were missing.
+
+ * varasm.c (assemble_start_function): Add missing arg to call to
+ dbxout_begin_function.
+
+ * fold-const.c (const_binop): Make minor source change to work
+ around bug in IBM RT PC compiler.
+
+Sun Mar 1 05:01:34 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): When wrapping NEWRHS in a
+ SAVE_EXPR, call `break_out_cleanups' first.
+
+Sat Feb 29 23:19:20 1992 Jim Wilson (wilson@cygnus.com)
+
+ * reload.c (find_reloads): Reset preferred_class to NO_REGS after
+ substituting a reg_equiv_address for a pseudo reg.
+
+ * unroll.c (precondition_loop_p): Fix misplaced paren when checking
+ for MODE_FLOAT rtx.
+
+Sat Feb 29 13:59:54 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): To complete 24 Feb change,
+ COND_EXPRs must evaluate LHS in conditional slot if LHS has side
+ effects. Otherwise the SAVE_EXPRs in lhs will only be evaluated
+ once, even though they are referenced on both branches of the
+ conditional.
+
+Sat Feb 29 13:32:35 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * README.X11: Add warning to not use gas when compiling PIC code.
+
+ * fixincludes: Allow TAB as well as SPC before symbols to change.
+ Don't change "sun" if it's part of a multiword name that contains
+ underscores.
+ Make intermediate dir, if needed, when doing special-case fixes.
+ Use previously fixed file, if it exists, as source for all special
+ fixes. Do less copying when making special fixes.
+ Ignore errors when chmod'ing a file that might not exist.
+ * fixinc.svr4: Preserve whitespace around "#" when fixing #else and
+ #endif.
+ Allow TAB as well as SPC before symbols to change.
+ Combine "sun" cases as in fixincludes.
+
+Sat Feb 29 11:10:55 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (movstrsi): Print opcode as "movsl" so that seq386.h can
+ change it into smovl.
+
+Sat Feb 29 09:15:51 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (expand_function_end): Allocate rtl that points to
+ trampoline permanently.
+
+ * reload1.c (gen_input_reload): If one operand of a PLUS is a MEM,
+ move it into a reg and add the other (makes code agree with comments).
+
+ * explow.c (eliminate_constant_term): Rework so it does not directly
+ add integer values; call simplify_binary_operation instead.
+ Second arg is now pointer to rtx, not int.
+ Assume constant is always second operand of PLUS.
+ (memory_address): Pass rtx pointer to eliminate_constant_term.
+ * halfpic.c (half_pic_address_p): Likewise.
+ * mips.c (simple_memory_operand, mips_address_cost): Likewise.
+ (mips_debugger_offset): Likewise.
+ * expr.c (expand_expr, case PLUS_EXPR): Likewise.
+ Don't add INTVALs; use simplify_binary_operation instead.
+ Remove obsolete OLD_INDEXING code.
+ Put a MULT in the first operand of the PLUS.
+
+ * combine.c (combinable_i3pat): Don't combine if I3DEST is a hard
+ reg in a non-valid mode.
+
+Sat Feb 29 09:14:19 1992 Eric Youngdale (youngdale@v6550c.nrl.navy.mil)
+
+ * vms.h (ASM_OUTPUT_COMMON): Use SIZE instead of ROUNDED bytes.
+ (DO_GLOBAL_CTORS_BODY): Do not call fflush(stdout).
+
+ * gcc.texi: Update GLOBAL[DEF,REF,VALUE] documentation.
+
+ * make-l2.com: Remove call to test_gcc2.
+
+Sat Feb 29 02:52:59 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Rename envvars to CPLUS_INCLUDE_PATH and
+ OBJCPLUS_INCLUDE_PATH.
+
+ * m68k.h (TRANSFER_FROM_TRAMPOLINE): Use `move', not `mov'.
+
+Fri Feb 28 19:39:09 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes: Don't change symbols that already start with `_'
+ into `__symbol__'. Merge all of the sun* substitutions so they
+ don't fight each other.
+ Comment out junk after #elses and #endifs, to prevent warnings
+ when -pedantic is given.
+
+Fri Feb 28 13:42:05 1992 Jim Wilson (wilson@cygnus.com)
+
+ * sched.c (schedule_insns): Don't update value of reg_live_length
+ when it is negative, because negative values are special. Earlier
+ fix Dec 17 disabled the fprintf call, but not the assignment.
+
+ * unroll.c (copy_loop_body): After incrementing the base reg for a
+ split DEST_ADDR giv, must subtract the const_adjust from the base
+ reg to get its true current value.
+
+ * loop.c (maybe_eliminate_biv_1): When handling COMPARE, verify
+ that mult_val is positive, which makes the code match the comment,
+ and surrounding code.
+
+ * sparc.c (legitimize_pic_address): Always test reload_completed
+ in addition to reload_in_progress.
+
+ * sched.c (schedule_block): Don't reorder any USE insns at the end
+ of a function. Exclude them all from scheduling.
+
+ * c-typeck.c (build_array_ref): Check for when `ar' is an
+ error_mark_node and don't emit a second error message for that node.
+
+ * Makefile.in: Correct misc typos in comments or spacing.
+ (mostlyclean): Update names of files to delete.
+
+ * Makefile.in (install-man): Also install cccp man page.
+ (uninstall): Also delete cccp man page. Don't delete protoize and
+ unprotoize man pages twice.
+
+ * Makefile.in (libgcc2.a): Delete unnecessary -fstrength-reduce -O
+ flags on gcc command lines, superseded by LIBGCC2_CFLAGS.
+
+ * Makefile.in (config.status): Verify that file does not exist
+ before printing an error and failing. Prevents problem with Sun's
+ KEEP_STATE feature.
+
+Fri Feb 28 05:15:58 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * stmt.c (expand_computed_goto): Call emit_queue.
+
+ * function.c (assign_parms): Don't generate convert whose operand
+ is register that is not valid in its mode.
+
+ * reload.c (find_reloads_toplev): Don't do anything with paradoxical
+ SUBREGs if BYTE_LOADS_ZERO_EXTEND.
+
+Thu Feb 27 09:59:09 1992 Jeffrey A Law (law at b115.super.org)
+
+ * toplev.c (main): Enable caller-saves for all machines at
+ optimization levels of -O2 or higher.
+ * mips.h (OPTIMIZATION_OPTIONS): toplev.c will turn on
+ caller-saves at -O2 now. Do not do it here.
+ * sparc.h (OPTIMIZATION_OPTIONS): Likewise
+
+Thu Feb 27 06:47:31 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cp-call.c: Move some extern declarations to file level.
+
+ * emit-rtl.c (init_emit_once): Cast VOIDmode to int in array index.
+
+ * reorg.c (mark_target_live_regs): Don't make recursive call if
+ function being compiled has infinite loop.
+
+ * cse.c (fold_rtx, case 'o'): New case to support folding LO_SUM.
+
+ * global-alloc.c (global_alloc): When calling reload, pass the
+ result of get_insns instead of basic_block_head[0].
+
+ * c-typeck.c (process_init_constructor): Don't check array index
+ against limits if array bounds weren't specified.
+
+ * gcc.c (link_command_spec): Put back -s.
+
+ * gcc.c (find_a_file): Add missing paren in init of file_suffix.
+
+ * i386sun.h (LIB_SPEC): Insert missing blank.
+
+ * sun386.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Add #undef.
+
+ * sparc.h (LINK_SPEC): Correct comment.
+
+ * sun3.h, i386sun.h (LINK_SPEC): Don't force -Bstatic if -g.
+
+ * mips-news.h (ASM_SPEC): Add missing "}".
+
+ * Makefile.in (install-native): Don't include install-proto.
+ (.y.c): Suppress default rule for using Yacc.
+
+ * combine.c (apply_distributive_law, case SUBREG): Check that word
+ numbers are the same.
+ Don't change a single-word operation into a multi-word operation.
+ Put all checks on SUBREGs in one place.
+ (gen_lowpart_for_combine): Use correct word number when making
+ explicit SUBREG.
+
+ * README.SCO: Obsolete file deleted.
+
+Wed Feb 26 21:23:02 1992 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.md (DImode sethi): Correctly handle CONST_DOUBLE, was
+ wrong endian.
+ (DImode lo_sum): Don't output CONST_DOUBLES as 64 bit constants,
+ just output the low 32 bits.
+
+ * unroll.c (find_splittable_givs): For combined address givs, save
+ the increment amount in add_val.
+ (copy_loop_body): For combined address givs, increment by the
+ amount calculated by find_splittable_givs, not by the amount that
+ the giv it was combined with gets incremented by.
+
+ * expr.c (clear_pending_stack_adjust): Check flag_no_inline, not
+ optimize, to determine whether functions declared inline will be
+ inlined.
+
+ * dbxout.c: Delete all #ifndef DBX_DEBUGGING_INFO stubs. None of
+ them are needed.
+
+ * hp800.c, hp800.h: Fix typos in comments.
+
+Wed Feb 26 02:39:52 1992 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cp-call.c (build_method_call): If conversion of INSTANCE_PTR
+ yields error_mark_node, return error_mark_node immediately.
+
+Tue Feb 25 23:40:01 1992 Mike Stump (mrs at cygnus.com)
+
+ * tree.c (array_type_nelts): Fix documentation, really nelts-1
+ * cp-tree.c cp-tree.h cp-init.c (expand_vec_init): Fixed
+ multi-dimensional array inits.
+
+Mon Feb 24 00:03:23 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-tree.c (build_cplus_new): Set TREE_SIDE_EFFECTS bit on
+ NEW_EXPR.
+
+ * cp-typeck.c (build_modify_expr): Handle WITH_CLEANUP_EXPRs
+ specially when they appear in expressions (not initializations).
+ Also handle COND_EXPRs on the right-hand-side specially (in case one
+ of the COND_EXPR's branches is a WITH_CLEANUP_EXPR).
+
+Sun Feb 23 15:11:27 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl2.c (finish_anon_union): Make RTL for ANON_UNION_DECL based
+ on MAIN_DECL.
+
+ * cp-decl.c (lookup_tag): Deal with the fact that `clear_anon_tags'
+ may have been run.
+
+ * cp-decl.c (cplus_expand_expr_stmt): Give line number for usage
+ whcih incurs warning message.
+
+Sat Feb 22 20:49:45 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (init_decl_processing,auto_function): New approach to
+ defining the default functions `operator new' and `operator delete'.
+ * cp-init.c (init_init_processing): Rest of changes here.
+ * libgcc2.c (_builtin_{new,delete,New}): Gone.
+ * libgcc2.c (_new_handler): New name for section that defines the
+ default new handler.
+
+Sat Feb 22 02:09:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.0 released.
+
+ * gcc.c (do_spec_1): Handle SPACE_AFTER_L_OPTION.
+ * hp320.h (SPACE_AFTER_L_OPTION): Defined.
+ Note: for 2.1, try making a space there on all systems.
+
+ * i386mach.h (perform_*): New macros, copied from i386rose.h.
+
+ * Makefile.in (distclean): New target.
+ (realclean): Avoid duplication with self or with distclean.
+ (gcc.xtar.Z): Depend on gcc.xtar.
+ (gcc.xtar): Fixes in copying files.
+
+ * expr.c (do_store_flag): Don't correct CODE before where it is set.
+
+ * cp-parse.y (stmt): Pass pushcase_range all the args it wants.
+
+Fri Feb 21 18:14:52 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (distribute_notes): Correctly handle the case of a
+ REG_DEAD note for a multi-word hard register when not all of
+ the words are used.
+
+Fri Feb 21 16:47:32 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Change Meissner version # to 12.
+ (half_pic support): Move the halfpic support to halfpic.h which is
+ included in the decrose case, and nop the support in other MIPS
+ platforms.
+ (OPTIMIZATION_OPTIONS): Move setting caller-saves to -O2.
+ (OBJECT_FORMAT_COFF, EXTENDED_COFF): Define unless OSF/rose.
+ (INITIAL_FRAME_POINTER_OFFSET): Always recalculate the frame size,
+ don't rely on cached values.
+
+ * mips.c (half_pic support): Move the halfpic support to halfpic.c,
+ which is only compiled for OSF/rose.
+ (expand_block_move): Use copy_addr_to_reg instead of copy_to_reg in
+ case either the source or destination is an integer constant
+ converted to an appropriate pointer type.
+ (mips_debugger_offset): Use a local variable to hold function
+ result.
+
+ * decrose.h (toplevel): Include halfpic.h for halfpic support.
+ (PTRDIFF_TYPE): Change to 'int' to match current include files.
+ (WCHAR_TYPE): Change to 'unsigned int' to match include files.
+ (INIT_SECTION_ASM_OP): Delete, since the OSF/rose assembler doesn't
+ support a true initialization section.
+
+ * encrose.h (PTRDIFF_TYPE): Change to 'int' to match current include
+ files.
+ (WCHAR_TYPE): Change to 'unsigned int' to match include files.
+
+ * t-decrose (EXTRA_OBJS): Define as halfpic.o to provide halfpic
+ support.
+ (CONFIG2_H): Treat halfpic.h as another config file.
+ (halfpic.o): Add dependencies.
+
+ * halfpic.h (new file): Common include file for systems needing the
+ OSF/rose half-pic shared library support.
+
+ * halfpic.c (new file): Common support file for systems needing the
+ OSF/rose half-pic shared library support. Currently these are stub
+ functions.
+
+Fri Feb 21 16:07:02 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-parse.y (get_current_declspecs): New function
+ (needed for naming sections).
+
+Fri Feb 21 01:34:08 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dwarfout.c (location_or_const_value_attribute): Use DECL_RTL again.
+ Seems to be safer for the moment.
+ * function.c (instantiate_decls): Don't instantiate DECL_INCOMING_RTL.
+
+ * dwarfout.c (output_mem_loc_descriptor): Handle CONST like SYMBOL_REF.
+
+ * collect2.c (errno): Declare if not macro.
+
+ * dbxout.c [MIPS]: Include gstab.h, not stab.h.
+
+ * dbxout.c (dbxout_symbol): No longer flush leading _ for C++ syms.
+
+ * cp-parse.y (.hush_warning): Set $$.
+
+ * gstdarg.h: Handle _HIDDEN_VA_LIST as in gvarargs.h.
+
+Thu Feb 20 07:41:29 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * vax.c (reg_or_nxmem_operand): New function.
+ (split_quadword_operands): Add missing return type (void).
+ * vax.md (jlbc/jbc/jlbs/jbs): Handle QImode operands properly.
+
+ * caller-save.c (set_reg_live): Use mode of SUBREG to see how many
+ hard regs are written.
+
+ * combine.c (simplify_shift_const, case IOR, AND, XOR): Perform
+ logic computation in RESULT_MODE, not mode of VAROP.
+
+Wed Feb 19 18:32:05 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * hp320.h (PRINT_OPERAND): Support codes '$' and '&'.
+
+ * reload1.c (reload): Add cast of enum in index.
+
+ * vms.h (CPP_PREDEFINES): Define __GNUC__ as 2.
+
+Wed Feb 19 21:43:36 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (output_mem_loc_descriptor): Deleted useless blank line.
+ (output_mem_loc_descriptor) Added code to handle CONSTs in DECL_RTL
+ expressions.
+ (dwarfout_finish): Added code to put a null string at the end of
+ the terminating .debug_macinfo section.
+
+Tue Feb 18 18:34:13 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * cccp.c (main): Fix typo in comment or spacing.
+ * dbxout.c (dbxout_block): Likewise.
+ * expr.c (convert_move): Likewise.
+ * reload1.c (emit_reload_insn): Likewise.
+ * rtl.h (REG_NOTES): Likewise.
+ * sun4o3.h: Likewise.
+ * ultrix.h (CPP_PREDEFINES): Likewise.
+ * toplev.c (flag_no_common): Likewise.
+ * stmt.c (layout_type): Likewise.
+ * gcc.c (is_linker_dir, lookup_compiler): Likewise.
+
+ * sched.c (schedule_block): Comment code handling USE insns as
+ obsolete.
+
+Tue Feb 18 14:44:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c++: Run gcc in same dir as c++ was in, if exists there.
+ Use `exec' to run it.
+ New var `havefiles'; special message if no input files specified.
+ Pass through any unrecognized options.
+
+ * g++: Now a link to c++.
+
+Tue Feb 18 04:54:52 1992 david d [zoo] zuhn (zoo at lynx.spa.umn.edu)
+
+ * protoize.c (main): added support for -p flag, to specify which
+ gcc is the one to call for -fgen-aux-info support.
+
+Tue Feb 18 07:29:23 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Don't clobber OTHER_INSN's PATTERN if
+ we aren't able to change the insn.
+
+ * romp.md (bit_insv): Add missing CLOBBER when making pattern to
+ match mftb; likewise for the DEFINE_INSN.
+
+Tue Feb 18 01:03:41 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * rs6000.h (bss_section): Set `in_section' correctly.
+
+ * expmed.c (synth_mult): Count second shift for alg_compound.
+ Count extra shift for lea case.
+ * m68k.h (RTX_COSTS): Reduce cost of multiply.
+
+ * function.c (instantiate_decls): Instantiate DECL_INCOMING_RTL.
+
+Mon Feb 17 19:17:50 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * a29k.md (divmodsi4, udivmodsi4): Don't use reg 180 explicitly.
+ Instead use 'q' constraint letter.
+
+Mon Feb 17 16:15:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * global-alloc.c (global_alloc): Always call `reload'.
+
+Mon Feb 17 10:38:38 1992 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * a29k.md (movdi define_split): Use DImode in operand_subword
+ calls, not DFmode.
+
+Mon Feb 17 08:20:33 1992 Michael Tiemann (tiemann at mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_external): Check that DECL is some sort of
+ _DECL before referencing its DECL_RTL.
+
+Sun Feb 16 13:05:36 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-call.c (build_method_call): Add call to `assemble_external' in
+ case this is the first use of FUNCTION.
+ * cp-class.c (build_vfn_ref): Ditto for VTBL.
+ * cp-decl2.c (write_vtable_entries): Ditto for FN.
+ * cp-init.c (build_offset_ref): Ditto for T.
+ * cp-typeck.c (build_function_call_real): Ditto for FUNCTION.
+ * cp-method.c (hack_identifier): Ditto for VALUE. Also remove
+ action that made call to `assemble_external' when !TREE_USED (VALUE).
+
+ * cp-lex.c (do_identifier): Remove call to `assemble_external' when
+ implicitly declaring ID.
+
+ * cp-parse.y (primary): Simplify the rules for calling
+ `assemble_external'.
+
+ * cp-decl.c (finish_function): For destructors, don't call
+ expand_expr_stmt if EXPRSTMT is VOID_ZERO_NODE.
+
+ * cp-typeck.c (default_conversion): Parallel Jan 21 change in
+ c-typeck.c.
+
+Sun Dec 16 23:31:54 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (fundamental_type_code): Deleted gunk for handling
+ OFFSET_TYPEs. (They are *not* fundamental types).
+ (fundamental_type_code): Fixed typo.
+ (location_attribute, const_value_attribute): Changed to take one
+ rtx parameter rather than one tree parameter.
+ (location_or_const_value_attribute): Changed to use DECL_INCOMING_RTL
+ rather than DECL_RTL for formal parameters. Also changed calls to
+ location_attribute and const_value_attribute to provide the rtl
+ parameter.
+ (fund_type_attribute): Changed to accept an actual fundamental type
+ code as a parameter directly. Also changed all calls correspondingly.
+ (type_attribute): Separated tests for ERROR_MARK and for VOID_TYPE
+ and added comments.
+ (output_unspecified_parameters_die): Changed to take one tree param
+ and to generate *both* an AT_name and an AT_type attribute when the
+ input parameter represents of function definition. Also adjusted
+ all calls correspondingly.
+
+Sun Feb 16 00:54:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Add #ifndef around size_t declaration in types.h.
+
+ * varasm.c (assemble_external): Do nothing if arg isn't a decl.
+
+ * Makefile.in (cp-parse.c): Update "expect" msg.
+
+ * next.h (CPP_SPEC): Rename -bsd to -strict-bsd.
+
+ * Makefile.in (mostlyclean): Add ld, mips-tfile, mips-tdump.
+
+ * protoize.c (directory_specified_p): Don't match files in subdirs.
+
+ * xm-rs6k-m.h: Renamed from xm-rs6000-mach.h.
+ * configure (rs6000-*-mach*): Changed accordingly.
+
+ * collect2.c (handler): No error msg here. Just resend signal.
+ (write_c_file): Arg to write_list... is pointer.
+ (do_wait): Fix typo.
+ (scan_prog_file for non-OSF): Preserve all underscores.
+
+ * Makefile.in (install-collect2): Install gcc in libsubdir.
+
+Sat Feb 15 15:26:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c (decode_reg_name): Empty string is not a reg number.
+
+ * fold-const.c (merge_component_references): NE tests against
+ mismatched constants forces 1, not 0, as value.
+
+ * i386gas.h (ASM_OUTPUT_OPCODE): Convert repz to repe.
+
+ * collect2.c: Get rid of PROTO macro; use non-prototype decls.
+ Don't include gstddef.h (had conflicts). Use gstdarg.h, not stdarg.h.
+ (xcalloc, xmalloc): Add casts.
+ (do_wait): Avoid macros WTERMSIG, WEXITSTATUS missing on some machines.
+
+ * cp-typeck.c (default_conversion): Don't use initial value if BLKmode.
+
+ * objc-actions.c (finish_objc): Fix typos in last change.
+
+ * c-aux-info.c, dbxout.c, cccp.c (errno): Declare, if not a macro.
+
+ * i386.md (QI bit test recognizer): Split into separate patterns
+ for memory and register args. Make a scratch reg for memory.
+
+Fri Feb 14 23:39:58 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (get_identifier): Improve -Wid-clash message.
+
+Fri Feb 14 16:22:48 1992 Michael Collison (collison at osf.org)
+
+ * i386rose.h (CPP_SPEC): Define the macros LANGUAGE_OBJECTIVE_C and
+ LANGUAGE_C_PLUS_PLUS if we are compiling Objective C or C++.
+ (INIT_SECTION_ASM_OP): Define as .init.
+ (CC1PLUS_SPEC): Define it.
+ (LINK_LIBGCC_SPECIAL): Define this to work around linker bug.
+
+Fri Feb 14 00:38:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (protoize.o, unprotoize.o): g++-include is under libdir.
+
+ * Makefile.in (enquire.o): Make the command one long line.
+
+ * gcc.c (do_spec_1): Omit relative prefixes from -L'ing
+ only if RELATIVE_PREFIX_NOT_LINKDIR is defined.
+ * rs6000.h (RELATIVE_PREFIX_NOT_LINKDIR): Defined.
+
+ * varasm.c (assemble_external): Test TREE_EXTERNAL.
+
+ * jump.c (follow_jumps): If can't find chain end, return orig label
+
+ * mot3300.h (PRINT_OPERAND): Always print 16 hex digits for a double.
+
+ * objc-actions.c (build_module_descriptor) [NEXT_OBJC_RUNTIME]: Ret 0.
+ (finish_objc): Value 0 from build_module_descriptor means no ctor.
+ When referencing a class_name symbol, don't output a .globl for it.
+ (finish_objc): Put artificial refs in text section.
+
+ * cccp.c (pedwarn_with_file_and_line): Handle -w, -W.
+
+Fri Feb 14 07:44:08 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (notice_update_cc): sCOND opcodes don't change the flags.
+ Don't record test or compares involving stack-like regs, since
+ final can't omits tests or compares involving such regs correctly.
+
+ * i386.c (seq,sne,beq,bne): These opcodes use the state of
+ cc_status from before the curren insn.
+
+ * reg-stack.c (stack_reg_mentioned_p): Don't make static.
+
+Fri Feb 14 06:27:48 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Disable "if (...) {... x = C;} if (x) ..."
+ optimization; there doesn't seem to be a way to fix it.
+
+Thu Feb 13 18:06:06 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * seq386.h (ASM_OUTPUT_OPCODE): New macro. Change "movs" into
+ "smov" at the start of a string move mnemonic - Sequent as(1)
+ doesn't handle the former.
+
+Thu Feb 13 17:21:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_struct): Use pedwarn for pedantic warning.
+ (grokdeclarator): Likewise.
+ * c-parse.y (component_decl_list2): Likewise.
+
+Thu Feb 13 22:11:36 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (make_extraction): Default modes to byte and register
+ size, as appopriate, when the bitfield insn doesn't exist.
+
+ * a29kunix.h (LINK_SPEC): Pass default option file to gld.
+ (LINK_LIBGCC_SPECIAL): Define to work around gld bug.
+
+ * explow.c (copy_to_suggested_reg): Try getting mode from TARGET.
+
+ * rs6000.h (ASM_FILE_END): New macro.
+ (EXTRA_SECTIONS): New section read_only_private_data.
+ (EXTRA_SECTION_FUNCTIONS): New function read_only_private_data_section.
+ (SELECT_RTX_SECTION): Always make non-toc data private, read-only.
+ (SELECT_SECTION): Put read-only data in appropriate sections.
+
+ * jump.c (jump_optimize): Place branch in correct place when
+ optimizing "if (...) {... x = C;} if (x) ...".
+ (redirect_jump): Ensure jump's UID is within range of jump chain.
+
+ * a29k.c (output_prologue): Correctly set LR1 when more than 64
+ registers are needed.
+
+Wed Feb 12 22:22:46 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cccp.com: Define link as a local symbol to avoid
+ possible conflict with a user defined global symbol.
+
+ * make-cc1.com: Likewise.
+
+Thu Feb 13 11:05:07 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.c (make_temp_file): Store created filename into a static
+ file-scope variable, not an auto.
+ (mips_asm_file_end): Use the appropriate filename in printing
+ errors.
+
+Thu Feb 13 01:15:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (skip_if_group): Skip comments after the #.
+
+ * cccp.c (macarg): Don't assume stringify will compress spaces.
+ (macroexpand): In stringify, compress space only outside tokens.
+
+ * cexp.y (exp1): Use pedwarn for comma in #if.
+
+ * cp-decl.c (push_binding_level, pop_binding_level):
+ Change `inline' to `__inline'.
+
+ * combine.c (make_compound_operation): Undo previous change.
+
+Wed Feb 12 18:47:47 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * function.c (instantiate_virtual_regs_1, case IF_THEN_ELSE):
+ Don't special case; allow all operands to be processed. The last
+ two operands are nontrivial on the Vax.
+
+Wed Feb 12 18:58:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): Only absolute prefixes turn into -L's.
+ (link_command_spec): Handle LINK_LIBGCC_SPECIAL.
+
+Wed Feb 12 18:38:29 1992 Chris Smith (csmith at convex.com)
+
+ * convex.h (DEFAULT_CALLER_SAVES): define again, bug is fixed.
+ * convex.h (BRANCH_COST): Define as 0, so we won't use complex
+ alternatives to branches (whose expansions contain branches
+ on convex).
+
+Wed Feb 12 17:23:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Accept just `hppa' for machine.
+
+ * Makefile.in (Install-collect2): New target.
+
+Wed Feb 12 13:55:24 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (relax_delay_slots): Don't convert jump to return here.
+
+ * configure (a29k-ultra-*): Deleted.
+ (a29k-*-bsd*): Merged with a29k-ultra-*.
+ (romp-*-mach*): Fixed typo in xmake_file name.
+ * xm-a29kunix.h: Renamed from xm-a29k-ult.h.
+ * x-a29kunix: New file.
+
+ * reload.c (find_reloads): Don't use class from preference if it
+ is a single-register class.
+
+Wed Feb 12 13:03:16 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.h (FUNCTION_BOUNDARY, ASM_OUTPUT_ALIGN): Pack code tightly
+ when compiling crtstuff.c (flag_inhibit_size_directive).
+
+Wed Feb 12 10:34:09 1992 Michael Meissner (meissner at osf.org)
+
+ * decrose.h (*_SPEC): Compress some whitespace in the specs. Also,
+ simpify which LANGUAGE_xxx names are defined, to be the ones uses by
+ the system(s).
+ * decstatn.h (*_SPEC): Likewise.
+ * iris.h (*_SPEC): Likewise.
+ * mips.h (*_SPEC): Likewise.
+ * mips-bsd.h (*_SPEC): Likewise.
+ * mips-news.h (*_SPEC): Likewise.
+ * mips-sysv.h (*_SPEC): Likewise.
+
+Wed Feb 12 10:34:09 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * caller-save.c (insert_save_restore): Properly check for insns that
+ reference CC0.
+
+Wed Feb 12 03:17:00 1992 Chris Smith (csmith at convex.com)
+
+ * convex.h (DEFAULT_CALLER_SAVES): don't define, to sidestep a bug.
+ * convex.md (ffssi2): Comment out.
+
+Wed Feb 12 00:08:42 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-libgcc2.com: Do not save .s file.
+
+ * vms.h: Wrap #include <stdio.h> in #ifdef L__main/endif
+
+Tue Feb 11 21:58:42 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * libgcc2.c (DO_GLOBAL_DTORS_BODY): New macro.
+
+ * make-l2.com: New file to build libgcc2 on VMS.
+
+ * vms.h (DO_GLOBAL_CTORS_BODY): Replacement definition.
+
+ * vms.h (DO_GLOBAL_DTORS_BODY): Likewise.
+
+ * make-cccp.com: Define bison and rename as local symbols to avoid
+ possible conflict with user defined global symbols.
+
+Tue Feb 11 22:17:32 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * sched.c (attach_deaths): Don't treat PIC offset table register
+ specially; flow.c doesn't.
+
+ * combine.c (make_compound_operation, case AND): We can have
+ a (and (subreg (lshiftrt ..) ..) ..); handle same as without SUBREG.
+
+ * Makefile.in (HOST_CLIB, HOST_ALLOCA, HOST_MALLOC, HOST_OBSTACK): New
+ variables to override.
+ (USE_HOST_*, HOST_LIBDEPS): Use HOST_PREFIX and new variables.
+ (HOST_LIBS): Use HOST_CLIB.
+
+Tue Feb 11 21:32:07 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common-headers): Copy byteorder.h to
+ compilation dir.
+
+ * config.sub: Allow unicos as operating system.
+
+ * m88kv4.h (INIT_SECTION_ASM_OP): Add #progbits.
+
+ * vax.h (DYNAMIC_CHAIN_ADDRESS): New macro.
+
+ * c++: Propagate quoted args properly.
+
+Tue Feb 11 16:35:01 1992 Jim Wilson (wilson at cygnus.com)
+
+ * fixincludes: Define TERM to `unknown', to ensure that it is
+ valid. Otherwise, ex may fail.
+ * fixinc.svr4: Likewise.
+
+Tue Feb 11 18:04:32 1992 Michael Meissner (meissner at osf.org)
+
+ * decrose.h (CPP_SPEC): Define the macros LANGUAGE_OBJECTIVE_C and
+ LANGUAGE_C_PLUS_PLUS if we are compiling Objective C or C++.
+ Silicon Graphics in particular uses LANGUAGE_C_PLUS_PLUS.
+ * decstatn.h (CPP_SPEC): Likewise.
+ * iris.h (CPP_SPEC): Likewise.
+ * mips-bsd.h (CPP_SPEC): Likewise.
+ * mips-news.h (CPP_SPEC): Likewise.
+ * mips-sysv.h (CPP_SPEC): Likewise.
+
+ * decstatn.h (CPP_PREDEFINES): Eliminate __<name> versions, since
+ gcc will do these automatically. Eliminate LANGUAGE_C, since it is
+ handled in CPP_SPEC.
+
+Tue Feb 11 15:38:27 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * flow.c (find_basic_blocks): Don't delete labels used in non-jumps.
+
+ * vms.h (DO_GLOBAL_CTORS_BODY): Modify the return address
+ only the first time __main is called.
+
+ * fixinc.svr4: Change headers to test __STRICT_ANSI__ instead of
+ testing __STDC__ != 0.
+
+ * fixinc.svr4 (mman.h): Fix backward __STDC__ conditional.
+ Don't add declarations of munmap and mprotect.
+
+ * varasm.c (output_constant): Allow empty constructor for any type.
+
+ * dwarfout.c (ASM_OUTPUT_DWARF_DATA8): Just one definition;
+ test WORDS_BIG_ENDIAN "at run time".
+
+Tue Feb 11 09:00:01 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Don't substitute in MATCH_DUPs if we
+ are not generating replacements.
+
+Tue Feb 11 08:45:14 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kv4.h ({CTORS,DTORS}_SECTION_ASM_OP): Fix typo.
+
+Mon Feb 10 22:34:47 1992 Chris Smith (csmith at convex.com)
+
+ * convex.h(HARD_REGNO_NREGS): define correctly for 64-bit regs
+
+Mon Feb 10 21:50:23 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.h (MIPS_VERSION): Change Meissner version # to 11.
+ (CPP_SPEC): Define the macros LANGUAGE_OBJECTIVE_C and
+ LANGUAGE_C_PLUS_PLUS if we are compiling Objective C or C++.
+ Silicon Graphics in particular uses LANGUAGE_C_PLUS_PLUS.
+ (FP_DBX_FIRST): Change the test so that stabs in ECOFF uses the
+ value 38, in addition to stabs in GAS.
+
+ * mips.md (all function units): Make the function units simpler, and
+ not depend on the cpu type, to work around a memory hungry
+ genattrtab, which attempts to grow the data segment to than 32
+ megabytes.
+
+Mon Feb 10 16:34:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * convex.h (REAL_VALUE_TRUNCATE): Obsolete definition deleted.
+
+ * config.sub (convex-*): These are BSD, not sysv.
+
+ * dbxout.c (have_used_extensions): New var.
+ (dbxout_type, dbxout_type_fields, dbxout_symbol):
+ Set have_used_extensions when use an extension.
+ (dbxout_symbol): Don't use `Tt' extension unless extensions
+ have been used.
+
+Mon Feb 10 12:28:59 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * xm-a29k-ult.h: Fix typo in placement of copyright notice.
+
+Mon Feb 10 05:36:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type): Don't use GDB extensions if they are empty.
+
+Mon Feb 10 00:10:20 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-class.c (finish_struct): Use DECL_CHAIN, not TREE_CHAIN to walk
+ through the list of methods identified by a visibility declaration.
+
+ * cp-cvt.c (convert_pointer_to): No longer need to abort if BINFO is
+ not a TREE_VEC or AGGR_TYPE node.
+
+ * cp-parse.y (stmt): Improve error handling for try/except.
+
+ * cp-class.c (add_method): If we create RTL for a copy of METHOD,
+ copy the RTL to METHOD's DECL_RTL slot.
+
+ * cp-method.c (dump_type): Print `const' and/or `volatile' for
+ VOID_TYPE and REAL_TYPEs, too.
+
+Sun Feb 9 21:07:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_integer): Pass third arg in recursive calls.
+ Act appropriately if word-by-word loop doesn't finish.
+
+ * Makefile.in (bootstrap*): Don't override value of ALLOCA.
+
+ * dbxout.c (dbxout_symbol, dbxout_parms): Do leaf function remap
+ only if LEAF_REG_REMAP and only in leaf functions.
+
+Sun Feb 9 16:46:27 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-init.c (maybe_adjust_addr_for_delete): Build final COND_EXPR
+ with TREE_TYPE (addr).
+
+Sun Feb 9 14:20:49 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (rs6000_{bss,private_data,read_only}_section_name):
+ Add declarations.
+ (rs6000_text_section_asm_op): Deleted.
+ (ASM_FILE_START): Initialize section names and enter bss section once.
+ (EXTRA_SECTIONS): Add `private_data' and `bss';
+ delete `global_variable'..
+ (read_only_data_section): Don't form name here.
+ (global_variable_section): Deleted.
+ (private_data_section, bss_section): New functions.
+ (ASM_DECLARE_FUNCTION_NAME): Don't write function name with [PR].
+ (ASM_OUTPUT_POLL_PROLOGUE): No longer needed.
+ (SELECT_{RTX_,}SECTION): Just calls data_section or
+ private_data_section.
+ (ASM_OUTPUT_LOCAL): Put in bss section.
+ (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Now a constant.
+ * rs6000.c (rs6000_text_section_asm_op): Deleted.
+ (rs6000_{bss,private_data,read_only}_section_name): Add definitions.
+ (rs6000_gen_section_name): New function.
+
+Sun Feb 9 08:29:21 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.h (REGNO_REG_CLASS): Use a lookup table: AIX can't handle
+ complex tertiary expressions.
+ (GO_IF_LEGITIMATE_ADDRESS): Simplify slightly for the AIX
+ compiler.
+
+ * i386.c (regclass_map): New variable. Lookup array for
+ REGNO_REG_CLASS.
+
+Sat Feb 8 01:20:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cp-parse.y (yyprint): Test __GNUC__, not __GNU__.
+ Use __inline, like everywhere else.
+
+ * a29k.h, romp.h (OVERRIDE_OPTIONS): Deleted.
+ (OPTIMIZATION_OPTIONS): Defined, instead.
+ * rs6000.h (OPTIMIZATION_OPTIONS): New macro.
+ (OVERRIDE_OPTIONS): Don't change optimization.
+
+ * final.c (leaf_renumber_regs_insn): No longer static.
+ * dbxout.c (dbxout_symbol, dbxout_parms): Call that.
+
+ * c-decl.c (lookup_name): Do nothing special if type is error mark.
+ (grokdeclarator): Ignore putative type name whose type is error mark.
+ * c-parse.y (primary): If var type is error mark, return error mark.
+
+ * c-typeck.c (build_array_ref): Return early if arg is error mark.
+
+ * Makefile.in (test-protoize): Rule deleted.
+
+ * stmt.c (emit_case_nodes): Handle just-left-subtree case
+ like just-right-subtree--delete mysterious code that tests cost_table.
+
+ * varasm.c (decode_reg_name): Accept decimal number as reg name.
+
+ * c-decl.c (finish_decl): If pop_obstacks goes to perm obstack,
+ call permanent_allocation.
+
+ * gcc.c (link_command_spec): Use -lgcc, not libgcc.a.
+
+Fri Feb 7 16:56:17 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * rs6000.h (DOLLARS_IN_IDENTIFIERS): Define to zero, because the
+ assembler does not accept dollar signs.
+
+Fri Feb 7 15:36:40 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (mostlyclean): Fix name of tmp-proto.1.
+
+ * configure: Delete excess space in assignment to srcdir.
+
+ * cp-decl2.c (DOLLARS_IN_IDENTIFIERS): Default now 1, as in C.
+
+ * i386gas.h (ASM_OUTPUT_LOOP_ALIGN): New macro.
+ (ASM_OUTPUT_ALIGN_CODE): Use 16-byte boundary on 486.
+
+ * m68k.h (TRANSFER_FROM_TRAMPOLINE): Use operands for the memrefs
+ to avoid dependence on assembler syntax.
+
+Fri Feb 7 10:26:32 1992 Michael Meissner (meissner at osf.org)
+
+ * Makefile.in (EXTRA_OBJS): New variable for extra object files
+ needed when linking cc1, cc1plus, and cc1objc.
+
+Fri Feb 7 07:34:03 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (set_label_offsets, reload_as_needed): Recompute
+ num_not_at_initial_offset when we pick up offsets from offsets_at.
+
+ * unroll.c (unroll_loop): Copy initial and final values to avoid
+ sharing.
+
+ * cse.c (simplify_relational_operation): Complete last change by
+ correctly handling <= and >=.
+
+Thu Feb 6 23:57:02 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Invert sense of warning about
+ initialized extern vars, since in C++, const has funny semantics.
+
+Thu Feb 6 15:12:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (simplify_relational_operation): Test properly for floating
+ equality; don't deduce this from < and >.
+
+ * xm-mips.h (alloca): Don't define or declare if MIPS_OVERRIDE_ALLOCA.
+ * xm-irix4.h (MIPS_OVERRIDE_ALLOCA): Defined.
+
+ * m68k.h (TRANSFER_FROM_TRAMPOLINE): Use explicit reg var
+ to avoid dependence on register name syntax.
+
+ * mot3300.h (PUT_SDB_START_DIM, PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM):
+ New macros.
+ (PUT_SDB_DIM): Deleted.
+ (PRINT_OPERAND): Handle %$ and %&.
+ (ASM_OUTPUT_OPCODE): Handle f%$move and f%&move.
+
+ * gstdarg.h: If not __GNUC__, use system's stdarg.h.
+
+Thu Feb 6 22:36:36 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * vms.h (DEFAULT_GDB_EXTENSIONS): Define as 0.
+
+Thu Feb 6 13:32:37 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 10.
+ (flag_half_pic, mips_branch_likely): New global variables.
+ (call_memory_operand): New function declaration.
+ (half_pic_encode_section_info): Likewise.
+ (mips_constant_address_p): Likewise.
+ (mips_debugger_offset): Likewise.
+ (CC1_SPEC): Make OSF/1 -pic-xxx switches to -mhalf-pic, which is
+ currently undergoing development.
+ (DEBUGGER_AUTO_OFFSET): Emit correct information if frame pointer is
+ omitted.
+ (DEBUGGER_ARG_OFFSET): Likewise.
+ (TARGET_SWITCHES): Add -mabicalls and -mhalf-pic switches.
+ (PIC_OFFSET_TABLE_REGNUM): Define as the GP register ($28).
+ (EXTRA_CONSTRAINT): Add 'S' constraint for half-pic references.
+ (CONSTANT_ADDRESS_P): Call mips_constant_address_p.
+ (ENCODE_SECTION_INFO): Reorder test to test optimize first, and to
+ call half_pic_encode_section_info if half pic.
+ (PREDICATE_CODES): Add call_memory_operand.
+
+ * mips.c (flag_half_pic): New global variable to indicate to produce
+ half-pic output for OSF/rose.
+ (mips_branch_likely): New global variable to indicate the branch
+ should use the branch likely form of the instruction.
+ (mips_sw_reg_names): Use $fp instead of fp, since regdef.h no longer
+ defines fp.
+ (call_memory_operand): New function to return TRUE if the argument
+ is a valid MEM for a call instruction.
+ (mips_move_1word): Emit comment in la of half-pic addresses as a
+ temporary flag to put the right code down.
+ (mips_constant_address): New function to determine if something is a
+ constant address or not. Add stub code for -mhalf-pic.
+ (override_options): Set flag_half_pic if -mhalf-pic.
+ (override_options): Mark %? as valid for print_operand.
+ (mips_debugger_offset): New function to correct the offset for
+ variables and arguments if the frame pointer has been omitted.
+ (print_operand): %? now emits a 'l' if mips_branch_likeley is set.
+ (mips_asm_file_start, function_prologue): If -mabicalls, emit the
+ pseudo ops that the Pyramid System V.4 port seems to want.
+ (compute_frame_size): Reserve space for saving GP if -mabicalls.
+ (half_pic_encode_section_info): Stub function for encoding whether
+ or not to generate a half pic reference.
+
+ * mips.md (type attribute): Add pic attribute.
+ (cpu attribute): New attribute to get the CPU type.
+ (branch_likely attribute): New attribute to say whether or not we
+ can use branch likely instructions.
+ (define_delay): Note that we can annull false branches if -mips2.
+ (memory function unit): Add pic in addition to load.
+ (various function units): Use the cpu attribute.
+ (branch patterns): Support branch likely instructions if -mips2.
+ (call, call_internal): Use call_memory_operand instead of
+ memory_operand. If -mhalf-pic put function address in a register.
+ (call_value, call_value_internal): Likewise.
+
+ * decrose.h (INIT_SECTION_ASM_OP): Define as .init.
+
+Thu Feb 6 10:07:17 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.c (preserve_registers): Change to walk the epilogue delay
+ insns in the forward rather than reverse order (for reorg.c change).
+
+Thu Feb 6 02:54:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (simplify_binary_operation, case PLUS): Don't make
+ a (const (plus X Y)) with X a CONST_INT.
+
+ * fixincludes: Simplify egrep command.
+
+Thu Feb 6 01:11:28 1992 Mark Eichin (eichin at cygnus.com)
+
+ * cp-lex.c (process_next_inline): if we get a "parse error at end of
+ saved function text", set yychar to something that
+ restore_pending_input will digest (if it thinks input is still
+ pending, it will abort, but we've already reported the problem to
+ the user.)
+
+Wed Feb 5 18:42:56 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (fill_simple_delay_slots): When filling delay slots by
+ searching backward, put each new insn we find at the head of the
+ delay list instead of at the tail.
+
+ * cse.c (fold_rtx): When associating operations, avoid infinite
+ recursion if the new expression contains our operand.
+
+Wed Feb 5 21:18:06 1992 Mark Eichin (eichin at cygnus.com)
+
+ * cp-decl.c (globalize_nested_type): If the type isn't found at all,
+ this is an anonymous forward reference, so permit it.
+ Abort if type is already globally defined.
+
+Wed Feb 5 18:01:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c, hp800.h, i386.h, m88k.h, mips.h, romp.h, vms.h:
+ (ENCODE_SECTION_INFO): Renamed from ENCODE_SEGMENT_INFO.
+
+ * sparc.md (nonlocal_goto): Copy static chain into
+ virtual_stack_vars_rtx, not frame pointer itself.
+ (nonlocal goto return recognizer): Jump to %o0+0.
+
+ * toplev.c (main): Fix test for -Wid-clash.
+
+Wed Feb 5 16:58:15 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (dwarfout_init): Add two words containing the starting
+ and ending address of the .text section for this compilation unit to
+ the special initial entry in the .debug_srcinfo section.
+
+Tue Feb 4 14:51:16 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_symbol): Handle DBX_OUTPUT_CONSTANT_SYMBOL.
+ (dbxout_block): Handle DBX_OUTPUT_CATCH.
+
+ * cccp.c (lookup_import, add_import, do_include):
+ Use bcmp and bcopy to access st_ino and ->inode fields.
+
+ * dbxout.c (dbxout_init): Pass syms to DBX_OUTPUT_STANDARD_TYPES.
+
+ * fold-const.c (operand_equal_p): Check that modes match.
+ (comparison_equiv_p): New function.
+ (fold): Use that when converting ?: to min_expr or max_expr.
+
+ * c-common.c (c_expand_expr_stmt): Test for ERROR_MARK as type.
+
+Tue Feb 4 12:03:26 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * stmt.c (expand_end_case): Don't crash if function called
+ is not an ADDR_EXPR.
+
+Tue Feb 4 14:17:22 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expr.h ({float[sd]i[sd]f,fix[sd]f[sd]i,fixuns[sd]f[sd]i}_libfunc):
+ New declarations.
+ * optabs.c: Define them.
+ (expand_float, expand_fix): Use them instead of making a new
+ SYMBOL_REF each call.
+ (init_optabs): Initialize them.
+
+Tue Feb 4 00:27:35 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (protoize.1, unprotoize.1): Rename temp files < 14 chrs.
+
+ * cccp.c (skip_if_group): Make unknown cmd name a pedantic warning.
+
+Mon Feb 3 18:10:41 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * romp.h (LEGITIMATE_CONSTANT_P, ENCODE_SEGMENT_INFO): Use
+ SYMBOL_REF_FLAG.
+
+ * x-romp-mach: New file.
+ * configure (romp-*-mach*): New alternative.
+
+Mon Feb 3 16:43:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cp-typeck.c (warn_for_assignment): Print arg num in origin 1.
+
+ * sparc.md (nonlocal_goto trap recognizer): Fix opcode spelling.
+
+ * function.c (fix_lexical_addr): Properly search for correct display.
+
+ * romp.h (OVERRIDE_OPTIONS): Don't set flag_omit_frame_pointer.
+
+Mon Feb 3 11:11:58 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * gcc.c (@c++-cpp-output): Delete extraneous "}}}" at the end of the
+ rule.
+
+Mon Feb 3 11:38:19 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (dwarfout_init): Generate an initial 2-word entry in the
+ .debug_srcinfo section containing the addresses of the starts of the
+ .line and .debug_sfnames sections. Generate it after the initial entry
+ for the .line section.
+
+ * dwarfout.c [DWARF_TIMESTAMPS]: Ensure time_t and time declared.
+ (dwarfout_init): Make third word of initial .debug_srcinfo entry be
+ the compilation date/time if DWARF_TIMESTAMPS is defined, or else -1.
+
+ * dwarfout.c (dwarfout_init): Output compilation directory name as
+ the first thing in the .debug_sfnames section.
+
+Mon Feb 3 04:12:51 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * Makefile.in (install-dir): `parent' is a shell variable.
+
+Mon Feb 3 09:43:51 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.h (EXTRA_SECTIONS): Use init and fini sections from svr3.h,
+ but only when using svr3.h.
+
+Sun Feb 2 19:50:29 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.h (ADDRESS_COST): New macro.
+
+Sun Feb 2 17:08:47 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.c (simple_memory_operand): Don't recognize references to
+ variables in .sdata or .sbss, which has the effect of not putting
+ stores into delay slots. This fixes a bug and also doesn't temp the
+ MIPS linker from trying to put 4 instructions into the delay slot
+ when it rewrites the function as a PIC function.
+
+Sun Feb 2 16:58:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Do ON_EXIT last.
+
+ * Makefile.in (install-dir): Create the parent of mandir if nec.
+
+ * real.h (REAL_VALUE_TRUNCATE): sizeof says what cast to float does.
+
+ * dbxout.c (DBX_OUTPUT_MAIN_SOURCE_DIRECTORY): New parameter macro.
+ (DBX_OUTPUT_MAIN_SOURCE_FILENAME, DBX_OUTPUT_SOURCE_FILENAME):
+ (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Likewise.
+ These are used in place of ASM_...
+ * newpbb.h (DBX_OUTPUT_MAIN_SOURCE_FILENAME): Macro renamed.
+ (DBX_OUTPUT_SOURCE_FILENAME): Likewise.
+ * next.h (DBX_OUTPUT_MAIN_SOURCE_DIRECTORY): Macro renamed.
+ (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Likewise.
+
+Sun Feb 2 12:51:54 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-typeck.c (build_component_ref_1): Call `compute_visibility'
+ with a BASETYPE_PATH, not a TREE_LIST.
+
+ * cp-class.c (build_vtable_entry): Apologize if we cannot build a
+ proper vtable because of builtin liminations.
+
+Sun Feb 2 07:30:08 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (combine_reloads): Don't combine two reloads with different
+ secondary reloads; copy secondary reload to combined reload.
+
+ * cse.c (cse_main): PIC_OFFSET_TABLE_REGNUM is not clobbered by calls
+ if -fpic or -fPIC.
+ * reorg.c (mark_target_live_regs): Likewise.
+ * sched.c (attach_deaths): Likewise.
+
+ * flow.c (find_basic_blocks): Don't separate a CALL_INSN from
+ following CLOBBER insns.
+
+ * function.c (use_variable, use_variable_after): Don't interpret
+ reference to internal arg pointer as variable-sized object.
+ (expand_function_start, expand_function_end): Add USE for virtual
+ arg pointer if stupid alloc and it is not the real arg pointer.
+
+ * flow.c (insn_dead_p, mark_set_1, mark_used_regs): Don't treat
+ ARG_POINTER_REGNUM specially if it isn't fixed.
+ * sched.c (attach_deaths): Likewise.
+ * reorg.c (mark_target_live_regs): Likewise; also make set of regs
+ clobbered on call agree with cse and flow.
+
+ * function.c (fix_lexical_addr): Rework to look for AP references
+ using internal_arg_pointer; make some related cleanups.
+ * expr.c (expand_expr, case VAR_DECL, SAVE_EXPR): Treat
+ inline_function_decl just like current_function_decl.
+ * stmt.c (expand_end_bindings): When restoring arg pointer, restore
+ into the virtual form so we will subtract the proper offset, since
+ the saved value includes the offset.
+
+Sat Feb 1 14:41:34 1992 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-pt.c (end_template_decl): For method template, no longer call
+ popclass; it isn't needed any more. If after processing template
+ we're not at the global binding level, throw away any other binding
+ levels, rather than aborting. Also deleted some other unused code.
+
+Sat Feb 1 09:13:47 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * xm-rs6000-mach.h, rs6000-mach.h: New files.
+ * configure (rs6000-*-mach): New option.
+
+Sat Feb 1 00:57:24 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c: Include tree.h
+ (symbolic_operand): New predicate function.
+ (symbolic_reference_mentioned_p): New function.
+ (legitimize_pic_address,emit_pic_move): New functions.
+ (function_prologue): Delete unused variable nregs.
+ If the PIC reg is used, save the old contents and initialize with
+ a pointer to the GOT.
+ (simple_386_epilogue): Count the PIC reg if it is used.
+ (function_epilogue): Delete unused variable "insn". Restore the
+ original contents of the PIC reg if it was used.
+
+ (output_pic_addr_const): New function to handle PIC symbol
+ reference suffixes.
+ (print_operand_address): Use that if flag_pic is true.
+ (print_operand): Likewise. Don't print a prefix in front of any
+ constant if the 'P' code is used.
+
+ (output_387_binary_op): abort if the op is not one we handle.
+
+ (maximum_field_alignment): New variable.
+ (handle_pragma_token): New function. Handle `weak' and `pack'.
+
+ * i386.h (CONDITION_REGISTER_USAGE): New macro. Mark PIC reg as
+ fixed and call used if flag_pic is true.
+ (PIC_OFFSET_TABLE_REGNUM): New macro.
+ (FUNCTION_PROFILER): Output PIC compatible code if flag_pic.
+ (INITIAL_ELIMINATION_OFFSET): Count the PIC reg if it is used.
+
+ (GO_IF_LEGITIMATE_ADDRESS): If flag_pic is true, reject bare
+ label or symbol references, but allow constant pool references.
+ In all cases, don't bother to check for a constant as the first
+ operand of a PLUS.
+ (LEGITIMIZE_ADDRESS): Call legitimize_pic_address for symbolic
+ references if flag_pic is true. In all cases, HImode regs are not
+ valid memory pointers.
+ (LEGITIMATE_PIC_OPERAND): New macro.
+ (SYMBOLIC_CONST): New macro.
+ (ENCODE_SEGMENT_INFO): New macro to notice static variables.
+ (CONST_COSTS): Symbolic constants cost more if flag_pic is true.
+
+ * i386.md (movsi): Use define_expand. Call emit_pic_move for
+ symbolic constants if flag_pic is true.
+ (divmodM4,udivmodM4): Change predicates so that only regs are
+ allowed in operands that can't be a mem. Avoids reload
+ congestion.
+ (indirect_jump): Allow any reg or mem as operand, not just reg 0.
+ (casesi): New insn, only used if flag_pic is true.
+ (call,call_pop,call_value,call_value_pop): Use define_expand to
+ record if this function ever emits a call, which will implicitly
+ use the PIC address register.
+
+ * svr4.h (SELECT_SECTION): Any item whose initial value involves
+ linker relocation must go in the data section if flag_pic is true.
+
+ * i386v4.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output in PIC style. If
+ flag_pic is false, ADDR_DIFF_VECs are not output and this is not
+ used.
+ (JUMP_TABLES_IN_TEXT_SECTION): New macro.
+
+ (WEAK_ASM_OP,DEF_ASM_OP): New macros.
+ (maximum_field_alignment): New variable. Declare here.
+ (PCC_BITFIELD_TYPE_MATTERS): New macro. Value depends on
+ maximum_field_alignment.
+ (BIGGEST_FIELD_ALIGNMENT): New macro. Likewise.
+ (HANDLE_PRAGMA): New macro.
+ (ASM_OUTPUT_ALIGNED_LOCAL): New macro.
+
+Sat Feb 1 00:15:41 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * flow.c (flow_analysis, find_basic_blocks):
+ If have nonlocal labels, calls end basic blocks.
+ Each call can jump to each nonlocal label.
+ Pass extra arg to find_basic_blocks.
+ * function.c (nonlocal_label_rtx_list): New function.
+
+ * dbxout.c (dbxout_init): Vars wd and wd_gotten moved to top level
+ and renamed to cwd and cwd_gotten.
+
+ * c-decl.c (start_function): -Wmissing-prototypes warns if static
+ function was previously used without a prototype.
+
+ * loop.c (find_and_verify_loop): Initialize uid_loop_num[0].
+ (loop_optimize): Give up fast if no loops.
+
+ * stmt.c (expand_end_bindings): Don't adjust fp in nonlocal goto hndlr
+ if there is a nonlocal_goto insn.
+
+ * Makefile.in (cccp.o): Use just libdir in GPLUSPLUS_INCLUDE_DIR.
+
+ * gcc.c (do_spec_1): Supply missing arg in some recursive calls.
+
+Fri Jan 31 21:50:03 1992 Jeffrey A. Law (law at wombat.gnu.ai.mit.edu)
+
+ * m68k.h (OVERRIDE_OPTIONS): -fPIC is only supported on the 68020
+ and later cpus. Give an error if -fPIC is tried on a 68000.
+
+Fri Jan 31 21:39:33 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * flow.c (find_auto_inc): If emitting a move insn in front of the
+ first insn in a block, update basic_block_head.
+
+ * caller-save.c (init_caller_save): Correctly check for case where the
+ save or restore insns aren't recognized.
+
+Fri Jan 31 21:02:35 1992 Mark Eichin (eichin at cygnus.com)
+
+ * cp-decl.c (pushtag): when calling pushdecl, if we're in a
+ class_binding_level just do a pushdecl_class_level. Otherwise
+ pushdecl gets called multiple times on class-nested enums, which
+ short circuits the name list in the global_binding_level.
+
+Fri Jan 31 00:14:20 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_goto): Use nonlocal_goto pattern if it exists.
+ * sparc.md (nonlocal_goto): New pattern.
+ Also nameless pattern for the special trap insn.
+
+ * gcc.c (S_ISDIR): Add default definition.
+
+ * function.c (expand_function_end):
+ Set up arg_pointer_save_area at start of function.
+
+ * c++: Accept -nostdlib, not -nostinc.
+
+ * va-sparc.h: If GCC v1, define __extension__ as nothing.
+ * va-i860.h, va-pyr.h, va-spur.h: Likewise.
+
+ * cp-class.c (finish_struct): Fill in DECL_ALIGN of vtable field.
+
+ * regclass.c (reg_class_record):
+ Don't follow indirect loops in constraints.
+
+ * function.c, expr.h (current_function_internal_arg_pointer): New var.
+ * function.c (assign_parms): Set it.
+ (push_function_context, pop_function_context): Save and restore it.
+ * expr.c (expand_builtin): Use it.
+ * function.h (struct function): New slot to save it in.
+
+ * cse.c (cse_main): Calls do clobber arg pointer if not fixed.
+
+ * hp320.h (HAVE_ATEXIT): New definition.
+
+ * Makefile.in (ALL_CPPFLAGS): New variable.
+ Use in all compile steps instead of CPPFLAGS.
+ (X_CPPFLAGS, T_CPPFLAGS): New vars, used in ALL_CPPFLAGS.
+ * x-vax (X_CPPFLAGS): Use this instead of X_CFLAGS.
+
+ * stmt.c (expand_end_bindings): Fix typo.
+
+Fri Jan 31 12:15:09 1992 Ron Guilmette (rfg ay ncd.com)
+
+ * dwarfout.c (LINE_LAST_ENTRY_LABEL): Definition added.
+ (dwarfout_finish): Put a label on the last .line section entry.
+ (dwarfout_finish): Make first word of final .debug_srcinfo record
+ contain the offset of the final .line section entry.
+
+Fri Jan 31 10:31:44 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * cp-tree.c (__eprintf): Make definition match assert.h
+ declaration.
+
+Thu Jan 30 23:17:11 1992 Per Bothner (bothner at cygnus.com)
+
+ * c++: The flags -c, -S, or -E suppress passing -lg++
+ to gcc. (Otherwise, gcc prints a warning.)
+
+Thu Jan 30 21:10:02 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (dwarfout_init): Fix generation of initial .debug_aranges
+ entry to be Dwarf Version 1 compliant.
+
+Thu Jan 30 15:51:27 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * i386sun.h (LINK_SPEC): Delete useless %{-Bstatic} term.
+ * sun2o4.h (LINK_SPEC): Likewise.
+ * sun3.h (LINK_SPEC): Likewise.
+ * sparc.h (LINK_SPEC): Delete useless %{Bstatic} term.
+
+ * cccp.c (default_include): Delete use of obsolete
+ NO_STANDARD_INCLUDE_DIR macro.
+ * protoize.c (default_include): Likewise.
+
+ * Makefile.in (libgcc1.null): Delete dummy.o and dummy.c.
+
+Thu Jan 30 15:34:06 1992 Michael Meissner (meissner at osf.org)
+
+ * gstdarg.h: Include va-mips.h on MIPS systems.
+
+ * va-mips.h (va_start): Provide alternate definition when included
+ via stdarg.h.
+ (va_arg): Use __alignof(...) instead of sizeof(...) to determine
+ whether or not to dword align the argument pointer.
+
+Thu Jan 30 13:06:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common): Get c++ and g++ from srcdir.
+
+ * i860.h (FIXED_REGISTERS): Arg pointer is no longer fixed.
+
+ * assert.h (__eprintf): Add const to string args in GCC ANSI case.
+
+ * Makefile.in (cccp.o, protoize.o, unprotoize.o):
+ Define LOCAL_INCLUDE_DIR based on $(prefix).
+
+ * stmt.c (expand_end_bindings): Arg pointer needs no special
+ treatment if not fixed.
+
+ * cp-parse.y, c-lex.c (yyerror):
+ Avoid sign-extension of characters in error messages.
+
+Thu Jan 30 11:39:56 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (dwarfout_finish): Fix generation of .debug_pubnames
+ terminating entry to be 4-bytes of zero followed by a null string.
+
+Thu Jan 30 09:30:19 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (ccr_bit): Fix typo causing reference to possibly
+ undefined operand.
+
+ * rs6000.h (ASM_SPEC): Remove until new AIX assembler is available.
+ (ASM_OUTPUT_POOL_PROLOGUE): Add missing "." in csect name.
+ (ENCODE_SEGMENT_INFO): Deleted.
+ (ASM_OUTPUT_EXTERNAL): Move code from ENCODE_SEGMENT_INFO here,
+ using permalloc instead of putting name into saveable_obstack.
+ Re-enable macro.
+ (ASM_OUTPUT_EXTERNAL_LIBCALL): Re-enable.
+
+Wed Jan 29 21:50:26 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (ASM_SPEC): Add -u, now require new /bin/as for AIX.
+ (ASM_OUTPUT_EXTERNAL, ASM_OUTPUT_EXTERNAL_LIBCALL): No longer needed.
+
+ * rs6000.h (ENCODE_SEGMENT_INFO): New macro; add [RW] or [DS] to name.
+ (RS6000_OUTPUT_BASENAME): New macro.
+ (ASM_OUTPUT_*): Use it instead of assemble_name when required.
+ (ASM_OUTPUT_POOL_PROLOGUE): Remove trailing [RW] or [DS].
+ * rs6000.c (print_operand, case 'z'): New case, for name in CALL_INSN.
+ (output_toc): Use RS6000_OUTPUT_BASENAME instead of assemble_name
+ for toc entry name.
+ * rs60000.md (call): Use %z.
+
+Wed Jan 29 17:17:42 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-init.c (build_member_call): Fix bug involving static members
+ that are function pointers.
+
+Wed Jan 29 13:25:18 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * gcc.c (do_spec_1): For %D, only add -L options that are relevant.
+ (is_linker_dir): Determine if a -L option is relevant.
+
+Wed Jan 29 00:57:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure: Turn ns32k alternatives back on.
+
+ * Makefile.in (getopt.o, getopt1.c): Join two lines into one.
+
+ * x-i386v4, x-i860v4 (GCC_CFLAGS): Add missing `-B./'.
+
+ * reload.c (find_dummy_reload, push_reload): Don't reuse dying input
+ reg as a reload if it is a fixed reg.
+
+ * c-tree.h (C_MISSING_PROTOTYPE_WARNED): Deleted since unused.
+
+Wed Jan 29 00:42:34 1992 Tim Moore (moore at fast.cs.utah.edu)
+
+ * hp800.c (print_operand): Handle INSN_ANNULLED_BRANCH_P in '*'
+ operand type.
+ * hp800.h (DEFAULT_GDB_EXTENSIONS): Define as 0.
+ * hp800.md (cmpsi): Change arith_operand to arith5_operand.
+ (bCC patterns): Delete pattern that matches a compare with a
+ constant first operand. Change arith_operand to arith5_operand.
+ (fp branches): Change type to cbranch.
+
+ * function.c (assign_parms): Set current_function_arg_offset_rtx
+ correctly for ARGS_GROW_DOWNWARD.
+ * gstdarg.h: Include va-hp800.h.
+ * va-hp800.h: Complete rewrite.
+
+Tue Jan 28 17:04:38 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * varasm.c (make_decl_rtl): Delete unused var `i'.
+
+ * c-convert.c (convert_to_pointer):
+ Abort if no integer type is as wide as a pointer.
+
+ * gcc.c (default_compilers, .i case): Add error message for -pg
+ and -fomit-frame-pointer incompatibility.
+
+ * Makefile.in (install-common): Install c++ and g++ shell scripts in
+ bindir.
+
+Tue Jan 28 15:44:10 1992 Michael Collison (collison at osf.org)
+
+ * x-encrose (OLDCC): changed to $(GNU_ROSE_BIN)/gcc
+
+ * ns32k.h: Added trampoline code.
+
+Tue Jan 28 14:19:52 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rtl.def (UNSPEC, UNSPEC_VOLATILE): New RTL codes.
+ * cse.c (canon_hash): UNSPEC_VOLATILE operations are volatile.
+ * loop.c (invariant_p): Likewise.
+ * reorg.c (mark_referenced_resources): Likewise.
+ * sched.c (sched_analyze_2): Likewise.
+ * rtlanal.c (volatile_refs_p, side_effects_p, may_trap_p): Likewise.
+ (reg_referenced_p): Support UNPEC and UNSPEC_VOLATILE.
+
+Tue Jan 28 11:50:35 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.c (toplevel): Add include of <ctype.h>, since isdigit is
+ used.
+
+Tue Jan 28 05:47:08 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (xref_tag): Addition to eichin's Jan 25 change. If REF
+ is extant, and it's seen in the global scope outside of
+ CLASS_BINDING_LEVEL, set its IDENTIFIER_GLOBAL_VALUE if NULL.
+
+ * cp-class.c (pushclass): Forcibly remove any remnants of incomplete
+ type that was previously pushed.
+
+ * cp-decl.c (various places): Remove all error messages about C++
+ constructs being invalid in C language context; extern "C" is a
+ linkage specifier--no more.
+
+ * cp-method.c (dump_type_prefix,dump_type): Never need to output
+ `unsigned' since its always part of an unsigned integer type name.
+ (build_overload_name): Change test for unsigned to use
+ `unsigned_type' instead of examining TREE_UNSIGNED.
+
+ * cp-call.c (ideal_candidate): Don't convert PARMS in place if
+ BASETYPE is NULL_TREE.
+
+Tue Jan 28 02:21:31 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (grokdeclarator): Use `auto' for nested fn fwd decls.
+
+ * g++: New file.
+
+ * fixincludes:
+ Convert machine names in #if's to have underscores.
+ Fix specific files stdlib.h, locale.h, hsfs/... for Sunos 4.1.
+ * fixinc.svr4: Convert machine names in #if's to have underscores.
+
+ * gcc.c (do_spec_1): For %D, also make -L's for startfile_prefix.
+ Also append the machine
+
+ * fold-const.c (fold_convert): Properly handle real-to-real case.
+
+ * configure (i486-*-sysv4*): New alternative.
+
+Tue Jan 28 00:37:24 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (location_attribute): Fix handling of objects which
+ were optimized out of existance for Dwarf Version 0 compliance.
+
+Tue Jan 28 00:42:57 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * Makefile.in (mostlyclean): Delete stack dump files too.
+
+Mon Jan 27 18:26:27 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (HAVE_ATEXIT, NO_DOLLAR_IN_LABEL): Now defined.
+
+Mon Jan 27 13:32:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.a (L_exit): Declare __CTOR_LIST__ and __DTOR_LIST__
+ with length 2; get rid of __CTOR_END__ and __DTOR_END__.
+ (L_ctor_list, L_dtor_list): New library members.
+
+ * cccp.c (main): Add terminating null, then call trigraph_pcp.
+
+ * fixincludes, fixinc.svr4: Fail unless an arg was given.
+ * Makefile.in (install-fixincludes): Pass output dir as argument.
+
+ * Makefile.in: Renamed libgcc[12] to libgcc[12].a.
+ Likewise for tmplibgcc[12].
+
+ * toplev.c (rest_of_decl_compilation): Treat all fcns as if external.
+
+ * Makefile.in (TAGS): Do the work in srcdir.
+ Include c-parse.h in files to move.
+
+Mon Jan 27 10:54:24 1992 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * cccp.c (get_filename): Don't pass -1 file descriptor to close.
+
+Mon Jan 27 00:26:33 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (start_function): Preserve TREE_TYPE of RESULT_DECL, in
+ case we have a named return value.
+ (finish_function): Restrict the cases under which we build
+ `no_return_label'. Use CURRENT_FUNCTION_RETURN_VALUE to eliminate
+ the generation of needless cleanups when functions end with a return
+ stmt. No longer zeros out CLEANUP_LABEL. Also, call `emit_jump'
+ instead of `expand_null_return' in case NO_RETURN_LABEL is
+ non-NULL.
+
+ * cp-decl2.c (grokfield): Don't specially hack static member
+ function names.
+
+ * cp-except.c (cplus_expand_raise): Test correct predicate that we
+ have a non-null value return.
+ (cplus_expand_{throw,reraise}): Ditto.
+
+ * cp-typeck.c (c_expand_return): Handle case where named return
+ value has incomplete type.
+
+Sun Jan 26 20:50:55 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-parse.y (LC): Fix rule to use `push_obstacks_nochange'.
+ (structsp): Use `pop_obstacks'.
+
+Sun Jan 26 17:39:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.y (LC): Use push_obstacks_nochange and always call
+ end_temporary_allocation.
+ (structsp, template_instantiate_once): After LC, use pop_obstacks.
+
+ * c-decl.c (grokdeclarator):
+ Static function decl within a function is not external.
+
+Sun Jan 26 08:14:53 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.h (MIPS_VERSION): Bump meissner version # to 9.
+ (enum processor_type): Delete PROCESSOR_R2000, since a r2000
+ schedules just like a r3000.
+ (mips_isa, mips_isa_string, mips_cpu_string): New global variables.
+ (MD_EXEC_PREFIX): If not defined, define as "/usr/lib/cmplrs/cc/".
+ (TARGET_SWTICHES macros): Move setting the processor from
+ TARGET_SWITCHES to TARGET_OPTIONS. Also, delete the -mfixed-ovrfl
+ switch, and move -mwc8/-mwc16 to not use any bits, since we can't
+ support these in GCC 2.00. Readjust the positions the bits are in.
+ (TARGET_OPTIONS): Define to add switches -mcpu=x to set which
+ processor type to schedule for, and -mipsx to specify the
+ instruction set architecture level.
+ (BRANCH_LIKELY_P): New macro, true if MIPS ISA >= 2.
+ (HAVE_64BIT_P): New macro, true if MIPS_ISA >= 3.
+ (HAVE_SQRT_P): New macro, true if MIPS_ISA >= 2.
+ (BRANCH_COST): Define as 2 if r4000/r6000, 1 otherwise.
+ (ASM_OUTPUT_SKIP): Eliminate OSF/1 gas work around.
+
+ * mips.c (mips_isa, mips_isa_string, mips_cpu_string): New global
+ variables.
+ (print_options): Print CPU and ISA level.
+ (override_otpions): Handle TARGET_OPTIONS setting cpu and ISA.
+ (override_options, print_operand): %: is no longer supported, since
+ -mfixed-ovfl is eliminated.
+
+ * mips.md (type attribute): Add fsqrt.
+ (all define_function_units): Redo, to add full r6000 and r4000
+ support, and to use the default case in case another processor type
+ is added. Also, tests against PROCESSOR_R2000 eliminated.
+ (add, subtract patterns): Delete use of %:.
+ (sqrtdf2, sqrtsf2): Define if the MIPS ISA >= 2.
+
+ * decrose.h (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): Define these to
+ use the defaults on the OSF/1 reference platform.
+ (i386rose.h): Likewise.
+
+Sun Jan 26 07:58:00 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Don't call insert_regs on a SUBREG.
+ When scanning table for SUBREG assignment, ignore invalid entries.
+
+ * cse.c (cse_insn): When looking for first non-deleted entry in
+ table, start by scanning backwards from the deleted entry.
+
+ * function.c (assign_parms): Set current_function_return_rtx
+ unconditionally.
+ (expand_function_start): Don't set it here.
+
+Sat Jan 25 06:44:16 1992 Mark Eichin (eichin at cygnus.com)
+
+ * cp-decl.c (set_identifier_local_value): New function. Clone of
+ set_identifier_type_value, but uses level->shadowed instead. Only
+ used in pushdecl, where the non-global install was previously
+ setting the local value directly which "stuck" and didn't get
+ cleared the next time through.
+ (pushdecl): use set_identifier_type_value so that the local value
+ actually gets erased when we leave this level. Changed code that
+ checks for global_binding_level to recognize that if
+ class_binding_level is set, we're not in the global one.
+ (poplevel_class): restore shadowed list too, like poplevel does.
+ (print_binding_level): added no_print_functions and
+ no_print_builtins variables to eliminate clutter while trying to
+ debug binding level problems.
+
+Fri Jan 24 18:03:36 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * tree.c (pop_momentary): Don't reference freed stack entry.
+
+Fri Jan 24 14:20:05 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-parse.y (stmt): Call `define_case_label' for default label.
+ * cp-decl.c (current_function_return_value): New variable.
+ (define_{case_}label): Clear CURRENT_FUNCTION_RETURN_VALUE.
+ * cp-typeck.c (c_expand_return): Set CURRENT_FUNCTION_RETURN_VALUE.
+
+ * cp-tree.c (lang_printable_name): Use DECL_RING, and don't free
+ the printable name for CURRENT_FUNCTION_DECL.
+
+Fri Jan 24 14:17:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gvarargs.h: If _ANSI_H, undef _VA_LIST_.
+
+ * c-typeck.c (pointer_int_sum): Don't distribute * into pointer diff.
+
+ * hp320.h (MD_STARTFILE_PREFIX): Defined.
+ (STANDARD_STARTFILE_PREFIX): Deleted.
+
+Fri Jan 24 09:30:41 1992 Fred Fish (fnf at fishpond)
+
+ * assert.h (__eprintf): Declare as prototype for __STDC__
+
+Fri Jan 24 05:28:53 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (jump,indirect_jump,tablejump): Don't output an align
+ directive here: let the following BARRIER do it.
+
+Thu Jan 23 11:54:11 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i486v4.h: New file.
+
+Thu Jan 23 20:34:22 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * fixinc.svr4: Surround uses of ${INPUT} with "" instead of ''
+ so that it will get expanded.
+
+Thu Jan 23 17:50:13 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (qty_mode): New variable.
+ (reg_rtx): Deleted.
+ (hard_regs_in_table, regs_invalidate_by_call): New variables.
+ (new_basic_block): Clear hard_regs_in_table.
+ (delete_reg_equiv): New name for reg_invalidate; don't update reg_tick.
+ (mention_regs): Don't set reg_rtx.
+ Update reg_tick for all registers in a multi-register hard register
+ reference.
+ (insert_regs): Don't do anything special with SUBREG.
+ Only insert register in a class if it is the same mode.
+ Don't set reg_rtx; set qty_mode instead.
+ (insert): Update hard_regs_in_table.
+ Get constant equivalence in proper mode.
+ (merge_equiv_classes): Call delete_reg_equiv.
+ (invalidate): Call delete_reg_equiv and update reg_tick.
+ Invalidate all parts of multi-word hard regs and invalidate
+ any multi-word hard reg overlapping what we are to invalidate.
+ Only look at constant in proper mode.
+ (remove_invalid_refs): Use refers_to_regno_p.
+ (invalidate_for_call): New function.
+ (canon_hash, refers_to_mem_p, fold_rtx, equiv_constant): Look at
+ constant in proper mode.
+ (cse_rtx_addr_varies_p, cse_process_notes): Likewise.
+ (exp_equiv_p): Likewise.
+ Check reg_tick for all parts of multi-word hard register.
+ (canon_reg): Don't use reg_rtx; get register from regno_reg_rtx or
+ build hard reg in proper mode.
+ (record_jump_equiv): Split into two pieces.
+ (record_jump_cond): Second part of record_jump_equiv; make recursive
+ call to some equivalences if args are SUBREGs.
+ (cse_insn): Only replace register with equivalent if proper mode;
+ don't use reg_rtx.
+ Call invalidate_for_call.
+ Don't avoid call to gen_lowpart for hard register.
+ Make a SUBREG if gen_lowpart_if_possible fails for SUBREG
+ assignment.
+ (invalidate_from_clobbers): Update reg_tick of SP; invalidate
+ REG entry in table, if present; use stack_pointer_rtx.
+ (cse_main): Don't allocate reg_rtx.
+ Initialize regs_invalidated_by_calls.
+ (cse_basic_block): Allocate qty_mode.
+
+ * rs6000.h (ADDITIONAL_REGISTER_NAMES): Add so we can disambiguate
+ fixed and floating registers.
+
+ * rs6000.md (ashrdi3): Reject all but constant shift counts.
+
+ * jump.c (simplejump_p): Don't access PATTERN unless we know it is
+ a JUMP_INSN.
+
+ * combine.c (get_last_value): Don't do a recursive call for a
+ paradoxical SUBREG.
+
+ * jump.c (jump_optimize): In "if (...) x = a; else x = b;",
+ don't move "x = b;" if it has non-trivial REG_NOTES. Also, allow
+ B to be any constant, not just a CONT_INT.
+
+ * stor-layout.c (layout_type): Handle alignment for arrays the same
+ as we do for records and unions.
+
+ * calls.c (expand_call): Ignore `const' on void functions.
+
+ * i860.c: Include recog.c.
+ Remove many explicit declaration of vars from include files.
+ (i860_compare_op[01]): Define these here.
+ * i860.h (i860_compare_op[01]): Add declarations.
+ * i860.md (compare, branch): Rework to use define_expand for cmpxx.
+ Compare just saves operands in i860_compare_op[01]. Branch emits
+ both insns using the saved operands.
+
+ * i860.h (PREFERRED_RELOAD_CLASS): Handle FP registers and constants.
+ (SECONDARY_INPUT_RELOAD_CLASS): We need a scratch register to copy
+ an integer constant to a floating-point register.
+ * i860.md (addsi3, subsi3): Allow use of floating registers.
+
+Thu Jan 23 13:33:40 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386v4.h (CPP_PREDEFINES): Don't define X86.
+
+ * c-lex.c (readescape): Warn for \a and \x if warn_traditional.
+ Handle \v as vertical tab regardless of -traditional.
+
+ * fixincludes, fixinc.svr4: Make LIB absolute, near the beginning.
+
+ * fixincludes: Simplify egrep command while matching the same lines
+ (plus occasional additional lines).
+
+ * function.c (fixup_memory_subreg): New arg UNCRITICAL. Calls changed.
+
+ * gcc.c (process_command): Handle LPATH like LIBRARY_PATH.
+
+ * svr3.h (ASM_LONG): Deleted.
+
+ * gvarargs.h: Ignore _VA_LIST_ if _ANSI_H_;
+ don't define _VA_LIST_ if already defined.
+
+Thu Jan 23 09:10:52 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kluna.h (includes): Include aoutos.h.
+
+Thu Jan 23 09:10:52 1992 Ron Guilmette (rfg at ncd.com)
+
+ * va-i860.h (__savereg): Fix typo.
+
+ * i860.h (PREDICATE_CODES): Added definition.
+
+ * i386v4.h (ASM_FILE_START): Definition added which generates
+ .version directive.
+
+Wed Jan 22 23:15:45 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * make-cc1.com: Predefine symbols for "rename" and "bison"; always
+ generate c-parse.h when generating c-parse.c.
+
+Wed Jan 22 20:01:11 1992 Per Bothner (bothner at cygnus.com)
+
+ * sdbout.c (sdbout_record_type_name): Use typedef names
+ for C++. (A kludge.)
+ * sdbout.c (sdbout_one_type): Emit base classes as
+ dummy fields, just like dbxout.c when not using gdb extensions.
+
+Wed Jan 22 20:01:11 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * fixincludes: Surround uses of ${INPUT} with "" instead of ''
+ so that it will get expanded.
+
+ * gcc.c (default_compilers): For c++, define __GNUG__ to 2, and
+ pass -trigraphs.
+
+ * cccp.1, cpp.1, gcc.1, g++.1: Delete more RCS variables.
+
+Wed Jan 22 19:02:06 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_shift_const, case ASHIFT): If we will
+ be suppressing a sign extension because the upper bits are
+ already the same, verify that the operand is in the same
+ mode as we will be doing the shift; don't ignore a SUBREG
+ inside the inner SHIFT.
+
+Wed Jan 22 09:25:07 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-typeck.c (comp_target_types): Make decl static.
+ Don't forget to return the value.
+ (function_types_compatible_p, comptypes): Initialize `val'.
+
+Tue Jan 21 13:29:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cross-make (ALL): Override with definition it here.
+ * configure: Don't edit its value explicitly here.
+
+ * crtstuff.c (__do_global_ctors): Include DO_GLOBAL_CTORS_BODY
+ in crtend.o, not in crtbegin.o.
+
+ * svr3.h: Prepare to use with i386.
+ (PCC_BITFIELD_TYPE_MATTERS): Definition deleted.
+ This pertains to the individual cpu types.
+ (ASM_SHORT, ASM_LONG, ASM_DOUBLE): Likewise.
+ (DBX_DEBUGGING_INFO): Undef this.
+ (DBX_REGISTER_NUMBER): Deleted the #undef.
+ (STARTFILE_SPEC, LINK_SPEC, LIB_SPEC): Deleted.
+ * i860v3.h (STARTFILE_SPEC, LINK_SPEC, LIB_SPEC): New definitions.
+
+ * att386.h: Coexist with svr3.h.
+ (ASM_FILE_START): Deleted.
+ (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
+ (ASM_BYTE_OP, NO_DOLLAR_IN_LABEL): Likewise.
+ (ASM_OUTPUT_LABELREF): Undef before defining.
+ (ASM_FILE_START_1): Undef before defining.
+ (EXTRA_SECTION_FUNCTIONS): Deleted.
+ (BSS_SECTION_FUNCTION): New macro; defines bss_section.
+
+ * i386v.h, aix386.h: Include svr3.h.
+ (SCCS_DIRECTIVE, ASM_OUTPUT_IDENT): Deleted.
+ (TARGET_MEM_FUNCTIONS): Deleted.
+ (SDB_DEBUGGING_INFO, DBX_DEBUGGING_INFO): Deleted.
+
+ * Support constructors and destructors on svr3. From james@bigtex.
+ * i386v.h, aix386.h (STARTFILE_SPEC): Use crtbegin.o after crt1.o.
+ (LIB_SPEC): Use crtend.o before crtn.o.
+ (CTORS_SECTION_ASM_OP, ASM_OUTPUT_CONSTRUCTOR): New macros.
+ (INIT_SECTION_ASM_OP): Likewise.
+ * svr3.h (DTORS_SECTION_ASM_OP): New macros.
+ (DO_GLOBAL_CTORS_BODY): New macro.
+ (EXTRA_SECTIONS,EXTRA_SECTION_FUNCTIONS): Use .init and .fini
+ sections in addition to .bss.
+ ({INIT,FINI}_SECTION_FUNCTION): New macros for *_section functions.
+ ({CTORS,DTORS}_SECTION_FUNCTION): Macros deleted.
+ (ASM_OUTPUT_CONSTRUCTOR): Deleted.
+ (ASM_OUTPUT_DESTRUCTOR): Use ASM_LONG.
+ (INT_ASM_OP): Deleted.
+
+ * c-typeck.c (default_conversion): Don't use initial value if BLKmode.
+ If do use the initial value, update `type'.
+
+ * arm.h (STRUCTURE_SIZE_BOUNDARY): New definition.
+
+ * stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for integers.
+
+ * ultrix.h (SIZE_TYPE): Use `unsigned int'.
+ * Makefile.in (install-common): Add missing -f in rm.
+ (install-fixincludes): Install the README file.
+
+ * fixincludes: Don't match on size_t, etc., since we don't actually
+ change them.
+
+Mon Jan 20 23:22:45 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-call.c (ideal_candidate): Don't see two functions as ambiguous
+ if one is argument-by-argument equivalent or better than another.
+
+Mon Jan 20 14:08:06 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * toplev.c (strip_off_ending): Add ".ada".
+
+Mon Jan 20 13:53:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c (xfree): No longer static.
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Allow tm.h to override.
+
+ * final.c (leaf_renumber_regs_insn): Do just the pattern of an insn.
+
+ * pyr.h (PCC_BITFIELD_TYPE_MATTERS): Defined.
+ (STRUCTURE_SIZE_BOUNDARY): Deleted.
+
+ * mips.c: Clean up spacing around square brackets.
+
+ * c-typeck.c (convert_arguments):
+ Get rid of feature to convert to a tagless union type.
+ (common_type): Add pedantic warning.
+ (comptypes, function_types_compatible_p): Return 2 meaning warn.
+ (comp_target_types): Do the warning here.
+ (type_lists_compatible_p): New function.
+
+Sun Jan 19 17:32:19 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (emit_reload_insns): Fix typos when checking for secondary
+ icode.
+
+Sun Jan 19 15:28:53 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * global-alloc.c (global_alloc): If LEAF_REGISTERS, those are the
+ regs that cost nothing to save, for setting regs_already_used.
+
+ * expr.c (expand_builtin): Preserve function value reg
+ around the call to __builtin_saveregs.
+
+ * configure (mips-sgi-irix4*, mips-sgi-irix*): Set install_with_cp.
+
+ * c-decl.c (start_function):
+ Check properly for `static' function in handling -Wmissing-prototypes.
+
+ * libgcc2.c (__main): Omit this fn if INIT_SECTION_ASM_OP.
+
+Sun Jan 19 13:23:13 1992 Fred Fish (fnf at sunfish)
+
+ * amix.h (ASM_OUTPUT_ASCII): Override version in svr4.h.
+
+Sun Jan 19 13:16:56 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-search.c (lookup_field): Accept IS_AGGR_TYPE_CODE, not
+ just == RECORD_TYPE.
+
+ * cp-class.c (finish_struct): Clear a tentative setting of
+ DECL_BIT_FIELD.
+
+ * cp-decl.c (start_decl): Don't call `pushclass' for incomplete
+ CONTEXT.
+
+ * cp-typeck.c (comp_target_types): Call `comp_target_parms' with
+ STRICT == 0, not -1.
+ (build_conditional_expr): Check that the target types of TYPE1 and
+ TYPE2 are aggr type before calling `common_base_type'.
+
+Sun Jan 19 04:10:16 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * configure: Fix typo inserting INSTALL=cp into makefile.
+
+Sat Jan 18 12:06:58 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-lex.c (build_with_cleanup): Delete obsolete function.
+ * cp-tree.c (break_out_cleanups): New function.
+ * cp-decl.c (cplus_expand_expr): Call `break_out_cleanups'.
+ * cp-typeck.c (build_compound_expr): Ditto.
+
+ * cp-call.c (convert_harshness): Make any inheritance relationship
+ preferable to a void* conversion.
+ * cp-tree.h (CLASSTYPE_MAX_DEPTH): New macro.
+ * cp-class.c (finish_struct_bits): Set CLASSTYPE_MAX_DEPTH.
+
+ * cp-cvt.c (build_up_reference): Don't return in ARRAY_REF case,
+ since we may need to adjust the return value for complex
+ inheritance.
+
+ * cp-decl2.c (lang_f_options): Add recognizers for -f{no-}builtin,
+ -f{no-}ident, and -ansi. Also, remove unnecessary "no-*" forms.
+
+ * cp-init.c (emit_base_init): If PEDANTIC, don't let base
+ initializers leak up the hierarchy.
+
+ * cp-parse.y (structsp): Disable gratuitous error message.
+
+ * cp-call.c (convert_harshness): Don't overlook PENALTY when
+ signed/unsigned differences are noted (in both POINTER_TYPE and
+ REFERENCE_TYPE cases).
+
+ * toplev.c (strip_off_ending): Grok ".ii" endings (C++ preprocessed
+ files).
+
+ * cp-typeck.c (build_component_ref): Add special handler when
+ COMPONENT is the CLASSTYPE_VFIELD name for BASETYPE.
+
+Sat Jan 18 08:29:58 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Don't make constant pool entries in MODE_CC modes.
+
+Sat Jan 18 00:28:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common): Fix typo installing gcc.
+
+ * crds.h, isi.h, newpbb.h, tti68k.h: Add #error because -m68000
+ will cause a crash (I think), to ask people what to do.
+
+ * gmicro.h (ASM_FILE_START): Don't do anything.
+ (TARGET_DEFAULT): Turn on the bitfield flag.
+ (TARGET_SWITCHES): Get rid of the bitfield options.
+
+ * c-lex.c (readescape): No warning for \?.
+
+ * protoize.c (munge_compile_params): Fix cast that sets compile_params.
+ (xmalloc, xrealloc): No longer static.
+ * Makefile.in (protoize, unprotoize): Add LIBDEPS as deps.
+
+ * va-i860.h (va_arg): Use __extension__ to suppress pedantic warning.
+ * va-sparc.h, va-spur.h, va-pyr.h: Likewise.
+
+ * x-irix4.h: New file.
+ * config.sub: Don't convert irix to sysv.
+ * configure (mips-sgi-irix4*): New configuration.
+ (mips-sgi-irix*): Renamed from mips-sgi-sysv*.
+
+ * gcc.c (process_command):
+ Handle the standard_exec_prefix* before the md_*_prefix.
+
+ * i386.h, ns32k.h (PCC_BITFIELD_TYPE_MATTERS): Defined.
+
+ * Makefile.in (libgcc1.null): Depend on GCC_PASSES.
+
+ * cccp.c (lookup_import, add_import): VMS kludges so they compile.
+ (hack_vms_include_specification): Add forward declaration.
+
+ * stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED
+ just like one of the things done for PCC_BITFIELD_TYPE_MATTERS.
+
+ * x-next, x-i386mach: Deleted.
+ * t-libc-ok: New file. Define just LIBGCC1.
+ * configure (i386-*-mach, m68k-next-*): Use t-libc-ok.
+
+ * t-svr4 (FIXINCLUDES): Defined.
+ * t-m88kv4 (FIXINCLUDES): Defined.
+ * t-svr3 (EXTRA_PARTS): Defined.
+ * t-i386sco (EXTRA_PARTS): Defined.
+
+ * configure (sparc-*-sysv4*): New alternative.
+
+ * configure (install_with_cp): New flag an alternative can set.
+ If host sets it, add INSTALL=cp to Makefile.
+ Set this for any system V, and for m68k-crds-unos.
+
+Sat Jan 18 23:15:08 1992 Ron Guilmette (rfg at ncd.com)
+
+ * va-i860.h (va_list): Made __reg_base field type long* to avoid
+ compilation errors.
+ (__savereg): Add explicit cast to (__va_saved_regs *).
+
+Fri Jan 17 15:09:34 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.h (FUNCTION_BOUNDARY): Do larger alignments for i486.
+ (ASM_OUTPUT_ALIGN_CODE): Same here.
+ (ASM_OUTPUT_LOOP_ALIGN): But not here - do word aligns as before.
+
+ (enum reg_class): Delete classes ADREG and BREG - neither used nor
+ useful. Add classes FP_TOP_REG and FP_SECOND_REG.
+ (REG_CLASS_NAMES): Likewise.
+ (REG_CLASS_CONTENTS): Likewise.
+ (REGNO_REG_CLASS): Reflect that change.
+ (REG_CLASS_FROM_LETTER): Likewise. Add "t" and "u" constraints.
+ (CLASS_MAX_NREGS): New classes use only 1 hard reg for any mode.
+
+ (CONST_OK_LETTER_P): Document uses of letters.
+
+ * reg-stack.c: Add comments describing rules for asm statements
+ involving stack-like regs.
+ (asm_regs): Delete unused variable.
+ (fatal_for_asm): Delete unused function.
+
+ (get_asm_operand_lengths): New function.
+ (constrain_asm_operands): New function. Like constrain_operands,
+ but records some information about the matched alternative.
+
+ (record_asm_reg_life): New function.
+ (record_reg_life): If INSN is an asm statement, decode operands
+ and pass to record_asm_reg_life.
+ (record_reg_life_pat): Abort if any asm is seen here.
+
+ (subst_asm_stack_regs): New function.
+ (subst_stack_regs): If INSN is an asm statement, decode operands
+ and pass to subst_asm_stack_regs. When handling REG_UNUSED notes,
+ emit the pops in the right order.
+
+ (change_stack): New argument to insert any new insns before INSN
+ instead of after. All callers changed.
+
+ (emit_swap_insn): Abort if the reg is not found in REGSTACK.
+
+ * Makefile.in (reg-stack.o): Depends on insn-config.h.
+
+Fri Jan 17 16:38:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c, flags.h (in_system_header): Declare here.
+ * c-lex.c, cp-lex.c (in_system_header): Not here.
+ * toplev.c (rest_of_compilation): Don't warn of unused static function
+ if definition is in a system header.
+
+ * gcc.c (do_spec_1): Add missing arg in recursive call.
+ (link_command_spec): Don't pass -s, -S, -u*, -X, -Y*.
+
+Fri Jan 17 12:51:28 1992 Jim Wilson (wilson at cygnus.com)
+
+ From Tiemann:
+ * rtlanal.c (reg_set_between_p): Call `reg_set_p' with INSN, not the
+ body of INSN so that CALL_INSNs are properly handled.
+ * explow.c (find_next_ref): Ditto.
+
+ * hp800.h, hp800.md: Delete RCS Header variables.
+
+ * reg-stack.c (replace_reg): Change `abort' to `abort ()'.
+
+Fri Jan 17 14:30:14 1992 Michael Meissner (meissner at osf.org)
+
+ * caller-save.c (insert_save_restore): Don't pass a CODE_LABEL to
+ reg_mentioned_p when the machine has a condition code, since
+ CODE_LABEL's don't have the same format as normal INSN's do.
+
+Fri Jan 17 13:24:33 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * Makefile.in (unprotoize.o): Use the rm -f option.
+
+ * cp-lex.c (check_newline): Define `used_up' as in c-lex.c.
+ (in_system_header): Define as in c-lex.c.
+
+Fri Jan 17 08:14:04 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (delete_from_delay_slot): Pass correct length to
+ emit_delay_sequence.
+
+ * genattrtab.c (substitute_address): Handle IF_THEN_ELSE in addition
+ to COND.
+
+ * expr.c (expand_builtin, case BUILT_IN_STRLEN): Correct args in
+ expand_expr call.
+
+Fri Jan 17 17:33:40 1992 James Van Artsdalen (james@raid)
+
+ * x-i386v4 (CCLIBFLAGS): Delete macro.
+ (GCC-CFLAGS): Delete macro. Prevented Makefile.in from working.
+
+Thu Jan 16 17:03:27 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * Makefile.in (cleanconfig): Also delete tconfig.h.
+
+ * varasm.c (assemble_external): Only call ASM_OUTPUT_EXTERNAL once
+ for each symbol.
+ (assemble_external_libcall): Fix minor typo in spacing.
+
+ * toplev.c (main): Force error if invalid -W option is used.
+
+Thu Jan 16 13:35:13 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88kdgux.h (CPP_PREDEFINES): Added __CLASSIFY_TYPE__ back and
+ noted when it would be useful.
+
+ * m88k.h (ASM_FILE_END, ASM_OUTPUT_ASCII): Override svr4.h.
+
+Thu Jan 16 12:37:16 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * svr4.h (SVR4): Add this back.
+
+ * cccp.c (lookup_import): Use bcmp to compare inodes.
+
+ * cccp.c (main): Handle -idirafter option.
+
+ * m68kv4.h, m88kv4.h, i386v4.h, sparcv4.h, i860v4.h (CPP_PREDEFINES):
+ Add __svr4__ in case user programs want to distinguish.
+
+ * cp-lex.c (check_newline): Changes like Jan 12 changes in c-lex.c.
+
+ * Makefile.in (install-fixincludes): Renamed from `includes'.
+ Move comments so some shells are happier. Dep. on install-headers.
+
+ * m88kdgux.h (CPP_PREDEFINES): Add __svr4__. Remove __CLASSIFY_TYPE__.
+ Add some assertions.
+
+ * c-decl.c (init_decl_processing): Don't give arg type for abort, etc.
+ Always declare strlen, etc., so -O doesn't alter the warnings.
+ * expr.c (expand_builtin): Open-code str* or mem* or ffs if -O.
+
+ * c-decl.c (start_function): Fix backwards test for -W* options.
+
+ * protoize.c (GUESSPATHLEN): Treat POSIX like USG--and use just 200.
+
+ * cccp.c (deps_output): Break line iff string is empty.
+ (do_include): Fix up the deps_output calls.
+
+ * vax.c (print_operand_address): Handle form index + (reg+offset).
+
+ * m88k.h (TARGET_VERSION): Don't use __DATE__.
+
+ * gcc.c (default_compilers): Typos in c++-cpp-output case.
+
+Thu Jan 16 12:25:51 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * loop.c (get_condition): In HAVE_cc0 code, generate a zero with
+ CONST0_RTX instead of just using const0_rtx.
+
+ * cse.c (cse_isnsn): A CALL_INSN clobbers all fixed regs except
+ for ap, fp, and sp.
+
+Thu Jan 16 08:03:40 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * c-decl.c (finish_enum): Compute the precision properly if the
+ maximum value is negative.
+
+Thu Jan 16 07:40:29 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reorg.c (try_merge_delay_insns, fill_slots_from_thread): Have
+ update_block put the phantom insn before THREAD.
+ (update_block): Update block status if WHERE, not INSN, is block head.
+
+Thu Jan 16 00:28:14 1992 Ron Guilmette (rfg ay ncd.com)
+
+ * i860.c (output_fp_move_double): Fixed typo.
+
+ * protoize.c (GUESSPATHLEN, pointer_type, const_pointer_type):
+ moved definitions declarations out of conditional region.
+ (string_list_cons, shortpath, munge_compile_params): Added casts.
+ (find_extern_def): Fixed string literal to avoid trigraph.
+ (find_rightmost_formals_list): Fixed to avoid unreached code warnings.
+
+ * svr4.h (ASM_OUTPUT_ASCII): Fixed typo.
+
+Wed Jan 15 21:58:01 1992 Jeffrey A Law (law at b117b.super.org)
+
+ * sparc.h (SELECT_RTX_SECTION): When generating PIC, place symbolic
+ operands in the data section.
+
+Wed Jan 15 21:45:09 1992 Michael Meissner (meissner at osf.org)
+
+ * collect2.c (main): Pass any -b<xx>, -B<xx>, -m<xx>, -f<xx>, and
+ -V<xx> options to gcc instead of the linker, in order to allow
+ target switches that affect the size of pointers and search paths to
+ be passed through.
+ (main, choose_temp_base): Use TMPDIR environment variable, and the
+ P_tmpdir macro if defined to locate directory to put temp files.
+ (whole file): Reorganize so that all of the OSF/rose stuff goes at
+ the end of the file, rather than being scattered throughout.
+ (main, scan_prog_file): Invoke scan_prog_file twice, once on each
+ output of ld.
+ (scan_prog_file, read_file, write_file): On the second invocation,
+ rewrite the object file in place, adding a load command to put
+ __main in the list of initializer functions. This allows users
+ to put constructors and destructors into shared libraries.
+ (scan_prog_file): Move debug stuff and error routines to separate
+ functions.
+
+Wed Jan 15 17:59:02 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (can_combine_p): Don't combine if DEST is still a field
+ assignment after we've tried to expand it.
+
+Wed Jan 15 16:01:13 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * regclass.c (fix_register): Don't match a null register name.
+ * varasm.c (decode_reg_name): Likewise.
+
+ * i386.h (HI_REGISTER_NAMES): Give the eliminable arg pointer a
+ null name.
+
+Wed Jan 15 13:40:50 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Pass -lang-asm, not -lang-asmc, to cpp.
+
+ * gcc.c (process_command): Don't dump md_exec_prefix in specs.
+ Use the md_... prefixes only if no -b.
+
+Wed Jan 15 13:35:09 1992 Ron Guilmette (rfg at ncd.com)
+
+ * i386v4.h (RETURN_IN_MEMORY): Definition added.
+ (CPP_PREDEFINES): Added -DX86 (needed for some system headers).
+ (ASM_OUTPUT_DWARF_STRING): Deleted.
+ (ASM_OUTPUT_ASCII): Added specialized definition for i386/svr4.
+
+ * svr4.h (SVR4): Deleted useless define.
+ (ASM_FILE_END): Added definition.
+ (ESCAPES, STRING_LIMIT, STRING_ASM_OP, ASM_OUTPUT_LIMITED_STRING):
+ (ASM_OUTPUT_ASCII): Generic svr4 definitions added.
+
+ * m68kv4.h (CPP_PREDEFINES): Don't define SVR4.
+ * sparcv4.h (CPP_PREDEFINES): Don't define SVR4.
+ (ASM_OUTPUT_ASCII): Deleted obsolete definition.
+
+ * xm-svr4.h (SVR4): Removed useless definition.
+ (POSIX): Added definition for protoize.c.
+
+ * i860b.h (ASCII_DATA_ASM_OP, ASM_OUTPUT_ASCII): Moved from i860.h.
+ * i860v3.h (ASCII_DATA_ASM_OP): Added OS-specific definition.
+ * i860v4.h (ASCII_DATA_ASM_OP, ASM_OUTPUT_ASCII):
+ Deleted (now in svr4.h).
+
+ * fixinc.svr4: Replaced all occurances of {1,\} in sed command
+ string with functional equivalents (to avoid bogus results).
+
+ * c-lex.c (readescape): Pass thru escaped x, a, and v if -traditional.
+ (readescape): Pedantic warning for \?, \(, \{, and \[.
+
+ * dwarfout.c: Updated copyright.
+ (fundamental_type_code): Abort for all non-fundamental types.
+ (type_is_fundamental): Return 0 for all non-fundamental types.
+ (containing_type_attribute, output_ptr_to_mbr_type_die): New functions.
+ (output_pointer_type_die, output_reference_type_die): Added calls to
+ equate_type_number_to_die_number.
+ (output_type): Handle OFFSET_TYPE correctly.
+ (output_type): Ignore LANG_TYPE (for now).
+
+Wed Jan 15 09:30:08 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * All cp-* files: Remove calls to `cleanup_after_call'.
+
+ * cp-method.c (fndecl_as_string): Add a missing space when printing
+ the return type.
+
+ * cp-typeck.c (build_modify_expr): Treat arrays specially in both
+ INIT_EXPR and NOP_EXPR cases. Also, if we take the address NEWRHS
+ when it's not a SAVE_EXPR, build a new NEWRHS using that address.
+ * cp-tree.c (lvalue_p): Handle WITH_CLEANUP_EXPR case.
+
+ * cp-decl.c (grokvardecl): Don't get tripped up by static class
+ members of incomplete type.
+
+Wed Jan 15 09:12:51 1992 Jeffrey A. Law (law at wombat.gnu.ai.mit.edu)
+
+ * m68k.c (legitimize_pic_address): Re-enable code which was
+ mistakenly #ifdef'd out.
+
+Wed Jan 15 08:12:18 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Check for insn not recognized.
+
+ * caller-save.c (reg_{save,restore}_code): New variables.
+ (init_caller_save): Set them.
+ (insert_save_restore): Just make SET for pattern of insn and set
+ code from reg_{save,restore}_code.
+ (save_call_clobbered_regs): Put restore insns before JUMP_INSN that
+ ends basic block, but after any other insn that ends the block.
+
+ * sdbout.c (sdbout_symbol): Treat (mem (reg SP)) the same
+ as (mem (reg FP)).
+
+ * reorg.c (mark_referenced_resources): Fix typo in last change.
+ (emit_delay_sequences): Update chain correctly when previous or
+ next insn is also a SEQUENCE.
+
+Wed Jan 15 08:10:29 1992 Chris Smith (cks at bach.convex.com)
+
+ * t-convex: Use collect2 to link.
+ * convex.h: remove assembly output defines for old collect2.
+ * convex.h: define vprintf and wait macros for pcc mode boot of
+ collect2.
+
+ * convex.h (ASM_OUTPUT_DOUBLE_INT): define.
+
+ * convex.h (DEFAULT_GDB_EXTENSIONS): define as 0 until GDB version 4
+ port is available.
+
+ * convex.c (ap_reload_needed): Fix comment.
+
+Wed Jan 15 07:08:25 1992 Tom Wood (wood at dg-rtp.dg.com)
+
+ * m88k.h (CONST_SECTION_FUNCTION): Trivial definition for targets
+ not based on svr[34].h (m88k-luna).
+
+ * m88k.h (PREDICATE_CODES): Use it.
+
+ * m88k.md (casesi_enter): Don't use bsr.n with -fno-delayed-branch.
+ * m88k.h (ASM_OUTPUT_CASE_END): The lda goes here when bsr is used.
+
+ * m88k.c (legitimize_address): When converting a symbol_ref for
+ PIC, add a REG_EQUAL note.
+
+Wed Jan 15 06:22:34 1992 Michael Meissner (meissner at osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 8.
+ (fcmp_op): Add function declaration.
+ (TARGET_FLOAT64): Support for -mfp64 switch to support the R4000 FR
+ psw bit, which doubles the number of floating point registers.
+ (TARGET_SWITCHES): Likewise.
+ (HARD_REGNO_NREGS): Likewise.
+ (CLASS_FCMP_OP): New bit for classifing floating point compares.
+ (PREDICATE_CODES): Add cmp2_op and fcmp_op support.
+
+ * mips.c (various): Move extern declarations from inside of
+ functions to outside all functions.
+ (fcmp_op): Match comparison operators for floating point.
+ (mips_move_2words): Add -mfp64 support.
+ (override_options): Likewise.
+ (compute_frame_size): Likewise.
+ (override_options): Set up for fcmp_op.
+ (gen_conditional_branch): Redo floating point compares/branches, so
+ that it is like the rest of the compiler expects -- set cc0 to a
+ compare operator, instead of the exact test required, and put the
+ smarts in the branch operators to generate both the test and the
+ branch.
+
+ * mips.md (cmpdf_eq, cmpdf_lt, cmpdf_le): Delete.
+ (cmpsf_eq, cmpsf_lt, cmpsf_le): Delete.
+ (cmpdf_internal): New define insn to match FP compares.
+ (cmpsf_internal): Likewise.
+ (branch_fp_true1, branch_fp_true2): Likewise.
+ (branch_fp_false1, branch_fp_false2): Likewise.
+ (branch_fp_true, branch_fp_false): New define_insns to match the
+ branch part of FP compares.
+
+Wed Jan 15 01:42:39 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (copy_loop_body): New parameter copy_notes_from, to
+ correct problem with bad debug info generated for preconditioned
+ loops.
+ (unroll_loops): Fix calls of copy_loop_body to pass new parameter.
+
+Wed Jan 15 01:01:39 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * gcc.c (main): Don't use TARGET_VERSION.
+ (endfile_spec, switches_need_spaces): New vars, initted from macros.
+ (set_spec, process_command): Read and write those vars.
+ (do_spec_1, process_command): Use the new vars, not the macros.
+ (SWITCHES_NEED_SPACES): New default macro definition.
+
+ * Makefile.in (install-common): Install driver as gcc-$(target).
+
+ * gstddef.h (wchar_t): Check for _T_WCHAR.
+
+ * stmt.c (pushcase, pushcase_range): Return 5 if jump into stack level.
+ * c-parse.y, objc-parse.y (stmt): Print error msg for that.
+ * cp-parse.y: Likewise.
+
+Tue Jan 14 23:25:37 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c: Include <string.h> if USG *or* POSIX.
+ (TREE_UID): Deleted.
+ (current_funcdef_number): Replacement for TREE_UID.
+ (dwarfout_file_scope_decl): Increment
+ current_funcdef_number after each funnction definition is processed.
+ (pending_sibling_stack_depth): Renamed globally to pending_siblings.
+ (pending_sibling_stack_size): Renamed to pending_siblings_allocated.
+ (PENDING_SIBLING_STACK_INCREMENT): Renamed PENDING_SIBLINGS_INCREMENT.
+ (pending_types_list, pending_types_allocated, pending_types,
+ PENDING_TYPES_INCREMENT, fake_containing_scope): New vars/macros.
+
+ * dwarfout.c (total_ft_entries): Renamed to ft_entries_allocated.
+ (valid_ft_entries): Renamed to ft_entries.
+ (FT_ENTRIES_INCREMENT): Definition added.
+ (lookup_filename): Expand filename table (when needed)
+ by adding FT_ENTRIES_INCREMENT more table elements rather than
+ doubling current size.
+ (dwarfout_init): Allocate initial filename table.
+
+ * dwarfout.c (INSN_LABEL_FMT, FUNC_END_LABEL_FMT): Use decimal format.
+
+ * dwarfout.c (member_attribute): Rewritten for proper C++ support.
+ (output_array_type_die, output_set_type_die, output_entry_point_die,
+ output_enumeration_type_die, output_global_subroutine_die,
+ output_global_variable_die, output_inline_subroutine_die,
+ output_local_variable_die, output_member_die, output_pointer_type_die,
+ output_reference_type_die, output_string_type_die,
+ output_structure_type_die, output_local_subroutine_die,
+ output_subroutine_type_die, output_typedef_die, output_union_type_die):
+ Added calls to member_attribute (for C++).
+
+ * dwarfout.c (inline_attribute): Test for TREE_INLINE in here.
+ (output_global_subroutine_die, output_local_subroutine_die):
+ Don't test for TREE_INLINE here.
+
+ * dwarfout.c (output_formal_types): Fixed to handle METHOD_TYPE
+ nodes and to output all related type DIEs last (for SDB).
+ (type_ok_for_scope, output_pending_types_for_scope, pend_type):
+ Functions added to support C++.
+ (output_type, output_decl): Added `containing_scope'
+ parameter to handle C++ nested types.
+ (output_type): Don't output the type unless it's OK
+ for the current DIE chain (i.e. unless it's OK for the current scope).
+ (output_type): Output completed non-global tagged types
+ right away even if not finalizing.
+ (output_type): Use correct method to get head of chain
+ of C++ function members.
+ (output_decl): Skip first item on chain of DECL_ARGUMENTS
+ for a FUNCTION_DECL whose type is a METHOD_TYPE.
+ Suppress output of type DIEs for formal parms of a FUNCTION_DECL
+ until after all TAG_parameter DIEs have been output (for SDB
+ compatability).
+ Output DIEs for any LABEL_DECL nodes attached to outermost BLOCK of
+ a FUNCTION_DECL.
+ Handle LABEL_DECL nodes.
+
+ * dwarfout.c (dwarfout_file_scope_decl): Un-pend all pending file-
+ scope types after each file-scope declaration is output.
+ (output_decls_for_scope): Un-pend all pending local types
+ at end of each local scope.
+
+Tue Jan 14 16:40:39 1992 Tim Moore (moore at fast.cs.utah.edu)
+
+ * calls.c (expand_call): If ARGS_GROW_DOWNWARD, make slot_offset
+ negative and set highest_outgoing_arg_in_use to needed + 1.
+ (store_one_arg): If ARGS_GROW_DOWNWARD deal with negative slot_offset.
+
+Tue Jan 14 20:01:59 1992 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu)
+
+ * sparc.h (TARGET_SUN_ASM, TARGET_GNU): Delete support for
+ obsolete and undocumented flags -msun-asm and -mgnu.
+ * sparc.md: Likewise.
+
+Tue Jan 14 19:36:21 1992 Tim Moore (moore at fast.cs.utah.edu)
+
+ * xm-hp800.h (hpux8): define.
+ * hp800.h (LINK_SPEC): Conditionalize on hpux8.
+ (STACK_BOUNDARY): Define for snake.
+ (CALL_USED_REGISTERS): Shift register is special.
+ (HARD_REGNO_MODE_OK): Don't allow modes smaller that SImode in fp
+ registers.
+ (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Eliminate
+ GENERAL_OR_FP_REGS, GENERAL_OR_SNAKE_FP_REGS classes.
+ (FUNCTION_ARG): Handle snake fp arguments.
+ (ASM_DOUBLE_ARG_DESCRIPTORS): define.
+ (ASM_DECLARE_FUNCTION_NAME): Use above macro to get around hpux
+ 8.0 change.
+ * hp800.md (movsi, movdi): Add ! and * to constraints of anonymous
+ define-insns to discourage SImode values in fp registers. Don't
+ modify the stack pointer when moving between general and fp registers.
+ (mulsi): Take out pattern that matches a degenerate multiplication
+ by 1; it doesn't seem to be needed and causes problems.
+ (sar_sub): Change so that const_int isn't the first argument of
+ the comparison.
+ * hp800.c (output_fp_move_double): As above, don't modify the
+ stack pointer when moving between general and fp registers.
+ (output_block_move): Don't make one CONST_INT rtx and store
+ different integer values in it; cons up a "new" one for each value.
+ (output_floatsisf2, output_floatsidf2): Fix typos.
+ (output_arg_descriptor): Conditionalize for HPUX 8.0.
+
+Tue Jan 14 14:38:09 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-typeck.c (build_unary_op): Call readonly_warning_or_error if
+ ARG is TREE_READONLY (in addition to the type being TYPE_READONLY).
+
+ * cp-init.c (maybe_adjust_addr_for_delete): If the adjustment needs
+ to be done, zero out the storage that held part of the cookie.
+
+Tue Jan 14 13:12:48 1991 Ron Guilmette (rfg at ncd.com)
+
+ * c-decl.c (poplevel): Set TYPE_CONTEXT for each tagged type
+ except inside function declaration parm list.
+ (grokdeclarator): Set TYPE_CONTEXT for tagged type in decl parm list.
+ (pushtag): Don't set TYPE_CONTEXT for tagged types here.
+
+Tue Jan 14 06:46:37 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * global-alloc.c (global_alloc): Count multi-word pseudos correctly
+ in local_reg_n_refs.
+ (find_reg): Evict pseudos that overlap the register we take, not just
+ that start with that register.
+
+ * a29k.c (a29k_debug_reg_map): New variable.
+ (output_prologue): Initialize it.
+ * a29k.h (DBX_REGISTER_NUMBER): Use that map.
+
+ * ultrix.h (WCHAR_TYPE): Make definition be a known type.
+
+ * final.c (final_scan_insn): Call DBR_OUTPUT_SEQEND before we
+ clear `final_sequence', so it can call dbr_sequence_length.
+
+ * reload1.c (reload): Clear insn_needs once we know we have
+ reloads, instead of always.
+ Don't skip processing of reloads for CALL_INSNs when caller-save
+ needs a spill register.
+
+ * flow.c (mark_used_regs, case RETURN): Insert missing test for global
+ registers.
+
+ * reorg.c (mark_referenced_resources): Mark asm's as volatile
+ when appropriate.
+
+ * integrate.h (struct inline_remap): New field const_equiv_map_size.
+ * integrate.c (expand_inline_function): Set it; make larger map.
+ (subst_constants): Don't reference out-of-range entry in equiv map.
+ * unroll.c (unroll_loop): Set const_equiv_map_size.
+
+See ChangeLog.4 for earlier changes.
diff --git a/gcc/ChangeLog.6 b/gcc/ChangeLog.6
new file mode 100644
index 00000000000..9bd9de01a5f
--- /dev/null
+++ b/gcc/ChangeLog.6
@@ -0,0 +1,8173 @@
+
+Sat Oct 31 15:19:54 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.3 released.
+
+ * Makefile.in (install-libobjc): New target.
+ ($(srcdir)/gcc.dvi, $(srcdir)/cpp.dvi): New targets.
+ (extraclean): rm *diff, *lose, config/*lose.
+ (mostlyclean): rm config/core.
+
+ * objc-actions.c (OBJC_SELECTORS_WITHOUT_LABELS): Define by default.
+
+Fri Oct 30 20:11:52 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (output_move_double): Undo 10/25 change. Handle case
+ where part of a dest reg is used in a src mem rtx, without using
+ stack.
+
+Fri Oct 30 18:52:57 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump meissner version number to 28.
+
+ * mips.md (addsi3, subsi3): Don't allow -32768 as the second
+ operand, the assembler complains if the instruction fills a delay
+ slot.
+
+Fri Oct 30 16:11:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * combine.c (simplify_shift_const):
+ For a subreg, require subreg_lowpart_p and not paradoxical.
+
+ * Makefile.in (install-fixincludes): Ignore dirs that don't exist.
+
+Thu Oct 29 20:15:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gvarargs.h, gstdarg.h [4.3 net 2]: If _VA_LIST_, is undefined
+ then va_list is already declared.
+
+ * i386gas.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
+ Override, if NO_UNDERSCORES.
+
+Thu Oct 29 17:30:52 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (life_analysis): Mark FP live at end of function.
+ * reload1.c (reload): If FP was eliminated, remove it from
+ being live in any basic block.
+
+ * varasm.c (output_constant_pool): Labels can be deleted by being
+ turned into NOTEs, not just have INSN_DELETED_P.
+
+Thu Oct 29 16:15:47 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h: Use _ANSI_STDARG_H_, not _ANSI_STDARG_H.
+
+ * gstddef.h [4.3 net 2]: If _SIZE_T_, etc. are undefined
+ then type is already declared.
+
+ * m68k.c (print_operand_address) [MOTOROLA !SGS]:
+ Don't subtract 2 in the address displacement.
+
+Thu Oct 29 14:36:23 1992 Michael Meissner (meissner@osf.org)
+
+ * libgcc2.c (__builtin_vec_new): #undef NULL before including
+ stdio.h to prevent redeclaration message.
+ (pyramid __enable_execute_stack): Ditto.
+
+ * i386rose.h (YES_UNDERSCORES): Define.
+ (ASM_OUTPUT_LABELREF): Don't redefine.
+
+ * mips.h (ASM_FINAL_SPEC): If cross compiling, don't invoke
+ mips-tfile by default.
+
+ * decrose.h (ASM_FINAL_SPEC): If cross compiling, don't invoke
+ mips-tfile by default.
+
+ * mips-tdump.c, mips-tfile.c: Handle the case where CROSS_COMPILE
+ is defined more gracefully.
+
+Thu Oct 29 12:10:16 1992 Tim Moore (moore at defmacro.cs.utah.edu)
+
+ * combine.c (make_extraction): Fix paren error in if for INNER is reg.
+
+Thu Oct 29 13:49:03 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * xm-mipsbsd.h: Really delete file.
+
+Thu Oct 29 02:48:28 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * dwarfout.c, arm.c, m88k.c: Include "assert.h" instead of <assert.h>.
+
+Thu Oct 29 00:43:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstddef.h [4.3 net 2]: Force inclusion of ansi.h.
+ Undef _SIZE_T_, _PTRDIFF_T_, _WCHAR_T_ at end.
+
+ * Makefile.in (libgcc2.a, libgcc1.a): Use || to exit if cp fails.
+ (install-float-h-cross): Use fi, not done.
+ Write float.h in $(tmpdir), not in `.'.
+ (tmpdir): New variable.
+
+ * i386gas.h (NO_UNDERSCORES): Test was backwards.
+ (SDB_DEBUGGING_OUTPUT): Defined.
+
+Wed Oct 28 16:33:34 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h, gvarargs.h:
+ On Net 2 system, don't test, define or undef _VA_LIST_.
+ Use _ANSI_H_, __BSD_NET2__ and ____386BSD____ to test for this.
+
+ * i386bsd.h (CPP_PREDEFINES): Add ____386BSD____.
+
+ * c-decl.c (pushdecl): Allow redeclaring builtin as any sort of static.
+
+ * Makefile.in (install-cross-tools): Fix typo.
+ (all.build): Dep on xgcc instead of $(GCC_PASSES).
+
+Wed Oct 28 15:25:42 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (print_operand): When AS_BUG_FLDCR is defined, use alternate
+ fldcr form.
+ * m88kdgux.h (AS_BUG_FLDCR): Define to accomodate 4.30 assembler bug.
+
+ * m88kv3.h (CPP_PREDEFINES): Add -Dunix.
+
+ * m88kdolph.h (SDB_ALLOW_FORWARD_REFERENCES): Don't override.
+
+Wed Oct 28 05:34:11 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * reload1.c (gen_input_reload): In PLUS, if OP0 and OP1 are the
+ same, use RELOADREG when generating the addition.
+
+ * reload.c (find_reloads_address): When copying memref after we've
+ made recursive calls on it, copy any replacements we made.
+
+ * combine.c (can_combine_p): Don't substitute an expression
+ containing a register that will be clobbered in I3.
+
+ * objc/core.c, objc/hash.c: Include tconfig.h, not config.h.
+ Include gstdarg.h.
+ * objc/object.m: Include tconfig.h, not config.h.
+ Include gstdarg.h before stdio.h.
+ * objc/objc.h: Don't include gstdarg.h here.
+ * objc/objc-proto.h (CLASS_LOCATION_SHIFT): Use HOST_BITS_PER_LONG,
+ not BITS_PER_WORD.
+ (setClassNumber, getClassNumber): `info' field is long, not int.
+
+Wed Oct 28 10:54:50 1992 Michael Meissner (meissner@osf.org)
+
+ * libgcc2.c (L_caps_new): Properly close comment.
+
+Wed Oct 28 05:50:10 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (mulsi): Input predicates back to srcsi_operands.
+ Don't handle constants specifically for TARGET_SNAKE, but call
+ force_reg to put them in registers.
+ (indexed addressing mode patterns): Remove the patterns with
+ unscaled index. Switch off patterns that never match.
+
+ * longlong.h (file header): Add comment describing sdiv_qrnnd.
+ (__hppa sub_ddmmss): Swap input operands.
+
+ * gcc.c (process_command): Check that we have enough arguments.
+
+Wed Oct 28 00:40:18 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i[34]86-*-sysv*): Take note of $stabs.
+ * i386gas.h (SDB_DEBUGGING_INFO): #undef deleted.
+ (DBX_DEBUGGING_INFO): Definition deleted.
+ * i386gstabs.h: New file.
+
+ * Makefile.in (mostlyclean): Don't delete tmp-limits.h.
+
+ * i386vgas.h: File deleted.
+
+Tue Oct 27 15:35:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.c: Include stdio.h.
+ [__GNU_LIBRARY__] (write): Defined.
+
+ * Makefile.in (install-cross-tools): When handling $(tooldir)/include,
+ do all cd's starting from build directory.
+
+ * i386gas.h (NO_UNDERSCORES): Don't define, if YES_UNDERSCORES.
+ * i386linux.h (YES_UNDERSCORES): Defined.
+
+Tue Oct 27 14:17:43 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * configure (i[34]86-*-linux): Set broken_install.
+ * x-linux (INSTALL): Delete.
+ * x-iris (INSTALL): Delete.
+
+Tue Oct 27 13:39:22 1992 Tim Moore (moore@hal.gnu.ai.mit.edu)
+
+ * pa.h (ASM_GLOBALIZE_LABEL): Give function symbols CODE type,
+ others DATA type.
+
+Mon Oct 26 16:40:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_c_cast): Don't warn about size change between
+ pointer and integer if the value is constant.
+
+ * Makefile.in (libobjc.a): If ln fails, copy libobjc.a.
+
+Mon Oct 26 16:21:11 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * pa.h (EXPORT_PARMS, ASM_DECLARE_FUNCTION): Blow away usage of
+ EXPORT_PARMS. BUGGY_GAS isn't a problem any more.
+ (TEXT_SPACE_P, FUNCTION_NAME_P): New macros.
+ (ENCODE_SECTION_INFO): Use TEXT_SPACE_P.
+ (STRIP_NAME_ENCODING): Strip a '*' which might preceed a '@'.
+ (ASM_OUTPUT_EXTERNAL): Give only function labels a CODE type.
+ (ASM_OUTPUT_LABELREF): Use FUNCTION_NAME_P.
+ * pa.c (hppa_encode_label): Change function name encoding to
+ preserve leading '*' if there is one.
+ (function_label_operand): Use FUNCTION_NAME_P macro.
+
+Mon Oct 26 14:39:46 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ From Tim Moore:
+ * function.c (locate_and_pad_parm): In ARGS_GROW_DOWNWARD case,
+ don't pad to argument alignment if where_pad is downward.
+
+Mon Oct 26 11:21:36 1992 Chris Smith (csmith@convex.com)
+
+ * convex.h (SHIFT_COUNT_TRUNCATED): Undefine.
+
+Mon Oct 26 07:48:35 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (print_operand, new 'L'): New case.
+ * alpha.md (movhi/movqi patterns): For long constants, use 'i'
+ constraint instead of 'K'; use "%L1" in template.
+
+ * configure (alpha): Set use_collect2.
+
+Mon Oct 26 04:19:24 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xm-alpha.h: Declare calloc.
+
+Sun Oct 25 17:19:52 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (fixup_var_refs_insns): Don't call delete_insn if not -O.
+ Make a NOTE_INSN_DELETED instead.
+
+Sun Oct 25 11:57:04 1992 Chris Smith (csmith@convex.com)
+
+ * convex.h (target_flags): prevent -mnoc2 from clearing
+ TARGET_INDIRECTS.
+ (TARGET_INDIRECTS): Always on.
+
+Sun Oct 25 16:56:18 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): Don't call convert_to_mode if we obtained
+ VALUE in the proper mode; VALUE might be a CONST_INT.
+
+Sun Oct 25 03:18:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (gen_push_operand): No longer static.
+
+ * i386.c (output_move_double): Divert first word via the stack
+ if it's a register used in the input operand.
+ * i386.md (movdi): Delete the `&' from constraint.
+
+Sat Oct 24 21:41:00 1992 Chris Smith (csmith@convex.com)
+
+ * convex.md (movstrictsi): Correct output constraint is + not =.
+
+Sat Oct 24 14:10:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * news.h (FUNCTION_EPILOGUE): Fix typos.
+
+ * cccp.c (get_lintcmd): Length of `LINTLIBRARY' is 11.
+
+Sat Oct 24 13:22:09 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * arm.md (DImode patterns): Add `&' to target operand constraints.
+
+ * Makefile.in (setting version variable): Prepend $(srcdir) to
+ version.c.
+
+ From Wilson:
+ * longlong.h (sparclite): Use machine independent USItype instead
+ of explicit types.
+
+Sat Oct 24 10:35:18 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (movdi): Tests were in wrong order.
+
+ * rs6000.h (LEGITIMIZE_ADDRESS): Indexed addresses are not valid
+ for DImode and TImode; GO_IF_LEGITIMATE_ADDRESS knows this.
+
+ * Makefile.in (mostlyclean): Add missing semicolon.
+
+ * a29k.c (a29k_set_memflags, a29k_set_memflags_1): New functions.
+ * a29k.md (movqi, movhi, reload_{in,out}{qi,hi}): Use them.
+
+ * alpha.c (get_aligned_mem): Copy memory flags to new MEM.
+ (alpha_set_memflags, alpha_set_memflags_1): New functions.
+ * alpha.md (movqi, movhi, reload_{in,out}{qi,hi}): Use new
+ functions.
+
+ * alpha.h (ASM_FILE_START): Stop at blank in version string.
+
+Sat Oct 24 04:35:16 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (emit_reload_insns): If not -O, Don't try find_equiv_reg.
+ (choose_reload_regs): If not -O, don't inherit reloads.
+
+Fri Oct 23 18:07:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * news.h (FUNCTION_EPILOGUE):
+ If no frame ptr, increment stack ptr to free up the local space.
+
+ * gcc.c (process_command): Discard after first space in spec_version.
+
+ * print-tree.c (print_node): Always output `>' to match `<'.
+
+ * Makefile.in (version): Use sed to extract.
+ Ignore excess after space.
+ (install-fixincludes): Fix typo in last change.
+
+ * configure (i386-ibm-aix*): Use aix386ng.h if not --with-gas.
+ * aix386ng.h: New file.
+
+Fri Oct 23 15:14:49 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * sdbout.c (sdbout_symbol): Return if a symbol's DECL_NAME is
+ empty, since we won't be able to make a symtab of it.
+
+ * convex.h (P_tmpdir): Remove definition.
+ * xm-convex.h: Put it here.
+
+Fri Oct 23 10:27:34 1992 Michael Meissner (meissner@osf.org)
+
+ * i386rose.h (ASM_OUTPUT_LABELREF): Define so that external
+ identifiers have leading underscores in front of them.
+
+ * mips-tfile.c (parse_stabs_common): Allow stabs with line numbers
+ of 0. These come from g++ for compiler generated functions that
+ take arguments.
+
+Fri Oct 23 07:49:12 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * romp.c (output_fpops): Add SYMBOL_REF and LABEL_REF cases to
+ constants handled.
+
+Fri Oct 23 01:58:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * flow.c (find_basic_blocks): Check for LABEL_REF_NONLOCAL_P
+ in label_value_list.
+ * jump.c (mark_jump_label): Copy LABEL_REF_NONLOCAL_P from
+ LABEL_REF into REG_LABEL note.
+
+ * toplev.c (push_float_handler): Declare arg old_handler.
+
+ * t-next (OTHER_FIXINCLUDES_DIRS): Defined.
+
+ * Makefile.in (OTHER_FIXINCLUDES_DIRS): New variable, normally empty.
+ (install-fixincludes): Run fixincludes on those dirs.
+ * fixincludes: Convert //-style comments to /*...*/ style.
+
+ * loop.c (record_biv): Clear total_benefit field of new iv_class.
+ (get_condition):
+ Verify op 2 of source is label_ref before looking within.
+
+Thu Oct 22 21:17:53 1992 Tim Moore (moore at defmacro.cs.utah.edu)
+
+ * varasm.c (STRIP_NAME_ENCODING): New macro to decode a symbol name
+ munged by ENCODE_SECTION_INFO.
+ (assemble_start_function, assemble_variable): Use STRIP_NAME_ENCODING.
+ * pa.h (STRIP_NAME_ENCODING): New definition.
+
+Thu Oct 22 17:53:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (mostlyclean): Clean objc subdir only if it exists.
+
+ * news.h (FUNCTION_PROLOGUE): Do allocate local stack space
+ when no frame pointer.
+
+Thu Oct 22 15:21:27 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * i960.h (FUNCTION_VALUE): Simplify, just return reg 0.
+ * i960.c (i960_function_value): Delete.
+
+Thu Oct 22 09:42:50 1992 Michael Meissner (meissner@osf.org)
+
+ * mips-tfile.c (parse_stabs_common): Ignore stab line numbers
+ of 0, since the G++ front end generates them. Check whether
+ line numbers can fit within the index field, and if not report
+ an error.
+
+ * mips.c (function_arg): Align passed structures to double word
+ boundary if structure has double word alignment.
+
+ * mips.h (STACK_DYNAMIC_OFFSET): Do not define this macro in order
+ to work around a bug.
+
+Thu Oct 22 08:00:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h, gvarargs.h: Treat _AIX and _M_UNIX like __svr4__.
+
+ * i386gas.h (NO_UNDERSCORES): Defined.
+
+ * next.h (INCLUDE_DEFAULTS): Put in GPLUSPLUS_INCLUDE_DIR,
+ GCC_INCLUDE_DIR, LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR.
+ Don't define at all if cross-compiling.
+
+ * tree.c (copy_node): Copy the excess bytes--don't clear them.
+
+Thu Oct 22 06:40:55 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.h (TARGET_SWITCHES): Add missing complementary switches:
+ -mno-stack-check and -mstorem-bug.
+
+ * a29k.md (long constant split): Use gen_lowpart instead of making
+ a SUBREG directly.
+
+ * arm.h (STORE_FLAG_VALUE): Remove bogus definition.
+
+Thu Oct 22 03:04:28 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (prologue_marked): New variable.
+ (m88k_end_prologue): Output the epilogue mark here if the start of
+ the epilogue passed the end of the prologue.
+ (m88k_begin_epilogue): Don't output the epilogue mark if the end
+ of the prologue hasn't been processed yet.
+
+Thu Oct 22 03:20:40 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (put_var_into_stack): When we operate on a pseudo
+ that holds the address, use proper modes.
+
+ * combine.c (make_extraction): Use is_mode, not inner_mode,
+ for BYTES_BIG_ENDIAN adjustment to offset for non-bitfield case.
+ Update is_mode when stripping subreg from around a mem.
+
+ * m68k.h (GO_IF_INDEXABLE_BASE): Allow LABEL_REF only if jump table.
+
+Wed Oct 21 18:55:24 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h: Check and define _ANSI_STDARG_H along with _STDARG_H.
+
+Wed Oct 21 11:41:39 1992 Tom Wood (wood at gen-rtx)
+
+ * toplev.c (push_float_handler, pop_float_handler): New functions.
+ * fold-const.c (real_value_truncate):
+ Use them, in case another handler is already in effect.
+
+Wed Oct 21 22:08:31 1992 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * Makefile (all.build): Add target $(GCC_PASSES) for xgcc.
+ * build-make (CC): Defined.
+ (CROSS_GCC_FLAGS): Deleted.
+ (HOST_CC): Delete -V option; CC supplies that.
+
+Wed Oct 21 12:34:39 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ From Wilson:
+ * longlong.h (sparclite udiv_qrnnd): Remove comma before
+ __AND_CLOBBER_CC.
+
+Wed Oct 21 12:24:24 1992 Michael Meissner (meissner@osf.org)
+
+ * decrose.h (WORD_SWITCH_TAKES_ARG): Add -pic-names.
+ (CC1_SPEC): If -pic-names, pass -mhalf-pic to cc1.
+
+ * i386rose.h (WORD_SWITCH_TAKES_ARG): Add -pic-names.
+ (CC1_SPEC): If -pic-names, pass -mhalf-pic to cc1.
+
+Wed Oct 21 07:34:16 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure (alpha): Only accept OSF/1.
+
+ * alpha.h (ASM_FILE_START): Change .verstamp ident for BL9.
+ * alpha.md (div/mod): Change calling sequence to agree with BL9.
+
+ * expr.c (do_store_flag): Ensure we don't get confused when
+ emit_store_flag fails and an operand has a QUEUED.
+
+Wed Oct 21 02:53:58 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cexp.y (integer_overflow): Do nothing unless pedantic.
+
+Tue Oct 20 17:02:15 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * README, sparc.h, flow.c, regs.h: Change global-alloc.c to global.c.
+
+ * i960.md (call, call_value): Use 'd' not 'r' constraint for scratch.
+
+ * gcc.c (WORD_SWITCH_TAKES_ARG): Handle -Ttext and -Tbss in
+ addition to -Tdata.
+ * i960.h (WORD_SWITCH_TAKES_ARG): Delete, now unnecessary.
+ * next.h (WORD_SWITCH_TAKES_ARG): Add -Tbss.
+ * sparc.h, sun2.h, sun3.h (WORD_SWITCH_TAKES_ARG): Add -Ttext and
+ -Tbss.
+
+Tue Oct 20 16:49:57 1992 Ron Guilmette (rfg at netcom.com)
+
+ * dwarfout.c (dwarfout_file_scope_decl): Generate DIEs for
+ built-in non-fundamental types.
+
+Tue Oct 20 14:58:18 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (handle_impent, handle_class_ref): Use __
+ to start the generated names, not period.
+
+Tue Oct 20 14:38:30 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-method.c (fndecl_as_string): Undo change of Sep 14th for
+ emitting a space after the return type of a fn.
+
+ Wed Oct 7 16:01:55 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-lex.c (readescape): No warning if digits in \x are all 0's.
+
+Tue Oct 20 06:50:28 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (force_operand): Clarify comment to say what it can return.
+ * integrate.c (copy_rtx_and_substitute): Don't assume force_operand
+ on an address returns a REG; it might be a SUBREG. Use force_reg.
+
+Tue Oct 20 04:54:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (make_node, copy_node):
+ Don't assume node length is multiple of int.
+
+Mon Oct 19 18:14:56 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * genrecog.c (write_tree): For type SPLIT, check subroutine return
+ values for non-zero value not positive value.
+
+Mon Oct 19 16:11:04 1992 Michael Meissner (meissner@osf.org)
+
+ * c-typeck.c (print_table, scan_table): Add support for XPG4's %S
+ and %C formats for printing/reading wide characters. %lc and %ls too.
+
+Mon Oct 19 17:58:18 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * arm.c (output_epilogue): Restore sp's value if no frame pointer.
+
+ From Wilson:
+ * pa.h (WORD_SWITCH_TAKES_ARG): Delete sparc related cruft.
+
+Mon Oct 19 14:49:03 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-parse.y (primary): Don't try building a CALL_EXPR or
+ converting types if $$ is an error_mark.
+
+Mon Oct 19 14:01:02 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h (SECONDARY_INPUT_RELOAD_CLASS): Require a temporary for a
+ pic address with a large constant term.
+ * m88k.md (reload_insi): New pattern.
+ (addsi3 pattern for large constants): Delete. Causes reload trouble.
+ * m88k.c (emit_move_sequence): Add scratch register. All callers
+ changed.
+ (legitimize_address): Add scratch register. All callers changed
+ to pass zero instead of gen_reg_rtx result. Allocate another temp
+ register for -fPIC case. Use scratch register for pic cases with
+ a large constant term.
+
+ * m88k.h (FUNCTION_PROFILER_LENGTH, FUNCTION_BLOCK_PROFILER_LENGTH,
+ BLOCK_PROFILER_LENGTH, REG_PUSH_LENGTH, REG_POP_LENGTH): Added.
+ (ADJUST_INSN_LENGTH): Account for profiling code.
+
+Mon Oct 19 16:46:52 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (libobjc.a): Don't mkdir objc if dir exists.
+
+ * expr.c (store_field): If trying to sign-extend a constant,
+ use value_mode as the mode.
+
+Mon Oct 19 10:59:20 1992 Michael Meissner (meissner@osf.org)
+
+ * xm-umips.h (index): Define to be strchr.
+ (rindex): Define to be strrchr.
+
+ * mips-tdump.c (index, rindex): Undefine these, since the MIPS
+ include files have a field spelled index.
+
+Mon Oct 19 03:34:04 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (mostlyclean): Delete libobjc.a.
+ (libobjc.a): Create the objc subdir.
+
+Sun Oct 18 17:52:05 1992 Arne H. Juul (arnej@lise.unit.no)
+
+ * objc/Makefile: Add .SUFFIXES .m and .m.o rule to keep non-GNU
+ make happy.
+
+ * Makefile.in (libobjc.a): Remove libobjc.a in current directory
+ before attempting to hardlink it or make will fail in later stages.
+ (sublibobcj.a): Don't use $(MAKEFLAGS) for objc subdir stuff.
+
+Sun Oct 18 06:00:27 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * cse.c (canon_reg): Don't call validate_change if INSN is zero.
+
+Sun Oct 18 01:09:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i860.h (PRINT_OPERAND): For `h', always use OPERAND_HIGH_ADJ_PART
+ even for integer constant addresses.
+
+ * final.c (output_addr_const): Always use FILE, not asm_out_file.
+
+ * cccp.c (collect_expansion): Don't add whitespace at end
+ if inside a string and not traditional.
+ (rescan): At end of string, if inside macro, always keep scanning.
+
+ * expr.c (store_field): If signed bitfield and want value, sign extend.
+
+Sat Oct 17 21:11:09 1992 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * Makefile.in (all.build): New rule for making gcc with a
+ cross-compiler.
+ (install.build): New target.
+ (line 271): Add `####build overrides'.
+ (gen*.o): Depend on hconfig.h, not config.h.
+ ($(HOST_PREFIX_1)rtl.o, $(HOST_PREFIX_1)print-rtl.o,
+ $(HOST_PREFIX_1)rtlanal.o, $(HOST_PREFIX_1)obstack.o,
+ $(HOST_PREFIX_1)malloc.o): Add final `h' to the regexp to replace.
+
+ * configure: If $host == $taget, but $host != $build, merge
+ `build-make' and emit `build = $build'.
+ * build-make: New file for making gcc with a cross-compiler.
+
+Sat Oct 17 19:24:31 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (process_init_constructor): When initializing a union,
+ handle the case of an empty init list.
+
+ * reload.c (find_reloads_address): Redo last change: copy the mem
+ in the same way it's usually done.
+
+ * Makefile.in (gcc.xtar): Fix typo in last change.
+ (mostlyclean): Don't use $(MAKEFLAGS) for objc subdir stuff.
+
+Sat Oct 17 19:15:16 1992 John Wroclawski (jtw@pmws.lcs.mit.edu)
+
+ * decstatn.h (SIZE_TYPE): Fix typo.
+
+Sat Oct 17 17:46:08 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-method.c: Don't try to include string.h or strings.h.
+ * cp-decl.c: Ditto.
+
+Sat Oct 17 13:50:49 1992 Fred Fish (fnf@fishpond.cygnus.com)
+
+ * fixinc.svr4 (string.h):
+ Remove #defines for other compiler's builtin functions.
+
+Sat Oct 17 00:39:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c: Add #undef getopt after getopt.h.
+
+ * gstdarg.h, gvarargs.h (va_list) [__SVR4_2__]:
+ Don't set or test _VA_LIST.
+
+ * gstddef.h: Do nothing if _ANSI_STDDEF_H already defined.
+
+Fri Oct 16 11:39:06 1992 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * emit-rtl.c (gen_lowpart_common): Fix typo in last change.
+
+Fri Oct 16 22:35:15 1992 Eric Youngdale (youngdale@v6550d.nrl.navy.mil)
+
+ * make-cc1.com: Correct previous patch.
+
+Fri Oct 16 20:07:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (start_class):
+ For an INTERFACE_TYPE, push to permanent obstack.
+ (build_message_expr): Use TYPE_MAIN_VARIANT when comparing types.
+
+ * Makefile.in (libobjc.a): Don't use $(MAKEFLAGS).
+ Add braces around shell variable references.
+ (collect2): Delete file before linking it.
+ * objc/Makefile (all): Don't use $(MAKEFLAGS).
+ (VPATH): Get rid of ../ since srcdir now absolute.
+
+Fri Oct 16 14:23:25 1992 Michael Meissner (meissner@osf.org)
+
+ * decstatn.h (all defines): Protect all defines with an #ifndef,
+ to allow dec-osf1.h to selectively override macros.
+
+Fri Oct 16 10:44:47 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * Makefile.in (libobjc.a): Compute srcdir1 without changing
+ directories. Use srcdir1 to locate objc/Makefile. Put quotes
+ around all potential multi-word values. Recompute GCC_FOR_TARGET.
+ (sublibobjc.a): Use same text as libobjc.a.
+ (mostlyclean): Use $(MAKE) and srcdir1 for objc action.
+ * objc/Makefile (SUBDIR_INCLUDES): Don't use ../$(srcdir).
+ (all): Use $(MAKE).
+
+Fri Oct 16 04:16:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (find_fixup_replacement): Renamed from find_replacement.
+
+ * varasm.c (output_addressed_constants): Handle NON_LVALUE_EXPR.
+
+Fri Oct 16 02:25:17 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (call define_expands): If TARGET_LONG_CALLS, then force
+ the address of the function into a register.
+ * pa.h (TARGET_SWITCHES): New switch "-mlong-calls".
+ * pa.c (call_operand_address): Only allow registers if
+ TARGET_LONG_CALLS.
+
+Fri Oct 16 00:21:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (libobjc.a): Get directories right, using shell vars
+ thisdir1, srcdir1. Put quotes around $(GCC_CFLAGS). Use $(MAKE).
+
+Thu Oct 15 17:07:18 1992 Mike Stump (mrs@hal.gnu.ai.mit.edu)
+
+ * configure, config.sub, config/elxsi.{c,h,md}, config/xm-elxsi.h,
+ config/x-elxsi: Add support for new 64 bit CPU, called Elxsi.
+
+Thu Oct 15 16:55:22 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (alpha_builtin_saveregs): Fix bug in last change.
+
+ * fold-const.c (distribute_bit_expr): Test for BIT_{AND,IOR}_EXPR.
+
+ * cse.c (cse_insn): Add missing call to apply_change_group.
+
+Thu Oct 15 15:09:45 1992 Michael Meissner (meissner@osf.org)
+
+ * t-mips (CCLIBFLAGS, LIBGCC2_CFLAGS): Delete, so that libgcc.a is
+ built with the -G 8 option, instead of -G 0, so that the linker
+ doesn't complain when linking in libg++.a.
+ * t-decstatn (CCLIBFLAGS, LIBGCC2_CFLAGS): Ditto.
+
+Thu Oct 15 14:30:25 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * mips-tfile.c (parse_def): Allow spaces in arguments for C++.
+ Correct test for null when searching for end of name.
+
+Thu Oct 15 11:55:51 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * pa.c (compute_frame_size): Take an fregs_live parameter instead
+ of setting the static variable save_fregs.
+ (output_function_prologue): Initialize save_fregs to 0 and pass to
+ compute_frame_size.
+ * pa.h (INITIAL_FRAME_POINTER_OFFSET): Pass extra null parameter
+ to compute_frame_size.
+
+Thu Oct 15 08:40:07 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (TARGET_FPREGS): New flag.
+ (TARGET_SWITCHES): Remove temporary -mfp and add -msoft-float and
+ -mfp-regs.
+ (TARGET_DEFAULT): Set to -mfp-regs -mno-soft-float.
+ (CONDITIONAL_REGISTER_USAGE): Use TARGET_FPREGS.
+ (FUNCTION_VALUE, FUNCTION_ARG, LIBCALL_VALUE): Use integer registers
+ for FP items if -mno-fp-regs.
+ * alpha.c (alpha_builtin_saveregs): Store integer regs twice instead
+ of storing the FP regs if -mno-fp-regs.
+
+ * fold-const.c (fold): Add missing test in case when we
+ distribute a NOP_EXPR into a COND_EXPR and try to pull it back
+ out again.
+
+Thu Oct 15 08:11:00 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * fold-const.c (simple_operand_p): Don't regard global or static
+ variables as simple.
+ (fold_truthop): Only require the RHS to be simple.
+
+ * m88k.h (CPP_SPEC): Add -D__m88110__ when -m88110 is in effect,
+ similarly for -m88100.
+ * m88kdgux.h (CPP_SPEC): Ditto.
+ * m88kluna.h (CPP_PREDEFINES): Drop -Dmc88100.
+ (CPP_SPEC): Reproduce the predefine -Dmc88100 when -m88100 is in
+ effect. Otherwise, supply -D__mc881x0__ when -m881x0 is in effect.
+
+Thu Oct 15 02:09:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (get_inner_reference):
+ If flag_volatile, treat every INDIRECT_REF as volatile.
+
+ * collect2.c (main): If COLLECT_GCC is a relative name, use it anyway.
+
+ * x-next: New file.
+ * configure (m68k-next-*): Use that.
+
+ * Changes from NeXT:
+
+ * libgcc2.c [L_ctors] (__CTOR_LIST__, __DTOR_LIST__):
+ Initialize these default definitions if __NeXT__.
+
+ * gvarargs.h [__NeXT__]: Define _VA_LIST_ if _ANSI_STDARG_H_ was
+ defined; then define _ANSI_STDARG_H_.
+
+ * gstddef.h (_ANSI_STDDEF_H): Define, along with _STDDEF_H.
+
+ * next.h (INCLUDE_DEFAULTS): New macro.
+
+ * cp-method.c (index, rindex): Delete declarations.
+ (build_overload_value): Cast result of index.
+
+ * cccp.c (cplusplus_comments): New var.
+ (main): Set it according to options.
+ (rescan, handle_directive, skip_if_group, validate_else):
+ (skip_to_end_of_comment, macarg1, discard_comments):
+ Use cplusplus_comments to enable C++ comment syntax.
+
+Wed Oct 14 11:34:58 1992 Chip Salzenberg (chip@tct.com)
+
+ * libgcc2.c (__gcc_bcmp): Don't depend on signedness of `char'.
+
+Wed Oct 14 18:52:28 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (sched_note_set): Set subreg_p for anything except a
+ paradoxical subreg.
+
+ * configure (sparc-*-solaris2): Use xm-spc-sol2.h not xm-spcv4.h.
+
+ * reload.c (find_reloads): Don't let an operand have a numbered
+ constraint that makes it match itself.
+
+Wed Oct 14 10:38:31 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * pa.md (sCC patterns): Comparison operator should have SImode,
+ not CCmode.
+ (indexed addressing mode patterns): New patterns to use indexed
+ addressing if possible.
+ * pa.c (output_and): Do handle (const_int 0) as an operand; it
+ seems to occur in unoptimized compilation.
+ * pa.h (REGNO_OK_FOR_FP_P): Logic bug.
+ * va-pa.h : When __GNUC__ == 1, don't include the gcc 1 varargs
+ file (va-hp9k8.h). Instead, the definitions are explicitly defined
+ here. This avoids multiple typedefs of va_list.
+ * xm-pa.h (HAVE_VPRINTF) Define in HPUX 8.0.
+
+ * pa.md (mulsi): Use the hardware multiply instruction, xmpyu, if
+ TARGET_SNAKE.
+ (umulsidi3): New pattern.
+ (reload_insi, reload_outsi, reload_indi, reload_outdi): New
+ patterns. These are needed because SImode and DImode pseudoregs
+ may be allocated (or reloaded) in floating point registers for
+ multiplication. That means that their addresses, which were
+ legitimate for SImode and DImode, aren't valid any more.
+ (movsi, movhi, movqi, movdf, movdi, movsf): Pass null scratch
+ operand to emit_move_sequence.
+ (fp SImode load and store patterns): Move before main movsi
+ pattern.
+ (fp DImode load and store patterns) New patterns.
+ (movhi, movqi patterns): Support moves to/from fp registers.
+ (movdf pattern): Ensure at least one operand is a register.
+ * pa.c (emit_move_sequence): Take reload scratch register
+ argument, deal with reloads of SImode and DImode mems into
+ floating point registers, handle function_label_operand moves.
+ (secondary_reload_class): A scratch register is needed if
+ reloading a function_label_operand address (probably doesn't
+ happen) or an SImode or DImode value into/out of a floating
+ point register.
+ * pa.h (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
+ REG_CLASS_FROM_LETTER): Define a new register class
+ FP_OR_SNAKE_FP_REGS, used only be reload_{in,out}{si,di}.
+ (HARD_REGNO_MODE_OK): Allow all integer modes in Snake floating
+ point registers. QImode and HImode pseudoregs may end up there
+ when using xmpyu.
+
+ * pa.md (pic symbolic address pattern): New pattern.
+ (movsi, movdi patterns): Remove some * constraints from fp registers.
+ (pic label address pattern): Fix typo.
+ (function_label_operand patterns): New patterns for loading a
+ label address in HPUX 8.0.
+ * pa.c (finalize_pic): No real initialization is necessary for pic.
+ (output_function_prologue): Save r19, the pic offset table
+ register. If profiling, save and restore the structure value
+ return register (r28) around the call to mcount.
+ (hppa_encode_label, function_label_operand): New functions.
+ Record if a label is a code label so it can be treated specially
+ in HPUX 8.0.
+ * pa.h (TARGET_SHARED_LIBS): New flag. Generate code that can be
+ linked with HPUX 8.0 shared libraries.
+ (TARGET_SWITCHES): New flags: -mshared-libs and -mno-shared-libs.
+ (PIC_OFFSET_TABLE_REGNUM): This is really r19. The preliminary
+ docs from HP were wrong.
+ (ASM_DECLARE_FUNCTION_NAME): Specify "ENTRY" param in .EXPORT
+ directive.
+ (ENCODE_SECTION_INFO): Encode function labels.
+ (ASM_OUTPUT_LABELREF): Deal with function labels.
+ (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Don't do anything for
+ now; their only use (saving stuff during profiling) interacts in a
+ wierd way with required assembler directives at the start of a
+ function. Instead, do the save and restore in the function
+ prologue.
+ (hppa_encode_label): Declare.
+ * pa-hpux.h, pa-ghpux.h (TARGET_DEFAULT): Link against shared
+ libraries.
+ (LINK_SPEC): Don't link against shared libraries if debugging or
+ profiling.
+ * pa1-hpux.h, pa1-ghpux,h (TARGET_DEFAULT): Link against shared
+ libraries.
+
+Wed Oct 14 10:17:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (gcc.xtar): Copy the objc subdir.
+ (mostlyclean): Run the mostlyclean target in the objc subdir.
+ (objc-runtime, libobjc.a, sublibobjc.a): New targets.
+ (objc, objective-c): Dep on objc-runtime.
+
+ * objc/*: New files.
+
+Wed Oct 14 07:17:19 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (smax, smin): Fix typo in output strings.
+
+ * a29k.c (const_16_operand, const_24_operand): Fix typo in declaration
+ of MODE.
+ (gpc_reg_or_immediate_operand, and_operand, add_operand): Likwise.
+
+Wed Oct 14 00:12:16 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (RTX_COST): Fix spacing typo.
+
+Tue Oct 13 21:51:05 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * a29k.md (call, call_value): Don't use call_operand, since
+ checking for recursive calls at this point is not safe.
+
+Tue Oct 13 18:52:17 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-type2.c (my_friendly_abort): Tell them to write to bug-g++.
+
+Tue Oct 13 18:16:12 1992 Chris Smith (csmith@convex.com)
+
+ * convex.h (P_tmpdir): define to use /tmp.
+ (RETURN_POPS_ARGS): correct definition to return size.
+ (ASM_IDENTIFY_GCC): output something between gcc2_compiled and
+ first function to keep gcc2_compiled out of assembler stabs.
+
+ * convex.md (adddi3, ordi3, xordi3): check sign of CONST_INT
+ operands before using as immediates; these insns are word only.
+ (ashrdi3): don't use negative shift counts.
+
+ * convex*.h (CPP_SPEC): define __NO_INLINE_STDLIB
+
+ * xm-convex.h: remove temporary workaround from OS 8.0.
+
+Tue Oct 13 14:10:15 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-lex.c (check_newline): Verify that main_input_filename is
+ valid before using it.
+
+Tue Oct 13 19:08:54 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.c: Now includes reload.h.
+ (spec_reg_operand): Validate mode and know that some regs support
+ MODE_PARTIAL_INT and some MODE_INT.
+ (call_operand, reload_memory_operand, a29k_get_reloaded_address)
+ New functions.
+ (in_operand): Allow constants with MODE_PARTIAL_INT.
+ (out_operand): Allow special registers with any mode.
+ Any MEM a word or wider is valid.
+ (extend_operator): Deleted.
+ (secondary_reload_class): A pseudo is the same as memory; we need
+ BP_REGS for multi-word memory or for bytes and halfword if -mndw.
+ (print_operand): Delete %X; add %m.
+ (print_operand, case 'F'): Check for SYMBOL_REF.
+ * a29k.h (PROMOTE_MODE, ADJUST_COST): New macros.
+ (CALL_USED_REGISTERS): LR0 is call-used.
+ (HARD_REGNO_MODE_OK): Handle MODE_PARTIAL_INT and the special
+ registers that can only hold those modes.
+ (MODES_TIEABLE_P): Clean up and handle MODE_PARTIAL_INT modes.
+ (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add new
+ classes LR0_REGS, FC_REGS, and CR_REGS.
+ (REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
+ (PREDICATE_CODES): Update for new and deleted predicates.
+ * a29k.md: Use GEN_INT when appropriate.
+ (define_attr type): New types for SQRT.
+ (call patterns): Use SCRATCH for LR0.
+ Use new predicate call_operand so that some integers can be
+ used as addresses; fix CALLI so it doesn't accept constant.
+ (EXBYTE, EXTHW, INBYTE, INHW): Use ZERO_EXTEND instead of AND
+ when combine will make it.
+ Use PSImode for BP value and don't reference BP explicitly.
+ Clean up define_expands for these operations.
+ (rotlsi3): Use PSImode pseudo for FC.
+ (sign_extend): Sign extension insns clobber BP.
+ ({load,store}_multiple): Use PSImode pseudo for CR.
+ (MTSR): Add pattern for TRUNCATE from SImode to PSImode.
+ (sqrtsf2, sqrtdf2, movpsi): New patterns.
+ (load/store bytes/halfword): Clean up to accept temporaries as
+ input and use PSImode when required.
+ (movhi, movqi): Allocate temporaries here.
+ (reload_inqi, reload_outqi, reload_inhi, reload_outhi): New
+ patterns.
+ (movdf, movdi, movti): Use SCRATCH for BP register.
+ (reload_{in,out}{df,di,ti}): New patterns.
+
+Tue Oct 13 16:52:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4 (sys/stream.h, sys/strsubr.h): Delete spurious `extern'
+ in various structure definitions.
+
+ * rtlanal.c (single_set): Fix typo in REG_UNUSED check.
+
+ * cse.c (simplify_binary_operation): Insure that folded >> extends
+ the sign even if the host bootstrap compiler doesn't.
+
+ * final.c (output_asm_insn): Advance over the = when processing %=.
+
+ * fixincludes (stdio.h): Fix va_list when preceeded by a *.
+
+Tue Oct 13 14:52:57 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * spc-sol2.h (STARTFILE_SPEC): Add crtbegin.o.
+ (LIB_SPEC): Add crtend.o for running ctors/dtors.
+ * t-sol2 (EXTRA_PARTS): Add crtbegin.o and crtend.o for C++.
+ (FIXINCLUDES): Deleted.
+ * configure (sparc-*-solaris2*): Set fixincludes here.
+
+Tue Oct 13 20:15:45 1992 Eric Youngdale (youngdale@v6550d.nrl.navy.mil)
+
+ * make-cc1.com: Simplify extraction of YYEMPTY from cp-parse.c.
+ Generate c-parse.y, objc-parse.y from c-parse.in if required.
+ Pat Rankin did some of this.
+
+Tue Oct 13 14:06:45 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (in_branch_delay): Allow fpload and fpstore.
+
+ * collect2.c (main): Only install a signal handler for signals
+ that already have handlers.
+ (fork_execute): Don't ignore signals before calling do_wait.
+
+ * i960.md: Change 'f' constraint for dest to '*f' if it is not the
+ only alternative. Add '*f' dest constraints to all patterns where
+ it is valid but was previously missing.
+
+ * i960.h (OVERRIDE_OPTIONS): Enable function inlining.
+ * i960.c (g14_save_reg): Delete variable.
+ (i960_output_call_insn): Add two new parameters arg_pointer and
+ scratch_reg. Save/set/restore g14 if necessary.
+ (i960_expand_call): Delete function.
+ * i960.md (call, call_value): No longer call i960_expand_call,
+ instead call call_internal/call_value_internal pattern.
+ (call_internal, call_value_internal): Rewrite patterns to pass new
+ args to i960_output_call_insn.
+
+ * sparc.md (movstrsi+1): Add `+' to constraints for clobbered inputs.
+
+ * i960.c (i960_output_call_insn): Emit bx instead of b, callx
+ instead of callj.
+
+ * sparc.c (sparc_frw_output_function_prologue): Frame pointer base
+ must be same as for regular sparc code.
+
+Tue Oct 13 06:02:03 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * loop.c (loop_optimize): Verify that max_uid_for_loop is still
+ larger than the uid of any insn. Increase the number of exit
+ blocks from 4 to 32 per loop.
+ (find_and_verify_loops): Stop trying to relocate exit blocks when
+ allocating a new label would exceed max_uid_for_loop.
+
+ * combine.c (subst): Don't change a conditional branch into a
+ conditional move.
+
+ * m88k.md (ext shift patterns): No longer needed.
+
+ * m88k.c (mostly_false_jump): Recognize a sequence properly.
+
+Mon Oct 12 22:31:37 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (LEGITIMIZE_ADDRESS): Fix typo.
+
+Tue Oct 13 00:14:09 1992 H Lu (hlu@eecs.wsu.edu)
+
+ * Makefile.in (install-common): Put - on cmd that handles protoize.
+ (gcc.o, cccp.o): Define TOOLDIR for the compilation.
+ (all HOST_PREFIX_1 targets): Fix typos.
+
+ * x-linux (cpp.a, linux.a, cc1.a, cc1plus.a, gcc.a): Targets deleted.
+ (LD, ALIBS, STANDARD_STARTFILE_PREFIX, GPLUSPLUS_INCLUDE_DIR):
+ Vars deleted.
+
+ * i386linux.h: Delete NO_JUMPTABLE conditional and contents.
+ (GPLUSPLUS_INCLUDE_DIR): Defined.
+ (STARTFILE_SPEC): Changed.
+
+ * gen*.c: Include hconfig.h, not config.h.
+
+Mon Oct 12 16:25:22 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure.bat, vmsconfig.com: Make hconfig.h.
+
+ * vax.h (PRINT_OPERAND): Detect `double' constants by DFmode,
+ since VOIDmode means an integer.
+
+ * mips.h (DEBUG_REGISTER_NAMES): New macro definition.
+ * print-rtl.c (reg_names):
+ Make it static. Use DEBUG_REGISTER_NAMES if that's defined.
+ * regclass.c (reg_names): Reinstate the definition here.
+
+ * fixinc.svr4: Delete excess fi in fixing stat.h.
+
+Mon Oct 12 08:10:37 1992 James Van Artsdalen (jrv@goldman.gnu.ai.mit.edu)
+
+ * Makefile.in (install-fixincludes): Only delete an existing
+ syslimits.h if we install limits.h over it.
+
+ * i386.h (PRINT_REG): Undo Oct 11 change.
+ (DEBUG_PRINT_REG): New macro, used from print-rtl.c.
+
+ * conditions.h (CC_NOT_SIGNED): New macro.
+ * final.c (alter_cond): If CC_NOT_SIGNED, convert signed
+ conditions to unsigned.
+
+ * i386.md (cmpstrM patterns): Compare strings of unsigned chars,
+ not strings of signed chars.
+
+Mon Oct 12 06:31:13 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Save DEST of NI2PAT before calling
+ recog_for_combine, which might make it a PARALLEL.
+
+ * emit-rtl.c (gen_lowpart_common): Allow MODE_PARTIAL_INT where
+ MODE_INT is allowed.
+
+ * combine.c (try_combine): Properly call single_set when validating
+ the result of a define_split.
+
+Mon Oct 12 00:24:29 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (calls_alloca): Don't look within DECL_INITIAL if it's 0.
+
+ * varasm.c (simplify_subtraction): New function.
+ * rtl.h (simplify_subtraction): Declared.
+ * final.c (output_addr_const): Call it.
+
+ * print-rtl.c (DEBUG_PRINT_REG): Renamed from PRINT_REG.
+ (print_rtx): Use DEBUG_PRINT_REG.
+
+Sun Oct 11 16:27:53 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu.edu)
+
+ * genrecog.c (merge_trees): When splitting, remember to clear DUPNO
+ in addition to the other things we can test.
+
+ * recog.c (general_operand, immediate_operand, const_double_operand):
+ Allow CONST_INT with MODE_PARTIAL_INT.
+ (nonmemory_operand): Likewise.
+
+Sun Oct 11 07:53:39 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * xm-i38v4.h,xm-aix386.h (USE_C_ALLOCA): New macro. Define if not
+ using GNU C's builtin alloca.
+
+ * i386.c (notice_update_cc): Only set CC_IN_80387 for float compares.
+
+ * i386.h (PRINT_REG): Make register name arrays static within this
+ macro.
+
+Sun Oct 11 01:41:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * jump.c (jump_optimize): Don't optimize jumps to store-flag insns
+ when BLKmode values are being compared.
+
+Sat Oct 10 16:51:08 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * print-rtl.c (print_rtx): Print hard reg name as well as number.
+ (PRINT_REG): New macro with default definition.
+ (reg_name): Moved here.
+ * regclass.c (reg_name): Deleted.
+
+Sat Oct 10 02:27:14 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386sco.h (TARGET_DEFAULT): New macro - don't make TARGET_IEEE_FP
+ default for SCO.
+
+Sat Oct 10 04:52:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.h (struct function): New fields const_rtx_hash_table,
+ const_rtx_sym_hash_table, first_pool, last_pool, pool_offset.
+ * function.c (pop_function_context, push_function_context):
+ Call {save,restore}_varasm_status.
+ * varasm.c: Include function.h.
+ (restore_varasm_status, save_varasm_status): New fns.
+ (init_const_rtx_hash_table): Allocate the hash tables in obstack.
+ (force_const_mem): Don't use CONST_DOUBLE_MEM for nested fns.
+ (clear_const_double_mem): Do nothing for nested fns.
+ * Makefile.in (varasm.o): Dep on function.h.
+
+Fri Oct 9 18:16:18 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-decl.c (duplicate_decls): Only find out if olddecl is a
+ friend after we know it's not a TREE_LIST.
+
+Fri Oct 9 18:10:19 1992 Jim Wilson (wilson@geech.gnu.ai.mit.edu)
+
+ * sparc.c (sparc_type_code): Return reasonable result for COMPLEX_TYPE.
+
+Fri Oct 9 14:33:26 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * reorg.c (start_of_epilogue_needs): New variable.
+ (mark_target_live_regs): Add in start_of_epilogue_needs when
+ NOTE_INSN_EPILOGUE_BEG is scanned.
+ (dbr_schedule): Compute start_of_epilogue_needs and update
+ end_of_function_needs to include sets by all instructions
+ following NOTE_INSN_EPILOGUE_BEG.
+
+ * m88k.md (return): Always available once reload has completed.
+ (epilogue): Use a return insn rather than an indirect jump.
+
+Fri Oct 9 12:36:54 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * spc-sol2.h (DBX_DEBUGGING_INFO): Defined.
+
+ * function.c (aggregate_value_p): Return 1 if regs we would use
+ are not all call-clobbered.
+
+ * stmt.c (POPSTACK): Pop discarded elts off all the stacks as we go.
+
+Fri Oct 9 07:30:14 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c (mark_target_live_regs): Fix bug in last change.
+
+ * combine.c (subst, case SUBREG): Don't make a new REG for
+ stack, frame, or arg pointer.
+ * emit-rtl.c (gen_lowpart_common, gen_highpart, operand_subword):
+ Likewise.
+
+ * local-alloc.c (optimize_reg_copy_1): Tighten up code to properly
+ handle the case when SRC or DEST is a multi-word hard register
+ and only some parts of the register are set or used. Also, avoid
+ updating register status for DEST if we can't do the optimization.
+
+ * jump.c (jump_optimize): Only use a REG as a target.
+
+ * alpha.c (alpha_builtin_saveregs): Don't use value of NREGS greater
+ than 6 when computing ARGSIZE.
+
+ * va-alpha.h (va_arg): Put parens around all uses of __VA arg.
+
+Thu Oct 8 18:45:00 1992 Arne H. Juul (arnej@lise.unit.no)
+
+ * Makefile.in (install-common-headers): added missing 'then'
+
+Thu Oct 8 15:52:22 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (SELECT_RTX_SECTION): Rename macro from obsolete name
+ SELECT_SECTION_MODE.
+
+ * i386rose.h (whole file): Remove #ifdef before #undef of macros.
+ (LEGITIMATE_CONSTANT_P): Define, so that when half-pic is on,
+ half-pic addresses are not considered legitimate.
+ (SELECT_RTX_SECTION): If putting a half-pic pointer that is
+ loaded, put the pointer into the data section, rather than the
+ readonly_data_section.
+ (SELECT_SECTION): Define.
+ (ASM_OUTPUT_DOUBLE): If not cross compiling, emit double as two
+ longs, otherwise emit .double directive.
+ (ASM_OUTPUT_FLOAT): If not cross compiling, emit float as long,
+ otherwise emit .float directive.
+ (perform_fixdfsi): Copy arg to memory variable.
+ (SIZE_TYPE): Define to be long unsigned int.
+ (PTRDIFF_TYPE): Define to be int.
+ (WCHAR_TYPE)L: Define to be unsigned int.
+
+ * i386.md (movsi): Remove obsolete half-pic code.
+ (call insns): For half-pic insns, force address into register.
+
+Thu Oct 8 14:22:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common-headers): Fix dir in chmods for assert.h.
+
+ * va-i860.h (__savereg, va_arg): Put uses of __va in parens.
+
+ * vax.h (PRINT_OPERAND): Define new code, D.
+ * vax.md (movdi): Use D code for operand 1.
+
+Thu Oct 8 13:23:25 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.md (fp_alu function unit, case fpcc): Fpcc instructions use
+ the fpalu unit. In the most common case their result will be used
+ in a ftest instruction. Minimum distance between the fcmp and
+ ftest instruction is 4.
+
+Thu Oct 8 06:41:15 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * function.c (assign_parms): Provide a safe value for
+ DECL_INCOMING_RTL in case of syntax errors.
+
+ * dwarfout.c (dwarfout_init, dwarfout_finish): Don't output labels
+ or .debug_aranges entries for .data1 and .rodata1 as these
+ sections aren't currently used.
+
+Thu Oct 8 04:44:17 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c (mark_target_live_regs): Look at USE insns made by
+ update_block when scanning forward past target.
+ (mark_target_live_regs, dbr_schedule): Use GET_RTX_CLASS.
+
+ * cse.c (PATHLENGH): Change from 20 to 10 to speed up compilations.
+
+Thu Oct 8 03:07:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (invert_truthvalue): Never alter ARG.
+
+ * Makefile.in (TAGS): Exclude =*.[chy] from tags table.
+
+ * c-lex.c (yylex): For floats, use REAL_VALUES_LESS to distinguish
+ underflow from overflow. Delete special case for 0.0.
+
+Wed Oct 7 16:25:19 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * dwarfout.c (dwarfout_{begin,end}_function): New functions.
+ (body_{begin,end}_attribute): New functions.
+ (dwarf_attr_name): Print AT_body_begin and AT_body_end.
+ (output_{local,global}_subroutine_die): Output the new attributes.
+ * dwarf.h (enum dwarf_attribute): Add At_body_begin and AT_body_end.
+ * final.c (final_scan_insn): Call dwarfout_begin_function.
+ (final_end_function): Call dwarfout_end_function.
+
+ * m88k.h (FASTEST_ALIGNMENT): Define as 8 for -m88110 otherwise 4.
+ (CONSTANT_ALIGNMENT, DATA_ALIGNMENT): Base on FASTEST_ALIGNMENT.
+ * m88k.md (movstrsi): No predicate is needed for the source or
+ destination.
+ * m88k.c (best_from_align): Add a target processor dimension for
+ -m88000, -m88110, and -m88100.
+ (expand_block_move): Choose method and limits based on -m88xxx option.
+ (block_move_no_loop): Extend to allow DImode.
+ * m88k-move.sh: Add the modules moveDI96x and moveDI41x through
+ moveDI47x.
+ * t-m88k, t-m88kluna, t-m88ksvr4: New modules added to MOVE_ASM.
+
+ * m88k.c (output_call): Use different syntax for GAS.
+
+ * m88k.h (READONLY_DATA_SECTION): Don't override svr4.h
+ (ASM_OUTPUT_CASE_LABEL): For svr4, use .rodata.
+
+Wed Oct 7 15:47:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i486-ncr-sysv4): Use i386v4.h.
+ (i386-*-sysv4, i386-*-linux, i386-*-sysv): Handle 486 too.
+ (i486-*-sysv4, i486-*-linux): Deleted.
+ * i486v4.h, i486linux.h: Files deleted.
+
+Wed Oct 7 12:40:00 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * populate (progname): Just the basename of $0 please.
+ (target_dir): Use abs_target_dir and rel_target_dir for clarity.
+ (source_dir): Use abs_source_dir and rel_source_dir for clarity.
+ (*): List input and output dirs on startup.
+ (*): Don't be so verbose; Don't echo names of output dirs/files as
+ they are created.
+
+ * fixinc.svr4 (<sys/signal.h>): Fix types of SIG_DFL, SIG_ERR,
+ SIG_IGN, and SIG_HOLD.
+ (<sys/stat.h>): Turn definitions of stat, lstat, fstat, and mknod
+ into ANSI syntax and add __ to variables used.
+
+ * c-parse.in (component_decl_list): Do pedwarn for missing semicolon
+ after last field decl.
+
+Wed Oct 7 09:49:34 1992 Michael Meissner (meissner@osf.org)
+
+ * decstatn.h (LINK_SPEC): Don't define if it is already defined,
+ ie dec-osf1.h has included decstatn.h.
+
+ * dec-osf1.h (MACHINE_TYPE): Redefine to say DEC OSF/1 instead of
+ ultrix.
+
+Wed Oct 7 03:50:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (target_cpu_default): Var renamed from target_default.
+ Set it to 2, for a 486. Define TARGET_CPU_DEFAULT macro.
+
+ * i386.h (TARGET_CPU_DEFAULT): Add default definition.
+ (TARGET_SWITCHES): Include that in the default.
+
+ * toplev.c (main): Recover correctly from invalid -Wid-clash option.
+
+ * cccp.c (finclude): Set fp->buf earlier, so it's freed on error.
+
+ * Makefile.in (install-common-headers): Avoid ! operator, for assert.h.
+
+Tue Oct 6 20:21:21 1992 Jim Wilson (wilson@geech.gnu.ai.mit.edu)
+
+ * unroll.c (copy_loop_body, JUMP_INSN case): Delete abort in the
+ code for setting the JUMP_LABEL field.
+
+Tue Oct 6 19:29:19 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-call.c (build_overload_call_real): If `functions' is an
+ ADDR_EXPR (as with operator new and delete), give the name of its
+ argument as the error fn.
+
+Tue Oct 6 14:15:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure: Correct conditional in setting build_xm_file.
+
+ * function.c (get_first_block_beg): New function.
+
+ * cross-make (assertdir): Override usual definition.
+ * Makefile.in (install-common-headers): chmod assert.h in proper dir.
+ Use $(assertdir).
+ (assertdir): New variable.
+ (install-dir): Create dir $(includedir).
+ (includedir): Make this /usr/local/include.
+
+Tue Oct 6 12:05:35 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.md (memory function unit, load case): Loads take two cycles,
+ not one.
+
+Tue Oct 6 07:56:05 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (adddi3): Fix typo.
+
+Tue Oct 6 04:03:40 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * m68k.c (floating_exact_log2, standard_68881_constant_p):
+ (standard_sun_fpa_constant_p): Use REAL_VALUE_FROM_CONST_DOUBLE.
+ (print_operand): Likewise.
+
+Mon Oct 5 18:39:29 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * tree.h (TREE_VIA_PROTECTED): Set protected_flag, not static_flag.
+
+Mon Oct 5 18:27:08 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in ($(srcdir)/INSTALL): Add -D INSTALLONLY.
+
+Mon Oct 5 14:46:08 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-parse.y (unary_expr): Use the `new' rule when looking for
+ something like `new(foo) char[10]'.
+
+ * cp-decl.c (grokparms): Don't call digest_init on default args.
+
+Mon Oct 5 02:21:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (allocate_reload_reg): Always check for asm
+ on failure instead of simply aborting.
+
+ * optabs.c (init_optabs): Use cabs as the only libcall for abs.
+
+Mon Oct 5 03:10:14 1992 Mark Eichin (eichin at tweedledumber.cygnus.com)
+
+ * c++ (numargs): $# was used after set was called; instead, save
+ $# in $numargs and use that value instead.
+
+Sun Oct 4 12:34:00 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * dwarfout.c (hard-reg-set.h): Included to get decl of `reg_names'.
+ (PRINT_REG): Default definition added.
+ (dwarf_last_decl): Variable declaration added.
+ (output_reg_number): New function; handle -fverbose-asm reg printing.
+ (output_mem_loc_descriptor, output_loc_descriptor): Call it.
+ (output_decl): Set `dwarf_last_decl' each time this fn is called.
+ * i386.h (hi_reg_name, qi_reg_name, qi_high_reg_name): Declared.
+ (PRINT_REG): Definition moved from i386.c.
+ * i386.c (hi_reg_name, qi_reg_name, qi_high_reg_name): Not static.
+ (PRINT_REG): Definition moved to i386.h.
+
+Sun Oct 4 00:53:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (shadow_tag_warned): Use pedwarn for useless keyword.
+
+ * c-lex.c (readescape): No warning if digits in \x are all 0's.
+
+Sat Oct 3 14:37:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_complex_abs): New function.
+ * expr.h (expand_complex_abs): Add declaration.
+
+Sat Oct 3 07:29:09 1992 Michael Meissner (meissner@osf.org)
+
+ * configure (mips-dec-osf1): Use x-dec-osf1 instead of x-decstatn.
+
+ * x-dec-osf1 (new file): Like x-decstatn, except that INSTALL is
+ installbsd -c.
+
+Sat Oct 3 05:04:43 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * toplev.c (rest_of_decl_compilation): Don't call
+ dwarfout_file_scope_decl as this causes duplicates.
+
+Sat Oct 3 01:35:23 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * explow.c (allocate_dynamic_stack_space) [MUST_ALIGN]:
+ Always add to size, always round up to STACK_BOUNDARY,
+ always round the address.
+
+ * rtl.h (gen_realpart, gen_imagpart): Declared.
+
+Fri Oct 2 20:03:53 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * emit-rtl.c (gen_realpart, gen_imagpart): New functions.
+ * optabs.c (expand_unop, expand_binop): Use them.
+ * expr.c (expand_expr): Use them.
+
+ * cccp.c (main): Handle -U before -D (and -A).
+
+ * assert.h: Add magic comment at beginning.
+ * Makefile.in (includedir): New variable.
+ (USER_H): assert.h removed from value.
+ (install-common-headers): Install assert.h separately, in includedir,
+ but not if file exists and lacks the magic comment.
+
+ * reload1.c (reload): Move test for failure to find any group
+ to after the loop over i. Also check that all the regnos fit
+ below FIRST_PSEUDO_REGISTER.
+
+ * expr.c (expand_expr):
+ For ABS_EXPR, give expand_unop the operand's mode.
+
+Fri Oct 2 14:58:06 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * i386v4.h (DBX_REGISTER_NUMBER): Don't abort here on pseudo-regs.
+ * dwarfout.c (output_mem_loc_descriptor, output_loc_descriptor):
+ Catch cases of bogus DECL_RTL values involving pseudo-regs (for all
+ target systems) and print an annoying message if we ever see such a
+ case.
+
+Thu Oct 1 17:23:08 1992 Michael Meissner (meissner@osf.org)
+
+ * mips-tfile.c (various): Rename some of the index variables and
+ fields to indx, so that it doesn't conflict with the BSD
+ index function, which may be #define'd to strchr. However, the
+ MIPS symbol table has a field called index, so #undef index and
+ rindex, and write our own functions local_index and local_rindex.
+
+ * mips-bsd.h (CPP_PREDEFINES): Add single underscore in front of
+ each of the defines, for RISC-OS 5.0 compatibility.
+
+ * mips-sysv.h (CPP_PREDEFINES): Add single underscore in front of
+ each of the defines, for RISC-OS 5.0 compatibility.
+
+ * mips-svr4.h (CPP_PREDEFINES): Add single underscore in front of
+ each of the defines, for RISC-OS 5.0 compatibility.
+
+ * mips.h (CPP_PREDEFINES): Add single underscore in front of each
+ of the defines, for RISC-OS 5.0 compatibility.
+
+ * mips.c (override_options): Only call setvbuf to make stderr line
+ buffered for -mstats on Ultrix, and OSF/1.
+
+Thu Oct 1 15:18:55 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * reload1.c (emit_reload_insns): Add a case to handle
+ SECONDARY_MEMORY_NEEDED in the SECONDARY_OUTPUT_RELOAD_CLASS code.
+ * sparc.h (SECONDARY_INPUT_RELOAD_CLASS): Also need a temp reg
+ when loading HImode and QImode values from memory to FP_REGS.
+ (SECONDARY_OUTPUT_RELOAD_CLASS): New macro. Define this to handle
+ HImode and QImode stores from FP_REGS to memory similar to above.
+
+Thu Oct 1 13:36:52 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (rescan): If traditional, recognize # only at bol.
+
+ * expr.c (expand_expr): Just return the lowpart or highpart.
+
+ * configure (i386-*-linux, i486-*-linux): New alternatives.
+ * i386linux.h, i486linux.h, xm-linux.h: New files.
+
+ * optabs.c (expand_unop): Handle complex negate and abs val.
+ (init_optabs): Set up libcalls for complex abs.
+ (init_complex_libcalls): New function.
+
+Thu Oct 1 22:58:45 1992 Eric Youngdale (youngdale@v6550d.nrl.navy.mil)
+
+ * make-cc1.com: Extract line containing "#define YYEMPTY" from
+ cp-parse.c, and append to cp-parse.h (a la Makefile.in).
+
+ * cccp.c (main) [VMS]: Use .obj, not .o, in dependencies output.
+
+Thu Oct 1 17:15:49 1992 Chip Salzenberg (chip@tct.com)
+
+ * c-common.c (declare_function_name): __FUNC__ variables
+ are compiler-created, so set DECL_SOURCE_LINE to zero.
+ * c-decl.c (pushdecl): Internally generated vars can be
+ detected with DECL_SOURCE_LINE of zero, not DECL_IGNORED_P.
+
+Thu Oct 1 13:07:21 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (emit_move_sequence): When making a reference to the data
+ space before reload, emit an insn sequence which is much more
+ likely to create "addil" instructions rather than "ldil; add"
+ sequences. Doing so greatly reduces the chance of running into a
+ HPUX linker bug when compiling kernels.
+
+ * pa.h (TARGET_KERNEL): New switch "-mkernel" which forces gcc to
+ avoid "ldil; add" sequences when %r29 and instead generate "addil"
+ sequences. This avoids a HPUX linker bug when compiling kernels.
+ * pa.md (add high part and dp register): Split into two patterns,
+ one for normal code, one for kernels. Kernel version only allows
+ "r1" as the destination register.
+
+ * pa.h (LEGITIMIZE_ADDRESS, SYMBOL_REF case): Emit a sequence
+ which will cause "addil" instructions to be emitted instead of
+ "ldil; add" sequences.
+
+Thu Oct 1 01:09:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in, cond.awk: New files.
+ * Makefile.in (c-parse.y, objc-parse.y): Construct from c-parse.in.
+ (gcc.xtar): Depend on c-parse.y, objc-parse.y.
+ (realclean): Delete c-parse.y, objc-parse.y.
+
+ * explow.c (allocate_dynamic_stack_space): If STACK_DYNAMIC_OFFSET
+ or STACK_POINTER_OFFSET, always round address up to BIGGEST_ALIGNMENT.
+
+ * gstddef.h: If _ANSI_H_, undef _PTRDIFF_T_, _SIZE_T_, _WCHAR_T.
+
+ * gvarargs.h: In the first part (instead of va-*.h), define
+ __gnuc_va_list, as in gstdarg.h. Always use __gunc_va_list
+ as basis for defining va_list.
+ Move interaction with BSD-NET2 down to where va_list itself is defined.
+
+ * cccp.c (do_include): Delete unreachable goto after '"' case.
+
+Thu Oct 1 16:57:22 1992 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * dpx2g.h (NO_DOLLAR_IN_LABEL): Undef because gas understands dollars
+ in labels and gdb expects them if configured for gas.
+ (STARTFILE_SPEC): Include huge.o to be compatible with native cc.
+ (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
+ (CTOR_LISTS_DEFINED_EXTERNALLY, DO_GLOBAL_DTORS_BODY):
+ (STARTFILE_SPEC): Conditionally redefine for a collectless version
+ of gcc if USE_COLLECT2 is not defined.
+
+ * dpx2.ifile: New ld command file to support not using collect2.
+
+Wed Sep 30 17:08:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.c (__eprintf): Do nothing if inhibit_eprintf is defined.
+
+ * pbd.h, spc-sol2.h, tower.h (NO_UNDERSCORES): Deleted.
+
+ * Makefile.in (install-fixincludes): rm syslimits.h before installing.
+ Install it with cp. Add an else-part to the if that installs it.
+
+ * c-decl.c (start_enum): Push obstacks, switch to permanent if global.
+ (finish_enum): Pop obstacks.
+ (store_parm_decls): When clearing ->names, clear out the values
+ from the identifiers, restore shadowed values, and clear ->shadowed.
+
+ * c-decl.c (grokdeclarator): Don't warn of const or volatile function
+ in a system header file.
+
+ * sdbout.c: Don't use system syms.h on hpux.
+
+ * cccp.c (do_xifdef): Skip all kinds of whitespace, in bof test.
+
+Wed Sep 30 15:09:10 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (orcc peephole): Don't accept FP reg for operand 0.
+
+Wed Sep 30 00:47:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h, gvarargs.h: Use <...> to include va-*.h.
+
+ * c-decl.c (start_struct): Push the obstacks.
+ Switch to permanent if at top level.
+ (finish_struct): Pop them.
+
+ * c-decl.c (store_parm_decls): If we have (erroneously) a prototype
+ and old-style parm decls, throw away the old-style parm decls.
+
+ * configure: Default $build after $host. Canonicalize all three
+ config names before the main dispatch and save in $canon_host, etc.
+ Write these into config.status and on terminal at the end.
+
+Tue Sep 29 18:41:54 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (find_splittable_givs): recog_memoized failure return
+ is -1 not 0.
+
+Tue Sep 29 22:19:48 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu)
+
+ * config.sub (os handling): Recognize `linux' as a valid os.
+
+Tue Sep 29 16:05:47 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * limitx.h: Use <...> in #include.
+
+ * Makefile.in (ENQUIRE_CFLAGS): Remove -DNO_SC.
+
+Tue Sep 29 10:14:27 1992 Richard Kenner (kenner@.vlsi1.ultra.nyu.edu)
+
+ * optabs.c (expand_binop): Convert X - C to X + (-C).
+
+Mon Sep 28 22:44:17 1992 Jim Wilson (wilson@cygnus.com)
+
+ * reload.c (find_reloads_address): If tem != ad, then create a new
+ mem to hold it and store it back into memrefloc.
+
+Mon Sep 28 10:44:55 1992 Chip Salzenberg (chip@tct.com)
+
+ * regclass.c: Fix comment syntax after #endif.
+
+Mon Sep 28 17:15:22 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h (va_arg, va_start): Explicitly cast to __gnuc_va_alist.
+
+Mon Sep 28 17:12:04 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (copy_loop_body, JUMP_INSN case): When invert jump
+ insn, must first construct new insn before trying to invert it,
+ so that validate_change will work properly.
+
+ * unroll.c (find_splittable_givs): Pass mem_mode not mode to
+ memory_address_p.
+
+ * unroll.c (copy_loop_body, JUMP_INSN case): When setting
+ JUMP_LABEL field, verify that what we think is a label actually
+ is. If it isn't then map the old JUMP_LABEL to find the new one.
+
+ * sparc.md (orcc peephole): Don't allow FP regs to match pattern.
+
+ * i960.md (indirect_jump): Use bx instead of b*, and accept any
+ address_operand instead of just a register operand.
+
+ * i960.c (i960_round_tree): Correct conversion of bits to bytes to
+ round up to nearest byte.
+ (i960_round_align): Likewise.
+
+Mon Sep 28 15:54:18 1992 Michael Meissner (meissner@osf.org)
+
+ * dec-osf1.h (LINK_SPEC): Fix typo.
+
+Mon Sep 28 08:15:02 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (subsi3): Remove last change.
+ (allocate_stack): Go back to calling subsi3.
+
+Mon Sep 28 02:41:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop): Use get_insns, not gen_sequence.
+
+ * c-typeck.c (build_unary_op): Address of nested fcn isn't constant.
+
+ * libgcc2.c (__builtin_new): Avoid passing 0 to malloc.
+
+ * m68k.md (indirect_jump): Use address_operand as predicate.
+
+ * c-decl.c (finish_decl): Do the pop_obstacks sooner, when it's
+ time to start allocating in the ambient context's obstack.
+ Don't call permanent_allocation unless got back to permanent obstack.
+
+Sun Sep 27 13:06:19 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (assign_parms): If PROMOTE_FUNCTION_ARGS is defined,
+ see if the incoming register should be used in a wider mode.
+ (expand_function_start): Likewise for return value if
+ PROMOTE_FUNCTION_RETURN is defined.
+ * calls.c (struct arg_data): New field unsignedp.
+ (expand_call): Handle PROMOTE_FUNCTION_ARGS and
+ PROMOTE_FUNCTION_RETURN.
+
+ * alpha.h (FUNCTION_VALUE): Promote mode for return value.
+
+ * alpha.h (BYTE_LOADS_SIGN_EXTEND): Define.
+
+ * rs6000.md (subsi3): Don't bother calling negate_rtx for constant;
+ we shouldn't be called with a constant.
+ (maskir patterns): Don't mention an operand before it is used;
+ use operand number 1 for operand with '0' constraint.
+ (allocate_stack): Use reg_or_short_operand for predicate of
+ allocation amount; use negate_rtx and always make a PLUS.
+
+ * romp.h (EXTRA_CONSTRAINT, case 'Q'): Check for MEM instead of
+ calling memory_operand.
+ (SHIFT_COUNT_TRUNCATED): No longer define this.
+
+Sat Sep 26 18:14:15 1992 Michael Meissner (meissner@osf.org)
+
+ * config.sub (os handling): Recognize riscos as an operating
+ system.
+
+ * configure (dec-osf1): Use x-decstatn for xmake_file.
+ (mips computers): Handle RISC-OS 5 vs. RISC-OS 4 configuration
+ changes -- RISC-OS 5. passes -non_shared by default.
+
+ * mips-5.h (new file): RISC-OS rev 5 config file.
+ * mips-5bsd.h (new file): RISC-OS rev 5, bsd 4.3 config file.
+ * mips-5g4.h (new file): RISC-OS rev 5, svr4 + stabs config file.
+ * mips-5gbsd.h (new file): RISC-OS rev 5, bsd 4.3 + stabs config file.
+ * mips-5gdb.h (new file): RISC-OS rev 5 + stabs config file.
+ * mips-5gsysv.h (new file): RISC-OS rev 5 svr3 + stabs config file.
+ * mips-5svr4.h (new file): RISC-OS rev 5 svr4 + stabs config file.
+ * mips-5sysv.h (new file): RISC-OS rev 5 svr3 config file.
+
+ * dec-osf1.h (LINK_SPEC): Pass -non_shared to linker unless
+ -shared was passed.
+ (SIZE_TYPE): Define as long unsigned int.
+ (PTRDIFF_TYPE): Define as int.
+ (WCHAR_TYPE_SIZE): Define as SHORT_TYPE_SIZE.
+
+ * decrose.h (MACHINE_TYPE): Shorten verbage.
+
+ * i386rose.h (TARGET_VERSION): Print appropriate information.
+
+ * xm-mips.h (HAVE_VFPRINTF, HAVE_PUTENV): Define on DEC OSF/1.
+
+ * mips.c (siginfo): Print just current filename, and function
+ being compiled.
+
+ * mips-tfile.c (Size_t): Use long unsigned on OSF/1.
+ (toplevel): Don't define rindex and index on OSF/1.
+
+Sat Sep 26 17:46:57 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * arm.md (comment before extendhisi2): Remove the lie.
+ (zero_extendhisi2): Rewrite to work if op0 == op1. Use
+ gen_lowpart in preparation code.
+ (extendqisi2, extendhisi2): Likewise.
+ (extendqihi2): Expand.
+
+ * arm.md (restorehi): Rewrite for correctness, efficiency, and
+ clarity. Avoid generating insns involving truncate. Generate
+ needed pseudos in preparation statements.
+ (storehi): Likewise.
+ (storeinthi): Likewise.
+ (movhi): Call gen_storehi, gen_restorehi, gen_storeinthi according
+ their new definitions. Use force_reg to put address in register.
+
+ * m68k.md (indirect_jump): Use %a0 for output, and p for constraint.
+
+Sat Sep 26 02:42:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (eliminate_regs_in_insn): Rerecognize if move insn
+ becomes a non-move.
+
+ * Makefile.in (install-fixincludes):
+ Use - when making syslimits.h; fix if-statement syntax.
+
+ * jump.c (jump_optimize): When handling dispatch table that always
+ goes to the same place, verify previous insn exists.
+
+ * c-typeck.c (common_type): Renable code to merge qualifiers
+ given two pointers to compatible types.
+
+Sat Sep 26 12:02:38 PDT 1992 Ron Guilmette (rfg at netocm.com)
+
+ * dwarfout.c (location_attribute): If DECL_RTL looks like (MEM pseudo),
+ treat that variable as optimized away.
+
+Fri Sep 25 19:48:46 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (explicit_flag_signed_bitfields): New variable.
+ (c_decode_option): Set that for -f[un]signed-bitfields.
+ (grokdeclarator): If that's set, and -fsigned-bitfields,
+ disregard -traditional when handling bitfield signedness.
+
+ * configure: Handle --build option. Make link hconfig.h.
+ * Makefile.in: In the targets such as $(HOST_PREFIX_1)rtl.o,
+ use sed to make them include hconfig.h instead of config.h.
+ (distclean): Add command to delete hconfig.h.
+
+Fri Sep 25 19:56:35 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-search.c (compute_visibility): Don't mess with the context.
+
+ * cp-decl.c (grokdeclarator): Return value from do_friend
+ properly; this shouldn't have gone in yet.
+
+Fri Sep 25 02:23:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (initializer_constant_valid_p): Really use endtype.
+
+ * cccp.c (do_include): "Concatenate" multiple "strings" in #include.
+
+ * vmsconfig.com: Renamed from configure.com.
+
+ * next.h (CPP_PREDEFINES): Define __ARCHITECTURE__.
+
+ * dbxout.c (dbxout_symbol): For anonymous enum, output type anyway.
+
+Fri Sep 25 01:33:36 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * function.h (struct function): Add epilogue_delay_list field.
+ * function.c (push_function_context): Save epilogue_delay_list.
+ (pop_function_context): Restore epilogue_delay_list.
+
+ * sparc.md (nonlocal_goto): Force operands[0] to be a register.
+
+ * va-sparc.h (va_arg): Add 3 more (void *) casts to avoid warnings
+ with -Wcast-align.
+
+ * sparc.c (SF_MODES): Accept all single word or smaller integer
+ modes not just SImode. These are needed for fix/float conversions.
+
+ * sched.c (sched_analyze_2, PRE_DEC case): Call sched_analyze_2 in
+ addition to sched_analyze_1.
+
+ * va-i960.h (va_start): Must access anonymous arg as offset from
+ start of argument block.
+
+ * i960.md (movdi, movti, movdf, movtf): Make store zero to memory
+ a separate case, only accept offsettable memory addresses, and call
+ adj_offsettable_operand to calculate subword addresses.
+
+ * i960.c (i960_output_ldconst): Pass missing xoperands argument to
+ output_asm_insn call.
+
+ * a29k.md (movti): Split CONST_INTs into 4 moves, and force all
+ other constants to memory.
+
+Thu Sep 24 21:51:46 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ Complete Cygnus<-->FSF merge.
+
+ Thu Sep 24 17:05:27 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (pushdecl): Use a friendly abort rather than an assert.
+ (grokparms): Pass whether init is set or not for the initialized
+ parameter to grokdeclarator.
+
+ Wed Sep 23 22:09:44 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct), cp-decl2.c (warn_nonvdtor),
+ cp-tree.c (layout_basetypes), cp-tree.h (warn_nonvdtor): Re-enable
+ warnings for non-virtual destructors in some situations.
+
+ Wed Sep 23 15:42:33 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Sep 23 16:31:27 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-decl.c (duplicate_decls): Cast bcopy arguments to char * to
+ avoid warning on OSF/1.
+
+ Wed Sep 23 11:36:44 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (start_method): Give the name of the class if a method's
+ being defined again, rather than say "aggregate scope".
+ * cp-decl2.c (grokfield, grokbitfield, groktypefield): Ditto.
+
+ Tue Sep 1 22:55:59 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cp-cvt.c (convert_to_integer): Prefer unsigned
+ arithmetic if the output type is unsigned and is no more precise than
+ the computation type. This avoids unnecessary sign extension.
+
+ Tue Sep 15 20:26:18 1992 John F Carr (jfc at Athena.MIT.EDU)
+
+ * cp-pt.c (tsubst): Don't call layout_type near start of function
+ with T. const and volatile attributes don't affect the memory
+ structure of the type, and T may not yet be a valid argument for
+ layout_type (for example, if it is an uninstantiated template).
+ Individual switch cases will call layout_type if necessary.
+
+ Mon Sep 21 15:59:22 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (pushdecl): Check if DECL_SOURCE_LINE is non-zero, not
+ if DECL_IGNORED_P is set, when checking for shadowing. We no longer
+ need DECL_IGNORED_P on builtin types.
+ (record_builtin_type): Don't set DECL_IGNORED_P for a builtin type.
+
+ * cp-decl.c (start_decl): When working with virtual functions,
+ always use the node's DECL_CLASS_CONTEXT.
+ * cp-method.c (hack_identifier): Ditto.
+ * cp-search.c (compute_visibility): Ditto.
+
+ * cp-decl.c (grokdeclarator): Don't allow a member to be declared
+ extern.
+
+ * cp-decl.c (grokdeclarator): Return a void_type_node if we're
+ looking at a friend (even after calling do_friend).
+ (pushdecl): Disable some code that's untested and
+ doesn't necessarily help DWARF right now.
+ (finish_function): Always emit debugging info for the
+ return type of a function.
+ (pushdecl): Don't change the DECL_CONTEXT of virtual
+ methods.
+ (finish_enum): Always output debugging info for enums.
+ (grokdeclarator): It's an error if we're doing an init of an extern
+ at the top level. If we are at the top level, just warn.
+
+ * cp-typeck.c (comp_target_parms): Check if strict is non-zero, not
+ just > 0.
+ (build_function_call_real): Don't return an error-mark node when
+ they call "main" from within the fn, it's only a pedantic warning.
+ (pointer_int_sum): Reword warning when using a ptr-to-mem in arith.
+
+ * cp-tree.c (layout_basetypes): Make record_align and const_size
+ unsigned.
+
+ Mon Sep 21 14:53:43 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-tree.h (flag_no_ident): Add extern decl for cp-lex.c.
+
+ * cp-decl.c (duplicate_decls): Save the DECL_UID and DECL_FRIEND_P
+ info from olddecl. Otherwise, they'd get clobbered when newdecl's
+ contents get copied into olddecl.
+
+ * cp-lex.c (check_newline): Delete pedantic error about using #ident,
+ since cccp.c already gives a warning. In the case that
+ ASM_OUTPUT_IDENT is defined, only actually spit it out if flag_no_ident
+ is not set.
+
+ Sat Sep 19 14:53:31 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ Sat Sep 19 11:37:11 1992 John F Carr (jfc at Athena.MIT.EDU)
+
+ * cp-decl.c (finish_decl): Don't call
+ CLASSTYPE_DECLARED_EXCEPTION if TYPE is error_mark_node, to avoid
+ referencing a nonexistent field.
+
+ Fri Sep 18 14:06:06 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-parse.y (component_decl): Remove sorry about not implementing
+ methods in anonymous unions---they're illegal, and we generate an
+ error elsewhere to that effect.
+
+ * cp-decl.c (start_method): Make the error message about a
+ duplicated member a little more informative.
+
+ Fri Sep 18 12:28:13 1992 Brendan Kehoe (brendan at rtl.cygnus.com)
+
+ * cp-parse.y: Define YYDEBUG if SPEW_DEBUG is defined.
+ (debug_yytranslate): YYDEBUG will always be defined, no need to test.
+
+ Fri Sep 18 10:46:19 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-parse.y (unary_expr): When parsing delete, first complain if
+ it's a non-pointer, then check if it's a pointer with the value zero.
+ Also be sure not to call build_delete if that's the case.
+
+Thu Sep 24 18:03:07 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 27.
+ (STRUCT_VALUE_REGNUM): Delete macro.
+ (STRUCT_VALUE): Define as 0, so that structure return addresses
+ are passed as the first argument. This fixes various codegen
+ problems with functions returning structures.
+
+ * mips.c (init_cumulative_args): Don't advance arg pointer if
+ function returns a structure.
+
+Thu Sep 24 12:38:31 1992 Torbjorn Granlund (tege@wombat.gnu.ai.mit.edu)
+
+ * pa.h (REGISTER_MOVE_COST): Fix typo. Use `||' instead of `|'.
+ (REG_CLASS_FROM_LETTER): Don't handle 'r' constraints here.
+ * pa.c (clobbered_register): Delete.
+ (srcsi_operand): Return 1 also for things matching
+ depi_cint_operand.
+ (secondary_reload_class): Replace.
+ * pa.md (ldo/ldil SImode and HImode recognizers): Use
+ "const_int_operand" for operand 1 and simplify final condition.
+ Remove `n' constraint.
+ (depi SImode and HImode recognizers): Remove `n' constraint.
+ (plus:SI ... high ... splitter): Don't overwrite input, go via
+ clobber operand instead.
+ (many patterns): Replace `in' constraint with just `i'.
+ (movstrsi): Don't do (clobber (match_scratch)), use explicit
+ pseudos instead, generated in preparation C code. Don't call
+ force_not_mem for operand 2.
+ (movstrsi recognizer): Add `&' to operand 3.
+ (andsi3): Fix typo.
+ (iorsi3): Fix typo.
+ (load-shift-16): New optimizer.
+ (load-shift optimizers): Set "type" attr.
+
+Thu Sep 24 15:17:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (lang_options): Add Objc options.
+
+ * configure.bat: Use xgcc, not gcc.
+
+Thu Sep 24 06:30:47 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-lex.c (yylex, case '"'): Initialize arg pased to readescape.
+
+ * genattrtab.c (length_used): New variable.
+ (walk_attr_value): Set it when we have (eq_attr "length" ...).
+ (write_const_num_delay_slots): Value is 1 unless LENGTH_USED is set.
+
+ * reorg.c (mark_set_resources, case CC0): Set RES->CC if IN_SEST.
+
+ * regclass.c (forbidden_inc_dec_class, in_inc_dec): New variables.
+ (regclass): Don't alloca the costs twice.
+ Initialize forbidden_inc_dec_class.
+ For regs that have inc-dec, ignore forbidden classes.
+ (record_address_regs): Update in_inc_dec.
+
+Thu Sep 24 02:36:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * syslimits.h: New file, includes system's limits.h.
+ * limitx.h: Include syslimits.h instead of system's limits.h.
+ * Makefile.in (USER_H): Add syslimits.h.
+ (install-fixincludes): If we fix system's limits.h, install that
+ as syslimits.h
+
+ * c-lex.c (readescape): New arg ignore_ptr.
+ (yylex): Pass new arg, handle result that comes back.
+
+Wed Sep 23 19:26:42 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads_address): Properly check for constant address.
+
+ * cse.c (simplify_unary_operation, case SIGN_EXTEND): Use
+ HOST_BITS_PER_WIDE_INT, not HOST_BITS_PER_INT.
+
+ * fold-const.c (fold_convert): Add missing cast to HOST_WIDE_INT.
+
+ * jump.c (jump_optimize): Tighten up test for when we can't
+ delete a set of CC0.
+ Don't insert insns between set and use of CC0.
+
+ * final.c (shorten_branches): Correctly access insn needing delay slot.
+
+ * combine.c (significant_bits, num_sign_bit_copies): Handle SUBREGs
+ made for promoted variables.
+
+ * reorg.c (fill_simple_delay_slots): Don't make copy of insn that
+ references CC0.
+
+ * romp.md (define_attr "type"): New type "ibranch".
+ (define_attr "length"): Set length for "ibranch" type.
+ (define_attr "in_delay_slot"): Add new type "ibranch";
+ for "branch", only has delay slot if length is 4.
+ (define_attr "cc_type"): Add new type "ibranch".
+ (indirect branches): Now type "ibranch".
+
+ * alpha.c (alpha_gp_dead_after): Return 0 if not optimizing.
+
+Wed Sep 23 00:11:35 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gvarargs.h: Finish changing _ANSI_H to _ANSI_H_.
+
+Tue Sep 22 23:39:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386mach.h (perform_fixdfsi): Copy arg to memory variable.
+
+Tue Sep 22 14:54:38 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * loop.c (basic_induction_var): Inside PLUS, when looking for promoted
+ var, make sure it's a REG.
+
+Tue Sep 22 12:21:11 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 26.
+ (REG_PARM_STACK_SPACE): Use UNITS_PER_WORD instead of 4, and
+ substract FIRST_PARM_OFFSET.
+ (FIRST_PARM_CALLER_OFFSET): Delete unused macro.
+
+ * mips.c (init_cumulative_args): Print types of fntype and the
+ return type if -mdebuge.
+
+ * decrose.h (CPP_SPEC): Eliminate defining various builtin
+ functions with -D<name>=__builtin_<name>, if neither -fbuiltin nor
+ -fno-builtin were passed.
+ (CC1_SPEC): Eliminate passing -fno-builtin to the compiler if
+ neither -fbuiltin nor -fno-builtin were passed. Eliminate
+ %{save-temps: } since gcc no longer gives an unknown switch
+ message if it is used.
+
+ * i386rose.h (CPP_SPEC): Eliminate defining various builtin
+ functions with -D<name>=__builtin_<name>, if neither -fbuiltin nor
+ -fno-builtin were passed.
+ (CC1_SPEC): Eliminate passing -fno-builtin to the compiler if
+ neither -fbuiltin nor -fno-builtin were passed. Eliminate
+ %{save-temps: } since gcc no longer gives an unknown switch
+ message if it is used.
+ (MASK_HALF_PIC): Move bit mask to 0x40000000, to allow for i386.h
+ to define more switches without overlapping our private switch.
+ (TARGET switches): Add -mdebugb to debug half-pic code.
+ (OPTIMIZATION_OPTIONS): Only set flag_gnu_linker FALSE always, and
+ flag_inline_functions if -O3. In particular never set
+ -fomit-frame-pointer which currently messes up debugging.
+ (GO_IF_LEGITIMATE_ADDRESS): Define i386-osfrose version that deals
+ with half-pic.
+ (OVERRIDE_OPTIONS): Define to initialize half-pic.
+ (ASM_FILE_END): Define to dump out half-pic variables if needed.
+
+ * t-i386rose (EXTRA_OBJS): Define as halfpic.o.
+ (CONFIG2_H): Add $(srcdir)/halfpic.h.
+ (halfpic.o): Add dependencies.
+
+Tue Sep 22 03:12:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (choose_reload_regs): When setting reg_has_output_reload,
+ loop over multiple regs only for hard reg. Set reg_is_output_reload
+ in separate loop.
+
+Mon Sep 21 12:22:24 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * reorg.c (mark_set_resources, case REG): A register is set iff
+ "in_dest" is nonzero.
+
+Mon Sep 21 14:16:10 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * combine.c (make_extraction): Make test whether to use AND or
+ {SIGN,ZERO}_EXTRACT depend on UNSIGNEDP.
+
+Mon Sep 21 08:26:55 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): If we can't get a register that we know won't
+ interfere with groups, get one that might instead of giving up.
+
+ * reload1.c (reload): Print the needs to the dump file.
+
+Mon Sep 21 02:45:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (put_var_into_stack): Check REG != 0 before dereference.
+
+Sun Sep 20 16:58:05 1992 Fred Fish (fnf at fishpond.cygnus.com)
+
+ * x-svr4: New generic SVR4 host makefile fragment.
+ * x-i386v4: File deleted.
+ * x-ncr3000: Get alloca using ALLOCA, not libucb.a.
+ * configure (i386-*-sysv4*): Use x-svr4, not x-i386v4.
+ * configure (i486-*-sysv4*): Use x-svr4.
+
+Sun Sep 20 21:18:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * combine.c (subst): Set and compare extend_op with 0, not NULL.
+
+ * cse.c (find_comparison_args): New args PMODE1, PMODE2.
+ (fold_rtx, record_jump_equiv): Use them to get modes of comparison.
+ (fold_rtx): Associate MINUS with nested PLUS.
+
+ * seq386.h (LPREFIX): Overridden as `.L'.
+ (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL): Likewise.
+
+Sun Sep 20 05:53:20 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Always call set_significant on new
+ patterns, so don't call just in split case.
+
+ * combine.c (subst): Move sign extension inside arithmetic
+ when we have a constant computation inside another computation.
+
+ * emit-rtl.c (emit_insn_after_with_line_notes): New function.
+ * jump.c (jump_optimize): Delete insns that set registers that
+ are not used elsewhere.
+ Fix some bugs in "if (...) x = a; else x = b;" code.
+ Remove uses of reorder_insns.
+ Add code to make scc insns for "if (...) x = exp;" if EXP is simple
+ enough.
+ Optimize "if (...) x = b;" if jumps very expensive; don't use a REG
+ as the older value of X since it doesn't help and can hurt.
+ Correctly place generated insns in above case.
+
+ * reload.c (find_reloads, find_reloads_toplev): Treat
+ BYTE_LOADS_SIGN_EXTEND just like BYTE_LOADS_ZERO_EXTEND.
+ * combine.c (subst, simplify_and_const_int, significant_bits):
+ Likewise.
+ (num_sign_bit_copies, case MEM): New case for BYTE_LOADS_SIGN_EXTEND.
+ (num_sign_bit_copies, case SUBREG): Handle just like significant_bits.
+
+Sat Sep 19 15:55:31 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (combine_instructions): Clear significant_valid
+ at end of combine pass for a function.
+ (find_split_point, case MEM): See if first operand of the PLUS
+ that makes up an address is complex.
+ (subst): Add missing arg to recursive calls when IF_THEN_ELSE
+ is an arg of an operator.
+ (subst, case IF_THEN_ELSE): Generalize code to propagate comparison
+ result into arms by using known_cond.
+ If an arm is the first operand of the comparison, make it the
+ true arm.
+ Remove unneeded comparison when arms are identical.
+ Try to convert IF_THEN_ELSE to ABS, (neg (abs X)), [US]MIN, [US]MAX.
+ Convert (if_then_else (ne A 0) (OP X C) X) to (OP X (mult A C)).
+ (subst, case SET): If we don't have conditional moves,
+ convert IF_THEN_ELSE into logical operations.
+ (subst, case AND): Always make conditional moves, even if we
+ don't support them on the machine.
+ (known_cond, extended_count): New functions.
+ (gen_binary): For commutative operations, put constant last.
+
+ * combine.c (try_combine): The insns made by a DEFINE_SPLIT might
+ contain a PARALLEL and the call to recog_for_combine might add it.
+
+ * combine.c (simplify_comparison, case ASHIFT): Fix typo.
+
+ * combine.c (try_combine): When removing REG_UNUSED note,
+ update reg_n_deaths.
+ Likewise, when making new REG_DEAD notes for distribute_notes.
+ (remove_death, move_deaths): Update reg_n_deaths.
+ (distribute_notes): When placing second REG_DEAD or REG_UNUSED note or
+ ignoring such a note, update reg_n_deaths.
+
+ * rtl.h (SUBREG_PROMOTED_{VAR,UNSIGNED}_P): New macros.
+ * tree.h (DECL_MODE, DECL_RTL): Update comments.
+ * expr.h (PROMOTE_MODE): Provide default definition.
+ * expr.c (convert_move, convert_to_mode): Strip off a SUBREG made
+ for variables with promoted modes.
+ (store_expr): Store into variables with promoted modes by
+ doing the appropriate extension operation.
+ (expand_expr, case VAR_DECL): Generate SUBREGs for promoted objects.
+ (expand_expr, case SAVE_EXPR): Likewise for SAVE_EXPRs.
+ (expand_increment): Handle increment of promoted objects.
+ * function.c (fixup_var_refs{,_insns}): Add new parms for promoted
+ mode and signedness; all callers changed.
+ Insert mode conversions when required.
+ (fixup_var_refs_1): Add new parms for mode and signedness;
+ handle SUBREGs for promoted values.
+ (assign_parms): Promote the mode of parameters when useful for
+ the target machine.
+ * function.h (struct var_refs_queue): Remove unused field ORIGINAL.
+ Add new fields PROMOTED_MODE and UNSIGNEDP.
+ * integrate.c (expand_inline_function): Convert actual to formal's
+ mode (in case formal was promoted).
+ * loop.c (basic_induction_var): Add new parameter P.
+ Check for bivs that are set over multiple insns and also
+ allow a SIGN_EXTEND to be used; remove check for MINUS since
+ we don't make MINUS with a constant 2nd operand any more.
+ * optabs.c (expand_binop, expand_unop): Don't make SUBREG for promoted
+ variables as operands.
+ * stmt.c (tail_recursion_args): Use mode of DECL_RTL, not
+ DECL_MODE.
+ (expand_decl): Promote modes of scalar variables when useful on
+ target.
+ * unroll.c (find_splittable_regs): If any BIV update isn't
+ simple, don't split it.
+ (final_giv_value): Look for biv updates by matching insns; don't
+ try to reparse the insn.
+ * rs6000.h (PROMOTE_MODE): New macro.
+
+ * rtlanal.c (reg_set_last): Allow old value to be a SUBREG.
+
+ * rs6000.c (print_operand, case 'h', 'H', 'w'): Minor cleanups.
+ * rs6000.h (BRANCH_COST): Increase from 2 to 3.
+ * rs6000.md (smax, smin, umax, umin): Add define_splits.
+
+ * alpha.h (PROMOTE_MODE): New macro.
+ (REG_ALLOC_ORDER): Put $0 in front of $21-$16.
+ (CONST_OK_FOR_LETTER): Change meanings of N, O, and P.
+ (BRANCH_COST): Increase from 3 to 4.
+ (PREDICATE_CODES): Add new predicates reg_or_cint_operand and
+ sext_add_operand.
+ * alpha.md (addsi3): subl can be used to sign-extend addition of
+ small negative constants.
+ (negsi2): Add pattern for (sign_extend (neg ..)).
+ (and pattern): Fix typo in constraint.
+ (ashldi3): Use new definition of constant letters.
+ (smax, smin, umax, umin): Add define_splits.
+ (compares): Can compare constant with zero by adding negative of
+ constant.
+ (store insns): Can store 0 into memory in both integer and FP.
+ * alpha.c (sext_add_operand, reg_or_cint_operand): New function.s
+ (print_operand, case 'r', case 'R'): Clean up code; use CONST0_RTX.
+
+ * rtl.c (note_insn_name): Fix typo: had NOT_INSN_DELETED_LABEL.
+
+ * jump.c (delete_insn): Don't change labels to NOTEs if we would
+ not really have deleted them.
+
+ * genconfig.c (walk_insn_part, case IF_THEN_ELSE): Refine when
+ HAVE_CMOVE_FLAG gets set.
+
+Sat Sep 19 14:52:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): Always use >= with FIRST_PSEUDO_REGISTER.
+
+ * i386mach.h (SIZE_TYPE): Defined.
+
+Sat Sep 19 04:57:06 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (sCOND patterns): Don't allow a MEM in the SET_DEST,
+ because these insns can't have input reloads, and a MEM might need
+ an input address reload.
+
+ * fold-const.c (fold_convert): Avoid using conversion of unsigned
+ to floating; offset value by hand to fit in signed type.
+
+Sat Sep 19 00:50:32 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * integrate.c (subst_constants): Do substitute in address of MEM dest.
+
+ * reload1.c (init_reload): Fix typo.
+
+Fri Sep 18 21:09:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.c: Declare _exit as volatile.
+
+ * function.c (assign_parms): Set MEM_IN_STRUCT_P right in stack slots.
+
+Fri Sep 18 15:58:15 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * fixincludes: Don't look for *.h symlinks if the host doesn't
+ have symlinks.
+
+Fri Sep 18 17:34:27 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (call_internal): If the memory address to call is really
+ a constant integer, load it up into $at and do the call from
+ there.
+ (call_value_internal): Ditto.
+
+Fri Sep 18 03:48:17 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (m88k_volatile_code): New variable.
+ (print_operand): Track volatile memory references and output a
+ serializing instruction before a load when necessary.
+ * m88k.h (TARGET_SWITCHES): Add -m{no,}serialize-volatile.
+ (OVERRIDE_OPTIONS): -m88110 and -m88000 imply -mserilize-volatile.
+ (ADJUST_INSN_LENGTH): Volatile memory operantions may be longer.
+ (CC_STATUS_INIT): Reset m88k_volatile_code to the unknown state.
+ * m88k.md (load store patterns): Prepend loads and stores with %V
+ and %v to track the type and address of the access.
+
+ * m88k.c (m88k_version, m88k_version_0300): New variables.
+ * m88k.h (TARGET_OPTIONS): Generalize to -mversion-STRING.
+ (OVERRIDE_OPTIONS): Compute m88k_version_0300.
+ * m88k.md (call_movstrsi_loop): Renamed from call_block_move_loop.
+ Use call-value for the block move patterns.
+
+ * m88kdgux.h (PERFERRED_DEBUGGING_TYPE): Compute based on
+ m88k_version.
+ (CPU_DEFAULT): Make it -m88000.
+
+ * m88k.h: Don't use #elif
+
+Fri Sep 18 01:08:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common-headers): Don't copy byteorder.h.
+
+Thu Sep 17 20:06:22 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ Complete 13th Cygnus<-->FSF merge.
+
+ Thu Sep 17 13:15:15 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ Do some much-needed housecleaning of the C++ front-end.
+ * cp-call.c (ideal_candidate): Move `p2' down inside #if 0'd (only)
+ section that actually uses it. Delete unused variable `buf'.
+ (build_method_call): Delete unused variable `dtor_specd'.
+ * cp-class.c (finish_struct): Delete unused variable `basetype'.
+ * cp-cvt.c (convert_to_aggr): Add missing argument decl for `protect'.
+ (convert_pointer_to): Delete unused variable `form'.
+ * cp-decl.c: Include string.h/strings.h for strncpy() decl.
+ Add decls for init_* fns. Delete unused decl `push_overload_decl_1'.
+ Don't use `c_function_varargs', C++ doesn't need it.
+ (push_binding_level): Add missing argument decls for
+ `tag_transparent' and `keep'.
+ (lookup_tag): Add missing argument decl for `tags_transparent'.
+ (lookup_name): Add missing argument decl for `prefer_type'.
+ (start_decl): Delete unused variables `classname' and `tmpl'.
+ (grokvardecl): Add missing argument decl for `initialized'.
+ (grokdeclarator): Delete unused variable `t'.
+ * cp-decl2.c (get_temp_name): Delete unused variable `temp'.
+ (finish_table): Delete unused variable `publicp'.
+ (finish_builtin_type): Add missing argument decl for `len'.
+ (finish_file): Delete unused variables `asm_out_file' and
+ `init_function_name'.
+ * cp-except.c (ansi_exception_object_lookup): Add missing
+ argument decl for `type'.
+ (cplus_expand_throw): Delete unused variables `cname', `name',
+ and `raise_id'.
+ * cp-init.c: Delete unneeded forward decl of `init_init_processing'.
+ (build_new): Delete unused variable `alignment'.
+ (expand_vec_init): Add missing argument decl for `from_array'.
+ (build_vec_delete): Delete unused variable `rval'.
+ * cp-input.c (feed_input): Add missing argument decl for `len'.
+ * cp-lex.c: Delete unused variable `nextlastiddecl'.
+ (check_newline): Delete unused variable `tmp'. Place `asm_out_file'
+ inside a conditional for ASM_OUTPUT_IDENT.
+ (real_yylex): Delete unused variable `typename_scope_in_progress'
+ and unused labels `relex' and `reswitch'.
+ * cp-method.c: Include string.h/strings.h for strncpy() decl.
+ (new_text_len): Deleted.
+ (dump_type_prefix): Delete unused variables `print_struct' and `name'.
+ (dump_tyupe): Delete unused variable `print_struct'.
+ (type_as_string): Delete unused variable `spaces'.
+ (do_inline_function_hair): Delete unused variable `cname'.
+ (flush_repeats): Delete unused variable `rval'.
+ (build_t_desc_overload): Delete unused variable `i'.
+ (build_opfncall): Add missing argument decl for `flags'.
+ (hack_identifier): Add missing argument decl for `yychar'.
+ * cp-parse.y (template_instantiate_once): Delete unused
+ variables `id' and `members'.
+ * cp-search.c (lookup_field): Add missing argument decl for `want_type'.
+ (tree_needs_constructor_p): Add missing argument decl for `i'.
+ (dfs_debug_mark): Delete unused variable `pending_vtables'.
+ (dfs_get_vbase_types): Delete unused variable `basetype'.
+ * cp-spew.c (init_spew): Delete unused variables `pc' and
+ `chars_following_typename'.
+ (yylex): Delete unused variables `dk' and `tmp'. Move decl of `t2' down
+ to the block that actually uses it.
+ * cp-tree.c (build_cplus_staticfn_type): Delete unused variable `ptype'.
+ (propagate_binfo_offsets): Delete unused variables `t' and `basetype'.
+ (layout_basetypes): Delete unused variable `binfo'.
+ (array_type_nelts_total): Delete unused variable `index_type'.
+ * cp-tree.h: Add many decls.
+ * cp-typeck.c (comp_array_types): Add missing argument decl
+ for `strict'.
+ (build_compound_expr): Delete unused variable `tmp'.
+ (convert_for_initialization): Delete unused label `converted'.
+
+ Wed Sep 16 12:51:10 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (init_decl_processing): Enable code to add sin and cos
+ as built-in functions.
+
+ * cp-decl.c (duplicate_decls): Enable code to preserve the DECL_UID
+ of olddecl.
+
+ * cp-search.c (lookup_nested_fields): Make sure we're climbing along
+ a chain of nested types, and nothing else.
+
+ Tue Sep 15 17:38:34 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-search.c (lookup_nested_fields): New function.
+ * cp-tree.h: Declare it.
+ * cp-decl.c (lookup_name): Call it if there's no class-local
+ definition. (It could be nested.)
+ * cp-lex.c (do_identifier): Call lookup_nested_field() if necessary.
+
+ Tue Sep 15 12:37:16 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ Mon Aug 24 14:58:02 1992 Chip Salzenberg (chip at animal)
+
+ * cp-typeck.c (build_conditional_expr): Determine constness
+ and volatility with TREE_... tests instead of TYPE_... tests.
+
+ Mon Sep 14 18:00:35 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (grokdeclarator): Remove redundant (and broken)
+ test for multiple destructors in a class.
+
+ Fri Jul 31 19:09:10 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-cvt.c (convert_to_integer): Push truncation inside COND_EXPR.
+
+ Mon Sep 14 17:52:45 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-class.c (finish_struct): Always write all structure types,
+ even if they're defined in a "#pragma interface" header file.
+ Otherwise, XCOFF debugging info is messed up.
+
+ Mon Sep 14 17:39:32 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-class.c (finish_struct): ``Actually, I don't understand
+ this code. What is it supposed to do?'' --Niklas Hallqvist
+
+ Mon Sep 14 17:27:23 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (finish_decl): Don't dump core if a decl is anonymous.
+ A decl is at the global binding level if DECL_CONTEXT is null.
+ (grokdeclarator): Don't globalize a type if its first mention
+ is in a parameter. It's okay to initialize a function in a
+ non-global scope.
+
+ Tue Sep 15 12:15:26 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-typeck.c (c_expand_return): Emit a warning when they try to
+ return the address of a local variable.
+
+ * cp-decl.c (finish_method): Make sure it's indeed nested before
+ checking for the qualified name.
+
+ Mon Sep 14 18:59:25 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Sep 2 11:04:24 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (init_decl_processing): Add sin and cos as built-in
+ functions. Fix type of __builtin_constant_p.
+
+ * cp-lex.c (readescape): For \x, don't include leading 0's in count.
+
+ * cp-typeck.c (build_unary_op): For ADDR_EXPR, just set
+ TREE_CONSTANT if staticp, but don't clear TREE_CONSTANT.
+
+ Mon Sep 14 18:54:41 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-parse.y (permanent_obstack): Move to top of file.
+
+ Mon Sep 14 18:50:19 1992 Mike Stump (mrs@cygnus.com)
+
+ Mon Sep 14 16:39:10 1992 Chip Salzenberg (chip@tct.com)
+
+ [ Changes propagated from diffs to c-* in 920911 snapshot. ]
+
+ * cp-decl.c (duplicate_decls): Set DECL_INLINE in newdecl so it
+ is copied into olddecl. Don't set DECL_EXTERNAL in olddecl.
+ Preserve DECL_UID and DECL_FRIEND_P of olddecl.
+
+ * cp-typeck.c (build_binary_op_nodefault): Don't assume that a
+ target integer fits in a HOST_WIDE_INT when checking shift widths.
+
+ Mon Sep 14 18:15:42 1992 Mike Stump (mrs@cygnus.com)
+
+ Mon Aug 24 14:32:03 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-parse.y (reserved_declspecs): Warn if storage class occurs here.
+ (declmods): Warn if storage class is not first.
+
+ Mon Sep 14 16:59:53 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-method.c (fndecl_as_string): Don't output an extra space when
+ printing the return type of a function.
+
+ Mon Sep 14 16:01:53 1992 Mike Stump (mrs@cygnus.com)
+
+ Fri Jun 12 18:07:00 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * cp-parse.y (structsp, named_class_head_sans_basetype): Call
+ overload_template_name in the case of template specializations so
+ that something like:
+
+ template<class T> struct C { C(); };
+ struct C<int> { C(); };
+
+ works.
+
+ Mon Sep 14 15:51:22 1992 Mike Stump (mrs@cygnus.com)
+
+ Fri Apr 10 13:20:56 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * cp-spew.c (spew_debug): exported this flag for use in cp-decl.c
+ (template_type_seen_before_scope): new global containing contextual
+ information for the parser, making the compiler grok nested types in
+ template classes.
+ (shift_tokens): Guard bcopy calls against moves of zero size.
+ (yylex): Handle nested types in template classes.
+
+ * cp-parse.y (scoped_typename): Handle nested types in template
+ classes.
+ (template_type): Likewise.
+ (base_class.1): Likewise.
+ (member_init): Likewise.
+ (scoped_baseclass): New rule for handling of nested types in
+ template classes.
+
+ * cp-decl.c (xref_defn_tag): Conditionalized debug printout on
+ spew_debug (defined in cp-spew.c).
+ (binding_levels_sane): void function returned value.
+
+ Mon Sep 14 15:41:28 1992 Mike Stump (mrs@cygnus.com)
+
+ Mon Sep 14 17:26:18 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-parse.y (unary_expr), cp-call.c (build_scoped_method_call):
+ NEVER use `maybe_adjust' feature in destructors. It's unsafe.
+
+ Mon Sep 14 15:12:34 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (finish_method): Complain when a qualifier is used as
+ part of a member declaration.
+
+ Mon Sep 14 11:47:30 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl2.c (groktypefield): Revert Wed Aug 19 14:47:08 1992
+ change as it breaks template constructor declarations. Gez, this
+ code is horribly complex, and the comments are wrong. Note,
+ template constructor definitions are broken in the same way, as
+ declarations were with this patch in.
+
+ Fri Sep 11 14:09:01 1992 Mike Stump (mrs@cygnus.com)
+
+ Fri Sep 11 10:34:45 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * cp-decl.c (duplicate_decls): For file-scope redefinitions, note
+ that the variable was previously *defined* at some specific (earlier)
+ point.
+
+ Fri Sep 11 13:49:55 1992 Mike Stump (mrs@cygnus.com)
+
+ Tue Sep 8 21:39:35 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * cp-decl2.c (finish_file): Don't pass `1's as the `functionbody'
+ flag to `poplevel' when getting ready to finishing up the per-
+ compilation-unit constructors and destructors.
+
+ Fri Sep 11 13:28:02 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Upgrade local externs with
+ initializations to be errors, instead of warnings.
+
+ Fri Sep 11 13:03:52 1992 Mike Stump (mrs@cygnus.com)
+
+ Thu Sep 10 09:40:56 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * cp-decl.c (grokdeclarator): Given an error if *either* a `static'
+ or an `extern' specifier is attached to a defining declaration of a
+ static data member.
+
+ Wed Sep 9 19:46:43 1992 Mike Stump (mrs@cygnus.com)
+
+ * c++: Makes sure echo -nostdinc does not eat the -nostdinc.
+
+ Tue Sep 8 13:42:35 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-typeck.c (common_type, case FUNCTION_TYPE): An empty argument
+ list is represented as a void_type_node; make sure we check for
+ that, and not just an empty TYPE_ARG_TYPES list on either side.
+
+ Tue Sep 8 02:31:05 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.c (layout_basetypes, make_binfo): Added support for
+ debugging information about virtual base class pointers.
+
+ Mon Sep 7 15:34:58 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl2.c (temp_name_p): Deleted function, never used anywhere.
+
+ Sun Sep 6 23:09:29 1992 John F Carr (jfc at Athena.MIT.EDU)
+
+ * cp-typeck.c (convert_arguments): Ignore arguments which are
+ ERROR_MARK_NODE to avoid crashes trying to reference fields which
+ are not present.
+
+ Mon Sep 7 12:34:09 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (clear_anon_tags): Do assignment of B after we've seen
+ if we're to work on an anonymous aggregate. No need to make the
+ assignment for nearly every aggr we ever declare.
+
+ Sun Sep 6 17:51:47 1992 Mike Stump (mrs@cygnus.com)
+
+ Sun Sep 6 13:12:16 1992 John Carr (jfc@Athena.MIT.EDU)
+
+ * cp-decl.c (pushdecl, finish_decl, store_return_init,
+ finish_function), cp-decl2.c (constructor_name, finish_file),
+ cp-except.c (cplus_expand_reraise), cp-init.c (emit_base_init,
+ expand_aggr_init_1), cp-typeck.c (build_modify_expr,
+ c_expand_asm_operands, c_expand_return): Include rtl.h and eliminate
+ unneeded casts.
+
+ * cp-decl2.c (grokbitfield): Use NULL_TREE instead of NULL.
+
+ * cp-decl2.c (finish_file): Don't try and not use stdio.h.
+
+ * cp-except.c (cplus_expand_reraise): emit_move_insn takes 2
+ arguments, not three.
+
+ Sat Sep 5 12:04:06 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (finish_function): Undo change of Mon Aug 17 16:28:48
+ 1992; it resulted in lots of unnecessary and incorrect warnings.
+
+ * cp-lex.c (do_identifier): For nested classes, check if a variable
+ being sought is actually in the scope of an enclosing class. If it
+ is, and the variable's non-static, bail.
+
+ * cp-decl.c (grok_enum_decls): Tighten up some code that was pretty
+ twisty.
+
+ * cp-class.c (start_struct): Delete; it was #if 0'd out anyway (C++
+ doesn't need it), and is an old hold-over from c-decl.c.
+
+ * cp-class.c (minus_one_node): Delete, it's not used.
+ (init_class_processing): Delete init of minus_one_node.
+
+ * cp-spew.c (yylex): Check return of resolve_scope_to_name to
+ be NULL_TREE.
+ (frob_identifier): Likewise.
+ (hack_more_ids): Likewise.
+
+ * cp-cvt.c (convert_to_real): Use REAL_VALUE_ATOF to make 0.
+
+ Fri Sep 4 19:23:17 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grok_ctor_properties): When looking for copy
+ constructors, ignore the first argument since it is the in$chrg
+ parameter for the object to copy from.
+
+ Fri Sep 4 14:35:31 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (build_up_reference): Prevent the compiler from dumping
+ core on semantic errors.
+
+Thu Sep 17 17:28:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (initializer_constant_valid_p): Warn about address
+ arithmetic destined for a type that's too narrow.
+ New argument ENDTYPE.
+
+ * limitx.h: Don't include-next if _LIBC_LIMITS_H_ defined.
+
+Thu Sep 17 20:45:16 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cexp.y (parse_escape): Diagnose '\x' with no digits.
+ Diagnose integer overflow when parsing \x escapes.
+
+Thu Sep 17 11:52:53 1992 Michael Meissner (meissner@osf.org)
+
+ * gcc.c (SIGNED_CHAR_SPEC): Use #if rather than ?: in default defn.
+
+Thu Sep 17 14:53:51 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * pa.h (FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Fix double integer
+ argument alignment.
+ (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE, WCHAR_SIZE): Define.
+ * pa-hpux.h, pa-ghpux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE,
+ WCHAR_SIZE): Define for hpux.
+ * x-pa, t-pa : New files.
+ * configure (hppa cases): add definitions for xmake_file and
+ tmake_file.
+
+Wed Sep 16 22:22:15 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.c (print_operand): Don't abort if error: might have been a
+ user asm.
+
+ * i386.md (addsi3,ashlsi3): Handle the case where the stack
+ pointer appears as an index reg.
+
+Wed Sep 16 21:22:23 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (fold_rtx): For SUBREG, actually test subreg_lowpart_p in the
+ code to handle narrowing subregs. And exclude binary ops like DIV
+ where truncating the args is not valid.
+
+ * libgcc2.c (__CTOR_LIST__, __DTOR_LIST__): Moved to separate member.
+ * Makefile.in (LIB2FUNCS): Added _ctors.
+
+Wed Sep 16 23:28:41 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cexp.y (parse_number): Warn about '9' in octal constants.
+ Commonize overflow detection for various radices.
+
+Wed Sep 16 19:33:37 1992 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu)
+
+ * pa.md (casesi): Use emit_jump_insn to emit casesi0 pattern.
+ (xorsi3): Remove `r' from output template.
+ (movstrsi recognizer): Add `+' to operand 0 & 1 constraints.
+
+Wed Sep 16 14:53:51 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 25.
+
+ * mips.c (gen_int_relational): Eliminate all vestiages of
+ figuring out whether the comparison will always be true or false.
+ Let the optimizer figure it out.
+ (gen_conditional_branch): Ditto.
+ (function_epilogue): Print correct number of half-pic pointers
+ and references.
+ (prev_half_pic_refs): New static variable.
+ (prev_half_pic_ptrs): New static variable.
+
+Tue Sep 15 16:10:47 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * toplev.c (rest_of_decl_compilation): Call `dwarfout_file_scope_decl'
+ immediately for actual *definitions* of file-scope variables (and
+ file-scope typedefs too).
+
+Tue Sep 15 20:56:31 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes (EXINIT): Clear it to avoid problems with bad values.
+ * fixinc.svr4 (EXINIT): Likewise.
+
+ * print-tree.c (print_node): Don't print blank line for null
+ fields in a TREE_VEC.
+
+ * cccp.c (macroexpand): Don't output another error message if have
+ already output error message returned from macarg.
+
+ * c-decl.c (grokparms): Copy parm list if it isn't permanent,
+ instead of copying it if temporary allocation has been turned off.
+
+ * final.c (only_leaf_regs_used): Check for global_regs.
+
+ * c-parse.y (typespec): Don't warn if pedantic when typeof used.
+
+ * c-tree.h (lang_identifier): Add limbo_value field for out of
+ scope block level extern declarations.
+ (IDENTIFIER_LIMBO_VALUE): New define, to access that field.
+ * c-decl.c (print_lang_identifier): Print value of limbo field.
+ (pushdecl): Check an extern decl against both previous global and
+ previous limbo declarations. For global declarations, clear limbo
+ value field. For block level extern declarations, set limbo field
+ if zero.
+ (grokdeclarator): If this is a block level extern, then allocate
+ it on the permanent obstack, not the temporary obstack.
+
+Tue Sep 15 15:42:24 1992 Paul Eggert (eggert@twinsun.com)
+
+ * tree.c (int_fits_type_p): Negative ints never fit unsigned
+ types, and unsigned ints with top-bit-set never fit signed types.
+ * c-lex.c (yylex): Integer constant is unsigned for purposes of
+ int_fits_type_p so that it compares huge constants properly.
+
+Tue Sep 15 14:44:51 1992 Michael Meissner (meissner@osf.org)
+
+ * i386.md (string move, string compare): Always issue cld
+ instruction before doing a rep string move, so that we are
+ guaranteed that the bytes are moved/compared correctly.
+
+Tue Sep 15 00:09:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h: (va_arg): Cast ptr to void *, then to TYPE *.
+ * va-i960.h, va-m88k.h, va-mips.h, va-pa.h, va-pyr.h, va-sparc.h:
+ Likewise.
+
+ * rtl.c (ftell): Declaration deleted.
+
+Mon Sep 14 15:17:09 1992 Michael Meissner (meissner@osf.org)
+
+ * configure (arg processing): Add --with-stabs switch.
+ (all mips configurations, except decrose): If --with-stabs, use
+ the configuration file that emits stabs as the debug debug
+ configuration, rather than the native MIPS ECOFF format.
+
+Mon Sep 14 13:28:29 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * configure (option case statement): Index with `$next_arg' instead
+ of `next_arg'. Clean up order and indentation for switches.
+ (several places): Remove space around assignment `='.
+ (usage printing): Don't use `-n' for echo (SysV lossage).
+ Print config.status with `tail +2'.
+
+Mon Sep 14 23:46:19 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-lex.c (yylex): Warn about integers so large that they are unsigned.
+
+ * cexp.y (parse_number): Diagnose integer constants that are too large.
+ Diagnose duplicate `l' and `u' suffixes. Diagnose ` 0x ' and ` 0a '.
+ Warn about integer constants that are so large that they are unsigned.
+
+Mon Sep 14 10:26:34 1992 Charles Hannum (mycroft@hal.gnu.ai.mit.edu)
+
+ * reload1.c (init_reload): Fix typo in last change.
+
+Mon Sep 14 01:17:58 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (init_reload): For reg+reg+const, try various regs.
+
+Sun Sep 13 01:08:06 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cexp.y (exp): Detect signed integer overflow.
+ Replace `(unsigned)' with `(unsigned long)'. When
+ evaluating << and >>, compute the correct answer without shifting
+ by more than HOST_BITS_PER_LONG, or by a negative quantity.
+ (integer_overflow, left_shift, right_shift): New functions.
+
+Sun Sep 13 02:00:52 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * arm.md: Clean up indentation.
+
+ * pa.c (output_load_address): Removed. Nothing uses it.
+ * pa.md (high:DI recognizer): Add return \"\".
+ * pa.md (sCC, bCC expanders): Remove constraints.
+ * pa.md (and-with-immediate optimizer): New pattern.
+ * pa.md (ior-with-immediate optimizer): New pattern.
+ * pa.c (consec_zeros_p, and_operand, ior_mask_p, ior_operand,
+ output_and, output_ior): New functions.
+ * pa.h (output_and, output_ior): Declare.
+ * pa.h (CONST_OK_FOR_LETTER_P): Add 'O' and 'P'.
+ * pa.c (compute_xdepi_operands_from_integer): New function.
+ Some code come from output_zdepi.
+ (output_zdepi): Removed.
+ (depi_cint_operand): New name for zdepi_operand.
+ * pa.md (adddi3): Extend to handle CONST_INT.
+ * pa.md (movstrsi): Change `!= 4' => `< 4' in test for alignment.
+ * pa.md (negsi2): Don't use @ for just one output template.
+ * pa.md (and-not patterns): Make them canonical. Put operands in
+ the right order.
+ * pa.md (casesi): Rewrite. Used to be buggy and slow.
+ * pa.md (several patterns): Make sure # of attribute alternatives
+ match # of constraint alternatives.
+ Return assembler output template instead of calling output_asm_insn.
+ Don't write to operands[n] for n >= max operand number in the
+ pattern, use xoperands instead.
+
+Sat Sep 12 15:06:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * regclass.c (record_reg_classes):
+ Ignore leading % when examining constraint.
+ Don't bypass usual cost computation when a pseudo "matches"
+ a non-pseudo in matching operands.
+
+ * c-lex.c (yylex): If integer value overflows so highword is negative,
+ it needs unsigned long long.
+
+Fri Sep 11 21:09:53 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sys-types.h (va_alist): Supply `int' as the type to define it as.
+
+Fri Sep 11 12:39:39 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (non-[cf]branch define_delay): Use a single delay description
+ for the delay slots in "branch", "call", and "milli" insns.
+ (fbranch define_delay): fbranches have a single delay slot which
+ may be nullified when the branch is taken (regardless of direction
+ or distance to the target.)
+ (in_branch_delay attribute): Disallow fbranch insns explicitly.
+ (floating point branches): Use "fbranch" attribute for these insns.
+ Update output template to properly handle nullification.
+
+Fri Sep 11 10:34:45 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * c-decl.c (duplicate_decls): For file-scope redefinitions,
+ error message distinguishes previous definitions from mere decls.
+
+Fri Sep 11 01:07:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-convert.c (convert_to_integer): Don't pass truncation thru lshift
+ if shift count >= width of narrower type. Instead, just use 0.
+
+ * we32k.h (SIZE_TYPE): Defined.
+
+Fri Sep 11 00:03:45 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (finish_struct): Don't assume that a target integer
+ fits in a HOST_WIDE_INT when checking bit-field widths.
+ * c-typeck.c (build_binary_op): Likewise, when checking shift widths.
+
+Thu Sep 10 22:23:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop):
+ Convert op1 of shift libcall to word_mode.
+
+Thu Sep 10 18:14:36 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * final.c (shorten_branches): Do shorten branches with delay slots
+ if the number of delay slots is constant.
+ * genattrtab.c (write_const_num_delay_slots): New function;
+ creates const_num_delay_slots ().
+ (main): Call it.
+ * genattr.c (main): Write declaration for const_num_delay_slots ().
+
+Thu Sep 10 17:33:42 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (all move patterns): Do not allow memory to memory or
+ non-zero constant to memory moves to be generated, which causes
+ reload to generate the load/store using spilled registers, and
+ does not allow for efficient CSE or scheduling to be done.
+
+ * dec-gosf1.h, iris4g.h: New files.
+
+Thu Sep 10 12:46:17 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * pa.md (casesi): Add `&' to constraint for clobber operand.
+
+ * optabs.c (expand_binop): Fix typo, `mode' => `methods'.
+
+Thu Sep 10 00:21:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop): Delete #ifdef GPC; complex code now uncond.
+
+ * optabs.c (init_fixtab): Fix typo for fix_truncdfqi2.
+
+Wed Sep 9 13:25:53 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * c-common.c (declare_function_name): Allow for anonymous function.
+
+Wed Sep 9 15:56:09 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (mostlyclean): Delete xlimits.h.
+
+ * final.c (output_addr_const):
+ If 2nd arg of MINUS is negative integer, put it in parens.
+
+Wed Sep 9 10:10:30 1992 Michael Meissner (meissner@osf.org)
+
+ * va-mips.h (va_arg): Handle structures larger than 8 bytes.
+ (all macros): Put __ in front of all macro arguments.
+
+Wed Sep 9 00:45:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sol2-crt1.asm (.nope): Really store into environ.
+
+ * libgcc2.c (__gcc_bcmp): New function, in cond on L__gcc_bcmp.
+ * Makefile.in (LIB2FUNCS): Add L__gcc_bcmp.
+
+ * expr.c (expand_expr): Support IN_EXPR.
+
+Tue Sep 8 20:04:43 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-convert.c (convert_to_integer): When optimizing LSHIFT_EXPR and
+ RSHIFT_EXPR, do compares at tree level.
+
+ * tree.c (build_index_type, build_index_2_type): Don't pass
+ HOST_WIDE_INT to routine expecting an int. Don't pass negative
+ value even if hash code is INT_MIN.
+
+Tue Sep 8 17:35:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type_fields): Handle nameless subrecords for Pascal.
+ (dbxout_type): Handle CHAR_TYPE, BOOLEAN_TYPE. FILE_TYPE, SET_TYPE.
+
+ * news.h (ASM_OUTPUT_OPCODE): Deleted.
+
+ * c-parse.y (stmt): In for stmt, put proper lineno before increment.
+ Don't call position_after_white_space.
+
+Tue Sep 8 06:31:17 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-typeck.c (constant_print_warning): Deleted.
+
+Tue Sep 8 05:26:19 1992 Mike Stump (mrs@hal)
+
+ Tue Aug 18 23:56:16 1992 Ron Guilmette (rfg at netcom.com)
+
+ * tree.h (BINFO_VPTR_FIELD): Added to support debugging
+ information about virtual base class pointers.
+
+Mon Sep 7 19:39:45 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * c-typeck.c (constant_print_warning): Deleted.
+ * c-common.c: Moved here.
+
+Mon Sep 7 17:03:07 1992 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (fold): Check abs for constant integer overflow.
+
+Mon Sep 7 01:31:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-common.c (check_case_value): Call constant_expression_warning.
+
+ * cse.c (simplify_binary_operation): For DIV by 0, do nothing.
+
+ * c-decl.c (duplicate_decls): Set DECL_INLINE in newdecl
+ so it is copied into olddecl.
+
+Sun Sep 6 08:53:46 1992 Fred Fish (fnf at fishpond)
+
+ * m68k.md (fsglmul pattern): If FSGLMUL_USE_S, opcode has .s, not .x.
+ * amix.h (FSGLMUL_USE_S): Defined.
+
+Sun Sep 6 17:42:33 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (indirect_jump): Annul the next instruction if the delay
+ slot could not be filled instead of emitting a nop.
+
+ * pa.c (output_function_prologue): Undo Aug. 13 change.
+ If profiling, then this function makes calls. Reflect this in
+ CALLINFO.
+ (output_function_epilogue): If profiling, then be restore "rp" here.
+
+ * pa.md (use_milli_regs attribute): Deleted, not necessary anymore.
+ All references deleted.
+ * pa.c (use_milli_regs): Deleted.
+
+Sun Sep 6 17:11:00 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * arm.h (MOVE_MAX): Define as 4.
+
+ * ns32k.c (hard_regno_mode_ok): Don't abort if unknown mode,
+ return 0 instead. Declare argument MODE as `enum machine_mode'.
+
+ * i860.h (HARD_REGNO_MODE_OK): Allow BLKmode.
+
+Sun Sep 6 16:57:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (init_expr_once): Don't try HARD_REGNO_MODE_OK on VOIDmode
+ or BLKmode.
+
+Sun Sep 6 14:27:57 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-typeck.c (constant_expression_warning): New fn from c-typeck.c.
+
+Sun Sep 6 09:11:46 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * c-decl.c (duplicate_decls): Don't set DECL_EXTERNAL in olddecl.
+ Preserve DECL_UID of olddecl.
+
+Sun Sep 6 03:37:21 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (cmpstrsi): Rewrite expander to handle operands correctly.
+
+Sat Sep 5 22:55:53 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Make change missing from last modification
+ to splitting code.
+
+Sat Sep 5 19:21:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stor-layout.c (layout_type): Caller must give size of FILE_TYPE.
+
+Sat Sep 5 16:34:50 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * arm.c (before functions): Remove xmalloc decl.
+ (arm_asm_output_label): Cast value from xmalloc.
+
+ * arm.md (storehi): Use match_operand for operand 0.
+ Use gen_lowpart to change mode of operand 0.
+ (storeinthi): Use match_operand for operand 0.
+ Change output code to reassign operand 0.
+ (truncsihi2, truncsiqi2, trunchiqi2): Remove these patterns.
+
+Sat Sep 5 02:39:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * news.h (ASM_OUTPUT_OPCODE): Defined.
+
+Sat Sep 5 18:52:21 1992 Jukka Virtanen (jtv@kampi.hut.fi)
+
+ * stor-layout.c (layout_type): Handle BOOLEAN_TYPE, CHAR_TYPE,
+ and FILE_TYPE for Pascal.
+ (fixup_signed_type): New function.
+
+ * optabs.c (init_optabs): Use __gcc_bcmp, not real bcmp.
+ (expand_unop): Handle NEG for complex modes.
+ (expand_binop): Likewise.
+ (expand_complex_binop): New function.
+
+ * expr.c (emit_move_insn): When moving word by word,
+ mark the whole thing as a libcall block.
+ (group_insns): New function.
+ (expand_expr):
+ Implement COMPLEX_EXPR, REALPART_EXPR, IMAGPART_EXPR, CONJ_EXPR.
+
+ * print-tree.c (print_node): Handle BOOLEAN_TYPE and CHAR_TYPE.
+ * emit-rtl.c (gen_highpart): New function.
+
+Fri Sep 4 23:20:59 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i860.md (mulsi3_big): Use low half of result.
+ Use offset 1 in subregs in actual fmlow insn.
+ (fmlow pattern): Split this into alternatives for big and little end.
+
+ * regclass.c (record_reg_class): For matching operands, handle
+ case where the earlier one is not a pseudo like the case
+ where the later one is not a pseudo.
+
+Fri Sep 4 17:24:11 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * pa.c (output_move_double): Use %R to store at auto-incr/decr
+ addr. Split incr and decr cases for store.
+
+Fri Sep 4 03:49:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (main): No program should return the error_count!
+ Return 2 if failure due to signal, 1 if just errors.
+ (execute): Increment signal_count.
+
+ * move-if-change: Undo previous change.
+
+ * c-decl.c (grokparms): Copy arg type list to savable obstack if nec.
+
+Fri Sep 4 19:40:32 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-typeck.c (constant_expression_warning): Now works;
+ it reports signed integer overflow in constant expressions,
+
+ * fold-const.c (left_shift_overflows, same_sign, overflow_sum_sign):
+ New macros.
+ (add_double, div_and_round_double, lshift_double, mul_double,
+ neg_double, const_binop, fold): Check for signed integer overflow.
+ Propagate overflow flags from operands to result.
+ (const_binop, fold_convert): Use pedwarn for overflow warnings.
+ Say `constant expression', not `constant folding', for user's sake.
+
+Thu Sep 3 22:28:41 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ Complete 12th Cygnus<-->FSF merge.
+
+ Thu Sep 3 12:29:24 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ These changes are propagated from changes to c-*.c.
+
+ Mon Aug 17 16:28:48 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (finish_function): Test only can_reach_end for the
+ warning about reaching the end of a non-void function.
+ (grokdeclarator): When promoting an argument, retain unsignedness
+ if traditional or if promoted type is not really getting wider.
+
+ * cp-parse.y (datadef): For empty declaration, use pedwarn.
+
+ Mon Aug 17 17:08:11 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-cvt.c (convert): When converting to variant of same type, fold.
+
+ Wed Aug 19 16:58:41 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-typeck.c (default_conversion): Convert enumeral types to
+ appropriate _signed_ type unless -traditional.
+
+ Tue Aug 4 13:11:36 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-cvt.c (convert): If main variants match,
+ but the type is not identical, make a NOP_EXPR.
+
+ * cp-decl.c (warn_redundant_decls): Declared.
+ (duplicate_decls): Optionally warn about redundant declations.
+ (pushdecl): Never reuse global fcn decl in place of local extern;
+ just copy some info from it.
+ (init_decl_processing): __builtin_saveregs returns void *.
+ (store_parm_decls, finish_function, start_method, finish_method):
+ Compare TYPE_MAIN_VARIANT against void_type_node.
+
+ * cp-decl2.c (warn_redundant_decls): Defined.
+ (lang_decode_option): Decode -Wredundant-decls.
+
+ * cp-typeck.c (build_conditional_expr): Don't use type1 as
+ temporary variable; set result_type directly.
+
+ Tue Aug 4 12:04:17 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-tree.h (C_PROMOTING_INTEGER_TYPE_P): Defined.
+ * cp-class.c (finish_struct): Use it.
+ * cp-decl.c (duplicate_decls, grokdeclarator): Ditto.
+ (grokparms, start_function): Ditto.
+ * cp-typeck.c (self_promoting_args_p, default_conversion): Ditto.
+ * cp-parse.y (primary): Set TREE_CONSTANT in the NOP_EXPR for an enum.
+
+ Tue Aug 4 09:17:32 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (duplicate_decls, grokdeclarator, grokparms):
+ Use TYPE_MAIN_VARIANT when comparing against specific types.
+ (build_enumerator): Use STRIP_TYPE_NOPS.
+ (start_function): Force main() to return "int", not just any
+ integral type.
+
+ * cp-typeck.c (self_promoting_args_p, default_conversion):
+ Use TYPE_MAIN_VARIANT when comparing against specific types.
+ (unsigned_type, signed_type): If type is not known, return it
+ unchanged instead of returning its TYPE_MAIN_VARIANT.
+ (build_binary_op_nodefault): Use TYPE_MAIN_VARIANT when
+ comparing against specific types. Also use STRIP_TYPE_NOPS.
+ Also copy error messages from equivalent code in c-typeck.c.
+
+ * cp-parse.y (primary): Wrap a NOP_EXPR around an enum value.
+
+ Wed Sep 2 18:06:47 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Sep 2 17:33:59 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (grokdeclarator): Default friends to being PUBLIC.
+
+ Tue Sep 1 12:33:01 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * cp-init.c (do_friends): Always return `void_type_node'.
+
+ * cp-decl.c (grokparms): Call digest_init on default arguments for
+ formal parameters.
+
+ * cp-decl.c (xref_tag): The BINFO records describing individual
+ inheritances aren't shared in the lattice.
+
+ Tue Sep 1 12:27:17 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (convert_harshness, compute_conversion_costs): The
+ READONLY flag for a const object could be down in the type of the
+ reference.
+
+ * cp-call.c (compute_conversion_costs): Don't ignore the cost of
+ converting the first argument, if it is not a method. Fixes Mon Aug
+ 31 22:32:34 change.
+
+ Tue Sep 1 11:58:52 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.h (THIS_NAME): Use the name ``this'' instead of the more
+ cryptic name ``$t''.
+
+ Mon Aug 31 22:32:34 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-init.c (build_member_call): When forming method calls that use
+ a qualified name, convert the instance pointer to the type implied
+ by the qualification. Base::member_func(); converts this to be a
+ (Base *).
+
+ * cp-call.c (compute_conversion_costs): Don't penalize conversion
+ of the instance pointer on method calls, as they could be pointers
+ to base classes.
+
+ Mon Aug 31 18:34:33 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (start_function): When a friend function is being
+ defined, put it in (lexical) scope of the class in which it appears.
+
+ Mon Aug 31 09:57:27 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): For assignments to member
+ variables like "X::i", call resolve_offset_ref to get the lhs; all
+ the code and checking was in there, it just wasn't being used.
+
+ * cp-class.c (finish_struct_methods): Give the name of the class
+ in question when reporting that all its member functions are
+ private.
+
+ Sun Aug 30 08:34:03 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl2.c (setup_vtbl_ptr): Disable the code, until problems can
+ be worked around.
+
+ Sat Aug 29 10:34:10 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-init.c (emit_base_init): Undo Sat Jan 18 12:06:58 change by
+ tiemann that incorrectly makes -pedantic initialization of virtual
+ base classes 1 or more levels deep impossible.
+
+ Sat Aug 29 10:03:07 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-class.c (finish_struct): Allow extern "C" functions to be
+ friends.
+
+ Sat Aug 29 04:43:22 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-parse.y (used_extern_spec), cp-decl.c (start_decl,
+ start_function): Make sure extern in extern "C" (fndef | datadef)
+ applies to only one decl. Fixes problem introduced on Thu Aug 20
+ 16:11:58.
+
+ Thu Aug 27 09:33:13 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Name operators properly when
+ complaining about trying to declare it as a method when not in a
+ class.
+
+ * cp-decl.c (grok_reference_init): Forbid volatile->const refs,
+ and vice-versa. Also make the tests apply to all types, not just
+ aggregates. (Now fully compliant with ANSI C++ June 5 1996 WP
+ section 8.4.3.5.)
+
+ * cp-decl.c (shadow_tag): Don't allow a function to be a member of
+ an anonymous union.
+
+ * cp-class.c (finish_struct): For a type that's nested within a
+ class, use the class value itself when checking a typedef that uses
+ that new nested type.
+
+ Wed Aug 26 20:24:07 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-decl.c (decls_match): When converting from a
+ pseudo-METHOD_TYPE for a static member fn, handle the static
+ function being both in the new and old declarations.
+ (revert_static_member_fn): New function.
+
+ * cp-call.c (build_method_call): Put out proper line number for
+ error with the use of a private constructor.
+
+ * cp-decl.c (grokdeclarator): If a storage class is erroneously
+ specified for an operator, print the operator's name out properly in
+ the error message (e.g., print `+' instead of `__pl').
+
+ * cp-decl.c (grokdeclarator): Allow neither constructors nor
+ destructors to be declared const or volatile.
+
+ * cp-decl.c (grok_op_properties): New argument VIRTUALP.
+ Use it to disallow declaring new or delete as virtual. Also
+ use coerce_new_type() and coerce_delete_type() to
+ sanity-check overloading of new and delete.
+ (grokfndecl): Give grok_op_properties if the decl is virtual.
+ (start_method): Likewise.
+
+ * cp-tree.c (lvalue_p, ADDR_EXPR case): Casts to references are
+ lvalues.
+
+Thu Sep 3 02:46:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * caller-save.c (setup_save_areas): Don't look at WORDS_BIG_ENDIAN.
+
+ * fixincludes: If we find a link pointing to ., make a similar
+ link to ., not a link to an absolute name.
+ (stdio.h): Change stdio.h to use stdarg.h to get va_list.
+
+ * cexp.y: Comment syntax fix.
+
+Thu Sep 3 01:48:16 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * we32k.md (casesi): Use match_dup for second mention of operand 4.
+
+Wed Sep 2 06:58:32 1992 Michael Meissner (meissner@osf.org)
+
+ * gcc.c (default_compilers): Add missing comma between strings, so
+ that traditional compilers can compile gcc.c.
+ (main): Don't pass strcpy or strlen a NULL pointer if some of the
+ spec strings in default_compilers are NULL.
+ (validate_all_switches): Don't dereference a NULL pointer if some of
+ the spec strings in defalut_compilers are NULL.
+
+ * gcc.c (main): Use new loop var J to avoid conflict with I.
+
+Wed Sep 2 19:09:02 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * caller-save.c (init_caller_save): If we were unable to
+ find a simple insn which meets all its constraints to save
+ and restore with a single insn in a mode, then set
+ regno_save_mode to VOIDmode to insure that this mode is never
+ used to caller-save the current register.
+
+Wed Sep 2 12:34:39 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * caller-save.c (insert_save_restore): Correct test for
+ determining whether multiple registers can be saved.
+
+ * sparc.md (SImode ldd peepholes): Add `f' to constraints.
+
+ * sparcv4.h (HANDLE_PRAGMA): Delete.
+ * sparc.c (handle_pragma_token): Delete.
+
+ * config/spc-sol2.h: Change the location of the Sun bundled C
+ compiler in MD_STARTFILE_PREFIX (for backup defaults).
+
+Wed Sep 2 09:11:16 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h (MOVE_MAX): Express in bytes not bits.
+
+ * m88k.c (output_ascii): Output known escape characters and don't
+ terminate the constant if an octal escape is used.
+
+Wed Sep 2 06:38:37 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (make_compound_operation, case ASHIFTRT): Add new
+ code to handle (ashiftrt (neg (ashift FOO C1) C2)) just like we
+ currently handle (ashiftrt (OP (ashiftrt FOO C1) C2) C2).
+
+Wed Sep 2 00:15:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install): Add semicolon to make an empty command.
+
+ * reload.c (find_reloads): If have any earlyclobbers, don't let any
+ reloads overlap with them. Make everything RELOAD_OTHER.
+
+ * move-if-change: Give status 1 if file is unchanged.
+
+ * Makefile.in (SYSTEM_HEADER_DIR): New variable.
+ (xlimits.h): New target, broken out from install-limits-h.
+ Look in SYSTEM_HEADER_DIR for system's limits.h.
+ (start.encap): Dep on xlimits.h.
+ (install-limits-h): Install xlimits.h already made.
+ * cross-make (SYSTEM_HEADER_DIR): Overridden.
+
+ * x-i386sco (X_CFLAGS): Deleted.
+ * x-i386sco4: New file, like old x-i386sco.
+ * configure (i386-*-sco3.2v4*): Use x-i386sco4.
+
+ * t-sol2 (gmon.o): Find gmon-sol2.c in config.
+
+ * c-typeck.c (process_init_constructor): Fix bugs in previous change.
+
+Tue Sep 1 23:51:19 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * gcc.c (default_compilers, ".C" and ".ii"): Pass `+e*' into cc1plus.
+ (process_command): Allow +e[012] to be passed down into cc1plus.
+ * cp-decl.c (lang_decode_option): The options `+e0' thru `+e2' will
+ be coming in prefixed as `-+e'.
+
+Tue Sep 1 20:09:29 1992 Paul Eggert (eggert@twinsun.com)
+
+ * print-tree.c (print_node): Avoid 1 << (HOST_BITS_PER_INT - 1),
+ which overflows. Use unsigned % to compute HASH.
+
+Tue Sep 1 17:23:28 1992 Tim Moore (moore@hal)
+
+ * pa.h (CPP_SPEC, TARGET_SWITCHES): new flags: -mnosnake,
+ -mpa-risc-1-0, -mpa-risc-1-1.
+ (ASM_DECLARE_FUNCTION_NAME): Emit argument descriptors for all
+ general registers if current_function_varargs.
+
+Tue Sep 1 11:27:08 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * sparc.c (handle_pragma_token): Only use if HANDLE_SYSV_PRAGMA
+ isn't defined. (We'll be getting the fn from c-pragma.c, then.)
+
+Sat Aug 29 13:44:21 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * tree.h (current_block): Decl deleted.
+ (set_block): Declared.
+ * stmt.c (expand_fixup): Create a BLOCK node (via pushlevel/poplevel)
+ to represent an artificial scope containing all of the fixup code.
+ Also emit NOTE_INSN_BLOCK_BEG/NOTE_INSN_BLOCK_END for that block.
+ (fixup_gotos): Declaration of NEWBLOCK deleted.
+ Call `set_block' to use the BLOCK made in expand_fixup.
+ Deleted code to insert NEWBLOCK into block hierarchy.
+ * c-decl.c, cp-decl.c (current_block): Function deleted.
+ (set_block): New function.
+ (poplevel): If using a previously created block,
+ don't insert it into the parent level.
+ * emit-rtl.c (emit_insns_after): Update last_insn if nec.
+
+Tue Sep 1 10:53:58 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * pa.c (output_move_double): Use `ldo' for immediate adds (instead
+ of `addi' with bad syntax).
+ (output_load_address): Likewise.
+
+Tue Sep 1 02:41:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.h (struct tree_type): Make `align' field an int.
+
+ * c-tree.h (IDENTIFIER_LIMBO_VALUE): New macro.
+ (struct lang_identifier): New field limbo_value.
+
+Mon Aug 31 12:59:22 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * tree.c (make_node): Fix typo in July 6 change:
+ assignment of DECL_IN_SYSTEM_HEADER was inserted in bad place.
+
+Mon Aug 31 21:28:08 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (sched_analyze_2): Remove an explicit dependence between
+ an insn that uses CC0 and the immediately previous insn
+ (SCHED_GROUP_P represents the dependence).
+ (schedule_block): Only check sets_cc0_p on an insn.
+
+Mon Aug 31 15:32:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (struct compiler): spec field is now array of 4 elements.
+ (read_specs): Clear the entire new element of compilers.
+ (lookup_compiler): Copy all of spec array. Check element 0 for @.
+ (main): Concatenate all elements of compiler spec.
+ (validate_all_switches): Validate from all elements of compiler spec.
+ (default_compilers): Split CPP commands into separate strings.
+
+Mon Aug 31 10:06:16 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * caller-save.c (restore_referenced_regs): When restoring a
+ referenced hard register, use CEIL instead of a truncating divide
+ to determine the maximum number of registers to restore.
+ (insert_save_restore): Document maxrestore parameter.
+ (CEIL): Define.
+
+Mon Aug 31 04:02:21 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (const_binop): Delete special case for mult by 3.
+
+ * toplev.c (lang_options): Add terminating zero.
+
+ * configure.bat: Remove version number from initial message.
+
+Sun Aug 30 17:22:11 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * cccp.c (do_pragma): In prev. change, really use U_CHAR *, not char *.
+
+ * aix386.h, i386gas.h, i386sun.h, i386v.h, i386v4.h, i386vgas.h,
+ seq386.h (TARGET_DEFAULT,VALUE_REGNO,FUNCTION_VALUE_REGNO):
+ Move from here,
+ * unx386.h (TARGET_DEFAULT,VALUE_REGNO,FUNCTION_VALUE_REGNO):
+ To here.
+ (TARGET_DEFAULT): Make TARGET_IEEE_FP default on.
+ (VALUE_REGNO): Test for MODE_FLOAT instead of specific modes.
+ (VALUE_REGNO,FUNCTION_VALUE_REGNO): MODE_FLOAT return reg depends on
+ TARGET_FLOAT_RETURNS_IN_80387.
+
+ * i386.h (TARGET_FLOAT_RETURNS_IN_80387): New macro.
+ (TARGET_SWITCHES): Add "no-80387", "no-soft-float",
+ "fp-ret-in-387", and "no-fp-ret-in-387".
+ Change no* switches to no-*.
+ (CONDITIONAL_REGISTER_USAGE): Make 387 regs fixed if the 387 is not
+ used at all.
+ (REG_CLASS_FROM_LETTER): Constraint letters 'f', 't' and 'u' are
+ NO_REGS if the 387 is not used.
+ (TRAMPOLINE_TEMPLATE): Use GEN_INT to generate const_int rtx.
+
+ * x-i386v4: New file.
+ (CLIB): Get alloca from libucb.a.
+ * configure (i386-*-sysv4*): Use x-i386v4.
+
+Sun Aug 30 15:32:54 1992 Dennis Glatting (dglattin at trirex.com)
+
+ * objc-actions.c (create_builtin_decl): Set TREE_STATIC.
+ Don't set DECL_EXTERNAL or TREE_PUBLIC.
+
+Sun Aug 30 03:08:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.y (initlist): Handle ranges of array elements.
+ * c-typeck.c (process_init_constructor): Handle ranges.
+
+ * fixincludes: When link points to a dir $dirname outside $INPUT,
+ copy that dir into $LIB/root$dirname. Translate the link itself
+ into a link to that new dir. Make a file DONE in each treetop dir
+ so no treetop is scanned twice. Improve progress messages.
+
+Sat Aug 29 22:41:49 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (ASM_FILE_START): Object file version number now 8.0.
+
+ * alpha.h (ADJUST_COST): New macro.
+ * alpha.c (alpha_adjust_cost): New function.
+ * alpha.md: Adjust function unit delays and more precisely
+ describe function units.
+
+ * alpha.h (CONST_OK_FOR_LETTER_P): Add new letters `O' and `P'.
+ * alpha.c (print_operand, case 'P'): New case.
+ * alpha.md (ashldi3): Special-case shifts by 1, 2, and 3 bits to
+ use arithmetic instructions.
+ Add pattern for sign-extending shifts by 1, 2, and 3 bits.
+
+ * alpha.h (INITIALIZE_TRAMPOLINE): Use Pmode when appropriate.
+ (FUNCTION_MODE): Use Pmode.
+
+ * alpha.md (div/mod): Indicate that reg 27 is clobbered too.
+
+ * alpha.md (cmov): Add define_split for if_then_else/plus case.
+
+ * expr.c (emit_library_call): Pass correct number of args to
+ convert_to_mode.
+
+ * expr.c (emit_block_move): Eliminate unnecessary test against
+ HOST_BITS_PER_WIDE_INT.
+
+ * optabs.c (expand_{binop,unop}): Don't make invalid
+ paradoxical SUBREGs.
+
+ * genattrtab.c (RTL_HASH, attr_rtx): Avoid warnings by casting
+ pointers to HOST_WIDE_INT instead of int.
+
+
+Sat Aug 29 15:35:58 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (lang_options): New table.
+ (main): Recognize all language-dependent options of any language
+ and always treat them as language-specific and valid.
+
+ * c-decl.c (c_decode_option): -fnotraditional really undoes
+ -ftraditional. Handle -fno-traditional also.
+
+Sat Aug 29 00:34:01 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (record_reg_life): Mark an unused reg as such, even
+ if it appears in SET_SRC.
+
+Fri Aug 28 17:40:49 1992 John F Carr (jfc at Athena.MIT.EDU)
+
+ * tree.c (chainon): Check for op2 being the last elt of the chain.
+
+Fri Aug 28 13:26:56 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cccp.c (do_pragma): Use rindex, not strrchr.
+
+ * tree.h (BLOCK_END_NOTE): Macro definition added.
+ (struct tree_block): `end_note' field added.
+ * stmt.c (last_block_end_note): New variable.
+ (remember_end_note): New function.
+ (expand_end_bindings): Save NOTE_INSN_BLOCK_END in last_block_end_note.
+ * c-decl.c, cp-decl.c (poplevel): Call `remember_end_note' for each
+ newly created BLOCK node.
+ * integrate.c (adjust_copied_decl_tree): New function.
+ (save_for_inline_copying): When making copies of NOTE_INSN_BLOCK_END
+ notes, stash a "forwarding" pointer in the original to point to the
+ copy. Also, when all BLOCKs & insns for a function have been copied,
+ call `adjust_copied_decl_tree' to fixup the end_note pointers in the
+ copied BLOCKs.
+
+Fri Aug 28 13:25:59 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (do_pragma): In prev. change, use U_CHAR *, not char *.
+
+Fri Aug 28 09:11:56 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h (ADJUST_COST): Add definition.
+
+Thu Aug 27 18:27:02 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * c-decl.c (init_decl_processing): Add sin and cos as built-in
+ functions.
+ * expr.c (expand_builtin): Likewise.
+
+ * expr.h (sin_optab,cos_optab): Declare optabs for sin and cos.
+ * optabs.c (sin_optab,cos_optab): Define them.
+ (init_optabs): Initialize them.
+
+ * tree.h (BUILT_IN_SIN,BUILT_IN_COS): New builtin codes.
+
+ * reg-stack.c (record_note_if_dead): Delete function.
+ (record_reg_life_pat): Rewrite to handle any sort of pattern.
+ (record_reg_life): Change interface to record_reg_life_pat.
+
+ (stack_reg_life_analysis): Don't assume that MODE_FLOAT values are
+ always returned in a float reg.
+
+ (subst_stack_regs_pat): Add support for sin and cos insns.
+
+ * i386.c (all gen_rtx (CONST_INT) references): Use GEN_INT to
+ generate const_int rtx.
+ (legitimize_pic_address): Pass NULL_RTX instead of "0" as pointer.
+
+ * i386.md (all patterns): Use GEN_INT instead of gen_rtx to get
+ const_ints.
+ Avoid double-negative "! NON_*" constructs for clarity.
+ Pass NULL_PTR as null parameter instead of 0.
+
+ (sqrtM2): Patterns are only valid if IEEE FP or -ffast-math.
+ (sinM2,cosM2): New patterns.
+ (zero_extract test): New pattern.
+ (movstrsi): Rewrite expander to handle operands correctly.
+
+Thu Aug 27 16:58:09 1992 Michael Meissner (meissner@osf.org)
+
+ * genattrtab.c (MAX_DIGITS): New macro to gauge how much space we
+ need to reserve when printing integers.
+ (expand_delays): Use sizeof and MAX_DIGITS to properly size the
+ strings when calling attr_printf.
+ (expand_units): Ditto.
+ (encode_units_mask): Ditto.
+ (make_numeric_value): Ditto.
+ (oballoc): New macro, to allocate from the hash_obstack.
+ (convert_const_symbol_ref): Call oballoc instead of xmalloc.
+ (get_attr_value): Ditto.
+ (fill_attr): Ditto.
+ (make_length_attrs): Ditto.
+ (gen_attr): Ditto.
+ (gen_insn): Ditto.
+ (gen_delay): Ditto.
+ (gen_unit): Ditto.
+ (find_attr): Ditto.
+ (main): Ditto.
+
+Thu Aug 27 14:47:16 1992 Mike Stump (mrs@mole.gnu.ai.mit.edu)
+
+ * cp-decl.c (curent_block, struct binding_level, poplevel): Copy
+ Tue Aug 25 16:29:47 and Wed Aug 26 01:56:30 changes in c-decl.c by
+ rms.
+
+Thu Aug 27 01:32:11 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-lex.c, cp-lex.c (readescape): DEL isn't printable.
+ * c-typeck.c (check_format): Likewise.
+
+Wed Aug 26 20:42:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (readescape): For \x, don't include leading 0's in count.
+
+ * c-decl.c (init_decl_processing): Fix type of __builtin_constant_p.
+
+ * expr.c (emit_block_move): When trying movstrMM, cvt size to mode MM.
+
+ * c-parse.y (stmt): For computed goto, convert arg to void *.
+
+ * fold-const.c (fold): Do A op C1 ? A : C2 opt only for INTEGER_TYPEs.
+
+Wed Aug 26 20:19:56 1992 Mike Stump (mrs@wombat.gnu.ai.mit.edu)
+
+ * cp-decl.c (insert_block, delete_block): New functions.
+ * cp-parse.y (primary, using compstmt): Call delete_block instead
+ of clearing TREE_USED.
+
+ 11th Cygnus<-->FSF merge.
+
+ Wed Aug 26 12:02:41 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl.c (finish_function): Don't core dump when a conversion is
+ ambiguous.
+
+ Tue Aug 25 16:32:42 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-init.c (build_new), cp-typeck.c (build_c_cast): Handle ``new
+ type ( ... )'' better. Default constructors and better error
+ checking.
+
+ Tue Aug 25 01:21:48 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl2.c (finish_file): Mark " @%$#@!" as being internal.
+
+ Mon Aug 24 16:40:15 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-lex.c (check_newline): For `#pragma implementation', use
+ strcmp to check if it was done at the top level, rather than relying
+ on the pointers being the same.
+
+ Mon Aug 24 20:48:16 1992 Mike Stump (mrs@cygnus.com)
+
+ Fri Aug 21 14:19:27 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-decl2.c (grokclassfn): Mark the artificial `this' parameter as
+ "artificial".
+
+ Thu Aug 20 22:59:16 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-spew.c (arbitrate_lookup): Make sure the type name in an
+ argument list followed by &, or &) is seen as a type name, even when
+ there is an enumeration constant with the exact same name.
+
+ Thu Aug 20 21:58:30 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (get_first_matching_virtual): Don't core dump when a
+ declaration of a static member is seen with the same name as a base
+ class virtual function.
+
+ Thu Aug 20 21:20:31 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (finish_function): Don't core dump on parse errors.
+
+ Thu Aug 20 20:52:43 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-method.c (build_component_type_expr): Don't core dump on parse
+ errors.
+
+ Thu Aug 20 18:31:58 1992 Mike Stump (mrs@cygnus.com)
+
+ Mon Aug 17 17:08:11 1992 Chip Salzenberg (chip@tct.com)
+
+ Copy some changes from the C front-end:
+
+ * cp-type2.c (process_init_constructor): Warn about partly bracketed
+ initializers.
+ * cp-typeck.c (build_component_ref): Don't warn for compound and
+ conditional expressions when pedantic. These are valid in ANSI C.
+
+ Thu Aug 20 16:11:58 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (start_decl), cp-parse.y (have_extern_spec): extern "C"
+ int i; is only a declaration, but a definition, make it so.
+
+ Thu Aug 20 14:46:39 1992 Mike Stump (mrs@cygnus.com)
+
+ Thu Aug 20 02:36:39 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-lex.c (cons_up_default_function): Use DECL_SOURCE_LINE = 0 for
+ compiler generated things, not DECL_IGNORED_P.
+
+ Thu Aug 20 13:13:45 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Aug 19 13:09:45 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-decl.c (grokdeclarator): Propagate some changes from the C
+ front-end to deal with variable sized arrays.
+
+ Wed Aug 19 16:55:43 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): Improve wording on error message.
+ * cp-method.c (type_as_string), cp-pt.c
+ (mangle_class_name_for_template), cp-xref.c (GNU_xref_decl): Delete
+ first argument to type_as_string as it is not needed anymore.
+
+ Wed Aug 19 15:29:02 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Aug 19 13:09:45 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-decl.c (kept_level_p): Update from C frontend.
+
+ Wed Aug 19 14:47:08 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl2.c (groktypefield): Old style conversion operators
+ are being desupported. Conversion operators much have an
+ `operator' in front of them.
+
+ Wed Aug 19 01:57:04 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (ideal_candidate): Fix bug introduced on Jan 21
+ 7:24:21. Warn about ambiguous function calls with multiple
+ same cost conversions.
+
+ Wed Aug 19 00:08:18 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grok_enum_decls): Remove invalid error message.
+
+ Mon Aug 17 18:59:18 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_to_reference, convert,
+ build_type_conversion_1, build_type_conversion), cp-init.c
+ (build_dynamic_new), cp-typeck.c (build_modify_expr_1,
+ convert_for_initialization): Always use constructor_name, and
+ never TYPE_IDENTIFIER (type) and similar things.
+ * cp-init.c (expand_aggr_init_1): Try TYPE_HAS_CONSTRUCTOR
+ before wasting time trying build_method_call.
+ * cp-xref.c: Don't include memory.h.
+
+ Mon Aug 17 15:10:21 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (expand_aggr_init_1): Check for ambiguous
+ conversion. One through constructor and the other through a
+ user defined conversion operator.
+
+ Mon Aug 17 11:51:27 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (convert_harshness): When an argument is T, a T&
+ should be choosen over a const T& when selecting overloaded
+ functions.
+
+ Mon Aug 17 01:37:06 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_method_call): The second argument to
+ operator delete is sometimes magically deleted.
+ * cp-decl.c (init_decl_processing, grokfndecl): Global
+ operator delete never has two arguments.
+
+ Wed Aug 5 18:54:19 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct), cp-tree.c (layout_basetypes):
+ Make sure VFIELD_BASEs are aligned. This fixes a really
+ annoying problem that causes code that uses complex
+ inheritance hierarchies that have virtual bases to get a
+ segmentation fault.
+
+ Wed Aug 5 12:35:07 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Aug 5 08:10:34 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * cp-tree.c (__eprintf): `line' is unsigned.
+ * cp-lex.c: Include stdlib.h and locale.h if needed.
+ * cp-typeck.c (mark_addressable): Use DECL_EXTERNAL not
+ TREE_EXTERNAL.
+
+ Wed Aug 5 03:20:07 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct_methods): Check to make sure
+ operator delete is not overloaded.
+ * cp-decl.c (grokfndecl): Check to make sure operator delete
+ is declared properly.
+
+ Tue Aug 4 16:52:28 1992 Mike Stump (mrs@cygnus.com)
+
+ Mon Aug 3 22:55:04 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-decl.c (grokdeclarator): Make sure const and volatile get
+ put on the type built when building reference types.
+ * cp-parse.y (attrib): tree_cons takes three arguments, not
+ two.
+ * cp-tree.h: Add hash_chainon, build_virtual_init,
+ build_vbase_delete, build_vbase_vtables_init.
+ * cp-typeck.c (build_modify_expr_1. build_modify_expr):
+ build_unary_op takes three arguments, not two.
+
+ Tue Aug 4 16:07:57 1992 Mike Stump (mrs@cygnus.com)
+
+ Sat Aug 1 16:52:20 1992 John Carr (jfc@Athena.MIT.EDU)
+
+ * cp-decl.c (): Make sure the base type of an ARRAY_TYPE is
+ layedout before using it.
+
+Wed Aug 26 17:04:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.h (current_block): Declared.
+
+Wed Aug 26 15:42:11 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ Major rework to have caller-saves emit load/store double insns when
+ possible and to avoid useless resaving of registers restored for
+ source accesses only.
+ * caller-save.c (toplevel): All arrays are multi-dimensional to
+ hold information for multiple save/restore insns. New variable
+ hard_regs_need_restore.
+ (choose_hard_reg_mode): New argument `nregs' indicating how many
+ hard registers are desired. All callers changed.
+ (init_caller_save): Change initialization to handle multiple
+ register saves. A call-used register can not be live across
+ if we can not find a single register mode to save it in.
+ (multiple register saves are optional)
+ (init_save_areas): Change initialization of regno_save_mem to
+ handle multiple register saves.
+ (setup_save_areas): Allocate space for consecutive hard registers
+ in aligned consecutive memory locations. When allocating space
+ for consecutive hard registers, also initialize regno_save_mem
+ for each hard register stored as a single word.
+ (save_call_clobbered_regs): Initialize hard_regs_need_restore.
+ Set hard_regs_need_restore to hard_regs_saved after crossing
+ a call. Also recompute n_regs_saved. At the end of a basic block
+ we need only restore registers in hard_regs_need_restore.
+ (set_reg_live, clear_reg_live): Do the right thing for
+ hard_regs_need_restore and hard_regs_saved.
+ (restore_referenced_regs): Just return if X is a clobber.
+ Test hard_regs_need_restore to determine when to restore a hard
+ register from the save area.
+ (insert_save_restore): Now returns the number of extra registers
+ saved/restored. New argument `maxrestore' which constrains how
+ many hard registers should be restored. All callers changed.
+ Do stores of consecutive registers with double store insns if
+ possible. Else do them with single word insns. Likewise for
+ loads, except constrained by maxrestore. Set hard_regs_saved
+ and hard_regs_need_restore appropriately to minimize useless
+ saves into the save area. Test against hard_regs_need_restore
+ when trying to restore multiple regs and similarly test against
+ hard_regs_saved when storing multiple regs.
+
+
+Wed Aug 26 14:24:28 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (LINK_SPEC): Pass -shared, -non_shared on to linker.
+ * mips-bsd.h (LINK_SPEC): Ditto.
+ * mips-n5.h (LINK_SPEC): Ditto.
+ * mips-svr4.h (LINK_SPEC): Ditto.
+ * mips-sysv.h (LINK_SPEC): Ditto.
+ * iris.h (LINK_SPEC): Ditto.
+ * dec-osf1.h (LINK_SPEC): Ditto.
+
+ * dec-osf1.h (DECSTATION): Don't define, since decstatn.h which is
+ included defines it.
+ (OBJECT_FILE_COFF): Undefine, since the DEC OSF/1 ldfcn doesn't
+ look like the coff version.
+
+ * decstatn.h (LINK_SPEC): Don't define if already defined.
+
+Wed Aug 26 13:56:08 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * reorg.c: Enhance to fill the last delay slot of a call with an
+ unconditional jump.
+ (fill_simple_delay_slots): Look for the case of a call/branch
+ first. If this applies, record the jump as `last_delay_insn'.
+ Later, don't look for additional delay insns if the last one has
+ alreay been filled.
+ (mark_target_live_regs): A sequence may end in an unconditional
+ branch.
+
+ * m88k.md (define_function_unit): Correct and simplify memory unit
+ specification.
+
+Wed Aug 26 01:56:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (poplevel): Store into BLOCK iff it is non-null.
+
+Tue Aug 25 23:24:45 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c: Add #ifdef INSN_SCHEDULING around variables only used
+ by schedule_insns.
+ (INSN_QUEUE_SIZE): Delete default definition.
+
+ * optabs.c, expr.c: Partially undo Mar 7 change. Only call
+ emit_library_call with no_queue == 1 for const functions.
+
+ * sparc.c (SF_MODES): Allow SImode in fp registers.
+ (output_floatsisf2, output_floatsidf2, output_floatsitf2): Delete.
+ * sparc.h: Delete declarations of the above 3 functions.
+ * sparc.md (float*, fix*): Rewrite to match hardware; take/put
+ integer input/output from/to fp register instead of memory or
+ general register. Delete 6 now obsolete combiner patterns.
+
+Tue Aug 25 16:40:15 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cccp.c (do_pragma): Warn if `#pragma implementation "foo.h"' is
+ invoked after "foo.h" has been included.
+
+Tue Aug 25 16:29:47 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (struct goto_fixup): New field context.
+ (fixup_cleanups): Function deleted.
+ (fixup_gotos): Put the fixup in a block, and put that block
+ into its proper place. Use sequences, not reorder_insns.
+
+ * c-decl.c (current_block): New function.
+ (struct binding_level): New field this_block.
+ (poplevel): Use this_block if nonzero, rather than making new BLOCK.
+
+ * sched.c (INSN_QUEUE_SIZE): Add default definition.
+
+Tue Aug 25 15:19:26 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * sched.c (schedule_block): Add a virtual cycle counter CLOCK.
+ Pass CLOCK to schedule_insn.
+ Compute the tail in the scheduling loop, not before it.
+ Enable the stall code that advances the insn queue.
+ Select the insn to schedule and block others with schedule_select.
+ (adjust_priority): Renamed from launch_link.
+ (schedule_insn): Renamed from launch_links.
+
+ * genattrtab.c (struct attr_desc): Add unsigned_p field.
+ (struct function_unit_op): Add issue_delay, conflict_exp, and
+ issue_exp fields. Drop busyexp field.
+ (struct function_unit): Add needs_blockage_function,
+ needs_range_function, issue_delay, and max_blockage fields. Drop
+ costexp, and busy delay fields.
+ (enum operator): Add POS_MINUS_OP, EQ_OP, MIN_OP, RANGE_OP.
+ (operate_exp): Implement new ops.
+ (make_internal_attr): Set unsigned_p based on the value of SPECIAL.
+ (write_attr_get): Function is unsigned when unsigned_p is true.
+ (write_attr_valueq): Write hex value of large constants in a comment.
+ (simplify_by_exploding): Check for EXP having no EQ_ATTR expressions
+ and for all values as the default.
+ (find_and_mark_used_attributes): Add TERMS and NTERMS parameters.
+ (max_attr_value): Allow IF_THEN_ELSE.
+ (simplify_knowing, write_complex_function, extend_range): New
+ functions.
+ (gen_unit): Use local variables to name the fields. Change the
+ meaning of busy-delay to issue-delay.
+ (expand_units): Compute issue_exp. Write attributes for computing
+ `<name>_unit_blockage' and `<name>_unit_blockage_range' functions.
+ Compute max_blockage, and the needs_*_function values.
+ (write_function_unit_info): Write blockage function and conflict cost
+ functions using write_complex_function. Write new function_unit_desc
+ fields.
+ * genattr.c (extend_range, init_range): New functions.
+ (write_units): Add blockage_function, blockage_range_function,
+ max_blockage and max_issue_delay fields to struct function_unit_desc.
+ Drop max_busy_cost field. Write #defines for min/max blockage,
+ issue delay, multiplicity, and simultaneity and for BLOCKAGE_BITS
+ and INSN_QUEUE_SIZE.
+ (main): Compute the new values.
+ * sched.c (insn_queue): Use INSN_QUEUE_SIZE.
+ * rtl.def (define_function_unit): Update documentation.
+
+ * sched.c (insn_units, insn_blockage, insn_tick, unit_last_insn,
+ unit_tick, unit_n_insns): New variables.
+ (schedule_insns): Allocate and initialize insn_tick, insn_units, and
+ insn_blockage.
+ (insn_unit, blockage_range, clear_units, prepare_unit, schedule_unit,
+ actual_hazard_this_instance, actual_hazard, potential_hazard,
+ schedule_select): New functions.
+ (schedule_block): Add dependencies to force insns to remain in order
+ at the end of a block rather than relying on having the scheduler
+ issue them in priority order.
+
+ * sched.c (insn_cost): Add LINK and USED parameters. All callers
+ changed. Supply an ADJUST_COST interface.
+ (insn_cost): Make a dependence from a USE insn free.
+ (priority): Clear the link cost adjustment bits.
+ * rtl.h (LINK_COST_ZERO, LINK_COST_FREE): New macros.
+
+ * genattrtab.c (expand_units): Use the normalized values of the
+ unit's CONDEXP and BUSYEXP.
+
+ * a29k.md (define_function_unit): Change meaning to ISSUE-DELAY.
+ * i960.md (define_function_unit): Change meaning to ISSUE-DELAY.
+ * m88k.md (type attribute, movdi movdf insns): Add loadd.
+ (unit attribute): Delete.
+ (function units): Correct simultaneity values. Break out
+ independent units. Add conflict matrix for the 88100 load double.
+ * mips.md (define_function_unit): Change meaning to ISSUE-DELAY.
+ * pa.md (define_function_unit): Change meaning to ISSUE-DELAY.
+ * sparc.md (define_function_unit): Change meaning to ISSUE-DELAY.
+ Merge FP_MUL, FP_DIV, and FP_SQRT into one function unit.
+
+ * jump.c (delete_computation): Derived from delete_jump.
+ (delete_jump): Use delete_computation.
+
+Tue Aug 25 13:42:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * final.c (final_scan_insn): If 2 consec line notes have same line num,
+ can omit one.
+
+Tue Aug 25 13:38:19 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 24.
+ (ASM_FINAL_SPEC): Use %U to get the last file name created with
+ %u, rather than %u.
+ (ARG_POINTER_REGNUM): Use the hardwired register $0 as the
+ argument pointer, instead of the frame pointer, to allow the frame
+ pointer to be the same as the stack pointer after the initial
+ stack allocations. This is to allow GCC generated code to be
+ linked against MIPS shared libraries. The linker rearranges the
+ code, and needs to have a frame pointer, if used, to be the same
+ as the stack. The argument pointer is always eliminated in favor
+ of the stack pointer or frame pointer.
+ (FRAME_GROWS_DOWNWARD): Don't define this any more.
+ (STARTING_FRAME_OFFSET): Locals start after the stack area to pass
+ arguments to called functions.
+ (STACK_DYNAMIC_OFFSET): If function is a leaf function, but calls
+ __builtin_alloca, assume a default argument area, so the MIPS
+ linker doesn't think a second frame pointer is created.
+ (INITIAL_FRAME_POINTER_OFFSET): Don't define, since we use
+ elimination instead.
+ (ELIMINABLE_REGS): Define to eliminate both the stack pointer and
+ frame pointer, since they are now separate.
+ (CAN_ELIMINATE): Ditto.
+ (INITIAL_ELIMINATION_OFFSET): Ditto.
+ (ELIGIBLE_FOR_EPILOGUE_DELAY): Don't allow variables based off of
+ the argument pointer, in addition to frame and stack pointers.
+ (MUST_SAVE_REGISTER): Add in GP_REG_FIRST to 31, in case we ever
+ change the base of the gp registers.
+ (MIPS_STACK_ALIGN): Use ~7, instead of 0xfffffff8.
+
+ * mips.c (number_functions_processed): Delete variable, nobody
+ uses it anymore.
+ (mips_debugger_offset): Add support for the frame pointer being
+ the same as the stack pointer, instead of being the same as the
+ argument pointer. Abort if the address is not based on any of the
+ stack, frame, or argument pointers.
+ (print_operand_address): Add checks for the arg pointer not being
+ eliminated.
+ (function_prologue): Ditto.
+ (mips_expand_prologue): Ditto.
+ (function_epilogue): Ditto.
+ (mips_expand_epilogue): Ditto.
+ (function_epilogue): Strip leading '*' if it exists from
+ current_function_name when printing statistics. Delete increment
+ of number_functions_processed.
+ (compute_frame_size): Don't base extra_size on the macro
+ STARTING_FRAME_OFFSET. If function is a leaf function, but calls
+ __builtin_alloca, allocate an arg area, so that the MIPS linker
+ will not complain about creating a second frame pointer. Move the
+ argument save area beneath local variables.
+
+ * decrose.h (ASM_FINAL_SPEC): Use %U to get the last file name
+ created with %u, rather than %u.
+
+ * gcc.c (do_spec_1): Add %U to return the last name generated with
+ %u. This is for use with mips-tfile, to find the generated object
+ file.
+
+
+Mon Aug 24 18:09:34 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_unary_op): For ADDR_EXPR, just set TREE_CONSTANT
+ if staticp, but don't clear TREE_CONSTANT.
+
+Mon Aug 24 13:52:13 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * gcc.c (process_command): Don't set verbose_flag if they make a
+ typo (e.g., `-v-E'); only when it's exactly "-v".
+
+Mon Aug 24 06:49:16 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst): When moving operation inside IF_THEN_ELSE,
+ make a new rtx instead of using SUBST due to sharing.
+
+ * combine.c (simplify_comparison): Correct test for sign extension
+ when trying to widen comparison.
+
+Sun Aug 23 18:58:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (fold): Avoid the normal STRIP_NOPS on arg of NOP_EXPR.
+
+Sun Aug 23 15:32:03 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * stmt.c (expand_end_bindings): Generation of NOTE_INSN_BLOCK_END
+ moved down so that it occurs after call to `expand_cleanups'.
+
+Sun Aug 23 16:24:32 1992 Michael Meissner (meissner@osf.org)
+
+ * decrose.h (CPP_SPEC): Don't define strcmp as __builtin_strcmp in
+ the case neither -fbuiltin nor -fno-builtin were defined.
+ * i386rose.h (CPP_SPEC): Ditto.
+
+Sun Aug 23 02:03:41 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.c (__builtin_new): Cast the result of malloc.
+
+ * toplev.c: Fix typo in prev change.
+
+ * c-decl.c (insert_block, delete_block): New functions.
+ * c-parse.y (primary, using compstmt): Call delete_block
+ instead of clearing TREE_USED.
+ * expr.c (expand_expr): For BIND_EXPR, call insert_block on the block.
+
+Sat Aug 22 14:12:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure: Use absolute pathname in value of INSTALL.
+
+Sat Aug 22 06:42:39 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * emit-rtl.c (insn_emit_once): Provide a zero constant for CC modes.
+
+Fri Aug 21 18:33:30 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * reorg.c (fill_simple_delay_slots): Always try to fill empty
+ delay slots with insns from beyond the delay insn, even if
+ optimize_skip was attempted.
+ (fill_simple_delay_slots): When filling with insns from after the
+ delay insn, make sure to always account for the sets and
+ references in the delay insn.
+
+Fri Aug 21 16:47:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sparc.c (print_operand): Use output_operand_error for unknown code.
+
+ * c-typeck.c (build_conditional_expr): Use TREE_READONLY and
+ TREE_THIS_VOLATILE, not TYPE_...
+
+Fri Aug 21 14:02:20 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reload.c (find_dummy_reload): Restore original RTX instead of
+ passed IN rtx.
+
+Fri Aug 21 07:53:12 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * optabs.c (expand_binop): If, e.g., mulqi3 doesn't exist, try
+ mulqihi3.
+
+ * rs6000.h (FUNCTION_ARG): Don't make an EXPR_LIST if making a libcall.
+
+ * combine.c (subst): Move up test for too many restarts.
+ If we restart, clear OP0_MODE since we don't know it.
+
+Fri Aug 21 02:11:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * emit-rtl.c (emit_insns_after): New function.
+
+Fri Aug 21 01:53:04 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (call_value+1): For non-dynamic calls, use the "call"
+ attribute, set length to 1, and fix output template to work
+ properly with delay slots.
+
+ * pa.md (address and use_call_clobbered attributes): Deleted,
+ these attributes are useless. All references deleted.
+ (call define delay): Use "in_branch_delay" as the condition since
+ "call" delay slots and unconditional "branch" delay slots allow the
+ same type of insns.
+ (in_call_delay conditional): Deleted.
+ (branch define delay): Do not define an annul-if-true delay slot.
+ It is useless for an unconditional branch.
+ (all delay branch conditionals): Make sure "call", "dyncall", "multi",
+ and "milli" insns are explicitly disallowed in delay slots.
+
+ * pa.c (output_mul_insn): Delete nop after branch in template,
+ conditionally emit a nop if the delay slot was not filled. (via %#)
+
+ * pa.c (output_function_prologue): Handle profiling in a function
+ without a frame pointer.
+
+Thu Aug 20 16:16:40 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * va-m88k.h (__INT_VARARGS_H): Define this to avoid trouble on DG/UX.
+
+Thu Aug 20 11:07:26 1992 Michael Meissner (meissner@osf.org)
+
+ * final.c: Move include of stdio.h before output.h.
+
+Thu Aug 20 01:08:55 1992 Pat Rankin (rankin at eql.caltech.edu)
+
+ Support for bootstrapping cpp & cc1 with VAX C under VMS.
+
+ * xm-vax-vms.h (USE_C_ALLOCA,NO_STAB_H): Define for VAXC.
+ (bcopy,bzero,bcmp,index,rindex): Define as ANSI/SYSV counterparts.
+ (QSORT_WORKAROUND, qsort): New macros, for avoiding buggy
+ qsort in VAXCRTL library.
+ (check_for_full_enumeration_handling,...): Use macros to shorten
+ several external names which are longer than 31 characters to
+ avoid warnings about truncation.
+ (unlink): Remove redundant definition.
+ * vax.c (not_qsort): New function.
+ * cccp.c (toplevel: create_definition): Move forward declaration
+ past the definition of struct macrodef.
+ (strncat): New function.
+ (bcopy, bzero, bcmp): Remove #if VMS code--always use inline C loops.
+ * genrecog.c, reload1.c: Compare enums (preds. codes, mem_mode)
+ explicitly to 0 in conditionals to work-around a VAXC bug that
+ disallows enum as arguments to && and || operators.
+ * getpwd.c (getpwd): Add alternative defn for VMS.
+ * toplev.c (environ): Make declaration conditional.
+ (main: -g debugging setup): Get rid of \ in #if condition.
+ * make-cccp.com,make-cc1.com (CC,CFLAGS,LIBS): Add commented command
+ variants for bootstrapping gcc-cpp and gcc-cc1 with VAXC.
+ * make-cccp.com (alloca): Build alloca.obj from alloca.c if LIBS needs it.
+
+ Not yet installed:
+
+ * machmode.h (FILE_TYPE): For VMS, make sure FILE_TYPE is not
+ defined as a macro, so that VAXC's <stdio.h> won't break tree.h.
+ * genemit.c (gen_exp): #if VAXC, output a newline in front of
+ gen_rtx calls, to prevent excessively long lines in insn-emit.c.
+
+Thu Aug 20 11:32:18 1992 Michael Tiemann (tiemann@mole.gnu.ai.mit.edu)
+
+ * cp-tree.h: Fix incorrect comment about "$this" needing to
+ be lexicographically less than any other identifier.
+
+Thu Aug 20 05:37:00 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.md (load_multiple): Operand 2 should be a MATCH_OPERAND.
+ (store_multiple_{,no_}bug): Likewise.
+
+ * reorg.c (mark_set_resources): Fix two bugs in last change.
+
+ * expr.c (init_expr_once): Set direct_load and direct_store if SOME
+ hard register can be loaded or stored; not just if the first one
+ we pick can be.
+
+Thu Aug 20 01:40:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * combine.c, emit-rtl.c, final.c, gcc.c, genattrtab.c, mips-tfile.c:
+ Put include of stdio.h after GCC header files
+ (for i860-stardent-sysv4).
+ * tree.c: Likewise.
+
+ * fixincludes (stdio.h): Rename va_list to __va_list__ to coexist
+ with gvarargs.h.
+
+Wed Aug 19 21:06:49 1992 Jim Wilson (wilson@cygnus.com)
+
+ * cccp.c (finclude): Increment indepth before calling
+ trigraph_pcp, so that warning uses the correct file name.
+
+Wed Aug 19 07:07:41 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (force_to_mode): Add missing test of and_optab.
+
+ * genconfig.c (have_cmove_flag): New variable.
+ (walk_insn_part): Add new parm NON_PC_SET_SRC; all callers change.
+ Look for IF_THEN_ELSE in a SET_SRC that isn't setting PC and
+ set have_cmove_flag if so.
+ (main): Define HAVE_conditional_move if have_cmove_flag is non-zero.
+ * combine.c (subst, case AND): Only make IF_THEN_ELSE if conditional
+ moves exist.
+
+ * cse.c (find_comparison_args): Look for comparison operations
+ if the second arg is 0 in any mode.
+ (record_jump_cond): Don't make classes equivalent for floating-point
+ equality comparison.
+
+ * local-alloc.c (alloc_qty_for_scratch, block_alloc): Provide
+ alternate code in some cases when REGISTER_CONSTRAINTS is not
+ defined.
+ (requires_inout_p): Only used when REGISTER_CONSTRAINTS is defined.
+
+ * reorg.c (mark_set_resources): Add new parm IN_DEST; add callers
+ changed.
+ Rework to scan an entire insn to look for auto-inc operations.
+
+ * unroll.c (copy_loop_body): Add missing declaration of EXIT_LABEL
+ parameter.
+
+ * function.c (instantiate_decl): New function.
+ (instantiate_decls{,_1}): Call it.
+
+ * combine.c (simplify_comparison): Add a few more cases where we can
+ do the comparison in a wider mode.
+
+ * combine.c (distribute_notes, REG_EQUAL): Don't put back a note
+ with a non-constant expression since it may no longer be valid.
+
+Tue Aug 18 23:07:33 1992 Mike Stump (mrs@cygnus.com)
+
+ * expr.c (expand_expr): The first expansion of a TARGET_EXPR
+ is marked by DECL_RTL (slot) being filled in AND TREE_OPERAND
+ (exp, 1) being wiped-out with a NULL_TREE, not just the
+ DECL_RTL (slot) being filled in.
+
+Tue Aug 18 00:07:23 1992 Dennis P. Glatting (dglattin@trirex.com)
+
+ * objc-actions.c
+ (build_selector_translation_table): NULL-terminate the
+ selector list. Mark _OBJC_SELECTOR_REFERENCES_decl as static,
+ not extern.
+
+Tue Aug 18 21:38:46 1992 Mike Stump (mrs@hal)
+
+ * xcoffout.c (assign_type_number): Skip decls with no name.
+
+ * expr.c (expand_expr): When expanding TARGET_EXPRs, make sure
+ that they are only expanded once, after the first expansion,
+ the rtl can be used without further expansions.
+
+Tue Aug 18 12:58:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * x-i386sco (X_CFLAGS): Defined.
+
+ * stmt.c (expand_return): Call emit_queue in ignore-the-value case.
+ (expand_end_bindings): Check DECL_IN_SYSTEM_HEADER for unused warnings.
+
+ * combine.c (simplify_comparison):
+ Rearrange conditional in SUBREG case.
+
+Tue Aug 18 06:49:43 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * cccp.c (HOST_WIDE_INT): Copy definition from machmode.h.
+
+ * c-typeck.c (parser_build_binary_op): Replace the assignment of CLASS.
+
+ * configure (Makefile edits): Make the edits independent.
+ * Makefile.in (sed marker): Use the order {target, host, cross-make}.
+
+Tue Aug 18 00:15:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (parser_build_binary_op):
+ For Z<Y<Z warning, test class of CODE; don't use TREE_CODE (result).
+
+ * cccp.c (pcfinclude): Use HOST_WIDE_INT for rounding a pointer.
+
+Mon Aug 17 14:57:18 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Test TREE_TYPE (inside_init) is
+ nonzero before testing anything else about it.
+
+ * i860.md (mulsi3): Use emit_insn on results of gen fcns.
+ Return with DONE.
+
+Mon Aug 17 11:50:23 1992 Mark Eichin (eichin@cygnus.com)
+
+ * cccp.c (do_include): If search_start is NULL, complain that
+ we had nowhere to look.
+
+Mon Aug 17 14:53:46 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * function.c (assign_parms): When copy arg passed by invisible
+ reference to pseudo reg, don't use nominal_mode.
+
+ * i960.c (i960_address_cost): Don't abort for invalid addresses.
+
+Mon Aug 17 14:29:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init):
+ Use TYPE_MAIN_VARIANT comparing type of inside_init.
+
+Mon Aug 17 10:32:08 1992 Michael Meissner (meissner@osf.org)
+
+ * genattrtab.c (simplfy_with_current_value): Return 'exp' to
+ caller instead of random value.
+ (convert_set_attr_alternative): Delete unused variable newexp.
+ (simplify_cond): Delete unused variable spacer.
+ (make_alternative_compare): Delete unused variable alternative.
+ (optimize_attr): Delete unused variable nextie.
+ (main): Delete unused variable av.
+ (simplify_by_alternatives): #if 0, since the only caller is also
+ #ifdef'ed away.
+ (copy_rtx_unchanging): #if 0 variables that are only used inside
+ of other code under #if 0.
+
+Mon Aug 17 07:37:41 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29kunix.h (LINK_SPEC): Add %s for default.ld.
+ (LINK_LIBGCC_SPECIAL): No longer needed.
+ (ASM_FILE_STARY): Add shared data section.
+ (SHARED_SECTION_ASM_OP): New macro.
+ (OVERRIDE_OPTIONS): If -fshared-data, add -fno-common.
+
+ * alpha.c (alpha_function_needs_gp): New variable.
+ (output_prolog): Set it.
+ Write label after LDGP if function has recursive call and needs GP.
+ (current_function_operand, divmod_operator, alpha_gp_dead_after):
+ New functions.
+ (print_operand, case 'E', 'F'): New cases.
+ (alpha_need_gp): Just test for type of LDSYM, not CALL_INSN.
+ * alpha.h (GO_IF_LEGITIMATE_ADDRESS): Allow a SYMBOL_REF for
+ the current function as a valid address.
+ * alpha.md (divXi3, udivXi3, modXi3, umodXi3): New patterns.
+ (cmov): Add pattern for addq/cmov for signed divide by power of 2.
+ (call): Omit GP restore if it is dead.
+ Add patterns for recursive calls.
+ (branch): Change type of everything but calls to IBR.
+ (unaligned_storehi): Fix numbering of operands.
+ * xm-alpha.h (malloc, realloc, sbrk): Declare as void * if __STDC__.
+
+ * libgcc2.c (builtin_new): Remove declaration of malloc.
+
+ * expmed.c (expand_mult): Bound second synth_mult cost by cost of
+ algorithm from first call.
+
+ * expmed.c (expand_divmod): When doing logical operations, the size
+ of COMPUTE_MODE should be used, not MODE.
+
+ * combine.c (struct undo, struct undo_int): Replace non-portable
+ usage with some unions.
+ (SUBST, SUBST_INT, undo_all, gen_rtx_combine): Make consistent
+ with new definitions.
+
+ * fold-const.c (fold): Move conversion back outside of COND_EXPR
+ if moving it inside didn't help anything.
+
+ * fold-const.c (div_and_round_double): Change some more ints
+ to HOST_WIDE_INTs.
+
+ * jump.c (jump_optimize): Allow SUBREG in many places where REG
+ is allowed.
+
+ * expr.c (expand_expr, case COMPONENT_REF): Don't actually do
+ extraction from memory if we want address.
+
+ * expr.c (emit_block_move): Fix problems in last change.
+
+Mon Aug 17 03:37:10 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (is_ctor_dtor): Don't collect cfront init fcns.
+
+ * Makefile.in (GCC_FOR_TARGET): Put -B./ here.
+ (GCC_CFLAGS): Not here.
+
+Sun Aug 16 10:38:10 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * ns32k.c (print_operand_address): Fix typo.
+
+Sat Aug 15 20:23:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (PTR_INT_TYPE): Don't define this.
+ (pcfinclude): Use int, not PTR_INT_TYPE.
+
+Sat Aug 15 11:10:07 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (ASM_FINAL_SPEC): For output of as when -c is not used, use
+ %u rather than %g so each object filename will be unique.
+ * decrose.h (ASM_FINAL_SPEC): Ditto.
+
+ * x-decrose (CLIB, X_CFLAGS): Don't link in libbsd.a, instead use
+ -Dvfork=fork on the command line.
+ * x-encrose (CLIB, X_CFLAGS): Ditto.
+ * x-i386rose (CLIB, X_CFLAGS): Ditto.
+
+Sat Aug 15 06:36:15 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cccp.c: Remove declaration of malloc and realloc.
+
+ * combine.c (get_last_value): Don't go past a CODE_LABEL when
+ searching for a value.
+
+ * expr.c (convert_move): Copy SUBREG to REG in one more case.
+
+ * expr.c (do_jump*): Always do comparison in object's signedness
+ now that combine can remove extraneous sign extends.
+
+Sat Aug 15 00:52:08 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (ansi_compat.h): Replace this with an empty file.
+
+ * gcc.c (process_command): In second loop over all switches,
+ don't increment I for switches that don't have separate arguments.
+
+ * cccp.c: Don't ever include stddef.h.
+ (append_include_chain): Avoid using size_t.
+ (initialize_builtins): Output defn of __WCHAR_TYPE__ just once.
+
+ * ns32k.md (movstrsi1): Renamed from movstrsi.
+ (movstrsi): New define_expand.
+
+Fri Aug 14 18:51:57 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (attach_deaths_insn): Don't call attach_deaths for CLOBBERs.
+
+Fri Aug 14 18:47:22 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * genattr.c (write_units): Write #defines for the number of
+ function units, the min/max ready cost and min/max busy delay.
+ Add max_busy_cost field to struct function_unit_desc.
+
+ * genattrtab.c (simplify_by_exploding, find_and_mark_used_attributes,
+ unmark_used_attributes, add_values_to_cover, increment_current_value,
+ test_for_current_value, simplify_with_current_value,
+ simplify_with_current_value_aux): New functions.
+ (struct function_unit): Add max_busy_cost, {min,max}_busy_delay.
+ (expand_units): Use simplify_by_exploding to simplify the
+ function_units_used attribute. Compute the ready cost attributes
+ as a COND in numeric order.
+ (gen_unit): Compute {min,max}_ready_cost and {min,max}_busy_delay.
+ (write_function_unit_info): Determine if there is only one busy
+ delay value by comparing the minimum and maximum busy delay.
+ Write the initializer for function_units in numeric order.
+ Write out the maximum busy delay field.
+
+ * genattrtab.c (attr_desc): Add negative_ok field.
+ (find_attr, make_internal_attr): Initialize negative_ok.
+ (check_attr_value): Allow negative values for CONST_STRING for
+ numeric attributes with negative_ok.
+ (encode_units_mask): Change the encoding of the function_units_used
+ result.
+
+ * gcc.c (do_spec_1): Add %u.
+ (default_compilers): For output of as when -c is not used, use %u
+ rather than %g so each object filename will be unique.
+
+ * cexp.y, cccp.c, gcc.c (NULL_PTR): Use the same definition as
+ rtl.h and tree.h.
+
+Fri Aug 14 20:53:00 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (grokdeclarator): Remove duplicate diagnostic for
+ initialized parameters; start_decl already does this.
+
+ * c-common.c (truthvalue_conversion): Optionally warn if an
+ unparenthesized assignment is used as a truth value.
+ * c-parse.y, objc-parse.y (expr_no_commas):
+ Mark assignments for warning.
+
+Fri Aug 14 14:45:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * vax.md (casesi1): Renamed from casesi.
+ (casesi): New trivial define_expand invokes casesi1.
+ (movstrhi, movstrhi1): Analogous change.
+
+Fri Aug 14 14:36:52 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * reload.c (find_reloads): Ignore `%' in the last operand after
+ warning.
+
+Fri Aug 14 07:41:34 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * genflags.c (num_operands): MATCH_PARALLEL also represents an operand.
+
+ * jump.c (invert_exp, redirect_exp): No longer static.
+ Clean up order of declarations at start of file and remove
+ extraneous decls.
+ * unroll.c (copy_loop_body): Don't assume (pc) can be on either
+ leg of jump; use invert_exp and redirect_exp instead.
+
+ * alpha.c, alpha.h, alpha.md, xm-alpha.h, x-alpha, va-alpha.h:
+ New files.
+ * config.sub: Add "alpha".
+ * configure: Likewise.
+ * Makefile.in (USER_H): Add va-alpha.h and sort names.
+ * gstdarg.h, gvarargs.h: Call va-alpha.h for Alpha.
+
+ * rtl.def (MATCH_PAR_DUP): New RTL code.
+ * genconfig.c (walk_insn_part): Treat it just like MATCH_OP_DUP.
+ * genemit.c (max_operand_1): Likewise.
+ (gen_exp): Treat it like MATCH_PARALLEL here.
+ * genextract.c (walk_rtx): Treat it like MATCH_DUP.
+ * genoutput (scan_operands): Likewise.
+ * genpeep.c (match_rtx): Likewise.
+ * genrecog.c (add_to_sequence): Likewise.
+ * a29k.md, rs6000.md ({load,store}_multiple): Use MATCH_PAR_DUP.
+
+ * cse.c (fold_rtx): Fix typo in two FLOAT_STORE_FLAG_VALUE tests.
+
+ * flow.c (life_analysis, propagate_block, dump_flow_info): Add more
+ missing casts to REGSET_ELT_TYPE.
+
+ * expr.c (movstr_optab): New variable.
+ (init_expr_once): Initialize it.
+ (emit_block_move): Rework code that generates movstrxx insns to
+ check predicates and use an optab.
+
+ * cse.c (simplify_unary_operation): Remove "else".
+
+Fri Aug 14 07:41:05 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * c-decl.c, cse.c, fold-const.c, integrate.c, obstack.h, protoize.c,
+ reload1.c, stmt.c, tree.c, tree.h: Phicks speling erours.
+
+Fri Aug 14 03:21:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-convert.c (convert): When converting to variant of same type, fold.
+
+ * varasm.c (assemble_variable): Change error message for unknown size.
+
+ * c-parse.y (declmods): Don't warn for multiple storage classes
+ all at the beginning. This is either good practice or an error.
+
+Thu Aug 13 19:43:13 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (finish_decl): Avoid cascading messages for tentative
+ definitions with incomplete types.
+
+ * c-typeck.c (process_init_constructor): Warn about partly
+ bracketed initializers.
+
+Thu Aug 13 17:18:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (handle_directive): Output macro name if dump_names.
+
+ * m68k.h: Delete junk line inserted by mistake in last patch.
+
+Thu Aug 13 16:46:58 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * regclass.c (regclass): Don't scan the constraints if there aren't
+ any operands. Don't look for a commutative constraint in the last
+ operand.
+
+ * function.c (contains): Return the number of insns.
+ (reposition_prologue_and_epilogue_notes): Count all the prologue and
+ epilogue insns.
+
+Thu Aug 13 15:20:24 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * m68k.h (TARGET_SWITCHES): Make -m68040 set 01007 not 01000.
+
+ * sparc.h (CPP_SPEC): For -mv8, define __sparc_v8__ not __sparcv8__.
+ * longlong.h (__sparclite__): Define umul_ppmm, udiv_qrnnd, and
+ count_leading_zeros for this sparc architecture variant.
+ (__sparc_v8__): Changed from __sparc8__.
+
+ * c-typeck.c (build_component_ref): Don't warn for compound and
+ conditional expressions when pedantic. These are valid in ANSI C.
+
+Thu Aug 13 11:37:57 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.c (output_function_prologue): Restore "rp" after the call to
+ mcount.
+
+Thu Aug 13 06:54:50 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * pa.md (movsf recognizer): Output `fcpy,sgl', not `fcpy'.
+ From Jeff Law:
+ * pa.md (zdepi in HImode): Move this pattern after the standard
+ movhi patterns.
+
+Wed Aug 12 11:45:15 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (ASM_FINAL_SPEC): For output of as when -c is not used,
+ use %g, rather than %b, because the file is going to be deleted
+ anyway (sync up with gcc.c Aug 4 changes). Patch from Jim Meyering.
+
+ * decrose.h (ASM_FINAL_SPEC): Ditto.
+
+Wed Aug 12 03:23:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (finding all .h files): Look for links as well as
+ ordinary files.
+
+ * m68k.h (TARGET_68040): Test for 01000 or 0400.
+ (TARGET_SWITCHES): Rename -m68040 to -m68020-40.
+ Rename -m68040-only to -m68040.
+
+ * hp2bsd.h (TARGET_DEFAULT): Make value 0.
+
+Tue Aug 11 04:23:35 1992 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (operand_equal_p): Make it clear that this function
+ tests for indistinguishable values, not for equality as computed by
+ `=='; the distinction is important for IEEE NaNs and -0.0.
+
+Tue Aug 11 13:10:47 1992 Fred Fish (fnf at fishpond)
+
+ * config.sub (amigaunix/amix): Use sysv4 as os.
+ * configure (m68k-*-amix*): Change to m68k-cbm-sysv4* and
+ eliminate fixincludes and broken_install.
+
+Tue Aug 11 15:42:58 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * function.c (identify_blocks): Handle case where no block nodes
+ exist. Use xmalloc not alloca for block_vector.
+ (reorder_blocks): New argument top_block. Handle case where no
+ block nodes exist. Always clear BLOCK_SUBBLOCKS (block) when
+ adding it to the block tree.
+ (all_blocks): Handle case where vector is zero. Store current
+ block at offset 0 in vector, not n_blocks. Don't count current
+ block twice in n_blocks.
+ * function.h (identify_blocks): Declare.
+ (rtx, tree): Move undefs to the very end.
+ * loop.c (loop_optimize): Delete uses of loop_number_first_block,
+ loop_number_last_block, loop_number_block_level. Correct call of
+ find_loop_tree_blocks. Add call to unroll_block_trees.
+ * loop.h (loop_number_first_block, loop_number_last_block,
+ loop_number_block_level): Delete declarations.
+ * stmt.c: Likewise.
+ (find_loop_tree_blocks): Completely rewritten to use
+ identify_blocks.
+ (unroll_block_trees): Completely rewritten to use reorder blocks.
+ * unroll.c (unroll_loop): Delete call to unroll_block_trees.
+
+ * unroll.c (copy_loop_body): Only copy VTOP note if it will end up
+ before a loop exit test.
+
+Tue Aug 11 09:21:47 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump meissner version # to 23.
+ (CONST_CODES): Remove declaration for eliminate_constant_term
+ from inside of local {}'s.
+ (SELECT_SECTION_MODE): Remove declaration of variable
+ mips_section_threshold from inside of local {}'s.
+ (SELECT_SECTION): Ditto.
+
+ * mips.c (toplevel): Remove declarations for all of the gen_xxx
+ functions used, since insn-flags.h contains them.
+
+ * mip.md (fixuns_truncdfsi2): Remove extern declarations.
+ (fixuns_truncsfsi2): Ditto.
+ (movsi_unaligned, movsi_ulw, movsi_usw): Ditto.
+ (seq, sne, sgt, sle, sgtu, sleu): Ditto.
+
+Tue Aug 11 02:51:25 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (memory.h): Fix versions 1.2 and 1.3 as well as 1.4.
+
+ * configure: Improve err msg for unknown config.
+
+Tue Aug 11 04:02:51 1992 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (fold): Don't fold (A op B ? A : C) if A is IEEE
+ floating point, because A might be -0.0 or NaN.
+
+ * c-typeck.c (parser_build_binary_op): Warn about expressions like
+ `1<=i<=N'.
+
+Mon Aug 10 22:11:50 1992 Michael Meissner (meissner@osf.org)
+
+ * reload1.c (emit_reload_insns): Use gen_rtx to create a secondary
+ reload insn, not gen_reg_rtx.
+
+Mon Aug 10 06:23:23 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * pa.md (Recognizer for zdepi_operand in HImode): New pattern.
+ (Recognizer for zdepi_operand in SImode): Call output_zdepi for
+ output.
+ (shift patterns and recognizers): Handle 32 bit ints and truncate
+ them for output.
+ * pa.c (output_zdepi): New function (contents from pa.md).
+ * pa.h (output_zdepi): Declare.
+
+Sun Aug 9 17:10:24 1992 Pat Rankin (rankin@eql.caltech.edu)
+
+ * configure.com: Rename vms to vax-vms; split long lines.
+ * make-l2.com: Assemble libgcc2 routines twice, preserving
+ lowercase function names the second time.
+
+Sun Aug 9 00:50:46 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * final.c (final_scan_insn): Call dwarfout_begin_block and
+ dwarfout_end_block even for -g1.
+
+Sun Aug 9 18:10:33 1992 Michael Meissner (meissner@osf.org)
+
+ * genflags.c (gen_insn): Treat 'call_pop' and 'call_value_pop' like
+ 'call' and 'call_insn'.
+
+ * i386.h (LEGITIMIZE_ADDRESS): Emit_move_insn only takes two
+ arguments, not three.
+
+Sat Aug 8 10:26:02 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-tree.h (hash_chainon): Provide declaration.
+ (build_virtual_init): Ditto.
+ (build_vbase_delete): Ditto.
+ (build_vbase_vtables_init): Ditto.
+
+ * genflags.c (insn_name_ptr): Define, so that we can link in
+ print-rtl.c for debugging.
+ (call_obstack, normal_obstack): New obstacks to remember call
+ insns, and normal insns, so that we can emit the prototypes later.
+ (max_id_len): New variable to record the maximum identifier
+ length.
+ (num_operands): New function to return the number MATCH_OPERAND's
+ and MATCH_OPERATOR's in an insn tree.
+ (gen_proto): New function to print out a prototype for an insn.
+ (gen_nonproto): New function to print out a declaration without a
+ prototype.
+ (gen_insn): Don't emit function declarations here, just save the
+ insn on either the call_obstack if it is call or call_value, or
+ normal_obstack otherwise.
+ (main): Initialize call_obstack, normal_obstack. After all insns
+ are processed, emit function declarations with and without
+ prototypes, depending on whether NO_MD_PROTOTYPES, and
+ CALL_MD_PROTOTYPES are defined.
+
+ * rtl.h (PROTO): If not defined, define to either expand
+ prototypes or just expand to (), depending on whether or not, the
+ host compiler supports ANSI C.
+ (NULL_PTR): Define as void * if we have prototypes.
+ (all function declarations): Add prototypes for all functions
+ where it is feasible to do so, using the PROTO macro.
+ (force_reg): Add declaration.
+ (eliminate_constant_term): Ditto.
+ (output_constant_def): If tree.h has been included, add prototype.
+ (immed_real_const): Ditto.
+ (immed_real_const_1): Ditto.
+ (make_tree): Ditto.
+
+ * tree.h (PROTO): If not defined, define to either expand
+ prototypes or just expand to (), depending on whether or not, the
+ host compiler supports ANSI C.
+ (NULL_PTR): Define as void * if we have prototypes.
+ (all function declarations): Add prototypes for all functions
+ where it is feasible to do so, using the PROTO macro. Do not
+ define prototypes for build_binary_op, or build_indirect_ref,
+ since GNU C and GNU G++ have different numbers of arguments. Do
+ not define prototypes for make_tree, since it takes a rtx as the
+ argument, and rtl.h is included after tree.h.
+
+Sat Aug 8 07:36:19 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * cp-lex.c: Include stdlib.h and locale.h if needed.
+ (errno): Declare only if it isn't a macro.
+ * cp-tree.c (__eprintf): `line' is unsigned.
+ * cp-typeck.c (mark_addressable): Use DECL_EXTERNAL not TREE_EXTERNAL.
+
+Fri Aug 7 00:16:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (read_specs): Cast args of xmalloc and read to unsigned.
+
+ * final.c (final_scan_insn): Use ASM_OUTPUT_ADDR_DIFF_ELT
+ and ASM_OUTPUT_ADDR_VEC_ELT only if defined.
+
+Thu Aug 6 22:00:13 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (true_dependence): An unchanging read is guaranteed
+ independent of a store only if the store is not unchanging.
+ (anti_dependence): Added comment about unchanging reads.
+ (sched_analyze_2): Don't ignore unchanging reads, they may be
+ dependent on unchanging writes.
+
+ * sparc.md: Correct DEFINE_SPLITs added Jul 27. They would
+ overwrite the input register if it was the same as the result reg.
+
+Thu Aug 6 16:25:48 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (ASM_FILE_START): If profiling IMPORT "_mcount" instead of
+ "__gcc_mcount".
+
+ * These changes allow the PA to make use of the BSS subspace. They
+ require you to use the HPUX assembler or a fixed version of pa-gas
+ (available soon on jaguar.cs.utah.edu).
+ * pa.h (TARGET_SWITCHES): New switch "no-bss" which forces gcc not
+ to make use of the bss subspace. (For compatability with old buggy
+ versions of pa-gas.)
+ (ASM_FILE_START): Add $BSS$ subspace.
+ (BSS_SECTION_ASM_OP): New macro which tells the assembler to switch
+ to the bss subspace.
+ (EXTRA_SECTIONS): Define in_bss as an extra section.
+ (EXTRA_SECTION_FUNCTIONS): Define "bss_section" function to switch
+ into the bss subspace.
+ (ASM_OUTPUT_COMMON): If !TARGET_NO_BSS, then place commons into the
+ bss subspace.
+ (ASM_OUTPUT_LOCAL): Likewise.
+
+Thu Aug 6 13:04:16 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * gvarargs.h : Check hp800 symbol too for the hppa case.
+ * va-pa.h : Rewrite to be compatible with hpux.
+ * pa.c (hppa_builtin_saveregs): Rewrite.
+ (secondary_reload_class): Bug fix.
+ (arith32_operand): New function.
+
+Wed Aug 5 11:23:05 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h (EXTRA_SECTIONS, svr3): Delete empty definitions for
+ CTORS_SECTION_FUNCTION and DTORS_SECTION_FUNCTION. Add in_ctors
+ and in_dtors.
+
+Tue Aug 4 23:54:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): For output of as when -c is not used,
+ use %g, rather than %b, because the file is going to be deleted
+ anyway.
+
+Tue Aug 4 20:30:12 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-decl.c (grokdeclarator): Call build_type_variant to set const
+ and volatile flags, since build_reference_type does not take those
+ arguments.
+
+ * cp-parse.y (attribute processing): Correctly call tree_cons with
+ three arguments, passing NULL_TREE for the chain argument.
+
+ * cp-tree.h (hash_chainon): Add declaration for this function.
+ (build_virtual_init): Ditto.
+ (build_vbase_delete): Ditto.
+ (build_vbase_vtables_init): Ditto.
+
+ * cp-typeck.c (build_modify_expr_1): Pass 0 as third argument to
+ build_unary_op.
+ (build_modify_expr): Ditto.
+
+Tue Aug 4 18:10:46 1992 Mike Stump (mrs@wombat.gnu.ai.mit.edu)
+
+ * cp-tree.h, tree.h: Moved definitions of TREE_VIA_* into tree.h for
+ consistency.
+
+Tue Aug 4 17:35:32 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ Complete 10th FSF <---> Cygnus merge.
+
+ Tue Aug 4 12:58:59 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (pushtag): Don't set DECL_IGNORED_P for binding
+ layer markers, use only DECL_SOURCE_LINE == 0, as otherwise,
+ it messes up dbxout.c.
+
+ Tue Aug 4 11:59:36 1992 Mike Stump (mrs@cygnus.com)
+
+ Tue Aug 4 13:43:55 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-method.c (hack_identifier): Remove redundant call of
+ assemble_external.
+
+ Tue Aug 4 10:23:02 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (pushdecl): Any kind of DECL should be good enough
+ at global scope, not just a TEMPLATE_DECL.
+
+ Sun Aug 2 21:12:55 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * cp-tree.c: change definition of __eprintf to match libgcc2.c and
+ assert.h
+
+ Fri Jul 31 16:53:26 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree (break_out_calls): Only make ony copy of a node on
+ 's' and 'e' nodes. Handle 'r' just like 's' and 'e' because
+ nodes of type 'r' can be of different sizes (the old code
+ would do the wrong thing for a COMPONENT_REF).
+
+ Thu Jul 30 11:46:14 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-init.c (emit_base_init): Set transparent basetypes (those w/o
+ ctors) as marked if we need to walk up the tree to find a ctor.
+
+ Wed Jul 29 03:25:51 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): In SCOPE_REF case, sort out visibility
+ declarations from other declarations, since the compiler will
+ ultimately handle them differently. This is a part of the solution
+ to p525.
+ (finish_method): Tentative (and probably wrong) fix for carrying
+ along inline methods delcared within a class that really belong to
+ nested classes of the class. This may be more of the solution to
+ p525.
+
+ * cp-init.c (build_offset_ref): Use IDENTIFIER_TYPE_VALUE of CNAME
+ when CURRENT_CLASS_DECL is 0.
+
+ * cp-class.c (finish_struct): Don't give errors for TYPE_DECLs in a
+ struct that are really only meant for FIELD_DECLs.
+
+ Tue Jul 28 23:36:58 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grok_op_properties): Do not core dump on parse errors.
+
+ Tue Jul 28 22:43:12 1992 Mark Eichin (eichin@cygnus.com)
+
+ * cp-pt.c (end_template_instantiation) YYDEBUG is now defined in
+ cp-parse.h -- so don't assume that it's -2 (since under byacc it is
+ -1 anyway.) iomanip.C compiles again.
+
+ Tue Jul 28 22:33:46 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_c_cast): Allow cast to array type in
+ some situations to be more compatible with Cfront.
+
+ Tue Jul 28 22:05:14 1992 Mark Eichin (eichin@cygnus.com)
+
+ * cp-parse.y (print_parse_statistics): don't reference TOKEN_LENGTH
+ or REDUCE_LENGTH unless GATHER_STATISTICS is set. (YYDEBUG alone is
+ not a sufficient condition.)
+
+ Tue Jul 28 19:18:30 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.c (break_out_calls): Don't do anything special to
+ SAVE_EXPRs, as they cannot contain calls that would need
+ breaking out. This fixes a problem introduced on Jul 15, by
+ Ron Guilmette.
+
+ Mon Jul 27 16:55:52 1992 Mike Stump (mrs@cygnus.com)
+
+ * c++: Fix errors introduced by rms. Bullet-proof handling
+ of arguments with funny things in them such as newlines,
+ spaces, tabs, single quotes, double quotes, etc...
+
+ Mon Jul 27 15:03:23 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-init.c (build_vec_delete): Extract size of type even for
+ destructorless types, so value can be computed to pass to delete
+ operator.
+
+ * Bludgeon interface/implementation code into leaving templates
+ alone, until we've figured out how to handle their interaction
+ properly:
+ * cp-parse.y (template_instantiate_once): Temporarily set interface
+ flags to `unknown' while processing member templates.
+ * cp-decl.c (grokfndecl): Even if class vtable is getting written
+ out, regardless of interface setting of class and write_virtuals
+ flag, don't force virtual destructor of template class to be public.
+ * cp-tree.h (struct pending_inline): New field `interface'.
+ * cp-lex.c (do_pending_inlines): Restore interface flags from stored
+ values, rather than calling extract_interface_info.
+ (process_next_inline): Likewise, if more pending inlines exist; else
+ do call extract_interface_info.
+ (reinit_parse_for_method): Save away interface flags.
+ (cons_up_default_function): Ditto.
+ * cp-pt.c (instantiate_template): Set saved interface flag to
+ `unknown'.
+ (end_template_instantiation): Set CLASSTYPE_INTERFACE_UNKNOWN.
+
+ * cp-pt.c (instantiate_member_templates): Deleted some unused code.
+
+ * cp-decl.c (grokfndecl): Make class methods public if
+ `implementation' pragma is set.
+
+ * cp-pt.c (pending_templates): No longer exported.
+ (add_pending_template): Ditto.
+ * cp-parse.y (primary): Don't check it; always call
+ do_pending_templates.
+
+ Fri Jul 24 14:22:39 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (init_decl_processing, finish_function),
+ cp-method.c (build_decl_overload, build_opfncall), cp-init.c
+ (build_x_delete, build_delete, build_vec_delete): Add support
+ for two argument delete to support ARM 12.5. In some cases,
+ the argument is smaller than it should be.
+
+ Thu Jul 23 08:12:16 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c: Update wide character handling from c-lex.c and make
+ the type of multicharacter constants be int per ANSI C++ WP.
+
+ * cp-decl.c (init_decl_processing, grokdeclarator), cp-lex.h,
+ gplus.gperf, cp-lex.c (init_lex), cp-decl2.c (groktypefield),
+ cp-method.c (build_overload_name): Add support for wchar_t as a
+ distinct type to conform to x3j16 working paper.
+ * cp-hash.h: Regenerated.
+
+ Wed Jul 22 17:41:08 1992 Mark Eichin (eichin@cygnus.com)
+
+ * cp-parse.y (structsp): note_got_semicolon was called before
+ finish_struct (which always clears the got_semicolon bit.) However,
+ note_got_semicolon was only called if yychar==';', without checking
+ for YYEMPTY.
+
+ Tue Jul 21 22:59:32 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-typeck.c (mark_addressable): If we have a recursive call to an
+ otherwise inline function, clear TREE_EXTERNAL so the whole function
+ is written to the asm file.
+
+ Tue Jul 21 05:31:10 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-tree.h (start_type_method): Deleted unused declaration.
+
+ * cp-pt.c (tsubst): Fix propagation of qualifiers in several cases.
+
+ * cp-pt.c (tsubst, case FUNCTION_DECL): Look for matches that differ
+ only in return type.
+
+ * cp-pt.c (tsubst, case FUNCTION_DECL): Rewrite name of
+ type-conversion operators, in case the target type involves a
+ template parameter.
+
+ Mon Jul 20 03:35:44 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-class.c (add_virtual_function): Don't crash if
+ CURRENT_CLASS_TYPE is NULL_TREE.
+ * cp-decl2.c (grokfield): Ditto.
+
+Tue Aug 4 15:36:07 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_decl): Don't do expand_decl_init for FUNCTION_DECL.
+
+ * c-typeck.c (build_conditional_expr): Merged const and volatile flags
+ of incoming types.
+
+Tue Aug 4 11:15:47 1992 Chip Salzenberg (chip@tct.com)
+
+ * c-decl.c (finish_struct): If bit field is of an unsigned
+ type that promotes to int, promote it unsigned if traditional
+ or if it is the same size as int.
+ (start_function): Ditto for function return value.
+ * c-typeck.c (default_conversion): Ditto -- fix bug that
+ promotes short to unsigned if sizeof(short) == sizeof(int).
+
+Tue Aug 4 15:12:51 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * svr3.h (USING_SVR3_H): Define.
+ * svr4.h (USING_SVR4_H): Define.
+ * aoutos.h (USING_AOUTOS_H): Define.
+ * m88k.h (EXTRA_SECTIONS): Base on the above defines.
+
+Tue Aug 4 14:22:44 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * dbxout.c: Include output.h.
+
+Tue Aug 4 00:21:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common): Install protoize and related files
+ if they were compiled.
+ (install-proto): Target deleted.
+ (dbxout.o): Depend on output.h.
+
+Mon Aug 3 02:04:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_function): Test only can_reach_end for the warning
+ about reaching the end of a non-void function.
+ (poplevel): If apparently nested inline function has
+ DECL_ABSTRACT_ORIGIN, don't output it; propagate TREE_ADDRESSABLE.
+ (pushdecl): When copying inline details into an extern decl,
+ copy DECL_RESULT, TREE_ASM_WRITTEN. Set DECL_ABSTRACT_ORIGIN.
+
+ * c-parse.y (datadef): For empty declaration, use pedwarn.
+ * objc-parse.y (datadef, mydecl): Likewise.
+
+ * Makefile.in (install-cross-tools): Install nm from tooldir.
+
+ * varasm.c: Include real.h.
+ * sparcv4.h: Don't include real.h.
+
+ * flow.c (mark_used_regs): Do recurse in setting of global hard reg.
+ Do set reg_next_use for global hard reg.
+
+ * objc-parse.y (reserved_declspecs, declmods): Change as in c-parse.y.
+
+Mon Aug 3 03:24:17 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-parse.y (reserved_declspecs): Warn if storage class occurs here.
+ (declmods): Warn if storage class is not first.
+
+Sun Aug 2 21:44:34 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (gen_rtx, case REG): Don't use frame_pointer_rtx or
+ arg_pointer_rtx if reload is in progress.
+
+ * jump.c (jump_optimize): When replacing jumps with logical
+ expressions, use preserve_subexpressions_p.
+
+ * calls.c (expand_call): Use HOST_WIDE_INT instead of int when
+ comparing a pointer to an integer constant.
+ * flow.c (find_use_as_address): Likewise; also when returning int.
+ * integrate.c (expand_inline_function): Cast -1 to (HOST_WIDE_INT)
+ first.
+
+ * cse.c (canon_hash): Use HOST_WIDE_INT instead of int when casting
+ pointers to integers.
+ * print-tree.c (print_node): Likewise.
+ * tree.c (TYPE_HASH): Likewise.
+ * varasm.c (const_hash, SYMHASH): Likewise.
+
+ * toplev.c: (main): Don't cast pointers to int unnecessarily.
+
+ * tree.c: Include function.h after tree.h.
+
+ * rtl.h (NOTE_BLOCK_NUMBER): Change definition to simpler form.
+ (SET_NOTE_BLOCK_NUMBER): Deleted.
+ (xrealloc, oballoc, permalloc): Declare here as well as in tree.h.
+ * function.c (identify_blocks, reorder_blocks): Don't use
+ SET_NOTE_BLOCK_NUMBER.
+
+ * varasm.c (struct addr_const): Use HOST_WIDE_INT for OFFSET.
+
+ * combine.c (reg_sign_bit_copies): New variable.
+ (combine_instructions): Initialize it.
+ (set_significant): Set it.
+ (try_combine): Set subst_low_cuid immediately before calling `subst'
+ to the INSN_CUID of the lowest insn involved in the call.
+ Change XOR with out-of-range constant to (not (xor ...)).
+ Call both split_insns and find_split_point; pass extra parm to
+ find_split_point.
+ Record I2DEST's value if I2 now sets it; similarly for I1DEST.
+ (find_split_point): Add new arg INSN.
+ If AND'ing with a large single-bit constant and we only care about
+ equality with zero, replace with bit extraction.
+ Make two shifts for ZERO_EXTRACTs unless very narrow.
+ (subst): Move RESTART label earlier.
+ If we have a simple operation applied to IF_THEN_ELSE, move
+ the operation inside the two arms.
+ (subst, case SUBREG): Use force_to_mode.
+ (subst, case NOT): Change (not (xor X C)) to (xor X ~C).
+ (subst, case NEG): Remove optimization of (neg (abs X)); redundant.
+ Convert (neg (xor A 1)) to (plus A -1) if A is known to be 0 or 1.
+ (subst, case IF_THEN_ELSE): Simplify if an arm contains a register
+ being tested by substiting the known value.
+ Put constant integer in last arm is can reverse comparison.
+ (subst, case SET): Use gen_lowpart_for_combine.
+ (subst, case AND): Make IF_THEN_ELSE when appropriate.
+ (subst, case IOR): (ior A C) can sometimes be just C.
+ (subst, case XOR): Go back and restart when canonicalizing.
+ (subst, case ABS): Use num_sign_bit_copies.
+ (make_extraction): Call force_to_mode.
+ (make_compound_operation): Look at optabs rather that explicitly
+ checking for operations and assuming we have SImode.
+ Handle (ashiftrt (OP (ashift foo C1) C3) C2).
+ (force_to_mode): Only change mode of arithmetic if optab says we
+ have operation in that mode.
+ Remove unneeded ASHIFTRT; add handling for IF_THEN_ELSE.
+ (significant_bits, case NEG): Call num_sign_bit_copies.
+ (significant_bits, case ABS, case [US]{MIN,MAX}, IF_THEN_ELSE): New.
+ (num_sign_bit_copies): New function.
+ (simplify_shift_const): Remove ASHIFTRT if value is known -1 or 0.
+ Use num_sign_bit_copies to simplify (ashiftrt (ashift ...) ...)
+ and (ashiftrt (neg ...) ...).
+ Remove now redundant case when VAROP is a PLUS.
+ (simplify_comparison): If A is known to be -1 or 0, A != -1 is A == 0.
+ Simplify unsigned tests that really check the sign bit.
+ (simplify_comparison, case ASHIFTRT): Convert to LSHIFTRT if
+ equality comparison with zero.
+ (get_last_value): Check if the desired register is set in the
+ insn before the one whose INSN_CUID is subst_low_cuid.
+
+ * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): Add missing
+ call to TREE_CODE.
+
+ * reload1.c (reload): Set reload_in_progress earlier.
+
+ * fold-const.c (optimize_bit_field_compare): Correct bogus use of
+ types in expressions; always do computation in a type wide enough
+ for the result.
+
+Sun Aug 2 01:30:22 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-parse.y (attrib): Copied from c-parse.y.
+
+Sat Aug 1 13:34:49 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-pragma.c (HANDLE_PRAGMA_WEAK): Define only if SET_ASM_OP defined.
+
+ * vax-vms.h: Renamed from vms.h.
+ * xm-vax-vms.h: Renamed from xm-vms.h.
+ * configure (vax-*-vms): Change file names.
+
+Sat Aug 1 16:13:09 1992 Mark Eichin (eichin@cygnus.com)
+
+ * config/spc-sol2.h (ASM_OUTPUT_DWARF_STRING): redefinition was
+ incorrect, and uneeded; while Solaris as doesn't support .string, it
+ does support .asciz, and sparcv4.h takes care of including that
+ definition.
+
+Fri Jul 31 08:19:41 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu
+
+ * combine.c (try_combine): Correctly handle implicit deaths of
+ I2DEST and I1DEST.
+
+ * cexp.y: Add declaration for xmalloc.
+
+ * cccp.c: Add declarations for malloc and realloc.
+ Include stddef.h when __STDC__ is defined.
+ (PTR_INT_TYPE): New macro.
+ (pcfinclude): Use it.
+
+ * c-decl.c (init_decl_processing): __builtin_return_address,
+ __builtin_frame_address, and __builtin_saveregs all return void *.
+
+ * reload.c (find_reloads_address_1): Convert another push_reload
+ call into a call to find_reloads_address_part.
+
+ * reload1.c (gen_input_reload): Correct order of insns emitted
+ when using secondary memory.
+
+ * reload1.c (reload_as_needed): Add missing semicolon after macro.
+
+ * combine.c (distribute_notes, case REG_DEAD): If a register used
+ exactly twice is referenced in both I2 and I3, show it is used 3 times.
+
+ * final.c (output_operand): Abort if X is a pseudo.
+
+ * cse.c (exp_equiv_p, case CONST_INT): Use INTVAL instead of XINT.
+
+ * expr.c (convert_move): Put FROM into a register if it is a SUBREG.
+ (For extension case.)
+
+Fri Jul 31 08:19:05 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * function.c (reposition_prologue_and_epilogue_notes): Search for
+ the notes without using basic_block_end[0] or basic_block_head[N-1].
+
+Fri Jul 31 08:18:18 1992 Michael Meissner (meissner@osf.org)
+
+ * reorg.c (get_branch_condition): Return 0 if all tests fall through.
+
+Fri Jul 31 02:28:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * glimits.h: Renamed from limits.h.
+ * Makefile.in (LIMITS_H): Deleted.
+ (install-limits-h): Use glimits.h, not limits.h.
+ * libgcc2.c: Include glimits.h.
+
+Thu Jul 30 09:54:07 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h (FUNCTION_BOUNDARY, ASM_OUTPUT_ALIGN_CODE): Pack code
+ more tightly for the m88110.
+
+ * m88k.md (cpu attribute): List m88100 first for more efficient
+ code in insn-attrtab.c.
+
+ * m88k.md (rotate/and split pattern): Fix typo.
+
+Thu Jul 30 00:02:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i860mach.h: New file.
+ * configure (i860-*-mach*): New alternative.
+
+ * svr3.h (BSS_SECTION_FUNCTION): New macro.
+ (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Enable these.
+ * tower-as.h (BSS_SECTION_FUNCTION): Deleted.
+ * dpx2.h (EXTRA_SECTION_FUNCTIONS): Deleted.
+ * att386.h (BSS_SECTION_FUNCTION): #undef before defining.
+
+ * i860v3.h (USE_CONST_SECTION): #undef before defining.
+
+Wed Jul 29 20:04:55 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (cmpsi): Delete 'J' constraint.
+
+Wed Jul 29 00:38:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (yylex): When traditional, convert 0x80000000 to -0x80000000.
+
+ * gcc.c (link_command_spec): Accept -static but do nothing with it.
+
+ * loop.c (move_movables): When testing whether a reg contains
+ the function address of a call_insn in a libcall block,
+ use reg_referenced_p, to ignore destinations.
+
+ * stor-layout.c (layout_record): Take account of
+ maximum_field_alignment when using the field's alignment.
+
+ * c-parse.y (attrib): Fix previous change--the missing arg
+ was the last arg.
+
+ * fixincludes: Don't repeat the directory-link-chasing loop
+ more than twice. Combine $prevdirs with $dirs--they had same value.
+ Properly discard $d itself from the output of find.
+ Find the links to directories by finding each link
+ and testing it with test. Add $newdirs into $files.
+
+Tue Jul 28 12:46:31 1992 Michael Meissner (meissner@osf.org)
+
+ * c-common.c (decl_attributes): Call layout_decl with two arguments.
+
+ * c-parse.y (attribute processing): Correctly call tree_cons with
+ three arguments, passing NULL_TREE for the purpose argument.
+
+ * emit-rtl.c (make_insn_raw): Eliminate unused argument pat_formals,
+ and modify all callers.
+ (make_jump_insn_raw): Ditto.
+
+ * reorg.c (fill_slots_from_thread): Function follow_jumps only takes
+ one argument.
+ (relax_delay_slots): Ditto.
+
+Tue Jul 28 16:04:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dpx2g.h (ASM_OUTPUT_IDENT): #undef it.
+
+ * c-decl.c (duplicate_decls): Handle warn_redundant_decls here.
+ But don't warn if function definition follows a declaration.
+ (pushdecl): Don't handle it here.
+ (grokparms): Don't warn about non-prototype decl in system header.
+
+ * c-convert.c (convert): If main variants match,
+ but the type is not identical, make a NOP_EXPR.
+
+Tue Jul 28 10:06:18 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * mips.md: Correct use of `*' in constraints. Put it before each
+ letter to ignore, not each group to ignore.
+
+Tue Jul 28 01:23:35 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_parms): Do something for structures
+ passed by invisible reference, and living in memory.
+
+ * gstddef.h (wchar_t): Alternate typedef for C++.
+
+ * Makefile.in (extraclean): Delete config/ChangeLog.
+
+ * m68k.md (probe): Use %a0 to output the address.
+
+Mon Jul 27 20:08:21 1992 Mike Stump (mrs@hal)
+
+ * c++: Fix errors introduced by rms. Bullet-proof handling of
+ arguments with funny things in them such as newlines, spaces, tabs,
+ single quotes, double quotes, etc...
+
+Mon Jul 27 17:38:52 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md: Add DEFINE_SPLITs to optimize logic operation with
+ certain immediate values.
+
+ * sparc.md: Correct inconsistent operand constraints in peepholes.
+
+ * sparc.h (ASM_LONG, ASM_SHORT, ASM_BYTE_OP): Definitions added.
+ (ASM_OUTPUT_DOUBLE): Use REAL_VALUE_TO_TARGET_DOUBLE to convert.
+ (ASM_OUTPUT_FLOAT): Use REAL_VALUE_TO_TARGET_SINGLE to convert.
+ (ASM_OUTPUT_INT): Use ASM_LONG pseudo-op.
+ (ASM_OUTPUT_SHORT): Use ASM_SHORT pseudo-op.
+ (ASM_OUTPUT_CHAR): Use ASM_BYTE_OP pseudo-op.
+ (ASM_OUTPUT_BYTE): Use ASM_BYTE_OP pseudo-op.
+
+Mon Jul 27 17:10:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h (va_arg): Don't use +=; no need to set AP twice.
+
+Sun Jul 26 14:21:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * final.c (final_scan_insn): Align jump table only if
+ READONLY_DATA_SECTION. Otherwise, the table is in the text section.
+
+ * collect2.c (dup2): Defined, if NO_DUP2.
+
+ * plexus.h: New file.
+ * m68k.c (output_function_prologue): Make a probe instruction
+ if NEED_PROBE if nonzero.
+ * configure (m68k-plexus-sysv*): New alternative.
+
+ * c-convert.c (convert): Succeed if TYPE is the main variant
+ of the given type.
+ * c-typeck.c (build_conditional_expr): Compare using TYPE_MAIN_VARIANT.
+
+ * c-decl.c (duplicate_decls): Copy old RTL *before* make_var_volatile.
+
+Sat Jul 25 21:45:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (pushdecl): Never reuse global fcn decl in place of
+ local extern; just copy some info from it.
+
+Sat Jul 25 06:14:58 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * expmed.c (expand_divmod): Eliminate the generation of branches
+ when possible.
+
+Sat Jul 25 04:34:09 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (X11/Xmu/Xmu.h): Fix this or X11/Xmu.h,
+ whichever exists.
+
+Sat Jul 25 00:41:12 1992 Paul Eggert (eggert@twinsun.com)
+
+ * c-parse.y (datadecl): Diagnose empty declarations in old-style
+ function headers.
+ * c-decl.c (shadow_tag_warned): New function.
+
+ * c-lex.c (yylex): Diagnose `1.0fl'. Issue just one
+ diagnostic for `1e1000000f'.
+
+Fri Jul 24 19:25:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_symbol): Distinguish implicit C++ typedefs
+ from explicit C typedefs for structs, using DECL_SOURCE_LINE.
+
+ * c-decl.c (duplicate_decls): Use TYPE_MAIN_VARIANT even for compares
+ with void_type_node.
+ (grokdeclarator, get_parm_info, store_parm_decls): Likewise.
+
+Fri Jul 24 10:07:13 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (is_tagged_type): New function added.
+ (member_attribute): Use it.
+ (type_ok_for_scope): Rewritten to eliminate serious bugs.
+ (output_type): Call `output_pending_types_for_scope' at the end of
+ struct/union types (which are themselves scopes in C++).
+
+Fri Jul 24 13:36:46 1992 Michael Meissner (meissner@osf.org)
+
+ * dbxout.c (toplevel): Include defaults.h to get the definition of
+ ASM_STABD_OP.
+
+ * Makefile.in (dbxout.o): Add defaults.h dependent.
+
+ * i386rose.h (CC1_SPEC): Remove MIPS switches accidently left in.
+
+Thu Jul 23 09:49:43 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (is_body_block): Rewritten for greater saftey.
+ (output_block): Fixed to deal correctly with non-inlined blocks.
+
+Thu Jul 23 15:37:23 1992 Jeffrey A Law (law at schirf.cs.utah.edu)
+
+ * flow.c (propagate_block): Change "struct foo" to "struct sometimes".
+
+Thu Jul 23 15:10:51 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.h (ASM_OUTPUT_CASE_LABEL): Change to readonly section if the
+ table contains addresses.
+ (JUMP_TABLES_IN_TEXT_SECTION): True by default.
+
+Thu Jul 23 13:54:27 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.c (large_int): Use HOST_WIDE_INT type to hold INTVAL.
+ (gen_int_relational): Ditto.
+ (gen_conditonal_branch): Don't emit any insns if the result is
+ always false, and emit a normal jump if the result is always true.
+
+ * mips.c (mips_move_1word): Count LABEL_REF's as a memory
+ reference. Rework half-pic load of symbols, to not expect movsi
+ to have converted the load address into a load, and for CONST's,
+ do the addition after the pointer is loaded.
+
+ * mips.md (type attribute, movsi3): Eliminate 'pic' attribute,
+ just use 'load' instead.
+ (fix_truncdfsi2): Make this a define_insn, instead of a
+ define_exapnd and an insn, and use match_scratch to allocate the
+ two scratch registers. Adjust length costs, so that they match
+ the current code the assembler produces.
+ (fix_truncsfsi2): Ditto.
+ (movsi): Don't convert load of half-pic addresses and CONST's into
+ the real load. It causes more problems than it solves. Adjust
+ cost of half-pic addresses to be 2, not 4.
+
+ * mips-tfile.c (parse_def): Allow spaces in names, since C++
+ templates produce things like: #.def SMANIP<long unsigned int>; ...
+ (parse_stabs_common): Code from Lisa Repka, to handle symbol +/-
+ offset, and to look up things in the external string table, if the
+ name is not found in the local string table.
+
+Wed Jul 22 13:08:33 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * sparc.md (movdf+1): Use new 'T' and 'U' constraints to
+ determine when an ldd or std will have a length of 1, and
+ therefore is eligible for use in some delay slots.
+ (uncond_branch): New attribute used for unconditional branches.
+ All unconditional branch patterns changed.
+ (define_delays and delay slot attributes): Do not allow
+ uncond_branch instructions in delay slots. Do not allow fpload or
+ fpstore operations in a conditional branch delay slot. Allow
+ fpload and fpstore in call, unconditional branch, and annuled
+ conditional branch delay slots.
+
+ * sparc.c (registers_ok_for_ldd_peep, addrs_ok_for_ldd_peep):
+ Functions renamed from registers_ok_for_ldd and
+ memory_ok_for_ldd respectively. All callers changed.
+ (register_ok_for_ldd): New function to determine if a register is
+ a pseudo or the first register in a hard register pair.
+ (mem_aligned_8): No longer static. Return 0 instead of aborting
+ when presented an rtx which is not a MEM.
+ (eligible_for_epilogue_delay): Use in_uncond_branch_delay since
+ this in an unconditional branch.
+
+ * sparc.h (EXTRA_CONSTRAINT) Add new 'T' and 'U' constraints
+ which check for aligned accesses to memory and register pairs.
+
+Wed Jul 22 11:22:37 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump meissner version number to 22.
+ (extern declarations): Add declarations for asm_file_name,
+ call_used_regs, langguage_string, save_argv, version_string,
+ mips_{begin,end,expand}_{pro,epi}logue, simple_epilogue_p,
+ {address,const_{double,int},general,{,non}immediate}_operand,
+ memory_address_p, {{,non}memory,register,scratch}_operand,
+ abort_with_insn, debug_rtx, fatal_io_error, get_frame_size,
+ offsettable_address_p, output_address, permalloc,
+ reg_mentioned_p, abort, atoi, getenv, mktemp, and
+ mips_expand_{epi,pro}logue.
+ (*_REGNUM): Add in GP_REG_FIRST in case registers are ever
+ renumbered.
+ (struct mips_frame_info): Add num_gp, num_fp fields.
+ (SECONDARY_MEMORY_NEEDED): Define, return 1 unless -mdebugh if
+ moving between FP <-> GP registers.
+
+ * mips.c (extern declarations): Move most of the declarations to
+ mips.h, except for those of type 'rtx' or 'tree', since not all
+ files include rtl.h and tree.h. Add more declarations for gen_xxx
+ functions that are now used.
+ (reg_or_0_operand): Add default case for switch on enumeration, to
+ allow compiling with -Wall.
+ (simple_memory_operand): Ditto.
+ (mips_count_memory_refs): Ditto.
+ (mips_move_1word): Ditto.
+ (mips_move_2words): Ditto.
+ (mips_address_cost): Ditto.
+ (map_test_to_internal_test): Ditto.
+ (mips_move_1word): Align asm comments in loading negative ints.
+ (mips_move_1word): Use GEN_INT macro to generate CONST_INT's.
+ (mips_move_2words): Ditto.
+ (gen_int_relational): Ditto.
+ (block_move_load_store): Ditto.
+ (block_move_loop): Ditto.
+ (expand_block_move): Ditto.
+ (block_move_load_store): #if 0, not currently used.
+ (block_move_sequence): Ditto.
+ (compute_frame_size): Fill in num_gp and num_fp fields.
+ (simple_prologue_p): Rename from null_prologue.
+ (save_restore_insns): New function to emit appropriate save and
+ restore operations for prologue/epilogue -- only prologue used at
+ present.
+ (function_prologue): Move generation of instructions to
+ mips_expand_prologue.
+ (mips_expand_prologue): Generate appropriate insns for the
+ prologue of the function.
+ (mips_expand_epilogue): Generate appropriate insns for the
+ epilogue of the function -- not called at present.
+
+ * mips.md (ashldi3_internal): Add `&' constraint to operand 0.
+ (ashrdi3_internal): Add `&' constraint to operand 0.
+ (return): Turn this into a define expand that wraps a return and a
+ USE reg:31 inside of a parallel.
+ (return_internal): Insn form of return instruction.
+ (prologue): New define expand to generate the necessary
+ instructions for the function prologue.
+ (mov{si,hi,qi}): Split the integer move INSNs into two groups,
+ those that support -mdebugh and allow ints to be in floating
+ point registers, and those that don't allow it.
+
+Tue Jul 21 21:27:43 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ * Complete 9th Cygnus <---> FSF merge.
+
+ Tue Jul 21 03:17:05 1992 Mark Eichin (eichin@cygnus.com)
+
+ * cp-lex.c (process_next_inline): when bailing out on a parse error,
+ throw away nextchar as well in case it got set.
+
+ Tue Jul 21 05:31:10 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-pt.c (tsubst, case FUNCTION_DECL): If the context class has a
+ null method vector, don't look inside it for its size.
+
+ Thu Jul 16 16:02:55 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * cp-typeck.c (convert_for_assignment): If assigning (void*)
+ to a normal pointer, emit a warning, not an error. There is
+ a lot of existing code (including libg++ and converted C
+ code) that expects to be able to assign from (void*).
+
+ Tue Jul 14 06:59:38 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-decl.c (finish_function): Call destructors correctly when
+ baseclasses are replicated in the inheritance hierarchy.
+
+ Mon Jul 13 05:16:10 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): If we split a COND_EXPR in order
+ to perform the assignment in each arm, convert the rhs of each
+ branch according to RESULT_TYPE.
+
+ * cp-typeck.c (convert_for_assignment): Treat null_pointer_node
+ specially when converting to non-void pointers.
+
+ * cp-class.c (modify_vtable_entries): In the loop that modifies
+ vtable entries for each non-virtual baseclass, correctly handle
+ cases where BASE is an ambiguous baseclass for BASE_CONTEXT.
+
+ Sun Jul 12 01:32:31 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed May 27 01:33:24 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-type2.c (store_init_value), cp-typeck.c
+ (build_modify_expr, convert_arguments,
+ build_binary_op_nodefault, convert_for_assignment), cp-parse.y
+ (member_init, template_def, datadef, stmt): changed some
+ pedantics into !traditionals and reworded error messages.
+
+ Sun Jul 12 01:11:53 1992 Mike Stump (mrs@cygnus.com)
+
+ Jul 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-decl.c (finish_function): Set BLOCK_SUPERCONTEXT for the
+ outermost scopes of functions to point to the associated
+ FUNCTION_DECL nodes.
+
+ Fri Jul 10 17:52:36 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-decl.c (struct binding_level): New field pseudo_global
+ indicates that this binding level should be treated like the global
+ binding level in some respects.
+ (declare_pseudo_global_level, pseudo_global_level_p): Set and test
+ routines.
+ (push_overloaded_decl): Don't forget overloads in pseudo-global
+ binding levels.
+ * cp-pt.c (tsubst, case FUNCTION_DECL): Search for an existing decl
+ before creating a new one.
+ (overload_template_name): Make new level pseudo-global.
+ (type_unification): Indicate failure for unknown_type_node.
+ (unify): Likewise.
+
+ Wed Jul 8 01:59:03 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (lookup_name, grokvardecl, grokdeclarator),
+ cp-call.c (build_field_call), cp-seach.c (lookup_field),
+ cp-typeck.c (build_component_ref), cp-lex.c (do_identifier),
+ cp-init.c (expand_member_init, build_member_call,
+ build_offset_ref): lookup_field now has 4 arguments.
+
+ Wed Jul 8 01:14:43 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-parse.y (primary): Call to lookup_name needs 2 arguments.
+
+ Tue Jul 7 21:14:05 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-method.c (build_overload_name): Handle INTEGER_TYPEs
+ cleanly and uniformly.
+
+ Tue Jul 7 09:19:52 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-call.c (build_method_call): If `convert_to_pointer' returns
+ error_mark_node, return that without doing any more work.
+
+ Thu Jul 2 15:42:28 1992 Mike Stump (mrs@cygnus.com)
+
+ Thu Jul 2 18:08:42 1992 Chip Salzenberg (chip at tct.com)
+
+ * cp-typeck.c (convert_arguments): Don't assume that error
+ message will be short enough for fixed-length buffer.
+
+ Wed Jul 1 19:52:59 1992 Mike Stump (mrs at cygnus.com)
+
+ Wed Jun 3 12:57:57 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * cp-decl2.c (grokbitfield): Only do width checking on properly
+ parsed bitfields.
+
+ Wed Jul 1 18:58:17 1992 Mike Stump (mrs at cygnus.com)
+
+ Wed May 27 01:33:24 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-lex.c (readescape), cp-parse.y (unary_expr, maybecomma_warn,
+ component_decl_list, stmt), cp-type2.c (digest_init), cp-typeck.c
+ (c_sizeof, build_function_call_real, convert_arguments,
+ build_binary_op_nodefault, pointer_int_sum, pointer_diff,
+ build_unary_op, c_expand_return): change some warnings to
+ pedwarns. Put in new pedwarns, change wording of messages so that
+ they are more readable. Don't issue some warnings when
+ traditional is given.
+
+ Wed Jul 1 13:56:30 1992 Mike Stump (mrs at cygnus.com)
+
+ Wed Apr 29 23:37:00 1992 Niklas Hallqvist (niklas at appli.se)
+
+ * cp-decl.c (finish_decl): make sure destructors are called for
+ objects in a file.
+
+ Wed Jul 1 11:12:05 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-lex.c: extract YYEMPTY out of the parser generated .c
+ file and put in the parser .h so that cp-lex.c does not have
+ to define it.
+
+ Mon Jun 29 12:58:59 1992 Mike Stump (mrs at cygnus.com)
+
+ Mon Jun 29 15:20:48 1992 Chip Salzenberg (chip at tct.com)
+
+ * cp-cvt.c (convert_to_integer): Don't add a NOP_EXPR in cases
+ where we can simply change the type of the entire tree.
+
+ Mon Jun 29 10:56:56 1992 Mike Stump (mrs at cygnus.com)
+
+ * c++: Makes sure -lg++ comes before -lm since libg++ uses
+ things from libm.
+
+ Mon Jun 22 13:47:42 1992 Mike Stump (mrs at cygnus.com)
+
+ Sun Jun 21 14:06:41 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-typeck.c (convert_for_initialization): Only try to convert a
+ rhs that was parsed properly.
+
+ Mon Jun 22 13:31:40 1992 Jim Wilson (wilson at sphagnum.cygnus.com)
+
+ * cp-parse.y (primary): Clear the TREE_USED flag of a block tree
+ put in a BIND_EXPR.
+
+ Sun Jun 21 09:59:58 1992 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cp-type2.c (build_scoped_ref): Use SCRATCH for head of typelist,
+ rather than calling alloca.
+
+ Fri Jun 19 16:23:02 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-pt.c (unify): Type unification of things that do not have a
+ valid IDENTIFIER_TEMPLATE fail instead of core dumping.
+
+ Wed Jun 17 13:36:04 1992 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cp-pt.c (tsubst): Don't try to substitute into error_mark_node.
+
+ * cp-decl.c (grokparms): Convert initializers that have
+ TREE_READONLY_DECL_P set into their constant equivalents.
+
+ Tue Jun 16 19:09:23 1992 Mike Stump (mrs at cygnus.com)
+
+ Wed Jun 3 12:57:57 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-decl.c (grokdeclarator): Disallow virtual functions in unions.
+
+ Tue Jun 16 18:11:45 1992 Mike Stump (mrs at cygnus.com)
+
+ Wed Jun 3 12:57:57 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-class.c (finish_struct): Forbid local classes to have static
+ members.
+
+ Mon Jun 15 21:44:08 1992 Mike Stump (mrs at cygnus.com)
+
+ Tue Jun 2 09:26:34 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-init.c (build_new): Don't allow the use of new on a reference.
+
+ Mon Jun 15 20:52:08 1992 Mike Stump (mrs at cygnus.com)
+
+ Tue Jun 2 09:26:34 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-decl.c (grokparms): Don't allow a local variable to be used
+ in a default argument expression.
+
+ Mon Jun 15 18:54:28 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-decl.c (finish_decl): Add an error message for uninitialized
+ const objects like const int a;.
+
+ Mon Jun 15 16:05:22 1992 Mike Stump (mrs at cygnus.com)
+
+ Not sure if it is strictly necessary for the C++ front end, but...
+
+ Sun May 31 15:31:46 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-typeck.c (self_promoting_args_p): Allow the arg type to be
+ null (copied from Oct 16, 1991 change by Wood).
+
+ Fri Jun 12 16:42:05 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-typeck.c (build_binary_op_nodefault): Conditionalize code that
+ deals with the comparison of non-distinct object types, thus avoiding
+ a core dump.
+
+ Fri Jun 12 10:23:17 1992 Mike Stump (mrs at cygnus.com)
+
+ Wed Jun 10 19:20:29 1992 Brendan Kehoe (brendan at cs.widener.edu)
+
+ * cp-tree.c (break_out_calls): Begin at 1 less than the length of
+ the length of the tree code, not the length itself, for generic
+ expressions and those with side-effects.
+
+ Thu Jun 11 17:43:55 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-init.c (expand_default_init): New function to handle the
+ details of default copy constructors and other magic in one place.
+
+ * cp-init.c (expand_aggr_init_1): Implement default constructors
+ more fully.
+
+ Thu Jun 11 17:16:54 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-call.c (build_method_call): Don't produce an error message if
+ we are looking up things speculatively.
+
+ Thu Jun 11 10:58:47 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-call.c (convert_harshness): Penalize const arguments passed
+ into non-const parameters.
+
+ Thu Jun 11 10:02:52 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-typeck.c (build_c_cast): Implement more reference casts so
+ that one can cast a base reference to a derived reference.
+
+Tue Jul 21 15:28:36 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.h (SECONDARY_MEMORY_NEEDED): Define to force reload to
+ handle any copy between GENERAL_REGS and FP_REGS.
+
+ * sched.c (schedule_block): Give some insns high priorities,
+ instead of excluding them from scheduling, to ensure that they end
+ up at the end of the block after scheduling.
+
+ * i960.c (i960_output_ldconst): Use REAL_VALUE_FROM_CONST_DOUBLE
+ instead of pointer indirection to extract double from CONST_DOUBLE.
+
+Tue Jul 21 14:05:34 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * svr4.h (HANDLE_SYSV_PRAGMA): Defined.
+
+ * sol-crt*.asm: Renamed from sol-crt*.s, and put in config.
+ * t-sol2 (crt*.o): Changed accordingly. Also use $(AS).
+
+ * gbl-ctors.h (ON_EXIT): Test HAVE_ATEXIT before sun.
+
+Mon Jul 20 18:56:02 1992 Fred Fish (fnf at fishpond)
+
+ * svr4.h (ASM_OUTPUT_BEFORE_CASE_LABEL): New macro--default definition.
+ (ASM_OUTPUT_CASE_LABEL): Use that.
+ * m68ksgs.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Do the swbeg here.
+ (ASM_OUTPUT_CASE_LABEL): Use that.
+
+ * configure (m68k-*-amix*): Use fixinc.svr4 and install.sh.
+
+ * x-amix (ENQUIRE_CFLAGS): Remove; obsolete.
+
+ * amix.h (TRANSFER_FROM_TRAMPOLINE): Remove #undef.
+
+Mon Jul 20 17:45:46 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_source_line): New function.
+ * final.c (output_source_line): Use that.
+
+ * configure (sparc-*-sunos5*): New alias.
+ (sparc-*-solaris2*): Use t-sol2.
+
+ * i860.md (mulsi3_little, mulsi3_big): New define_expand patterns.
+ (mulsi3): Just use one of them.
+
+ * Makefile.in (install-fixincludes): Pass second and third args.
+
+Mon Jul 20 16:07:12 1992 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): change _c$main_args to
+ uppercase instead of relying on gas to make the case translation
+
+Sun Jul 19 00:04:16 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-tree.h (C_PROMOTING_INTEGER_TYPE_P): New macro.
+ * c-decl.c (duplicate_decls, grokdeclarator, finish_struct):
+ Use C_PROMOTING_INTEGER_TYPE_P to decide whether a type promotes.
+ (start_function): Likewise.
+ * c-typeck.c (default_conversion): Use C_PROMOTING_INTEGER_TYPE_P
+ to decide whether a type should promote.
+ (self_promoting_args_p, self_promoting_type_p): Likewise.
+
+ * c-aux-info.c (gen_type): For array type, state the size.
+
+ * final.c (output_addr_const): Handle ZERO_EXTEND and SIGN_EXTEND.
+ * expr.c (expand_expr, NOP_EXPR case): If EXPAND_INITIALIZER,
+ generate ZERO_EXTEND or SIGN_EXTEND; don't emit insns.
+
+ * function.c (assign_parms): Use const0_rtx as DECL_RTL and as
+ DECL_INCOMING_RTL if tmode of parm is void.
+
+ * jump.c (mark_jump_label): Don't make REG_LABEL for nonlocal label.
+ * loop.c (add_label_notes): Don't make REG_LABEL for nonlocal label.
+ (rtx_renumbered_equal_p): Use == to compare nonlocal labels.
+
+ * rtl.h (LABEL_REF_NONLOCAL_P): New macro.
+ * expr.c (expand_expr): Set LABEL_REF_NONLOCAL_P for nonlocal labels.
+ * reload1.c (set_label_offsets): Ignore nonlocal labels.
+
+ * c-parse.y (primary): Set TREE_CONSTANT in the NOP_EXPR for an enum.
+
+ * Solaris changes from Cygnus:
+
+ * fixinc.svr4: take a third argument indicating where files to be
+ copied in should come from (useful when not building in source
+ directory).
+ Set TERM to dumb so ex won't hang (by zoo).
+ * fixincludes: Take the same new argument.
+
+ * gmon-sol2.c: New file.
+ * t-sol2: New file.
+ * sol2-crt1.s, sol2-crti.s, sol2-crtn.s: New files.
+
+ * xm-spcv4.h (ONLY_INT_FIELDS): Define, if __GNUC__.
+
+ * sparc.h (FUNCTION_PROFILER): Use ASM_OUTPUT_INTERNAL_LABELREF.
+ (FUNCTION_BLOCK_PROFILER): Mark with FIXME that it needs work.
+ (ASM_OUTPUT_INTERNAL_LABELREF): Define.
+ * spc-sol2.h: Entire file is new except for
+ defining MD_STARTFILE_PREFIX.
+ * dbxout.c (dbxout_block): obey DBX_BLOCKS_FUNCTION_RELATIVE
+ (dbxout_init): Use ASM_IDENTIFY_GCC_AFTER_SOURCE if defined.
+
+ * sparc.h (CONSTANT_ALIGNMENT): Add parens for Sun compiler.
+
+Sun Jul 19 11:03:56 1992 Fred Fish (fnf at fishpond)
+
+ * i386v4.h (real.h): Remove apparently unnecessary inclusion.
+ * i386v4.h (HANDLE_SYSV_PRAGMA): Replaces HANDLE_PRAGMA.
+
+Sat Jul 18 20:37:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_binary_op): Don't set shorten for signed division.
+
+ * final.c (end_final): Align the table of addresses.
+
+Fri Jul 17 23:49:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cexp.y: Include stdio.h.
+
+Fri Jul 17 06:17:34 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * cp-tree.h (DECL_THIS_EXTERN): Renamed from DECL_EXTERNAL.
+ * cp-pt.c, cp-decl.c: Rename DECL_EXTERNAL -> DECL_THIS_EXTERN and
+ then rename TREE_EXTERNAL -> DECL_EXTERNAL.
+
+Fri Jul 17 05:59:26 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (instantiate_decls{,_1}): Don't do instantiation
+ here if the address is mode-dependent.
+
+ * libgcc2.c: Include tconfig.h instead of tm.h.
+ Include machmode.h.
+ (__do_global_dtors): Cast to widest integer type, then narrow, to
+ avoid warning if int is narrower than pointer.
+ * Makefile.in (libgcc2.a): Includes machmode.h.
+
+ * cse.c (cse_insn): Allow paradoxical SUBREGs in the table.
+
+ * reload.c (secondary_memlocs{,_elim}): New variables.
+ (get_secondary_mem, clear_secondary_mem): New function.
+ (push_reload): Convert SUBREG of hard reg to new hard reg.
+ Call get_secondary_mem when needed.
+ (find_reloads): Clear secondary_memloc_elim for each insn.
+ * reload1.c (reload): If SECONDARY_MEMORY_NEEDED, check for frame
+ size changed.
+ Call clear_secondary_mem.
+ (emit_reload_insns, gen_input_reload): Use memory when required to
+ do reload.
+ * reload.h (get_secondary_mem): Declare.
+
+ * cccp.c (NULL_PTR): Define as void * if STDC.
+
+ * rs6000.md (negdi2): Corrected name; used to be negdi3.
+
+ * combine.c (subst, case SET): Put code to move SUBREG after
+ code that calls make_compound_operation.
+ (make_extraction): Don't check for INNER a REG except for in dest.
+ Fix typo checking for REG.
+ (make_compound_operation): Get the result in the same mode it
+ used to be.
+
+ * reload.c (push_reload): If a SUBREG requires a secondary reload
+ but the inner expression doesn't, reload the inner expression
+ instead.
+
+Fri Jul 17 02:20:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (process_command): Handle `-Wl,' and `-Wa,'.
+ (do_spec_1): Handle %Y.
+ (default_compilers): Use %Y in assembler commands.
+
+ * function.c (assign_parms): In last change, test mode in parm type.
+
+Thu Jul 16 15:03:25 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * loop.c (find_and_verify_loops): Ignore jumps to missing labels,
+ when using P.
+
+ * c-typeck.c (build_binary_op): Improve shift warning messages.
+
+ * x-dpx2 (AS): Use $(GAS).
+ (GAS): New variable.
+
+ * mot3300.h (ASM_OUTPUT_CASE_END): Deleted.
+
+ * function.c (assign_parms): If arg was passed by invisible
+ reference, copy it to a pseudo if appropriate.
+
+ * dwarfout.c (pure_or_virtual_attribute):
+ Add #if 0 around use of DECL_ABSTRACT_VIRTUAL_P.
+
+Wed Jul 15 16:29:05 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * dwarfout.c (BLOCK_INLINE_FUNCTION): Obsolete definition deleted.
+ (block_ultimate_origin): New function.
+ (output_block):
+ Local var `have_significant_locals' renamed to `must_output_die'.
+ (output_block): Rewritten to handle abstract & concrete instances of
+ blocks of inline functions.
+ (output_decls_for_scope):
+ Don't bump `next_block_number' for abstract blocks.
+
+ * toplev.c (rest_of_compilation): Call `dwarfout_file_scope_decl' for
+ both types of "abstract" instances of inline functions.
+
+ * tree.def (BLOCK): Use new tree code category letter 'b' for BLOCKs.
+ * tree.h (struct tree_block): New struct type definition added.
+ (BLOCK_VARS, BLOCK_TYPE_TAGS, BLOCK_SUBBLOCKS, BLOCK_HANDLER_BLOCK):
+ Changed to reference fields of the new `struct tree_block' type.
+ (BLOCK_ABSTRACT_ORIGIN, BLOCK_ABSTRACT): Definitions added.
+ (union tree_node): Added `struct tree_block' as a new variant.
+ * tree.c (typedef tree_node_kind): Added new kind, i.e. `b_kind'.
+ (tree_node_kind_names): Added string name for new kind `b_kind'.
+ (make_node, copy_node, stabilize_reference_1):
+ Handle case 'b' (for BLOCK nodes).
+ (make_node): Don't try to deal with BLOCKs when doing a type 'e' node.
+ * print-tree.c (print_node):
+ Handle type 'b'; delete code for BLOCK from 'e' case.
+ Handle fields BLOCK_ABSTRACT_ORIGIN and BLOCK_ABSTRACT.
+ * calls.c (calls_alloca): Don't return 0 automatically if the expr
+ given is headed by a type 'b' node.
+ * cp-tree.c (break_out_calls): Add case for decl nodes.
+ Added case to catch BLOCK nodes (and to abort).
+ * integrate.c (copy_decl_tree): Set BLOCK_ABSTRACT_ORIGIN in new
+ instance block if not already set.
+ (expand_inline_function): Set BLOCK_ABSTRACT_ORIGIN for outermost
+ scope to point to progenitor (abstract inline) FUNCTION_DECL node.
+ (integrate_decl_tree): Set BLOCK_ABSTRACT_ORIGIN for inlined instance
+ BLOCKs.
+ (set_block_origin_self, set_decl_origin_self, set_block_abstract_flags,
+ set_decl_abstract_flags): New functions.
+ (output_inline_function): Call `set_decl_origin_self' for each fndecl
+ which is about to have an out-of-line instance generated for it.
+
+Wed Jul 15 15:08:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-convert.c (convert_to_integer): Push truncation inside COND_EXPR.
+
+ * optabs.c (emit_cmp_insn): Always do protect_from_queue on x, y, size.
+ (expand_float, expand_fix): Likewise.
+ * expmed.c (expand_shift, expand_set_flag):
+ Call protect_from_queue before convert_to_mode.
+ * expr.c (convert_move): Don't call protect_from_queue.
+ (emit_block_move): Protect SIZE.
+
+ * explow.c (allocate_dynamic_stack_space) [SETJMP_VIA_SAVE_AREA]:
+ Always call round_push; we can't rely on alignment of size.
+
+Wed Jul 15 06:47:11 1992 Richard Kenner (kenner@vlsi1.ultra.nyu)
+
+ * combine.c (try_combine): Verify that I2DEST is a register before
+ trying to change its mode.
+
+Tue Jul 14 15:13:28 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * c-decl.c (finish_struct): Handle nested struct redefinitions.
+ * stor-layout.c (layout_record): Handle NULL dsize.
+
+Tue Jul 14 21:31:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (duplicate_decls, pushdecl, grokdeclarator):
+ (store_parm_decls, combine_parm_decls, finish_function):
+ Use TYPE_MAIN_VARIANT when comparing against specific non-void types.
+ * c-typeck.c (self_promoting_args_p, self_promoting_type_p):
+ (signed_type, unsigned_type, default_conversion, check_format):
+ (build_binary_op, c_expand_start_case): Likewise.
+
+Mon Jul 13 14:57:34 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_function): Fix braino validating ret type of main.
+
+ * expr.c (expand_builtin): Refer to errno at rtl level only.
+ * sparc.h (TARGET_EDOM, GEN_ERRNO_RTX): New macros.
+
+Mon Jul 13 06:35:53 1992 Paul Eggert (eggert@twinsun.com)
+
+ * expr.c (expand_builtin):
+ For fsqrt, always use the special insn, then test for nan.
+
+Mon Jul 13 08:45:34 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.md: Constraint fixes from Torbjorn.
+
+ * jump.c (jump_optimize): In `x = a; if (...) x = b;' allow both a
+ and b to be non-zero if jumps are very expensive. Also allow a
+ and b to be constants where all the set bits in a are also set in
+ b when jumps are merely expensive.
+
+Sun Jul 12 17:43:03 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * genpeep.c (match_rtx): Sometimes use %ld when printing an XWINT.
+
+ * regclass.c (record_reg_classes): If OP is a REG, use it's mode
+ in case the mode in MATCH_OPERAND is VOIDmode.
+
+Sun Jul 12 13:03:54 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Replace the code that finds all directories
+ so that it looks for subdirs of dir reached via symlinks.
+
+ * cp-tree.h (IDENTIFIER_VIRTUAL_P): Macro moved here.
+ * tree.h (IDENTIFIER_VIRTUAL_P): Deleted from here.
+
+ * rtl.h (NOTE_BLOCK_NUMBER, SET_NOTE_BLOCK_NUMBER): New macros.
+ (NOTE_DECL_NAME, NOTE_DECL_CODE, ...): #if 0'd.
+ * function.c (identify_blocks, reorder_blocks): New functions.
+ (all_blocks, blocks_nreverse): New functions.
+
+ * isi.h: Deleted the #error; file should work now.
+ (LIB_SPEC): Use -lg only once.
+ (STRUCTURE_SIZE_BOUNDARY): Defined.
+
+ * protoize.c (process_aux_info_file): Set must_create before jumping to
+ start_over. Don't clear must_create at start_over. Don't test
+ source file mod time for SYSCALLS.
+
+ * machmode.h (GET_MODE_NUNITS): Avoid division by zero.
+
+Sat Jul 11 22:21:47 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-parse.y (primary): Don't test TREE_EXTERNAL;
+ call assemble_external regardless.
+
+ * tree.h (DECL_INLINE, DECL_NONLOCAL, DECL_REGISTER, DECL_EXTERNAL):
+ Renamed from TREE_INLINE, TREE_NONLOCAL, TREE_REGDECL, TREE_EXTERNAL.
+ All uses changed.
+
+ * xm-hp320.h (USG): Define it.
+
+Sat Jul 11 21:43:56 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump meissner version number to 21.
+
+ * mips.md (andsi3, iorsi3, xorsi3): Make predicates match the
+ actual machine, since combine can now recreate the bitfields, and
+ doesn't do multiple logical operations when setting more than one
+ bitfield in a word.
+
+ * objc-actions.c (xmalloc, free): Don't provide extern decls for
+ these, since tree.h and rtl.h both now provide them.
+
+ * cp-lex.c (real_yylex): Declare a variable i, since a for loop
+ uses it as an index. Remove an extra '(' from a build_int_2 call.
+
+Sat Jul 11 13:13:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c: Get rid of default definitions of ASM_OUTPUT_CONSTRUCTOR
+ and ASM_OUTPUT_DESTRUCTOR.
+
+ * c-aux-info (affix_data_type): Don't be fooled by names starting
+ with `const' or `volatile'.
+
+ * c-typeck.c (digest_init): Deal with nested {...} for scalar.
+
+ * loop.c, reload1.c: Include stdio.h before config.h.
+
+ * toplev.c (rest_of_compilation): Save and restore DECL_ARGUMENTS.
+
+Fri Jul 10 22:42:34 1992 Paul Eggert (eggert@twinsun.com)
+
+ * tree.c (build_real_from_int_cst): Truncate when folding to float.
+ (real_value_from_int_cst): Do not treat the topmost bit
+ of an unsigned long long value as a sign bit.
+
+ * cse.c (simplify_binary_operation): Don't optimize 0.0/x to 0.0
+ if IEEE floating point is used, because x might be negative or NaN.
+
+Fri Jul 10 15:37:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * genpeep.c (match_rtx): Handle `w' elts of rtx.
+
+ * Makefile.in (INTERNAL_CFLAGS): Add -DIN_GCC.
+
+Fri Jul 10 18:56:22 1992 Eric Youngdale (youngdale@v6550d.nrl.navy.mil)
+
+ * cccp.c (finclude): Clean error msf if file_size_and_mode fails.
+
+Fri Jul 10 13:44:46 1992 Howard Chu (hyc@hanauma.jpl.nasa.gov)
+
+ * fx2800.h (LINK_LIBGCC_SPECIAL): Defined.
+ (DBX_OUTPUT_STANDARD_TYPES): Check that DECL_NAME(decl) exists
+ before trying to get its IDENTIFIER_POINTER.
+
+Thu Jul 9 20:56:01 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * dbxout.c (dbxout_type_methods): Fix minimal_debug so
+ that it skips a redundant class name prefix, as intended.
+ It now expects the length digits that precede the class name.
+
+Thu Jul 9 18:23:12 1992 Torbjorn Granlund (tege@wombat.gnu.ai.mit.edu)
+
+ * Makefile.in, libgcc2.c, longlong.h: Rename udiv_using_sdiv to
+ udiv_w_sdiv.
+
+Thu Jul 9 18:10:40 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.h (STRIP_TYPE_NOPS): New macro.
+ * c-decl.c (build_enumerator): Use STRIP_TYPE_NOPS.
+ * c-typeck.c (default_conversion): Use STRIP_TYPE_NOPS.
+ (build_binary_op, build_function_call): Likewise.
+ * c-common.c (check_case_value): Use STRIP_TYPE_NOPS.
+
+ * mot3300.h (ASM_OUTPUT_CASE_END): New macro.
+ * m68k.c (switch_table_difference_label_flag): New variable.
+
+ * i860.md (QI and HI bte/btne patterns): Deleted.
+
+Thu Jul 9 06:09:20 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * c-typeck.c (default_conversion): Don't use STRIP_NOPS.
+
+ * print-rtl.c: Missing merge from 64-bit changes.
+ (print_rtx): Add new case 'w'.
+
+Wed Jul 8 14:35:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes, fixinc.svr4: Error if no argument.
+
+ * tree.c (integer_zerop, integer_onep, integer_all_onesp):
+ (integer_pow2p, real_zerop, real_onep, real_twop): Use STRIP_NOPS.
+ * expr.c (do_store_flag): Likewise.
+ * varasm.c (output_constructor): Likewise.
+ * c-decl.c (finish_struct, build_enumerator): Likewise.
+ * c-typeck.c (default_conversion, build_binary_op): Likewise.
+ (build_function_call): Likewise.
+
+ * integrate.c (integrate_decl_tree): Get rid of arg functionbody;
+ it was always 0.
+
+ * mot3300.h: Fix typo.
+
+ * final.c (leaf_renumber_regs_insn): Handle new 'w' format.
+
+Wed Jul 8 15:18:33 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * tree.h (DECL_ABSTRACT_ORIGIN, DECL_ABSTRACT): Definitions added.
+ (struct tree_decl): New fields `abstract_origin' & `abstract_flag'.
+ (struct tree_decl): Field `from_inline_flag' deleted.
+ (DECL_FROM_INLINE): Definition revised to check DECL_ABSTRACT_ORIGIN.
+ * integrate.c (copy_decl_list): New function added.
+ (save_for_inline_copying): Call `copy_decl_list' for formal parameters.
+ Set DECL_ABSTRACT_ORIGIN for fndecl to point to itself.
+ (copy_decl_tree): Use `copy_decl_list' rather than just `copy_list'.
+ (integrate_parm_decls, integrate_decl_tree): Set DECL_ABSTRACT_ORIGIN
+ to point to the progenitor.
+ * print-tree.c (print_node): Print the value of DECL_ABSTRACT_ORIGIN
+ rather than the value of DECL_FROM_INLINE.
+
+ * dwarfout.c (output_inlined_enumeration_type_die): New function.
+ (output_inlined_structure_type_die, output_inlined_union_type_die):
+ New functions added.
+ (output_entry_point_die, output_formal_parameter_die,
+ output_global_subroutine_die, output_global_variable_die,
+ output_label_die, output_lexical_block_die,
+ output_inlined_subroutine_die, output_local_variable_die,
+ output_local_subroutine_die):
+ Fixed to handle inline abstract & concrete (i.e. inlined) instances.
+ (output_inlined_subroutine_die): Deleted.
+ (output_label_die): Don't permit the rtx associated with a named
+ user-declared label to be marked as INSN_DELETED_P.
+ (output_tagged_type_instantiation): New function added.
+ (output_decl): Call `output_tagged_type_instantiation'.
+ Don't generate a pubnames label for anything marked as DECL_ABSTRACT.
+ (output_die): Generate the proper kind fo DIE for each of the four
+ possible combination of {normal, inlined} {variable, parameter}.
+ (dwarfout_file_scope_decl): Don't generate pubnames entries if
+ strictly abstract.
+
+ * dwarfout.c (ordering_attribute): Only def if USE_ORDERING_ATTRIBUTE
+ is defined.
+ (output_array_type_die): Only call ordering_attribute if it is defined.
+ (name_and_src_coords_attributes): Don't make it inline.
+ Do make it static linkage.
+ (const_value_attribute): Catch invalid kinds of rtx nodes
+ by aborting for the default case in switch.
+
+ * dwarfout.c (output_ptr_to_mbr_type_die): Make it static linkage.
+ (output_formal_types): Make sure that `formal_type' is initialized.
+ (output_type): Add a default case for switch.
+ (output_decl): Don't suppress DIEs for the initial (artificial)
+ arguments for C++ static member functions.
+
+ * dwarfout.c (ceiling, field_type, simple_type_align_in_bits,
+ simple_type_size_in_bits, field_byte_offset): New functions added.
+ (data_member_location_attribute): Use new routine `field_byte_offset'
+ to calculate the offset value for the AT_location attribute.
+ (byte_size_attribute): Use new routine `field_type' to get the
+ actual type for any FIELD_DECL. Also, use `simple_type_size_in_bits'
+ to avoid potential problems with ERROR_MARKs when computing the size
+ of a FIELD_DECL.
+ (bit_offset_attribute): Rewritten to use `field_byte_offset' when
+ determining the start of the "containing object".
+
+ * integrate.c (expand_inline_function): Integrate parameters before
+ locals to get debugging information in the proper order.
+ (integrate_decl_tree): Don't do a redundant pushlevel/poplevel for
+ the outermost scope (i.e. when level==0)... just use the one created
+ by `expand_inline_function'.
+
+ * calls.c (calls_alloca): For BLOCK, walk subblocks and vars by hand.
+
+Wed Jul 8 13:31:19 1992 Michael Meissner (meissner@osf.org)
+
+ * cp-decl.c (print_binding_level): Fix typo, where 'lbl' was used
+ instead of 'lvl'.
+
+ * objc-actions.c (build_shared_structure_initializer): Correct call
+ to build_int_2 which had only one argument, instead of two.
+
+Wed Jul 8 06:37:40 1992 Torbjorn Granlund (tege@sics.se)
+
+ * gstdarg.h, gvarargs.h: Test `__hppa__' instead of `__hp9000s800__'.
+
+ * romp.md (zero_extendhisi2): Remove unneeded constraint.
+
+ * rs6000.md (zero_extendhisi2): Remove unneeded constraint.
+ (lu/stu): Use %0 instead of %1 in assembler insns.
+ (call_value): Add missing "=" in constraint.
+
+Wed Jul 8 06:30:20 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (floatsidf): Correctly handle case when SImode operand
+ overlaps the first DFmode register.
+
+ * fold-const.c (distribute_bit_expr, range_test, fold_truthop):
+ Use TRUTH_AND_EXPR instead of BIT_AND_EXPR so invert_truthvalue works.
+
+ * c-decl.c (grokdeclarator): Strip all NOP_EXPRs from SIZE.
+
+ * integrate.c: Do 64-bit changes (this file omitted the last time).
+ Replace use of NULL and 0 in functions args with NULL_RTX.
+ (copy_rtx_and_substitute, subst_constants): Handle "w" rtl
+ operand class.
+
+ * rs6000.h (LINK_SPEC): Support -static.
+
+ * tree.c (make_node, copy_node, make_tree_vec, tree_cons, build1):
+ Clear or copy tree nodes in a consistent manner, referencing
+ every byte of the node.
+
+ * regclass.c: Initialize REG_CLASS_CONTENTS into an array of
+ ints, then copy into a HARD_REG_SET to avoid conditionalization
+ of REG_CLASS_CONTENTS on 64-bit machines.
+
+ * c-common.c (check_case_value): Strip the NOP_EXPR added by
+ the grammar.
+ * stmt.c (pushcase, pushcase_range): Don't do it here.
+
+ * c-lex.c (yylex): Ensure TOTAL_PARTS is wide enough to store a
+ constant as wide as we can store in an INTEGER_CST.
+ (LONG_LONG_TYPE_SIZE): Deleted; no longer needed.
+
+Tue Jul 7 15:50:38 1992 Chip Salzenberg (chip@tct.com)
+
+ * x-i386sco (XCFLAGS): Omit flags specific to "rcc".
+ (CC, OLDCC): Put them here instead.
+
+Tue Jul 7 18:57:10 1992 Mike Stump (mrs@wombat.gnu.ai.mit.edu)
+
+ The below entries should make DWARF debugging a little bit easier.
+
+ * cp-decl.c (pushdecl): IDENTIFIER_GLOBAL_VALUE should not be _DECL
+ nodes but rather TYPE_DECLs.
+
+ * cp-decl.c (pushtag): Mark binding layer markers as internal.
+
+ * cp-class.c (finish_struct): Propagate internal mark on binding
+ layer markers.
+
+ * cp-decl2.c (finish_file): Don't name things that should not be
+ named.
+
+ * cp-method.c (decl_as_string): New back-end routine for
+ substitute_nice_name.
+
+ * cp-decl2.c (substitute_nice_name): New function used to create
+ reasonable DECL_NAMEs from cyrptic ones.
+
+ * cp-decl2.c (grokclassfn): Use substitute_nice_name.
+
+Tue Jul 7 14:04:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (emit_move_insn): Don't try subwords for a single word.
+
+ * gcc.c (find_a_file, putenv_from_prefix):
+ Handle value of 2 in require_machine_suffix.
+ (process_command): Supply 2 for standard_exec_prefix{,_1}.
+
+ * gstdarg.h: Undefine _BSD_VA_LIST if we define va_list.
+
+ * cccp.c (append_include_chain): Fix setting of first_bracket_include.
+
+ * loop.c (init_loop): Use word_mode, not SImode.
+
+ * x-dpx2: New file.
+ * x-dpx2200, x-dpx2300: Files deleted.
+ * configure (m68k-bull-sysv*): Fatal error unless --with-gas.
+ Always use x-dpx2.
+
+ * libgcc2.c (XFtype): Turn off definition; not used.
+ (TFtype): Define only if needed.
+
+Tue Jul 7 11:57:44 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * tahoe.md (call_value): Add `=' to output operand constraint.
+ * arm.md (call_value): Likewise.
+ * gmicro.md (negsf2, negdf2, abssf2, absdf2): Likewise.
+ (peephole for moving returned value to fp reg): Likewise.
+
+ * longlong.h (SI_TYPE_SIZE): Renamed from LONG_TYPE_SIZE.
+
+ * longlong.h (machine independent code): #define udiv_qrnnd to call
+ __udiv_using_sdiv if we have sdiv_qrnnd but not udiv_qrnnd.
+ * libgcc2.c (__udiv_using_sdiv): New function.
+ * Makefile.in (LIB2FUNCS): Add __udiv_using_sdiv.
+
+Mon Jul 6 23:28:29 1992 Mike Stump (mrs@wombat.gnu.ai.mit.edu)
+
+ * cp-dem.c, cp-lex.c, cp-method.c, cp-xref.c: Do not include
+ string.h or strings.h.
+
+Mon Jul 6 18:32:31 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (operand_subword): Avoid conditionals in macro arg.
+
+ * Changes to support execution on 64-bit machines.
+ * machmode.h (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, HOST_PTR_PRINTF):
+ Provide default definitions.
+ (MAX_SHORT): New macro.
+ (GET_MODE_BITSIZE): Cast result and shift constant to HOST_WIDE_INT.
+ * rtl.h (union rtunion_def): Add field rtwint.
+ (XWINT): New accessor macro.
+ (INTVAL): Use XWINT, not XINT.
+ (exact_log2, floor_log2, plus_constant, plus_constant_for_output):
+ Now macros that cast arg to HOST_WIDE_INT.
+ (NULL, NULL_PTR): Provide default definitions.
+ (GEN_INT): New macro.
+ (get_integer_term): Now returns HOST_WIDE_INT.
+ * tree.h (NULL, NULL_PTR): Provide default definitions.
+ (INT_CST_LT, INT_CST_LT_UNSIGNED): Cast to HOST_WIDE_INT.
+ (struct tree_int_cst): Pieces of constant are HOST_WIDE_INT, not
+ long.
+ (exact_log2, floor_log2, build_int_2): Now macros, like rtl.h.
+ * real.h (REAL_VALUE_TYPE, union real_extract): Use HOST_WIDE_INT,
+ not long.
+ (CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Use XWINT instead of XINT.
+ * rtl.def (CONST_INT): Operand type now "w".
+ (CONST_DOUBLE): Change operands from type "i" to "w".
+ * basic-block.h (REGSET_ELT_BITS): Always use HOST_BITS_PER_WIDE_INT.
+ (REGSET_ELT_TYPE): New macro; same as HOST_WIDE_INT.
+ * expr.h (ARGS_SIZE_RTX): Use NULL_RTX in expand_expr call.
+ (plus_constant): Remove duplicate declaration.
+ * hard-reg-set.h (HARD_REG_SET): Only scalar type we use
+ is HOST_WIDE_INT; array is array of HOST_WIDE_INT.
+ * loop.h (struct induction): Field CONST_ADJUST is now HOST_WIDE_INT.
+ (loop_n_iterations): Now unsigned HOST_WIDE_INT.
+ (loop_iterations): Returns HOST_WIDE_INT.
+ * c-parse.y, cexp.y, c-decl.c, c-lex.c, c-typeck.c, caller-save.c:
+ Change 0 or NULL when passed as a parameter that should be a pointer
+ to NULL_TREE, NULL_RTX, or NULL_PTR, as appropriate.
+ * calls.c, cccp.c, combine.c, cp-lex.c, cse.c, dbxout.c: Likewise.
+ * dwarfout.c, emit-rtl.c, explow.c, expmed.c, expr.c: Likewise.
+ * final.c, flow.c, fold-const.c, function.c, gcc.c: Likewise.
+ * genattrtab.c, genpeep.c, genrecog.c, global-alloc.c: Likewise.
+ * jump.c, local-alloc.c, optabs.c, recog.c, reg-stack.c: Likewise.
+ * regclass.c, reload.c, reload1.c, reorg.c, rtl.c: Likewise.
+ * rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c: Likewise.
+ * toplev.c, unroll.c, varasm.c, loop.c, xcoffout.c: Likewise.
+ * caller-save.c, combine.c, cp-class.c, cp-decl.c, cp-method.c:
+ Cast and declare objects used to refer to wide values as HOST_WIDE_INT.
+ Use HOST_BITS_PER_WIDE_INT instead of HOST_BITS_PER_INT.
+ * cp-pt.c, cp-type2.c, cp-typeck.c, cse.c, dbxout.c: Likewise.
+ * dwarfout.c, emit-rtl.c, explow.c, expmed.c, expr.c: Likewise.
+ * final.c, fold-const.c, genattrtab.c, recog.c, reg-stack.c: Likewise.
+ * regclass.c, reload.c, sched.c, stmt.c, stor-layout.c: Likewise.
+ * loop.c, toplev.c, unroll.c, varasm.c: Likewise.
+ * caller-save.c, combine.c, flow.c, global-alloc.c, reorg.c, sched.c:
+ When refering to regsets, use type REGSET_ELT_TYPE.
+ * calls.c, combine.c, emit-rtl.c, explow.c, expmed.c, expr.c, final.c:
+ Use GEN_INT macro when making CONST_INTs.
+ * function.c, jump.c, loop.c, optabs.c, recog.c, reload1.c: Likewise.
+ * unroll.c: Likewise.
+ * cp-decl.c, cp-ptree.c, print-tree.c: Use HOST_PTR_PRINTF when
+ printing pointer values.
+ * cccp.c, cexp.y, gcc.c (NULL, NULL_PTR): Provide default definition.
+ * c-common.c (NULL): Remove definition from here.
+ * c-decl.c (NULL): Likewise.
+ (finish_struct): Ensure high-order part of width is zero.
+ * cp-decl.c (finish_enum): Likewise.
+ * c-lex.c (yylex): Call build_int_2 in more portable way.
+ (yyprint): Print constant different ways, depending on host parameters.
+ * final.c (output_asm_insn, output_addr_cont): Likewise.
+ * genattrtab.c (write_test_expr): Likewise.
+ * print-tree.c (print_node_brief, print_node): Likewise.
+ * cp-decl.c (xref_tag): Remove explicit reference to modes.
+ * cp-method.c (build_overload_value): Likewise.
+ * cp-lex.c (real_yylex): Make accumulating bits for constant
+ more portable.
+ * cse.c (uid_cuid): Now pointer to int instead of to short.
+ (exp_equiv_p): Change ifs on GET_RTX_FORMAT to a switch.
+ Add format code of "w".
+ * emit-rtl.c (gen_rtx): Add format code of "w".
+ * jump.c (rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise.
+ * loop.c (rtx_equal_for_loop_p): Likewise.
+ * reload.c (operands_match_p): Likewise.
+ * rtl.c (copy_rtx, copy_most_rtx): Likewise.
+ * rtlanal.c (rtx_equal_p): Likewise.
+ * sched.c (rtx_equal_for_memref_p): Likewise.
+ * explow.c (plus_constant_wide): Formerly plus_constant; argument
+ is HOST_WIDE_INT.
+ (plus_constant_for_output_wide): Similarly.
+ * fold-const.c: Use MAX_SHORTS for dimension of array of shorts.
+ * genattrtab.c (NULL_ATTR): New macro.
+ (attr_rtx): Use XWINT, not XINT, for CONST_INT.
+ Add case "w".
+ (check_attr_test, write_test_expr, main): Use XWINT, not XINT,
+ for CONST_INT.
+ * genemit.c (gen_exp): Use "NULL_RTX" instead of "0" when
+ emitting null.
+ Use GEN_INT and proper width when emitting a CONST_INT.
+ Abort if trying to write a CONST_DOUBLE.
+ * genrecog.c (struct decision): Add new fields TEST_ELT_ZERO_WIDE
+ and ELT_ZERO_WIDE.
+ (add_to_sequence, not_both_true, merge_trees, write_tree_1):
+ Use new fields.
+ * global-alloc.c (INT_BITS, INT_TYPE): Use HOST_WIDE_INT for type
+ of conflict matrix.
+ * loop. (loop_n_iterations): Now HOST_WIDE_INT.
+ * recog.c: Remove redundant declarations of plus_constant_for_output
+ and copy_rtx.
+ * rtl.c: Declare atol if needed.
+ (rtx_format): Add code for "w".
+ (read_rtx): Read code "w" field with atol if required.
+ (init_rtl): Fields of CONST_DOUBLE are now type "w".
+ * rtlanal.c (get_integer_term): Returns HOST_WIDE_INT.
+ * cccp.c, toplev.c: Error function args are HOST_WIDE_INT (kludge).
+ * toplev.c (exact_log2_wide): Renamed from exact_log2 and now has
+ arg of type HOST_WIDE_INT.
+ (floor_log2_wide): Similarly.
+ * tree.c (permalloc): Type of SIZE arg is int, not long.
+ (build_int_2_wide): Renamed from build_int_2 and has args of
+ type HOST_WIDE_INT.
+ * unroll.c (loop_iterations): Now returns HOST_WIDE_INT.
+ * varasm.c (immed_double_const): Arguments are now HOST_WIDE_INT.
+
+Mon Jul 6 14:56:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-common.c (decl_attributes): Don't set DECL_PACKED on VAR_DECL.
+
+ * Makefile.in (GCC_CFLAGS):
+ Use CROSS_GCC_CFLAGS instead of -B for tooldir.
+ * cross-make (CROSS_GCC_CFLAGS): Define as -B for tooldir.
+
+ * c-decl.c (finish_function): If return type of `main' is not `int',
+ warn instead of doing DEFAULT_MAIN_RETURN.
+
+ * collect2.c, dwarfout.c, halfpic.c: Don't incude string.h.
+
+ * c-decl.c (duplicate_decls): Let char *foo () match void *foo ()
+ only if one of them came from a system header file.
+
+ * stmt.c (pushcase): Fix typo.
+
+ * Makefile.in (ALLOCA_FINISH): Make default `true'.
+
+ * cccp.c (main): Clear first_bracket_include for -I-.
+ Set first_system_include for first system header directory.
+ (is_system_include): Start search at first_system_include.
+
+Mon Jul 6 12:58:27 1992 Chip Salzenberg (chip@tct.com)
+
+ * cccp.c (INCLUDE_LEN_FUDGE): Defined.
+ (append_include_chain): New function. Adds directory(ies)
+ to include chain and updates value of max_include_len.
+ (main, path_include): Use append_include_chain.
+ (do_include): Use INCLUDE_LEN_FUDGE.
+
+ * tree.h (DECL_IN_SYSTEM_HEADER): Defined.
+ (struct tree_decl): Add in_system_header_flag.
+ * c-common.c (declare_function_name): For __FUNCTION__
+ and __PRETTY_FUNCTION__, set DECL_IN_SYSTEM_HEADER instead
+ of TREE_USED to supress `unused' warnings.
+ * c-decl.c (duplicate_decls): Merge DECL_IN_SYSTEM_HEADER flag.
+ * print-tree.c (print_node): Display TREE_RAISES and
+ DECL_IN_SYSTEM_HEADER flags.
+ * toplev.c (compile_file): Do not warn if an unused DECL
+ has DECL_IN_SYSTEM_HEADER set.
+ (rest_of_compilation): Do not set TREE_USED on static
+ functions defined in system headers; this will be taken
+ care of with DECL_IN_SYSTEM_HEADER.
+ * tree.c (make_node): Set DECL_IN_SYSTEM_HEADER on permanent
+ decls defined in system headers.
+ * objc-actions.c (build_module_descriptor,add_objc_decls):
+ Set DECL_IN_SYSTEM_HEADER instead of TREE_USED on compiler-
+ created decls.
+
+Mon Jul 6 10:17:30 1992 Michael Collison (collison at osf.org)
+
+ * i386.h (SUBTARGET_SWITCHES):
+ Incoporate SUBTARGET_SWITCHES into TARGET_SWITCHES.
+ (HALF_PIC_P, HALF_PIC_NUMBER_PTRS, HALF_PIC_NUMBER_REFS,
+ HALF_PIC_ENCODE, HALF_PIC_DECLARE, HALF_PIC_INIT,
+ HALF_PIC_ADDRESS_P, HALF_PIC_PTR, HALF_PIC_FINISH):
+ Define these as stubs if not OSF/1 platform.
+ * i386.md (movsi): Recognize half-pic moves.
+
+Mon Jul 6 11:16:47 1992 Tim Moore (moore@defmacro.cs.utah.edu)
+
+ * pa.h (ASM_DECLARE_FUNCTION_NAME): Fix typo
+
+Mon Jul 6 08:48:51 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * m68k.md (swapsi): Add `+' operand constraints.
+ (insert to memory recognizer): Add `+'.
+ (peephole for moving returned value to fp reg): Add `='.
+
+Sun Jul 5 16:34:24 1992 John F Carr (jfc at Achates.mit.edu)
+
+ * vax.md (addsi3): Code generation improvements (whether to use movab).
+
+ * vax.md (andsi3, andhi3, andqi3): If one of the source operands
+ is a constant, complement that operand instead of a register or
+ memory operand.
+
+Sun Jul 5 13:16:15 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): When splitting using a DEFINE_SPLIT,
+ update the number of sets of the destination if it is being set
+ twice. Also update reg_significant.
+
+Sun Jul 5 13:14:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c++: Fix typo testing $quote for nullness.
+
+ * cse.c (simplify_binary_operation): Don't put sum of two symbolic
+ addresses into a CONST.
+
+ * m68kv4.h (ASM_OUTPUT_ALIGNED_COMMON): #undef this.
+ (ASM_OUTPUT_ALIGNED_LOCAL): #undef this.
+ (ASM_OUTPUT_ASCII): New overriding definition.
+ (ASM_OUTPUT_CASE_END): New overriding definition.
+
+ * c-typeck.c (convert_arguments): No -Wconversion warning
+ if the function wants an enumeral type.
+
+ * tek6000.h, tek6100.h, tek6200.h: New files.
+ * configure (ns32k-tek6100-bsd, ns32k-tek6200-bsd): New alternatives.
+ * config.sub: utek is synonym for bsd.
+
+ * Makefile.in (alloca.o): Add -c.
+
+ * Makefile.in (start.encap): Use LIBGCC1, not LIBGCC1_TARGET.
+ (GCC_CFLAGS): Find executables in $(tooldir)/bin, not $(tooldir).
+ (libgcc1.cross): New target.
+ (all.cross, cross-test): Depend on libgcc.a.
+ * cross-make (LIBGCC1): Use libgcc1.cross.
+
+ * Makefile.in (USER_H): va-hp800.h changed to va-pa.h.
+ (install-common): Fix typo.
+
+ * stmt.c (pushcase, pushcase_range): Use STRIP_NOPS on the values.
+
+ * x-amix, x-i860v4, x-ncr3000, x-sparcv4: Undo last change.
+ * x-i386v4, x-m68kv4: Files deleted.
+ * configure (i386-*-sysv4, i486-*-sysv4, m68k-*-sysv4):
+ Corresponding changes.
+
+ * c-decl.c (duplicate_decls): Don't warn about disagreement in `inline'
+ except when non-inline fn is made inline after a call or definition.
+
+Sun Jul 5 10:25:22 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * c-decl.c (grokdeclarator): Make `long long long' an error, not a
+ warning. Make duplicate qualifiers do pedwarn, not warning.
+
+ * c-decl.c (pushdecl): Always create a new (variant) ..._TYPE node
+ for each new TYPE_DECL node created.
+
+ * libgcc2.c (UQItype, SItype, USItype, DItype, UDItype, SFtype, DFtype,
+ XFtype, TFtype): Typedefs added.
+ (SI_TYPE_SIZE): Renamed globally from LONG_TYPE_SIZE.
+ Define names for ANSI C types to `bogus_type' over the range of lines
+ where we must always use the new mode-related types. Undef them again
+ at the end of that range (so we can used the ANSI types again), and
+ then define the mode-related type names to `bogus_type' to insure
+ those are not used from then on.
+
+ * libgcc2.c, longlong.h (DIstruct): Renamed globally from `longlong'.
+ (DIunion): Renamed globally from `long_long'.
+ Universally use the new mode-related type names for all functions
+ and macros which expect, yield, or otherwise rely on operands to be
+ of certain GCC-defined machine modes.
+
+Sun Jul 5 11:11:00 1992 Torbjorn Granlund (tege@wombat.gnu.ai.mit.edu)
+
+ * pa.h: (TARGET_VERSION): Print " (hppa)".
+ * pa.md (zdepi recognizer): Add attribute.
+ (recognizers for SImode load and store with fpregs): Add `=' to
+ operand 0.
+
+Sat Jul 4 15:02:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (mips-*-sysv4): Don't set use_collect2.
+
+ * c-parse.y (primary): Wrap a NOP_EXPR around an enum value.
+
+ * libgcc2.c (__builtin_saveregs for i860): Test __svr4__, not SVR4.
+ * va-i860.h: Test __svr4__.
+
+ * c-decl.c (finish_function): Set BLOCK_SUPERCONTEXT of outer block.
+
+ * x-m88kv3: File deleted.
+
+ * x-sparcv4 (X_CFLAGS): Add -dn.
+
+ * reorg.c: Move the #ifdef DELAY_SLOTS after the #includes.
+
+Sat Jul 4 14:16:33 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (SUBST): Ensure we don't call something that can make
+ a new undo entry in the middle of our making one.
+
+Sat Jul 4 12:17:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (cp-parse.c): Append YYEMPTY to cp-parse.h, not ...y.
+
+ * cse.c (simplify_unary_operation): Add aborts in zero_extend
+ and sign_extend cases, explaining how they might need to be changed.
+
+ * i960.h (WORD_SWITCH_TAKES_ARG): Fix typo.
+
+ * x-amix, x-sparcv4, x-i860v4, x-i386v4, x-ncr3000:
+ Add -static to X_CFLAGS.
+ * x-m68kv4: New file.
+ * isc.h (HANDLE_SYSV_PRAGMA): Defined.
+
+Sat Jul 4 15:18:33 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * xm-spc-sol2.h: New file.
+
+ * tree.h (DECL_UID): Definition added.
+ (struct tree_decl): `uid' field added.
+ * tree.c (DECL_UID): Initialize this uniquely for each new ..._DECL.
+
+ * rtl.h (NOTE_INSN_DELETED_LABEL): Definition added.
+ * rtl.c (note_insn_name): Add entry for NOTE_INSN_DELETED_LABEL.
+ * final.c (final_scan_insn): Call `dwarfout_label' for each
+ `NOTE_INSN_DELETED_LABEL'.
+ * jump.c (delete_insn): Don't really delete CODE_LABELs corresponding
+ to user-declared lables... Turn them into NOTE_INSN_DELETED_LABELs
+ instead.
+
+ * dwarf.h (AT_abstract_origin): Renamed from AT_specification.
+ * dwarfout.c (dwarf_attr_name): Likewise.
+ (dwarf_tag_name, dwarf_attr_name, dwarf_stack_op_name,
+ dwarf_typemod_name, dwarf_fmt_byte_name): Use normal DWARF prefixes
+ for string names of unrecognized values.
+ (is_block_body): New function added.
+ (DECL_NAME_FMT): Definition added.
+ (equate_decl_number_to_die_number, abstract_origin_attribute,
+ pure_or_virtual_attribute): New functions added.
+ (src_coords_attribute): Only define this is DWARF_DECL_COORDINATES
+ is defined.
+
+ * populate: New file.
+
+ * function.c (instantiate_decls): Delete #if 1.
+
+ * flags.h, toplev.c, dbxout.c (use_gnu_debug_info_extensions):
+ Renamed from `use_gdb_dbx_extensions'.
+
+ * toplev.c (main): Added support for -gdwarf+ and for -gxcoff+.
+
+Sat Jul 4 08:39:47 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (m88k_end_prologue): Reset frame_laid_out here.
+ (m88k_expand_prologue): Not here.
+
+ * m88k.h (IDENT_ASM_OPT, ALIGN_ASM_OPT, ASM_OUTPUT_CASE_LABEL):
+ Override svr4.h.
+
+Fri Jul 3 12:40:27 1992 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (fold_convert): When converting a floating point
+ constant to integer, warn about out-of-range values after truncating
+ to integer, not before.
+
+Fri Jul 3 19:34:07 1992 Mike Stump (mrs@hal)
+
+ * Makefile.in ($(srcdir)/cp-parse.c): extract YYEMPTY out of the
+ parser generated .c file and put in the parser .h so that cp-lex.c
+ does not have to define it.
+
+ * cp-tree.c (__eprintf): Third argument line is now unsigned,
+ completes Ron's Jul 2 change.
+
+Fri Jul 3 15:03:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure: Set FIXINCLUDES in Makefile based on sysv4 or not.
+ * x-amix (ENQUIRE_CFLAGS, FIXINCLUDES): Deleted.
+
+ * config.sub: Recognize i486 like i386.
+
+ * defaults.h (ASM_FORMAT_PRIVATE_NAME, ASM_OUTPUT_ADDR_VEC_ELT):
+ (ASM_OUTPUT_ADDR_DIFF_ELT, ASM_STABD_OP): New default definitions.
+ * final.c: Include defaults.h.
+ (ASM_STABD_OP): Deleted.
+ * Makefile.in (final.o) Depend on defaults.h.
+
+ * Makefile.in (toplev.o): Use MAYBE_TARGET_DEFAULT.
+ * configure: Set MAYBE_TARGET_DEFAULT for some targets.
+ Use 3, if target is i486...
+ Recognize i486 as well as i386 for most targets.
+
+ * x-hp320g (LIBGCC1, AR, RANLIB, RANLIB_TEST, LIBCONVERT): Deleted.
+ * t-hp320g (LIBGCC1, AR, RANLIB, RANLIB_TEST, LIBCONVERT): Defined.
+ * t-svr4 (FIXINCLUDES): Deleted.
+
+ * Makefile.in (ENQUIRE_CFLAGS): Add -DNO_LONG_DOUBLE_IO.
+
+ * fold-const.c (BRANCH_COST): Add default definition.
+
+ * cp-tree.h: Declare intQI_type_node, etc.
+ * cp-decl.c: Declare intQI_type_node, etc.
+ (init_decl_processing): Initialize those nodes.
+
+Thu Jul 2 15:18:33 PDT 1992 Ron Guilmette (rfg at ncd.com)
+
+ * amix.h (ASM_OUTPUT_CASE_END, ASM_OUTPUT_ALIGNED_LOCAL): Output
+ tabs before SET_ASM_OP.
+
+ * Makefile.in (dwarfout.o): Dependency on defaults.h added.
+
+ * sparcv4.h: Include real.h.
+ (SET_ASM_OP): Undef it.
+
+ * svr4.h (IDENT_ASM_OP): Added generic svr4 definition.
+ (ASM_FILE_END, ASM_OUTPUT_IDENT): Use IDENT_ASM_OP.
+ (ALIGN_ASM_OP): Added generic svr4 definition.
+ (ASM_OUTPUT_CASE_LABEL): Added generic svr4 definition.
+
+ * i860.c (strict_single_insn_op_p, relop): Deleted.
+ * i860.h (ASM_OUTPUT_CASE_LABEL): Fixed definition to use
+ ASM_OUTPUT_ALIGN and ASM_OUTPUT_INTERNAL_LABEL.
+ * i860b.h, i860v3.h (TARGET_VERSION): Definitions added.
+ * i860v3.h (CPP_PREDEFINES): Predefine __svr3__ rather than SVR3.
+
+ * c-decl.c (named_labels): Change linkage to static.
+
+ * assert.h (__eprintf): Declare 3rd arg as unsigned.
+
+ * cccp.c (do_include): Don't do fprintf's if inhibit_warnings.
+ Renamed system_header_p to angle_brackets. Use is_system_include.
+ (is_system_include): New function.
+ (redundant_include_p) : Renamed from lookup_include.
+
+ * c-common.c (type_for_size): If no ANSI type matches, check for
+ matches with built-in mode-releated types.
+ (type_for_mode): Likewise.
+ * c-decl.c: Added declarations for mode-related internal type nodes.
+ (init_decl_processing): Initialize the new type nodes.
+ * c-tree.h: Added declarations for mode-related internal type nodes.
+ intQI_type_node, etc.
+
+ * c-lex.c (yylex): For integers, rename shorts to parts.
+ Let the number of them be variable. Simplify overflow testing.
+ Don't use long long types unless ll was specified.
+ Don't warn twice.
+
+Thu Jul 2 20:30:20 1992 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * gstdarg.h: #ifdef _STDARG_H, not __STDARG_H.
+
+Thu Jul 2 18:18:07 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * global.c: Renamed from global-alloc.c.
+
+Thu Jul 2 15:36:25 1992 Torbjorn Granlund (tege@wombat.gnu.ai.mit.edu)
+
+ * pa.c (zdepi_operand): New function.
+ (emit_move_sequence): Use it.
+ * pa.md: New pattern to recognize cases where zdepi can be used to
+ load immediate constant.
+ (insv): Allow obvious immediate values.
+ (insv + 1): New recognizer for non-obvious immediate values.
+
+Thu Jul 2 15:13:15 1992 Michael Meissner (meissner@osf.org)
+
+ * halfpic.c (half_pic_encode): Consider variables which are 'common'
+ variables to need pic fixup. Move the debug code, so that it prints
+ for all calls, and calls debug_tree also.
+ (half_pic_address): When doing eliminate_constant_term on a CONST,
+ do a XEXP (addr, 0) to get to the real address.
+
+ * decrose.h (CPP_SPEC, CC1_SPEC): If neither -fbuiltin nor
+ -fno-builtin are passed, pass -fno-builtin, and renable the string
+ and memory builtins via macros. This is to support compiling the
+ OSF/1 kernel which has a prototyped exit function which takes three
+ arguments. With no -pic switches, default to using shared libs.
+
+ * i386rose.h (CPP_SPEC, CC1_SPEC): If neither -fbuiltin nor
+ -fno-builtin are passed, pass -fno-builtin, and renable the string
+ and memory builtins via macros. This is to support compiling the
+ OSF/1 kernel which has a prototyped exit function which takes three
+ arguments. Turn off pic support until the 386 backend supports it.
+
+ * x-i386rose (SHLIB): Use -pic-none instead of -L${BUILD}/usr/ccs/lib.
+
+ * x-decrose (SHLIB): Use -pic-none instead of -L${BUILD}/usr/ccs/lib.
+
+ * mips.md (movsi): Rewrite handling of half-pic code so that load
+ address of symbol + value is handled.
+ (branch_zero): Don't allow branch comparing constant to 0.
+
+Thu Jul 2 06:26:38 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.md (blockage insn): Renamed from profiler.
+ (epilogue insn): Don't provide this if a return insn will suffice.
+ (m88k_end_epilogue): If the last insn isn't a barrier, print a return.
+ * m88k.c (null_prologue): Renamed from null_epilogue.
+
+ * m88k.c (condition_value): New function.
+ * m88k.md (compare word insns): New insns and define_split
+ patterns to take advantage of recent fold_truthop change.
+
+ * m88k.h (ADDITIONAL_REGISTER_NAMES): Represent the condition code
+ register as (reg:CC 0). Give it the names "cc" and "psr".
+ * m88k.md (superoptimizer sequences): New define_split patterns.
+ (add/sub with carry): New insns.
+ (add/sub DImode, ffssi2): Clobber the condition code register.
+
+Wed Jul 1 13:37:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstddef.h Don't define macros associated with size_t unless we
+ actually want to declare size_t. Likewise for ptrdiff_t and wchar_t.
+
+ * Makefile.in (install-common): Depend on xgcc, g++, c++, EXTRA_PARTS.
+ Don't delete specs from libsubdir unless it exists in build dir.
+
+ * va-pa.h: Renamed from va-hp800.h.
+ * gstdarg.h, gvarargs.h: Use new name.
+
+ * news3.h, news3gas.h: New files.
+ * configure (m68k-sony-newsos3*): New alternative.
+
+ * romp.h (SIZE_TYPE): Defined.
+
+ * configure: Support --exec-prefix. Simplify handling
+ detached arguments of options.
+
+ * isc.h, and other related files:
+ waiting for entries from karl@cs.umb.edu.
+
+Wed Jul 1 12:04:53 1992 Ron Guilmette (rfg at ncd.com)
+
+ * c-decl.c (grokdeclarator): Don't mark file-scope register variables
+ as TREE_PUBLIC.
+
+Wed Jul 1 12:04:53 1992 Karl Berry (karl@cs.umb.edu)
+
+ * i386iscgas.h (SIZE_TYPE, PTRDIFF_TYPE): Define these, since we
+ need to override GCC's defaults.
+
+ * configure (i386-*-isc): Use different files if we have gas.
+ * t-i386iscgas, i386iscgas.h, isc.h: New files
+ * i386isc.h: Include isc.h. Most of contents moved to isc.h.
+ * bsd386.h (ASM_OUTPUT_LABELREF) [NO_UNDERSCORES]: do not prepend an
+ underscore in this case.
+ * i386gas.h (CPP_SPEC): if -posix, do -D_POSIX_SOURCE.
+
+Wed Jul 1 09:13:44 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * fold-const.c (fold_truthop): Renamed from merge_component_references.
+ (simple_operand_p): New function.
+ (range_test): Change JCODE parameter to the unconditional operation.
+ (fold_truthop): When branches are expensive, try to evaluate the
+ RHS unconditionally. Compute local variables as late as possible.
+
+ * m88k.h (HANDLE_SYSV_PRAGMA): Replaces HANDLE_PRAGMA.
+ * m88k.c (m88k_handle_pragma_token): Deleted.
+
+Tue Jun 30 15:32:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (duplicate_decls): If newdecl for builtin function
+ has same return mode as the builtin, keep the builtin
+ but use newdecl's return type.
+
+ * i386.md (lshrdi3_const_int): Fix typo in shr insn.
+
+ * Makefile.in (GCC_CFLAGS): Add `-B$(tooldir)/'.
+
+ * i386sun.h, rs6000-mach.h, sparc.h, sun2o4.h, sun3.h (LINK_SPEC):
+ Inhibit the default -e if -r or -nostdlib.
+
+ * c-decl.c (lookup_label): Call label_rtx.
+
+ * c-parse.y (primary): Rearrange and clean up. In C_DECL_ANTICIPATED
+ case, always call assemble_external and set TREE_USED.
+
+Mon Jun 29 22:27:49 1992 Mike Stump (mrs@wombat.gnu.ai.mit.edu)
+
+ * cccp.c, cp-dem.c, dbxout.c, cp-lex.c, cp-xref.c, cp-method.c,
+ dwarfout.c, c-typeck.c, mips-tfile.c, protoize.c, collect2.c: Make
+ the compiler more consistent by using index and rindex everywhere
+ instead of sometimes using strchr and strrchr.
+
+Mon Jun 29 22:20:13 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * regclass.c (regclass): Restore some accidentally-deleted code.
+
+Mon Jun 29 12:48:05 1992 Nobuyuki Hikichi (hikichi@sra.co.jp)
+
+ * collect2.c (MY_ISCOFF): New macro.
+ (scan_prog_file): Use that instead of ISCOFF.
+
+ * mips.c (override_options) [MIPS_NEWS]: Call setlinebuf.
+
+Mon Jun 29 12:48:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): For %I, pass -iprefix, not -imacros.
+
+ * c-common.c (decl_attributes): For `packed' on VAR_DECL,
+ set DECL_PACKED and DECL_ALIGN.
+
+ * configure: Update usage message.
+ (m68k-sony-newsos*, mips-sony-newsos*): New synonyms.
+
+ * fold-const.c (merge_component_references):
+ Make sure the four fields correspond in the proper order.
+
+ * c-lex.c (check_newline): Support HANDLE_SYSV_PRAGMA.
+ (handle_sysv_pragma): New function.
+ * c-pragma.c: New file.
+ * stor-layout.c (maximum_field_alignment): New variable.
+ (layout_decl): Use it.
+ * Makefile.in (C_OBJS, OBJC_OBJS): Add c-pragma.o
+ (c-pragma.o): New rule.
+
+ * i386.c (handle_pragma_token): Function deleted.
+ * i386v4.h (HANDLE_PRAGMA): Deleted.
+
+ * g++: Reestablish symlink to c++.
+ Delete the testing of $TRACE--this could confuse people.
+ Delete spurious assignment of $version.
+
+ * tree.h (DECL_PACKED): Store this in regdecl_flag.
+
+ * Makefile.in (LIB2FUNCS): Change _builtin_New to _caps_New.
+ * libgcc2.c: Change L_builtin_New to L_caps_New.
+
+ * dbxout.c (dbxout_symbol): Pass 3 args to eliminate_regs.
+ Call alter_subreg for subregs. Delete subreg case later on.
+ Don't bother with reg_renumber--any pseudo reg is clearly
+ a variable that was not allocated.
+ * sdbout.c (sdbout_symbol): Call alter_subreg for subregs.
+ Don't bother with reg_renumber--any pseudo reg is clearly
+ a variable that was not allocated.
+
+ * sequent.h (SIZE_TYPE): Defined.
+ (LINK_LIBGCC_SPECIAL): Fix typo.
+
+Mon Jun 29 12:04:57 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * toplev.c (rest_of_compilation): Thread the prologue and epilogue
+ code immediately after reloading is done.
+ * sched.c (schedule_insns): Reposition the prologue and epilogue
+ notes as needed.
+ * reorg.c (dbr_schedule): Ditto.
+ * rtl.h (NOTE_INSN_PROLOGUE_END, NOTE_INSN_EPILOGE_BEGIN): New notes.
+ * rtl.c (note_insn_name): Record them.
+ * function.c (record_insns, contains, thead_prologue_and_epilogue_insns,
+ reposition_prologue_and_epilogue_notes): New functions.
+ * final.c: Include insn-flags.h.
+ (profile_after_prologue): New function.
+ (final_start_function): Use profile_after_prologue here when we
+ don't HAVE_prologue.
+ (final_scan_insn): Use profile_after_prologue when we scan
+ NOTE_INSN_PROLOGUE_END. (This happens when we do HAVE_prologue.)
+ Perform machine specific actions when the prologue-end and
+ epilogue-begin notes are scanned.
+ (final_scan_insn, BARRIER): Align only when something follows.
+ * Makefile.in (final.o): Depends on insn-flags.h.
+
+ * m88k.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE): Define.
+ (DELAY_SLOTS_FOR_EPILOGUE, ELIGIBLE_FOR_EPILOGUE_DELAY): Delete.
+ * m88k.md (prologue, epilogue, profiler, locate1, locate2): New
+ patterns for representing prologues and epilogues.
+ * m88k.c (delay_slots_for_epilogue, eligible_for_epilogue_delay,
+ ok_for_epilogue_p): Delete epilogue delay slot functions.
+ (m88k_begin_prologue m88k_end_prologue m88k_expand_prologue): New
+ functions replacing m88k_output_prologue.
+ (m88k_begin_epilogue m88k_end_epilogue m88k_expand_epilogue): Ditto.
+ (preserve_registers): Delete epilogue delay slot mechanism and
+ change to output insns.
+ (emit_add, emit_ldst): New functions.
+
+Sun Jun 28 23:06:04 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * Makefile.in (bootstrap, bootstrap2, bootstrap3): In each
+ passage of CC, use xgcc, not gcc.
+ * dostage2, dostage3: Likewise.
+
+Sun Jun 28 09:48:18 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (duplicate_decls): If have char *foo () and
+ void *foo (...), make just a pedwarn. Add locals oldtype, newtype.
+ * c-typeck.c (self_promoting_args_p): No longer static.
+
+ * flow.c (regno_uninitialized): Return 0 for global reg var.
+
+ * c-typeck.c (initializer_constant_valid_p):
+ Allow CONVERT_EXPR if its operand is allowable.
+ (build_c_cast): For cast to union, make a CONSTRUCTOR.
+
+ * sparc.c (SPARC_STACK_ALIGN): Add default definition.
+
+ * c++: Use `set "$@"' to modify arguments.
+ Use a case to decide how to set $gcc.
+ $quote is now empty for false and the option name for true.
+ Error at end if $quote is nonempty.
+ $speclang is now the -x option itself.
+ Move the -v case above the -* case.
+
+ * limitx.h: Add #ifndef.
+ * limity.h: New file.
+ * Makefile.in (install-limits-h): Append limity.h to the end.
+
+ * c-typeck.c (digest_init): Don't push spellings here (for union case).
+ (process_init_constructor): Fix errors for field not found.
+ (build_c_cast): Fold casts to union type.
+
+ * xm-vms.h (XREF_FILE_NAME): Fix typo.
+
+ * i386sun.h (SIZE_TYPE): Defined.
+
+ * Makefile.in (alloca.o): Delete the rm command.
+ Use -Demacs explicitly in compilation command.
+ (ALLOCA_FLAGS, ALLOCA_FINISH): Empty by default.
+ * x-pa-hpux, x-rs6000, x-rs6k-mach, x-dpx2200, x-dpx2300:
+ (ALLOCA_FLAGS, ALLOCA_FINISH): Deleted.
+ * x-dpx2200, x-dpx2300 (AS): Deleted.
+
+ * configure: Set broken_install for V.4.
+ (i386-*-aix, ns32k-*-genix, i386-*-isc, i386-*-sco):
+ (i386-*-sco3.2v4, m88k-dg-dgux): Set broken_install.
+ (m88k-*-sysv): Don't use x-m88kv3.
+ * x-m88kv3: File deleted.
+ * x-aix386, x-dpx2200, x-dpx2300, x-genix, x-i386isc, x-i386sco:
+ * x-i386v, x-i386v4, x-i860v3, x-i860v4, x-m88kdgux, x-m88kdolph:
+ * x-m88kv4, x-ncr3000, x-sparcv4, x-xenix (INSTALL): Deleted.
+
+Sun Jun 28 08:44:32 1992 Michael Meissner (meissner@osf.org)
+
+ * regclass.c (record_address_regs): Make the function static to
+ agree with the forward declaration.
+
+ * mips.h (LINK_LIBGCC_SPECIAL): Define.
+
+Sun Jun 28 06:14:56 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (direct_load, direct_store): New variables.
+ (init_expr_once): New function.
+ (convert_move, convert_to_mode): Don't let gen_lowpart make a MEM in
+ a mode that can't be directly copied to or from memory.
+ (store_field): Don't directly store into memory in a mode that
+ can't be used in a single insn.
+ (expand_expr, case COMPONENT_REF): Likewise, for load.
+ * toplev.c (compile_file): Call init_expr_once.
+
+ * cse.c (fold_rtx, case SUBREG): If we can find nested SUBREGs
+ with an inner register in the mode we want, get rid of all the
+ SUBREGs provided they are all within a word.
+
+ * cp-call.c, cp-class.c, cp-decl.c, cp-edsel.c, cp-lex.c: Don't
+ declare xmalloc and free here.
+ * cp-methods.c, cp-pt.c, cp-search.c, flow.c, integrate.c: Likewise.
+ * loop.c, opjc-actions.c, reload1.c, reorg.c, rtl.c: Likewise.
+ * stmt.c, tree.c, varasm.c: Likewise.
+ * toplev.c (xmalloc, xrealloc): Declare return types correctly.
+ * rtl.h, tree.h: Declare xmalloc and free here.
+
+ * expmed.c (emit_store_flag): Keep the last target around if we
+ should preserve subexpressions.
+
+Sat Jun 27 07:11:28 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): See if we have a CONST_INT that is already in
+ a register in a wider mode.
+
+ * regclass.c: Major rework of regclass pass to do a better job of
+ setting up register preferences and replace the "preferred or
+ nothing" method with a class that should be used if the preferred
+ class cannot be allocated.
+ (MEMORY_MOVE_COST): Default value is 4, not 2.
+ (move_cost, may_move_cost): New arrays.
+ (init_reg_sets): Initialize them.
+ (struct costs): Replaces struct savings.
+ (costs): Replaces savings.
+ (op_costs): New array.
+ (altclass): Replaces preferred_or_nothing.
+ (reg_alternate_class): New function; replaced reg_preferred_or_nothing.
+ (regclass): Major rework. Use new recording methods; make two
+ passes if -fexpensive-optimizations; and refine REGNO_POINTER_FLAG
+ and loop_depth setting.
+ (record_reg_class): New function; replaces reg_class_record.
+ (copy_cost): New function.
+ (record_address_regs): Major changes. New parameters and simplified
+ and more efficient algorithm for chosing base vs. index regs.
+ * rtl.h (reg_alternate_class): Declare it.
+ * Makefile.in (regclass.o): Now includes reload.h and real.h.
+ * flow.c (dump_flow_info): Call reg_alternate_class instead of
+ reg_preferred_or_nothing.
+ * reload.c (find_reloads): Likewise.
+ (n_occurrences): No longer static.
+ * local-alloc.c: Use register alternate class instead of
+ preferred_or_nothing uniformly; change qty_preferred_or_nothing
+ to qty_alternate_class.
+ * global-alloc.c (global_alloc, retry_global_alloc): Call
+ reg_alternate_class instead of reg_preferred_or_nothing.
+ (find_reg): Change ALL_REGS_P argument to ALT_REGS_P.
+ Use alternate register class instead of ALL_REGS if can't allocate
+ in preferred class.
+
+ * cccp.c (install): Accept separate arguments for integer and
+ pointer hash values; don't assume the sizes are the same.
+ All callers changed.
+
+ * rtl.c (copy_rtx, copy_most_rtx): Add new case for 'u'.
+
+ * tree.c (make_node): Clear all of common area, in particular, flags.
+
+ * c-tree.h, cp-tree.h: Add declaration of truthvalue_conversion.
+
+Sat Jun 27 06:21:18 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.md (type attributes): Delete unused mbit and mfp types.
+ (ffsi2 insn): Define.
+ (negdf2 and absdf2 insns): Improve.
+
+ * fold-const.c (range_test): Fix the misordered test. Fail if VAR
+ isn't an integer.
+
+Sat Jun 27 00:54:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (link_command_spec): No %D if LINK_LIBGCC_SPECIAL.
+ * sequent.h (LINK_LIBGCC_SPECIAL): Defined.
+
+ * vax.h (PRINT_OPERAND): For SFmode, use 0f, not 0d or 0g.
+
+ * ns32k.h (NS32K_DISPLACEMENT_P): Correct the range limits.
+ * ns32k.c (print_operand_address): REG_OK_FOR_INDEX_P wants an rtx.
+
+Fri Jun 26 08:55:03 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * fold-const.c (range_test): New function.
+ (merge_component_references): Look for range tests as well.
+
+ * va-m88k.h: Same changes as other va-*.h files below. Make this
+ work when <stdio.h> and others are included on DG/UX.
+
+Fri Jun 26 08:17:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (safe_from_p): Handle 0 in TREE_VALUE of a TREE_LIST.
+ (store_constructor: Ignore empty links in element chain.
+
+Fri Jun 26 07:06:19 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-convert.c (convert_to_integer): Don't add a NOP_EXPR in cases
+ where we can simply change the type of the entire tree.
+
+ * cse.c (find_best_addr): Look for equivalents of a REG that is
+ the first operand of an address that is a binary operator whose
+ second operand is a CONST_INT.
+
+ * stmt.c (expand_end_bindings): Don't save argument pointer if it
+ will be eliminated in favor of the frame pointer.
+
+ * combine.c (try_combine): When using define_split to split an
+ insn, first try to put the pseudo-register into the mode of
+ the destination since it is the most likely to be the correct mode.
+
+ * combine.c (make_compound_operation): Treat PLUS and MINUS
+ the same when passing down the code to the next level; for
+ consistency, an ASHIFT inside either gets turned into a MULT.
+
+ * fold-const.c (optimize_bit_field_compare): Delete dead
+ assignment which can sometimes reference an undefined variable.
+
+ * genoutput.c (gen_split): Initialize n_alternatives.
+
+ * romp.md (movdf): Fix typo in operand_subword call in define_split.
+
+Fri Jun 26 04:38:37 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Make stdarg mechanism work with libc.
+ * va-hp800.h, va-i860.h, va-i960.h, va-mips.h, va-pyr.h, va-sparc.h):
+ Don't define or declare va_list; declare __gnuc_va_list.
+ But only declare it once.
+ Define other things only if _STDARG_H or _VARARGS_H.
+ Declare va_end as well as defining it.
+ * gstdarg.h: Likewise.
+ If __need___va_list was defined, then undef it
+ and don't define _STDARG_H.
+ For all machines, declare va_list from __gnuc_va_list
+ but only if _STDARG_H is defined.
+
+ * gvarargs.h: Test _ANSI_H_, not _ANSI_H.
+
+Thu Jun 25 23:24:02 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * ns32k.c (print_operand):
+ Change NO_IMMEDIATE_PREFIX_IF_SYMBOLIC conditional to #ifdef.
+
+ * genoutput.c (gen_split): Set d->n_alternatives.
+
+ * Makefile.in (test-protoize-simple): Expect just 400 lines.
+ (install-common-headers): When comparing srcdir with ., use pwd.
+
+Tue Jun 16 22:11:12 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * Makefile.in (enquire.o): Don't delete/copy enquire.c, just use
+ the copy in the source directory.
+
+Tue Jun 25 23:52:27 1992 Howard Chu (hyc@hanauma.jpl.nasa.gov)
+
+ * libgcc2.c (__builtin_saveregs): Use SVR4 code on Alliant FX2800,
+ but with BSD function-naming convention.
+
+ * va-i860.h: Use SVR4 definitions of __va_saved_regs and va_list
+ on Alliant FX2800.
+
+ * fx2800.h (I860_REG_PREFIX, ASM_COMMENT_START): Deleted.
+ (DBX_NO_EXTRA_TAGS, BSS_ASM_OP): Deleted.
+ (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Deleted.
+ (ASM_FILE_START): Just call output_file_directive.
+
+Thu Jun 25 06:49:15 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (process_init_constructor): Strip NON_LVALUE_EXPR
+ from specified array index.
+
+ * configure (i386-*-bsd*, i386-*-mach*): Don't set tmake_file.
+ They used to use t-libc-ok.
+
+ * input.h (struct file_stack): Revert prev. change.
+
+Thu Jun 25 06:33:52 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * stmt.c (expand_end_case): Add CASE_VALUES_THRESHOLD.
+ * m88k.h (CASE_VALUES_THRESHOLD): Define.
+
+Thu Jun 25 06:13:39 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * explow.c (plus_constant, case PLUS): Remove obsolete code;
+ use recursive call in case remaining operand is one we handle.
+
+Wed Jun 24 19:15:14 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst, case PLUS): If adding two things with no bits
+ in common, convert to IOR.
+
+ * expr.c (do_jump, case BIT_AND_EXPR, COMPONENT_REF): Don't narrow
+ comparison unless byte accesses are not slow and we have a
+ comparison in the new mode.
+
+Wed Jun 24 14:29:09 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.y (primary): If built-in decl has not had
+ an official declaration, print warning.
+ * c-decl.c (builtin_function): Set C_DECL_ANTICIPATED for
+ user-visible names.
+ * c-tree.h (C_DECL_ANTICIPATED): New macro.
+
+ * fixincludes: Make some symlinks in the `multimedia' subdir.
+
+ * i386.c: Change #error to just error.
+
+ * protoize.c: Normalize error message syntax.
+ (process_aux_info_file): Don't delete .X file if it existed before.
+ (explicity compare modtime with .c file.
+
+Wed Jun 24 14:10:35 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (sparc_frw_compute_frame_size): New function, for flat
+ register window model support.
+ (sparc_frw_save_restore): Likewise.
+ (sparc_frw_output_function_prologue): Likewise.
+ (sparc_frw_output_function_epilogue): Likewise.
+ (sparc_frw_epilogue_delay_slots): Likewise.
+ (sparc_frw_eligible_for_epilogue_delay): Likewise.
+
+Tue Jun 23 22:36:12 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (rescan): Recognize # only when reading directly from a file.
+
+ * input.h (struct file_stack): Add member `fd'.
+
+ * regclass.c (regno_first_uid, regno_last_uid): Make elements ints.
+ (reg_scan): Allocate and clear them as ints.
+ * regs.h: Fix the declarations.
+
+ * Create driver executable with name xgcc; rename to gcc in installing.
+ (xgcc): Target renamed.
+ (GCC_FOR_TARGET, GCC_PASSES, start.encap, specs, gcc-cross):
+ (install-common, install-collect2): Rename in deps, commands or value.
+ (install-collect2): Always get driver from xgcc whether cross or not.
+
+Tue Jun 23 00:00:35 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * toplev.c (strip_off_ending): Also strip off .C and .cxx.
+
+Tue Jun 23 18:58:43 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * genrecog.c (add_to_sequence): Don't ignore mode of first operand
+ of a MATCH_OPERAND or MATCH_DUP_OP rtl.
+ * sparc.md (scc): Use noov_compare_op instead of normal_compare_op.
+
+ * function.c (expand_function_start): When not optimizing, don't
+ put static chain pointer in a pseudo register.
+
+ * sparc.c (print_operand): For '*', only annul branch if
+ optimizing, to avoid dbx bug. Add '(' to handle unoptimized case.
+ * sparc.h (PRINT_OPERAND_PUNCT_VALID_P): Add '('.
+ * sparc.md (jump): Add '%(' to pattern.
+
+ * c-decl.c (store_parm_decls): Change type of void parameter to
+ error_mark_node.
+
+ * configure (m68k-*-sysv4*): Use xm-m68kv.h not xm-m68kv4.h.
+
+ * configure: Add -prefix option.
+
+ * vax.c (split_quadword_operands): Declare paramater n.
+
+ * i960.h (WORD_SWITCH_TAKES_ARG): Add -aux-info.
+
+ * xcoffout.c (xcoffout_declare_function): Cast alloca result to char *.
+
+ * c-convert.c (convert_to_integer): Don't pass truncation past
+ shift that is larger than the size being truncated to.
+
+Tue Jun 23 06:15:47 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * optabs.c (expand_binop, expand_unop): Try widening before trying
+ to make a library call.
+
+ * stmt.c (expand_return): Add missing emit_queue call in tail
+ recursion case.
+
+ * cse.c (simplify_unary_operation): Add SIGN_EXTEND and
+ ZERO_EXTEND to the operations we handle for wide results.
+
+ * expr.c (emit_block_move): Convert size operand to mode that will
+ be passed to emit_library_call.
+
+Tue Jun 23 00:41:03 1992 Paul Eggert (eggert@shadow)
+
+ * objc-parse.y (stmt): Fix mispelling for "label" in message.
+
+ * cccp.c: (deps_file, pipe_closed): Deleted.
+ (main): Do not open deps_file until needed.
+ Check error status of dep_stream and stdout more carefully.
+
+Tue Jun 23 00:21:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (protoize.1, unprotoize.1): Rules deleted.
+ (install-man, proto, realclean): Don't operate on them.
+ * proto-man: File deleted.
+
+ * protoize.c (main): Support -v as alias for -V.
+
+Mon Jun 22 21:50:01 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (compare, compare3): Discard error output from second
+ tail. If it fails, don't compare that file.
+
+ * Makefile.in (stamp-proto): Move the touch command last.
+
+ * cccp.c (finclude): Use xmalloc, not alloca, for file contents.
+
+ * stmt.c (check_for_full_enumeration_handling): For a case range,
+ consider all values in the range as handled. Also, check both ends
+ for being in the enumeration.
+
+ * ns32k.h (NS32K_DISPLACEMENT_P): Wide displacement range applies to
+ all models.
+
+Mon Jun 22 20:29:47 1992 Ron Guilmette (rfg at ncd.com)
+
+ * expr.h (*_libfunc): Added missing extern declarations of libfuncs
+ to handle operations on/for TFmode and XFmode operands.
+ * expr.c (convert_move): Added missing code to handle moves (with
+ conversion) from/to TFmode and XFmode operands.
+ * optabs.c (*_libfuncs): Added missing definitions of libfuncs
+ to handle operations on/for TFmode and XFmode operands.
+ (emit_float_lib_cmp): Added missing code to handle XFmode and TFmode
+ comparisons.
+ (init_fixtab): Added missing code to handle fixing (and trunc'ing)
+ of XFmode and TFmode operands to various sizes of ints.
+ (init_floattab): Likewise, but for "float" operations from ints to
+ either XFmode or TFmode.
+ (expand_float): Likewise.
+ (expand_fix): Likewise.
+ (init_libfuncs, init_integral_libfuncs, init_floating_libfuncs): New
+ functions added to initialize whole hunks of various optabs with
+ appropriate `libfunc' field values.
+ (init_optabs): Use `init_integral_libfuncs' or `init_floating_libfuncs'
+ wherever a group of consecutive optab entries need to all have their
+ `libfunc' fields initialized.
+ (init_optabs): added missing code to handle all operations on/of
+ XFmode and TFmode operands.
+
+Mon Jun 22 06:40:32 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (MEMORY_MOVE_COST): Increase to 6, from 4.
+ (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add new reg
+ classes SPEC_OR_GEN_REGS and NON_FLOAT_REGS.
+
+ * rs6000.h (EXTRA_CONSTRAINT): Don't use indirect_operand; instead
+ check explicitly.
+
+ * rs6000.md (divmod): Use "2" constraint instead of using "q"
+ twice.
+ (tablejump): Constraint of "r" should be "l".
+
+ * emit-rtl.c (init_emit): Show that all pointers into the frame are
+ pointer registers.
+
+Mon Jun 22 04:20:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * va-sparc.h (va_arg): Rename local identifiers to start with __.
+
+Sun Jun 21 14:51:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (real_value_truncate): New function.
+ All calls to REAL_VALUE_TRUNCATE changed to use this function.
+
+ * reload1.c (reload): Record which insn attains each maximum need.
+ If can't find a spill, call spill_failure and return 1.
+ (spill_failure): New subroutine.
+ * global-alloc.c (global_alloc): Return 1 if reload returned 1.
+ * toplev.c (rest_of_compilation): If they return nonzero, give up
+ compiling this function.
+
+ * c-decl.c (duplicate_decls): Never warn if redeclaring
+ a predeclared function. Use the new declaration's types
+ but keep any predeclared volatile flag.
+ If redeclaring builtin function, use new declaration's type.
+ If an old decl becomes volatile, fix the DECL_RTL.
+ * varasm.c (make_var_volatile): New function.
+
+ * configure (mips-sony-bsd): Use xm-mips.h.
+ * xm-mipsbsdn.h: File deleted.
+
+ * protoize.c (process_aux_info_file): Simplify logic for calling
+ gen_aux_info_file. Get rid of the label `retry'.
+
+ * m68ksgs.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP):
+ Override for sgs syntax.
+
+Sun Jun 21 14:06:41 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * va-sparc.h (va_arg): Use a character array of size TYPE for
+ `d' in the union, and return its dereference as TYPE.
+
+Sun Jun 21 14:04:36 1992 Wilson Tien (wtien at urbana.mcd.mot.com)
+
+ * m68k.c (print_operand_address) [MOTOROLA]: Use .w and .l, not :w, :l.
+
+Sat Jun 20 06:32:11 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * stor-layout.c (get_best_mode): If SLOW_BYTE_ACCESS is true, return
+ widest mode (but no wider than UNITS_PER_WORD) that meets all
+ the conditions.
+
+ * combine.c (make_extraction): Always ensure we have a SUBREG when
+ we make a STRICT_LOW_PART.
+
+ * varasm.c (const_hash, compare_constant_1, record_constant_1):
+ Handle case when TREE_VALUE of a constructor is zero.
+ (output_constant): Use CONSTRUCTOR_ELTS.
+
+ * cse.c (cse_insn): Memory is not invalidated by a constant
+ subroutine call.
+ (delete_dead_from_cse): Correctly check for being within a
+ libcall block.
+
+ * cse.c (canon_reg): Call validate_change with IN_GROUP equal to 1.
+ (cse_insn): Call apply_change_group after canon_reg.
+ When canonicalizing, call validate_change with IN_GROUP equal to
+ one and also call when canon_reg would.
+
+ * combine.c (subst, shift cases): Use force_to_mode in
+ SHIFT_COUNT_TRUNCATED case.
+
+ * rs6000.md: Add new pattern to split move of large constant.
+
+ * cse.c (delete_dead_from_cse): Really delete insn instead of
+ turning it into a NOTE.
+
+ * romp.md (shift patterns): Use QImode for count operand.
+
+Sat Jun 20 06:31:21 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * a29k.md (storehinhww): Use inhw not inbyte.
+
+Thu Jun 18 16:01:56 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * protoize.c (WIFEXITED, WEXITSTATUS): Delete unused macros.
+
+ * combine.c (subst): If comparison operator has floating-point
+ result, adjust the value returned by simplify_relational_operation
+ accordingly.
+ * integrate.c (subst_constants): Likewise.
+ * loop.c (get_condition): Likewise.
+ * cse.c (fold_rtx): Likewise.
+ When returning TRUE or FALSE, handle comparisons returning
+ floating-point.
+ (find_comparison_args): Handle comparisons returning FP values;
+ only look at STORE_FLAG_VALUE for comparisons returning integers.
+
+ * combine.c (try_combine, subst): Pass both comparison arguments
+ to SELECT_CC_MODE.
+ * i386.h, i960.h, i960.c, mips.h, pa.h, pa.c, rs6000.h:
+ Add second argument to SELECT_CC_MODE.
+ * sparc.h, sparc.c: Likewise.
+
+ * cse.c (insert_regs): Make a quantity for the register in a
+ SUBREG if it doesn't have one.
+ (fold_rtx, case SUBREG): Always try to find a constant equivalent
+ for a SUBREG; try for CONST_DOUBLE as well.
+ (cse_insn): Call insert_regs on DEST if it is a SUBREG.
+
+Thu Jun 18 15:01:29 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ * c++: Allow for better quoting and -v handling.
+
+Thu Jun 18 14:49:20 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ For RMS:
+ * varasm.c: Declare text_section and readonly_data_section.
+
+ * dpx2.h (CPP_SPEC): Define __HAVE_68881__ unless -msoft-float.
+ DPX/2 machines all have a 68882.
+
+ * x-i386sco (RCCFLAGS): Use -DNULL=0 to avoid suurious warnings
+ from rcc.
+
+ * seq386.h (SIZE_TYPE): The Sequent running Dynix uses int for size_t.
+
+Thu Jun 18 14:36:41 1992 Mike Stump (mrs@albert.gnu.ai.mit.edu)
+
+ Merge in Cygnus sources...
+
+ Fri Jun 5 15:00:55 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-typeck.c (build_c_cast): When casting, propagate const'ness
+ from cast type. When casting to a reference to T, really just
+ cast to T.
+
+ * cp-cvt.c (build_up_reference): Make a copy of a node before
+ changing it. Only propagate the const bit if we are not
+ subverting it.
+
+ Fri Jun 5 14:36:19 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-cvt.c (build_up_reference): When casting away const on
+ references, do not report an error.
+
+ Fri Jun 5 13:26:11 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-init.c (build_new): Handle new placement with arrays.
+
+ Thu Jun 4 08:26:44 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-search.c (compute_visibility): DERIVED_FROM_P had its
+ arguments reversed, switched them to be in the right order.
+ Fixes visibility on protected members.
+
+ Wed Jun 3 14:45:40 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (unary_expr): Make it illegal to use delete on
+ a pointer to a const object. With help from Brendan Kehoe.
+
+ Wed Jun 3 13:25:26 1992 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * cp-parse.y (template_instantiate_once): Set
+ CLASSTYPE_GOT_SEMICOLON to eliminate messages about missing
+ semicolons.
+
+ * cp-decl.c (start_function): Don't emit error message for missing
+ semicolon after class decl; that syntax (declaring both class and
+ function returning that type) should be legal. Do emit a warning if
+ it's not an anonymous name.
+
+ Mon Jun 1 18:08:09 1992 Mike Stump (mrs at cygnus.com)
+
+ Sat May 30 15:38:54 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * cp-decl.c (grokdeclarator): Don't allow main to be static.
+
+ Mon Jun 1 17:52:24 1992 Mike Stump (mrs at cygnus.com)
+
+ Sat May 30 15:38:54 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * cp-decl.c (poplevel): Use DECL_INITIAL to detect undef label
+ instead of DECL_SOURCE_LINE.
+
+ Mon Jun 1 17:22:54 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (unary_expr): Don't allow old placement syntax(with {})
+ nor dynamic with new (with ()) new placement syntax. Completes May 27
+ fix.
+
+ Mon Jun 1 13:57:28 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-type2.c (digest_init): Trailing '\0' is never ignored in
+ initializations using strings in ANSI draft C++ unlike ANSI C.
+
+ Mon Jun 1 07:18:13 1992 Michael Tiemann (tiemann at rtl.cygnus.com)
+
+ * cp-decl.c (pushdecl): Re-fix May 12 change regarding DECL_CONTEXT.
+ * cp-call.c (build_method_call): Go back to using DECL_CONTEXT
+ instead of DECL_CLASS_CONTEXT. DECL_CONTEXT says when a function
+ was first declared virtual in a class, which is needed information
+ in case the virtual function comes from a virtual baseclass (because
+ the derived class won't have a vtable entry for that function (if it
+ has a vtable at all!)).
+
+ Wed May 27 17:05:50 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (unary_expr): Handle new placement syntax, desupport
+ the old placement syntax with a pedwarn.
+
+ Tue May 26 17:30:28 1992 Mike Stump (mrs at cygnus.com)
+
+ Thu May 21 17:13:38 1992 Michael Tiemann (tiemann at cygnus.com)
+
+ * cp-decl.c (grok_enum_decls): Allow reference to nested enums from
+ other classes for NICHL.
+
+ Tue May 26 15:31:30 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-*.[chy]: Always include "assert.h" and not <assert.h> to
+ be consistent.
+
+ Tue May 26 10:07:02 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (return_init): Fix simple typo that caused '='
+ initialized named return values to fail.
+
+ Mon May 25 11:42:18 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (component_decl): Handle anonymous unions as before,
+ except check to make sure it is really an anonymous union.
+
+ Sat May 23 23:37:38 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-tree.c (layout_basetypes): Don't core dump on erroneous input.
+
+ Sat May 23 22:04:31 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-typeck.c (c_expand_start_case): build_type_conversion can
+ return a NULL_TREE, so don't try and find a code or type of it.
+
+ Wed May 20 09:09:08 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-call.c (build_method_call): Use DECL_CLASS_CONTEXT, not
+ DECL_CONTEXT to find the class in which FUNCTION was declared (for
+ non-virtual calls).
+
+ Tue May 19 02:08:39 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (component_decl): Remove some bogus code that
+ prevents empty nested union definitions from compiling.
+
+ Tue May 19 01:08:23 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-decl.c (grokfndecl): Propagate volatile from type of
+ function out to the decl for the function.
+
+ Mon May 18 17:19:39 1992 Mike Stump (mrs at rtl.cygnus.com)
+
+ * cp-search.c (get_binfo): Since unions cannot participate in
+ inheritance relationships, return 0 instead of aborting.
+
+ Fri May 15 13:37:40 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-parse.y (template_type_name): Handle
+ template<class T> class task { friend task<T>* preempt(task<T>*); };
+ syntax.
+
+ * cp-pt.c (lookup_template_class): Ditto.
+
+ Thu May 14 22:54:17 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-tree.c (layout_basetypes): Don't warn about non-virtual
+ destructors unless the user asks with -Wall.
+
+ Thu May 14 22:38:54 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-type2.c (build_functional_cast): exp may be an error_mark_node,
+ don't crash when it is.
+
+ Thu May 14 18:56:26 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-decl.c (hack_incomplete_structures): Test for underflow
+ before decreamenting n_incomplete in current_binding_level, since
+ it is unsigned.
+
+ Tue May 12 15:52:49 1992 Mike Stump (mrs at cygnus.com)
+
+ Mon May 11 14:10:50 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-decl.c (poplevel): Reconciled with recent changes made to the
+ `poplevel' routine in c-decl.c. The changes here cause LABEL_DECL
+ nodes to be attached (as the BLOCK_VARS chain) to the BLOCK node
+ which represent the outermost scope of the function.
+
+ Mon May 11 12:35:44 1992 Ron Guilmette (rfg at ncd.com)
+
+ * cp-class.c (finish_struct): Check DECL_CONTEXT to see if it is
+ any sort of a type (e.g. struct *or* union) rather than just
+ checking it to see if it's a RECORD_TYPE.
+ * cp-decl.c (pushdecl): Set DECL_CONTEXT of pushed ..._DECL node,
+ just as is done in c-decl.c.
+ (pushdecl): Delete useless variable `cntxt'.
+ (finish_decl): Set TREE_USED rather than DECL_FROM_INLINE in order
+ to prevent "unused" warnings.
+ (finish_function): Check DECL_CONTEXT to see if it is a type.
+ (finish_function): Fixed indentation problem.
+ * cp-gc.c (build_m_desc): Check DECL_CONTEXT to see if it is a type.
+ * cp-init.c (build_virtual_init): Fix indentation.
+ * cp-lex.c (store_pending_inline): Check DECL_CONTEXT to see if it
+ is a type.
+ * cp-pt.c (tsubst, do_pending_expansions): Check DECL_CONTEXT to see
+ if it is a type.
+ * cp-typeck.c (mark_addressable): Check DECL_CONTEXT to see if it is
+ any sort of a type (e.g. struct *or* union) rather than just
+ checking it to see if it's a RECORD_TYPE.
+
+ Tue May 12 08:52:06 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-typeck.c (build_component_ref): Call `break_out_cleanups'.
+ Also clean up indentiation.
+
+ Mon May 11 23:14:04 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-decl.c (pushtag): Handle structure tags in the same way as the
+ C front-end. This completes a change that rms put in on 3/12/92 and
+ I put in the Cygnus tree on 3/13/92 and Mark Eichin took back out on
+ 3/18/92.
+
+ Sun May 3 00:29:59 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-lex.c (copy_lang_decl, store_pending_inline): Cast
+ arguments to bcopy to be char *.
+
+ Fri May 1 12:22:31 1992 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-init.c (expand_aggr_init, expand_vec_init): When comparing
+ array types, use `comptypes' instead of ==, since two array types
+ may be structurally identical but not == if one was defaulted from
+ an initializer.
+
+ Wed Apr 29 01:25:25 1992 Mike Stump (mrs at cygnus.com)
+
+ * cp-init.c (do_friend): Check that PREVIOUS_DECL is non-NULL.
+
+Thu Jun 18 14:15:07 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (insv): Use `+' for operand 0 constraint.
+
+Thu Jun 18 13:39:22 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version # to 20.
+ (final_prescan_insn): Add declaration.
+ (FINAL_PRESCAN_INSN): Just call final_prescan_insn.
+ (CONST_OK_FOR_LETTER_P): Rewrite some tests, so that they will
+ work on host systems with 64 bit integers.
+
+ * mips.c (large_int): Rework, so that we don't get funny boundary
+ conditions on systems with 64 bit integers.
+ (mips_move_1word): Just use li to load constants that can be done
+ with lui, instead of issuing the lui, since the GAS bug that
+ generated two instructions has been fixed.
+ (final_prescan_insn): Move the checking for filling the delay
+ slots here from the FINAL_PRESCAN_INSN macro.
+
+ * mips.md (andsi3, iorsi3, xorsi3): Make the constraints match
+ the real machine (the predicate still is more general in order
+ to optimize bitfields at the expense of not CSE'ing large
+ constants used in logical ops, and making reload load it into
+ a scratch register). Don't use $1 as a temporary register any
+ more.
+
+ * varasm.c (decode_reg_name): If `memory' return -4.
+
+ * stmt.c (expand_asm_operands): If `memory' is used as a clobbered
+ register, emit a (clobber (const_int 0)) to force the compiler not
+ to cache memory values in registers across the assembly
+ instruction(s).
+
+ * mips-tfile.c (read_line): Semicolons within strings are not
+ counted as statement separators.
+
+ * collect2.c (scan_prog_file, OSF/rose case): Cast pointer arguments
+ to bcopy to generic * to avoid warnings.
+
+Thu Jun 18 12:04:53 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * c++: If given -v with no file args, don't pass the libraries to
+ gcc.
+
+Thu Jun 18 10:34:22 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * expr.c (expand_builtin, BUILT_IN_FSQRT): Emit queue of increment
+ instructions before starting a sequence that may get thrown away.
+
+See ChangeLog.5 for earlier changes.
diff --git a/gcc/ChangeLog.7 b/gcc/ChangeLog.7
new file mode 100644
index 00000000000..784fe4f1bd6
--- /dev/null
+++ b/gcc/ChangeLog.7
@@ -0,0 +1,10376 @@
+Sun Jun 20 13:37:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.4.5 released.
+
+ * c-common.c (decl_attributes): If first_arg_num is 0, no error for it.
+
+ * Makefile.in (extraclean): Delete *.gz, and other diff and tar files.
+
+Sun Jun 20 18:09:50 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): In last change, preserve the temp slot.
+
+Sat Jun 19 19:55:43 PDT 1993 Ron Guilmette (rfg@netcom.com)
+
+ * dwarfout.c (type_main_variant): New function.
+ Use it in place of TYPE_MAIN_VARIANT everywhere in dwarfout.c.
+
+ * c-decl.c (grokdeclarator): Avoid the use of macros for ..._TYPE
+ nodes in cases where a parameter's type is error_mark_node.
+
+Sat Jun 19 03:57:57 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.4.4 released.
+
+ * toplev.c (compile_file): For static decl never defined,
+ use just warning, not pedwarn.
+
+ * dbxout.c (dbxout_type): Reinstall #if 0 around code for
+ outputting structure types, that confused GDB.
+
+Fri Jun 18 20:06:35 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): adjust stack pointer by 4 prior
+ to calling C$MAIN_ARGS, otherwise POSIX edition of that routine dies.
+
+Fri Jun 18 14:21:14 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (clean): Delete objc-headers subdir.
+
+ * config/m68k/m68k.h (TARGET_SWITCHES): For -m68020, -m68000 and
+ -msoft-float, turn off 01400 bits.
+
+ * Makefile.in (gcc.xtar.gz): Renamed from gcc.tar.z.
+ (dist): Change the dependency.
+ (mostlyclean): Delete tmp-gcc.xtar.gz.
+
+ * c-iterate.c (save_exprs): New variable.
+ (collect_iterators): Don't process a SAVE_EXPR twice.
+ (iterator_expand): Clear save_exprs.
+
+ * Makefile.in (gcc.info, cpp.info): Actually cd to srcdir.
+
+ * configure (clipper-intergraph-clix*): Use install-headers-cpio.
+
+Fri Jun 18 13:37:16 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.c (output_block_move): Don't abort if one of the input
+ registers is allocated as a scratch register, just use fewer
+ scratch registers.
+
+Fri Jun 18 00:25:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/i386.c (call_insn_operand): Require constant address
+ be a general_operand.
+ (expander_call_insn_operand): New fn (what call_insn_operand was).
+ * config/i386/i386.md (call_pop, call, call_value_pop, call_value)
+ (untyped_call): Use expander_call_insn_operand.
+
+Thu Jun 17 17:58:11 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/pa/pa.md (decrement_and_branch_until_zero):
+ Pattern disabled.
+
+Thu Jun 17 13:34:20 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * unroll.c (calculate_giv_inc): Add new variables increment_total
+ and tries, and new label retry, to handle case where increment is
+ two add instructions.
+
+Thu Jun 17 12:13:53 1993 Minh Tran-Le (mtranle@paris)
+
+ * config/i386/aix386ng.h: Changes for non-GAS gcc.
+ (ASM_FILE_START_1): Always output .noopt because /bin/as is buggy.
+ Added #undef to {INIT,FINI,CTORS,DTORS}_SECTION_ASM_OP, ... when
+ not using GAS.
+ (CONST_SECTION_FUNCTION): Override svr3 default.
+ (EXTRA_SECTION_FUNCTIONS): Override svr3 default.
+ (OBJECT_FORMAT_COFF): Added define for collect2.
+ (MY_ISCOFF): For collect2 to handle aix and svr3 object file.
+
+ * config/i386/aix386.h (USE_GAS): New define.
+
+Thu Jun 17 00:26:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reg-stack.c (stack_result_p): New function.
+ (stack_reg_life_analysis): Use that.
+
+ * final.c (output_addr_const): Don't insert a leading space
+ in the CONST_DOUBLE_HIGH != 0 case.
+
+Thu Jun 17 00:09:19 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa.h (LEGITIMATE_CONSTANT_P): Reject function addresses for now.
+
+Wed Jun 16 20:14:10 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_unary_op): Make sure it's the global fn `main'
+ before complaining about taking the address of it.
+
+Wed Jun 16 16:24:31 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/xm-sysv4.h (SMALL_ARG_MAX): Defined.
+
+ * c-typeck.c (check_format): Don't crash if cur_type is an error_mark.
+ Handle identifier_node as the TYPE_NAME.
+
+Mon Jun 14 16:09:24 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): If PCC_STATIC_STRUCT_RETURN and TARGET
+ is zero, copy result from static location.
+
+ * cse.c (invalidate_skipped_set): Promote "nonscalar" to "all".
+
+Mon Jun 14 16:01:34 1993 Karl Berry (karl@cs.umb.edu)
+
+ * fixincludes (stdio.h math.h ctype.h sys/{limits.h,fcntl.h,dirent.h}):
+ Fix STDC/POSIX and other things for Interactive Unix 2.2 or later.
+
+Mon Jun 14 04:41:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (make_memloc): Don't reuse a memloc.
+
+Sun Jun 13 16:01:37 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa.md (iorsi3): Explicitly set length to 1.
+ (andsi3, lshrsi3, rotrsi3, rotlsi3): Likewise.
+ (ashift and ashiftrt by const_int_operand): Likewise.
+ ((and (ashift)) optimizer): Likewise.
+
+Sun Jun 13 20:23:04 1993 Stephen Moshier (moshier@world.std.com)
+
+ * real.c (ltoe, ultoe, eifrac, euifrac): Handle 64-bit longs.
+ (SFMODE_NAN, DFMODE_NAN, XFMODE_NAN, TFMODE_NAN): New macros
+ permit definitions of NaN patterns to be overridden in tm.h.
+
+Sun Jun 13 12:55:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (start_function): Avoid a null-reference on CTYPE.
+
+Sun Jun 13 08:22:30 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case COND_EXPR): Fix typo; const1_rtx should
+ be const0_rtx when ignoring expression.
+
+Sun Jun 13 00:15:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * genopinit.c (optabs): For strlen_optab, don't look for `2' in name.
+
+Sat Jun 12 20:23:04 1993 Stephen Moshier (moshier@world.std.com)
+
+ * real.c (ereal_from_float, ereal_from_double): New functions.
+ * real.h (REAL_VALUE_FROM_TARGET_SINGLE): New macro.
+ (REAL_VALUE_FROM_TARGET_DOUBLE): Likewise.
+ * emit-rtl.c (gen_lowpart_common): Use those macros if REAL_ARITHMETIC.
+
+Sat Jun 12 13:44:00 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (add_dependence): Reject CODE_LABELs when searching for
+ last insn of a sched group.
+
+Sat Jun 12 08:06:25 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * m68k.md (movqi): Handle copying an address register to or
+ from memory when the address uses the address register.
+
+Sat Jun 12 00:17:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (record_jump_cond): Look up op1 again after inserting op0.
+
+Fri Jun 11 21:50:16 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * rs6000.md (movsf, movdf): Handle a move from an integer register
+ before reload. This can happen if the user uses asm to put a floating
+ point variable in an integer register.
+
+Fri Jun 11 20:04:43 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (rs6000_gen_section_name): Only replace last period
+ in filename with section name and correct calculation of
+ string length.
+
+ * recog.c (constrain_operands): Correctly ignore MATCH_OPERATOR
+ operands.
+
+ * reload1.c (eliminate_regs_in_insn): Don't use a later elimination
+ than eliminate_regs would use.
+
+ * c-decl.c (finish_decl): Don't modify DECL_INITIAL of a PARM_DECL.
+
+Thu Jun 10 23:48:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * genextract.c (main): Use __volatile__, not volatile.
+
+Thu Jun 10 16:21:08 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (SUBTARGET_SWITCHES): Add -m{,no-}ident.
+ (ASM_SPEC): Pass -v to assembler if used.
+ (OVERRIDE_OPTIONS): Don't allow -fpic if using the OSF/rose object
+ format.
+ (ASM_DECLARE_OBJECT_NAME, ASM_DECLARE_FUNCTION_NAME): If using ELF,
+ emit a .type pseudo op that says the label is either an object or
+ a function.
+ (ASM_DECLARE_FUNCTION_SIZE): Copy from svr4.h.
+ (SCCS_DIRECTIVE): Define.
+ (ASM_FILE_END): Unless -mno-ident, emit a .ident directive that
+ identifies GCC and whether several switches are used.
+
+ * i386/osfelf.h (ASM_SPEC): Pass -v to assembler if used.
+ (OBJECT_FORMAT_ROSE): Undefine.
+
+Thu Jun 10 16:20:24 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * expmed.c (MAX_BITS_PER_WORD): Define earlier.
+ (shift_cost, shiftadd_cost, shiftsub_cost): Use MAX_BITS_PER_WORD.
+
+Thu Jun 10 12:56:18 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (sched_analyze_2): Don't ignore USE insns when creating
+ dependencies.
+ (sched_analyze): Likewise.
+
+Wed Jun 9 12:58:51 1993 Michael Meissner (meissner@osf.org)
+
+ * configure (i386-*-osfelf): Add new configuration for OSF/1 using
+ the ELF object file format.
+
+ * i386/osfelf.h (new file): New config file for OSF/1 with ELF.
+ Include osfrose.h and redefine things as needed.
+
+ * i386/osfrose.h (SUBTARGET_SWITCHES): Add -melf, -mrose, and
+ -mno-rose switches.
+ (HANDLE_SYSV_PRAGMA): Define.
+ (IDENTIFIER_PREFIX, IDENTIFIER_SUFFIX): Remove unused macros.
+ (CPP_PREDEFINES): Add -Acpu(i386) -Amachine(i386) -Asystem(unix).
+ (CPP_SPEC): Define __ROSE__ if compiling for OSF/rose and __ELF__
+ if compiling for the ELF object format.
+ (CC1_SPEC): Pass -mrose if no object format switch.
+ (DWARF_DBX_REGISTER_NUMBER): Map registers according to the
+ debugging format.
+
+Wed Jun 9 13:21:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Mon Jun 7 18:01:31 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (is_subobject_of_p, lookup_field, lookup_fnfields):
+ Because virtual bases don't necessarily share the same binfo, use
+ the binfo hierarchy of TYPE_BINFO of any virtual bases, when
+ performing hiding checks. Fixes problem introduced on Thu Mar 25
+ 23:09:27 1993. The symptom is the compiler reports non ambiguous
+ members as being ambiguous.
+
+ Wed Jun 2 11:53:24 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (lookup_fnfields_here): Use TYPE_MAIN_VARIANT on
+ context types before comparing. Fixes const member functions not
+ being found in templates.
+
+Tue Jun 8 19:44:23 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (finish_function): Move setting of the DECL_RESULT's
+ context and calling setjmp_protect after poplevel, so we have a
+ valid DECL_INITIAL for the fndecl (not an error_mark_node).
+
+Tue Jun 8 13:14:27 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * configure: Added gas support for m88k-* targets.
+
+ * t-luna-gas t-dgux-gas t-m88k-gas: New files in config/m88k.
+
+Tue Jun 8 14:51:44 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * loop.c (move_movables): Delete REG_EQUAL notes that describe a
+ non loop invariant value.
+
+ * sparc.c (call_operand, call_operand_address): Accept any address
+ not just REG rtx.
+
+Tue Jun 8 18:47:39 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * sparc.h: (RTX_COSTS): Make cost of MULT depend on TARGET_V8.
+
+ * pa.h (CPP_SPEC): Fix typo: define __hp9000s700.
+
+Tue Jun 8 06:16:30 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.h (HARD_REGNO_REGS, HARD_RENO_MODE_OK, MODES_TIEABLE_P):
+ Restrict use of 88110 extended registers to floating point.
+
+Mon Jun 7 15:42:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * math-68881.h (atan2): For x <= 0, lump y == 0 with y > 0
+ to get the right result in 0, -1 case.
+
+Mon Jun 7 17:50:25 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa.h (RTX_COSTS): Cost of MULT also depends on
+ TARGET_DISABLE_FPREGS.
+
+ * pa.h (ASM_OUTPUT_INT): Always emit special "plabel" relocation for
+ function labels.
+
+Sun Jun 6 16:31:59 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (translate_options): Don't assume option_map[j].arg_info != 0.
+
+ * config/vax/vax.h (PRINT_OPERAND): Prefix constant by `$'.
+
+Sun Jun 6 00:44:48 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * m88k.md (fix_truncdfsi2): Destination is general register, source
+ general or extended register.
+ (fix_truncsfsi2): Likewise.
+
+Sun Jun 6 00:20:25 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc-act.c (encode_type): Add cases for DImode, encoded
+ as 'q' and 'Q' respectively.
+
+Sat Jun 5 14:02:36 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * c-decl.c (pushdecl): Copy DECL_FRAME_SIZE for inline function decls.
+
+ * stmt.c (check_for_full_enumeration_handling): Don't create a
+ default label if all enumeration literals are covered by cases.
+
+Sat Jun 5 04:49:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (uninitialized_vars_warning): Change warning text.
+ (setjmp_args_warning): Likewise.
+
+ * c-typeck.c (convert_for_assignment): Allow conversion to union type
+ for pointer if the pointer could convert to the union member.
+
+Fri Jun 4 18:09:47 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * integrate.c (expand_inline_function): Always copy a SUBREG as an
+ argument into a REG.
+
+Fri Jun 4 05:52:28 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * pa.h (RTX_COSTS): Make cost of MULT depend on TARGET_SNAKE.
+
+ * expmed.c (synth_mult): Move code to add or subtract at
+ leftmost 1-bit to before factoring code to decrease the allowed cost
+ quickly. Restrict it to handle only odd numbers.
+ (init_expmed): Limit mult_cost to make synth_mult run faster.
+
+Fri Jun 4 23:18:35 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/sendmsg.c (objc_msg_sendv): Pass a dummy va_list, not 0,
+ to objc_error.
+
+Fri Jun 4 16:12:43 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * byteorder.h: Use new-style function definitions, so that this
+ file is both valid C and C++.
+
+Fri Jun 4 00:59:31 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/mips/svr4-5.h (CPP_PREDEFINES):
+ Add _MIPS_SZINT _MIPS_SZLONG _MIPS_SZPTR.
+
+Thu Jun 3 23:48:39 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa.c (output_function_epilogue): If the last insn in the
+ current function is a (volatile) call, then emit an extra
+ nop after the call so that RP will point to a valid instruction.
+
+Thu Jun 3 18:52:24 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/nextstep.h (INCLUDE_DEFAULTS): Use same order as cccp.c.
+ Add CCC_INCLUDE_DIR with /ansi and /bsd concatenated.
+
+ * varasm.c (immed_real_const_1): Check explicitly for NaNs.
+
+Thu Jun 3 14:37:25 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * combine.c (num_sign_bit_copies): At end, return 1 is nonzero has
+ the high bit set.
+
+Wed Jun 2 17:27:31 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * loop.c (record_initial): Reject insns that store into subregs.
+
+Tue Jun 1 12:46:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.4.3 released.
+
+ * just-fixinc: New file.
+
+ * config/convex/convex.h [_IEEE_FLOAT_] (LINK_SPEC):
+ Use ___gcc_cleanup, not __gcc_cleanup.
+
+Tue Jun 1 07:41:26 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (ffs): Delete pattern containing nonexistant instruction.
+
+ * alpha.md (extendsidi2): Correctly do operation when in FP
+ registers and, since expensive, don't have FP regs as a preference.
+
+Tue Jun 1 00:09:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (signal.h): Fix typo in last change.
+
+ * configure: Add missing dash in patterns for mips-*-riscos...
+ In riscos 5 patterns, use fixinc.mips.
+
+ * fixinc.mips: New file.
+
+ * config.sub: Handle 386bsd.
+
+Mon May 31 23:47:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/vax/vax.md (untyped_call, blockage): New patterns,
+ basically copied from m68k.md.
+
+Mon May 31 21:46:08 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * romp.c (output_epilog): Don't crash if TYPE_SIZE of an arg is
+ not set.
+
+Mon May 31 00:15:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/mips/x-sony (OLDCC): Fix typo.
+
+ * config/mips/bsd-4.h, bsd-5.h, svr3-4.h, svr3-5.h, svr4-4.h, svr4-5.h:
+ (STANDARD_INCLUDE_DIR): Renamed from SYSTEM_INCLUDE_DIR.
+ * config/mips/bsd-5.h, svr3-5.h, svr4-5.h (LINK_SPEC):
+ Delete excess close brace.
+
+ * pa.md (decrement_and_branch_until_zero):
+ Reverse all conditions in reload cases.
+
+ * Version 2.4.2 released.
+
+Sun May 30 21:14:42 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * integrate.c (expand_inline_function): Increment map->const_age
+ before copying REG_NOTES.
+
+ * sparc.c (sparc_builtin_saveregs): Don't set first_reg to zero
+ for varargs.
+
+Sun May 30 23:58:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/Makefile (copy-headers): chmod the headers, not the dir.
+
+ * Makefile.in (objc-headers): Don't dep on force.
+ Touch objc-headers so copy is not repeated at install time.
+
+ * final.c (shorten_branches): Conditionalize last change
+ on SHORTEN_WITH_ADJUST_INSN_LENGTH.
+
+ * pa.h (SHORTEN_WITH_ADJUST_INSN_LENGTH): Defined.
+
+Sun May 30 13:53:30 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * final.c (shorten_branches): Call ADJUST_INSN_LENGTH during the
+ shortening phase.
+
+ * pa.c (output_cbranch): In forward/long branch case, only
+ nullify if the delay slot was empty or if the delay slot
+ was explicitly nullified.
+ (output_bb): Likewise.
+
+ * pa.h (ADJUST_INSN_LENGTH): Call pa_insn_adjust_length.
+
+ * pa.h (INSN_SETS_ARE_DELAYED): Do not call get_attr_type with a
+ CLOBBER insn.
+ (INSN_REFERENCES_ARE_DELAYED): Likewise.
+
+ * pa.md (call insns and expanders): Do not explicitly clobber %r31.
+
+ * pa.c (pa_insn_adjust_length): Rework. Add code to handle
+ millicode calls with unfilled delay slots and inline block moves.
+ (compute_movstrsi_length): New function to compute the length of
+ a movstrsi pattern.
+ (output_cbranch): Long branches with unfilled delay slots can
+ always nullify the following instruction if their delay slot
+ was not filled.
+
+Sun May 30 18:58:22 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * mips.c (function_arg_partial_nregs): For BLKmode values, fits in
+ remaining register if total size <= MAX_ARGS_IN_REGISTERS, not <.
+
+Sun May 30 17:45:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * emit-rtl.c (operand_subword): Shift by (HOST_BITS_PER_WIDE_INT / 2),
+ not by 32.
+
+ * reload1.c (reload): If only non-group need is unfilled, see if
+ regs spilled for earlier classes can satisfy it.
+
+ * config/mips/iris4loser.h (ASM_SPEC): Add unconditional -O0.
+
+Sat May 29 15:19:57 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa.md (movdf for const_double): Handle loading
+ a CONST_DOUBLE into general registers.
+ (movsf for const_double): Likewise.
+
+ * pa.c (singlemove_string): Handle SFmode CONST_DOUBLE
+ as a source operand.
+
+Sat May 29 14:14:30 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (operand_subword): Correctly handle case when
+ REAL_VALUE_TO_TARGET_DOUBLE is used on a 64-bit machine.
+
+Sat May 29 12:15:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (signal.h): Don't mung #endif if nonwhite stuff precedes.
+
+ * rtl.h: Undef PC.
+
+Fri May 28 19:01:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i[34]86-*-isc*): If gas and not stabs, use isccoff.h.
+
+ * final.c (shorten_branches): Do not call insn_current_length
+ with an insn which has a non-varying length. Use insn_lengths
+ instead.
+
+ * c-typeck.c (process_init_constructor): Never set current_index
+ itself--always store into current_index_node.
+
+ * dbxout.c (dbxout_type): Add missing `;' for array with no domain.
+
+Fri May 28 16:47:54 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (fold_rtx): Correct check for associating shifts and
+ ending up with a shift count too large; convert to the
+ largest valid for ASHIFTRT and don't fold all others.
+
+ * combine.c (make_compound_operation, case ASHIFTRT): Fix typo.
+ Was using C1 where C2 is needed.
+
+Fri May 28 17:50:38 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * integrate.c (expand_inline_function): When copy REG_NOTES, must
+ also call subst_constants.
+
+ * gcc.c (process_command): When GCC_EXEC_PREFIX is defined and
+ tooldir is relative, add it to search path in addition to standard
+ directory rather than instead of.
+
+Fri May 28 00:50:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/arm/arm.h (GO_IF_LEGITIMATE_INDEX): Check explicitly for
+ upper and lower bounds of valid INDEX.
+
+ * genopinit.c (insn_name_ptr): Declare as variable.
+ (optabs): Fix typo in floatuns case.
+
+Thu May 27 12:13:55 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_and_const_int, case IOR, XOR, NOT): Don't
+ create constant wider than mode of VAROP.
+
+Thu May 27 20:41:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i[34]86-ibm-aix*): Set fixincludes.
+ (i[34]86-*-sco*): Don't test --with-gas, just --with-stabs.
+
+Wed May 26 16:05:05 1993 Michael Collison (collison@osf.org)
+
+ * jump.c (jump_optimize): Insert missing GET_MODE call.
+
+Wed May 26 18:40:09 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * i960.md (ashlsi3): Use shlo instead of shli.
+
+Wed May 26 00:34:33 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/nextstep.h (INCLUDE_DEFAULTS): Undo previous change.
+
+ * Makefile.in (gcc.xtar.z): Renamed from gcc.xtar.Z. Use gzip.
+ (dist): Depend on gcc.xtar.z.
+ (mostlyclean): Delete temp-gcc.xtar.z.
+
+ * Version 2.4.1 released.
+
+ * c-lex.c (readescape): Don't complain for \% unless pedantic.
+
+ * config/mips/mips.h (ASM_SPEC): If -noasmopt, pass -O0.
+ * config/mips/iris3.h: Likewise.
+
+ * config/mips/iris4loser.h: New file.
+ * config/mips/iris4gl.h: New file.
+ * configure (mips-sgi-iris4loser): New alternative.
+
+Tue May 25 18:05:50 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * dbxout.c (dbxout_block) [DBX_BLOCKS_FUNCTION_RELATIVE]:
+ Get function name from DECL_RTL not from DECL_ASSEMBLER_NAME.
+ * config/sparc/sol2.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
+
+ * m68k/sun3.h (FUNCTION_VALUE, FUNCTION_VALUEX): Ifdef out.
+
+ * c-typeck.c (convert_for_assignment): When allowing mixing of
+ signed and unsigned pointers, compare unsigned types not type sizes.
+
+Tue May 25 00:08:42 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * nextstep.h (INCLUDE_DEFAULTS): Delete /NextDeveloper/Headers/ansi
+ and /NextDeveloper/Headers/bsd.
+
+ * regclass.c (regclass): Fix paren error.
+
+ * c-decl.c (finish_decl): If type is laid out, but decl is not,
+ call layout_decl.
+
+ * protoize.c (include_defaults): Update to match cccp.c.
+ * Makefile.in (stamp-proto):
+ Pass LOCAL_INCLUDE_DIR based on local_prefix.
+
+ * stmt.c (expand_asm_operands): Detect constants as outputs.
+
+Mon May 24 18:25:23 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (main): Use TARGET-gcc, not gcc-TARGET.
+
+ * reload1.c (delete_output_reload): Don't delete output reload
+ if cannot_omit_stores is set for that pseudo.
+ (reload): Init and clear cannot_omit_stores.
+ (eliminate_regs): Set cannot_omit_stores.
+
+ * configure (i[34]86-*-sco3.2v4*): Test --with-stabs, not --with-gas.
+
+Mon May 24 14:10:59 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * integrate.c (expand_inline_function): Set MEM_IN_STRUCT_P for
+ return value if needed.
+
+Mon May 24 13:10:07 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (convert_harshness): Don't dereference a null parm.
+
+ * cp-method.c (dump_init): Don't try to print out the first operand
+ of a TARGET_EXPR if it's not there.
+
+Mon May 24 10:13:26 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * expr.c (expand_expr): Finish Tue Aug 18 23:07:33 1992 change. It
+ didn't handle the target != 0 case, now it does.
+
+Mon May 24 00:30:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr, TARGET_EXPR case):
+ Handle case where DECL_RTL is nonzero.
+
+ * configure (i[34]86-*-isc*): Use install-headers-cpio.
+
+ * genopinit.c (optabs): Add backslashes to prevent SCCS confusion.
+ * config/m68k/tower-as.h (CONSTRUCTOR_NAME_FORMAT): Likewise.
+
+ * combine.c (subst): For subreg-of-constant, don't gen_lowpart
+ if it's a big-endian machine and constant is multi-word.
+
+ * gstddef.h (size_t) [__GNUG__]: Don't typedef it if it's
+ already defined as a macro.
+
+ * config/i386/x-aix (CLIB): Defined.
+ * config/i386/aix386.h (STARTFILE_SPEC, LINK_SPEC): New overrides.
+ * config/i386/xm-aix.h: Undef TRUE and FALSE before #include.
+ * config/i386/aix386ng.h (STARTFILE_SPEC, LINK_SPEC): Don't use
+ crtbegin.o, crtend.o, crtn.o, libp.a. Use gcrt0.0, not gcrt1.o.
+ (ENDFILE_SPEC): Use crtn.o.
+ (CPP_PREDEFINES): Delete _AIX, AIX, and _I386. Add ps2, unix.
+ (CPP_SPEC): Add _AIX, _I386, _MBCS. Handle -posix.
+ (ASM_SPEC): Turned off.
+ * config/i386/t-aix: New file.
+ * configure (i[34]86-ibm-aix*): Use t-aix if using gas.
+
+ * config/i386/sco4.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE):
+ New override definitions.
+
+ * toplev.c (compile_file): Undo previous changes (that were to call
+ assemble_zeros whenever DBX_DEBUGGING_INFO is defined).
+
+Sun May 23 16:31:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/nextstep.h (INCLUDE_DEFAULTS): Fix missing comma.
+
+ * config/i386/x-aix (FIXINCLUDES): Defined.
+ * fixinc.ps2: New file.
+
+Sun May 23 14:51:06 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/objc.h (objc_protocol): New field `class_pointer'.
+
+ * objc/init.c (__objc_init_protocols): Call recursively
+ on super protocols. Make local var `proto_class' static.
+
+Sun May 23 00:49:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (BISONFLAGS): Remove -v since output file names are long.
+
+ * reload1.c (choose_reload_regs): If inheriting a spill reg,
+ and reload_out has a wider mode, just copy from that spill reg,
+ don't use it for the reload.
+
+ * reload.c (push_reload): Fix NULL arg in last change.
+
+ * config/m88k/x-tekXD88 (AR_FLAGS): Defined.
+
+Sat May 22 14:49:59 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/mips/mips.h (ASM_SPEC): If -noasmopt, don't pass -O2.
+ * config/mips/iris3.h: Likewise.
+
+ * config/nextstep.h (INCLUDE_DEFAULTS): Put /usr/include/bsd last.
+
+ * config/alpha/alpha.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT):
+ Use hex if infinite, nan, or minus zero.
+
+ * real.c (target_isnan): Use GET_REAL macro to get argument.
+ (ereal_to_int): Fix potentially wrong-endian argument passed to eisnan.
+
+Fri May 21 14:24:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/nextstep.h (INCLUDE_DEFAULTS): Add /usr/include/bsd.
+
+ * cccp.c (default_include): Put TOOL_INCLUDE_DIR after
+ LOCAL_INCLUDE_DIR in non-cross case.
+
+ * real.c (emdnorm): Fix typo affecting roundoff behavior in XFmode.
+
+ * config/m68k/amix.h (CPP_PREDEFINES): Add -D__svr4__.
+ (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
+ New override definitions.
+
+ * collect2.c (main) [CROSS_COMPILE]: Use TARGET-TOOL for full_...
+
+ * collect2.c (main): For -debug, if ..._file_name is a null pointer,
+ say so instead of crashing.
+
+ * m68k.md (cmpxf2 recognizer): Test SGS_CMP_ORDER, not HPUX_ASM.
+
+ * c-common.c (constant_expression_warning)
+ (overflow_warning, convert_and_check): Change pedwarn to warning.
+
+ * reload.c (push_reload): When IN is a subreg of a multiword reg
+ that uses a funny number of registers, and SUBREG_WORD is nonzero,
+ and IN must match an output, reload both the reg and the subreg.
+
+ * protoize.c (add_symbol, unexpand_if_needed, abspath):
+ Supply missing arg to savestring.
+
+ * Makefile.in (info, dvi): New targets.
+
+Fri May 21 10:28:41 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (subst): Don't use a method's arguments unless it has some.
+
+Fri May 21 11:51:20 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/sarray.h (sarray_get): Add #ifdef case for
+ !defined(PRECOMPUTE_SELECTORS) and OBJC_SPARSE2.
+ * objc/sarray.c (sarray_at_put): Likewise.
+
+Fri May 21 00:51:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (mips-*-ultrix*): Renamed from mips-dec-ultrix*.
+
+Thu May 20 23:16:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (choose_reload_regs): Handle earlyclobbers
+ when inheriting from reg_last_reload_reg.
+
+Thu May 20 13:59:16 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * Makefile.in (install-dir): Fix syntax, make tooldir before assertdir.
+
+Thu May 20 08:52:30 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstddef.h [_ANSI_H_]: Handle __need_size_t and __need_wchar_t.
+
+ * fixincludes (Fixing CTRL): Reject CTRL or _CTRL following digit.
+
+ * enquire.c (F_check): Check NO_LONG_DOUBLE_IO.
+
+Wed May 19 23:18:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/x-isc3 (X_CFLAGS): Delete -DPOSIX_JC.
+
+ * real.c (e24toe, e53toe, e64toe): Fix sign in conversions
+ of -infinity. Do eclear before einfin.
+
+Wed May 19 15:37:20 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * va-sparc.h (va_dcl): Restore accidentally deleted __builtin_va_alist
+ declaration.
+
+ * objc-act.c (handle_class_ref): Call assemble_constant_align
+ before output_constant.
+ * varasm.c (assemble_constant_align): New function.
+
+Wed May 19 13:40:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i860/x-sysv4 (X_CFLAGS): Deleted.
+
+ * configure (i[34]86-*-isc*): If version is 3, use x-isc3.
+ * config/i386/x-isc3: New file.
+
+Mon May 19 21:47:49 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * Fix calling convention for indirect calls on the PA.
+ * calls.c (expand_call): Declare and set current_call_is_indirect.
+ (emit_library_call, emit_library_call_value): Likewise.
+ * function.c (assign_parms): Likewise.
+ * pa.h (TARGET_SHARED_LIBS): Define as 1.
+ (FUNCTION_ARG): If this is a call through a function pointer, then
+ the caller passes all arguments in general registers.
+
+ * pa.h (FUNCTION_ARG_REGNO_P): Account for registers which may
+ be unavailable on particular cpu models. Fix indentation.
+
+Wed May 19 13:13:42 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * loop.c (scan_loop): Treat pseudo duplicated for exit tests just
+ like we treat user vars in seeing if we can move a SET.
+
+ * combine.c (set_nonzero_bits_and_sign_copies, nonzero_bits):
+ If we have a positive constant that is negative in the mode
+ it is being used in, treat it as negative.
+ * rs6000.h, alpha.h (SHORT_IMMEDIATES_SIGN_EXTEND): Define.
+
+ * emit-rtl.c (operand_subword): Reject cases when BITS_PER_WORD
+ is greater than HOST_BITS_PER_INT unless OP is const0_rtx.
+
+Tue May 18 16:31:06 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * pa.h (INITIALIZE_TRAMPOLINE): Make 2:nd flush, end_addr,
+ at the last real insn in the trampoline.
+
+Tue May 18 13:35:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (assertdir): use $(tooldir)/include for this.
+ (install-dir): Always create assertdir and tooldir.
+
+ * config/arm/arm.md (add/asl recognizer): Use space, not #, after asl.
+ Shuffle operands differently.
+
+ * objc-act.c (synth_module_prologue): Set TREE_PUBLIC in umsg_decl.
+
+ * Makefile.in (infodir): New variable.
+ (install-dir): Create that dir.
+ (install-info): New rule.
+ (install-normal): Depend on install-info.
+
+ * fixincludes: Use $file. rather than $file.sed
+ when $file is or might be more than 10 characters long.
+
+ * config/i386/isc.h (LIB_SPEC): Handle -posix before -shlib.
+
+ * config/mips/x-sony: New file.
+ * configure (mips-sony-bsd*): Use x-sony.
+
+ * Makefile.in (local_prefix): Do not default from $(prefix).
+
+Tue May 18 09:28:02 1993 Chris Smith (csmith@convex.com)
+
+ * convex.c (replace_pushes, emit_ap_optimizations): Delete.
+
+Mon May 17 18:07:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4 (ieeefp.h): Delete definitions of __mips and __m68k.
+
+Mon May 17 17:00:00 1993 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: Fix sed for version.c to handle both with
+ and without spaces correctly (MS-DOS).
+
+Mon May 17 12:26:55 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * rtl.c (init_rtl): Correct number of 'w's in CONST_DOUBLE format.
+
+Mon May 17 00:07:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.4.0 released.
+
+ * Makefile.in (extraclean): Remove junk from objc subdir.
+
+ * fixinc.svr4 (ieeefp.h): Delete definitions of __i860 and __m88k.
+
+ * mips/iris4.h (ASM_OUTPUT_ASCII): New overriding definition.
+
+ * pa.h (INITIALIZE_TRAMPOLINE): Pass both the starting and ending
+ addresses of the trampoline to the cacheflush pattern.
+ * pa.md (cacheflush): Flush the cache entries associated with
+ both the starting and ending addresses of the trampoline.
+
+ * gvarargs.h, gstdarg.h [__svr4__ __i860__]:
+ Define _VA_LIST only if not defined already.
+
+Mon May 17 00:40:36 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386/sysv4.h (BIGGEST_FIELD_ALIGNMENT, PCC_BITFIELD_TYPE_MATTERS):
+ Deleted. Now handled by HANDLE_SYSV_PRAGMA.
+ (HANDLE_SYSV_PRAGMA): Deleted: already defined by svr4.h.
+
+Sun May 16 19:25:38 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * unroll.c (initial_reg_note_copy, final_reg_note_copy): New functions.
+ (copy_loop_body): Use new function to copy REG_NOTES.
+
+Sun May 16 13:03:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (extraclean): Delete junk in subdirs of config.
+ (distclean): Delete {c,cplus,objc}-parse.output.
+
+ * reorg.c (find_end_label): Update insn after calling emit_jump_insn.
+
+ * fixinc.svr4 (ieeefp.h): Delete `#define __sparc' also.
+
+Sun May 15 01:37:19 PDT 1993 Ron Guilmette (rfg@netcom.com)
+
+ * fixinc.svr4 (ieeefp.h): Delete `#define __i386' line.
+
+Sat May 15 10:11:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * math-68881.h: Add conditional against multiple inclusion.
+
+ * gvarargs.h [__svr4__ __i860__] (_VA_LIST): Do define.
+ * gstdarg.h: Likewise.
+
+ * toplev.c (compile_file): If support dbx output,
+ always output 0 at start of text section.
+
+ * cp-tree.h (error_not_base_type): Fix typo in decl.
+
+Sat May 15 09:08:23 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_assignment): Fix error in last change.
+
+ * rs6000.md (movqi, movhi, movsi): Make sure that address returned
+ from force_const_mem is valid.
+
+ * i860.h (INITIALIZE_TRAMPOLINE): Don't make improper SUBREGs
+ and ensure that CXT and FNADDR are in registers.
+
+ * convex.c (insert_ap_loads): Initialize AP_IS_LIVE to 0 at
+ start of both loops, not just first one.
+
+ * convex.h (REGNO_REG_CLASS): Don't call abort; it will cause
+ a compilation error as written and isn't done elsewhere.
+
+ * combine.c (set_nonzero_bits_and_sign_copies): Don't record
+ data for a a pseudo that is undefined on entry to a function.
+ When a pseudo is clobbered, show we don't know anything about it.
+
+ * expr.c (expand_assignment): Always return a result that has
+ the mode of TO.
+
+ * rs6000.c (rs6000_makes_calls): If profiling, say we make calls.
+
+Sat May 15 00:38:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * va-mips.h (va_arg) [__MIPSEB__]:
+ After incrementing, subtract the rounded size, not the size proper.
+
+ * config/i860/x-sysv4 (X_CFLAGS): Defined.
+ (GCC_CFLAGS): Definition deleted.
+
+ * final.c (output_addr_const): Don't printing leading zeros.
+
+Sat May 15 06:18:43 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reload1.c (reload): Don't start 2-group unless it could be finished.
+
+Sat May 15 12:23:58 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * alpha.c (output_prolog): Change (sp) to ($30).
+
+ * pa.h (TRAMPOLINE_TEMPLATE): Change .long to .word; split into
+ two lines.
+
+Fri May 14 18:09:31 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (option_map): Renamed --version to --use-version.
+
+Fri May 14 17:20:21 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * xcoffout.c (N_DSLINE, N_BSLINE): Delete definitions.
+ (stab_to_sclass): Use ifdefs to test for presence of N_MAIN,
+ N_BSLINE, N_DSLINE, N_BINCL, N_EINCL, N_EXCL, N_M2C, N_SCOPE.
+
+ * sched.c (split_hard_reg_notes): Handle 0th sub register, and
+ multiple register kills.
+ (update_flow_info): For multi-word hard regs, use
+ split_hard_reg_notes to add all REG_DEAD notes, instead of just
+ the additional ones due to splitting.
+
+Fri May 14 16:12:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure (hppa1.1-*-hpux*): Use CPIO for headers, just like
+ other HPUX configs.
+ (hppa1.1-*-hpux8.02*): Likewise.
+
+Fri May 14 16:35:22 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * reorg.c (fill_slots_from_thread): If try_split split new_thread,
+ update it to the new value.
+
+Fri May 14 13:42:39 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * configure (hp700-hpux8.02): New target.
+ * pa1-oldas.h: New target for 1.1 machines running HPUX 8.02.
+
+Fri May 14 13:23:51 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * integrate.c (expand_inline_function): Set map->integrating.
+ (copy_rtx_and_substitute, case MEM): Don't copy RTX_UNCHANGING_P
+ when doing function inlining.
+ * integrate.h (struct inline_remap): Add integrating field.
+ * unroll.c (unroll_loop): Clear map->integrating.
+ * stmt.c (expand_decl): Don't set RTX_UNCHANGING_P.
+
+Fri May 14 12:28:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (default_conversion):
+ Don't replace iterator with its initial value.
+
+ * config/i386/svr3gas.h: Added two pages at end, with macros
+ copied from config/svr3.h and i386/sysv3.h.
+
+ * config/m68k/tower-as.h (PRINT_OPERAND): Handle CODE == '/'.
+ * hp320.h, mot3300.h, news.h, crds.h: Likewise.
+
+Fri May 14 15:44:45 1993 Kresten Krab Thorup (krab@xiv.iesd.auc.dk)
+
+ * objc/init.c (__objc_init_protocols): Don't complain if a
+ protocol object is attempted resolved twice.
+
+Fri May 14 00:51:38 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (CPP_SPEC): Correct specs so that _PA_RISC1_1 is only
+ defined when generating code for 1.1 machines regardless of the
+ default target.
+
+Thu May 13 21:47:55 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (fix_truncdfsi2, fixuns_truncdfsi2, trunc_call): Fix
+ typo in mode of FIX and UNSIGNED_FIX rtl.
+
+ * reorg.c (reorg_redirect_jump): New function.
+ Call it in most places instead of redirect_jump.
+
+Thu May 13 17:01:05 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * caller-save.c (restore_referenced_regs): New variable saveregs
+ which is number of regs to save at a time, instead of numregs,
+ which is total number of registers to save.
+
+Thu May 13 08:28:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (OBJC, OBJECTIVE-C): Don't depend on objc-runtime.
+
+ * dbxout.c (dbxout_parms): Don't output a parm if it's a mem
+ that has a constant address.
+
+ * config/pa/x-pa (TAROUTOPTS): Overridden.
+ * config/m68k/x-hp320,x-hp320g (TAROUTOPTS): Overridden.
+
+ * Makefile.in (TAROUTOPTS): New variable.
+ (install-headers-tar): Use TAROUTOPTS.
+
+ * 3b1.h, 3b1g.h, altos3068.h, crds.h, hp2bsd.h, hp310.h:
+ * isi-nfp.h, pbb.h, plexus.h, sun2.h, sun3n.h, tower.h:
+ (LONG_DOUBLE_TYPE_SIZE): Redefine as 64.
+
+ * objc/runtime.h: Include gstdarg.h before stdio.h.
+
+ * Makefile.in (libobjc.a): Depend on EXTRA_PARTS.
+
+Wed May 13 18:33:26 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * arm.h: Declare output_arithmetic_with_immediate_multiply.
+
+ * arm.md (combined mult/arithmetic recognizers): Switch on.
+ Add special pattern for reload.
+
+ * arm.md (restorehi): Use SImode for address.
+ (storehi): Use SImode for address and address computation.
+ (storeinthi): Likewise.
+
+Wed May 12 22:47:35 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/sun3.h, sun2os4.h (ASM_OUTPUT_FLOAT_OPERAND):
+ Output as hex, unless CODE is 'f'.
+ * altos3068.h, next.h (ASM_OUTPUT_FLOAT_OPERAND): Likewise.
+
+Wed May 12 14:18:36 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.h (REG_OK_FOR_BASE_P REG_OK_FOR_INDEX_P): Don't
+ use extended registers for base or index.
+
+Wed May 12 14:48:00 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (copy_loop_body): Delete May 10 change.
+
+Tue May 11 20:20:41 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * tree.c (real_value_from_int_cst): Use temporary variable `e' to
+ work around bugs in 386 PCC.
+
+Tue May 11 16:50:54 1993 Michael Meissner (meissner@osf.org)
+
+ * mips/iris3.h, mips/mips.h, mips/news4.h, mips/nws3250v4.h,
+ mips/ultrix.h (ASM_SPEC): Pass appropriate -g<n> switch to the
+ assembler for -gstabs<n>, -gstabs+<n>, -ggdb<n>, and -gcoff<n>
+ switches.
+
+ * local-alloc.c (block_alloc): Don't dereference a NULL pointer.
+
+Tue May 11 12:09:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (build_array_type): Delete the code to set TYPE_MAIN_VARIANT.
+ * c-decl.c (complete_array_type): Likewise.
+
+Tue May 11 11:40:14 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (emit_move_sequence): Handle secondary reloads for loads of
+ FP registers from constant expressions.
+
+ * pa.h (CONSTANT_ADDRESS_P): Accept symbolic addresses during
+ and after reload.
+
+Tue May 11 07:26:06 1993 Richard Kenner (kenner@mole.gnu.ai.mit.edu)
+
+ * reorg.c (mostly_true_jump): Jump is forward if TARGET_LABEL is
+ zero; don't try to get INSN_CODE of zero.
+
+Tue May 11 00:44:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (build_array_type):
+ Don't change TYPE_MAIN_VARIANT if incomplete (domain not known).
+
+ * real.c (enan): Add forward decl.
+
+Mon May 10 20:32:12 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * unroll.c (copy_loop_body): Copy REG_NOTES during main loop
+ instead of afterwards.
+
+Mon May 10 17:36:31 1993 Richard Kenner (kenner@vlxisi1.ultra.nyu.edu)
+
+ * alpha.c (output_epilog): Fix minor error in instructions used
+ to restore stack pointer.
+
+Mon May 10 15:59:41 1993 Michael Meissner (meissner@osf.org)
+
+ * mips-tfile.c (parse_def): Do not execute a division by 0 when
+ processing a doubly dimensioned array whose outer bound was 0 or
+ not specified.
+
+Mon May 10 12:14:07 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.h (TRAMPOLINE_TEMPLATE): Fixed invalid bsr insn.
+
+Mon May 10 11:55:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c: Don't include string.h.
+ (strcat, strcpy, strcmp, strncpy, strncmp): Decls deleted.
+ (dupnstr): Don't use return value of strncpy.
+ (dupstr): Function deleted; callers changed to use savestring.
+
+ * tree.c (change_main_variant): New function.
+ (build_array_type): Use that to set the TYPE_MAIN_VARIANT.
+ * c-decl.c (complete_array_type): Call change_main_variant.
+
+Mon May 10 11:53:02 1993 Steve Chamberlain (sac@wookumz.gnu.ai.mit.edu)
+
+ * sh.md (movstrsi): Take alignment into account.
+ * sh.c (shift_value_ok): Can't shift by negative values.
+
+Mon May 10 11:49:48 1993 Michael Meissner (meissner@osf.org)
+
+ * va-mips.h (va_arg): Use __alignof__ instead of __alignof.
+
+ * cp-decl.c (finish function): Add missing ';'.
+
+Mon May 10 00:54:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/runtime.h: Include gstdarg.h, not stdarg.h.
+
+ * libgcc2.c (__floatdisf): Use DFtype for intermediate values.
+
+ * tree.c (real_value_from_int_cst):
+ If I is unsigned, use REAL_VALUE_FROM_UNSIGNED_INT.
+
+ * config/m68k/m68k.c (output_move_double): Use operand 0 to get SIZE.
+
+ * reload.c (find_equiv_reg): Set goal_mem_addr_varies
+ for all but true constant addresses.
+
+Sun May 9 17:53:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/sparc/sparc.h (SIZE_TYPE): Deleted.
+
+ * fixincludes: When finding SIZE_TYPE, cd to ${LIB} to run cc.
+ (memory.h): Don't try to read it if it doesn't exist.
+
+ * real.c (NAN): Define for support of Not-a-Number bit patterns.
+ (make_nan): New function outputs a NaN in requested machine mode.
+ (eisnan, eiisnan, enan, einan, eiisinf, eiinfin): New functions.
+ (earith, etrunci, etruncui, ereal_negate, ereal_ldexp,
+ real_value_truncate, esub, eadd, emul, ediv, eremain):
+ Return NaN arg back to caller.
+ (eroundi, eroundui, ereal_to_int): NaN to integer returns -1
+ and a warning.
+ (target_isnan): Check for NaN.
+ (eneg): No-op if NaN.
+ (eisneg, eisinf): False if NaN.
+ (emovi, emovo): Handle NaN conversions.
+ (esub, eadd): Infinity minus infinity = NaN and INVALID warning.
+ (ediv): 0/0, inf/inf = NaN and INVALID warning.
+ (emul): 0 * inf = NaN and INVALID warning.
+ (e24toe, e53toe, e64toe): Generate e-type NaN for NaN input.
+ (etoe24, etoe53, etoe64): Output NaN in appropriate machine mode.
+ (ecmp): Unordered compare returns -2.
+ (etoasc): NaN produces ASCII string "NaN".
+ (asctoe): Unrecognizable input produces e-type NaN.
+ (eremain): x REM y = NaN if y = 0 or x = infinity.
+
+ * real.c (mtherr): Don't put newlines in error message string.
+
+ * real.h (REAL_VALUES_LESS): True if return value of ereal_cmp is -1.
+
+Sun May 9 17:34:06 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (finish_function): Don't do anything if we haven't got a
+ current_function_decl.
+
+ * cp-pt.c (tsubst): Don't assert if IN_DECL is null.
+ (coerce_template_parms): Likewise.
+
+ * cp-type2.c (process_init_constructor): Fix argument passing to
+ initializer_constant_valid_p.
+
+Sun May 9 10:47:05 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (complete_array_type):
+ Make maxindex -1 for empty constructor.
+
+ * i860.c (call_insn_operand): New funcion.
+ * i860.md (call, call_value): Copy fn address to safe reg if necessary.
+ (call, call_value matchers): Use call_insn_operand as predicate.
+
+ * config/mips/mips.c (call_insn_operand): New function.
+ * config/mips/mips.md (call_internal1, call_value_internal1):
+ Use call_insn_operand as predicate.
+ (call, call_value): Copy fn address to safe reg if necessary.
+
+ * config/m68k/m68k.md (mulhisi3, umulhisi3 matchers):
+ Restrict range of constants allowed.
+
+Sun May 9 13:31:35 1993 CET Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/hash.h, objc/objc.h, objc/sarray.h (gstddef.h):
+ Conditionally include gstddef.h or stddef.h by IN_GCC.
+
+Sun May 9 00:51:33 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.h: Fix unterminated comment.
+
+ * objc-act.c (string_section): Delete comma before close-brace.
+
+Sat May 8 23:49:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/i386.c (call_insn_operand): New function.
+ * i386.md (call matchers): Use call_insn_operand.
+ (call expanders): If address uses a virtual reg or arg pointer reg,
+ copy it.
+
+Sat May 8 23:19:11 1993 Kaveh R. Ghazi (ghazi@caip.rutgers.edu)
+
+ * configure (m88k-tektronix-sysv3): New target.
+ * config/m88k/tekXD88.h: New file.
+ * config/m88k/tekXD88.ld: New file.
+ * config/m88k/x-tekXD88: New file.
+
+Sat May 8 10:40:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/i386.md (call insn matchers):
+ Use %a to print a mem's non-constant address;
+ don't try to print the address by itself.
+
+ * config/i386/next.h (ASM_GENERATE_INTERNAL_LABEL)
+ (ASM_OUTPUT_INTERNAL_LABEL): Don't include a `.' in the label name.
+ (LPREFIX): Likewise.
+
+ * m68k.c (print_operand): For CONST_DOUBLE, treat VOIDmode like DImode.
+
+ * expmed.c (init_expmed): Supply missing arg to rtx_cost.
+
+ * config/convex/convex.h (LINK_LIBGCC_SPECIAL_1):
+ Define this instead of LINK_LIBGCC_SPECIAL.
+
+Sat May 8 14:43:27 1993 Torbjorn Granlund (tege@nada.kth.se)
+
+ * m68k.md (umulsidi3 expand + two matchers): Rewrite.
+ Old patterns misused subreg and matched wrong immediate values.
+ Use const_int_operand and constraint `n' for the immediate arg.
+ (mulsidi3 patterns): Likewise.
+
+Sat May 8 07:06:14 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * i386/sco.h (VALUE_REGNO, HARD_REGNO_MODE_OK): Add missing #undef.
+ * i386/sco.h, i386/sequent.h (HARD_REGNO_MODE_OK): Properly check
+ for floating-point registers. Register 16 is AP and not floating.
+
+Fri May 7 19:43:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (default_conversion): Disable change of Apr 13th for
+ now, since it seems to behave incorrectly in some cases.
+
+Fri May 7 17:38:22 1993 Michael Meissner (meissner@osf.org)
+
+ * configure (all MIPS options): If --with-gnu-as is used, don't
+ build mips-tfile or mips-tdump. If --with-gnu-ld is used, don't
+ say we need collect2.
+ (config.sub run): Explicitly invoke /bin/sh to run script, in case
+ config.sub had it's execute bits turned off.
+
+ * mips/t-mips-gas: New target file, used when the GNU assembler is
+ used instead of the MIPS assembler.
+
+Fri May 7 17:41:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (float.h-nat): Use tmp-float.h as intermediate file.
+
+Fri May 7 13:42:06 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-search.c (mi_ventry): Change into a struct to make code more
+ readable and to shut up compilers about valid ANSI C code.
+
+Fri May 7 13:15:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (reg_class): Add new NON_SHIFT_REGS class.
+ (REG_CLASS_NAMES): Name new class "NON_SHIFT_REGS".
+ (REG_CLASS_CONTENTS): Initialize NON_SHIFT_REGS.
+
+ * loop.c (strength_reduce): Handle case where loop_end is the
+ end of the current function.
+
+Fri May 7 05:50:39 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (push_reload): Don't use IN as the reload reg in in-out
+ reload if it is set elsewhere in the insn.
+
+Fri May 7 04:48:25 1993 Chris Smith (csmith@convex.com)
+
+ * x-convex (CCLIBFLAGS): Build libgcc1 with -tm c1 so it can't
+ cause executables to become c2-only.
+
+ * xm-convex.h: Remove workarounds for OS 8.0 no longer needed.
+ (bcopy, bzero): Define to use memcpy and memset, to get them inlined.
+
+ * convex[123*].h (CC1_SPEC, CPP_SPEC, LIB_SPEC): Move to convex.h.
+
+ * convex.h (TARGET_FLAGS): Add -mvolatile-[no]cache.
+ (TARGET_FLAGS, LONG_TYPE_SIZE): add -mlong{32,64}.
+ (target_cpu): Define, enumeration for targets to use instead of flags.
+ (TARGET_C34, TARGET_C38): Add. These don't schedule the same as C2.
+ (OVERRIDE_OPTIONS): Call init routine in convex.c.
+ (CPP_SPEC, ASM_SPEC, LINK_SPEC): If originally bootstrapped with
+ an ieee compiler, produce an ieee gcc.
+ (LINK_LIBGCC_SPECIAL): Define, to avoid searching old libgcc.a
+ versions during bootstrap.
+ (STACK_BOUNDARY): Change from 32 to 64 -- odd-word aligned
+ longwords are slow on c34.
+ (FUNCTION_PROLOGUE): Make frame size a multiple of 8, not 4.
+ (FUNCTION_EPILOGUE): Output a 0 to terminate c34 icache prefetch.
+ (INITIAL_FRAME_POINTER_OFFSET): Make a multiple of 8.
+ (REG_ALLOC_ORDER): Define. Put S0 (the return register) last.
+ (HARD_REGNO_MODE_OK): Rewrite to make clearer.
+ (MODES_TIEABLE_P): Rewrite to make clearer.
+ (PREFERRED_RELOAD_CLASS): Rewrite to make clearer.
+ (S0_REGNUM, A0_REGNUM): Define.
+ (*_REGNUM): Write in terms of [AS]0_REGNUM instead of absolute numbers.
+ (enum reg_class, etc): Add SI_REGS == S_REGS + INDEX_REGS.
+ (REGNO_REG_CLASS, REG_CLASS_FROM_LETTER, REGNO_OK_FOR_*_P): Use tables.
+ (CONST_OK_FOR_LETTER_P): Change. New def passes any const_int,
+ rejects any const_double.
+ (CONST_DOUBLE_OK_FOR_LETTER_P): Change. New defs are 'G' == low
+ word all zeros, 'H' == high word all signs.
+ (EXTRA_CONSTRAINT): New. 'Q' == volatile memref. Used to generate
+ cache-bypass instructions when -mvolatile-nocache is set.
+ (RETURN_POPS_ARGS): Change, always true.
+ (FUNCTION_ARG_ADVANCE): Count args, not # words of args.
+ (FUNCTION_ARG): Return arg count to the final VOIDmode FUNCTION_ARG
+ hack that supplies "next arg register" to be stored in call insn.
+ (TRAMPOLINE_TEMPLATE): Use instruction notation rather than constants.
+ (INITIALIZE_TRAMPOLINE): Use gen_call_pop.
+ (LEGITIMATE_CONSTANT_P): Rewrite to make clearer.
+ (GO_IF_LEGITIMATE_ADDRESS): Do not use indirect addressing -- with
+ insn scheduling, two loads can be faster and can't be slower.
+ (SLOW_BYTE_ACCESS): Define unless C2. Memory access to bytes is
+ not actually slow, but faster processors don't forward partial
+ word writes to word reads, and setting SLOW_BYTE_ACCESS
+ makes the code consistently use word ops where possible.
+ (CONST_COSTS): Const_DOUBLE cost is zero -- if it appears, it is
+ immediate and therefore free.
+ (RTX_COSTS): areg+const is free (via indexing).
+ (RTX_COSTS): Provide target-dependent values for *,<<,>>
+ (ADDRESS_COST): Zero. Indirect addresses are no longer used.
+ (ADJUST_COST): Define.
+ (TARGET_FLOAT_FORMAT): Define as VAX_FLOAT_FORMAT. Also
+ accurately describes the semantics (not the bit pattern)
+ of convex ieee mode.
+ (REAL_VALUE_ATOF): Define, to prevent real.c from constructing
+ vax dfloats. Apparently it doesn't do gfloat.
+ (CHECK_FLOAT_VALUE): Call convex.c.
+ (ASM_FILE_START): Output appropriate .fpmode pseudo op.
+ (ASM_IDENTIFY_GCC): Ouput a zero after gcc2_compiled to keep it
+ from hiding the real name from profilers and adb.
+ (ASM_OUTPUT_DOUBLE, _FLOAT): Use hex to avoid /bin/as conversion
+ errors.
+ (ASM_DECLARE_FUNCTION_NAME): Define; call convex.c.
+ (PRINT_OPERAND, _ADDRESS): Call convex.c.
+ (EXIT_BODY): Define for libgcc2. Call atexit handler if present.
+
+ convex.md: Add scheduling info.
+ (movxx): One of the operands must be a register.
+ (movdf, movdi): Add anonymous patterns that can load an arbitrary
+ const_double by doing two immediate loads. This is not superior
+ to loading it from memory, and can be worse, so LEGITIMATE_CONSTANT_P
+ still rejects these constants, but the patterns are still useful
+ so rtx folding can produce arbitrary results.
+ (floatunsdidf, floatunsdisf): Add patterns that avoid double rounding.
+ (floatunssidf, floatunssisf): Add patterns that mimic gcc's default
+ method, to keep SI cvts from promoting to the above DI cvts.
+ (fix_truncdfsi2): Use cvtd.l even if cvtd.w is available -- on c34
+ cvtd.w is microcoded and slower.
+ (addqi3, subqi3, mulqi3): can do immediate with word insn.
+ (subsi3): use sub/neg to get reverse subtract (reduces reg shuffling).
+ (udivsi3): give up on having sign_expand_binop do this; people keep
+ breaking it. Manually extend unsigned SI to signed DI, then divide.
+ (xshfxx3): The options rank differently on different machines, so
+ spell them all out and enable the appropriate ones under TARGET_Cxx.
+ (sqrtxx2): Put under flag_fast_math.
+ (sinxx2, cosxx2): I don't know why these exist, but they do, so supply
+ them. The other microcoded intrinsics are in convex math.h.
+ (txtxx): Remove, no longer necessary.
+ (cmpdi): Add alternative to fake "eq.l #0,sk" with "neg.l sk,scratch".
+ (cmpqi): Omit, seems to produce marginally better cse than the old way.
+ (cmpsf): Avoid compare against 0.0 in ieee mode, since -0.0 is
+ possible and would confuse old ucode.
+ (movstrsi): Add.
+ (anon): Add patterns to pick up on dbra optimizations and implement the
+ sub/test part. (This optimizes out the compare against 0.)
+ (call, call_value): Use _pop form instead, and let convex.c replace
+ the pushes with fp stores.
+ (end): Put local variable list back.
+
+ convex.c (init_convex): New. Fill in tables used by convex.h.
+ (psw_disable_float): New. Turn off float exception enables to
+ make the environment more ieee-like.
+ (set_cmp): Change name to output_cmp.
+ (gen_cmp): Change name to output_condjmp. Add handling for
+ `neg.x' as a fake `eq.x #0' and for optimized-out compares
+ that read the carry of a preceding decrement.
+ (simplify_for_convex): New. Replace addr-(-const) with
+ addr+const so /bin/as will like the notation.
+ (expand_movstr): New. Generate pipelined load/store sequence.
+ (asm_declare_function_name): New. Output arg count for debuggers.
+ (print_operand): Moved from convex.h. Add %u and %v to fetch
+ subwords of a CONST_DOUBLE, %z to use in replacing shift by mul.
+ (print_operand_address): Moved from convex.h.
+ (outfloat): New, call REAL_VALUE_TO_DECIMAL.
+ (replace_arg_pushes): New. Replace sp by fp if possible; this does
+ not allow us to get rid of sp but stores are faster than pushes on
+ new machines.
+ (emit_ap_optimizations): New. Do simple live analysis of arg pointer
+ register and eliminate dead reloads.
+
+ math-convex.h: removed.
+ fixinc.convex: new file.
+
+Thu May 6 22:54:43 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * config/we32k/we32k.h (ASM_OUTPUT_ASCII):
+ Cast PTR to unsigned char *.
+ * config/clipper/clix.h (ASM_OUTPUT_ASCII): Likewise.
+
+Thu May 6 20:20:41 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (build_enumerator): Strip any no-op casts off the
+ value before we try to do anything with it.
+
+ * cp-call.c (convert_harshness): Take volatility, in addition to
+ constness, into account when figuring out the penalty for the
+ type under question.
+
+ * cp-decl.c (grokdeclarator): Undo unneeded change of Apr 6 when we
+ returned the type of the local typedef, instead of the typedef itself.
+
+Thu May 6 19:21:34 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * reload1.c (eliminate_regs, case {PRE,POST}_{INC,DEC}): Account
+ for PUSH_ROUNDING.
+
+Thu May 6 18:17:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/sequent.h (DBX_OUTPUT_LBRAC, DBX_OUTPUT_RBRAC):
+ Override the usual definitions.
+
+ * objc/hash.h, objc/objc.h, objc/runtime.h, objc/sarray.h:
+ Use gstddef.h, with doublequotes.
+
+Thu May 6 15:58:18 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: More fixes for IRIX 4.0.1. Rather than replacing
+ [^A-Z]CTRL, replace [^A-Z_]CTRL and [^A-Z]_CTRL. Also patch
+ "//" in elf_abi.h which the sed script breaks.
+
+Thu May 6 13:58:39 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * clix.h: Include "clipper/clipper.h" instead of "clipper.h".
+ * config.sub (os): Add -clix*.
+ * configure (clipper-intergraph-clix): Add clipper/ filename prefixes.
+
+ * c-typeck.c (pointer_diff): Error if op1 is pointer to incomplete
+ type.
+
+ * fixinc.svr4 (sys/varargs.h): Replace.
+
+Thu May 6 11:58:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (forget_old_reloads_1): Accept and ignore 2nd arg.
+ (reload_as_needed): Pass that second arg.
+
+ * c-parse.in: For Objc, expect just 20 conflicts.
+
+ * objc-act.c (OBJC_GEN_METHOD_LABEL): Do use CAT_NAME.
+
+ * config/i386/i386.md (extendsidi2): Use cdq or cltd, not cwtl.
+
+ * configure (i[34]86-*-bsd): Don't use collect2.
+
+ * c-typeck.c (convert_for_assignment): Don't use convert_and_check
+ when handling arithmetic types here.
+
+ * c-common.c (truthvalue_conversion): Turn off Apr 29 change.
+
+Thu May 6 05:44:23 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_equiv_reg): Don't look inside a CONST_DOUBLE;
+ use operand_subword instead.
+
+ * varasm.c (record_constant): Properly make the header of
+ a struct constant_descriptor.
+
+ * function.c (walk_fixup_memory_subreg): Add new arg UNCRITICAL.
+ (fixup_var_refs_insn): Call with UNCRITICAL of 1 when processing
+ REG_NOTES.
+
+ * integrate.c (expand_inline_function): Don't call convert_to_mode
+ unless we need to; some converstions of VOIDmode objects can
+ mess them up.
+
+ * expmed.c (store_split_bit_field): Properly handle VALUE when
+ it is a CONST_DOUBLE.
+
+ * fold-const.c (decode_field_reference): Don't do anything for
+ non-integral fields.
+
+ * cse.c (simplify_binary_operation, simplify_relational_operation):
+ Check for MODE_CC modes, not just CCmode.
+
+Thu May 6 00:54:40 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/class.c, objc/hash.c: Change calloc to __objc_xcalloc.
+ * objc/objects.c (class_create_instance): bzero new instances
+
+ * objc/sendmsg.c (__objc_send_initialize, class_add_method_list):
+ Allow multiple +initialize methods per class.
+
+Wed May 5 21:40:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/sequent.h (LINK_LIBGCC_SPECIAL): #if 0.
+
+ * toplev.c (main): Improve error message in previous change.
+
+Wed May 5 19:36:15 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * combine.c (combinable_i3pat): Do not make REG_DEAD notes for
+ the stack pointer, frame pointer, or arg pointer.
+
+Wed May 5 17:57:30 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/sequent.h (LINK_LIBGCC_SPECIAL): Defined.
+
+Wed May 5 00:01:57 PDT 1993 Ron Guilmette (segfault!rfg@netcom.com)
+
+ * expr.h: Fix comment typos. emit_block_move decl was hidden.
+
+ * toplev.c (main): If C++ for Dwarf requested, warn and turn it off.
+
+Wed May 5 21:48:24 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc-act.c (check_methods_accessible): Handle interface types.
+
+Wed May 5 14:37:42 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c: (optimize_bit_field_compare): Add missing arg
+ to const_binop.
+
+ * reg-stack.c (record_asm_reg_life): Don't abort for asm that
+ doesn't match its constraints.
+
+ * combine.c (num_sign_bit_copies, case SUBREG): Properly compute
+ the number of sign bit copies of SUBREGs of promoted objects.
+
+ * optabs.c (add_equal_note, expand_binop, expand_unop): Make
+ copy of operands for REG_EQUAL note to avoid sharing RTL if
+ called later than RTL generation.
+ (emit_libcall_block, expand_fix): Likewise.
+ * expr.c (convert_move): Likewise, though probably not
+ called after RTL generation.
+
+Wed May 5 14:11:12 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Only quote argument to _IO[A-Z]*, not first item in
+ parentheses. Added patches for IRIX 4.0.1 header files to undo
+ some inappropriate changes.
+
+Wed May 5 11:34:59 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (flag_defer_pop): Initialize to 0.
+ (main): Set it to 1 if optimizing.
+
+Wed May 5 06:38:47 1993 Tom Wood (wood@hal.gnu.ai.mit.edu)
+
+ * configure (i[34]86-next-*, m68k-next-*): collect2 isn't needed.
+
+Tue May 4 14:21:11 1993 Kresten Krab Thorup (krab@xiv.iesd.auc.dk)
+
+ * objc/objc.h, objc/runtime.h: Remove inclusion of memory.h
+ * objc/objc.h, objc/hash.h, objc/runtime.h: Remove inclusion of
+ gstddef.h
+
+ * objc/Makefile (OBJC_H): Add typedstream.h
+
+ * objc/Object.h: Add includes objc/objc.h and objc/typedstreams.h
+ objc/Object.h: Removed `minimal' definitions. Includes objc.h
+ instead.
+ * objc/archive.c: Add include "typedstream.h"
+
+ * objc/typedstream.h: New file. Contents moved from
+ objc/objc-api.h.
+
+ * objc/objc.h (IvarList, Ivar, SymTab, Module, Method,
+ Category, Super, objc_method_description, objc_protocol_list):
+ Data definitions moved to objc/objc-api.h
+
+ * objc/archive.c: Change malloc into __objc_xmalloc
+
+ * objc/objc.h, objc/sendmsg.c: Remove any code for hash lookup
+ * objc/cache.h: File removed
+
+ * objc/objc-api.h (class_create_instance, object_copy,
+ object_dispose): Definitions moved to objc/objects.c
+
+ * objc/objc.h: Remove declarations for library functions.
+ * objc/Object.m (-conformsTo:): Bugfix: Also ask superclasses.
+
+Tue May 4 23:46:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (start_decl): Give an error, not a sorry, when they try
+ to declare a template on a VAR_DECL or a TYPE_DECL.
+
+ * cp-type2.c (process_init_constructor): If we have a VAR_DECL
+ that's static in the class, don't try to use it when we're working
+ on an initializer-list; it has no business being there.
+
+ * cp-cvt.c (convert_pointer_to): Only call get_base_distance et al.
+ on RECORD_TYPEs, not on UNION_TYPEs.
+
+ * cp-decl.c (grokdeclarator): Don't try to divine the name of the
+ incomplete type for a field decl.
+
+Tue May 4 19:55:29 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * combine.c (distribute_notes, REG_DEAD case): Handle hard
+ registers which partially overlap the destination of the insn.
+
+Tue May 4 17:59:10 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (casesi0): Remove incorrect fix from April 23.
+ * pa.h (CASE_DROPS_THROUGH): Define.
+
+Tue May 4 13:22:21 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * t-dgux: Fixed name of link script.
+
+Tue May 4 11:15:40 1993 Steve Chamberlain (sac@wookumz.gnu.ai.mit.edu)
+
+ * sh.md (arith patterns): Rework constraints.
+ * sh.h (ASM_OUTPUT_CASE_LABEL): Ensure jump table is aligned.
+ * sh.c (arith_reg_operand): New constraint. (dump_constants):
+ Force out a constant table if necessary.
+
+Mon May 3 20:41:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (build_array_type): The main variant of an array type
+ should always be an array whose element type is the main variant.
+
+Mon May 3 19:27:04 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * lite.h (CPP_PREDEFINES): Delete -Dsun and -Dunix.
+
+ * combine.c (make_extraction): Move BYTES_BIG_ENDIAN !=
+ BITS_BIG_ENDIAN offset correction after the offset calculation.
+ * elxsi.h, mips.h (BITS_BIG_ENDIAN): Define to zero.
+
+ * c-decl.c (grokdeclarator, ARRAY_REF case): Build array type, and
+ then build the variant array type.
+
+ * sparc.md (floatsitf2): Output fitoq not fitox.
+
+ * i960.md (scc pattterns): Add missing mode to conditional operators.
+ * i960.c (output_function_profiler): Add missing newlines in strings.
+
+ * c-common.c (truthvalue_conversion): Don't optimize subtract of
+ reals when target uses IEEE arithmetic.
+
+ * c-parse.in: Delete cond.awk reference.
+ * cond.awk: Delete file.
+
+Mon May 3 16:58:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Check size properly for wide-string.
+
+ * Makefile.in (TEXI2DVI): New variable.
+ (cpp.dvi, gcc.dvi): Use it.
+
+Mon May 3 16:29:38 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-search.c (lookup_nested_field): Pass complain down as the value
+ for lookup_field's `protect' argument. This will help avoid
+ incorrect visibility errors when we're parsing things.
+
+Mon May 3 21:02:22 1993 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * config/i386/linux.h (FUNCTION_PROFILER, ASM_OUTPUT_ADDR_DIFF_ELT):
+ Remove PIC stuff. We wait for the ELF support in gas and binutils.
+ (LINK_SPEC): Defined for -v.
+
+Mon May 3 06:41:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/Makefile (copy-headers): Put `-' on mkdir command.
+
+Sun May 2 09:28:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (macroexpand): Treat `foo ( )' as 0 args if foo wants 0 args.
+
+Sun May 2 07:37:45 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (eliminate_regs, case SUBREG): Leave the SUBREG when
+ the inner object is a pseudo on machines that extend byte
+ loads (to be consistent with reload.c).
+ * reload.c (push_reload): Allow non-paradoxical SUBREGs of MEM
+ on machines that extend byte loads.
+
+Sun May 2 08:57:33 1993 Michael Meissner (meissner@osf.org)
+
+ * real.c (EDOM, ERANGE): Do not define since errno.h was
+ previously included.
+
+Sun May 2 08:28:15 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (record_jump_cond): Use mode of op0 or op1, not MODE,
+ when testing for narrowing or widening subregs.
+
+Sat May 1 10:10:44 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/nextstep.h (WORD_SWITCH_TAKES_ARG): Fix typo.
+
+ * cse.c (simplify_binary_operation): Reject CCmode in A & (~A) -> 0.
+
+ * cccp.c (macroexpand): If just whitespace between parens,
+ treat it as one argument.
+
+Sat May 1 11:02:22 1993 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * Makefile.in (libobjc.a): Depend on $(USE_COLLECT2)
+
+ * objc/Makefile (xforward): Add `else true;' for Ultrix 4.2 make.
+
+Sat May 1 06:49:51 1993 Tom Wood (wood@next.com)
+
+ * objc-act.c (build_ivar_reference): Warn when a class method
+ refers to an instance variable.
+
+Fri Apr 30 22:37:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (yylex): Avoid invalid shift for erroneous empty char const.
+
+ * combine.c (subst, case COMPARE): Use SELECT_CC_MODE even if HAVE_CC0.
+
+Fri Apr 30 12:40:23 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * configure, install.texi: Updated -local configuration option.
+
+Fri Apr 30 15:20:10 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.h (LONG_DOUBLE_TYPE_SIZE): Ifdef out.
+
+Fri Apr 30 14:53:43 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * config.sub: Fix syntax error.
+
+Fri Apr 30 12:00:24 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Fix #endif comments for Ultrix 4.2.
+
+Fri Apr 30 10:45:53 1993 Steve Chamberlain (sac@wookumz.gnu.ai.mit.edu)
+
+ * sh.c, sh.h, sh.md, t-sh, xm-sh.h: New files for Hitachi SH.
+ * configure (sh-hitachi-hms): New configuration.
+ * config.sub: Accept sh, hms.
+
+Thu Apr 29 22:20:20 1993 Jeff Law (law@kahlua.cs.utah.edu)
+
+ * cse.c (cse_insn): Reset the INSN_CODE for conditional
+ or computed jumps which have been converted into simplejumps.
+
+Thu Apr 29 14:30:25 PDT 1993 Ron Guilmette (rfg@netcom.com)
+
+ * c-common.c (truthvalue_conversion): Specific error message when the
+ "truthvalue" of a struct, union, or array type operand is needed.
+
+Thu Apr 29 21:42:26 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Thu Apr 29 12:27:59 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): When complaining about a field having
+ an incomplete type, tell them what type it was, and what template
+ instantiation was involved, if we can.
+
+ Wed Apr 28 11:50:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokfndecl): New argument `publicp', to say if we
+ should set TREE_PUBLIC on the node for the caller.
+ (grokfndecl): Pass the new arg down appropriately.
+
+ * cp-pt.c (instantiate_template): If it's a static member fn, revert
+ it into a FUNCTION_TYPE and chop off the this pointer.
+ * cp-decl.c (revert_static_member_fn): Make non-static.
+ * cp-tree.h (revert_static_member_fn): Add prototype.
+
+ * cp-lex.c (reinit_parse_for_block): Bump the size of BUF for the
+ pre-parsed line directive to 16, so we can hold the max # of digits
+ in a signed int (10).
+
+Thu Apr 29 19:26:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/mips/mips.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
+ Definitions put into #if 0.
+
+ * c-typeck.c (build_conditional_expr): Do default_conversion
+ before testing for ERROR_MARK.
+
+ * cse.c (simplify_binary_operation): Don't return const0_rtx
+ or constm1_rtx for IOR, AND, XOR in CCmode.
+ (simplify_relational_operation): Don't do anything if op0 has CCmode.
+
+ * Makefile.in (install-normal): Move install-libgcc
+ after $(INSTALL_HEADERS).
+
+Thu Apr 29 17:09:59 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * gcc.c (is_directory): Renamed from is_linker_dir and added
+ linker argument. If not checking linker directory, check whether
+ directory exists only if SMALL_ARG_MAX not defined.
+ (putenv_from_prefixes): Don't add directories for which
+ is_directory returns 0.
+ * config/i386/xm-sco.h (SMALL_ARG_MAX): Define.
+
+Thu Apr 29 15:30:09 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (shadd for reload): Fix constraint to match the output
+ pattern.
+
+Thu Apr 29 15:05:05 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * we32k.md (float_extend:DF recognizer): Add missing arg to
+ output_asm_insn.
+ (float_truncate:SF recognizer): Likewise.
+
+Thu Apr 29 10:18:36 1993 Kresten Krab Thorup (krab@wombat.gnu.ai.mit.edu)
+
+ * objc/xforward.c: File renamed from objc/_forward.c.
+ * objc/Makefile: Updated accordingly.
+
+Thu Apr 29 12:10:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * real.c: Deleted casts to void.
+
+ * real.c (emdnorm, eifrac, euifrac, mtherr): Replace
+ unconditional `pedwarn' by `warning' conditional on `extra_warnings'.
+ (toe24, todec): Use ERANGE to flag overflow on (non-IEEE)
+ machines that do not have infinity.
+ (etoasc): Check explicitly for overflow of leading decimal digit.
+ (asctoeg): Test for, and immediately reject, out-of-bounds
+ decimal exponent inputs.
+ (at top level): Include errno.h; reference errno,
+ warning, extra_warnings.
+
+ * Makefile.in (tooldir): Use exec_prefix, not prefix.
+ (gcc.o): Likewise for TOOLDIR_BASE_PREFIX.
+
+ * config/convex/convex.c (output_call):
+ Add missing arg to output_asm_insn.
+
+ * gcc.c (default_compilers): Inhibit -D__OPTIMIZE__ if -O0.
+
+ * config/m68k/m68k.md (movxf): Add pattern for soft-float moves.
+
+ * config/m68k/m68k.c (output_move_double): Support XFmode moves.
+
+Thu Apr 29 00:09:34 1993 Kresten Krab Thorup (krab@wombat.gnu.ai.mit.edu)
+
+ * objc/init.c (__objc_exec_class): Added check for selectors = 0
+
+ Undid the following changes:
+
+ * objc/_forward.c: File removed
+ * objc/argframe.h, objc/af-sparc.h: New files
+ * objc/Makefile (ARGFRAME_H): New macro
+ * objc/Makefile (_forward, fflags): Targets removed
+ * objc/msgsend.c (objc_msg_sendv): Changed to use argframe macros
+ * objc/Object.[hm], objc/runtime.h, objc/objc-api.h,
+ objc/msgsend.c: Changed type name arglist_t to af_frame.
+
+Thu Apr 29 00:04:11 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (CONDITIONAL_REGISTER_USAGE): %r19 is fixed
+ if flag_pic is true.
+ * pa.c (emit_move_sequence): After legitimizing a PIC
+ address make sure to copy it from the temporary register
+ into the final destination.
+
+Wed Apr 28 18:15:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (HARD_REGNO_MODE_OK): Allow 1.0 FP registers to hold modes
+ which are smaller than 4 bytes.
+
+Wed Apr 28 16:40:38 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * Makefile.in (distdir): Copy subdirectories of config/ too, except RCS
+
+Wed Apr 28 16:19:18 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * Makefile.in (extraclean): Delete *.z as well.
+
+Wed Apr 28 15:10:33 1993 Michael Meissner (meissner@osf.org)
+
+ * mips/mips.h (MIPS_VERSION): Set Meissner version # to 40.
+ (OPTIMIZATION_OPTIONS): Set -mgpopt if -O other than -O0.
+ (CC1_SPEC): Don't pass -mgpopt here.
+
+ * mips/osfrose.h (CC1_SPEC): Don't pass -mgpopt here.
+
+ * mips/osfrose.h, i386/osfrose.h (ASM_IDENTIFY_LANGUAGE): If the
+ language is C, do not put anything out, to not confuse kernel
+ debuggers and the like.
+
+Wed Apr 28 07:31:20 1993 Kresten Krab Thorup (krab@wombat.gnu.ai.mit.edu)
+
+ * objc/argframe.h (__AF_ARG_ADDR): Removed .curr_off from
+ definition. (__AF_ARG_ADVANCE): Removed __AF_CUM_OFF around CUM.
+
+ * objc/runtime.h (_objc_error): Declaration added.
+
+Wed Apr 28 06:17:02 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-lex.c, cp-lex.c (yylex): Don't use unsigned comparison
+ to also check for < 0; do it explicitly.
+ * combine.c (force_to_mode, simplify_comparison): Cast to
+ unsiged HOST_WIDE_INT instead of unsigned int.
+ * cse.c (simplify_binary_operation, case SMAX): Likewise.
+ * expr.c (emit_block_move): Likewise.
+
+ * convert.c (convert_to_integer): When we want to return zero,
+ be sure we honor any side-effects in our operand.
+
+Tue Apr 27 22:25:29 1993 Kresten Krab Thorup (krab@xiv.iesd.auc.dk)
+
+ * objc/_forward.c: File removed
+ * objc/argframe.h, objc/af-sparc.h: New files
+ * objc/Makefile (ARGFRAME_H): New macro
+ * objc/Makefile (_forward, fflags): Targets removed
+ * objc/msgsend.c (objc_msg_sendv): Changed to use argframe macros
+ * objc/Object.[hm], objc/runtime.h, objc/objc-api.h,
+ * objc/msgsend.c: Changed type name arglist_t to af_frame.
+
+Tue Apr 27 16:29:45 1993 Tom Wood (wood@next.com)
+
+ * nextstep.h (NeXT_OBJC, STANDARD_EXEC_PREFIX): Delete.
+ * i386/next.h: Use gas.h instead of bsd.h.
+ (ASM_GENERATE_INTERNAL_LABEL): Define.
+
+Tue Apr 27 12:20:08 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * reorg.c (dbr_schedule): Do not run the delay slot scheduling
+ pass if the current function has no insns other than the prologue
+ and epilogue.
+
+ * pa.c (hppa_expand_epilogue): Emit a "blockage" insn
+ to keep the stack and frame pointer adjustments at the
+ end of the epilogue.
+ * pa.md (blockage): New pattern.
+
+Tue Apr 27 10:59:33 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * gcc.c (DEFAULT_WORD_SWITCH_TAKES_ARG): New macro. Like old
+ WORD_SWITCH_TAKES_ARG, but added idirafter, iprefix, iwithprefix.
+ (WORD_SWITCH_TAKES_ARG): Use DEFAULT_WORD_SWITCH_TAKES_ARG.
+ * config/i386/osfrose.h, config/m68k/sun2.h, config/m68k/sun3.h,
+ config/mips/osfrose.h, config/sparc/sparc.h, config/svr4.h,
+ config/nextstep.h (WORD_SWITCH_TAKES_ARG): Rewrote to use
+ DEFAULT_WORD_SWITCH_TAKES_ARG.
+
+Tue Apr 27 07:38:47 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu
+
+ * Makefile.in (stmp-int-hdrs): No longer depends on gsyslimits.h.
+ Don't make include/syslimits.h here since we want to test the
+ limits.h made by fixincludes, not by the later part of this rule.
+ (stmp-fixinc): Depends on gsyslimits.h.
+ Make include/syslimits.h here.
+
+ * alpha.c (alpha_emit_set_const, output_{pro,epi}log): Generate
+ insns to load constants into a register using a method that works
+ on a 32-bit machine as well.
+
+Tue Apr 27 09:26:04 1993 CET Kresten Krab Thorup (krab@xiv.iesd.auc.dk)
+
+ * objc/Makefile (fflags): -x test changed to -s test
+
+ * objc/Makefile: CFLAGS changed to GCC_CFLAGS
+
+ * objc/Object.h: No longer includes objc.h Instead, a minimal set
+ of definitions is provided here.
+
+ * objc/Object.h, Object.m, cache.h, class.c, init.c, misc.c,
+ objc-api.h, objc.h, objects.c, sendmasg.c: Usage of Class_t and
+ MetaClass_t eliminated. Now using Class* and MetaClass* only.
+
+ * objc/objc.h: Does no longer include stdio.h and stdarg.h. Minimal
+ set of definition, which is provided by Object.h is placed in
+ preprocessor conditionals __object_INCLUDE_GNU. Definitions of
+ MetaClass_t and Class_t removed. Class and MetaClass are no
+ longer defines, but typedefs.
+
+Tue Apr 27 01:40:50 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Mon Apr 26 20:45:07 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-init.c (expand_recursive_init_1): Make sure we use the binfo's
+ version of a binfo, rather than someone elses, as the second
+ parameter to build_virtual_init must be the exact binfo we want so
+ that it may get the right vtable.
+
+ Mon Apr 26 12:58:23 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-type2.c (my_friendly_abort): Rephrase to try to help encourage
+ people to send bug reports in, and not just say, "Hey, the compiler
+ told me to report an internal error. Bye!".
+
+ * cp-decl.c (grokdeclarator): Forbid declaring an array of references.
+
+ * cp-parse.y (unary_expr): Forbid doing sizeof on a function.
+
+ * cp-typeck.c (build_unary_op): Pedwarn if they try to do pre/post
+ increment/decrement on an enum.
+
+ * cp-method.c (build_opfncall): Reorganize things to properly look
+ for a postfix operator ++/--, without taking the fastest way out of
+ the search, which could lose.
+
+ * cp-search.c (compute_visibility): Check for a member fn
+ manipulating its own members before checking the basetype_path.
+
+ * cp-pt.c (lookup_template_class): Instead of dying in the case
+ where D1 has a local value but no global or class value, return an
+ error_mark_node.
+
+ * cp-pt.c (lookup_template_class): Don't assert if IN_DECL is null,
+ since we pass it down that way from the parser.
+ (coerce_template_parms): Likewise.
+ * cp-parse.y (template_type): Let template_type_seen_before_scope be
+ an error_mark if necessary, so we can intelligently handle things
+ later rather than give useless syntax errors.
+
+ Sat Apr 24 17:12:17 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-pt.c (tsubst): When we go back for a second pass, make sure we
+ start over with the list of methods. Fixes problem introduce on
+ Sat Mar 20 12:29:37 1993.
+
+Mon Apr 26 18:48:18 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold): Signedness matters for comparisons and
+ right shifts.
+
+ * xm-alpha.h (ONLY_INT_FIELD): Define again; this time say why.
+
+ * tree.h (INTEGRAL_TYPE_P, FLOAT_TYPE_P): New macros.
+ * fold-const.c: Use INTEGRAL_TYPE_P and FLOAT_TYPE_P.
+
+ * protoize.c (other_variable_style_function): Properly test for
+ the presence of the string "...".
+
+ * c-decl.c (pushdecl): Don't make a copy of type of error_mark_node.
+
+Mon Apr 26 18:15:03 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa-hpux.h (LINK_LIBGCC_SPECIAL): Delete.
+ (RELATIVE_PREFIX_NOT_LINKDIR): Delete.
+ * pa-ghpux.h, pa-hpux7.h, pa-gux7.h: Likewise.
+
+Mon Apr 26 16:57:03 1993 Michael Meissner (meissner@osf.org)
+
+ * mips-tdump.c (CODE_MASK): Define if running on an alpha instead
+ of a MIPS.
+ (MIPS_IS_STAB): Ditto.
+ (MIPS_MARK_STAB): Ditto.
+ (MIPS_UNMARK_STAB): Ditto.
+ (tfile): New global, holds result of -t option, to skip global
+ header.
+ (malloc, calloc, realloc, free): Don't declare on alpha.
+ (print_sym_hdr): Make sure all arguments are properly cast to int
+ or long, depending on whether the format is %ld or %d.
+ (read_tfile): Don't look at magic number, instead use -t option to
+ determine whether to skip the global header or not.
+ (main): Process -t option.
+
+Mon Apr 26 17:47:10 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * Objective C portability cleanup
+ * objc/Object.c (-hash, -error): Cast changed to size_t
+ * objc/archive.c, objc/misc.c, objc/sendmsg: Argument to strlen
+ casted to char* everywhere.
+ * objc/class.c (__objc_resolve_class_links): Unused variable
+ class1 removed.
+ * objc/class.c (class_pose_as): Unused variable node removed.
+ * objc/hash.c, objc/init.c: extra parenthesis around assignment
+ conditionals.
+ * objc/Makefile, objc/hash.h, objc/runtime, objc/sarray.h: IN_OBJC
+ changed to IN_GCC.
+ * objc/init.c: Unused local variable object_class removed. Cast of
+ pointer to int changed to size_t.
+ * objc/list.h (list_free): No longer declared inline.
+ * objc/objc-api.h, objc-runtime.h: Now includes memory.h.
+ * objc/objc.h: Added declarations for malloc and friends, IN_OBJC
+ changed to IN_GCC. Type of info member of objc_class changed to
+ unsigned long.
+ * objc/objects.c, objc/api.h, objc/sarray.h: Changed usage of
+ bcopy to memcpy.
+ * objc/sendmsg (__objc_print_dtable_stats): Returntype changed to
+ void.
+
+Mon Apr 26 07:55:03 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * sparc.h (ASM_OUTPUT_LONG_DOUBLE): New macro.
+ * sysv4.h (ASM_OUTPUT_LONG_DOUBLE): Likewise.
+
+Mon Apr 26 08:45:18 1993 Kresten Krab Thorup (krab at xiv.iesd.auc.dk)
+
+ * objc/hash.h, objc/init.c, objc/objc.h, objc/sarray.c,
+ objc/sarray.h, objc/selector.c, objc/sendmsg.c: Change unsigned
+ int to size_t when casting pointer type to integer.
+ * objc/sarray.h (struct soffset): Changed to add up to sizeof
+ (size_t) in stead of sizeof (unsigned int).
+ * objc/hash.h: Include stddef.h
+ * objc/_forward.h: int changed to size_t.
+
+ * objc/Object.m, objc/archive.c, objc-api.h: Take out archiving
+ support for alpha.
+
+ * objc/Makefile: (IN_OBJC): new #define used to control inclusion
+ of gstdarg or stdarg for the runtime. objc/objc.h,
+ objc/runtime.h, objc/sarray.h: Updated to use the above.
+
+Sun Apr 25 21:50:16 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (yylex): Re-incorporate changes to redo converting
+ float values to desired type.
+
+Sun Apr 25 18:11:24 1993 Ron Guilmette (rfg@netcom.com)
+
+ * rtl.h (NOTE_INSN_FUNCTION_BEG): Make non-zero.
+ * rtl.c (note_insn_name): Re-order for above.
+
+ * dwarfout.c (output_decl): Check for DECL_INITIAL == NULL_TREE
+ rather than DECL_EXTERNAL != 0 when trying to see if we have a
+ mere function declaration rather than a function definition.
+ (dwarfout_file_scope_decl): Likewise. Also, don't bother checking
+ TREE_USED for file-scope functions, since it isn't 100% accurate
+ until the end of compilation anyway.
+
+Sun Apr 25 17:07:44 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (mem_aligned_8): Delete ifdefed out code. Add support
+ for TARGET_UNALIGNED_DOUBLES.
+ * sparc.h (TARGET_HOPE_ALIGN, TARGET_FORCE_ALIGN): Delete.
+ (TARGET_UNALIGNED_DOUBLES): Define.
+ (TARGET_SWITCHES): Delete hope-align, force-align. Add
+ unaligned-doubles and no-unaligned-doubles.
+ (ROUND_REG): Delete.
+ (FIRST_PARM_OFFSET, FUNCTION_ARG_ADVANCE, FUNCTION_ARG,
+ FUNCTION_INCOMING_ARG, FUNCTION_ARG_PARTIAL_NREGS,
+ FUNCTION_ARG_BOUNDARY): Delete force-align support.
+ (LONG_DOUBLE_TYPE_SIZE): Define to 128.
+
+ * sched.c (create_reg_dead_note): Rewrite so as to conserve
+ registers killed not number of REG_DEAD notes.
+ (schedule_block): Change comments about dead_notes variable.
+
+ * sparc.h (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Make %f0/%f1
+ the last float registers allocated.
+
+ * sparc.c (output_load_address, output_size_for_block_move,
+ output_block_move): Ifdef out.
+ * sparc.md (movstrsi): Comment out.
+
+ * sparc.c (output_function_epilogue): Emit 'nop' instead of
+ 'sub %sp,-0,%sp' when the frame is empty.
+ * sparc.md (movdf): Add a define split.
+
+ * expmed.c (extract_fixed_bit_field): Adjust BITPOS so that it
+ fits inside MODE before adjusting OFFSET to get an aligned address.
+
+Sun Apr 25 06:28:56 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * varasm.c (make_decl_rtl): If a variable has an asm operand that
+ refers to, e.g., fp, make a distinct RTL for it.
+
+ * c-decl.c (init_decl_processing): Last arg to __builtin_apply
+ is size_t, not int.
+
+ * c-lex.c (yylex): Don't warn about floating point out of
+ range if target floating-point format is IEEE.
+
+ * romp.h (SIZE_TYPE): Deleted.
+
+Sat Apr 24 16:46:41 1993 Stephen L. Moshier (moshier@world.std.com)
+
+ * c-lex.c (forget_protocol_qualifiers): Cast enums to ints before
+ comparing.
+
+Sat Apr 24 13:08:56 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (INITIALIZE_TRAMPOLINE): Pass a register operand, not
+ a memory operand to "cacheflush".
+ * pa.md (cacheflush): Rework pattern and output template to avoid
+ using REG+D addressing.
+
+Sat Apr 24 11:15:02 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (mark_used_regs): Use proper type for {all,some}_needed.
+ * cse.c (invalidate): Likewise for in_table.
+
+ * tree.h (build_binary_op, build_indirect_ref, build_unary_op):
+ Delete declarations; these are part of the front ends.
+
+ * objc-act.c (HASHFUNCTION): Cast pointers to widest int type.
+
+Sat Apr 24 02:48:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+
+ Fri Apr 23 11:08:25 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c, cp-class.c, cp-decl.c, cp-except.c, cp-init.c,
+ cp-parse.y, cp-pt.c, cp-search.c, cp-type2.c, cp-typeck.c,
+ cp-xref.c: Fix many bugs in types of fn args & such.
+
+ * cp-decl.c (grokdeclarator): When dealing with a class-local
+ typedef, only call poplevel when the current_binding_level isn't
+ what we marked as being the local_binding_level.
+
+ * cp-decl.c (grokdeclarator): Call pushdecl_class_level, not
+ pushtag, to put a class-local typedef into its proper scope.
+ Also disable the warning about a typedef hiding the previous
+ one, since the cp-class.c change now diagnoses that problem.
+ * cp-class.c (delete_duplicate_fields_1): Also check for duplicated
+ type names.
+
+ * cp-lex.c (yyerror): Delete extern decl of input_redirected.
+
+ * cp-parse.y (primary): If the global value for a scoped identifier
+ ends up being an ADDR_EXPR, call assemble_extern on its argument,
+ not on the ADDR_EXPR itself. Fixes the IMPORT problem on the PA.
+
+ * cp-typeck.c (build_modify_expr_1): Put in missing `else'.
+
+ Wed Oct 7 16:00:29 1992 Chip Salzenberg (chip@tct.com)
+
+ Change propagated from the C front-end.
+ * cp-decl.c (shadow_tag): Use pedwarn for useless keyword.
+
+ Wed Oct 7 17:51:36 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * cp-type2.c (digest_init): Handle union initializers which are
+ "raw" constructors.
+ (process_init_constructor): Renamed `erred' to `erroneous' (as in
+ the C front end).
+ (process_init_constructor): Added code to handle union initializers.
+
+ Fri Oct 23 16:29:45 1992 Chip Salzenberg (chip@tct.com)
+
+ Change propagated from the C front-end.
+ * c-typeck.c (process_init_constructor): When initializing a union,
+ handle the case of an empty init list.
+
+ Tue Dec 1 21:35:36 1992 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-call.c (convert_harshness): Add support for ellipsis matching
+ when dealing with function pointers (or references) in argument
+ lists.
+ (rank_for_overload): Ditto.
+ (compute_conversion_costs): Ditto.
+ (*_HARSHNESS): Ditto
+ * cp-class.h (struct candidate): Ditto.
+
+ Mon Jan 4 11:46:19 1993 Chip Salzenberg (chip@tct.com)
+
+ Changes propagated from the C front-end.
+ * cp-typeck.c (c_sizeof, c_sizeof_nowarn, c_size_in_bytes):
+ Call force_fit_type with end result.
+
+ Sat Jan 30 01:23:22 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-class.c (finish_struct): See to that static members whose
+ type is the class they're declared in gets a correct mode. This
+ is a completion of the Jan 23rd change.
+
+ Mon Feb 1 09:40:11 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-search.c (compute_visibility): Add support for anonymous
+ unions nested in classes.
+
+ Tue Feb 2 16:06:10 1993 Chip Salzenberg (chip@tct.com)
+
+ Eliminate signed integer overflow in specbits:
+ * cp-lex.h (RID_BIT_TYPE): New typedef for RID_... bits.
+ (RIDBIT): New convenience macro for RID_... bits.
+ * cp-decl.c (grokvardecl, grokdeclarator): Declare specbits
+ to be RID_BIT_TYPE. Use RIDBIT instead of "1<<RID_...".
+
+ Mon Feb 15 10:45:12 1993 Niklas Hallqvist (niklas@della.appli.se)
+
+ * cp-method.c (build_typename_overload): Identifiers built by this
+ function needs the IDENTIFIER_OPNAME_P slot set.
+
+ Wed Apr 21 11:25:15 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (lookup_nested_type): When dealing with types that are
+ local to a nested class's member fn, make sure to hand back a TYPE_DECL
+ instead of a RECORD_TYPE.
+
+ Tue Apr 20 20:17:42 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-spew.c (yylex): Add `typespec (ID::*ID)[' and `typespec
+ (ID::*ID)(' to list of things that parse as declarators.
+
+ Mon Apr 19 15:05:21 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (report_ambiguous_mi_virtuals): If is never an error
+ to have same named class members at declaration time, ambiguities
+ are now caught at use sights.
+
+ Fri Apr 16 13:59:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-method.c (build_opfncall): If they didn't declare a postfix
+ operator ++ or --, then fall back and use the prefix one.
+ * cp-decl.c (grokfndecl): Forbid an operator ++/-- with its second
+ argument as anything other than an int.
+
+ * cp-lex.c (set_yydebug): Add extern decl of yydebug.
+
+ Fix enums in nested classes.
+ * cp-search.c (lookup_nested_field): New argument `complain', to
+ control if we should emit an error about assignment to a member of
+ an enclosing class or not. Also, if ID ends up being an error_mark,
+ set it to a NULL so we don't try to do nasty things later---better
+ to assume we didn't find anything at all.
+ * cp-tree.h (lookup_nested_field): Add new arg to prototype.
+ * cp-decl.c (lookup_name): Pass if prefer_type is -2 into
+ lookup_nested_field, since there are cases (e.g., nested enums) when
+ we still need to look here.
+ * cp-lex.c (do_identifier): Pass complain arg as 1 into
+ lookup_nested_field.
+
+ Thu Apr 15 11:23:18 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-search.c (report_ambiguous_mi_virtuals): Pass pointers to
+ arrays, not pointers to first elements in the array in call to
+ rank_mi_virtuals.
+
+ * cp-lex.c (do_identifier), cp-parse.y: move
+ undeclared_variable_notice to where it is really used.
+
+ * cp-lex.c (do_identifier): Improve error message.
+
+ Tue Apr 13 17:04:12 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (default_conversion): OFFSET_REFs may not always have
+ a TREE_CODE (TREE_TYPE (x)) of OFFSET_TYPE, but they always will
+ have a TREE_CODE (x) of OFFSET_REF.
+
+ Fri Apr 9 20:26:32 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-lex.c (real_yylex): Use MAP_CHARACTER translate incoming
+ character set. See c-lex.c ChangeLog entry for more details.
+
+ Thu Apr 8 15:30:58 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-search.c (lookup_field): When looking something up, if
+ want_type is set, and what we find is ambiguous make sure we set
+ errstr to 0, even when rval is already NULL_TREE.
+
+ Thu Apr 8 11:40:16 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (lookup_name_current_level): Add prototype.
+
+ Tue Apr 6 13:36:00 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): When we see `typedef enum ...' inside
+ a class, properly grok the tag instead of giving two bogus errors.
+ (lookup_name_current_level): Don't make it static, and delete its
+ prototype.
+
+ * cp-lex.h (enum rid): Move RID_UNUSED1 to the end, so that RID_AUTO
+ will be 30, not 31. We're at the limit, the next time a new rid is
+ added to this, we have to re-implement it to avoid integer overflows.
+
+ Sat Apr 3 12:16:23 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (emit_base_init): init can be NULL_TREE when dealing
+ with arrays, guard against it.
+
+Fri Apr 23 19:33:58 1993 Tor Egge (tegge@pvv.unit.no)
+
+ * reorg.c (relax_delay_slots): Make sure target_label is set.
+
+Fri Apr 23 19:19:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (shadow_tag_warned): Let warned have three values, so that
+ a mere warning doesn't prevent a pedwarn. Don't skip the error call
+ at the end on accounted of warned.
+
+ * c-decl.c (push_parm_decl): Turn off warning when parameter
+ shadows typedef.
+
+Fri Apr 23 16:41:54 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (casesi0): Indicate that the PC is set to the
+ out-of-range label if the index is not valid.
+
+Fri Apr 23 14:00:48 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * i386/svr3dbx.h, i386/svr3gas.h: Reflect new directory structure.
+ * i386/t-svr3dbx: New file to install the required ld ifiles
+ automatically.
+ * configure (i[34]86-...): Use t-svr3dbx if configured --with-stabs.
+
+Fri Apr 23 13:53:31 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * reload1.c (emit_reload_insns): Advance following_insn if it is a
+ clobber, not if the next insn is a clobber.
+
+Fri Apr 23 13:44:12 1993 Joey Pruett (joey@tessi.com)
+
+ * protoize.c (scan_for_missed_items): Add keywords: else, do, case.
+
+Fri Apr 23 06:52:25 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case REALPART_EXPR, IMAGPART_EXPR): Avoid using
+ build_{unary,binary}_op since the calling sequences depend on
+ the front-end.
+ * expr.c (expand_expr, case OFFSET_REF): Likewise.
+ * convert.c (convert_to_integer, convert_to_complex): Likewise.
+
+ * c-typeck.c (readonly_warning): Correctly check for assignments
+ to iterators.
+
+Thu Apr 22 07:44:40 1993 Tom Wood (wood@next.com)
+
+ * c-lang.c, objc-act.c (maybe_objc_comptypes): Undo the previous
+ change and make the undecided return value from 2 to -1 to avoid
+ confusion with the values used by comptypes.
+ (objc_comptypes): Ditto. When two record types are being
+ compared, and none of the typed object cases applies, return -1 to
+ indicate no decision.
+ * c-typeck.c (comptypes): Only pass along a known return value
+ from maybe_objc_comptype.
+ (comp_target_types): If maybe_objc_comptypes computed a known
+ answer, return it. Don't recurse for Objective-C.
+
+ * nextstep.h (ASM_FILE_START): Don't output a .file directive.
+ That's used by the assembler for error reporting.
+
+Wed Apr 21 17:45:50 1993 Ron Guilmette (rfg at netcom.com)
+
+ * dwarfout.c (location_or_const_value_attribute): Fixed to use
+ DECL_INCOMING_RTL for PARM_DECLs only when DECL_RTL isn't usable,
+ and even then, only when it actually points to the right place.
+
+ * integrate.c (integrate_parm_decls): Copy the DECL_ARG_TYPE value
+ from the PARM_DECL being cloned into the DECL_ARG_TYPE field of the
+ clone.
+
+ * dwarf.h (AT_lo_user, AT_hi_user): Fix defined values to be correct
+ according to final DWARF V1 spec.
+
+Tue Apr 20 20:32:57 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * function.c (assign_parms): Use mode of type, not BLKmode.
+
+Tue Apr 20 18:37:12 1993 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * configure (rs6000-ibm-aix*): Put cases in proper order.
+
+Mon Apr 19 15:27:16 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * calls.c (expand_call): New FUNCTION_ARG_CALLEE_COPIES macro.
+ * function.c (assign_parms): Ditto.
+
+Sat Apr 17 17:44:59 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.h (FUNCTION_ARG_PADDING): Add parens to make clearer.
+ (MUST_PASS_IN_STACK): Don't allow machine to override (none
+ currently do).
+ Don't force in stack if wrong padding when padding isn't needed.
+
+ * basic-block.h (reg_basic_block): Now int *, not short *.
+ * flow.c (uid_block_number): Likewise.
+ (flow_analysis): Allocate uid_block_number and reg_basic_block
+ as array of ints.
+ * combine.c (reg_last_set_label, reg_last_set_table_tick, label_tick):
+ Use int, not short, for counting labels.
+ (combine_instructions): Allocate these vars as arrays of ints.
+ * jump.c (same_regs): Now arrays of ints.
+ (thread_jumps): all_reset also array of ints, and allocate as ints.
+ * reg-stack.c (block_number, BLOCK_NUM, reg_to_stack): Use ints,
+ not shorts to count blocks.
+
+Sat Apr 17 03:27:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in (unary_expr): Delete the alternate REALPART and IMAGPART
+ rules with explicit parens. Make the simple REALPART and IMAGPART
+ rules contain cast_expr.
+
+ * c-decl.c (finish_struct): Promote unsigned bitfield to signed int
+ if the field isn't as wide as an int.
+
+Fri Apr 16 21:42:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * calls.c (expand_call): Check warn_inline before complaining about
+ not being able to inline a fn declared inline.
+ * flags.h (warn_inline): Add extern decl.
+
+Fri Apr 16 20:27:57 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (blockage): Use unspec_volatile #1; #0 is IMB.
+
+ * local-alloc.c (qty_n_refs): Make int, like reg_n_refs.
+ (qty_first_reg, reg_next_in_qty): Make int, not short.
+ (local_alloc): Allocate these as arrays of ints.
+ (block_alloc, qty_compare_1): qty_order is now array of ints.
+
+Fri Apr 16 20:27:16 1993 Tom Wood (wood@next.com)
+
+ * a29k.h (FUNCTION_VALUE_REGNO_P): True only for the first register
+ in the group.
+
+ * alpha.md, romp.md, rs6000.md (untyped_call, blockage): New patterns.
+
+Fri Apr 16 17:53:21 1993 Ron Guilmette (rfg at netcom.com)
+
+ * reload1.c (last_spill_reg): Add missing "int".
+
+Fri Apr 16 16:55:16 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * Makefile.in (objc-headers): Ensure objc dir exists.
+
+Fri Apr 16 16:40:49 1993 Michael Meissner (meissner@osf.org)
+
+ * mips/mips.h (MIPS_VERSION): Set Meissner revision number to 39.
+ (SELECT_SECTION): Do not put items with relocation into .rdata.
+ (INITIALIZE_TRAMPOLINE, TRANSFER_FROM_TRAMPOLINE): Allow these
+ macros to be overidden.
+
+ * mips/iris3.h (INITIALIZE_TRAMPOLINE, TRANSFER_FROM_TRAMPOLINE):
+ Provide versions of these that does not rely on using mprotect.
+
+ * mips/t-mips, mips/t-osfrose, mips/t-ultrix, i386/t-osfrose:
+ Delete extra dependencies.
+
+ * i386/osfrose.h (SELECT_SECTION): Do not put items with
+ relocation into .text if -pic-lib.
+
+Fri Apr 16 01:09:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/xm-isc.h (REAL_VALUE_ATOF): Define only if
+ not REAL_ARITHMETIC.
+
+Thu Apr 15 07:25:00 1993 Tom Wood (wood@next.com)
+
+ * objc-act.c (IS_ID, IS_PROTOCOL_QUALIFIED_ID, IS_SUPER): New type
+ checking macros.
+ (objc_comptypes, build_message_expr, gen_declspecs): Use them.
+
+ * objc-act.c (gen_declarator): Don't use strcpy's return value.
+
+ * objc-act.c (build_message_expr): Allow any type that matches
+ objc_class_type.
+
+ * objc-act.c (get_class_reference): We already have a name.
+
+ * objc-act.c (receiver_is_class_object): Use STRIP_NOPS. Search
+ cls_ref_chain.
+
+Thu Apr 15 07:25:00 1993 Michael Meissner (meissner@osf.org)
+
+ * objc-act.c (build_objc_string): Use TREE_SET_CODE instead of
+ assigning to TREE_CODE.
+ (build_objc_string_object): Ditto.
+
+Wed Apr 14 17:51:50 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * clipper.h (FRAME_POINTER_REQUIRED, FRAME_POINTER_OFFSET):
+ Frame pointer is no longer required for leaf functions.
+ (OPTIMIZATION_OPTIONS): Define.
+
+ * clipper.c (clipper_frame_size): New function.
+ (output_function_pro/epilogue): Support omitting frame pointer.
+
+ * clipper.md (cmpsi): Use `cmpq' for small immediate values.
+ (addsi3): Use `loada' for `reg1 = reg2 + immed'.
+
+Wed Apr 14 15:23:24 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * print-tree.c (print_node): Use (struct rtx_def *), not (rtx).
+
+Wed Apr 14 13:46:36 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i860/i860.md (floatsidf2): Add missing arg to REAL_VALUE_ATOF.
+
+ * c-parse.in: Improve error message for sym undeclared at top level.
+
+Wed Apr 14 12:06:08 1993 Tom Wood (wood@next.com)
+
+ * c-lang.c, objc-act.c (maybe_objc_comptypes): Return 0
+ (incompatible) rather than 2 (similar enough) as the default.
+ This was an inadvertent change in the Objective-C merge.
+
+ * objc-act.c (get_class_reference): Call add_class_reference for
+ the GNU runtimes.
+
+Wed Apr 14 03:49:21 CDT 1993 Paul Burchard (burchard@geom.umn.edu)
+
+ * objc/Object.h, objc/Object.m, (-awake);
+ objc/archive.c (__objc_finish_read_root_object):
+ Corrected name of method -awake: to -awake for compatibility.
+
+Wed Apr 14 10:58:29 1993 Kresten Krab Thorup (krab@xiv)
+
+ * objc/Object.m, objc/Object.h (+streamVersion:): New method.
+ * objc/archive.c (objc_get_stream_class_version): New function.
+
+Tue Apr 13 17:23:22 1993 Ron Guilmette (rfg at netcom.com)
+
+ * c-decl.c (pop_label_level, combine_parm_decls): Correct args
+ in error calls.
+ * c-typeck.c (error_init, pedwarn_init): Cast alloca result to char *.
+ * calls.c (expand_call): Last arg of emit_stack_save is NULL_RTX.
+ (store_one_arg): Fourth arg to emit_push_insn is NULL_RTX.
+ * collect2.c (main, scan_prog_file): Don't call signal on signal
+ names that aren't defined.
+ * dbxout.c (dbxout_symbol): Last arg to eliminate_regs is NULL_RTX.
+ * fold-const.c (size_int): NUMBER is unsigned so don't test
+ for negative.
+ (optimize_bit_field_compare, all_ones_mask_p): Add missing
+ last arg to force_fit_type call.
+ * gcc.c (putenv): Make result type void.
+ (main): Don't call signal for undefined signal names.
+ * genextract.c (main): Remove extra arg to printf call.
+ * print-tree.c (print_node_brief, print_node): Properly cast
+ arg when printing ints or rtx.
+ * rtl.h, tree.h (xmalloc): Don't use prototype for now.
+ * sched.c (sched_analyze_1): Extra arg in anti_dependence call.
+ * toplev.c (main): Don't call signal for undefined signal names.
+ * varasm.c (make_var_volatile): Return type is void.
+ (assemble_string): First arg is not pointer to unsigned.
+ * sparc.h (LEGITIMIZE_ADDRESS): Last arg to force_operand is NULL_RTX.
+ * sparc.md (movXX): Third arg to emit_move_sequence is NULL_RTX.
+ (movsi): Add missing return after abort.
+
+Tue Apr 13 14:09:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Don't call default_conversion before
+ convert_for_assignment.
+ (parser_build_binary_op): Make NOP_EXPR, not NON_LVALUE_EXPR.
+
+ * dbxout.c (dbxout_type): Re-enable debugging output for anonymous
+ structures in C++.
+
+Tue Apr 13 08:44:55 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc-act.c, toplev.c (-Wprotocol): added
+ * objc-act.c (flag_warn_protocol): New variable
+ (check_methods_accessible): New function
+ (check_protocol): Use check_methods or check_methods_accessible
+ depending on flag_warn_protocol to check protocol conformance.
+
+ * objc-act.c (start_class): For class implementations Assign
+ SUPER_CLASS_NAME from interface specification if not present.
+
+Tue Apr 13 06:48:20 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (sminsf, smindf, smaxsf, smaxdf): Should be minsf, etc.
+
+ * genattrtab.c (clear_struct_flag): Add void return type defn.
+ (count_subs_rtx): Add int return type and add definition.
+ (simplify_test_exp): Delete debugging junk.
+ (do_nothing): Delete.
+
+ * tree.def (QUAL_UNION_TYPE): New tree code.
+ * tree.h (DECL_QUALIFIER): New access macro for decl.initial.
+ * calls.c, dbxout.c, dwarfout.c, expr.c, function.c, print-tree.c:
+ Treat QUAL_UNION_TYPE like UNION_TYPE when seeing if aggregate.
+ * sdbout.c, stmt.c, varasm.c: Likewise.
+ * expr.c (get_inner_reference): Don't blow up if a FIELD_DECL
+ hasn't been filled in.
+ (expand_expr, case COMPONENT_REF): Likewise.
+ * stor-layout.c (layout_union): Handle QUAL_UNION_TYPE.
+ (layout_type): Call layout_union for QUAL_UNION_TYPE and
+ treat it like UNION_TYPE elsewhere.
+
+Tue Apr 13 06:08:16 1993 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (div_and_round_double): Don't mix HOST_WIDE_INT * and
+ unsigned HOST_WIDE_INT * parameters; some compilers complain.
+
+Mon Apr 12 22:14:03 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/list.h, objc/runtime.h: Removed declarations of library
+ functions. objc/list.h, objc/objc.h, objc/objc-api.h,
+ objc/runtime.h, Object.m, Protocol.m: Changed to double quote
+ includes. Removed includes of stddef.h, objc-archive.h and
+ stdlib.h.
+
+ * objc/objc-archive.h: File deleted. Contents embedded in objc-api.h
+ * objc/objc-archive.c: File renamed to archive.c
+ * objc/objc-class.c: File renamed to class.c
+ * objc/objc-init.c: File renamed to init.c
+ * objc/objc-misc.c: File renamed to misc.c
+ * objc/objc-msg.c: File renamed to sendmsg.c
+ * objc/objc-object.c: File renamed to objects.c
+ * objc/objc-sel.c: File renamed to selector.c
+ * objc/Makefile (OBJC_H, OBJC_O): Updated accordingly
+
+Mon Apr 12 22:05:58 1993 Tom Wood (wood@next.com)
+
+ * Makefile.in (objc-act.o): Add dependencies.
+
+Mon Apr 12 20:52:00 1993 Kresten Krab Thorup (krab@spiff.gnu.ai.mit.edu)
+
+ * objc-act.c (_OBJC_SELECTOR_REFERENCES_decl): Variable renamed to
+ _OBJC_SELECTOR_TABLE_decl. Name of selector table renamed from
+ "_OBJC_SELECTOR_REFERENCES" to "_OBJC_SELECTOR_TABLE" to avoid
+ conflict with NeXTSTEP linker.
+
+ * Makefile.in (stmp-int-hdrs): Added dependency objc-headers.
+ (objc-headers): New target.
+
+ * objc/Makefile (_forward, fflags): Made targets error prone.
+ (objc-msg.o, _forward): Use explicit path instead of $<.
+
+Mon Apr 12 19:49:55 1993 Tom Wood (wood@next.com)
+
+ * objc-act.h (CLASS_PROTOCOL_LIST, PROTOCOL_LIST,
+ PROTOCOL_FORWARD_DECL, TYPE_PROTOCOL_LIST): Rearrange use of type
+ members to avoid use of noncopied_parts.
+ * objc-act.c (get_static_reference, get_objcect_reference,
+ start_protocol): Make a tree vector for new protocol types.
+ (start_class): The tree vector for class types is longer.
+
+ * m68k/next.h (ASM_OUTPUT_FLOAT_OPERAND): Use CODE.
+
+
+Mon Apr 12 15:46:21 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common): Delete $(bindir)/$(target)-gcc
+ before trying to install it.
+
+ * i960.h (CONSTANT_ALIGNMENT): Only increase alignment of string
+ constants.
+
+ * gcc.c (library_prefix): Delete variable.
+ (process_command): Delete uses of library_prefix.
+ (do_spec_1, D case): Delete use of library_prefix.
+
+ * explow.c (emit_stack_save): At end, call validize_mem when
+ inside sequence.
+
+ * c-typeck.c (internal_build_compound_expr): When pedantic, don't
+ simplify a COMPOUND_EXPR, so that it won't be mistaken for an
+ lvalue or an integer constant expression.
+ * fold-const.c (fold, COMPOUND_EXPR case): Likewise.
+
+Mon Apr 12 15:24:05 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (print_operand): Sort all cases in alphabetical order.
+ (print_operand, case 'G'): New case.
+ (output_epilog): Know that "GNU Obj-C" is the language string
+ for Objective-C.
+ * rs6000.md (adddi3/subdi3): Allow immediate constants.
+
+ * configure (rs6000-ibm-aix*): Make AIX 3.2 the default.
+
+ * README.RS6000: Replaced file to discuss assembler for AIX 3.2 and
+ problems with NLS support.
+
+ * combine.c (record_value_for_reg): Properly set SUBST_LOW_CUID
+ for last change; otherwise won't get best value.
+
+Mon Apr 12 13:23:59 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * jump.c (jump_optimize, clause for `x=a; if (...) x=b;'):
+ Do this regardless of BRANCH_COST if HAVE_conditional_move
+ defined.
+
+Mon Apr 12 17:15:43 1993 Kresten Krab Thorup (krab at xiv)
+
+ * objc/hash.h: Deleted #include "mutext.h"
+ * objc/Object.m, objc/Object.h (-read:, -write:): added.
+ * objc/Object.m, objc-api.h: Stripped anything added by
+ kane@cc.purdue.edu which is not considered "minor changes".
+ * objc/objc.h: now "#include"s objc-archive.h
+ * objc/objc-msg.c (__objc_init_install_dtable,
+ __objc_install_dtable_for_class): Call to
+ __objc_resolve_class_links moved to the latter.
+ * objc/objc-msg.c (__objc_responds_to): Function added
+ * objc/objc-archive.c (objc_write_reference): added
+
+Sat Apr 10 18:07:46 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/Makefile: Cleaned up for inclusion in gcc distribution.
+ Target copy-headers added.
+
+Sun Apr 11 06:40:16 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * toplev.c (strip_off_ending): Add .atr for Ada.
+
+ * reorg.c (add_to_delay_list): Clear any cached block information
+ for INSN.
+
+ * stor-layout.c (layout_record): After copying the offsets of a
+ field that is an anonymous union to the offsets of the fields
+ of that union, zero the offset of the anonymous field in case
+ it is used to access the inner fields.
+
+ * combine.c (make_compound_operation, case xSHIFTRT):
+ Clean up code so more readable and don't restrict to case
+ where C2 >= C1.
+ Pass correct (inner) code to recursive call.
+ (make_compound_operation, case SUBREG): Pass the code of our
+ operand to recursive call, not SUBREG, and make another recursive
+ call after calling force_to_mode.
+
+Sun Apr 11 11:16:48 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * combine.c (can_combine_p): Don't move an UNSPEC_VOLATILE.
+
+Sun Apr 11 01:32:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expmed.c (expand_divmod): When adjusting op0 for trunc_div or
+ trunc_mod, using shifts (not branches), make a new pseudo for the
+ result. Don't use target for adjusted_op0.
+
+Sat Apr 10 10:57:09 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * xm-alpha.h (ONLY_INT_FIELDS): No longer needed.
+
+ * alpha.c (alpha_sa_size): Need to save $26 if it is used or
+ if any other register is saved, but not just because a stack
+ space is needed.
+ (output_prolog): Add code to probe the stack if we allocate more
+ than 4096 bytes; required by chapter 7 (for threads).
+ Know when to save $26.
+ (output_epilog): Know when to restore $26.
+ * alpha.md (add/sub): Correct predicates and constraints for
+ sNaddX and addX insns; we can use sNsubX and subX to add small
+ negative constants.
+ Don't split addition to SP since we want to update it just once.
+ (beq, bne): Use subtract, not compare for ints; it's more efficient.
+ (define_split for comparisons): Always prefer add/sub if it will work.
+ (probe_stack, allocate_stack): New patterns.
+
+Fri Apr 9 20:03:38 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * c-typeck.c (free_tree_list): New variable.
+ (digest_init): Set free_tree_list.
+ (process_init_constructor): Use add_double to do arithmetic with
+ double integers instead of using fold/build to to arithmetic in
+ type of array index. Use free_tree_list when available instead of
+ generating a new tree_list.
+
+Fri Apr 9 19:05:31 1993 Tom Wood (wood@next.com)
+
+ * c-lex.h (RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_ONEWAY,
+ RID_ID): New Objective-C keywords.
+ * c-parse.gperf: Incorporate the Objective-C keywords from
+ objc-parse.gperf and add the new keywords.
+ * objc.gperf: Deleted.
+ * c-lex.c: Use -N when running gperf so the keyword table can be
+ accessed. Ran gperf and replaced that section.
+ (forget_protocol_qualifiers, remember_protocol_qualifiers): New
+ functions to modify the keyword table so that `in', `out', `inout',
+ `bycopy', and `oneway' are keywords only in protocol declarations.
+ (init_lex): Initialize the new keywords. Forget the protocol
+ qualifiers, and only make `id' a keyword when compiling an
+ Objective-C module.
+ (yylex): Treat @ as the start of an identifier (keyword), but
+ recognize Objective-C string constants (@"...").
+ * c-parse.in: Add support for Objective-C protocols, classes, and
+ strings.
+ (initlist): Don't include labeled array elements in the
+ Objective-C grammer. These look like messages and preclude the
+ use of messages in initializers.
+ (recognize_objc_keyword): Deleted. The keywords are now in
+ c-parse.gperf.
+ * c-tree.h: Add declarations for functions in objc-act.c.
+ (doing_objc_thang): Declare here.
+ * c-decl.c (grokfield): Check for statically allocated objects.
+ * c-lang.c (is_class_name, maybe_objc_method_name,
+ build_objc_string): New functions.
+ (maybe_objc_comptypes): Add REFLEXIVE parameter.
+ * c-typeck.c (comptypes, convert_for_assignment): Check for
+ Objective-C protocols (non-reflexive use of maybe_objc_comptypes).
+ (comp_target_types): Rewrite so that maybe_objc_comptypes checks
+ protocols when processing an Objective-C module. For C modules,
+ the code path is unchanged.
+ (convert_for_assignment): Improve the error message for
+ incompatible message arguments.
+ * objc-act.h, objc-act.c: Add support for protocols, classes, and
+ strings. Update the runtime targets for the new GNU runtimes as
+ well as existing NeXT runtimes.
+ * toplev.c (lang_options): Add -fgnu-runtime and -fnext-runtime.
+
+ * configure (i[34]86-next-*): New configuration.
+ * config.sub: Default to bsd if vendor is next.
+ * i386/next.h, i386/next.c, i386/x-next, i386/t-next,
+ i386/xm-next: New files.
+ * m68k/next.h, m68k/next.c: Move machine independent portions to
+ nextstep.h and nextstep.c. Update to NeXTSTEP 3.0 and 3.1.
+ * nextstep.h, nextstep.c: New files.
+
+ Dumped Kresten's latest objc-runtime into the objc directory.
+ This needs work.
+
+ * objc/core.c, objc/objc-proto.h, objc/object.h, objc/object.m,
+ objc/record.h: Deleted.
+
+ Thu Apr 1 11:02:49 1993 Kresten Krab Thorup (krab at xiv)
+
+ * objc/list.h (list_remove_head): added case for one element list.
+ * objc-init.c (__objc_exec_class): changed objc_get_class to
+ objc_lookup_class. (thanks to mccallum@cs.rochester.edu)
+
+ Thu Mar 30 11:04:11 1993 Kresten Krab Thorup (krab at xiv)
+
+ * Protocol.m, objc/Protocol.h: added
+ * objc.h (struct objc_protocol): added
+ * objc-init.c (__objc_init_protocols): added
+ (__objc_exec_class): added code for initializing protocols
+ * objc-class.c (__objc_class_add_protocols): added
+
+ Thu Mar 25 17:09:40 1993 Kresten Krab Thorup (krab at xiv)
+
+ * configure, Makefile.in: added
+ * Makefile.in (install): added
+
+ Wed Mar 24 14:32:14 1993 Kresten Krab Thorup (krab at xiv)
+
+ * objc/objc.h: Define objc_msg_lookup inline if optimization is
+ turned on. objc-actions.c changed accordingly.
+
+ Tue Mar 23 18:02:04 1993 Kresten Krab Thorup (krab at eos)
+
+ * sarray.c, objc/sarray.h: Structure of `sarray' changed
+ eliminating one indirection. This affects most functions.
+
+ Mon Mar 29 1993 Christopher J. Kane (kane@rock-opera)
+
+ * objc-object.c (_objc_object_alloc, _objc_object_dispose,
+ _objc_object_copy): moved to objc-misc.c, init to 0.
+ : deleted file.
+
+ * Object.m (-perform:, -perform:with:, -perform:with:with:): check
+ return value of objc_msg_looup before using it.
+ (-name, -doesNotRecognize:, -error:): changed class_get_class_name
+ to object_get_class_name.
+ (+readFrom:): added check for class name length.
+
+ * objc-api.m (class_create_instance, object_copy, object_dispose):
+ moved from objc-object.c, inline'd
+
+ Sun Mar 28 1993 Christopher J. Kane (kane@prelude)
+
+ * objc-api.h (several inline functions): rewritten to
+ use new CLS_ISCLASS and CLS_ISMETA macros.
+ (object_is_metaclass): added.
+
+ * objc.h (_objc_alloc, _objc_dealloc, _objc_realloc,
+ _objc_copy, objc_trace): removed (not used).
+ (class_get_class_number, class_set_class_number): removed.
+ (CLS_ISCLASS, CLS_ISMETA): check for nil parameter.
+
+ Sat Mar 27 1993 Christopher J. Kane (kane@toccata)
+
+ * Object.m: method comments added.
+ (-transmuteClassTo:): removed error message.
+ (+error:): removed.
+ (-error:): added +error: functionality.
+ (+readFrom:): changed objc_get_class to objc_lookup_class.
+ (+readFrom:): added class_set_version.
+
+ * objc-api.h (object_get_class, object_get_super_class,
+ object_get_meta_class, object_is_class,
+ object_is_instance, _objc_error): added.
+
+ * objc.h (_objc_error): moved to objc-api.h.
+
+ Fri Mar 26 1993 Christopher J. Kane (kane@toccata)
+
+ * objc-api.h: function comments added.
+ (class_set_class_number, class_get_class_number, METHOD_NULL,
+ class_add_method_list, objc_msg_lookup_super): moved to
+ objc.h.
+ (objc_msg_sendv): removed.
+
+ * Object.h, Object.m (-isMetaClass): added.
+ (+free, +name, +respondsTo:, +respondsTo:): removed.
+ (+class, +superClass, +metaClass): removed.
+
+ * Object.m (-storeOn:): added variable class_encoding.
+ (+readFrom:): replaced constant '#' with _C_CLASS.
+ (-descriptionForMethod): changed descriptionForInstanceMethod: message
+ to class_get_instance_method.
+ (-class): now calls object_get_class.
+ (-superClass): now calls object_get_super_class.
+ (-metaClass): now calls object_get_meta_class.
+
+ Wed Mar 24 1993 Christopher J. Kane (kane@rock-opera)
+
+ * objc-api.h (METHOD_NULL): new define.
+ (method_get_argsize, method_get_imp, class_get_super_class,
+ class_get_meta_class, class_get_instance_size): new
+ functions.
+
+ * Object.m (-isStructuredLike:, CLASS, IMP2): removed.
+ (#include <objc/objc.h>): removed.
+ (includes <stdio.h>, <stdarg.h>, <errno.h>): replaced w/ extern decls.
+ (+poseAs:): implemented.
+ (-transmuteClassTo:): now returns previous class.
+ (-performv::): changed constant 96 to method_get_argsize.
+ (-perform:, -perform:with:, -perform:with:with:): removed casts.
+ (-storeOn:, +readFrom:): replaced "strlen("#")" with "1".
+ (-isKindOfClassNamed:, -isMemberOfClassNamed:, -error:,
+ +error:): check for NULL.
+ (many methods): changed pointer indirections to function calls.
+ (+instancesRespondTo:, -respondsTo:, -methodFor:
+ +instanceMethodFor:): simplified.
+
+ * Object.h, Object.m (-changeClass:): renamed to -transmuteClassTo:.
+ (+initialize, -isClass, -isInstance): added.
+
+ * Object.h: redundant #defines, typedefs removed; comments modified.
+ (+readFrom:, -readFrom:, -storeOn:) added.
+ (-perform:with:): duplicate declaration removed.
+
+Fri Apr 9 17:42:11 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Accept i370, mvs.
+ For i370-ibm*, assume mvs by default.
+ Later, likewise, for i370-*.
+ For -mvs*, assume ibm as default vendor.
+
+ * c-lex.c (yylex): Use MAP_CHARACTER if it's defined.
+
+ * cccp.c (no_precomp): Make it 1 by default.
+
+Fri Apr 9 17:15:00 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: Updated to handle current Makefile
+ and new config/i386/go32.h.
+
+ * config/i386/go32.h: New file.
+
+ * config/i386/xm-dos.h: Define MKTEMP_EACH_FILE and
+ NO_PRECOMPILES.
+
+Fri Apr 9 15:11:25 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in: Install as $(target)-gcc, not gcc-$(target).
+
+ * fixincludes: Avoid inserting #ifndefs in limits.h if they are
+ already there (solves HP/UX problem).
+
+Thu Apr 8 21:36:11 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c: Include hard-reg-set.h.
+ (reg_nonzero_bits): Should be unsigned.
+ (reg_last_set_{mode,nonzero_bits,sign_bit_copies}): New variables.
+ (combine_instructions): Allocate and initialized them.
+ (nonzero_bits, num_sign_bit_copies, case REG): Use new variables
+ to get information on regs we've seen before.
+ (record_value_for_reg): Set new variables for register being modified.
+ (record_dead_and_set_regs): Invalidate regs clobbered by CALL_INSN.
+ * Makefile.in (combine.o): Includes hard-reg-set.h.
+
+ * expr.c (do_store_flag, case GT_EXPR, LE_EXPR): Don't
+ confuse highest unsigned value with -1.
+
+ * combine.c (force_to_mode, case xSHIFT): Don't narrow the
+ mode unless we can be sure that the shift count is smaller
+ than the size of the mode.
+
+ * ns32k.h (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS):
+ Add new register class GEN_AND_FLOAT_REGS.
+
+Thu Apr 8 18:42:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (c-parse.y, objc-parse.y): Use sed, not awk.
+
+ * c-decl.c (finish_enum): Store layout results into variant types.
+
+ * flow.c (mark_set_1): Clear reg_next_use at the proper place.
+
+Thu Apr 8 10:50:00 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (LIBGCC2_INCLUDES, LIBGCC2_DEPS): New variables,
+ with empty values, to be overriden by t-* files.
+ (LIBGCC2_CFLAGS): Use LIBGCC2_INCLUDES.
+ (libgcc2.ready): Depend on LIBGCC2_DEPS.
+ (stmp-int-hdrs): New target, all of old stmp-headers except
+ float.h.
+ (stmp-headers): Depend on stmp-int-hdrs, and just install float.h.
+
+Thu Apr 8 06:58:27 1993 Michael Meissner (meissner@osf.org)
+
+ * c-tree.h (require_complete_type, lookup_name_current_level): Add
+ prototypes.
+
+ * tree.h (require_complete_type, lookup_name_current_level): Remove
+ prototypes, these are defined in c-typeck.c and c-decl.c, and
+ lookup_name_current_level is declared static in cp-decl.c.
+
+Wed Apr 7 14:37:41 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * flow.c (mark_set_1): Clear reg_next_use for all kinds of regs.
+
+Wed Apr 7 09:18:20 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (GO_IF_LEGITIMATE_ADDRESS): Allow -fpic again to
+ mean System V.4 semantics.
+ (CC1_SPEC): -fpic and -fPIC turn off OSF/rose shared library
+ support.
+
+Tue Apr 6 18:07:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (start_function):
+ Inhibit missing prototype warning for `main'.
+
+Tue Apr 6 17:23:34 1993 Bill Cox (bill@cygnus.com)
+
+ * tree.h (require_complete_type, lookup_name_current_level): Add
+ prototypes.
+
+Tue Apr 6 15:09:42 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * va-sparc.h (va_arg): Cast argument pointer to (char *).
+
+ * unroll.c (loop_iterations): When computing comparison_value, use
+ reg_set_p to identify instructions that modify it.
+
+ * sparc.md (lshldi3, lshrdi3): Define.
+
+ * Makefile.in (STAGESTUFF): Add insn-opinit.c, stamp-opinit, and
+ genopinit.
+
+ * cccp.c (do_include): For missing header file, if -M, don't
+ output dependencies, and warning not error if no dependency is
+ needed.
+
+ * c-common.c (decl_attributes, format case): Error if num_arg does
+ not point to a string type argument, or if first_arg_num not the
+ anonymous argument.
+
+ * function.c (init_function_start): Always set
+ current_funtion_returns_pcc_struct if PCC_STATIC_STRUCT_RETURN defined.
+
+ * sparc.md (movdi): End by returning the last template; otherwise
+ we return junk for a template.
+
+ * README.ALTOS: Comment as possibly obsolete.
+ * README.ENCAP: Delete.
+ * install.texi: Delete references to COFF encapsulation.
+
+ * tree.h: Add more prototypes.
+
+Tue Apr 6 12:01:17 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version number to 38.
+ (PUT_SDB_*): If -mgas, don't put # in front of directives.
+ (MIPS_DEFAULT_GVALUE): If not define, define as 8, which is the
+ default -G xx value to use.
+
+ * mips.c (override_options): Set mips_section_threshold to
+ MIPS_DEFAULT_GVLAUE if -G xx not used.
+
+ * mips/osfrose.h (DWARF_DEBUGGING_INFO): Define.
+ (MIPS_DEFAULT_GVALUE): If mips assembler, the value is 8,
+ otherwise it is 0.
+
+ * i386/osfrose.h (DWARF_DEBUGGING_INFO): Define.
+ (PREFERRED_DEBUGGING_TYPE): Define as DBX_DEBUG.
+
+Mon Apr 5 20:47:44 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * Represent prologue and epilogue as RTL on the PA
+ * pa.md (prologue, epilogue): New define_expands.
+ (return_internal, call_profiler): New define_insns.
+ * pa.h (FIXED_REGISTERS): %r4 is no longer fixed.
+ (CALL_USED_REGISTERS): %r4 is no longer CALL_USED either.
+ (REG_ALLOC_ORDER): Move %r4 up in the allocation order.
+ (DELAY_SLOTS_FOR_EPILOGUE): Delete.
+ (ELIGIBLE_FOR_EPILOGUE_DELAY): Delete.
+ * pa.c (print_stw, print_ldw): Delete.
+ (eligible_for_epilogue_delay): Delete.
+ (hppa_epilogue_delay_slots): Delete.
+ (store_reg, load_reg, set_reg_plus_d): New helper functions.
+ (output_function_prologue): Only emit assembler pseudo-ops
+ to denote the start of a function. Place the correct
+ value into hp_profile_label_name if profiling.
+ (output_function_epilogue): Only emit assembler pseudo-ops
+ to deonte the end of a function.
+ (hppa_expand_prologue): New function to emit all prologue
+ code as RTL.
+ (hppa_expand_epilogue): Likewise for the epilogue.
+ (compute_frame_size): Update to account for using %r4 as an
+ allocatable register if the frame pointer was eliminated.
+
+Mon Apr 5 06:57:35 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case SAVE_EXPR): Pass promoted type to
+ store_expr.
+
+Mon Apr 5 03:26:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (emit_reload_insns): Cast enum array index to int.
+
+ * expr.c (store_constructor): Properly compute size of array
+ when clearing the whole array.
+
+Mon Apr 5 02:54:54 1993 Per Bothner (bothner@hal.gnu.ai.mit.edu)
+
+ * c-decl.c (lookup_name_current_level): Make non-static.
+
+Sun Apr 4 20:09:19 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (HARD_REGNO_MODE_OK): Do not accept integer modes
+ greater than 32 bits in 1.0 FP registers.
+ * pa.md (movdi patterns): Do not accept 1.0 FP registers.
+ (floatunsdisf, floatunsdidf expanders): Disable unless TARGET_SNAKE.
+ (floatdisf2, floatdidf2 patterns): Likewise.
+ (fix_truncdisf2, fix_truncdidf2): Likewise.
+
+ * pa.md (dbra pattern): Extend to allow any 5 bit increment,
+ any comparison operator for the compare against zero, and
+ no longer require the REG_NONNEG note.
+
+ * pa.h (EXTRA_CONSTRAINT): Refine 'T' constraint to not accept
+ pseudos which did not get hard registers and to not use
+ short_memory_operand.
+ * pa.c (short_memory_operand): Delete.
+ (emit_move_sequence): Do not use short_memory_operand when testing
+ for secondary reloads for FP loads/stores.
+ * pa.md (movsi for FP regs): Delete special case patterns.
+ (movdi for FP regs): Likewise.
+ (movsi main recognizer): Allow fp<->memory copies.
+ (movdi main recognizer): Likewise.
+
+Sun Apr 4 18:56:25 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.h (FUNCTION_OUTGOING_VALUE): Remove.
+ (FUNCTION_VALUE_REGNO_P): Return regs depend on TARGET_SNAKE.
+
+Sun Apr 4 17:47:43 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * reorg.c (get_jump_flags): Check for LABEL == 0 before using
+ LABEL.
+
+Sun Apr 4 16:38:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * mips-tfile.c: Change "illegal" to "invalid" in error messages.
+ (parse_stabs_common): Allow nonzero ignored fields in .stabs/.stabn.
+
+ * calls.c (expand_call) [PCC_STATIC_STRUCT_RETURN]:
+ Always set pcc_struct_value if aggregate_value_p returns 1.
+
+ * Makefile.in (alloca.o): Delete -Demacs from command.
+
+Sun Apr 4 11:19:07 PDT 1993 Ron Guilmette (rfg at netcom.com)
+
+ * dwarfout.c (type_attribute): Use the TYPE_MAIN_VARIANT of the
+ given type when calling `user_def_type_attribute'.
+
+Sun Apr 4 07:57:18 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * optabs.c: Include reload.h.
+ * Makefile.in (optabs.o): Show includes reload.h.
+
+ * alpha.c (output_prolog): Need LDGP even for static procedure.
+
+ * alpha.c (alpha_builtin_saveregs): Adjust for fact that
+ virtual_incoming_args_rtx includes pretend size.
+ * alpha.h (SETUP_INCOMING_VARARGS): Likewise.
+
+ * alpha.h (LINK_SPEC): Don't pass -O2 to ld; it seems to be broken.
+
+ * reorg.c (rare_destination): New function.
+ (mostly_true_jump): Refine to use more info about destination
+ and fallthrough; now returns -1 for very unlikely branches.
+ (fill_eager_delay_slots, relax_delay_slots): Allow -1 return
+ from mostly_true_jump.
+
+Sun Apr 4 03:09:23 1993 Richard Stallman (rms@churchy.gnu.ai.mit.edu)
+
+ * gstdarg.h [__svr4__]: Test only _VA_LIST_ to avoid dup typedef.
+ (This used to be if __SVR4_2__.)
+
+ * config/m68k/m68k.c (floating_exact_log2): Initialize r1.
+
+Sat Apr 3 20:01:05 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (hppa_legitimize_address): Use Pmode consistently.
+
+Sat Apr 3 17:35:11 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (emit_reload_insns): Don't update the status of a
+ register from an input reload if it also has an output reload.
+
+ * expr.c (store_expr): Call size_binop instead of doing the
+ same thing with fold and build.
+
+ * combine.c (simplify_comparison, case PLUS): Generalize
+ simplification of (eq (plus A B) C).
+ (simplify_comparison, case MINUS): Add corresponding cases.
+
+Fri Apr 2 19:11:46 1993 Richard Stallman (rms@geech.gnu.ai.mit.edu)
+
+ * c-parse.in (expr_no_commas, from ASSIGN op):
+ Store ERROR_MARK as the original code.
+
+Fri Apr 2 07:49:03 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_reg_used_for_inherit): New variable.
+ (clear_reload_reg_in_use): New function.
+ (allocate_reload_reg): Don't consider an inherited register as
+ one that we should share in the first pass.
+ Don't mark a register in use until we are sure it will fit.
+ (choose_reload_regs): Mark spill regs used for inheriting.
+ When we decide we can no longer use a register, show it isn't
+ being used.
+
+ * genopinit (optabs): Fix typo in name for "fix" pattern.
+
+Thu Apr 1 21:24:04 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+
+ Thu Apr 1 17:20:05 1993 Mike Stump (mrs@sphagnum.cygnus.com)
+
+ * cp-decl.c (start_method): Never allow circularities in
+ TREE_CHAINs, as otherwise the compiler will core dump. This happens
+ when a method is redeclared improperly at leat.
+
+ Thu Apr 1 12:06:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (convert_for_assignment): Check if `rhs' is an
+ error_mark_node before looking to see if it's of OFFSET_TYPE.
+
+ * cp-decl.c (grokvardecl): Don't use declarator unless it's non-null
+ when looking for a redefinition.
+
+ * cp-typeck.c (convert_for_initialization): Check if `rhs' is a
+ TREE_LIST before looking for its value.
+
+ * cp-init.c (expand_default_init): Don't clear DECL_REGISTER.
+
+ Wed Mar 31 17:57:50 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-spew.c (yylex, case IDENTIFIER): If identifier_typedecl_value
+ returns a NULL_TREE, then set `lastiddecl' to be `trrr'.
+ * cp-lex.c (identifier_typedecl_value): Instead of internal error 62
+ when we don't have a match for `type', return a NULL_TREE since our
+ callers will know what to do in that case.
+
+ * cp-tree.h (IDENTIFIER_TYPEDECL_VALUE): Deleted.
+ (identifier_typedecl_value): Deleted first prototype, kept second.
+ * cp-tree.c (list_hash_lookup_or_cons): Call the function for
+ identifier_typedecl_value, don't use the macro.
+ * cp-spew.c (yylex): Likewise.
+
+ Wed Mar 31 14:43:50 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_from_reference): Make sure we set
+ TREE_SIDE_EFFECTS if we need to. Cures duplicate evaluations in
+ things like: foo.mem(g++) = class_c; where foo.mem returns a
+ reference to a class object.
+
+ Wed Mar 31 13:32:38 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-method.c (report_type_mismatch): Arguments are numbered
+ starting from 1 now.
+
+ Tue Mar 30 17:21:18 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokfndecl): When re-using an old decl in place of a
+ new decl, make sure to wipe out the DECL_CHAIN slot, as otherwise
+ this creates a circularity, causing an infinite loop in the compiler
+ later.
+
+ Tue Mar 30 14:14:53 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (check_classfn): Say which class when giving an error
+ about arglist mismatches or missing members.
+
+ * cp-decl.c (grokdeclarator): For class-local typedefs, call pushtag
+ to make sure the identifier is in scope properly.
+
+ Mon Mar 29 18:05:22 1993 Mike Stump (mrs@cygnus.com)
+
+ lookup_fnfields hacking... Corrects some problems found with Thu
+ Mar 25 23:09:27 1993 vtable fixes.
+
+ * cp-init.c (build_offset_ref): When looking for the component,
+ have lookup_fnfields do the ambiguity checking, as we know it works
+ much better than anything here.
+ * cp-method.c (hack_identifier): If a name is ambiguous, go ahead
+ and report the error.
+ * cp-search.c (lookup_fnfields): Refine semantics and document
+ semantics with respect to ambiguities and returning error_mark_node.
+ Also, extend to be able to find all virtual functions.
+ * cp-search.c (get_virtuals_named_this): Remove unused second
+ argument. Arrange for call to lookup_fnfields to find all virtual
+ functions, even if they are hidden.
+ * cp-search.c (get_first_matching_virtual): Removed unused second
+ argument to get_virtuals_named_this.
+
+ Mon Mar 29 16:42:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-method.c (dump_init): If the init value is an enum, then use
+ its tag in the error message, instead of its value.
+
+ * cp-typeck.c (build_binary_op_nodefault): Delete spurious warning
+ about comparision between signed/unsigned (matches C front-end).
+
+ Fri Mar 26 16:30:57 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (GCC_ASM_KEYWORD): New token.
+ (asm_keyword): New rule.
+ (extdef, maybeasm, simple_stmt): Use the rule instead of ASM_KEYWORD.
+ (maybe_type_qual): Don't warn about use of asm.
+ * gplus.gperf (__asm, __asm__): Token is GCC_ASM_KEYWORD.
+ * cp-spew.c (init_spew): Add GCC_ASM_KEYWORD.
+
+ * cp-typeck.c (build_unary_op): Fix a bug so errors about ++/-- on
+ invalid pointer types actually get emitted. Don't restrict it to
+ when PEDANTIC is set, and use type_as_string to say what type is
+ being operated on.
+
+ Fri Mar 26 01:21:43 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC for friends.
+
+ Fri Mar 26 01:09:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (pushdecl): Give a pedwarn, not a regular warning, when
+ we shadow a formal parameter.
+
+ * cp-init.c (expand_default_init): Get rid of spurious abort call.
+
+ Thu Mar 25 23:09:27 1993 Mike Stump (mrs@cygnus.com)
+
+ Major vtable re-vamp.
+
+ * cp-call.c (build_method_call): Reword and improve error messages.
+ * cp-class.c (modify_vtable_entries), cp-class.c (finish_struct),
+ cp-init.c (init_vfields), cp-tree.c (virtual_member, virtual_offset),
+ cp-tree.h: Remove third argument to binfo_value, as it is unneeded.
+ * cp-class.c (finish_base_struct): Unshare base class binfos.
+ * cp-decl.c (finish_function): Fixup second argument to
+ build_virtual_init, so as to make it unambiguous.
+ * cp-init.c (build_virtual_init): Use second argument to get the
+ vtable, not the first, as the second is more specific.
+ * cp-search.c (is_subobject_of_p, hides, lookup_fnfields_here): New
+ routines.
+ * cp-seach.c (lookup_field, lookup_fnfields_1): Re-implement. The
+ new implementation allows for better ambiguity checking (10.1.1),
+ and implements most hiding (10p4).
+ * cp-tree.c (binfo_value): Re-implement.
+ * cp-typeck.c (build_component_ref): Propagate error_mark_nodes up.
+
+Thu Apr 1 19:38:53 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * reorg.c (redundant_insn_p): Stop searching for a redundant
+ insn if an INSN or JUMP_INSN with delayed effects is
+ encountered.
+
+Thu Apr 1 12:00:01 1993 Michael Meissner (meissner@osf.org)
+
+ * real.c (toplevel): Add 'extern' keyword in forward declaration
+ of arrays without bounds to silence warnings from the MIPS
+ compiler.
+
+ * i386/osfrose.h (LONG_DOUBLE_TYPE_SIZE): Undef this to protect
+ against long double going to 80 bits until the OSF libraries are
+ ready to handle it.
+
+ * mips/mips.md (untyped_call): Rewrite code so that the MIPS
+ compiler will not issue statement not reached warning messages.
+
+Thu Apr 1 07:28:11 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * expr.c (emit_push_insn, expand_assignment): Fix typo in last change.
+
+Thu Apr 1 02:31:16 1993 Per Bothner (bothner@hal.gnu.ai.mit.edu)
+
+ * emit-rtl.c (init_emit): Clear sequence_stack. Otherwise,
+ if we're in a sequence when starting a nested function
+ expand_function_end () will end all the sequences.
+
+Thu Apr 1 02:11:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (LIB2FUNCS): Add _fixunsxfdi, _fixxfdi, _floatdixf,
+ _fixunsxfsi.
+
+ * libgcc2.c (XFtype): Do define it, if LONG_DOUBLE_TYPE_SIZE == 96.
+ (__fixunsxfdi): New function, if LONG_DOUBLE_TYPE_SIZE == 96.
+ (__fixxfdi, __floatdixf, __fixunsxfsi): Likewise.
+
+Wed Mar 31 20:05:19 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (CLASS_UNITS): Fix typo in previous change, patch from
+ ian@cygnus.com.
+
+Wed Mar 31 17:18:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (compile_file): Call incomplete_decl_finalize_hook
+ only if nonzero.
+
+Wed Mar 31 00:59:50 1993 Gerald Baumgarnter (gb@cs.purdue.edu)
+
+ * toplev.c (compile_file): Only call `*incomplete_decl_finalize_hook'
+ if the `decl' in question is a VAR_DECL.
+
+Wed Mar 31 15:27:41 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (CONSTANT_ADDRESS_P): Fix typo in last change.
+
+Wed Mar 31 15:11:12 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * clipper/clipper.h, convex/convex.h, elxsi/elxsi.h, fx80/fx80.h,
+ gmicro/gmicro.h, h8300/h8300.h, i386/i386.h, i386/osfrose.h,
+ i860/i860.h, i960/i960.h, m68k/m68k.h, m88k/m88k.h, mips/mips.h,
+ pa/pa.h, pyr/pyr.h, romp/romp.h, rs6000/rs6000.h, sparc/sparc.h,
+ spur/spur.h, tahoe/tahoe.h, vax/vax.h, we32k/we32k.h
+ (CONSTANT_ADDRESS_P): Define with body of `CONSTANT_P', but leave
+ out CONST_DOUBLE.
+
+Wed Mar 31 11:28:21 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * reg-stack.c (emit_swap_insn): Don't link cc0 insns: emit swap
+ after cc0 user.
+
+Wed Mar 31 07:00:45 1993 Richard Kenner (kenner@apple-gunkies.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr, case ADDR_EXPR): Allow taking the
+ address of any object; used in call-by-reference situations.
+
+ * tree.c (next_type_uid): Move definition to reasonable place.
+ (copy_node): Make new DECL_UID and TYPE_UID as comments say.
+
+ * expr.c (emit_block_move, emit_push_insn, expand_assignment):
+ Size passed to memcpy/bcopy is SIZETYPE, not Pmode.
+
+ * cse.c (simplify_binary_operation, case MULT): When testing for
+ floating-point equality, make sure we do so inside a region
+ protected from traps.
+ * i386.c (standard_80387_constant_p): Likewise.
+
+ * alpha.h (INITIAL_ELIMINATION_OFFSET): Subtract
+ current_function_pretend_args_size from OFFSET for AP.
+
+ * alpha.h (LINK_SPEC): New definition.
+
+ * cse.c (insert_regs): If a REG already is in a class but not
+ in the mode we want, don't do anything to the classes.
+
+Wed Mar 31 02:02:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gvarargs.h [__svr4__]: Test only _VA_LIST_ to avoid dup typedef.
+ (This used to be if __SVR4_2__.)
+
+ * local-alloc.c (optimize_reg_copy_1): Don't increment n_calls
+ specially if P is a call_insn.
+
+ * convert.c (convert_to_real): Pass mode arg to REAL_VALUE_ATOF.
+
+Tue Mar 30 17:07:33 1993 Stephen L. Moshier (moshier@world.std.com)
+
+ * real.c: This is a new C file to implement floating point
+ REAL_ARITHMETIC, target machine bit patterns for cross-compilation,
+ and REAL_VALUE_ATOF for decimal input constants in long double
+ XFmode as well as lower precisions.
+
+ * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE, REAL_VALUE_TO_TARGET_DOUBLE)
+ (REAL_VALUE_TO_TARGET_SINGLE): New macros.
+
+ * real.h: If REAL_ARITHMETIC is defined or if LONG_DOUBLE_TYPE_SIZE
+ is 96, then define REAL_VALUE_ macros to invoke functions in real.c.
+
+ * real.h (REAL_VALUE_RNDZINT, REAL_VALUE_UNSIGNED_RNDZINT):
+ New macros truncate toward zero to integer value but
+ return REAL_VALUE_TYPE.
+
+ * real.h (REAL_VALUE_TO_DECIMAL): New macro defaults to
+ fprintf if no REAL_ARITHMETIC, otherwise uses real.c for
+ binary to decimal conversion. Use in ASM_OUTPUT_ macros.
+
+ * Makefile.in (real.o): New target.
+ (OBJS): Add real.o.
+
+ * c-lex.c (yylex): Convert real decimal constants directly
+ to the precision specified by the letter at the end of the number.
+ Pass mode arg to REAL_VALUE_ATOF to specify precision.
+ Move the "out of range of double" error check.
+
+ * cp-lex.c (yylex): Redo converting float values to desired type.
+
+ * final.c (split_double) : Use REAL_VALUE macros to extract ints
+ from float mode CONST_DOUBLEs.
+
+ * emit-rtl.c (operand_subword): Use REAL_VALUE_TO_TARGET_SINGLE
+ to convert to target float.
+ If REAL_ARITHMETIC is defined, let real.c handle incompatible host
+ and target floating point bit patterns.
+ (init_emit_once): Add machine_mode argument to REAL_VALUE_ATOF.
+
+ * fold-const.c (real_value_truncate): If REAL_ARITHMETIC, replace
+ by routine of same name in real.c.
+ target_isinf, target_isnan, target_negative): Likewise.
+ (const_binop): Delete `register' from decls using REAL_VALUE_TYPE.
+ (fold_convert): Use REAL_VALUE_TO_INT.
+
+ * rtl.c: Include real.h to get the definition of REAL_VALUE_TYPE.
+
+ * varasm.c (assemble_real): Case TFmode and XFmode invoke
+ ASM_OUTPUT_LONG_DOUBLE.
+
+ * optabs.c (expand_fix): Initialized REAL_VALUE_TYPE
+ confuses some compilers.
+
+ * cse.c (simplify_binary_operation): real_value_truncate
+ returns REAL_VALUE_TYPE.
+ Convert rtx_code into tree_code for argument to REAL_ARITHMETIC.
+
+ * cse.c (simplify_unary_operation): Use new ..._RNDZINT macros
+ instead of casting value of REAL_VALUE_FIX_TRUNCATE
+ and REAL_VALUE_UNSIGNED_FIX_TRUNCATE.
+
+ * explow.c (rtx_to_tree_code): New function.
+
+ * rtl.h (rtx_to_tree_code): Declare.
+
+ * m68k/m68k.c (standard_68881_constant_p): Initialize REAL_VALUE_TYPE
+ binary constants from decimal values. Use REAL_VALUE_... macros.
+ (standard_sun_fpa_constant_p): Likewise.
+ (print_operand, floating_exact_log2): Use REAL_VALUE_... macros.
+ (init_68881_table): New function.
+
+ * m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Set to 96, for XFmode support.
+ (ASM_OUTPUT_LONG_DOUBLE_OPERAND) New macro.
+ (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE): Use REAL_VALUE_... macros.
+ (ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
+ (ASM_OUTPUT_FLOAT_OPERAND): Likewise. Also, new argument CODE.
+ (ASM_OUTPUT_FLOAT): Delete special def for CROSS_COMPILE.
+ (ASM_OUTPUT_LONG_DOUBLE): New macro.
+ (PRINT_OPERAND_EXTRACT_FLOAT): Definitions deleted.
+ (PRINT_OPERAND_PRINT_FLOAT): Definitions deleted.
+
+ * m68k/m68k.md (movxf, tstxf, extendsfxf2, extenddfxf2): New patterns.
+ (truncxfdf2, truncxfsf2, floatsixf2, floathixf2, floatqixf2): Likewise.
+ (ftruncxf2, fixxfqi2, fixxfhi2, fixxfsi2): Likewise.
+ (addxf3, subxf3, mulxf3, divxf3, negxf2, absxf2, sqrtxf2): Likewise.
+
+ * m68k/sun3.h (FUNCTION_VALUE): Use FUNCTION_VALUEX.
+ (FUNCTION_VALUEX): New macro.
+ * m68k/mot3300.h, m68k/news.h (LIBCALL_VALUE): Handle XFmode.
+
+ * m68k/mot3300.h, m68k/tower-as.h:
+ (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE): Use REAL_VALUE... macros.
+ (PRINT_OPERAND): Likewise.
+ (ASM_OUTPUT_LONG_DOUBLE): New definition.
+ * m68k/news.h (PRINT_OPERAND, ASM_OUTPUT_DOUBLE):
+ Use REAL_VALUE... macros.
+ * m68k/next.h, m68k/sun2o4.h, m68k/sun3.h, m68k/altos3068.h:
+ (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)
+ (ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND):
+ Use REAL_VALUE... macros.
+ * m68k/sgs.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)
+ (ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE... macros.
+ (ASM_OUTPUT_LONG_DOUBLE): New definition.
+ (ASM_OUTPUT_FLOAT_OPERAND): New macro.
+ (PRINT_OPERAND_PRINT_FLOAT): Deleted.
+
+ * m68k/3b1.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT):
+ Use new REAL_VALUE... macros.
+ (ASM_OUTPUT_LONG_DOUBLE): New definition.
+
+ * m68k/hp320.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT)
+ (PRINT_OPERAND_FLOAT, PRINT_OPERAND): Use new REAL_VALUE... macros.
+ (ASM_OUTPUT_LONG_DOUBLE): New macro.
+
+ * m68k/crds.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND):
+ Use new REAL_VALUE... macros.
+
+ * vax.h (PRINT_OPERAND, ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE):
+ Use new REAL_VALUE... macros.
+ (CHECK_FLOAT_VALUE): Call check_float_value.
+ * vax.c (check_float_value): New function.
+
+ * vaxv.h (ASM_OUTPUT_DOUBLE): Use new REAL_VALUE... macros.
+
+ * alpha.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE):
+ Use new REAL_VALUE... macros.
+ (REAL_ARITHMETIC): Defined.
+
+Tue Mar 30 17:07:33 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ For Tege:
+ * pa.md (sminsi3, smaxsi3): Fix bugs in last addition.
+
+Tue Mar 30 16:52:15 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version to 37.
+ (CLASS_MAX_NREGS): Make floats in gp registers only use one
+ register, and only allocate one float register instead of a
+ register pair if -mfloat64 is used.
+
+Tue Mar 30 05:40:26 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (record_dead_and_set_regs): Record death of all
+ hard regs when a multi-reg object in hard regs dies.
+ (move_deaths): Handle the case when we only have to move
+ part of a multi-register death note.
+ * rtlanal.c (find_regno_note): Find note that overlaps REGNO,
+ not just one that mentions REGNO explicitly.
+
+ * reload.c (form_sum): Use mode of inputs when making new PLUS.
+
+ * genopinit.c: New file.
+ * expr.h (extendtab, fixtab, fixtrunctab, floattab, movstr_optab):
+ New definitions.
+ * expr.c (movstr_optab): No longer static.
+ (init_expr_once): Don't initialize movstr_optab.
+ * optabs.c (extendtab, fixtab, fixtrunctab, floattab): Not static.
+ (init_extends, init_fixtab, init_floattab): Deleted.
+ (init_optabs): Move active stuff from above functions in.
+ Delete filling of optabs.
+ Call init_all_optabs.
+ * reload1.c (init_reload): Don't initialize optabs here.
+ * Makefile.in (OBJS): Add insn-opinit.o.
+ (insn-opinit.o, insn-opinit.c, stamp-opinit): New rules.
+ (genopinit, genopinit.o): Likewise.
+
+ * reload1.c (emit_reload_insns): Properly track what was reloaded
+ into what register when what we reloaded was a hard register group.
+
+Mon Mar 29 17:35:04 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (movsi+2): Add f/f constraint case.
+
+ * sched.c (schedule_block): Reset n_ready if schedule_select
+ removes all insns from ready list.
+
+ * i960.h (FUNCTION_PROFILER): Call output_function_profiler.
+ (CALL_USED_REGISTERS): Add more comments about register usage.
+ * i960.c (i960_function_prologue): When profiling, don't use those
+ registers clobbered around an mcount call.
+ (output_function_profiler): New function.
+
+Mon Mar 29 13:57:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-iterate.c (collect_iterators): Cast tree code to int for indexing.
+
+Mon Mar 29 06:28:57 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (num_sign_bit_copies, case PLUS, case MULT):
+ Replace occurrences of HOST_BITS_PER_INT with HOST_BITS_PER_WIDE_INT.
+
+ * reload.c (secondary_memlocs_elim): Now one per mode per operand.
+ (get_secondary_mem, combine_reloads): Reflect changed var above.
+ (clear_secondary_mem): Use bzero.
+
+ * genrecog.c: Add prototypes for all functions defined in file.
+ Change a few occurrences of RTX_CODE to enum rtx_code for consistency.
+ (merge_trees): Add casts of args to mybcopy.
+ (write_tree_1): Now static.
+ (fatal): Always called with one arg, so define that way.
+
+ * reload.h: Add missing declarations for external functions
+ in reload.c, reload1.c, and caller-save.c.
+ (reload_strict_low, reload_needed_for_multiple, reload_needed_for):
+ Deleted.
+ (reload_opnum): New array.
+ (enum reload_type): Renamed from reload_when_needed and expanded
+ to include more reload types.
+ (reload_n_operands): New variable.
+ * reload.c: Add prototypes for all static functions and clean up
+ some definitions.
+ (struct decompose): Move to before function declarations.
+ (secondary_memlocs_elim): One per operand, not per mode.
+ (get_secondary_mem): Accept and use reload description (opnum
+ and type).
+ (push_reload): Accept and use new reload description instead of
+ old NEEDED_FOR.
+ Define two new macros: MERGEABLE_RELOADS and MERGE_TO_OTHER.
+ Use these macros to see if reloads can be merged and how to do it.
+ (transfer_replacements): New function.
+ (combine_reloads): Refine when we can combine reloads.
+ (find_reloads): Use new method of tracking what a reload is for.
+ When we make a CLOBBER insn, do so with DImode.
+ Merge cases of making optional reloads, avoid making output-only
+ optional reloads, refine when we may not make in-out optional reloads,
+ and make an optional reload for a pair of matching operands.
+ (find_reloads_toplev, find_reloads_address{,_1, part}): Accept and
+ use reload description.
+ (forget_volatility): Delete long-obsolete function.
+ * reload1.c: Add prototypes for static functions.
+ (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Include default definitions.
+ (reload): Count number of registers needed for insn using new
+ reload type information.
+ If mode of insn is DImode, don't change it.
+ Refine the way we handle conflict with the return value register.
+ Don't try to account for needs already covered by previously
+ spilled registers; instead, put them back in the front of
+ potential_reload_regs and let them be allocated again.
+ (order_regs_for_reload): Don't restrict regs explicitly used if
+ we have SMALL_REGISTER_CLASSES defined.
+ (reload_as_needed): Don't need to deactivate optional reloads
+ ever; if they inherit, it must have been safe.
+ Call merge_assigned_reloads if SMALL_REGISTER_CLASSES.
+ (reload_reg_used_*): Refine our tracking of reload reg usage
+ by defining more of these HARD_REG_SETs.
+ (mark_reload_reg_in_use, reload_reg_free_p): Rework to use new
+ method of describing where a reload register is used.
+ (reload_reg_free_before_p, reload_reg_reaches_end_p): Likewise.
+ (allocate_reload_reg): Pass new reload descriptions.
+ (choose_reload_regs): Likewise.
+ Save and restore the new HARD_REG_SETs.
+ Remove now-redundant code to prevent conflicts.
+ (merge_assigned_reloads): New function.
+ (emit_reload_insns): Output each reload type into its own
+ sequence, then output the sequences in the proper order.
+ Put our output reloads after a CLOBBER made by find_reloads.
+ Pass ALL_REGS to find_equiv_regs; nothing special about
+ GENERAL_REGS.
+ Don't use an old equivalence if doing so would be more expensive.
+ Clean up tracking of values still in reload regs using reload
+ description info to see if the reload reaches the end of the insn.
+ (gen_input_reload): Pass reload description and emit insns to end of
+ current sequence.
+ (inc_for_reload): Return void; no longer need INSN as operand.
+ Emit insns to end of current sequence.
+
+Mon Mar 29 02:59:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr, case MAX_EXPR/MIN_EXPR): If mode is
+ multiword int, use do_jump_by_parts_greater_rtx to compare efficiently.
+ (do_jump_by_parts_greater_rtx): New function.
+
+Sun Mar 28 20:26:11 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): Always allocate TARGET in mode of
+ result expression; VALREG might have been promoted.
+ Ensure TARGET is a REG when checking for promotion and verify
+ that we get back the mode we expect.
+
+Sun Mar 28 18:49:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (store_parm_decls): Use pedwarn for "promoted arg doesn't
+ match prototype" warning.
+
+ * expr.c (expand_expr): For COMPONENT_REF, don't force_reg op0
+ if it is BLKmode.
+
+Sun Mar 28 16:25:59 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (smin, umin, smax, umax): New patterns.
+
+ * Support nullification of conditional branch delay slots on
+ the PA.
+
+ * pa.md (cbranch define_delay): Enable nullification of
+ conditional branch delay slots (based upon branch direction).
+ (conditional branch patterns): Call output_cbranch to get the
+ correct output template. Long conditional branches with an
+ annulled delay slot have a length of 3.
+ (branch on bit patterns): Call output_bb to get the correct
+ output template. Long branches with an annulled delay slot have
+ a length of 3.
+ (decrement and branch pattern): Handle nullification of long
+ backward branches. Such branches have lengths of either 3 or 6.
+
+ * pa.c (output_cbranch): New function. Given the operands of the
+ branch, possible nullification, length of the branch, possible branch
+ negation, and the branch insn itself, return the output template for
+ the desired conditional branch.
+ (output_bb): Likewise, but for branch on bit.
+
+ * pa.h (toplevel): Declare output_bb.
+
+ * genattr.c (main): Output ATTR_FLAG masks.
+
+ * rtl.def (ATTR_FLAG): New RTL code.
+
+ * genattrtab.c (write_eligible_delay): Add new variable
+ "flags" to the generated functions. All callers changed.
+ (check_attr_test): Handle ATTR_FLAG.
+ (clear_struct_flag): Likewise.
+ (count_sub_rtxs): Likewise.
+ (write_test_expr): Likewise.
+
+ * reorg.c (ANNUL_IFTRUE_SLOTS, ANNUL_IFFALSE_SLOTS): Add new
+ flags variable to these dummy macros.
+ (get_jump_flags): New function.
+ (optimize_skip): Get jump flags information from the delay insn.
+ (steal_delay_list_from_target): Get jump flags information from the
+ delay insn and the label of the trial jump.
+ (steal_delay_list_from_fallthrough): Get jump flags information
+ from the delay insn.
+ (try_merge_delay_insns): Likewise.
+ (fill_simple_delay_slots): Likewise.
+ (fill_slots_from_thread): Likewise.
+ (make_return_insn): Likewise.
+
+Sun Mar 28 00:36:04 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes: Move comments about big sed command outside the
+ command itself.
+
+ * toplev.c (lang_options): Add -W{no-,}missing-braces.
+
+ * c-typeck.c (process_init_constructor, digest_init):
+ Check and set new static var partial_bracket_mentioned.
+
+ * c-lex.c: Updated for recent change in c-parse.gperf.
+
+Sat Mar 27 13:43:27 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * Trampoline support from Jukka Virtanen.
+ * pa.md (cacheflush): New pattern.
+ * pa.h (TRAMPOLINE_TEMPLATE): Define for the PA.
+ (TRAMPOLINE_SIZE): Define for the PA.
+ (INITIALIZE_TRAMPOLINE): Define for the PA.
+
+Sat Mar 27 08:22:25 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (expand_function_start): When evaluating sizes of
+ variable types, do so just for side-effects (the SAVE_EXPRs).
+ * stor-layout.c (variable_size): Likewise.
+
+ * va-alpha.h: Major rework to agree with new calling sequence.
+ Should have been installed with Feb 10th changes.
+
+ * rs6000.md (mov[qhs]i): Allow moving a special reg to itself.
+
+Sat Mar 27 03:13:46 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * config/sparc/sparc.c (S_MODES, D_MODES, T_MODES):
+ Accept only those complex modes that are small enough.
+ Rewrite to make the expressions simpler.
+
+Fri Mar 26 17:07:31 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-tree.h, output.h: Use STDIO_PROTO for prototypes with FILE.
+
+ * input.h: Add standard copyright notice.
+
+ * caller-save.c: Add prototypes for static functions.
+ (choose_hard_reg_mode): Add missing parameters declaration.
+
+ * a29k.md (multiply/multiplu/mulm/mulmu insns): These clobber Q.
+
+Fri Mar 26 06:23:31 1993 Tom Wood (wood@next.com)
+
+ * i960.h (FUNCTION_VALUE_REGNO_P): Change to agree with
+ FUNCTION_VALUE.
+ * pyr.h, spur.h (INCOMING_REGNO, OUTGOING_REGNO): Define.
+ * arm.md (untyped_call, blockage): New patterns.
+
+Fri Mar 26 02:09:02 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * configure (sparc-tti-*, m68k-tti-*): Don't set use_collect2.
+
+Fri Mar 26 01:05:43 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+
+ Thu Mar 25 18:19:19 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_to_reference), cp-init.c (expand_aggr_init_1):
+ Don't try to do more than one level of user defined conversions,
+ avoids an infinite loop. Uses LOOKUP_NO_CONVERSION.
+
+ Wed Mar 24 16:28:17 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * cp-call.c (build_method_call): Fix handling of foo->~Class().
+
+ Sat Mar 20 12:29:37 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-pt.c (tsubst): Don't get faked out by the fact that ctors and
+ dtors have the same method name and can have the same signature.
+
+ Fri Mar 19 15:58:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (tsubst): Call build_decl_overload for the new
+ instantiation.
+
+ Thu Mar 18 19:09:39 1993 Ken Raeburn (raeburn@cygnus.com)
+
+ * cp-decl2.c (flag_implement_inlines): New variable.
+ (lang_f_options): Recognize "implement-inlines".
+ * toplev.c (lang_options): Recognize -f[no-]implement-inlines.
+ * cp-decl.c (flag_implement_inlines): Declare it.
+ (start_function): If it's clear, functions declared inline are
+ external under `#pragma implementation'.
+
+ Tue Mar 2 16:24:39 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (c_expand_return): If operand 0 is a TREE_LIST, then
+ make sure to use its value.
+
+ Mon Mar 1 14:22:12 1993 Bill Cox (bill@rtl.cygnus.com)
+
+ * cp-decl.c (push_level_decl): Add cast to correct push_stack_level
+ parameter.
+
+ Mon Mar 1 10:19:38 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c (do_identifier): Improve wording on error message.
+
+ Wed Feb 24 19:54:46 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-typeck.c (commonparms, convert_for_assignment): Number
+ arguments starting at 1 in error messages to match the C front-end.
+
+ Wed Feb 24 14:55:54 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (saw_first_vbase): Deleted.
+ cp-search.c (dfs_walk): When walking the class lattice, use the last
+ virtual base class seen, not the first. Fixes major problem
+ introduced on Tue Oct 6 17:54:09 1992 that prevents multi-level
+ virtual base classes from working.
+
+ Mon Feb 22 18:07:23 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (get_base_distance_recursive): When searching, if the
+ object refers to the same object as before, but just found along a
+ different path, the object is not ambiguous. Fixes problem
+ introduced on Feb 16 22:47:29 1993.
+
+ Wed Feb 17 15:12:12 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl2.c (grok_function_init): Pure virtual descructor must be
+ defined, and calls to them generated. Now conforms with ANSI C++
+ working paper dated September 17, 1992 12.4.5.
+
+ Tue Feb 16 22:47:29 1993 Mike Stump (mrs@cygnus.com)
+
+ Implement a new searching scheme for base classes and use it to
+ ensure only related virtual function slots are filled in by
+ modify_vtable_entries. Affects get_base_distance and get_binfo
+ answers. Cures InterViews doc problem. Solves the problem of
+ calling the wrong virtual function in the presence of multiple
+ inheritance.
+
+ * cp-search.c (get_binfo_recursive, get_base_distance_recursive):
+ New routines that use a depth first search strategy instead of
+ breadth first.
+ * cp-search.c (get_binfo): Re-implement, and use
+ get_binfo_recursive.
+ * cp-search.c (get_base_distance): Re-implement, and use
+ get_base_distance_recursive.
+
+ * cp-class.c (related_vslot): New routine to ensure that only
+ vfields that are related to the given base_fndecl are modified.
+ Relies upon new searching scheme for base classes.
+ * cp-class.c (modify_vtable_entries): Use related_vslot to ensure
+ that only slots related to the base virtual function are filled in.
+
+ * cp-class.c (build_vtable, prepare_fresh_vtable, finish_struct),
+ cp-tree.h: Remove DECL_VPARENT.
+
+ * cp-class.c (get_vtable_entry): Use unsigned when dealing with
+ DECL_VINDEXes.
+ * cp-class.c (finish_struct): Use get_vtable_entry instead of open
+ coding that routine here.
+
+ Fri Feb 12 10:24:52 1993 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-decl.c (sigsegv): Check if SIGIOT is defined first. Also check
+ for SIGILL and SIGABRT.
+ (init_decl_processing): Likewise; set up handlers for SIGILL and
+ SIGABRT.
+
+ Thu Feb 11 10:30:59 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-type2.c (readonly_error): New arg `SOFT', to pedwarn instead of
+ error.
+ * cp-typeck.c, cp-cvt.c, cp-tree.h: Modify callers appropriately.
+
+ Tue Feb 9 10:02:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (real_yylex): When parsing an exponent, check for 'e' and
+ 'E' explicitly.
+
+ * cp-typeck.c (build_unary_op): Disallow taking the address of
+ the `main' fn.
+ * cp-decl.c (grokdeclarator): Check for the length of ORIGINAL_NAME
+ being 4, and that it starts with 'm', before calling strcmp.
+
+ * cp-type2.c (readonly_warning_or_error): Rename to readonly_error,
+ make it now ARM compliant by emitting a hard error, instead of a
+ pedwarn.
+ * cp-cvt.c, cp-typeck.c: Change all callers.
+ * cp-tree.h (readonly_error): Rename prototype.
+
+ Sun Jan 31 09:58:16 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-typeck.c (build_modify_expr): Accept taking the address of a
+ temporary generated by an explicit constructor call, but generate
+ a warning.
+
+ Mon Feb 8 10:45:56 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Demangle DECLARATOR if it's an operator.
+
+Thu Mar 25 11:38:02 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * cccp.c (do_include):
+ For "..." case, leave fend pointing at terminating 0.
+ Distinct error msgs for empty file name and for bad syntax.
+
+ * Makefile.in (USER_H): Add va-clipper.h.
+
+Thu Mar 25 07:01:14 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (store_one_arg): Fix typo in previous change.
+
+Thu Mar 25 03:37:51 1993 Mike Stump (mrs@hal.gnu.ai.mit.edu)
+
+ * c-lang.c (lang_identify), cp-lex.c (lang_identify), objc-act.c
+ (lang_identify), tree.h (lang_identify): New routine.
+ * defaults.h (ASM_IDENTIFY_LANGUAGE) New macro used to identify
+ which front-end produced the object file. Ports that do not
+ define ASM_IDENTIFY_GCC will automatically get a reasonable
+ definition for ASM_IDENTIFY_LANGUAGE, ports that do define
+ ASM_IDENTIFY_GCC for any reason may want to define
+ ASM_IDENTIFY_LANGUAGE as done here.
+ * toplev.c (output_lang_identify): New routine to identify which
+ front-end produced the object file.
+ * toplev.c (compile_file): Use ASM_IDENTIFY_LANGUAGE if it exists.
+
+Wed Mar 24 17:53:11 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * c-parse.gperf: Change __cimag__ to __imag__, __creal__ to __real__,
+ to void rejection by gperf.
+
+Tue Mar 23 18:43:14 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * clipper.md: Assign "fp" attribute to fp insns. Add DImode
+ insns for widening mul, shift and rotate. Remove 'decrement, test
+ and branch' combination patterns. They are not reloadable.
+
+ * clipper.h (HARD_REGNO_MODE_OK): DImode regs must start on even
+ registers.
+
+ * gstdarg.h, gvarargs.h: Use va-clipper.h.
+
+ * config.sub: Default to clipper-intergraph if system is clix.
+ * configure (clipper-intergraph-clix*): New configuration.
+ * clipper.h, clipper.c, clipper.md: New files.
+ * x-clix, t-clix, xm-clix.h, clix.h: New files.
+
+Wed Mar 24 1993 18:54:51 Paul Eggert (eggert@twinsun.com)
+
+ * fixincludes (memory.h):
+ Use proper ANSI syntax in `#endif __memory_h__'.
+
+Wed Mar 24 12:52:40 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (sh[123]add): Collapse into a single pattern.
+ (sh[123]add for reload): Likewise.
+ * pa.c (shadd_operand): New function.
+ (print_operand): Handle '%O' for shadd patterns.
+
+Wed Mar 24 08:03:31 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (EXTRA_SECTION_FUNCTIONS, ASM_DECLARE_FUNCTION_NAME):
+ Don't output tab before .csect pseudo-op.
+
+Wed Mar 24 02:01:14 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * config/pyr/pyr.h (NO_DOT_IN_LABEL): Defined.
+
+ * tree.c (stabilize_reference_1): For division and remainder,
+ make a save_expr.
+
+Tue Mar 23 14:51:07 1993 Jim Wilson (wilson@geech.gnu.ai.mit.edu)
+
+ * alpha.h, i386/sysv4.h, mips.h, rs6000.h (RETURN_IN_MEMORY):
+ Delete struct and union references.
+ * sparc.h (RETURN_IN_MEMORY): Update comment.
+ * h8300.h, 386bsd.h, linux.h, i386/mach.h, i386/osfrose.h,
+ i860/mach.h, i960.h, hp2bsd.h, hp3bsd.h, hp3bsd44.h, next.h,
+ sun3mach.h, m88k.h, ns32k/pc532-mach.h, pa-utahmach.h, pa1-utahmach.h,
+ rs6000/mach.h (DEFAULT_PCC_STRUCT_RETURN): Define to 0.
+ * toplev.c (DEFAULT_PCC_STRUCT_RETURN): Add default definition of 1.
+ (flag_pcc_struct_return): Default to DEFAULT_PCC_STRUCT_RETURN.
+ (f_options): Add -freg-struct-return flag.
+
+Tue Mar 23 07:43:18 1993 Tom Wood (wood@next.com)
+
+ * emit-rtl.c (push_topmost_sequence, pop_topmost_sequence): New
+ functions.
+ * expr.c (expand_builtin, BUILT_IN_SAVEREGS): Use these to put the
+ code at the start of the function, even when inside a sequence.
+
+ * tree.h (enum built_in_function): Add BUILT_IN_APPLY_ARGS,
+ BUILT_IN_APPLY, and BUILT_IN_RETURN.
+ * c-decl.c (init_decl_processing): Declare __builtin_apply_args,
+ __builtin_apply, and __builtin_return.
+ * function.h (struct function): Add apply_args_value field.
+ * expr.c (apply_args_value): New variable.
+ (init_expr, save_expr_status, restore_expr_status): Initialize,
+ save, and restore apply_args_value.
+ (expand_builtin): Implement new built-in functions.
+ (apply_args_mode, apply_result_mode): New variables.
+ (apply_args_size, apply_result_size, result_vector,
+ expand_builtin_apply_args, expand_builtin_apply,
+ expand_builtin_return): New functions.
+ (INCOMING_REGNO, OUTGOING_REGNO): Supply default definitions.
+ * sparc.h (INCOMING_REGNO, OUTGOING_REGNO): Define.
+ * sparc.md (untyped_call, untyped_return): New patterns.
+ * i386.h (APPLY_RESULT_SIZE): Define.
+ * i386.md (untyped_call, untyped_return): New patterns.
+ * m68k/isi.h, m68k/m68k.h, m68k/m68kv4.h, m68k/mot3300.h
+ (NEEDS_UNTYPED_CALL): Define.
+ * m68k.md, fx80.md, gmicro.md, i860,md, ns32k.md
+ (untyped_call, blockage): New patterns.
+ * mips.md (untyped_call): New pattern.
+
+Tue Mar 23 06:38:36 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (store_one_arg): Use int_size_in_bytes and
+ expr_size when appropriate instead of size_in_bytes.
+
+ * regclass.c (record_reg_classes): When an alternative requires
+ a match, but we do it with a copy into a register, that alternative
+ wins.
+
+ * cse.c (CHEAP_REG): Add missing parens.
+
+ * expr.h: Don't declare fns that use "tree" if tree.h not included.
+ (emit_call_1): Remove decl.
+ (promoted_input_arg): Add prototype.
+ (fix_lexical_addr): Remove duplicate decl.
+ (copy_function_value, expand_stmt_expr): Delete; no such functions.
+ * calls.c: Include gvarargs.h.
+ Add prototypes to forward declarations and declare static functions.
+ (emit_call_1): Now static.
+ (emit_library_call, emit_library_call_value): Move to here.
+ * expr.c: Don't include gvarargs.h.
+ (emit_library_call, emit_library_call_value): Delete from here.
+ * Makefile.in (expr.o): Doesn't include gvarargs.h.
+ (calls.o): Now includes gvarargs.h.
+
+ * dbxout.c (dbxout_type): Use int_size_in_bytes instead of
+ size_in_bytes for consistency with other code.
+
+ * calls.c (expand_call): Use expr_size instead of doing it ourself.
+
+Mon Mar 22 19:15:17 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * function.c (fixup_var_refs_insns): Don't delete an insn copying
+ var to itself, if it's the end of a libcall group.
+
+Mon Mar 22 15:28:48 1993 Paul Eggert (eggert@twinsun.com)
+
+ * fixincludes: Use `set x $y; shift', not `set - $y', to avoid
+ altering sh options. Fix `#endif foo' constructions. Clean up
+ all DONE files.
+
+Mon Mar 22 17:02:58 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * expr.h (MUST_PASS_IN_STACK): Make machine parameter.
+
+Mon Mar 22 01:38:41 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reload1.c (eliminate_regs): Eliminate regs within a CLOBBER.
+
+ * emit-rtl.c (init_emit): Use INIT_EXPANDERS.
+
+ * i386.c (output_fix_trunc): Use MEMs in insn as stack temps.
+ No need to allocate & deallocate stack space on the fly.
+
+ (clear_386_stack_locals): New function.
+ (assign_386_stack_local): New function.
+
+ * i386.h (PREFERRED_RELOAD_CLASS): Only narrow MODE_FLOAT reloads
+ from ALL_REGS to GENERAL_REGS.
+ (PREFERRED_OUTPUT_RELOAD_CLASS): Deleted.
+
+ (INIT_EXPANDERS): New macro.
+
+ * i386.md (movsf,movdf): Use an input reload for MEM-MEM moves.
+ (extendsfdf2): Don't allow GENERAL_REGS in any operand.
+
+ (truncdfsf2): Allocate a stack temp in expander.
+ Use that in the output function.
+ (fix_truncMN2,fixuns_truncMN2): Likewise.
+ Allocate scratch reg from Q_REGS.
+
+Sun Mar 21 17:24:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (compile_file): If warning about a function
+ declared static but not defined, make the function extern.
+
+ * cccp.c (collect_expansion): Don't make # special in argless macro.
+
+ * toplev.c (incomplete_decl_finalize_hook): New variable.
+ (compile_file): Call incomplete_decl_finalize_hook.
+ * c-decl.c (init_decl_processing): Set that var.
+ (finish_incomplete_decl): New function.
+ (complete_array_type): Use 0 as default maxindex.
+ * tree.h (incomplete_decl_finalize_hook): Declared.
+
+Sun Mar 21 16:30:22 1993 Michael Meissner (meissner@osf.org)
+
+ * t-osfrose (CONFIG2_H): Change include file name to osfrose.h.
+
+ * halfpic.h (prototype support): Fix recent changes for
+ prototypes, so it compiles again.
+
+ * configure (ns32k-encore-osf): Delete, last ns32k OSF/rose
+ machine turned off.
+
+ * encrose.h, x-encrose, t-encrose: Delete, no longer used.
+
+Sun Mar 21 16:20:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * integrate.c (copy_rtx_and_substitute, case USE):
+ Don't remove a subreg if ORIG had one.
+
+Sun Mar 21 01:50:07 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * c-common.c: #include "obstack.h".
+ * config/vax/xm-vms.h [VAXC]: Work around stdio.h's FILE_TYPE.
+ * vmsconfig.com: When making tm.h from config/vax/vms.h, change
+ any #include "vax/*.h" directives to use native VMS file syntax.
+
+Sat Mar 20 22:46:31 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (INSN_SETS_ARE_DELAYED): Define for the PA. Sets and
+ clobbers that occur in millicode insns are delayed effects.
+ (INSN_REFERENCES_ARE_DELAYED): Likewise, but for operand references
+ occuring in millicode insns.
+ * reorg.c (mark_referenced_resources): Parameter
+ include_called_routine changed to include_delayed_effects. All
+ references changed.
+ (mark_set_resources): Likewise.
+ (insn_references_resource_p): Likewise.
+ (insn_sets_resource_p): Likewise.
+ (mark_referenced_resources, case INSN): Do not mark any resources
+ as referenced if we are not including delayed effects, and the
+ given insn has delayed effects.
+ (mark_set_resources): Likewise for resources which are set/clobbered.
+ (fill_simple_delay_slots): Include delayed effects for the delay insn
+ if we are searching after the delay insn for candiates.
+ (dbr_schedule): When initializing `end_of_function_needs' include
+ delayed effects.
+
+Sat Mar 20 18:54:46 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (TARGET_SWITCHES): Or in TARGET_CPU_DEFAULT for default
+ case.
+ (TARGET_CPU_DEFAULT): Default to 0.
+
+Sat Mar 20 14:52:26 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (singlemove_string): Declare.
+
+ * configure: Add support for 4.4BSD on hp300s.
+ * hp3bsd44.h, x-hp3bsd44.h: New files for 4.4BSD on hp300s
+
+ * pa.md (conditional branch patterns): Clean up constraints.
+
+ * pa.md (shadd reload patterns): Clean up output templates.
+
+Sat Mar 20 11:23:15 1993 Torbjorn Granlund (tege@gnu.ai.mit.edu)
+
+ * expmed.c (init_expmed): Fix typo in last change.
+
+Sat Mar 20 07:11:54 1993 Richard Kenner (kenner@apple-gunkies.gnu.ai.mit.edu)
+
+ * expr.c (get_inner_reference): Simplify code by initializing OFFSET
+ to integer_zero_node.
+ Do general index computation for ARRAY_REF and include lower bound
+ of domain in calculation.
+ (expand_expr, case ARRAY_REF): Include lower-bound in index
+ computation.
+
+ * fold-const.c (fold, case PLUS_EXPR): Don't associate apart
+ a constant operand.
+
+ * combine.c (make_compound_operation): Call recursively in the
+ cases where we find a simplification.
+ (make_compound_operation, case SUBREG): If the recursive call
+ changes the rtx code and this is an appropriate SUBREG, use
+ force_to_mode.
+
+Sat Mar 20 03:16:52 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * print-tree.c (print_node): Print the chain of a STRING_CST.
+
+ * c-lex.c (yylex): Copy the string value we get from __FUNCTION__.
+
+Fri Mar 19 21:06:41 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * expr.h: Correct partly nested comment.
+
+ From Bill Cox (bill@cygnus.com):
+ * cp-decl.c (push_level_decl): Add cast to correct push_stack_level
+ parameter.
+ * cse.c (cse_process_notes): Replace NULL_RTX with just zero.
+ * function.h, halfpic.h, integrate.h, loop.h, machmode.h, output.h,
+ recog.h, reload.h, stack.h: Add prototypes.
+ * genattr.c (gen_attr): Generate prototypes in header file.
+
+ * xcoffout.h (DEBUG_SYMS_TEXT): Define.
+ * xcoffout.c (xcoffout_declare_function): Call dbxout_source_file
+ before emitting .function psuedo-op.
+
+Fri Mar 19 17:45:13 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version to 36.
+ (TARGET macros): Move this section to be earlier than
+ ASM_FINAL_SPEC.
+ (ASM_FINAL_SPEC): If configured with --with-gnu-as or as a cross
+ compiler, do not run mips-tfile unless -mmips-as is used.
+
+ * configure (target_cpu_default): Set to 16 when configuring a
+ MIPS using the GNU assembler.
+
+Fri Mar 19 06:27:34 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (synth_mult): Don't try to make recursive call if
+ we would be shifting by a negative number.
+ (expand_mult): Don't negate VAL if it is negative.
+
+ * cse.c (simplify_plus_minus): Count CONSTs coming in and going
+ out; we have simplified things if we have more CONSTs going out
+ even if we have the same number of total terms.
+
+ * expmed.c (zero_cost): New variable.
+ (init_expmed): Always pass some insn to recog.
+ Set shift_cost[0], shiftadd_cost[0] and shiftsub_cost[0] to
+ something reasonable.
+ Compute zero_cost.
+ (enum alg_code): Remove alg_none; add alg_zero and alg_m.
+ (struct algorithm): Rename field COEFF to LOG.
+ (synth_mult): Use new ops alg_zero and alg_m for multiplication by
+ zero and one, respectively.
+ Use MIN when helpful.
+ Be consistent and don't test cost before recursive call.
+ Don't special-case shift counts of zero; already handled elsewhere.
+ (expand_mult): First operation is always alg_zero or alg_m;
+ remaining operations can't be one of those.
+ Use proper subtargets for computations.
+ Remove special-cases for shift counts of zero.
+ Track value computed so far and make REG_EQUAL notes.
+
+Fri Mar 19 01:37:54 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Typo in last change.
+ (initializer_constant_valid_p): Handle COMPLEX_CST.
+
+ * expr.c (expand_assignment): Pass to_rtx's mode to expand_expr
+ when assigning a result_decl.
+ (expand_expr): For ERROR_MARK, give back 0 in TMODE if possible.
+
+ * calls.c (emit_call_1): Don't defer pops in const call.
+
+Thu Mar 18 17:02:24 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * c-decl.c (current_function_prototype_file,
+ current_function_prototype_line): New variables.
+ (start_function): Set them.
+ (store_parm_decls): Use them for error and warning messages.
+
+Thu Mar 18 21:28:43 1993 Paul Eggert (eggert@twinsun.com)
+
+ * optabs.c (expand_float): When converting an unsigned type U
+ to a smaller or equal-sized floating type F where there's no
+ hardware support for unsigned-to-float conversion, use a temporary
+ floating type larger than F if possible, since this avoids
+ rounding problems that are worst when U is just greater than
+ the maximum signed integer of the same size.
+
+Thu Mar 18 16:16:21 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Handle COMPLEX_TYPE like other scalars.
+
+ * c-parse.in (REALPART, IMAGPART): New token types.
+ (unary_expr): Handle REALPART, IMAGPART.
+
+ * expr.c (expand_expr): Don't ensure ref to a volatile value
+ if it is a function.
+
+ * c-parse.gperf: Add __cimag, __cimag__, __creal, __creal__.
+
+ * collect2.c (output_file): New static var.
+ (main): Set output_file.
+ (my_exit): Delete output_file on failure.
+
+Thu Mar 18 12:39:06 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * function.c (assign_parms): Minor cleanup.
+ * calls.c (expand_call): Fix bug (don't clobber bitpos).
+
+Thu Mar 18 00:08:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/vax/vms.h (PCC_STATIC_STRUCT_RETURN): Add #undef.
+
+Wed Mar 17 17:28:17 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (pre_ldwm, pre_stwm): Name these patterns to make
+ generating them easier.
+ (post_ldwm, post_stwm): New patterns.
+ (add_high_const): New pattern.
+ (return): New pattern.
+ * pa.c (post_cint_operand): New function.
+ (hppa_can_use_return_insn_p): New function.
+
+Wed Mar 17 17:24:29 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version to 35.
+ (TARGET_SWITCHES): Add -mlong-calls, delete -mwc* switches.
+
+ * mips.md (call insns & expanders): If -mlong-calls, require
+ function address to be in a register.
+
+ * x-iris (OLDCC): Iris now needs -Wf,-XNh1500 as well.
+
+Wed Mar 17 16:00:29 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (IS_RELOADING_PSEUDO_P): New subroutine for
+ EXTRA_CONSTRAINT.
+ (EXTRA_CONSTRAINT): Use IS_RELOADING_PSEUDO_P. Accept any MEM for
+ `Q' constraint during the reload pass.
+
+ * pa.h (SECONDARY_MEMORY_NEEDED): Define.
+ (SECONDARY_MEMORY_NEEDED_RTX): Define.
+ * pa.c (output_fp_move_double): Remove code to support GR<->FP
+ copies.
+ * pa.md (movqi, movhi, movsi, movdi, movsf, movdf): Remove support
+ for GR<->FP copies.
+ (fix_truncsfsi2, fix_truncdfsi2): Likewise.
+
+Wed Mar 17 14:58:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/vax/vms.h (STRUCT_VALUE): Defined.
+ (STRUCT_VALUE_REGNUM): Add #undef.
+
+Wed Mar 17 14:23:25 1993 Torbjorn Granlund (tege@gnu.ai.mit.edu)
+
+ * pa.md (branch-on-bit): New patterns.
+ * pa.c (pc_or_label_operand): New predicate.
+
+Wed Mar 17 02:46:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/m68k.md (movqi): In address reg case, if d0
+ appears in the address, use d1 instead as intermediate reg.
+
+Tue Mar 16 17:42:14 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (FIXED_REGNO_P): Remove previous change; all callers but
+ one already check.
+ (CHEAP_REG): Only call FIXED_REGNO_P for hard regs.
+ (fold_rtx): Clarify comments.
+
+Tue Mar 16 14:55:40 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * x-apollo68 (CFLAGS, LIBGCC2_CFLAGS): Delete overrides and
+ comment why they were wrong.
+
+ * c-decl.c (grokdeclarator, ARRARY_REF): If exern, then end
+ temporary allocation before building type.
+
+ * sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Define.
+ * reload.c (get_secondary_mem): Use macro SECONDARY_MEMORY_NEEDED_RTX.
+
+Tue Mar 16 03:49:13 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * cse.c (FIXED_REGNO_P): Pseudos can't be fixed regs.
+
+Tue Mar 16 04:33:41 1993 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (main): Report errors in output to pcp_outfile.
+
+Mon Mar 15 21:30:32 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (write_output): Test value of `write'; report errors.
+ (write_output): Use pfatal_with_name for errors.
+ (out_fname): Var now file-scope.
+
+Mon Mar 15 20:52:17 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (EXTRA_CONSTRAINT, case 'S'): Do not accept CONSTANT_P if
+ TARGET_LONG_CALLS.
+
+ * pa.h (EXTRA_CONSTRAINT): Merge strict and non-strict variants.
+ Delete 'R' constraint.
+
+Mon Mar 15 18:38:22 1993 Torbjorn Granlund (tege@sics.se)
+
+ * expmed.c (lea_max_mul): Delete.
+ (init_expmed): Delete unused variable I.
+ (enum alg_code): New tag alg_shift. Document it.
+ (synth_mult): Delete unused variable N. Handle new trivial case
+ first, for T <= 1. Generalize shifting code to shift whenever a
+ number is even; use alg_shift for this. Set best_alg->ops only in
+ trivial case. Clean up cost calculation code for the `simple
+ case' at the end; use shiftadd_cost when appropriate. Combine
+ declarations of Q and move to top of function. Eliminate use of Q
+ in factoring cases. If we are getting too long a sequence for
+ `struct algorithm' to record, fail.
+ (expand_mult): Handle alg_shift instead of alg_add_t_m2 as first
+ operation. In RLT emit loop, handle alg_shift; special case
+ LOG == 0 for alg_add_t_m2 and alg_sub_t_m2.
+
+Mon Mar 15 16:44:08 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * function.c (assign_parms): Remove unnecessary #ifdef.
+
+Mon Mar 15 14:33:52 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (reg_known_equiv_p): New variable.
+ (init_alias_analysis): Allocate and compute reg_known_equiv_p.
+ (sched_analyze_1): Reenable code for REG_EQUIV notes, using
+ reg_known_equiv_p so that it is only used on REG_EQUIV notes.
+ (sched_analyze_2): Likewise. Only pass memory addresses to the
+ sched_analyze_2 call.
+
+ * xm-sol2.h (NO_SYS_SIGLIST): Define.
+
+ * i960.c (print_operand_address): For MULT, set ireg not breg.
+
+ * sparc.md (zero_extendqisi2+4,+5): Add new patterns for combining
+ a SI->QI mode truncate with an insn that sets the condition codes.
+
+ * config.sub (sparclite, sparclite-*): New configuration.
+ * configure (sparclite-*-*): Likewise.
+ * sparc/lite.h: New file.
+
+ * sched.c (adjust_priority): Comment unreachable code.
+ (memrefs_conflict_p): Add comment about Fortran aliasing.
+
+Mon Mar 15 13:54:06 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_plus_minus): Remove last change. Instead,
+ count initial operands and test against that count to see if we
+ did anything.
+
+ * alpha.h (ASM_OUTPUT_{INT,SHORT,CHAR,BYTE}): Truncate constant
+ to maximum range permitted in order to avoid assembler error.
+
+Mon Mar 15 13:37:35 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (sh[123]add patterns): Use register_operand, not
+ shadd_operand.
+ (sh[123]add patterns for reload): Special patterns to avoid
+ lossage due to reload problems.
+ * pa.c (shadd_operand): Delete.
+
+Mon Mar 15 00:31:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (rs6000-ibm-aix3.2): Renamed from rs6000-ibm-aix32.
+
+Sun Mar 14 22:54:10 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * reorg.c (find_end_label): Update unfilled_slots if the return
+ insn we make has a delay slot.
+
+Sun Mar 14 21:27:48 1993 Torbjorn Granlund (tege@sics.se)
+
+ * expmed.c (shift_cost): Now a vector.
+ (shiftadd_cost): New vector for cost of (N * a + b) instructions.
+ (shiftsub_cost): New vector for cost of (N * a - b) instructions.
+ (lea_cost): Removed.
+ (init_expmed): Initialize new vectors. Use ASHIFT, not LSHIFT.
+ Remove code initializing lea_cost.
+ (enum alg_code): New definition.
+ (synth_mult): Rewrite for better algorithms and faster operation.
+ (expand_mult): Rewrite code for constant multiplication.
+
+Sun Mar 14 06:34:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * objc-act.c (build_objc_symtab_template): Correctly build index
+ type for 0-length array.
+ (build_objc_method_call, get_class_reference, get_super_receiver):
+ Call assemble_external on anything we are about to generate a call to.
+ (handle_class_ref): Put constant in readonly-data section, not text.
+
+ * cse.c (simplify_plus_minus): Reject "simplifications" that are
+ too complex in form.
+ Correct sign error in expanding NOT.
+
+Sun Mar 14 00:02:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (choose_reload_regs): Verify reload_out[j] != 0
+ before comparing with reload_earlyclobber elements.
+
+Sat Mar 13 21:05:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (emit_call_1): Restore inhibit_defer_pop before popping args
+ so that pops really do get deferred if appropriate.
+
+Sat Mar 13 18:13:30 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_plus_minus): When seeing if we have reduced the
+ number of operands, ensure we count a CONST result as two operands.
+
+ * calls.c, expr.c: Correctly define PUSH_ARGS_REVERSED.
+
+Sat Mar 13 16:49:10 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (eligible_for_epilogue_delay): Insns which access %r2 can
+ not be used to fill the epilogue's delay slot.
+
+Sat Mar 13 15:31:02 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (emit_swap_insn): If emitting after a cc0 setter,
+ link the cc0 insns.
+
+Fri Mar 12 17:45:36 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/xm-mot3300.h (USE_C_ALLOCA): Define if not __GNUC__.
+ * config/m68k/x-alloca-c: New file.
+ * configure (m68k-motorola-sysv*): Use it.
+
+ * expr.c (emit_push_insn): Handle failure of gen_movstr...
+
+ * stor-layout.c (variable_size): Better error for div by 0 in size.
+ * c-decl.c (grokdeclarator): Error for div by 0 in array size.
+
+Fri Mar 12 17:25:35 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c: Add prototypes for static functions.
+ (struct move_by_pieces): Move definition before function
+ forward decls.
+
+ * rs6000.h, a29k.h (PROMOTE_MODE): Fix typo.
+
+ * cse.c (refers_to_mem_p): Use rtx_equal_p to see if bases
+ are equal.
+
+ * cse.c (set_nonvarying_address_components): Fix type mismatch with
+ caller.
+ (refers_to_mem_p): Call properly in second call.
+
+ * jump.c (jump_optimize): Fix bug in last change.
+
+Fri Mar 12 07:25:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop): For doubleword int addition,
+ clobber the whole register at the start.
+
+Fri Mar 12 03:19:26 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (get_true_reg): Don't ignore FLOAT_TRUNCATE.
+ (subst_stack_regs_pat): Substitute in FLOAT_TRUNCATE insns.
+
+ (compare_for_stack_reg): Reset insn code after swapping operands.
+
+ * i386.h (FLOAT_CLASS_P): New macro.
+ (REGISTER_MOVE_COST): Use it instead of comparing to FLOAT_REGS.
+ (PREFERRED_RELOAD_CLASS): Likewise.
+ (SECONDARY_MEMORY_NEEDED): Likewise.
+ (CLASS_MAX_NREGS): Likewise.
+
+ (SELECT_CC_MODE): Use VOIDmode for non-FP-equality comparisons.
+
+ * i386.md (truncdfsf2): Rewrite to allow FLOAT_REGS in constraints
+ for better register preferences.
+
+ (movM): If REG_WAS_0, make sure the reg hasn't changed since then.
+
+ (cmpM expanders): Don't allow both operands to be MEM.
+ Use VOIDmode for the COMPARE rtx instead of CCmode.
+ (cmpM recognizers): Likewise.
+ Remove constraints for constants from operand 0.
+
+ (cmpdf,cmpsf recognizers): When using VOIDmode as mode of the
+ COMPARE rtx, require that the mode be exactly VOIDmode.
+
+ * i386.c (VOIDmode_compare_op): New operand predicate function.
+
+ * vax.md (movM): If REG_WAS_0, make sure the reg hasn't changed
+ since then.
+ * tahoe.md (movM): Likewise.
+
+Thu Mar 11 19:23:51 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * function.c (aggregate_value_p): RETURN_IN_MEMORY now handles
+ BLKmode values.
+ * expr.h (RETURN_IN_MEMORY): Handle BLKmode values.
+ * i386/sysv4.h (RETURN_IN_MEMORY): Ditto.
+ * m88k/m88k.h (RETURN_IN_MEMORY): Ditto.
+ * i960/i960.h (RETURN_IN_MEMORY): Ditto.
+ * m68k/apollo68.h (RETURN_IN_MEMORY): Ditto.
+ * mips/mips.h (RETURN_IN_MEMORY): Ditto.
+ * sparc/sparc.h (RETURN_IN_MEMORY): Ditto.
+ * alpha/alpha.h (RETURN_IN_MEMORY): Ditto.
+ * romp/romp.h (RETURN_IN_MEMORY): Ditto.
+ * rs6000/rs6000.h (RETURN_IN_MEMORY): Ditto.
+ * h8300/h8300.h (RETURN_IN_MEMORY): Ditto.
+
+Thu Mar 11 19:02:55 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (RTX_COST, case MULT): Handle s8addx and s4addx.
+ (RTX_COST, case MULT): Correctly assign cost to multiplies by a
+ power of two.
+ (RTX_COST, case ASHIFT, ASHIFTRT, LSHIFTRT, IF_THEN_ELSE): New cases.
+
+ * cse.c (CHEAP_REG): New macro; makes virtual regs cheap too.
+ (COST): Use CHEAP_REG.
+ (rtx_cost, case REG): Use CHEAP_REG to return zero for some REGs.
+
+Thu Mar 11 07:47:09 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (FP sCC insn): Delete.
+ (sCC define_expands): FAIL instead of generating FP sCC insns.
+ * pa.c (gen_scond_fp): Delete.
+ * pa.h (toplevel): Delete declaration of gen_scond_fp.
+
+ * cse.c (set_nonvarying_address_components): New function.
+ (invalidate): Use set_nonvarying_address_components instead of
+ computing them.
+ (refers_to_mem_p): Likewise. Simplify checks for conflicting
+ memory accesses. Make static.
+ * loop.c (addr_overlap_p): Delete.
+
+Wed Mar 10 23:52:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Delete ${LIB}/DONE just before exit.
+
+Wed Mar 10 12:27:51 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (reg_or_cint_move_operand): Use cint_ok_for_move.
+
+ * pa.md (add reg and large int): New define splits for the combiner.
+ * pa.c (cint_ok_for_move): New function. Returns 1 iff the given
+ CONST_INT can be loaded into a register in a single instruction.
+ (move_operand): Use cint_ok_for_move.
+
+ * jump.c (jump_optimize, clause for `if (foo) b++'):
+ Do this regardless of BRANCH_COST if HAVE_incscc or
+ HAVE_decscc is defined.
+
+Wed Mar 10 11:50:06 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (conditional move): Use %B for output when appropriate.
+ (conditional move with second operand == 0): New pattern.
+ * pa.c (reg_or_cint_move_operand): New function.
+ (move_operand): Add header comment.
+
+Wed Mar 10 01:43:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-act.c (OBJC_GEN_METHOD_LABEL): Convert colons to _'s.
+ Don't use the category name or the number.
+
+ * gcc.c (link_command_spec): New option -nostartfiles.
+
+Tue Mar 9 18:55:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * convert.c (convert_to_complex): Avoid using comptypes.
+
+Tue Mar 9 11:33:32 1993 Michael Meissner (meissner@osf.org)
+
+ * objc-act.c (#ifdef NEXT_OBJC_RUNTIME): Close #ifdef properly.
+
+Tue Mar 9 00:03:03 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * flags.h (flag_volatile_global): Declared.
+
+ * c-decl.c (define_label): Use current line number in error msg.
+
+Mon Mar 8 16:11:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/i386.h (HARD_REGNO_MODE_OK): Add some casts.
+
+ * reg-stack.c (record_asm_reg_life): Cast class to int for indexing.
+
+ * sdbout.c (PUSH_DERIVED_LEVEL): Cast enumm constants to int.
+
+ * toplev.c (flag_volatile_global): New variable.
+ (f_options): Add option for it.
+ * varasm.c (make_decl_rtl): Handle that option.
+
+ * objc-act.c (really_start_method): Always use OBJC_GEN_METHOD_LABEL.
+ Pass method_slot as additional arg.
+ (OBJC_GEN_METHOD_LABEL): Add default definition.
+ * config/m68k/next.h (OBJC_GEN_METHOD_LABEL): Accept additional arg.
+
+Mon Mar 8 12:01:49 1993 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (const_binop): When evaluating a shift, ignore
+ overflows generated by force_fit_type.
+
+Mon Mar 8 07:24:30 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_gen_binary, simplify_plus_minus): New functions.
+ (find_best_addr): Use cse_gen_binary.
+ (simplify_binary_operation, fold_rtx): Likewise.
+ Remove most special-cases for PLUS and MINUS and call
+ simplify_plus_minus instead.
+ Clean up some tests for FP.
+
+ * cse.c: Add prototypes for static functions.
+ (struct cse_basic_block_data): Move to front of file since it
+ constains struct used in a prototype.
+ (refers_to_p, find_best_addr): Now static.
+
+ * expr.h: Clean up prototypes for functions in expr.c and
+ optabs.c and add some missing ones.
+
+ * optabs.c: Add prototypes for static functions.
+ (init_libfuncs): Put args in proper order.
+
+Sun Mar 7 07:59:34 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c: Add prototypes for static functions.
+ (fill_simple_delay_slots): Add missing declaration of arg.
+
+Sat Mar 6 15:08:59 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c: Handle long options by translation to old-style ones.
+ (translate_options): New function.
+ (option_map): New table.
+
+ * config/i386/t-iscscodbx: New file.
+ * configure (i[34]86-*-isc*, i[34]86-*-sco...): Use that if stabs.
+
+ * reload1.c (choose_reload_regs): Handle SUBREG in reload_earlyclobber
+ when matching output reloads for setting reload_when_needed.
+
+Sat Mar 6 08:43:09 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * genattrtab.c (write_test_expr): Use INSN_CODE == -2, not 0, for
+ constant attributes.
+
+ * genattrtab.c: Add prototypes in forward declarations.
+ Add some missing parameters to a few calls.
+
+Sat Mar 6 07:41:36 1993 Doug Evans (dje@cygnus.com)
+
+ * calls.c (expand_call): Fix typo in unaligned code.
+
+Fri Mar 5 20:32:28 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * i386/svr3gas.h, i386/svr3dbx.h, i386/iscdbx.h, i386/scodbx.h,
+ i386/sco4dbx.h, svr3.ifile, svr3z.ifile: New files.
+ * configure (i[34]86-...): Use them if configured --with-stabs.
+ * i386/isccoff.h: Renamed from i386/i386isc.h.
+ * i386/iscgas.h: Renamed from i386/i386iscgas.h.
+
+Fri Mar 5 19:41:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_assignment): Special handling for storing in
+ RESULT_DECL.
+
+Fri Mar 5 17:48:41 1993 Chris Smith (csmith@mozart.convex.com)
+
+ * cse.c (simplify_binary_operation): Move integer CONST_DOUBLE
+ folding out of REAL_IS_NOT_DOUBLE conditional.
+ (simplify_relational_operation): Put float CONST_DOUBLE folding
+ under a REAL_IS_NOT_DOUBLE conditional.
+ Add folding for integer CONST_DOUBLE comparisons.
+
+Fri Mar 5 17:37:20 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md: Add new define_split for doing sign-extended adds
+ of some large constants using sNaddl.
+
+ * function.c (fixup_var_refs_insns): If SMALL_REGISTER_CLASSES,
+ ensure we don't put any insns between the setting of the function
+ return register and it's use.
+
+Fri Mar 5 15:11:41 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (FIXED_REGISTERS): %r2 is no longer fixed.
+ (REG_ALLOC_ORDER): Treat %r2 as a caller-saved allocatable
+ register. %r30 is fixed and therefore a "special" register.
+ %fr22-%fr31 are caller-saved, so allocate them before the
+ callee-saved 1.1 fp registers. Allocate fp registers before
+ general registers. Fix typo for register 79.
+
+ * pa.c (output_function_epilogue): Perform an early %r2 restore
+ even if actual_fsize is zero. This can happen if %r2 is used
+ as a temporary in a leaf function.
+
+ * pa.h (FIRST_PSEUDO_REGISTER): Update to take into account
+ registers which are no longer known to the compiler.
+ (FIXED_REGISTERS): Likewise.
+ (CALL_USED_REGISTERS): Likewise.
+ (HARD_REGNO_NREGS): Likewise.
+ (HARD_REGNO_MODE_OK): Likewise.
+ (REGNO_REG_CLASS): Likewise.
+ (FUNCTION_VALUE): Likewise.
+ (LIBCALL_VALUE): Likewise.
+ (FUNCTION_VALUE_REGNO_P): Likewise.
+ (FUNCTION_ARG_REGNO_P): Likewise.
+ (FUNCTION_ARG): Likewise.
+ (REGNO_OK_FOR_FP_P): Likewise.
+ (REGISTER_NAMES): Likewise.
+ (REG_CLASS_CONTENTS): Likewise. Add %r1 to GENERAL_OR_FP_REGS
+ and GENERAL_OR_SNAKE_FP_REGS.
+ (REG_ALLOC_ORDER): Likewise. Document and make allocation order
+ "regular" across 1.0 and 1.1 cpus.
+
+ * pa.c (compute_frame_size): Update to take into account
+ register which are no longer known to the compiler.
+ (output_function_prologue): Likewise.
+ (output_function_epilogue): Likewise.
+ (output_arg_descriptor): Likewise.
+
+
+Fri Mar 5 12:45:51 1993 Jim Wilson (wilson@geech.gnu.ai.mit.edu)
+
+ * sparc.c (output_function_prologue, output_function_epilogue):
+ Add comments for frame_base_name usage in leaf_functions.
+
+ * gcc.c (main): Put argv[0] in collect_obstack instead of programname.
+
+ * cse.c (note_mem_written): QImode varying structure memory
+ accesses can alias scalars.
+
+Thu Mar 4 10:05:52 1993 Juergen Keil (jk@leo.tools.de)
+
+ * c-decl.c (store_parm_decls,combine_parm_decls): Call layout_decl
+ for a parm declared float when it is changed to double under a
+ traditional compilation.
+
+Thu Mar 4 17:52:52 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (ASM_OUTPUT_INT): If TARGET_SHARED_LIBS, then references to
+ functions which do not occur in the text space must have a PLABEL
+ ("P%") prefix to make the assembler and linker happy.
+
+Thu Mar 4 17:18:57 1993 Steve Chamberlain (sac@geech.gnu.ai.mit.edu)
+
+ * emit-rtl.c (init_emit_once): Initialize const_tiny_rtx for
+ partial ints too.
+
+ * convert.c (convert_to_pointer): Fix typo comparing size of
+ integer and pointers.
+ * varasm.c (immed_double_const): Cope with MODE_PARTIAL_INT.
+ (output_constant_pool): Likewise.
+
+Thu Mar 4 15:18:15 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-common.c (truthvalue_conversion): Fix handling of COMPLEX_EXPR.
+ Handle all complex values specially.
+
+Thu Mar 4 13:48:38 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (recognizer for general uaddcm): New pattern.
+
+ * pa.md (iorsi3): New DEFINE_EXPAND.
+ (iorsi3 recognizer for [reg reg]): Now unnamed.
+ Put output template here, don't call output_ior.
+ * pa.c (output_ior): Don't handle reg operands.
+
+Thu Mar 4 13:14:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (fold): Handle complex constants as "winning".
+ Handle REALPART_EXPR and IMAGPART_EXPR.
+
+Thu Mar 4 13:08:53 1993 Steve Chamberlain (sac@geech.gnu.ai.mit.edu)
+
+ * config.sub (h8300hds): Change hds to hms.
+ * configure (h8300-*-*): Added.
+ * h8300.c, h8300.h, h8300.md, t-h8300, xm-h8300.h: New files.
+
+Thu Mar 4 10:31:17 1993 Michael Meissner (meissner@osf.org)
+
+ * gcc.c (link_command_spec): Add missing \ before newline inside
+ character string.
+
+ * c-parse.in (all_iter_stmt_simple): Add missing comma so that
+ Objective C compiles.
+
+Thu Mar 4 02:43:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (emit_no_conflict_block): Don't move target to itself
+ if that takes multiple insns.
+ (expand_binop): For complex mult and div, avoid fetching operand
+ components more than once from memory.
+
+ * dbxout.c (dbxout_type): Handle complex integer types.
+
+Wed Mar 3 16:01:11 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (common_type): Handle complex types.
+
+ * machmode.def: Add complex integer modes.
+
+ * c-common.c (truthvalue_conversion): Handle COMPLEX_EXPR.
+
+ * c-typeck.c (lvalue_p): Handle REALPART_EXPR, IMAGPART_EXPR.
+ (build_binary_op, build_unary_op): Handle complex types.
+
+ * c-parse.gperf: Add `__complex', `__complex__'.
+ Add `__iterator'. Delete `iterator'.
+
+ * tree.c (build_complex): Set the TREE_TYPE based on real part.
+
+ * c-lex.h (RID_COMPLEX): New constant.
+ * c-lex.c (init_lex): Initialize rid pointers for complex.
+ (yylex): Handle i or j in numeric constant.
+
+ * c-decl.c (init_decl_processing): Create complex types.
+ (grokdeclarator): Handle complex keyword.
+ Distinguish int-by-default from int keyword.
+ * c-tree.h: Declare vars to hold complex types.
+
+ * c-convert.c (convert): Handle conversion to complex type.
+ * convert.c (convert_to_real): Convert complex to real.
+ (convert_to_integer): Likewise.
+ (convert_to_complex): New function.
+ * convert.h (convert_to_complex): Declared.
+
+Wed Mar 3 15:34:36 1993 Per Bothner (bothner@hal.gnu.ai.mit.edu)
+
+ * tree.c (build_range_type): New function.
+ * tree.c (build_index_2_type): Re-implement using build_range_type.
+
+Wed Mar 3 08:34:43 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.c (lhs_lshift_operand): New function.
+ (lhs_lshift_cint_operand): New function.
+ * pa.md (ashlsi3): Use lhs_lshift_operand for operand 1.
+ Call gen_zvdep_imm when operand 1 is a CONST_INT.
+ (zvdep_imm): New pattern.
+
+ * pa.c (print_operand): Handle L and P for bit field instructions.
+ * pa.md (ashift recognizer for [reg const_int]): Use %P and %L
+ output modifiers.
+ (ashiftrt recognizer for [reg const_int]): Likewise.
+ (lshrsi3): Likewise.
+ (rotrsi3): Reduce integer argument to 5 bits.
+
+ * pa.md: Remove some empty lines.
+
+ * pa.c (pa_adjust_cost): Replace, the function of Mar 2 was an old
+ version.
+ (output_fp_move_double): Use %r syntax for registers.
+
+Wed Mar 3 01:42:42 1993 Per Bothner (bothner@hal.gnu.ai.mit.edu)
+
+ * tree.def (INTEGER_TYPE): Clarify comment to make clear that
+ INTEGER_TYPEs are used for arbitrary range types (i.e.
+ sub-ranges of enums) in languages that need them.
+ * dbxout.c (dbxout_type_range): New function: Common code
+ needed for both range types and array index types.
+ Fixes some problems common in both places: Now handles
+ non-zero lower bound, variable bounds (sort of), and ranges
+ of non-integer (e.g. enum) types.
+ * dbxout.c (dbxout_type): Use dbxout_type_range.
+
+Tue Mar 2 23:34:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (main): Use strlen, not sizeof, for our_file_name.
+
+ * c-common.c (convert_and_check): No warning for converting
+ signed integer to unsigned of same width.
+
+Tue Mar 2 18:59:39 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu.edu)
+
+ * c-iterate.c (collect_iterators): Handle simple expressions quickly.
+ Don't try to interpret operands that are RTL as if they were trees.
+
+ * regclass.c (regclass): Don't set REGNO_POINTER_FLAG here.
+ (reg_scan_mark_refs): Set it here.
+ Accept INSN, not UID as arg.
+ (reg_scan): Call reg_scan_mark_refs with INSN, not UID.
+
+Tue Mar 2 18:03:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-act.c (handle_class_ref): Call assemble_external.
+
+Tue Mar 2 15:56:17 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * genattrtab.c (write_const_num_delay_slots): Output 'rtx insn' not
+ 'rtx *insn' for const_num_delay_slot argument.
+
+ * gcc.c (main): Truncate programname to what is after last slash.
+
+ * cccp.c (do_include): Warn if find unreadable header file.
+ (errno.h): Move outside VMS specific section.
+
+ * sparc.c (print_operand): Use output_operand_lossage, not abort.
+
+ * sparc.h (SETUP_FRAME_ADDRESS, DYNAMIC_CHAIN_ADDRESS,
+ RETURN_ADDR_IN_PREVIOUS_FRAME, RETURN_ADDR_RTX): Define.
+ * sparc.md (flush_register_windows, goto_handler_and_restore):
+ Give names to these patterns so they are easier to use.
+ * expr.c (expand_builtin, BUILT_IN_FRAME_ADDRESS case): Use new
+ macros SETUP_FRAME_ADDRESSES and RETURN_ADDR_IN_PREVIOUS_FRAME.
+
+ * reorg.c (relax_delay_slots): Delete jump around insn identical
+ to the insn in its delay slot.
+
+ * i960.c (i960_output_call_insn): Delete scratch_reg arg. Use r3
+ instead.
+ * i960.md (call_internal*): Use hard register 19 (r3) in clobber
+ instead of match_scratch.
+
+ * i960.md (mov*): Only accept store zero to memory insn if
+ rtx_equal_function_value_matters is zero.
+ * i960.h (rtx_equal_function_value_matters): Declare.
+
+ * emit-rtl.c (gen_sequence): Add push_obstacks_nochange and
+ pop_obstacks calls around rtl_in_saveable_obstack call.
+ * varasm.c (immed_double_const, immed_real_const_1): Likewise.
+ * tree.c (rtl_in_saveable_obstack): Always switch to saveable_obstack.
+ Return type now void instead of int.
+
+Tue Mar 2 14:57:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (link_command_spec): Do nothing if -fsyntax-only.
+
+Tue Mar 2 14:17:47 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.h (ADJUST_COST): Add new definition.
+ * pa.c (pa_adjust_cost): New procudure.
+
+Tue Mar 2 02:12:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (gen_move_insn): Big `if' applies only for MODE_CC class.
+
+ * config/m68k/next.c (handle_pragma): New arg get_line_function.
+ * config/m68k/next.h (HANDLE_PRAGMA): Pass suitable arg.
+ * c-lex.h (get_directive_line): Declared.
+
+Tue Mar 2 10:48:46 1993 Wilson Tien (wtien at urbana.mcd.mot.com)
+
+ * m68k.md (truncdfsf2+2): Use f%$move instead of fsmove.
+
+ * m68k.md (fix_truncdfsi2, fix_truncdfhi2, fix_truncdfqi2):
+ Use %# instead of #.
+
+ * m68k.md (call, call_value): Set SYMBOL_REF_FLAG for the called
+ function symbol_ref rtx. In PIC mode, output `bsr FUNC@PLTPC'
+ when the operand is symbol_ref.
+
+ * m68kv4.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Use SIZE instead
+ of ROUNDED.
+
+ * m68kv4.h (ASM_OUTPUT_CASE_LABEL): Always use `swbeg' syntax to
+ output switch table (m68k.md depends on this to happen).
+
+ * m68kv4.h (LEGITIMATE_PIC_OPERAND_P): Treat a symbol_ref rtx with
+ SYMBOL_REF_FLAG set a valid PIC operand.
+
+ * m68kv4.h (OVERRIDE_OPTIONS): Turn off function cse when doing pic.
+
+ * m68k.c (output_function_prologue): Use m68k svr4 PIC format to
+ load the address of _GLOBAL_OFFSET_TABLE_ into PIC_OFFSET_TABLE_REG
+ in function prologue when doing PIC.
+
+ * m68k.c (print_operand_address): Always add "@GOT" suffix for the
+ global object operand when doing PIC.
+
+Mon Mar 1 19:00:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.h (RID_ITERATOR): New alternative.
+ * c-tree.h (ITERATOR_P, ITERATOR_BOUND_P): New macros.
+
+ * c-typeck.c (build_unary_op): Warn if increment `struct unknown *'.
+
+ * c-lex.c (init_lex): Set up ridpointers for `iterator'.
+ But maybe turn it off again.
+
+ * c-parse.gperf: Add `iterator' and `__iterator__'.
+
+ * c-decl.c (grokdeclarator): Handle iterator storage class.
+ (finish_decl): For iterator, require initial value, make a save_expr.
+ (init_decl_processing): Call init_iterators.
+
+ * c-parse.in (stmt): Allow all_iter_stmt.
+ (primary -> statement expression): Push and pop iterator stack.
+ (stmt -> expr): Use iterator_expand.
+ (all_iter_stmt): New rule.
+
+ * c-typeck.c (readonly_warning): Warn about assignment to iterator.
+
+ * c-iterate.c: New file.
+ * Makefile.in (c-iterate.o): New target.
+ (C_OBJS, OBJC_OBJS): Add c-iterate.o.
+
+ * Makefile.in (gcc.o): Delete dep obstack.h.
+
+Mon Mar 1 07:29:51 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * integrate.c (subst_constants): Use proper mode when getting
+ equivalent constant for paradoxical SUBREG in SET_DEST.
+ (mark_stores): Clean up and tighten to properly handle hard regs.
+
+ * combine.c (subst, case NOT): If STORE_FLAG_VALUE==-1, treat
+ an ASHIFTRT of just the sign bit as if it were an LT.
+ (subst, case XOR): Likewise for STORE_FLAG_VALUE==1 and an LSHIFTRT.
+ (simplify_and_const_int, case LSHIFTRT): If shifting a sign bit
+ copy, start shift at the sign bit.
+ (simplify_shift_const): Likewise for ASHIFTRT.
+
+ * combine.c (BYTE_LOADS_EXTEND): Fix typo when defining.
+ (setup_incoming_promotions): Set modes properly.
+
+ * alpha.md: Add three special-cases of CMP insns against zero.
+
+Mon Mar 1 06:17:02 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (CONSTANT_ADDRESS_P): Do not accept symbolic
+ addresses.
+ (LEGITIMIZE_ADDRESS): Just a stub now. Call
+ hppa_legitimize_address to do the real work.
+
+ * pa.c (symbolic_expression_p): New function.
+ (hppa_legitimize_address): Old LEGITIMIZE_ADDRESS moved
+ here. Handle symbol_ref + displacement addresses.
+ Use rounding instead of masking off lower bits.
+ Avoid creating useless pseudos and strip off CONST in
+ (const (...)) expressions to make processing easier.
+
+ * pa.md (define_split for symbol_ref+int): New define_split for
+ the combiner.
+
+Sat Feb 27 01:57:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (convert_for_assignment): New arg FUNDECL. Calls changed.
+ (convert_arguments): New arg FUNDECL.
+ (build_function_call): Pass function to convert_arguments, if a decl.
+
+ * config.sub: Error if company name is more than one word.
+ If $os is `sunos...', don't change it to manufacturer's name.
+
+ * enquire.c (fake_f_rep): Clear all of u, initially.
+ Make the ints in u unsigned.
+ (f_define): Use ordinary constants for long double
+ if it's same width as double.
+ Make __convert_long_double_i unsigned.
+
+ * va-i860.h (struct __gnuc_va_list): Test __svr4__ like __SVR4__.
+
+ * config/ns32k/ns32k.h (TARGET_SWITCHES): Reverse defn of 32332.
+
+ * expr.c (convert_move): Truncate via word_mode
+ only if to_mode fits in one word.
+ Truncate by referring in TO_MODE for any FROM,
+ but force_reg if nec.
+
+ * c-decl.c (pushdecl): Nested fn decl gets DECL_CONTEXT iff not extern.
+
+ * c-lex.c (check_newline): #line updates input_file_stack->name.
+
+ * c-typeck.c (convert_for_assignment): Automatically convert
+ to a union from its members' types.
+
+ * config/ns32k/ns32k.h (ASM_OUTPUT_ALIGN_CODE):
+ Pad with no-op insns.
+
+ * c-decl.c (grokdeclarator): Make `long long' work even with
+ -pedantic, despite the warning.
+
+Fri Feb 26 22:01:32 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * cccp.c (USER_LABEL_PREFIX, REGISTER_PREFIX): If not defined by
+ tm.h, set to empty strings.
+ (enum node_type, special_symbol): Added T_USER_LABEL_PREFIX_TYPE
+ and T_REGISTER_PREFIX_TYPE, which expand to USER_LABEL_PREFIX and
+ REGISTER_PREFIX.
+ (initialize_builtins): New builtin definitions
+ __USER_LABEL_PREFIX__ and __REGISTER_PREFIX__.
+
+Fri Feb 26 18:08:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (distdir): Depend on cp-parse.y,
+ and the .c files for the .y files.
+
+ * c-decl.c (declare_parm_level): Unconditionally store 1.
+ (pushdecl): Criterion for no warning is, next level up
+ is a parm level.
+
+ * Makefile.in (all.cross): Depend on enquire.
+
+ * libgcc2.c (inhibit_libc): Renamed from inhibit_eprintf.
+ (L_new_handler): Don't include stdio.h if inhibit_libc.
+
+ * c-typeck.c (process_init_constructor): Error msg change.
+
+ * gstdarg.h (_VA_LIST_T_H): Test and define this.
+ * gvarargs.h (_VA_LIST_T_H): Test and define this.
+
+ * gstddef.h (_SYS_SIZE_T_H): Test this and define this.
+
+ * xm-pbd.h (USE_C_ALLOCA): Define here.
+ * pbd.h (USE_C_ALLOCA): Not here.
+
+ * tree.c (simple_cst_equal): New default case handles most
+ tree codes based on TREE_CODE_CLASS. Delete newly redundant cases
+ for specific tree codes.
+
+ * dbxout.c (dbxout_type): Enable output of subrange types
+ if use_gnu_debug_info_extensions.
+ (dbxout_finish_symbol): Enable output of symbols line number.
+
+ * c-typeck.c (initializer_constant_valid_p):
+ Allow cast of ptr to wider integer.
+
+Fri Feb 26 19:04:36 1992 Karl Berry (karl@cs.umb.edu)
+
+ * optabs.c (init_libfuncs): Use int instead of enum for
+ first_mode, last_mode, and mode.
+
+Fri Feb 26 14:29:22 PST 1992 Ron Guilmette (rfg@netcom.com)
+
+ * c-parse.in (ivar_decls): Give a pedwarn (instead of a warning) for
+ excess semicolons.
+
+ * cccp.c (do_include): Correctly report the directive name
+ when any kind of include directive has no argument or null argument.
+
+Fri Feb 26 11:27:35 1992 Tom Wood (wood@NeXT.com)
+
+ * toplev.c (compile_file): Use pedwarn_with_decl to warn about
+ functions declared static but not defined.
+ * c-decl.c (store_parm_decls): Use pedwarn.
+
+Fri Feb 26 10:34:33 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (uninstall): Also remove the g++ manual page.
+
+Fri Feb 26 01:29:53 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cexp.y (parse_escape): Don't treat ^ as special after \.
+
+Fri Feb 26 21:37:29 1993 John F Carr (jfc at Athena.MIT.EDU)
+
+ * varasm.c (make_decl_rtl): Print an error for explicit register
+ variable whose type cannot be stored in that register.
+
+Fri Feb 26 17:07:25 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * machmode.def: Added 32-byte int OImode.
+
+Fri Feb 26 13:59:23 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * explow.c (memory_address): Use CONSTANT_ADDRESS_P instead of
+ LEGITIMATE_CONSTANT_P.
+ (break_out_memrefs): Likewise.
+
+Fri Feb 26 06:18:40 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case IN_EXPR): Fix numerous small bugs and
+ make some cleanups.
+
+ * recog.c (constrain_operands, case 'r'): If STRICT, a REG isn't
+ valid if it is a pseudo even if GENERAL_REGS == ALL_REGS.
+
+ * alpha.h (LEGITIMIZE_ADDRESS): Add missing args to calls to
+ expand_binop.
+
+Thu Feb 25 17:24:45 1993 Bill Cox (bill@rtl.cygnus.com)
+
+ * expr.h: Add prototypes for most expr-related functions.
+ * jump.c (jump_optimize): Add missing parameter in expand_binop call.
+
+Thu Feb 25 17:50:55 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * toplev.c: No need to #undef ABS; done in rtl.h.
+
+ * reorg.c (redundant_insn_p): Fix typo in testing for types of
+ insns by using GET_RTX_CLASS.
+
+ * expmed.c (emit_store_flag): Fix typo in testing BRANCH_COST.
+
+Thu Feb 25 14:32:31 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * combine.c (set_nonzero_bits_and_sign_copies): Fix typo in
+ paradoxical set dest handling.
+
+ * convert.c (convert_to_integer): Delete Feb 19 change.
+
+ * fold-const.c (decode_field_reference): Fix force_fit_type call.
+
+Thu Feb 25 07:38:36 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.sco: Use pwd if PWDCMD is not defined.
+
+Wed Feb 24 18:28:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/vax/vms.h (ASM_OUTPUT_EXTERNAL): Use vms_check_external.
+ (ASM_GLOBALIZE_LABEL): New definition; use vms_check_external.
+ * config/vax/vax.c (vms_check_external): New function.
+
+ * config/m68k/xm-mot3300.h (NO_SYS_SIGLIST): Defined.
+
+Wed Feb 24 16:01:42 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * loop.c (consec_sets_invariant_p): Correct REG_EQUAL note checks
+ to distinguish libcall case from ordinary insn case.
+
+ * loop.c (add_label_notes): Don't add notes for references to
+ dispatch tables because jump doesn't.
+ (find_and_verify_loops): Invalidate loops that contain labels
+ whose address has been taken.
+
+ * fixinc.svr4 (string.h): Delete 'g' from sed command.
+
+ * sparc.md (zero_extendqi*i2): Delete never matched constraints.
+
+ * i960.c (umulsidi3+1): Delete extra parenthesis.
+
+Tue Feb 23 15:09:50 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install-headers): Create relative paths for
+ symbolic links within installed include directory.
+
+Tue Feb 23 14:43:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (check_for_full_enumeration_handling): Handle nameless type.
+
+ * tree.h (CONSTRUCTOR_NAME_FORMAT): Handle NO_DOT_IN_LABEL.
+
+ * config/m68k/mot3300.h (NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL): Defined.
+
+ * collect2.c (is_ctor_dtor): Handle NO_DOT_IN_LABEL.
+
+Mon Feb 22 18:06:06 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.c (output_call): Don't use the delay slot of a bsr.n
+ to modify the return address, unless -O2 specified.
+
+Mon Feb 22 17:36:52 1993 Kresten Krab Thorup (krab at xiv)
+
+ * objc/core.c (initialize_class): Take Class_t instead of
+ char* as argument. Callers changed to pass the class.
+
+ * objc/core.c (initialize_class): Mark the class
+ initialized *before* the actual call of "+initialize". This is
+ needed in case of certain circular dependances between classes.
+
+ * objc/object.m (doesNotRecognize): Call sel_getName to get
+ the name of the selector, and print that.
+ (subclassResponsibility, notImplemented): Likewise.
+
+Mon Feb 22 00:23:47 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * expr.c (emit_library_call_value): Fix bug in prev change.
+
+ * Makefile.in (install-include-dir): Depend on install-dir.
+
+ * convert.c (convert_to_integer): #if 0 the truncated integer warning.
+
+Mon Feb 22 15:15:40 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * fold-const.c (all_ones_mask_p): Really use tmask.
+
+Mon Feb 22 11:59:09 1993 Michael Meissner (meissner@osf.org)
+
+ * fold-const.c (all_ones_mask_p): Declare tmask to be `tree'.
+ (optimize_bit_field_compare) Add missing semicolon.
+
+Sun Feb 21 20:20:13 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * expr.c (emit_library_call_value): Really pass mem value address
+ to the library function.
+
+Sun Feb 21 15:15:40 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * fold-const.c (decode_field_reference): Use force_fit_type
+ instead of convert to avoid truncated integer warning.
+ (all_ones_mask_p): Likewise.
+
+Sun Feb 21 13:06:00 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (load high pattern): Rework constraints to reduce %r1
+ spillage.
+
+ * pa.md (const_double -> FP pattern): Remove cases which can never
+ happen anymore.
+
+ * pa.c (print_operand, case 'Y'): Output comparison operators
+ which will give the right results when one or more operands is a NaN.
+
+Sun Feb 21 01:38:19 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * expr.c (emit_move_insn_1): New subroutine cut from emit_move_insn.
+ (emit_move_insn): Use that.
+ * optabs.c (gen_move_insn): Use emit_move_insn_1.
+ * expr.h (emit_move_insn_1): Declared.
+
+Sat Feb 20 20:33:51 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * cccp.c: Add declaration for pedwarn_with_line.
+
+Sat Feb 20 14:46:25 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * fixincludes (SRCDIR): Make absolute from ORIGDIR.
+ (sys/types.h): Quote variables that might expand with spaces.
+ Strip quotes from expansion of SIZE_TYPE.
+ (stdio.h): Fix typo deleting line.
+
+Sat Feb 20 18:41:05 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (warning_with_line, pedwarn_with_line): New functions.
+ (rescan): For pedantic, no error if string constant has newline,
+ just a pedwarn. And don't end the string constant there.
+
+Sat Feb 20 17:25:16 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * fold-const.c (decode_field_reference): Use force_fit_type
+ instead of convert to avoid truncated integer warning.
+
+Sat Feb 20 07:31:32 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * fixincludes: Change "va_list)" to "__gnuc_va_list)".
+
+Sat Feb 20 03:19:44 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes: Save temp file in ${LIB}.
+ Use -I${ORIGDIR} when compiling types.c.
+
+Fri Feb 19 00:45:41 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * convert.c (convert_to_integer): Warn if integer is truncated
+ and that changes the value.
+
+Thu Feb 18 20:15:20 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * aix386.h: Include aix386ng.h instead of duplicating it.
+ * 3b1.h (ASM_OUTPUT_CASE_END): Add missing semicolon.
+
+ * sparc.c (output_function_prologue): Don't save %f31 to stack.
+ * sparc.h (STARTING_FRAME_OFFSET): Set to -8.
+
+ * pbd.h, sol2.h, sparc.h, sysv4.h (CPP_PREDEFINES): Add
+ -D__GCC_NEW_VARARGS__.
+ * va-sparc.h (va_start): If __GCC_NEW_VARARGS__ not defined, use
+ old definition.
+
+ * final.c (end_final): Don't call assemble_zeros with an size
+ argument of zero.
+
+ * move-if-change: Use cmp -s instead of redirecting output to
+ /dev/null.
+
+ * calls.c (expand_call): When MAYBE_REG_PARM_STACK_SPACE defined,
+ if reg_parm_stack_space is zero, set args_size.constant to zero.
+
+Thu Feb 18 17:43:30 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/core.c (__objc_execClass):
+ Don't assign superclass pointer more than once.
+
+ * objc/record.h (record_store_at, record_get):
+ Test record_capacity, not record_entries, in assertion.
+
+ * flow.c (regno_uninitialized): Test global_regs only for hard regs.
+
+ * c-lex.c (yylex): Undo Feb 7 change.
+ * c-parse.in (program): After extdefs, pop any unpopped binding lvls.
+
+ * Makefile.in (BISONFLAGS): Add -v.
+
+Wed Feb 17 18:51:51 1993 Karl Berry (karl@owl.hq.ileaf.com)
+
+ * toplev.c (ABS): #undef after including sys/resource.h.
+
+Wed Feb 17 22:02:09 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.c (emit_ldst): For large offsets use register index
+ instead of immediate.
+
+Wed Feb 17 18:02:26 EST 1993 John Wehle (john@feith.com)
+
+ * we32k.h (CONST_COSTS): Updated to better reflect
+ the actual constant costs on a we32k.
+
+ * we32k.md (truncdfsf2, extendsfdf2): Changed from
+ define_insn to expand_insn so the optimizer can do
+ a better job.
+
+ * we32k.h (GO_IF_LEGITIMATE_ADDRESS): Added support for
+ deferred addressing.
+
+ * we32k.md: Eliminated a jmp pattern and the peephole
+ patterns which are no longer needed now that deferred
+ addressing is supported.
+
+Wed Feb 17 17:55:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (sys/types.h): Replace definition of size_t
+ based on SIZE_TYPE.
+
+Wed Feb 17 06:54:42 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * config/m88k/m88k.h (CONST_OK_FOR_LETTER_P): Added 'K'.
+ * config/m88k/m88k.md: Use 'K' constraint with arith5_operand
+ predicate.
+
+Wed Feb 17 03:04:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (stmp-fixinc): Renamed from stmp-fixincludes.
+
+Tue Feb 16 14:34:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/sparc/sparc.h (ASM_OUTPUT_IDENT, IDENT_ASM_OP): Defined.
+
+Tue Feb 16 02:48:58 EST 1992 John Wehle (john@feith.com)
+
+ * reload.c (find_reloads_address): Use strict_memory_address_p
+ to check for valid indirect address.
+
+ * xm-we32k.h: Include xm-svr3.h. Move tm.h include earlier.
+ (HOST_BITS_PER_LONGLONG, HOST_WORDS_BIG_ENDIAN): Defined.
+ (USG, bcopy, bzero, bcmp): Deleted.
+ (alloca): Definition moved before tm.h.
+
+Tue Feb 16 01:28:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_indirect_ref): Avoid *& short-cut if -fvolatile.
+
+Mon Feb 15 22:22:08 1993 Michael Meissner (meissner@osf.org)
+
+ * mips/osfrose.h (CPP_SPEC): When preprocessing .S files, pass
+ -traditional if neither -ansi nor -traditional was passed, to
+ allow the macros which form labels to not give gas heartburn.
+
+ * i386/osfrose (CPP_SPEC): Ditto.
+
+Mon Feb 15 02:17:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-act.c (HASHFUNCTION): insure nonnegative hash even if
+ addresses are negative.
+
+Sat Feb 13 04:16:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (c_decode_option): Handle -Wmissing-braces.
+ * c-typeck.c (process_init_constructor): Test warn_missing_braces.
+ * c-tree.h (warn_missing_braces): Declared.
+
+Fri Feb 12 19:40:38 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * combine.c (setup_incoming_promotions): Make static.
+
+Fri Feb 12 16:02:52 1993 Per Bothner (bothner@hal.gnu.ai.mit.edu)
+
+ * tree.def: Fix typo in comment (TREE_VALUES -> TYPE_VALUES).
+
+Fri Feb 12 11:26:28 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (rotlsi3): Fix typo, rotate was rotatert in rtl template.
+
+Fri Feb 12 07:47:11 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * function.c (reposition_prologue_and_epilogue_notes): Allow
+ for zero length prologue and epilogue list.
+
+Thu Feb 11 05:55:33 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * collect2.c (find_a_file): Always reject "./ld".
+ (main): Pass short name of program as first arg to fork_execute;
+ ensure argv[0] always gets filename.
+ (fork_execute): Print name for diagnostic from PROG; filename
+ comes from argv[0].
+
+ * fixincludes: Don't assume that macros defining IO and CTRL
+ ioctl codes always use `x'; some use `c' or `g'.
+
+ * collect2.c (putenv): New function, copied from gcc.c.
+ (last_file_name): New variable.
+ (find_a_file): Ignore name in last_file_name too.
+ (main): Look at name in COLLECT_NAME and set it to the name we were
+ called with.
+ Pass filename used for ld to ld as argv[0].
+
+Thu Feb 11 03:55:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_builtin): Move memory_address calls
+ out of arglist of emit_block_move.
+
+Wed Feb 10 16:14:09 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Update Alpha support to latest calling sequence.
+ * alpha.c (version_string): Declare.
+ (current_file_function_operand): New function, replaces
+ current_function_operand.
+ (print_operand, case 'F'): Case deleted.
+ (alpha_builtin_saveregs): Reworked to use homed arglists, as
+ recommended in the calling standard.
+ (alpha_need_gp): Deleted, code moved into output_prolog.
+ (alpha_gp_dead_after): Deleted; optimization is not safe.
+ (alpha_write_verstamp): New function.
+ (output_prolog, output_epilog): Major rework to update to
+ current calling standard.
+ * alpha.h (ASM_OUTPUT_LOOP_ALIGN): Enable, now that assembler fixed.
+ (SLOW_UNALIGNED_ACCESS): Define as 1.
+ (ARG_POINTER_REGNUM): Use register number 31 as an arg pointer.
+ (FRAME_GROWS_DOWNWARD): Do not define.
+ (STARTING_FRAME_OFFSET): Now is outgoing args size.
+ (FIRST_PARM_OFFSET): Now 0.
+ (ELIMINABLE_REGS, etc.): Cannot eliminate gp, but do
+ eliminate AP in favor of either SP or FP.
+ (RETURN_IN_MEMORY): All structs or integers larger than 64
+ bits get returned via memory.
+ (SETUP_INCOMING_VARARGS): Use homed arglist mechanism.
+ (ASM_DECLARE_FUNCTION_NAME): Use proper second arg to .ent.
+ (ASM_FILE_START): Call alpha_write_verstamp.
+ (ENCODE_SECTION_INFO): Record when a decl is for a function
+ in the current file.
+ * alpha.md (call insns): Always reload gp after a full call.
+ Use current_file_function_operand to see when we can use BSR.
+
+Wed Feb 10 09:53:00 1993 John Hassey (hassey@wombat.gnu.ai.mit.edu)
+
+ * config.sub: removed m88kbcs, changed delta88 and harris to
+ use sysv3.
+
+Wed Feb 10 03:29:11 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (duplicate_decls): Silently accept harmless mismatch
+ in type of 1st arg of builtin function.
+
+ * c-typeck.c (build_indirect_ref): If arg is void *, just warn.
+
+Tue Feb 9 22:15:08 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * alpha.md (fix_truncdfdi2, fix_truncsfdi2): Use `cvttqc', not
+ `cvttq', to avoid rounding up.
+
+Tue Feb 9 18:45:57 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (promoted_input_arg): New function.
+ * expr.h: Declare it.
+ * combine.c (setup_incoming_promotions): New function.
+ (combine_instructions): Add calls to setup_incoming_promotions.
+
+Tue Feb 9 14:04:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * fixincludes: Fix logic about when to duplicate entries under the
+ `FILE' link.
+
+Tue Feb 9 13:22:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Fix lineno of "does not end in newline" message.
+ (finclude): Likewise.
+
+Tue Feb 9 12:03:37 1993 Michael Meissner (meissner@osf.org)
+
+ * mips/mips.c (function_epilogue): Avoid integer overflows in
+ checking whether $31 is the only register saved.
+ (mips_epilogue_delay_slots): Ditto.
+
+Tue Feb 9 05:46:17 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rtl.h: Undefine ABS; some POSIX systems define it as 1.
+
+ * combine.c (combine_instructions): When calling
+ set_nonzero_bits_and_sign_copies, set things up so that we
+ can call get_last value; call record_dead_and_set_regs in loop.
+ (set_nonzero_bits_and_sign_copies): Handle paradoxical SET.
+
+Tue Feb 9 01:13:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (yylex): For wide char constant, use wchar_type_node.
+ Swallow any preprocessing number as a (possibly erroneous) number.
+
+ * tree.c (size_in_bytes): Add 2nd arg to force_fit_type.
+
+Mon Feb 8 07:52:23 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure (*-*-hpux*): Use install-headers-cpio.
+
+Mon Feb 8 07:13:49 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * toplev.c (compile_file): Don't flag global register variables
+ as unused.
+
+Mon Feb 8 06:06:58 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (extendsidi2): Use correct mnemonic for cwtl opcode.
+
+Mon Feb 8 05:52:08 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (emit_push_insn): If REG is zero, don't set regs here.
+ * expr.h (MUST_PASS_IN_STACK_BAD_ALIGN): Deleted.
+ (MUST_PASS_IN_STACK): No problem anymore with nonaligned structs.
+ * calls.c: Allow passing nonaligned BLKmode structs in regs.
+ (struct arg_data): New fields aligned_regs and n_aligned_regs.
+ (expand_call): Set and use these fields when required.
+ (store_one_arg): Don't pass reg to emit_push_insn if we have
+ previously formed aligned registers.
+
+Sun Feb 7 23:34:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expmed.c (emit_store_flag): Add missing arg to convert_move.
+
+Sun Feb 7 16:13:05 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu.edu)
+
+ * calls.c (struct arg_data): New field MODE.
+ (expand_call, store_one_arg): Use it to ensure that all args get
+ promoted if requested, not just those passed in registers.
+
+Sun Feb 7 13:12:23 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (yylex): At eof, if binding levels not popped,
+ imagine some close-braces to pop them.
+
+Sun Feb 7 10:54:42 1993 Chip Salzenberg (chip@tct.com)
+
+ * fold-const.c (fold): Call force_fit_type with two parameters.
+
+ * fold-const.c (force_fit_type): Don't examine the tree until
+ it is known to an INTEGER_CST. If it isn't, just return.
+
+Sat Feb 6 20:26:09 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * byteorder.h (386 htonl,htons): Avoid hard-coded register usage.
+
+Sat Feb 6 20:23:02 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/m68k.md (movqi): For special case of moving byte
+ to stack, push into low byte and then copy to high byte.
+ For case of moving to/from address reg, exchange it with d0.
+
+Fri Feb 5 19:58:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_expr_stmt): Bypass fetching a volatile value
+ if it is VOIDmode.
+
+Fri Feb 5 18:27:27 1993 Jim Wilson (wilson@geech.gnu.ai.mit.edu)
+
+ From Fred Fish (fnf@fishpond.cygnus.com)
+ * config.sub (i[34]86sol2): New abbrev for i[34]86-unknown-solaris2.
+ * configure (i[34]86-*-solaris2): New config for Solaris 2, x86.
+ * crtstuff.c (__do_global_ctors_aux): Use FORCE_INIT_SECTION_ALIGN
+ to avoid Solaris 2, x86 linker bug.
+ * config/i386/{sol2-c1.asm, sol2-ci.asm, sol2-cn.asm}: New runtime
+ support files for Solaris 2, x86.
+ * config/i386/{sol2.h, t-sol2}: New config files for Solaris 2, x86.
+
+ * sparc.h (EXTRA_CONSTAINTS): Delete 'R' support.
+ (CONST_OK_FOR_LETTER_P): Correct 'K' comment.
+
+ * caller-save.c (CEIL): Delete.
+ (restore_referenced_regs): New var NUMREGS. Pass NUMREGS to
+ insert_save_restore instead of using using CEIL.
+
+ * sched.c (true_dependence, anti_dependence, output_dependence):
+ Assume that MEM_IN_STRUCT_P QImode varying addresses can overlap a
+ non-MEM_IN_STRUCT_P fixed address.
+
+ * i960.c (legitimate_address_p): Accept either REG or SUBREG where
+ a register is valid in an address.
+
+ * configure (*-*-sco*): Set install_headers_dir to cpio instead of tar.
+
+ * cccp.c (finclude): Error if try to include a directory.
+ (S_ISDIR): Add a default definition.
+
+Fri Feb 5 10:24:35 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * toplev.c (lang_options): Remove `-fSOS' and `-fno-SOS'.
+
+ Wed Feb 3 16:34:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (init_decl_processing): Add __builtin_args_info.
+
+ Wed Feb 3 12:47:02 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (finish_struct_methods): Avoid creating a circularity
+ when putting ctors and dtors at the front of the list.
+
+ * cp-init.c (build_new): Call c_sizeof_nowarn, not c_sizeof.
+ (build_delete): Likewise.
+
+ Tue Feb 2 09:57:29 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (yyprint): Make non-static.
+
+ Mon Feb 1 17:09:19 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (real_yylex): Use pedwarn for exceeding the range of a
+ double.
+
+ Sat Jan 30 13:09:35 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-method.c (hack_identifier): Also check for VALUE being a
+ RESULT_DECL before looking for the DECL_REFERENCE_SLOT.
+
+ * cp-decl2.c (bad_specifiers): Pass OBJECT into error.
+
+ Fri Jan 29 11:46:46 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (alter_visibility): Forbid reducing the visibility of a
+ public member of the derived class.
+
+ * cp-typeck.c (comp_target_parms): Give a contravariance warning
+ with P2, not P1, since P1 is the established value, not the argument
+ that's coming in for a match.
+
+ * cp-decl.c (start_method): When printing out the class name for a
+ duplicate definition, be sure to avoid a null context with the
+ second definition.
+
+ Tue Jan 26 15:39:54 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (lookup_template_class): Try to use the class value if
+ there's no global value.
+
+ Mon Jan 25 15:59:21 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_method_call): Remove TYPE_NEEDS_WRAPPER cruft.
+
+ Sat Jan 23 12:13:24 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-class.c (finish_struct): See to that static members whose type
+ is the class they're declared in gets a correct mode.
+
+ Mon Jan 25 11:04:23 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-decl.c (define_label): Don't report crossings of any internal
+ entity initializations. Don't dereference NULL.
+
+ Wed May 13 21:44:05 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * cp-decl2.c: Support for NO_DOT_IN_LABEL.
+ * cp-tree.h: Likewise.
+ * cp-method.c: Likewise.
+
+ * cp-except.c: Support for no JOINER setups (i.e. NO_DOT_IN_LABEL)
+ * cp-lex.c: Likewise.
+ * cp-search.c: Likewise.
+
+ Fri Jan 22 08:52:58 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-call.c (resolve_scope_to_name): Try to find nested types not
+ just in the current class and at global scope but at all
+ intermediate classes as well.
+
+ Mon Jan 25 11:04:23 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-decl.c (xref_tag): Enable test of incomplete basetypes.
+ * cp-tree.c (layout_basetypes): Disabled it here.
+
+ Mon Jan 25 11:04:23 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-init.c (build_new): Move error check of array size before use.
+
+ Sun Jan 24 21:41:09 1993 John Carr (jfc@Athena.MIT.EDU)
+
+ * cp-typeck.c (build_binary_op_nodefault): Add support for
+ FLOOR_MOD_EXPR, merged in from the c front-end.
+
+Wed Feb 3 18:23:07 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-act.c (init_objc): Use xrealloc, not realloc.
+
+ * expr.c (emit_library_call, emit_library_call_value):
+ Handle STACK_BOUNDARY when using push insns.
+
+Tue Feb 2 16:37:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_zeros): Output nothing rather than empty skip.
+
+ * c-typeck.c (build_conditional_expr): Always convert and check
+ both result operands even if condition is constant.
+ (build_c_cast): Bypass default_conversion when casting to void.
+
+ * c-decl.c: Add some braces for clarity.
+
+ * configure (i[34]86-*-linux*): Set fixincludes to Makefile.in
+ Don't set tmake_file.
+ * Makefile.in (stmp-fixincludes): Don't run FIXINCLUDES
+ if it is Makefile.in.
+ * t-linux: File deleted.
+
+ * Makefile.in (install-headers-cpio): Delete spurious parens
+ from around the whole command.
+ (install-headers-tar): Delete parens around the "source" tar cmd.
+
+Tue Feb 2 15:20:52 1993 Chip Salzenberg (chip@tct.com)
+
+ * c-decl.c (pushdecl): DECL_EXTERNAL implies TREE_PUBLIC,
+ so don't bother to check for both.
+
+ * regclass.c (int_reg_class_contents): Make unsigned to avoid
+ signed integer overflow.
+ (init_reg_sets): Avoid signed integer overflow.
+
+ * cexp.y (parse_escape): Support \E and \e like cc1:
+ they mean \033, and they generate a warning if pedantic.
+
+Tue Feb 2 15:17:38 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * t-sol2 (INSTALL_TARGET): Delete.
+
+Tue Feb 2 14:18:59 1993 Brendan Kehoe (brendan@cygnus.com)
+
+ * Makefile.in (gcc.o): Depend upon config.status, so any changes
+ in prefix will be communicated to the build process.
+ (cccp.o): Likewise.
+
+Tue Feb 2 07:09:36 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (cmov): Use @ for output.
+
+Mon Feb 1 01:50:54 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (finish_decl, grokdeclarator, finish_struct): Report
+ overflows in storage sizes.
+ (build_enumerator): Report overflows in enumerators.
+ * fold-const.c (same_sign): Remove.
+ (lshift_double): Don't report arithmetic overflow, since the
+ C standard doesn't seem to require it here.
+ (force_fit_type): Accept new parameter specifying whether a signed
+ overflow has already occurred. Yield overflow indication.
+ All callers changed.
+ (neg_double): Don't report overflow when -0 yields 0.
+ (const_binop): Propagate operand overflow for warnings.
+ Don't report overflow when -1 + 1 yields 0.
+
+ * c-parse.in (unary_expr): Warn about overflows in parser-built
+ unary expressions.
+ * c-typeck.c (parser_build_binary_op): Warn about overflows and
+ conversions of out-of-range constants in parser-built binary
+ expressions.
+ (build_conditional_expr): Check conversions in if-then-else
+ expressions.
+ (build_c_cast): Ignore any integer overflow caused by a cast.
+ (convert_for_assignment): Warn if source had overflow in folding.
+ (process_init_constructor): Report overflows in array initializer
+ indexes.
+ * c-common.c (constant_expression_warning): Suppress duplicate
+ warnings.
+ (convert_and_check, overflow_warning, unsigned_conversion_warning):
+ New functions. Prototypes added to c-tree.h.
+
+ * expr.c (expand_builtin): Report overflow if __builtin_args_info
+ arg exceeds one word.
+ Fix punctuation of error messages.
+
+Sun Jan 31 17:45:11 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_and_const_int): Never consider bits outside
+ of MODE.
+
+Sun Jan 31 15:24:46 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * objc-act.c (build_module_descriptor): Fix call to start_function.
+
+Sun Jan 31 13:08:05 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (zvdep32): Handle 5 bit immediates for operand 1.
+ (ashlsi3): Likewise.
+ (and + ashift): New combine pattern.
+
+Sun Jan 31 12:40:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c: Include gvarargs.h before system headers.
+
+Sat Jan 30 18:51:46 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_compound_expr): insert missing return
+
+Sat Jan 30 16:10:56 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (reg_or_0_operand): Use CONST0_RTX instead of
+ const0_rtx.
+ (reg_or_0_or_nonsymb_mem_operand): New function.
+ (emit_move_sequence): Copying CONST0_RTX into any
+ register can be done directly. Use CONST0_RTX instead
+ of const0_rtx.
+ (output_fp_move_double): Handle copying a CONST0_RTX
+ into FP or integer registers.
+ (print_operand): Handle "%r0" for DFmode and SFmode
+ values too.
+
+ * pa.h (CONST_DOUBLE_OK_FOR_LETTER_P): Generalize.
+ (LEGITIMATE_CONSTANT_P): Allow 0.0.
+ (CONST_COSTS, case CONST_DOUBLE): fp0.0 is free when
+ not used in a SET expression.
+
+ * pa.md (cmpXf expands): Allow 0.0 for either operand
+ of the comparison.
+ (cmpXf insns): Allow 0.0 for either operand of the
+ comparison. Update output template to handle 0.0 as one
+ of the operands.
+ (movsi insn, fp->fp case): Update constraints and template to
+ allow store of zero into an FP register.
+ (movhi insn, fp->fp case): Likewise.
+ (movqi insn, fp->fp case): Likewise.
+ (movdi insn, fp->fp case): Likewise.
+ (movDF const_double pattern): Do not apply this pattern
+ if the const_double is zero.
+ (movdf insn, fp->fp and gr->gr cases): Update constraints
+ and output template to allow store of zero into a FP or GR.
+ Update condition string to allow zero as operand 1.
+ (movsf insn, fp->fp and gr->gr cases): Likewise. Also allow
+ store of zero into a memory location.
+
+Sat Jan 30 14:57:44 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-tree.h: Add many prototypes from bill@cygnus.com
+
+Sat Jan 30 01:06:52 1993 Niklas Hallqvist (niklas@spiff.gnu.ai.mit.edu)
+
+ * c-common.c (c_build_type_variant): Moved here from c-decl.c.
+ Redirected the TYPE_MAIN_VARIANT to the "real" main variant.
+ Build the possibly new array type on the permanent obstack if
+ the original type was permanent.
+ (permanent_obstack): Added extern declaration.
+ * c-decl.c (c_build_type_variant): Moved to c-common.c.
+
+Fri Jan 29 18:16:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/m68k.md (iorsi3): Add CC_STATUS_INIT if use bset.
+
+ * fold-const.c (force_fit_type): Abort if T not INTEGER_CST.
+ * tree.c (size_in_bytes): Only call force_fit_type for an INTEGER_CST.
+
+ * config/i386/t-linux (FIXINCLUDES): New file.
+ * configure (i[34]86-*-linux*): Use t-linux.
+
+Fri Jan 29 12:08:04 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * reload.c (find_reloads_toplev): When handling a (subreg (reg))
+ where (reg) will be replaced by a memory reference, if the memory
+ address is invalid for the mode of the subreg, then search the
+ memory address for reloads.
+
+ * pa.h (FIXED_REGISTERS): %r31 is not fixed.
+
+Thu Jan 28 23:49:25 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (compare_for_stack_reg): Properly swap operands of a
+ COMPARE.
+
+Thu Jan 28 13:47:53 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (iorsi3): Split into two patterns, a named "iorsi3" which
+ only accepts registers, and a combiner pattern which accepts a
+ restricted set of constant integers for one term.
+ * pa.c (ior_operand): Do not accept registers.
+
+ * pa.h (LEGITIMIZE_ADDRESS): Delete cases which can never happen.
+
+ * pa.h (CPP_SPEC for OLD_CC): Delete.
+ (CC1_SPEC for OLD_CC): Likewise.
+ (MODES_TIEABLE_P): Simplify.
+ (ASM_OUTPUT_ADDR_VEC_ELT): Fix comment.
+ (leaf_function): Delete unused variable.
+ (HARD_REGNO_MODE_OK): Delete old useless version.
+ (FIRST_PARM_OFFSET): Likewise.
+ (FIRST_PARM_CALLER_OFFSET): Likewise.
+ (EXPAND_BUILTIN_SAVEREGS): Likewise.
+ (ASM_OUTPUT_REG_PUSH): Likewise.
+ (ASM_OUTPUT_REG_POP): Likewise
+
+Thu Jan 28 07:51:47 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '/'.
+ * config/m68k/m68k.c (print_operand): Print %/ as REGISTER_PREFIX.
+ * longlong.h (umul_ppmm for 68000): Use %/ before all register
+ names.
+
+ * configure (install_headers_dir): New variable for each
+ configuration, used to set INSTALL_HEADERS_DIR in Makefile.
+ (*-*-sysv4*, *-*-sysv*): Set install_headers_dir to
+ install-headers-cpio.
+
+Thu Jan 28 07:30:25 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.md: Remove 29050-specific variants of patterns generating
+ loadm that have earlyclobber. This was put in for some very old
+ version of the '050, which isn't used anymore, that had a bug.
+
+Thu Jan 28 06:56:04 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vmsconfig.com: change instances of [.config] to [.config.vax].
+ * make-cc1.com, make-cccp.com, make-l2.com: change /include and -I
+ values from [.config] to [.config.] (this trailing period works with
+ GNU C's preprocessor but not with VAX C's).
+
+Thu Jan 28 06:48:57 1993 Michael Collison (collison@osf.org)
+
+ * optabs.c (init_fixtab, init_optabs): Fix typos in QFmode and HFmode
+ initialization.
+
+Wed Jan 27 13:11:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (includedir): Use local_prefix.
+
+Wed Jan 27 12:08:05 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (check_fp_mov): Delete unused function
+ (register_or_short_operand): Likewise.
+ (eq_or_neq): Likewise.
+ (gen_compare_reg): Likewise.
+ (reverse_relop): Likewise.
+ (frame_base)name): Delete unused variable.
+
+ * pa-ghpux.h (HAVE_ATEXIT): Delete. This is defined in pa.h
+ * pa-gux7.h (HAVE_ATEXIT): Likewise.
+ * pa-hpux.h (HAVE_ATEXIT): Likewise.
+ * pa-hpux7.h (HAVE_ATEXIT): Likewise.
+
+Wed Jan 27 06:46:50 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_relation_operation): We can compute the result
+ of a comparison of CONST_INTs no matter what mode the computation
+ is to be done in.
+
+ * expmed.c (emit_store_flag): Swap operands if first is a
+ constant and second is not.
+ Abort if compare_from_rtx didn't return an rtx with the code we
+ expect.
+ * expr.c (compare_from_rtx): Only swap operand if first is a
+ constant and second is not.
+
+ * c-common (declare_function_name): If char_array_type_node isn't
+ large enough for the name, make a larger type.
+ * c-decl.c (init_decl_processing): Make the arrays 200 long instead
+ of 10 to leave more room for most names.
+
+ * function.c (put_var_into_stack, fixup_var_refs_insns): Minor
+ cleanups.
+ (fixup_var_refs_1, case SET): Correctly check for simple insns
+ that don't need fixups.
+
+ * collect2.c: Delete ISCOFF macro which was in #ifdef _AIX.
+ * rs6000.h, a29k/unix.h (MY_ISCOFF): New macro.
+
+Tue Jan 26 19:31:31 1993 Tom Wood (Tom_Wood@NeXT.com)
+
+ * combine.c (combine_instructions): Initialize undobuf in the
+ event `gen_rtx_combine' is called before `try_combine'.
+
+Tue Jan 26 18:20:04 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * i960.md (umulsidi3+1): Add variant which accepts constants.
+
+ * fixinc.svr4: Change all uses of EX to SED.
+ * fixincludes (sys/types.h): Don't match on ssize_t.
+ (stdio.h): Change _VA_LIST_ to __gnuc_va_list for 386BSD.
+
+Tue Jan 26 13:46:04 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * xm-alpha.h (ONLY_INT_FIELDS): Define if not __GNUC__.
+
+ * collect2.c (write_list_with_asm): Use `__asm__' instead of
+ `asm', to avoid problems with `-fno-asm'.
+
+ * Makefile.in (insn-*.[ch], protoize.o, unprotoize.o, install): When
+ using a trailing semicolon to force a rule to not do anything,
+ explicitly run the command `true', to avoid warnings or other
+ problems with versions of make which don't like null commands.
+
+Tue Jan 26 07:14:29 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_binary_operation, case SMAX): Correctly
+ compute largest possible signed integer.
+
+ * Makefile.in: (rest.cross, gfloat.h, stmp-headers, mostlyclean):
+ Build and install gfloat.h instead of float.h.
+
+ * a29k/x-unix (CLIB): Add -lld.
+
+ * integrate.c (copy_rtx_and_substitute, case REG): Call
+ gen_lowpart instead of making an explicit SUBREG.
+
+ * stmt.c (expand_value_return): Call convert_move instead of the
+ erroneous convert_to_mode.
+
+Tue Jan 26 00:58:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (find_a_file): First `access' test was backwards.
+ (main): Set full_real_ld_suffix right.
+
+ * c-decl.c (init_decl_processing): Use 10 as size
+ of ..._array_type_node.
+
+ * cccp.c (handle_directive): Init already_output
+ after old_linenum label.
+ (finclude): Remove final backslash-newline *before* trigraph_pcp.
+ (write_output): Free line_command at end.
+
+Mon Jan 25 19:31:32 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * print-rtl.c (debug_rtx_list, debug_rtx_find): New functions.
+ * .gdbinit (prl): New command.
+
+Mon Jan 25 14:49:45 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (init_arg_profiler, output_arc_profiler): Delete unused
+ functions.
+ * sparc.h (ARC_PROFILER): Delete unused macro.
+
+ * sparc.c (sparc_builtin_saveregs): New function.
+ * sparc.h (CPP_SPEC): Delete __sparc_frw__ define.
+ (TARGET_FRW_COMPAT): New macro.
+ (TARGET_DEFAULTS): Comment out -mfrw option. Add new commented
+ out option -mfrw-compat.
+ (EXPAND_BUILTIN_SAVEREGS): Call sparc_builtin_saveregs to emit rtl
+ inline instead of calling builtin_saveregs in libgcc.a.
+ * va-sparc.h (va_start): Rewrite to account for above changes.
+
+ * sparc.h (PRINT_OPERAND_PUNCT_VALID_P): Delete '@' case.
+ * sparc.c (print_operand): Likewise.
+ (output_fp_move_double): Delete FP_REG to GENERAL_REG and vice
+ versa copy support.
+ (output_fp_move_quad): Likewise.
+ * sparc.md (movsi, movtf, movdf, movdi, movsf): Delete f/r and r/f
+ constraint pairs.
+
+ * i960.c (secondary_reload_class): Correct test against
+ FIRST_PSEUDO_REGISTER.
+
+ * sparc.c (registers_ok_for_ldd_peep): Delete test for pseudos.
+
+ * optabs.c (emit_indirect_jump): Use Pmode instead of VOIDmode and
+ insn_operand_mode.
+
+ * calls.c (calls_alloca): Change name to calls_function. Add new
+ parameter WHICH to control old or new behaviour.
+ (expand_call): When stack space is preallocated and parameters
+ must be passed on the stack, precompute parameters that involve
+ function calls.
+
+ * c-decl.c (language_string): Delete from here.
+ * c-parse.in (language_string): Define here for C and Obj-C.
+
+Mon Jan 25 13:54:16 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * c-decl.c (finish_struct): Disable "structure/union defined
+ inside parms" if compiling with -traditional.
+
+Mon Jan 25 05:24:12 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * i386.md (extendsidi2): Fix typo in regno.
+
+Mon Jan 25 00:07:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (lookup_label): Return 0 if not within a function.
+
+ * c-parse.in (unary_expr => ANDAND identifier):
+ Handle lookup_label returning 0.
+
+ * Makefile.in (install-float-h-cross):
+ Don't ignore error when running enquire.
+
+Sun Jan 24 22:41:00 1993 Michael Meissner (meissner@osf.org)
+
+ * c-typeck.c (build_compound_expr): Move the code into
+ internal_build_compound_expr, and pass second argument TRUE
+ indicating that this is the first call. For recursive calls, pass
+ FALSE. Do not make 0 a non_lvalue constant if this is the first
+ call, to allow return 0; from a pointer returning function to not
+ get a warning.
+
+Sun Jan 24 18:40:44 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/vax/vax.md (move/push address patterns):
+ Don't use alternative number to distinguish pushes from moves.
+ Use just one alternative `g' in output constraint.
+
+Sun Jan 24 07:19:03 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * final.c (final_scan_insn): Call alter_subreg on duplicate
+ operands (in case we need to split the insn).
+
+ * local-alloc.c (CLASS_LIKELY_SPILLED_P): Add default definition.
+ (alloc_qty_for_scratch, local_alloc): Use CLASS_LIKELY_SPILLED_P.
+
+Sat Jan 23 19:41:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * combine.c (apply_distributive_law): Don't mess with float arith.
+
+ * c-parse.in: Use new name objc-act.h.
+
+Sat Jan 21 13:12:49 1993 Serge Adda (adda@soft01)
+
+ * expmed.c (emit_store_flag): Reset ICODE using returned COMPARISON.
+
+Sat Jan 23 18:27:35 1993 Niklas Hallqvist (niklas@spiff.gnu.ai.mit.edu)
+
+ * config/m68k/tower.h (LIB_SPEC): Use %s instead of absolute path.
+ (STARTFILE_SPEC): Moved here from tower-as.h. Use %s instead of
+ absolute path.
+ * config/m68k/tower-as.h (STARTFILE_SPEC): Moved to tower.h.
+
+Sat Jan 23 16:28:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (change_newlines): Renamed from delete_newlines.
+ Insert a space in place of a newline. Caller changed.
+
+ * config/m68k/hp320.h (ASM_OUTPUT_DOUBLE_OPERAND): Delete space
+ before arglist.
+
+Sat Jan 23 09:20:41 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * Makefile.in (cross-test): Depend on GCC_PARTS.
+
+Sat Jan 23 07:15:10 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): After calling count_possible_groups, see
+ if we have to proceed with allocating a group.
+ (count_possible_groups): Use HARD_REG_SET, not a char array, for
+ consistency.
+
+ * rs6000.h (ADJUST_COST): Add new definition.
+
+Fri Jan 22 18:55:00 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * fixinc.svr4: Use pwd if PWDCMD is undefined. Add missing echo
+ command.
+
+Fri Jan 22 18:08:47 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<-->FSF merge.
+
+ Thu Jan 21 15:26:59 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (convert.o): Add dependencies.
+
+ * cp-gc.c (NULL): Undef before defining.
+ * cp-init.c (NULL): Likewise.
+ * cp-expr.c (NULL): Likewise.
+
+ * cp-decl.c (grokdeclarator): Relegate error about operator= to a
+ warning for now, an error later.
+
+ Tue Jan 19 16:40:19 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-type2.c (my_friendly_assert): Don't set errorcount or
+ sorrycount to zero, as we no longer say "please fix above errors".
+
+ Mon Jan 18 19:44:53 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-type2.c (my_friendly_abort): Exit quietly in cases of random
+ seg faults in the front-end in the presences of other errors. This
+ makes the handling of these things more uniform.
+
+ Mon Jan 18 16:23:11 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_unary_op): Improve error message for
+ {pre,post}-{increment,decrement}.
+
+ Mon Jan 18 13:58:14 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_binary_op): Improve error message.
+
+ Fri Jan 15 17:53:33 1993 Mike Stump (mrs@cygnus.com)
+
+ Fri Jan 15 00:35:22 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-decl.c (start_function): Removed the comp_target_parms test
+ when checking for implementations of "C" linkage functions, allows
+ for more overloading of extern "C" functions.
+
+ Fri Jan 15 17:32:56 1993 Mike Stump (mrs@cygnus.com)
+
+ Fri Jan 15 00:35:22 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-decl.c (grokvardecl): Implement the "one definition rule".
+
+ Fri Jan 15 17:17:05 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (get_base_distance): Compute results from calls to
+ recursive_bounded_basetype_p into a temp variable, as otherwise we
+ can clobber rval with a zero.
+
+ Fri Jan 15 17:10:59 1993 Mike Stump (mrs@cygnus.com)
+
+ Thu Jan 14 16:02:27 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-decl.c (start_function): Don't try to match static member
+ functions with "C"-linkage declared global functions.
+
+ Thu Jan 14 17:58:15 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-method.c, cp-type2.c, cp-typeck.c: Make sure the fourth
+ argument to build_overload_call is (struct candidate *)0 not just
+ a plain 0.
+
+ Thu Jan 14 17:15:40 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't warn on an initialized var
+ that's extern if it's a const.
+
+ Thu Jan 14 17:03:40 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-pt.c (coerce_template_parms): Add new parameter IN_DECL.
+ Update error messages to give location information of the _DECL
+ when an instantiation fails.
+ (lookup_template_class): Ditto.
+ (tsubst): Ditto.
+ All callers changed.
+ * cp-tree.h (lookup_template_class): Update prototype.
+ * cp-parse.y (template_type_name): Update calls to
+ lookup_template_class.
+
+ Thu Jan 14 02:09:17 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl2.c (grokfield): Arrange for the type to be set on class
+ typedefs, cures one type of internal compiler error 62. Now calls
+ set_identifier_type_value just before pushdecl_class_level.
+
+ Wed Jan 13 22:43:58 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (get_base_distance): Allow checking of UNION_TYPEs,
+ as some of the init code calls us.
+
+ Wed Jan 13 21:12:22 1993 Mike Stump (mrs@cygnus.com)
+
+ Mon Jan 11 20:11:17 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-parse.y (implicitly_scoped_stmt, simple_stmt): New rules to
+ handle the changed semantics of selection & iteration statements
+ in ANSI C++ (check out 6.4-5 in the draft as opposed to the ARM).
+ (simple_if, stmt, compstmt): Changed to use the new rules.
+ (stmt_decl_msg): Removed this static (together with all its uses)
+ because it's now unnecessary.
+ (cond_stmt_keyword): New static string to use in the error message
+ of paren_expr_or_null.
+ (paren_expr_or_null): Use cond_stmt_keyword instead of stmt_decl_msg.
+
+ Tue Jan 12 18:53:44 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (lookup_name): If PREFER_TYPE is -2, don't call
+ lookup_nested_field.
+ * cp-spew.c (yylex) [IDENTIFIER case]: Call lookup_name with -2
+ instead of -1.
+
+ * cp-decl2.c (grokclassfn): If there's no IDENTIFIER_TYPE_VALUE (it
+ could have gotten blown away by poplevel_class), use ctype to build
+ the overload name.
+
+ * cp-call.c (convert_harshness): Avoid dereferencing a null PARM,
+ which can be passed in by convert_harshness itself.
+
+ Mon Jan 11 12:25:51 1993 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-tree.h (VTABLE_NAME_P, VBASE_NAME_P): Reverse order, so they'll
+ go for [1..3], to avoid referencing beyond the bounds of a name.
+
+ * cp-xref.c (fctname): Delete extern decl of `declname'.
+
+ * cp-type2.c (build_scoped_ref): Pass the nodes themselves down into
+ error_not_base_type, not the strings, since it'll peel off the decl
+ name and type name of them itself.
+
+ * cp-class.c (build_vbase_path): flag_assume_nonnull_objects is an
+ int, not a tree.
+
+ * dbxout.c (dbxout_type_methods): Only emit warning about dbx info
+ for templates when WARN_TEMPLATE_DEBUGGING is set. Only reference
+ the var WARN_TEMPLATE_DEBUGGING if we've got HAVE_TEMPLATES defined.
+ * cp-tree.h (HAVE_TEMPLATES): Define.
+ * cp-decl2.c (lang_decode_option): Set WARN_TEMPLATE_DEBUGGING when
+ given -Wall.
+ * flags.h (warn_template_debugging): Add extern decl.
+ * toplev.c (lang_options): Add -Wtemplate-debugging.
+
+ * cp-decl.c (make_temporary_for_reference): Call make_decl_rtl with
+ a NULL_PTR, not 0.
+ (finish_decl): Likewise.
+ (grokfndecl): With a NULL_PTR, not a NULL_TREE.
+
+ Fri Jan 8 19:43:52 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-search.c (get_binfo): Use obstack_ptr_grow instead of
+ obstack_int_grow, casting the int to a void*. When retrieving it,
+ cast the result of dereferencing SEARCH_STACK->FIRST as an int.
+ (get_base_distance): Likewise.
+ (breadth_first_search): Likewise.
+
+Fri Jan 22 15:09:42 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pyr.h (SIZE_TYPE): Define.
+ (NO_DOLLAR_IN_LABEL): Define.
+
+Fri Jan 22 12:19:47 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (secondary_reload_class): Simplify.
+
+Fri Jan 22 07:57:57 1993 Richard Kenner (kenner@vlsi1.ultra.nyu)
+
+ * collect2.c (our_file_name): New variable.
+ (find_a_file): Ignore filename equal to that in our_file_name.
+ (main): Initialize our_file_name.
+
+ * expr.c (emit_library_call): Correct mis-applied patch.
+
+Thu Jan 21 11:36:04 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (REG_CLASSES): Delete GENERAL_OR_FP_OR_SNAKE_FP register
+ class, it's not needed anymore. Delete all references. 'Z'
+ register class is now "ALL_REGS".
+ * pa.c (emit_move_sequence): Handle secondary reloads for SAR.
+
+Tue Jan 19 20:08:01 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ From Torbjorn Granlund (tege@sics.se):
+ * i960.c (cmplpower2_operand): New function.
+ * i960.md (addsi3): Clean up condition for when to use subo.
+ (umulsidi3): New pattern.
+ (non-canonical nand, nor): Remove paterns.
+ (clrbit, notbit static bit): New patterns.
+ (setbit, clrbit, notbit dynamic bit): New patterns.
+ (setbit static bit non-canonical): Remove pattern.
+ (muldf3, mulsf3, multf3): Add % to operand1.
+ (test recognizers): Use TAB efter mnemonic.
+
+ * reorg.c (update_reg_dead_notes): New function.
+ (fill_simple_delay_slots): Call new function when moving
+ instruction forward into a delay slot.
+
+ * sched.c (sched_analyze_1, sched_analyze_2): Ifdef out code added
+ for handling psuedo register equivalents that was added Dec 31 1992.
+
+ From Steve Chamberlain (sac@cygnus.com):
+ * libgcc1.c (__eqdf2, __nedf2, __gtdf2, __gedf2, __ltdf2, __ledf2,
+ __eqsf2, __nesf2, __gtsf2, __gesf2, __ltsf2, __lesf2): comparison
+ result type is now word_mode.
+ * libgcc2.c (cmpdi2, ucmpdi2): comparison result type is now
+ word_mode.
+ * optabs.c (emit_cmp_insn, emit_float_lib_cmp): libcall comparisons
+ return word_mode.
+
+Tue Jan 19 15:28:59 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * function.c (fixup_var_refs_1): Set INSN_CODE to -1 before seeing
+ if new insn form is recognized.
+
+ * reg-stack.c (all functions): Use NULL_RTX instead of 0 for rtx
+ comparisons.
+
+ (emit_pop_insn): Emit insn with mode QImode: insn contains
+ stack-regs.
+
+ (emit_hard_swap_insn): Delete.
+ (emit_swap_insn): Merge with emit_hard_swap_insn.
+ Delete WHEN arg and change all callers.
+ If previous insn was a push from REG, omit swap.
+ If previous insn wrote reg-stack top to REG, omit swap.
+ Emit swap insn with mode QImode: insn contains stack-regs.
+ Emit swap insn after previous float insn, instead of before this
+ one.
+
+ (swap_rtx_condition): New function.
+ (compare_for_stack_reg): If op 0 of COMPARE is not a stack reg,
+ exchange ops 0 and 1 and swap cc0 user condition.
+
+ * i386.h (PREFERRED_RELOAD_CLASS): Narrow ALL_REGS to
+ GENERAL_REGS.
+ (PREFERRED_OUTPUT_RELOAD_CLASS): New macro. Narrow ALL_REGS to
+ GENERAL_REGS.
+ (SECONDARY_MEMORY_NEEDED): New macro.
+
+ * i386.md (cmpdf_cc,cmpsf_cc): Allow first operand to be a MEM.
+ Don't allow both operands to be MEM.
+ (float addM3,subM3,divM3,mulM3 recognizers): Don't allow either
+ operand to be a constant.
+
+ (all float patterns, FLOAT_EXTEND operands): Don't allow
+ GENERAL_REGS for float_extended operand.
+ (all float patterns, FLOAT operands): Change constraints to get
+ better register classification.
+ (fix_truncMN2 patterns): Likewise.
+ (floatMN2 patterns): Likewise.
+
+Tue Jan 19 15:51:16 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.md (define_function_unit for memory): Memory is pipelined.
+
+ * pa.md (sCC patterns): Use %char notation instead of nested
+ if stmts.
+ (branch matchers): Likewise.
+ (incscc, negscc): Likewise. Add ? constraint for 3-insn
+ alternative.
+ (incscc): Split into `incscc' and `decscc' to make this really
+ match.
+ (incscc/decscc special cases): New patterns using carry bit.
+ * pa.c (print_operand): Handle 'S' and 'B' for conditions.
+ Handle 'I' for printing 'i' when CONST_INT.
+ Handle 'k' for ones-complement of CONST_INT.
+ (incscc_operator): Remove.
+
+ * pa.md (many patterns): Use canonical address format. Use %r
+ register notation. Use GEN_INT.
+
+ * pa.md (main move SF recognizer): Allow 0 for copying to
+ general register.
+
+ * pa.md (zero_extendhisi2): Remove DEFINE_EXPAND.
+ (zero_extendqihi2): Likewise.
+ (zero_extendqisi2): Likewise.
+ (comment before sign extension): Remove the lie.
+
+ * pa.h (REG_CLASS_FROM_LETTER): Remove partly incorrect PA
+ documentation.
+
+Tue Jan 19 09:22:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fold-const.c (non_lvalue): Result must not be null ptr constant.
+ (omit_one_operand): Use non_lvalue.
+ (fold, case COMPOUND_EXPR): Use non_lvalue if value is 0.
+ * c-typeck.c (build_compound_expr): Use non_lvalue if value is 0.
+
+Tue Jan 19 08:29:16 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (print_operand, case 'k'): New case.
+ * rs6000.md (plus of gtu patterns): Add case to handle immediates.
+
+ * rs6000.c (output_epilog): Only restore the cr's that we actually
+ used; previously, we saved and restored all of them.
+
+ * combine.c (combine_instructions): Clear reg_last_set_label.
+
+Tue Jan 19 01:16:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * flow.c (find_basic_blocks): Don't mark labels in nonlocal_label_list
+ that were deleted due to having no references.
+
+Mon Jan 18 21:02:22 1993 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * configure (--local-prefix=DIR): new flag sets $local_prefix.
+ The default is /usr/local. Put it into Makefile.
+
+ * Makefile.in (local_prefix): new prefix, the default is /usr/local.
+ (cccp.o): change LOCAL_INCLUDE_DIR to $(local_prefix)/include.
+
+Mon Jan 18 15:29:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-act.c, objc-act.h: Renamed from objc-actions.*.
+ * objc-act.c: Include objc-act.h.
+ * Makefile.in: Targets and deps changed.
+
+ * objc-actions.c (encode_method_def): Null-terminate encoding.
+ (build_ivar_list_initializer): Null-terminate type encoding.
+
+ * cccp.c (include_defaults): Do use GCC_INCLUDE_DIR for cross compiler.
+ Move TOOL_INCLUDE_DIR later if cross.
+
+Mon Jan 18 13:39:32 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * expr.c (emit_library_call): Handle OUTGOING_REG_PARM_STACK_SPACE.
+ Use NULL_TREE instead of (tree) 0.
+
+ * expr.c (emit_move_insn, expand_expr): Fix typos in comments.
+
+ * cccp.c (initialize_builtins): Add uses of new macros
+ NO_BUILTIN_SIZE_TYPE and NO_BUILTIN_PTRDIFF_TYPE.
+
+ * i960.h (ROUND): Change macro name to ROUND_PARM.
+ * i960.c (i960_function_arg_advance, i960_function_arg): Likewise.
+
+ * stor-layout.c (make_signed_type): Consistently use
+ HOST_BITS_PER_WIDE_INT. Correct minor formatting problems.
+ (fixup_signed_type): Use HOST_BITS_PER_WIDE_INT and HOST_WIDE_INT
+ like make_signed_type does.
+ (fixup_unsigned_type): Correct minor formatting problem.
+
+ * x-linus (LANGUAGES): Delete.
+
+Mon Jan 18 08:13:34 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * Makefile.in (stmp-headers): Delete target files before copying
+ to them.
+
+Mon Jan 18 06:23:35 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * collect2.c (choose_temp_base, main): Fix "off by one" errors in
+ sizes of allocated strings.
+
+Mon Jan 18 00:32:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (process_command): Fix typo in last change.
+
+Sun Jan 17 13:09:03 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (FP_REG_CLASS_P): New macro.
+ (REGISTER_MOVE_COST): Use FP_REG_CLASS_P to simplify. Make moves
+ from SAR to expensive that they should never happen.
+
+Sun Jan 17 10:38:38 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.c (emit_move_sequence): Fix spacing.
+ (compute_zdepi_operands): Fix header comment.
+ (many functions): Use %%r register syntax. Use canonical (0,%rN)
+ address format.
+ (output_function_prologue): No need to test frame_pointer_needed
+ in else clause of `if (frame_pointer_needed)'.
+ (output_function_prologue): Test boolean merge_sp_adjust_with_store
+ for zeroness, not for equality with 1.
+ (fmpyaddoperands): Use new variable mode for mode of operands[0].
+ (fmpysuboperands): Likewise.
+
+Fri Jan 15 16:42:30 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (LEGITIMIZE_ADDRESS): Handle (plus (mult (X) (Y)) (Z))
+ when Y is 2, 4, or 8 specially.
+ * pa.c (shadd_constant_p): New function.
+
+ * integrate.c (FIXED_BASE_PLUS_P): Fix typo.
+
+ * loop.c (move_movables): Clear INSN_CODE for each insn as
+ we perform register replacements.
+ (strength_reduce): Likewise.
+
+Fri Jan 15 16:02:07 1993 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * final.c (alter_cond): Undo previous change.
+
+Thu Jan 14 22:09:40 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (stmp-headers): Avoid problems with relative
+ $(srcdir) when installing syslimits.h.
+
+Thu Jan 14 19:20:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * c-decl.c (c_decode_option): Set WARN_UNINITIALIZED to 2 with
+ -Wall, being careful to preserve it if it's already set.
+ * cp-decl2.c (lang_decode_option): Likewise.
+ * toplev.c (main): Warn about using -Wuninitialized without -O.
+
+ * cccp.c (main): Trim down to the basename of what's to go in
+ PROGNAME.
+
+ * gcc.c (process_command): Only accept input files which exist and
+ can be read; prevent link phase if an input file was rejected. Be
+ careful not to check for `-l' directives.
+ (error_count): Make into a static global variable.
+
+Thu Jan 14 18:19:35 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * t-mips, t-ultrix, t-osfrose: Change `config/' to `config/mips/'.
+
+Thu Jan 14 16:55:11 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (CONDITIONAL_REGISTER_USAGE): Do not make %r27 a global_reg.
+
+ * pa.c (output_function_prologue): Combine stack adjustment and
+ first GR save when reasonable to do so.
+ (output_function_epilogue): Combine stack adjustment and first
+ GR restore when reasonable to do so. Avoid load/use stall for
+ RP restore in common cases.
+
+ * pa.h (LEGITIMIZE_ADDRESS): Rework to create REG and REG+D
+ addresses instead of REG+REG addresses.
+
+Thu Jan 14 15:45:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/core.c (initialize_dispatch_tables): Create an entry in RECORD
+ for each class used in a given file, not just one.
+
+Thu Jan 14 12:00:35 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (INSTALL_HEADERS_DIR, FLOAT_H, CROSS_FLOAT_H): New
+ variables.
+ (INSTALLED_H): Removed.
+ (float.h): Copy from $(FLOAT_H).
+ (float.h-nat, float.h-cross): New targets.
+ (stmp-headers, stmp-fixincludes): New targets to build fixed
+ include files in build directory.
+ (all.cross, rest.encap): Depend on stmp-headers.
+ (clean): Remove the include directory and stmp-*.
+ (install-normal): Renamed from install-native.
+ (install-cross): Removed.
+ (INSTALL_TARGET): Changed to install-normal from install-native.
+ (install-headers): Install from build directory.
+ (install-include-dir, install-headers-tar,install-headers-cpio,
+ install-assert-h): New targets.
+ (install-float-h, install-limits-h, install-common-headers,
+ install-fixincludes): Removed.
+ * cross-make (INSTALL_TARGET): Don't override.
+ (FLOAT_H): New override, set to $(CROSS_FLOAT_H).
+
+Thu Jan 14 14:17:05 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * libgcc2.c: Correct typo in comment.
+
+ * fixinc.sco, fixinc.svr4 (egrep and sed loop): Don't print
+ messages about files that need no change.
+
+ * sparc.md (muldf+1, muldf+2): Add patterns for fsmuld and fdmulq.
+
+ * sparc.c: Clarify numerous *_operand comments.
+ (SPARC_STACK_ALIGN): Delete.
+ (sparc_frw_output_function_epilogue): Delete unused variable
+ load_only_r15.
+ (sparc_frw_epilogue_delay_slots): Delete r15/fmask test.
+ * sparc.md: Document sparclite integer multiply cycle times.
+ (movdf, !TARGET_FPU): Remove tests for floating point registers.
+ (divsi3, udivsi3): Correct length attribute.
+ (ffssi2): Define for sparclite.
+ * sparc.h (CPP_SPEC): Add -mfrw support.
+ (OVERRIDE_OPTIONS): Define. Can't omit frame pointer or do pic
+ when profiling.
+ (REG_USED_SO_FAR): Delete.
+ (CONST_COSTS): Give SMALL_INT constants cost of 0. Make UDIV,
+ DIV, MOD, UMOD more expensive. Make FIX same cost as FLOAT.
+ (TARGET_FRW): Define.
+ (TARGET_DEFAULTS): Add -mfrw flag.
+ (INITIAL_FRAME_POINTER_OFFSET): Add -mfrw support.
+ (BASE_OUTGOING_VALUE_REG, BASE_INCOMING_ARG_REG): Likewise.
+ (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Likewise.
+ (DELAY_SLOTS_FOR_EPILOGUE, ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise.
+ (EXPAND_BUILTIN_SAVEREGS): Likewise.
+
+ * expr.c (do_tablejump): Pass 1 for unsigned flag to emit_cmp_insn.
+
+Thu Jan 14 14:43:15 1993 Torbjorn Granlund (tege@sics.se)
+
+ * pa.c (move_operand): Allow all CONST_INTs that can be moved to
+ general registers with one insn.
+ * pa.c (pre_cint_operand): New predicate for predecrementing
+ ldwm/stwm insns.
+ * pa.c (zdepi_cint_p): New function.
+ * pa.c (depi_cint_operand): Remove.
+ * pa.c (and_mask_p): New name for consec_zeros_p. All callers
+ changed.
+ * pa.c (srcsi_operand): Removed.
+ * pa.c: Use INT_14_BITS instead of synonym SMALL_INT.
+ * pa.c (emit_move_sequence): Clean up CONST_INT case.
+ * pa.c (compute_zdepi_operands): New name for
+ compute_xdepi_operands_from_integer. Change second parm to return
+ plain integers, was RTXes.
+ * pa.c (print_operand): Handle 'Z' for 'zdepi' source used to move
+ CONST_INT.
+
+ * pa.h (CONST_OK_FOR_LETTER_P): Change meaning of 'K'. Add new
+ alternative 'N'. Use VAL_*_BITS_P macros when possible.
+ * pa.h (LEGITIMATE_CONSTANT_P) Fix comment.
+ * pa.h (FITS_14_BITS): Remove.
+ * pa.h (SMALL_INT): Remove.
+
+ * pa.md (move patterns): Reorganize pattern order. Cleanup. Merge
+ CONST_INT patterns into main patterns for SImode, HImode, QImode.
+ Add patterns to recognize predecrement cases in SImode, HImode,
+ QImode. Remove 'y' constraint from SImode recognizer.
+ (main HImode, QImode recognizers): Handle SAR move from greg.
+ Change constraints to match the SImode pattern.
+ * pa.md (cmov): Move near other conditional patterns.
+ * pa.md: Replace all occurences of srcsi_operand with move_operand.
+ Replace `ldo X(0),d' with `ldi X,d'.
+ * pa.md (rotlsi3): Remove SET_ATTRs.
+ * pa.md (rotrsi3): Likewise.
+
+Thu Jan 14 13:33:55 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * rtl.c (copy_rtx): A MEM with constant address is not sharable.
+ Undo Dec 27 change.
+
+Thu Jan 14 06:45:51 1993 James Van Artsdalen (jrv@goldman.gnu.ai.mit.edu)
+
+ * i386.md (cmpstr patterns): Fix mode mismatch in SET.
+
+Wed Jan 13 16:05:07 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure: Precompute version in generated Makefile.
+
+ * Makefile.in: (CROSS_GCC_CFLAGS, CROSS_TOOLS, REAL_LD_NAME,
+ install-cross-tools): Removed.
+ * cross-make (CROSS_GCC_CFLAGS, CROSS_TOOLS): Removed.
+ (SYSTEM_HEADER_DIR): Set to $(tooldir)/include.
+ * gcc.c: Use TOOLDIR_BASE_PREFIX, not TOOLDIR_PREFIX.
+
+Wed Jan 13 12:04:21 1993 Michael Meissner (meissner@osf.org)
+
+ * libgcc2.c (_ffsdi2): Use the correct names for structure
+ elements of type DIunion. Return the correctly typed value.
+
+ * mips-tdump.c (print_file_desc): Correctly scale the rfd pointer.
+ Patch from ian@cygnus.com.
+
+Wed Jan 13 10:04:26 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (ASM_OUTPUT_INTERNAL_LABEL): Fix typo.
+
+Wed Jan 13 03:05:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4 (rpc/types.h): Change const extern to extern const.
+
+ * expr.c (expand_increment): Handle all preincrements by building
+ arithmetic and calling expand_assignment.
+
+ * stmt.c (expand_asm_operands): For clobbering memory,
+ generate (MEM (SCRATCH)) inside the CLOBBER.
+
+ * cccp.c (include_defaults):
+ Put GCC_INCLUDE_DIR just before the system dirs whose files are fixed.
+
+ * Makefile.in (risky-stage1, etc): Use $(GCC_PARTS) as what to mv.
+
+Tue Jan 12 23:24:30 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stor-layout.c (variable_size): Change back to NULL_PTR.
+
+Tue Jan 12 18:59:01 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reload1.c (reload): Clear reload_in_progress even if reloading
+ fails.
+
+Tue Jan 12 18:32:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * calls.c (emit_call_1): Pass a NULL_RTX into emit_call_insn for
+ missing last arg.
+
+ * stor-layout.c (variable_size): Call expand_expr with a NULL_RTX,
+ not a NULL_PTR.
+
+ * integrate.c (const_equiv): Delete decl, since it's never defined.
+ (fold_out_const_cc0): Likewise.
+ * loop.c (delete_insn_forces): Likewise.
+ * final.c (alter_cond): Delete decl, since it's never defined.
+
+ * fold-const.c (fold): Only call force_fit_type with one arg.
+
+ * expr.c (group_insns): Make void, since it never returns an rtx.
+
+ * emit-rtl.c (emit_jump_insn_before): Call make_jump_insn_raw with
+ only one argument.
+ (emit_jump_insn_after): Likewise.
+ (emit_jump_insn): Likewise.
+
+ * dbxout.c (dbxout_type) [case FILE_TYPE, SET_TYPE]: Call with
+ missing third arg as 0.
+
+ * cse.c (fold_rtx): Call itself with missing arg INSN as NULL_RTX.
+
+Tue Jan 12 17:53:13 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ From Fred Fish:
+ * fixinc.svr4 (stat.h): Don't depend upon specific formal
+ parameter names when locating static functions to convert
+ to prototype form. Also be more selective about what
+ strings to prepend underbars to during renaming of formal
+ parameters and local variables in static functions.
+
+ * cccp.c (main): Set signal handler for SIGPIPE.
+ (pipe_closed): New function, to handle SIGPIPE.
+
+Tue Jan 12 17:48:13 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (compare_from_rtx): Allow simplify_relational_operation to
+ fail.
+
+Tue Jan 12 02:52:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (init_optabs): Use plain `ffs' for SImode ffs_optab libcall.
+
+ * Makefile.in (LIB2FUNCS): Add _ffsdi2.
+ * libgcc2.c (__ffsdi2): New function.
+
+ * c-decl.c (init_decl_processing): Declare ffs as builtin.
+
+ * fixincludes (egrep and sed loop): Don't print messages about
+ files that need no change.
+
+Mon Jan 11 17:22:16 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (eligible_for_epilogue_delay): Delete unused variable
+ `this_function_name'.
+ (output_fp_move_double): Delete unused var `addr'.
+ (output_fp_move_quad): Likewise.
+ (fregs_ever_live): Delete unused static var.
+ (output_function_epilogue): Delete `n_fregs' and `i'.
+ (sparc_frw_output_function_prologue): Delete `regno'.
+ (sparc_frw_output_function_epilogue): Delete `load_nop'.
+
+ * reload1.c (reload): Delete unused variable inc_groups.
+
+ * sparc.h (TARGET_SWITCHES): Add no-fpu and hard-float.
+ (CONDITIONAL_REGISTER_USAGE): Define for ! TARGET_FPU.
+ (BASE_RETURN_VALUE_REG): Use reg 8 when ! TARGET_FPU.
+ (BASE_OUTGOING_VALUE_REG): Use reg 24 when ! TARGET_FPU.
+ * sparc.md (*): Make all fp patterns conditional on TARGET_FPU.
+ (movtf, movdf, movsf): Add !TARGET_FPU versions.
+ (sfmode return): Add pattern for when !TARGET_FPU.
+ (movsi+2, movsf+1): Use %@ instead of %%fp.
+ (mulsidi3, umulsidi3): Rewrite, to avoid extending constants.
+
+ * fixincludes: Do not consider //* to be a C++ comment which needs
+ to be fixed.
+
+Mon Jan 11 15:03:41 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Fix typos.
+
+Mon Jan 11 12:41:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/xm-svr4.h (sys_siglist): New macro.
+
+Sun Jan 10 18:16:49 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (extendsidi2,zero_extendsidi2): New patterns.
+ (adddi3,subdi3): Don't emit code for low part if known to be zero.
+
+ * i386/xm-sysv4.h (alloca): Delete - already defined in xm-i386.h.
+
+ * i386/xm-aix.h,i386/xm-sun.h: Include i386/xm-i386.h.
+ Remove redundant defines.
+
+Sun Jan 10 18:00:17 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (GENERAL_OR_FP_OR_SNAKE_FP_REGS): New register class.
+ (LEGITIMIZE_ADDRESS): No longer show DP relocation. Simplify.
+ * pa.md (reload_insi, reload_outsi): Use new "Z" constraint instead
+ of "z" constraint.
+ (load HIGH patterns): Rewrite to not show DP relocation.
+ * pa.c (output_global_address): Handle (high (const (plus ...))).
+ (secondary_reload_class): If TARGET_KERNEL, then loading a
+ symbolic address, or the high part of a symbolic address requires
+ %r1 as a secondary reload register.
+ (emit_move_sequence, SYMBOL_REF case): If TARGET_KERNEL, then handle
+ secondary reload created for a symbolic (high (const (plus ...))).
+ No longer show DP relocation; read_only and normal operands emit the
+ same RTL now.
+ Emit the same RTL before and after reload, only change how the
+ scratch/temporary register is chosen.
+
+Sun Jan 10 11:42:12 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (make_extraction): Don't use POS < 0 as a flag
+ that POS_RTX is to be used; instead use POS_RTX unless it is
+ nonzero. If POS_RTX is a constant, set POS and clear POS_RTX.
+ (make_compound_operation, make_field_assignment): Pass 0 for POS
+ instead of -1 when POS_RTX is nonzero.
+
+Sat Jan 9 01:34:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (reload_as_needed): Test for whether to call
+ forget_old_reloads_1 for a REG_INC note was backwards.
+
+ * config/i386/xm-i386.h (alloca): Undef before defining.
+
+ * config/i860/sysv3.h (ASM_OUTPUT_LOCAL): New override.
+
+ * gcc.c (lookup_compiler): Fix special code for `-' suffix.
+
+ * c-lex.c (yylex): Change warning msg when decimal const is unsigned.
+
+ * Makefile.in (bootstrap*): Pass BOOT_LDFLAGS down as LDFLAGS.
+
+ * Makefile.in (install-dir): Don't create gcc-lib/include.
+
+ * objc-actions.c (init_module_descriptor):
+ Use size_in_bytes to get size of `struct objc_module'.
+
+ * c-decl.c (init_decl_processing): Use unsigned_intQI_type_node,
+ not unsigned_char_..., as index type for ..._array_type_node.
+
+ * toplev.c (really_sorry): Use progname in error message, not c++.
+
+ * optabs.c (expand_binop): For complex mult, compute res
+ in each alternative, not before.
+
+ * Makefile.in (bootstrap): Pass along CC and libdir in first compile.
+
+ * c-decl.c (pushdecl): Avoid multiple extern decl mismatch warnings
+ when previous decl is built-in.
+
+ * cccp.c (macroexpand): Before concatenated empty rest arg,
+ do copy constant chars, but delete last run of nonwhitespace chars.
+ (rescan): Handle Newline-Hyphen in expand_to_temp_buffer
+ as well as when scanning a macro body.
+
+Sat Jan 9 09:11:25 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * varasm.c (output_constant): Handle CHAR_TYPE and BOOLEAN_TYPE like
+ INTEGER_TYPE.
+
+Sat Jan 9 08:06:42 1993 Michael Meissner (meissner@osf.org)
+
+ * cccp.c (main): If we are creating a new dependency file with -MD
+ or -MMD, use "w" fopen mode instead of "a".
+
+Fri Jan 8 20:58:12 1993 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ Cygnus<->FSF merge.
+ Thu Jan 7 18:16:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (template_type): Avoid dereferencing an error_mark.
+
+ Wed Jan 6 17:43:23 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (init_decl_processing): Make flag_no_builtin avoid
+ definitions of builtin fns memcpy, memcmp, strcmp, strcpy, strlen,
+ sin, and cos. (Add sin and cos.)
+ (flag_no_builtin): Add extern decl.
+
+ * cp-decl.c (current_local_enum): New variable.
+ (start_enum): Set TREE_ADDRESSABLE on the tag here, and clear
+ current_local_enum.
+ (build_enumerator): Build the field decl here, rather than in
+ grok_enum_decls; set its TREE_CHAIN to the current_local_enum.
+ (grok_enum_decls): Chain down, setting the type.
+
+ Tue Jan 5 22:09:18 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (tsubst): Properly demangle a method's name if it's for an
+ operator.
+
+ Tue Jan 5 15:29:40 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-method.c (build_opfncall): Make postfix/prefix ++/-- work by
+ setting the second arg to 0 when using postfix ++/--.
+
+ * cp-decl.c (grokdeclarator): Forbid declaring operator= from being
+ declared as a non-member (or friend) function.
+
+ Tue Jan 5 14:26:38 1993 Mike Stump (mrs@cygnus.com)
+
+ Jan 5 14:09:08 1993 Paul Eggert (eggert@twinsun.com)
+
+ * cp-lex.c (): Propagate a change from c-lex.c.
+
+ Tue Jan 5 13:27:05 1993 Mike Stump (mrs@cygnus.com)
+
+ Sep 14 17:48:27 1992 Paul Eggert (eggert@twinsun.com)
+
+ * cp-lex.c (real_yylex): For floats, use REAL_VALUES_LESS to
+ distinguish underflow from overflow. Delete special case for 0.0.
+
+ Mon Jan 4 15:26:47 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_array_ref): Convert the index from a reference
+ before doing any appropriate type conversions.
+
+ Wed Dec 30 15:36:18 1992 Per Bothner (bothner@cygnus.com)
+
+ * convert.c: New file. Contains the common utility routines
+ from c-convert.c and cp-cvt.c (such as convert_to_integer).
+ * convert.h: New file: declarations exported from convert.c.
+ * c-convert.c, cp-cvt.c: Correspondingly reduced.
+ * cp-cvt.c (cp_convert_to_pointer): New function, with the
+ extra hair beyond that provided by the C convert_to_pointer.
+ * Makefile.in (OBJS): Add convert.o.
+ * cp-typeck.c (build_binary_op), cp-tree.h: Add extra convert_p
+ parameter, for consistency with the C version (so we can make
+ convert_to_integer independent of C or C++).
+ * cp-cvt.c, cp-decl.c, cp-decl2.c, cp-except.c, cp-init.c,
+ cp-typeck.c, cp-parse.y: Fix calls to build_binary_op to pass
+ the new convert_p parameter (i.e. 1).
+
+ Fri Dec 18 19:19:28 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-method.c (build_overload_nested_name): Use DECL_NAME instead of
+ DECL_ASSEMBLER_NAME, since pushtag now mangles together
+ DECL_ASSEMBLER_NAME. This will make us emit `Q21D1B', not `Q221D1B'.
+
+ * cp-decl2.c (grokclassfn): Try using the local value for a nested
+ type if the IDENTIFIER_TYPE_VALUE isn't there.
+
+ Wed Dec 16 18:18:43 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_unary_op): Set TREE_CONSTANT on the address of
+ a function if it's static or external (i.e., staticp likes it).
+
+ Wed Dec 16 16:09:37 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (sigsegv, init_decl_processing): Give users the line
+ number and source filename on code that makes the back-end call
+ abort.
+
+ Tue Dec 15 16:50:45 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (CLASSTYPE_NAMES): Deleted.
+
+ * cp-init.c (build_offset_ref): When getting ready to give an error
+ about something not being a member or operator, only call
+ operator_name_string when it is indeed an operator.
+
+ * cp-decl2.c (bad_specifiers): New function.
+ * cp-tree.h (bad_specifiers): Add prototype.
+ * cp-decl.c (grokdeclarator): Use it in places where we had
+ replicated code.
+
+ Tue Dec 15 04:05:54 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c (UNSET_RESERVED_WORD): Update from c-lex.c.
+
+ Tue Dec 15 01:21:44 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (real_yylex): Convert invisible initialized char array
+ vars to string constants.
+
+ Mon Dec 14 11:38:10 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in: Fix a lot of dependencies on cp-lex.h and other
+ headers for cp-*.o targets.
+
+ * cp-search.c (get_first_matching_virtual): Use warning_with_decl,
+ not error_with_decl, inside code that's only ever reached with
+ -Woverloaded-virtual.
+
+ * cp-typeck.c (c_expand_return): When building the INIT_EXPR, clear
+ out the context if it's an ERROR_MARK so the back-end won't die later.
+
+ * cp-type2.c (my_friendly_abort): Don't say anything like "please
+ fix above errors", just exit quietly.
+
+ * cp-lex.h (enum rid): Reordered for improved speed in grokdeclarator
+ when it does its linear search. RID_WCHAR is no longer in the
+ search path, since it's found by hand (as are RID_INT and RID_CHAR).
+ (RID_FIRST_MODIFIER): Start at RID_EXTERN now.
+
+ * cp-parse.y (overloaddef): Warn that using `overload' is an
+ anachronism.
+
+ Wed Dec 9 08:27:13 1992 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-decl.c (init_decl_processing): Make sure the "unknown type"
+ typedecl gets ignored by the debuginfo generators.
+
+ Sun Dec 13 02:38:43 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-search.c (lookup_nested_field): Check for assignment to members
+ of an enclosing class only when looking at a member, not at other
+ things (like nested types).
+
+ * cp-pt.c (type_unification): Only check that ARGS is a TREE_LIST if
+ it's non-null.
+
+ These four are from Niklas Hallqvist:
+
+ * cp-search.c (compute_visibility): Use the main variant when
+ testing if a member function belongs in the current class.
+
+ * cp-call.c (build_method_call): Don't look for constructors
+ called by initialization inside class methods in the classes'
+ bases (as opposed to inherited methods).
+
+ * cp-typeck.c (convert_for_initialization): In the case of
+ templates, make sure build_method_call knows which instantiation
+ of the class template we're initializing an object of.
+
+ * cp-decl.c (grokdeclarator): Instead of an assert, return a
+ NULL_TREE if the return_type's not return_ctor.
+
+ Sat Dec 12 23:52:25 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-dem.c (cplus_demangle): Recognize 'S' for signed char.
+ (do_cuv_prefix): Print out "signed" for it.
+
+ Fri Dec 11 19:36:36 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): Fix a typo about when to return
+ the result of a type conversion.
+
+ Tue Dec 8 20:05:25 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): If a conversion can be found via
+ a constructor, then use it.
+
+ Fri Dec 4 13:53:01 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (init_lex): Delete inits for CARD_EXPR and SET_LE_EXPR,
+ since we never actually use them.
+
+ Thu Dec 3 19:20:14 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c: Include sys/types.h for systems that need things for
+ signal.h.
+
+ Wed Dec 2 15:51:34 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_method_call): Don't call abort for pure virtual
+ methods, instead, call the user-defined method. Addresses of pure
+ virtual methods are probably still wrong.
+
+ Wed Dec 2 14:44:41 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (convert_harshness): If parm's null for a reference (as
+ can be passed in), return 0.
+
+ Tue Dec 1 18:05:20 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Make member initialization be a
+ warning, not an error. Only issue it if not -pedantic, since
+ grokfield will issue an error when pedantic. Only warn about
+ constant members being initialized if `-ansi' is being used.
+ (finish_decl): Only complain about uninitialized const's that aren't
+ members when acting -pedantic, since we'll have already issued the
+ error about initializing a field.
+
+ * cp-type2.c (build_functional_cast): Revert change of Nov 2,
+ concerning clearing the TREE_VALUE of a default parameter.
+
+ Tue Dec 1 11:09:50 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (build_method_call): When looking for a default arg
+ initialized by a ctor, be careful of a null ref w/ operand 1.
+
+ * cp-method.c (icat): Handle an argument of `1' first, since it's
+ the most common case.
+
+ Tue Dec 1 02:36:28 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (get_first_matching_virtual): Only set the
+ DECL_CONTEXT if the new context is a an unambiguous parent of the
+ previous context.
+
+ Tue Dec 1 02:20:32 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Nov 25 18:25:06 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-decl.c (pushdecl): Clear DECL_CONTEXT for local declarations.
+
+ Mon Nov 30 15:36:43 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (finish_decl): Only complain about uninitialized consts
+ in the case where we haven't seen a previous decl/init of it.
+
+ Thu Nov 26 11:22:12 1992 Mike Stump (mrs@cygnus.com)
+
+ * c++: Put a newline after for arg and before do, as ``for arg do''
+ is not accepted by all shells.
+
+ Mon Nov 23 13:21:43 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * c++ (-lm): Also recognize -lmath as a math library.
+
+ * c++ (first): Only shift if $first is no, on the chance we got no
+ arguments at all. If we didn't get anything, say so (since -lg++
+ will fake out the gcc driver into thinking we want to do something).
+
+ * cp-parse.y (paren_expr_or_null): New rule to emit an error when an
+ empty condition is used when it shouldn't.
+ (simple_if, stmt): Use it for `if', `while', and `do'.
+
+ * cp-decl.c (start_decl): If grokdeclarator returns a
+ void_type_node, return a NULL_TREE.
+
+ * cp-typeck.c (build_modify_expr_1): When calling build_opfncall for
+ `operator=', use make_node to create a plain NOP_EXPR for it to use,
+ rather than trying to pass NOP_EXPR down hoping it gets there intact.
+ (build_modify_expr): Ditto.
+ * cp-method.c (build_opfncall): Use TREE_CODE on ARG3 for a
+ MODIFY_EXPR, since it'll be coming in properly as a tree now.
+
+ Sat Nov 21 02:33:28 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-init.c (expand_default_init): Clear DECL_REGISTER if we're
+ going to call a ctor, otherwise we may end up generating bogus and
+ confusing error messages about taking the addr of something declared
+ to be `register'.
+
+ * cp-typeck.c (build_x_function_call): Recognize a ptr-to-method
+ that is being passed in as a function argument or as part of
+ a COMPONENT_REF.
+ (build_indirect_ref): If ERRORSTRING is NULL (it's passed in that
+ way in many places), then don't try to use it.
+
+ Sat Nov 21 01:49:34 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ Work towards 64-bit support, and still more housecleaning.
+
+ * cp-*.[cy]: For all functions and variables, pass/initialize/compare
+ NULL_TREE, not 0, where appropriate. Cast comparisons against 0
+ with the proper pointer types, where appropriate. Fix all passing
+ of NULLs where there should be NULL_TREEs. Don't include
+ cp-class.h anywhere. In many places, pass the missing fifth arg
+ to build_opfncall as NULL_TREE.
+ * cp-tree.h: Add decls with prototypes for prettymuch every function
+ in the C++ front-end. Include cp-class.h here.
+ * cp-call.c: (build_function_call_maybe, unary_complex_lvalue,
+ convert_harshness): Don't declare.
+ (explained): Initialize to 0.
+ (build_field_call): Give build_opfncall its fifth arg (NULL_TREE).
+ (build_method_call, build_overload_call_real): Don't declare
+ rank_for_overload.
+ * cp-class.c (lookup_tag_current_binding_level,
+ do_inline_function_hair): Don't declare.
+ (get_vfield_name): Add prototype for static fn.
+ (leftmost_baseclasses): Disable, never used.
+ (constructor_name): Don't declare.
+ (finish_struct): Delete arg EMPTY, never used. Change all callers.
+ Disable set of leftmost_baseclasses, since it's never used anywhere.
+ (pushclass): Don't declare declare_uninstantiated_type_level.
+ * cp-cvt.c (NULL): Undef first.
+ (build_up_references): Cast return of error_not_base_type to `tree'.
+ (convert_to_reference): Delete useless variable rval1.
+ (convert_to_integer): Don't declare build_binary_op_nodefault or
+ build_unary_op.
+ (build_type_conversion): Don't declare default_conversion.
+ * cp-decl.c (many extern funs): Don't declare.
+ (grokparms, lookup_name_current_level, lookup_nested_type,
+ redeclaration_error_message, parmlist_is_random,
+ grok_op_properties, expand_static_int, deactivate_exception_cleanups,
+ revert_static_member_fn): Declare static fns w/ prototypes.
+ (pushlevel): Cast passing of NEWLEVEL to an int.
+ (poplevel, poplevel_class, finish_method): Cast first two args of
+ GNU_xref_end_scope to HOST_WIDE_INT.
+ (duplicate_decls): Pass third arg to compexcepttypes (0).
+ (grokvardecl): Delete arg CTYPE, never used. Change all callers.
+ Delete unused local var block_previously_created.
+ * cp-decl2.c (substitute_nice_name): Don't declare decl_as_string.
+ (grokclassfn): Delete unused local var name.
+ (check_classfn): Delete unused arg FLAGS. Change all callers.
+ (grokfield): Pass digest_init only 3 args, not 6 (that's in the C
+ front end, dammit).
+ (coerce_new_type, coerce_delete_type): Delete first arg CTYPE, it's
+ never used. Change all callers.
+ * cp-dem.c (cplus_demangle): Delete unused var non_empty.
+ (NULL): Undef first.
+ * cp-except.c: (call_to_unhandled_exception): Add decl of
+ combine_strings.
+ (init_exception_processing): Add decls of build_function_type and
+ define_function.
+ * cp-gc.c (define_function): Add extern decl.
+ * cp-init.c (is_aggr_typedef): Delete extern decl. Add type for
+ argument OR_ELSE.
+ (build_new): Don't declare require_complete_type.
+ (build_vec_delete): Only pass 6 args, not 7.
+ * cp-lex.c (init_lex): Don't declare init_parse or
+ lang_printable_name.
+ (cons_up_default_function): Don't declare constructor_name.
+ (compiler_error): Declare args V and V2 to be HOST_WIDE_INT.
+ * cp-method.c (index, rindex): Don't declare.
+ * cp-parse.y (unary_expr): Cast first arg to build_x_unary_op to
+ be of enum tree_code type. For every call to build_new, pass its
+ fourth arg as a comparison of $$ against NULL_TREE, instead of
+ just passing it in.
+ (combine_strings, truthvalue_conversion): Add extern decls.
+ (structsp): Pass lookup_name its missing second arg (0).
+ (component_decl): Pass 5, not 6, args to grokfield.
+ (ansi_except_stmts): Delete decls of ansi_expand_start_match and
+ cplus_exception_name.
+ * cp-pt.c (mangle_class_name_for_template): Delete decl of
+ type_as_string.
+ * cp-search.c (get_binfo): Declare third arg PROTECT as int.
+ (get_binfo2, get_binfo2_recursive): Make static.
+ (get_base_distance): Cast DEPTH and IS_PRIVATE to ints, not
+ HOST_WIDE_INTs.
+ (get_baselinks): Delete decl of hash_tree_cons.
+ * cp-spew.c (probe_obstack): Make static. Compare NLEVELS != 0,
+ not > 0, since it's unsigned.
+ * cp-tree.c (list_hash_lookup_or_cons): Don't declare constructor_name.
+ * cp-type2.c (digest_init, incomplete_type_error,
+ readonly_warning_or_error, convert_for_initialization): Don't delete.
+ (error_with_aggr_type): Declare third arg ARG to be HOST_WIDE_INT.
+ (build_scoped_ref): Delete unused var orig_ref.
+ (build_x_arrow): Even worse, give build_opfncall its missing last
+ two arguments (as NULL_TREEs).
+ * cp-typeck.c (build_component_ref): Call build_indirect_ref with
+ its missing second arg (as a NULL).
+ (build_x_indirect_ref): Again, build_opfncall with its missing
+ last two args.
+ (build_x_function_call): Delete decl of build_overload_call_maybe.
+ (convert_for_assignment): Cast return of error_not_base_type to tree.
+ * cp-xref.c (getpwd): Declare as extern.
+ (Integer, String): Delete typedefs, rename all uses to their real
+ meanings (`int' and `char *').
+
+ Thu Nov 19 01:41:58 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-dem.c (do_builtin_type): Recognize `w', a wide character, since
+ it's now a type according to the ANSI X3J16 working paper; output
+ "wchar_t" for it.
+ (cplus_demangle): Accept `w' as an integral type.
+
+ * cp-lex.c (init_lex): Delete duplicate setting of `__pl'.
+
+ Wed Nov 18 21:29:14 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-class.c (finish_struct): Re-enable code to cut down on the size
+ of symbol output, the positives outweigh the negatives.
+
+ Wed Nov 18 19:51:59 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (dfs_walk): Move setting of
+ vbase_decl_ptr_intermediate out of #ifdef code.
+
+ Wed Nov 18 18:49:13 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Make wording on error message
+ stronger.
+
+ Tue Nov 17 17:46:11 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-search.c (CHECK_convert_pointer_to_single_level): Don't define.
+
+ Mon Oct 5 03:10:14 1992 Mark Eichin (eichin at tweedledumber.cygnus.com)
+
+ * c++ (numargs): $# was used after set was called; instead, save
+ $# in $numargs and use that value instead.
+
+Fri Jan 8 18:11:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (rescan): Prevent token pasting before macro call.
+ (macroexpand): Prevent token pasting around an arg unless it's raw.
+
+ * c-lex.c (yylex): Don't allow @ in identifier outside of Objective C.
+
+Fri Jan 8 15:03:52 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * pa.c (plus_xor_ior_operator): New predicate.
+
+Fri Jan 8 13:09:47 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (BYTE_LOADS_EXTEND, LOAD_EXTEND): New macros.
+ (subst, simplify_and_const_int, nonzero_bits, num_sign_bit_copies):
+ Use them.
+ (subst, case SET): Make a SIGN_EXTEND instead of paradoxical SUBREG
+ if BYTE_LOADS_SIGN_EXTEND; previously only made ZERO_EXTEND.
+
+ * function.c (assign_parm): Fix typo introduced by previous change.
+
+ * configure (486 targets): Set cpu_type to i386.
+
+Fri Jan 8 03:48:27 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386/perform.h: New file. perform_* macros for i386.
+ * i386/386bsd.h,i386/osfrose.h,i386/mach.h (perform_*): Move
+ perform_* macros to new file.
+
+Thu Jan 7 19:03:56 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (target_switches): Add "-mtrailing-colon"
+ (ASM_OUTPUT_LABEL): If TARGET_TRAILING_COLON then emit
+ a colon after the label.
+ (ASM_OUTPUT_INTERNAL_LABEL): Likewise.
+ (ASM_OUTPUT_COMMON): Likewise.
+ (ASM_OUTPUT_LOCAL): Likewise.
+
+Thu Jan 7 18:21:52 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure: Now that all files moved, always include CPU_TYPE in
+ default file names; do not check both config and config/$cpu_type.
+ Fix a few missing directory names and remove a few redundant specs.
+
+ * config/vax, config/convex: New directories; all files moved.
+ * configure (vax-*, convex-*): Files now in subdirectories.
+
+Thu Jan 7 17:31:36 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * Makefile.in (specs): Use GCC_FOR_TARGET.
+
+ * Makefile.in (install-common): Install c++ and g++ only if cc1plus
+ built.
+
+ * fixincludes: fix the rename prototype on the rs6000 <stdio.h>,
+ which conflicted with c++ use of new
+
+ * c-decl.c (start_decl): Correct order of parameter declarations.
+
+Thu Jan 7 16:52:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/romp/x-romp (CC): Add -U__STDC__.
+
+Thu Jan 7 05:30:10 1993 Torbjorn Granlund (tege@sics.se)
+
+ * libgcc2.c (__udiv_w_sdiv): Replace hard-coded constants 31 with
+ (SI_TYPE_SIZE - 1).
+
+ * pa.md: Add floating point ld/st indexed patterns.
+
+ * pa.md (reg 112:SI recognizers): Remove.
+ (main move:SI recognizer): Add alternative for greg -> reg 112.
+
+ * pa.md (floatsisf2 patterns): Put output template here, don't
+ call output_floatsiXf2.
+ (floatsidf2 patterns): Likewise.
+ * pa.c (output_floatsisf2, output_floatsidf2): Remove.
+
+ * pa.md (floatunssidf2, floatunssisf2): New patterns.
+ (floatdisf2, floatdidf2): New patterns.
+ (fix_truncsfdi2, fix_truncdfdi2): New patterns.
+ (rotrsi3, rotlsi3): New patterns.
+ (shd optimizers): 2 new patterns.
+
+ * pa.md (ashlsi3, ashrsi3, lshrsi3): Rewrite not to mention SAR.
+ (zvdep32, vextrs32): New named recognizers.
+ * pa.h (FIXED_REGISTERS): Make register 112 (SAR) not fixed.
+
+Thu Jan 7 00:38:02 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/object.m (+ error:, - error:): Use _objc_error.
+
+ * reload1.c (reload) [SMALL_REGISTER_CLASSES]: When adding an extra
+ need if the insn uses the function value return register,
+ likewise add an extra single-reg need for each class in which
+ the insn needs a group.
+
+Wed Jan 6 20:38:20 1993 Brendan Kehoe (brendan@cygnus.com)
+
+ * alpha.h (ASM_FILE_START): Change .verstamp ident for BL10.
+ * alpha.md (div/mod): Change calling sequence to agree with BL10.
+
+Wed Jan 6 19:54:05 1993 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * config/arm: New directory.
+ * configure (arm-*-*): Update location of tm_file.
+ * config/pyr: New directory.
+ * configure (pyramid-*-*): Set xmake_file.
+ Update location of tm_file.
+
+Wed Jan 6 19:03:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/sparc/sol2.h (CPP_SPEC, LIB_SPEC, LINK_SPEC):
+ Add -compat-bsd conditionals.
+
+ * cccp.c (main): Implement -iwithprefix.
+
+Wed Jan 6 18:13:13 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (print_operand): Always use "<>" instead of "!=".
+
+ * pa.h (target_switches): Add "-mdisable-fpregs" and
+ "-mdisable-indexing.
+ (CONDITIONAL_REGISTER_USAGE): If TARGET_DISABLE_FPREGS, then mark
+ all FP registers as fixed.
+ * pa.md (indexed loads): Disable if TARGET_DISABLE_INDEXING.
+ (mulsi3, xmpyu): Disable xmpyu if TARGET_DISABLE_FPREGS.
+ * configure: Add hppa1.X-hp-utahmach target.
+ * pa-utahmach.h, pa1-utahmach.h: New files.
+
+Wed Jan 6 11:20:59 1993 Michael Collison (collison at osf.org)
+
+ * expr.c (convert_move): Support new modes QFmode and HFmode.
+
+ * optabs.c (init_optabs): Add optab entries for QFmode and HFmode.
+
+ * reload1.c (init_reload): Add entries in 'reload_in_optab'
+ for QFmode and HFmode.
+
+ * varasm.c (assemble_real): Use `ASM_OUTPUT_BYTE_FLOAT' and
+ `ASM_OUTPUT_SHORT_FLOAT' for QFmode and HFmode respectively.
+
+ * machmode.def: Added new modes QFmode and HFmode.
+
+Wed Jan 6 11:29:46 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.c (fmpyaddoperands, fmpysuboperands): Cleanups suggested by
+ Tege.
+ * pa.md (fmpyadd peepholes): Cleanups suggested by Tege.
+
+ * pa.md (movqi, movhi, movsi, movdi, movsf, movdf): Discourage
+ regclass from preferring anything which involves a FP<->GR copy.
+
+ * pa.md (millicode expands): Change operand 3 in the expand
+ pattern from a clobber of a match_scratch to a clobber of a
+ match_operand with a register predicate. Make appropriate
+ change in the generated RTL.
+ (millicode insns): Clobber a match_operand with a register
+ predicate instead of a match_scratch expression.
+ * pa.c (emit_hpdiv_const): Likewise.
+
+ * pa.md (movsi, movhi, movqi, movdi): Use reg_or_0_operand
+ consistently.
+
+Wed Jan 6 02:23:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cexp.y (yylex): Make tokstart an unsigned char *.
+
+Wed Jan 6 10:46:19 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * fixincludes (limits.h): Add #ifndef/#endif around macros that
+ are supposed to be defined in float.h.
+
+ * fixincludes, fixinc.svr4, fixinc.sco: Don't "make LIB absolute"
+ if already absolute, to avoid problems with the automounter.
+
+Wed Jan 6 02:35:23 1993 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (check_preconditions, do_error, do_warning, do_xifdef):
+ Don't use signed chars to index into arrays; they might be negative.
+
+Tue Jan 5 21:20:29 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386/386.h (DEBUG_PRINT_REG): Print regno along with printable
+ name.
+ (CONST_COSTS): Handle integer CONST_DOUBLE correctly.
+ (PREFERRED_RELOAD_CLASS): Allow integer CONST_DOUBLE into int
+ regs.
+
+ * config/fx80: New directory.
+ * configure (fx80): fx80 configuration files moved there.
+
+ * config/i960: New directory.
+ * configure (i960): i960 configuration files moved there.
+
+ * config/sparc: New directory.
+ * configure (sparc): sparc configuration files moved there.
+ * sparc/sol2.h: Renamed from spc-sol2.h.
+ * sparc/xm-sol2.h: Renamed from xm-spc-sol2.h.
+ * sparc/xm-sysv4.h: Renamed from xm-spcv4.h.
+ * sparc/sysv4.h: Renamed from sparcv4.h.
+ * sparc/x-sysv4: Renamed from x-sparcv4.
+ * sparc/*.h: Use new file names for included sparc files.
+
+ * config/i860: New directory.
+ * configure (i860): i860 configuration files moved there.
+ * i860/bsd.h: Renamed from i860b.h.
+ * i860/bsd-gas.h: Renamed from i860bg.h.
+ * i860/mach.h: Renamed from i860mach.h.
+ * i860/sysv3.h: Renamed from i860v3.h.
+ * i860/sysv4.h: Renamed from i860v4.h.
+ * i860/xm-sysv3.h: Renamed from xm-i86v3.h.
+ * i860/xm-sysv4.h: Renamed from xm-i86v4.h.
+ * i860/x-sysv3: Renamed from x-i860v3.
+ * i860/x-sysv4: Renamed from x-i860v4.
+ * i860/*.h: Use new file names for included i860 files.
+
+ * m68k/tti68k.h: Deleted.
+ * i386/x-xenix: Deleted.
+ * i860/i860g3.h: Deleted.
+
+Tue Jan 5 23:54:36 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * config/pa: New directory.
+ * config/pa/*.h: Handle PA configuration files in new
+ subdirectory.
+ * configure (pa): Likewise.
+
+Tue Jan 5 23:31:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * elxsi, gmicro, tahoe, we32k, spur: New subdirs; files moved.
+
+ * config/harris.h: Include tahoe.h from tahoe/ subdir.
+
+Tue Jan 5 21:45:56 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * fixincludes (Xmu.h): Add missing ${LIB}/.
+
+ * calls.c (expand_call): Pass NULL_RTX to INIT_CUMULATIVE_ARGS.
+ * function.c (assign_parms): Pass NULL_RTX to INIT_CUMULATIVE_*.
+ * expr.c (emit_library_call): Pass NULL_TREE to INIT_CUMULATIVE_ARGS.
+
+ * Makefile.in (install-dir): Only make includedir once.
+
+ * cccp.c (do_line): Add pedantic warnings for out of range line
+ numbers, and non-space characters after the filename.
+
+Tue Jan 5 15:09:29 1993 Michael Meissner (meissner@osf.org)
+
+ * mips/bsd-4-gdb.h: Renamed from mips-gbsd.h.
+ * mips/bsd-4.h: Renamed from mips-bsd.h.
+ * mips/bsd-5-gdb.h: Renamed from mips-5gbsd.h.
+ * mips/bsd-5.h: Renamed from mips-5bsd.h.
+ * mips/dec-gosf1.h: Renamed from dec-gosf1.h.
+ * mips/dec-osf1.h: Renamed from dec-osf1.h.
+ * mips/iris3-gdb.h: Renamed from irisgdb.h.
+ * mips/iris3.h: Renamed from iris.h.
+ * mips/iris4-gdb.h: Renamed from iris4g.h.
+ * mips/iris4.h: Renamed from iris4.h.
+ * mips/mips-4-gdb.h: Renamed from mips-gdb.h.
+ * mips/mips-5-gdb.h: Renamed from mips-5gdb.h.
+ * mips/mips-5-gdb.h: Renamed from mips-g5.h.
+ * mips/mips-5.h: Renamed from mips-5.h.
+ * mips/mips.c: Renamed from mips.c.
+ * mips/mips.h: Renamed from mips.h.
+ * mips/mips.md: Renamed from mips.md.
+ * mips/news4-gdb.h: Renamed from mips-gnews.h.
+ * mips/news4.h: Renamed from mips-news.h.
+ * mips/news5-gdb.h: Renamed from mips-gn5.h.
+ * mips/news5.h: Renamed from mips-n5.h.
+ * mips/nws3250v4.h: Renamed from nws3250v4.h.
+ * mips/osfrose.h: Renamed from decrose.h.
+ * mips/svr3-4-gdb.h: Renamed from mips-gsysv.h.
+ * mips/svr3-4.h: Renamed from mips-sysv.h.
+ * mips/svr3-5-gdb.h: Renamed from mips-5gsysv.h.
+ * mips/svr3-5.h: Renamed from mips-5sysv.h.
+ * mips/svr4-4-gdb.h: Renamed from mips-gsvr4.h.
+ * mips/svr4-4.h: Renamed from mips-svr4.h.
+ * mips/svr4-5-gdb.h: Renamed from mips-5g4.h.
+ * mips/svr4-5.h: Renamed from mips-5svr4.h.
+ * mips/t-mips: Renamed from t-mips.
+ * mips/t-osfrose: Renamed from t-decrose.
+ * mips/t-ultrix: Renamed from t-decstatn.
+ * mips/ultrix-gdb.h: Renamed from decstabs.h.
+ * mips/ultrix.h: Renamed from decstatn.h.
+ * mips/x-dec-osf1: Renamed from x-dec-osf1.
+ * mips/x-mips: Renamed from x-mips.
+ * mips/x-nws3250v4: Renamed from x-nws3250v4.
+ * mips/x-osfrose: Renamed from x-decrose.
+ * mips/x-sysv: Renamed from x-mipsv.
+ * mips/x-ultrix: Renamed from x-decstatn.
+ * mips/xm-iris3.h: Renamed from xm-iris.h.
+ * mips/xm-iris4.h: Renamed from xm-irix4.h.
+ * mips/xm-mips.h: Renamed from xm-mips.h.
+ * mips/xm-news.h: Renamed from xm-mipsnews.h.
+ * mips/xm-sysv.h: Renamed from xm-umips.h.
+
+ * mips/* Modify include files as needed for the MIPS files being
+ in the config/mips subdirectory.
+
+ * halfpic.h, halfpic.c: Eliminate unknown symbol errors when
+ linking the gen* programs for {i386,dec} OSF/rose, by using BSS
+ variables instead of extern.
+
+Tue Jan 5 00:29:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (c_sizeof): Call force_fit_type only for INTEGER_CST.
+
+ * objc/core.c (_objc_alloc): Renamed from _alloc.
+ (_objc_dealloc, _objc_realloc, _objc_copy, _objc_error): Likewise.
+ * objc/objc.h: Decls renamed also.
+ * objc/objc-proto.h: Uses renamed also.
+
+ * config.sub ($os alternatives for sco and isc):
+ Preserve the specified os version if any.
+ Each alternative handles both 386 and 486, preserving distinction.
+ ($basic_machine alternatives for sco and isc): Deleted.
+ (i[34]86v32, i[34]86v, i[34]86v4):
+ Handle both cpus together, preserving distinction.
+
+Mon Jan 4 20:59:37 1993 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * config/ns32k: New directory.
+ * configure (ns32k): ns32k configuration files moved there.
+
+ * ns32k/*.h: Use new file names for included ns32k files.
+
+ * config/m68k: New directory.
+ * configure (m68k): m68k configuration files moved there.
+
+ * m68k/sgs.h: Renamed from m68ksgs.h.
+
+ * m68k/*.h: Use new file names for included m68k files.
+
+Mon Jan 4 18:06:31 1993 Michael Meissner (meissner@osf.org)
+
+ * configure (i386-osfrose): Rename i386 OSF/rose files to
+ osfrose.h, t-osfrose.h, and x-osfrose.h.
+
+ * i386/osfrose.h: Renamed from i386/rose.h.
+ * i386/t-osfrose: Renamed from i386/t-rose.
+ * i386/x-osfrose: Renamed from i386/x-rose.
+
+Mon Jan 4 11:03:11 1993 Torbjorn Granlund (tege@gnu.ai.mit.edu)
+
+ * Makefile.in (install-common-headers): Pipe grep output to /dev/null.
+
+Mon Jan 4 01:12:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386/bsd.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
+ Alternate definitions if NO_UNDERSCORES.
+
+ * c-parse.in (component_declarator):
+ Allow attribute after nameless field.
+
+ * fixincludes (making dirs and links): If we already made subdirs
+ for a dir foo and foo turns out to be a symlink outside /usr/include,
+ after we have made a dir for it in ./root/, make similar subdirs there.
+
+Sun Jan 3 07:28:32 1992 Karl Berry (karl@red.cs.umb.edu)
+
+ * x-romp (CC): Add -w.
+
+Sun Jan 3 21:19:50 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
+
+ * jump.c (jump_optimize, clause for `if (foo) b++'):
+ Do this regardless of BRANCH_COST if HAVE_incscc is defined.
+ * pa.md (scc insn): Name this pattern "scc".
+ (negscc, incscc, cmov): New patterns.
+ * pa.c (incscc_operator): New function.
+
+ * pa.h (actual_fsize, apparent_fsize): Delete unused variables.
+
+Sun Jan 3 20:37:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Recognize and remove .cxx as filename suffix.
+
+Sun Jan 3 19:39:18 1993 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version number to 34.
+
+ * mips.c (save_restore_insns): Don't give an error if saving an FP
+ register at stack offset 0, which occurs when the function is a
+ leaf function that uses lots of FP registers, and saves no GP
+ registers.
+
+Sun Jan 3 19:00:29 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * local-alloc.c (block_alloc): Generalize tying so we can tie
+ any operand with the output unless some operand must be in the
+ same register as the output, in which case only try tying that
+ operand.
+
+ * rtl.c (rtx_alloc): Clear common area of rtx in a portable manner.
+
+Sun Jan 3 13:57:33 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (CONST_COSTS): Make CONST_DOUBLES very expensive.
+ Give HIGH expressions a small cost with CONST, SYMBOL_REF,
+ and LABEL_REF being twice as expensive as HIGH.
+
+ * pa.md (fmpyadd peepholes): New peepholes to issue independent
+ floating point multiply and add instructions at the same time.
+ (fmpysub peepholes): Likewise for multiply and subtract instructions.
+ * pa.c (fmpyaddoperands): Verifys given registers are suitable for
+ use in fmpyadd instructions.
+ (fmpysuboperands): Likewise, but for fmpysub instructions.
+
+ Wed Oct 28 12:07:54 1992 Tim Moore (moore at defmacro.cs.utah.edu)
+ * pa.md (call, call_value): If flag_pic, emit restore of PIC table
+ register.
+ (call_interal, call_value_internal): Name matching insns.
+ (movsi, movhi, movqi, movdi, movsf, movdf patterns): Don't
+ match memory to memory moves.
+
+ * pa.h (FIXED_REGISTERS, CALL_USED_REGISTERS): r3 isn't fixed!
+ (REG_ALLOC_ORDER): Move r3 up in the allocation order.
+ (HAVE_ATEXIT): Define.
+ (INITIAL_FRAME_POINTER_OFFSET): compute_frame_size ()
+ now does the whole calculation, including rounding.
+ (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Don't pass leaf_function
+ to output_function_{prologue,epilogue}.
+ (DELAY_SLOTS_FOR_EPILOGUE): Call hppa_epilogue_delay_slots ().
+
+ * pa.c (hppa_save_pic_table_rtx): New variable.
+ (finalize_pic): Setup hppa_save_pic_table_rtx..
+ (apparent_fsize): Delete variable.
+ (compute_frame_size): Many changes. Return the total frame size,
+ including space for "magic" stuff at the top of the stack and any
+ rounding for the Snake.
+ (output_function_prologue): Don't take a leaf_function argument;
+ Decide that based on frame size and frame_pointer_needed.
+ Don't emit any frame diddling code if actual_fsize is 0.
+ (output_function_epilogue): Don't take leaf_function argument.
+ Don't do anything if no frame.
+ Keep stack pointer aligned to 64 bytes before loading from old
+ frame pointer.
+ (hppa_epilogue_delay_slots): Only if there is no frame will we
+ have an empty delay slot to fill.
+ (eligible_for_epilogue_delay): Don't check "leaf_function" anymore.
+
+Sun Jan 3 07:28:29 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c (putenv_from_prefixes): Use PATH_SEPARATOR.
+ Properly use JUST_MACHINE_SUFFIX when desired; always make path
+ the same as find_a_file will use.
+
+Sat Jan 2 16:35:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Translate sunos5 to solaris2, and solaris1 to sunos4.
+
+ * tree.c, tree.h (int_size_in_bytes): Change ret type back to int.
+
+ * calls.c (expand_call): Don't use int_size_in_bytes
+ for a variable-size object.
+
+Sat Jan 2 15:16:24 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * c-parse.in (label): Use expr_no_commas instead of expr for case
+ labels.
+
+Sat Jan 2 03:30:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (gcc.o): Define TOOLDIR_BASE_PREFIX.
+
+ * gcc.c (TOOLDIR_PREFIX): Define if not defined.
+ (tooldir_prefix, tooldir_base_prefix): New variables.
+ (main): Set tooldir_prefix.
+ Add it (plus `bin' or `lib') to search paths.
+
+ * cccp.c (default_include): Look directly in TOOL_INCLUDE_DIR.
+ * protoize.c (default_include): Likewise.
+
+ * collect2.c (main): Look for `real-ld' after `gld', before `ld'.
+ In debug printout, fix typo in prev change.
+
+Fri Jan 1 13:32:36 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (cccp.o, protoize.o, unprotoize.o):
+ Define TOOL_INCLUDE_DIR as $(tooldir)/include.
+ (test-protoize-simple): Define TOOL_INCLUDE_DIR as 0.
+
+ * config/i386/linux.h (STARTFILE_SPEC): Removed -L"TOOLDIR"/lib.
+
+Fri Jan 1 06:26:11 1993 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * collect2.c: Look for tools using paths rather than a single prefix.
+ (struct prefix_list, struct path_prefix): New structures.
+ (cpath, path): New variables.
+ (find_a_file, add_prefix): New functions; simplified versions of
+ functions from gcc.c.
+ (prefix_from_env): New function.
+ (main): Get path to search for binaries from COMPILER_PATH
+ environment variable always set by gcc.c and from PATH.
+ Qualify names with target machine in cross-environment unless
+ using compiler directories.
+ Use find_a_file to find our binaries.
+ Remove use of single prefix.
+ If -debug, print strip_file_name.
+ (fork_execute): Print program we are trying to execute if -debug and
+ we can't find the file.
+ (scan_prog_file): Complain if can't find NM.
+ * Makefile.in (REAL_LD_NAME): New variable.
+ (collect2.o): Don't need STANDARD_STARTFILE_PREFIX, etc.
+ (install-cross-tools): Use REAL_LD_NAME instead of `ld' when linking
+ files from tooldir to libsubdir.
+
+Fri Jan 1 17:51:05 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * dbxout.c (dbxout_symbol, TYPE_DECL case): Don't output tag which
+ references incomplete type.
+
+ * fixincludes (sunwindow/{win_cursor.h,win_lock.h}): Change invalid
+ #ifdef identifier `ecd.cursor' to `ecd_cursor'.
+
+ * c-typeck.c (build_binary_op): Add 'right' and 'left' to shift
+ count warnings to distinguish them from each other.
+
+ * function.c (fixup_var_refs_insn): Update last_parm_insn when
+ insns are output after it to fix it up.
+
+ * sdbout.c (plain_type_1): Distinguish some C integer types by name.
+
+ * Makefile.in (MAKEINFO): New variable, defined to `makeinfo'.
+
+ * rs6000.h (ASM_FILE_START): Switch to text section at end.
+ Output declaration for .mcount when profiling.
+
+Fri Jan 1 12:15:42 1993 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (movqi, movhi, movsi, movdi, movsf, movdf): Fix attributes
+ which involve fp<->gr copies to match current reality.
+ (indexed loads): These should have "load" attributes, not "move".
+
+ * pa.c (output_floatsisf, output_floatsidf): Abort if presented
+ with a general register.
+ * pa.md (movdf const_couble): Fix lengths.
+ (floatsisf patterns): Likewise.
+ (floatsidf patterns): Likewise.
+
+ * pa.h (REGISTER_MOVE_COST): Make moving between FP and non-FP
+ registers more expensive.
+
+ * pa.h (TARGET_NO_BSS): Delete target switch. Delete all references.
+
+Fri Jan 1 07:40:58 1993 Tom Wood (wood@dg-rtp.dg.com)
+
+ * config/m88k: New directory.
+ * configure (m88k*): Files are now in config/m88k.
+ * m88k/dgux.h, m88k/dolph.h, m88k/luna.h, m88k/sysv3.h,
+ m88k/sysv4.h, m88k/xm-sysv3.h: Include files in m88k.
+ * m88k/t-dgux, m88k/t-m88k, m88k/t-m88k, m88k/t-sysv4: Use
+ m88k/m88k-move.sh.
+
+Thu Dec 31 17:38:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): Propagate failure from recursive calls.
+
+ * i386/386bsd.h (perform_*): Rename macro args to arg0, arg1.
+
+Thu Dec 31 15:42:35 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sched.c (sched_analyze_1, sched_analyze_2): If before reloading,
+ record dependences that may be introduced by reload substituting
+ equivalents for pseudo registers.
+
+ * sched.c (sched_analyze_2): Use REG_NOTE_KIND not GET_MODE in
+ add_dependence call.
+ (sched_analyze_insn): Likewise.
+
+ * sparc.h (LIB_SPEC): When -a, include bb_link.o.
+
+ * t-sol2 (gmon.o, crt*.o): Change config to $(srcdir)/config.
+
+ * reload.c (operands_match_p): For WORDS_BIG_ENDIAN machines,
+ make multiple register operands equivalent if the last register of
+ the groups are the same.
+ (subst_reloads): Use gen_lowpart_common to change mode of
+ reloadreg.
+ * reload1.c (emit_reload_insns): Likewise.
+
+ * reload1.c (gen_input_reload): Also handle PLUS of a MEM and
+ CONSTANT specially.
+
+ * i960.h (CPP_SPEC, CC1_SPEC, ASM_SPEC, LINK_SPEC,
+ TARGET_SWITCHES): Delete support for non-existent CPU variations.
+ (ASM_SPEC, LINK_SPEC, TARGET_SWITCHES): Add support for -mlink-relax.
+ (SELECT_CC_MODE): Correct typo.
+
+ * sparc.c (print_operand): For invalid operands, call
+ output_operand_lossage instead of aborting.
+
+ * i960.md (call_internal, call_value_internal): Use 'l' for
+ match_scratch constraint not 'd'.
+
+ * function.c (assign_parms): Emit conversions into a sequence, and
+ then output the sequence after all parameters have been moved.
+
+ * optabs.c (expand_binop): Correct indentation of doubleword
+ multiply picture.
+
+ * sparc.h (TARGET_SWITCHES): Have -msparclite also clear TARGET_FPU.
+
+ * va-i960.h: Define away __extension__ if compiled by GCC v1.
+
+ * libgcc2.c (L_builtin_new): Change to L_op_new. Use new style
+ definition for __builtin_new.
+ (L_caps_New): Change to L_new_handler. Delete unused function
+ builtin_vec_new.
+ (L_builtin_del): Change to L_op_delete. Delete vfp declaration.
+ Use new style definition for __builtin_delete. Delete unused
+ function __builtin_vec_delete.
+ * Makefile.in (LIB2FUNCS): Change _builtin_new to _op_new. Change
+ _caps_New to _new_handler. Change _buildin_del to _op_delete.
+
+ * m68k.h (TARGET_SWITCHES): -m68030 does not imply -m68881.
+
+ * gcc.c (input_from_pipe): New variable.
+ (do_spec): Set/clear input_from_pipe as appropriate. Translate %|
+ to "-" if input_from_pipe is true.
+ * sparc.h (ASM_SPEC): Use %|.
+
+ * m68k.c (strict_low_part_peephole_ok): New function.
+ * m68k.md: Add peephole to eliminate unecessary clear instructions
+ in strict_low_part insn sequences.
+
+ * configure (elxsi): Move it out of the middle of the sparc section.
+
+ * unroll.c (copy_loop_body, JUMP_INSN case): Do map the body of
+ the loop branch back, then rewrite it to jump past the end of the
+ unrolled loop.
+
+ * c-decl.c (pushdecl): Check TREE_PUBLIC in addition to
+ DECL_EXTERNAL decls when looking for duplicate external declarations.
+
+ * cccp.c (multiline_string_line): New file scope static variable.
+ (rescan): Delete multiline_string_line variable definition.
+ (skip_quoted_string): Print start line number of unterminated
+ string and character constants. When see a newline: warn if
+ pedantic; delete unreachable duplicate code for traditional case;
+ set multiline_string_line.
+
+Thu Dec 31 11:11:30 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa-hpux.h (LIB_SPEC): Fix so that one can link in profiled
+ libraries under HPUX.
+ * pa-ghpux.h, pa-hpux7.h, pa-gux7.h (LIB_SPEC): Likewise.
+
+Thu Dec 31 08:50:42 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.h (OBJECT_FORMAT_COFF): Add definition.
+
+ * rs6000/xm-rs6000.h (REAL_NM_FILE_NAME): Delete from here.
+ * rs6000/rs6000.h (REAL_NM_FILE_NAME): Put it here.
+
+Thu Dec 31 01:53:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (build_index_type): Leave TYPE_MAX_VALUE as -1 if it was;
+ don't truncate the high bits.
+
+ * Makefile.in (distdir): New target broken out from gcc.xtar.
+ Depend on $(srcdir)/INSTALL.
+ (gcc.xtar): Depend on distdir.
+ (doc): Delete dep $(srcdir)/INSTALL.
+
+Wed Dec 30 12:54:53 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386/i386.c (output_fp_cc0_set): Abort if cc0 user not found.
+
+ * i386/i386.md (movsf,movdf): Change constraints to use integer regs
+ for mem-mem copies.
+
+ * i386/i386.h (PREFERRED_RELOAD_CLASS): Don't reload CONST_DOUBLE into
+ integer regs.
+
+ * jump.c (delete_computation): reg_referenced_p wants body, not insn.
+
+Wed Dec 30 07:03:49 1992 John F Carr (jfc at Athena.MIT.EDU)
+
+ * caller-save.c (setup_save_areas): Don't assign save area for a
+ group if some register in the group has already been assigned an
+ area.
+
+Wed Dec 30 06:05:07 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.def (TRUTH_XOR_EXPR): New tree code.
+ * expr.c (expand_expr, case TRUTH_XOR_EXPR): New case.
+ * fold-const.c (invert_truthvalue, case TRUTH_XOR_EXPR): New case.
+ (fold, case TRUTH_XOR_EXPR): New case.
+ (fold, case TRUTH_OR_EXPR, TRUTH_AND_EXPR): Check for second
+ operand of appropriate value to determine result whether or
+ not first operand is a constant.
+ * c-common.c (truthvalue_conversion): Handle TRUTH_XOR_EXPR.
+ * c-convert.c, cp-cvt.c (convert_to_integer): Likewise.
+ * c-typeck.c (build_binary_op): Likewise.
+ * cp-typeck.c (build_binary_op_nodefault): Likewise.
+ * cp-class.c (instantiate_type): Likewise.
+ * stmt.c (expand_return): Likewise.
+
+Wed Dec 30 01:48:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Chmod each copied file a+r.
+ * fixinc.svr4, fixinc.sco: Likewise.
+
+ * Makefile.in (extraclean): Quote the sharps.
+
+ * expr.c (expand_expr): In NOP_EXPR case, truncate and
+ reextend integer constants.
+
+Tue Dec 29 18:21:06 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386/i386.md (bit complement): Constrain inputs and outputs to
+ match, instead of using match_dup.
+ (zero_extract test): Reenable with separate patterns to match
+ QImode and SImode zero_extract.
+
+ * i386/sysv3.h: Renamed from i386/svr3.h.
+ * i386/sysv4.h: Renamed from i386/svr4.h.
+ * i386/x-sysv3: Renamed from i386/x-svr3.
+ * i386/xm-sysv3.h: Renamed from i386/xm-svr3.h.
+ * i386/xm-sysv4.h: Renamed from i386/xm-svr4.h.
+
+ * configure (i386): Use new file names for 386 files.
+ * i386/*.h: Likewise for included files.
+
+Tue Dec 29 18:04:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Avoid truncation of object sizes when bit size won't fit in a word.
+ * fold-const.c (const_binop): New arg NOTRUNC. All calls changed.
+ (size_binop): Pass 1 for NOTRUNC.
+ (force_fit_type): No longer static.
+ * tree.c (size_in_bytes): Call force_fit_type with end result.
+ (int_size_in_bytes): Avoid overflow as long as result fits.
+ Return type is now unsigned int.
+ * c-typeck.c (c_sizeof, c_sizeof_nowarn, c_size_in_bytes):
+ Call force_fit_type with end result.
+
+ * stor-layout.c (layout_record): Avoid overflow in const_size
+ by adding into var_size instead.
+
+Tue Dec 29 09:01:33 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * configure (m88k-dgux): Use t-m88kdgux.
+
+Tue Dec 29 06:56:41 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * genemit.c (gen_split): Initialize _val in generated function.
+
+Tue Dec 29 02:27:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (make_definition): Pass NULL as 3rd arg to do_define.
+
+Mon Dec 28 14:56:55 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in (stmt, FOR case): Do call position_after_white_space
+ after recording the current lineno for the increment.
+
+ * config.sub: Default to bsd for *-sequent.
+
+Mon Dec 28 06:05:12 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c: Add a few missing HOST_WIDE_INT casts.
+ Rename references to `significant' bits to be `nonzero' bits;
+ specifically the following, but also local vars and comments:
+ (reg_nonzero_bits): Renamed from reg_significant.
+ (nonzero_bits): Renamed from significant_bits.
+ (nonzero_sign_valid): Renamed from significant_valid.
+ (set_nonzero_bits_and_sign_copies): Renamed from set_significant.
+
+ * fold-const.c (fold, case BIT_IOR_EXPR): Convert the IOR of a pair
+ of shifts into a rotate when it is equivalent.
+
+ * expmed.c (expand_shift): If rotating by a constant, try both
+ directions of rotate.
+ If can't open-code a rotate, do it as a pair of shifts followed by
+ an IOR.
+
+ * combine.c (simplify_comparison, case NEG): Replace large block of
+ code with equivalent call to num_sign_bit_copies.
+
+ * expr.c (get_inner_reference): Don't look at flag_volatile.
+ (expand_expr, case INDIRECT_REF, OFFSET_REF): Likewise.
+ * c-typeck.c, cp-typeck.c (build_indirect_ref): Set volatility from
+ flag_volatile.
+
+ * i386/rose.h (OPTIMIZATION_OPTIONS): Delete; we don't want to set
+ -finline-functions for -O3 and this does nothing else useful.
+ * mips.h (OPTIMIZATION_OPTIONS): Likewise.
+ * i960.h (OPTIMIZATION_OPTIONS): Don't set -finline-functions for -O3.
+
+Sun Dec 27 18:33:38 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * config/i386: New directory.
+ * configure.bat: 386 configuration files moved to new directory.
+ * configure (i386): Likewise.
+ Delete lines that duplicate default actions of configure.
+
+ * i386/386bsd.h: Renamed from i386bsd.h.
+ * i386/att.h: Renamed from att386.h.
+ * i386/bsd.h: Renamed from bsd386.h.
+ * i386/gas.h: Renamed from i386gas.h.
+ * i386/gstabs.h: Renamed from i386gstabs.h.
+ * i386/linux.h: Renamed from i386linux.h.
+ * i386/mach.h: Renamed from i386mach.h.
+ * i386/rose.h: Renamed from i386rose.h.
+ * i386/sco.h: Renamed from i386sco.h.
+ * i386/sco4.h: Renamed from i386sco4.h.
+ * i386/seq-gas.h: Renamed from seq386gas.h.
+ * i386/sequent.h: Renamed from seq386.h.
+ * i386/sun.h: Renamed from i386sun.h.
+ * i386/svr3.h: Renamed from i386v.h.
+ * i386/svr4.h: Renamed from i386v4.h.
+ * i386/t-isc: Renamed from t-i386isc.
+ * i386/t-rose: Renamed from t-i386rose.
+ * i386/t-sco: Renamed from t-i386sco.
+ * i386/unix.h: Renamed from unx386.h.
+ * i386/x-aix: Renamed from x-aix386.
+ * i386/x-isc: Renamed from x-i386isc.
+ * i386/x-rose: Renamed from x-i386rose.
+ * i386/x-sco: Renamed from x-i386sco.
+ * i386/x-sco4: Renamed from x-i386s4.
+ * i386/x-svr3: Renamed from x-i386v.
+ * i386/xm-aix.h: Renamed from xm-aix386.h.
+ * i386/xm-dos.h: Renamed from xm-i386dos.h.
+ * i386/xm-isc.h: Renamed from xm-i386isc.h.
+ * i386/xm-sco.h: Renamed from xm-i386sco.h.
+ * i386/xm-sun.h: Renamed from xm-i386sun.h.
+ * i386/xm-svr3.h: Renamed from xm-i386v.h.
+ * i386/xm-svr4.h: Renamed from xm-i38v4.h.
+
+ * i386/*.h: Use new file names for included 386 files.
+
+Sun Dec 27 22:02:09 1992 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * i386linux.h (CPP_SPEC): Define -D__i486__ if compile for i486.
+ (ASM_OUTPUT_ADDR_DIFF_ELT, JUMP_TABLES_IN_TEXT_SECTION):
+ Copy definitions from i386v4.h to get PIC code correct.
+ (FUNCTION_PROFILER): Copy definition from i386bsd.h.
+ (COMMENT_BEGIN, ASM_APP_ON, ASM_APP_OFF): Copy from i386bsd.h
+ to prepare for new GAS.
+
+ * Makefile.in: (gcc.o): Add $(MAYBE_TARGET_DEFAULT).
+
+Sun Dec 27 16:33:13 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.c (block_move_loop, block_move_no_loop, block_move_sequence):
+ Always set MEM_IN_STRUCT_P. If it wasn't previously set, use BLKmode.
+ * m88k.md (BLKmode load/store patterns): New.
+ (call_block_move, call_movstrsi_loop): Allow any mode for the preload.
+
+ * m88k.c (output_file_start): Emit `requires_88110' when -m88110
+ is used with -mversion-04.00.
+ * m88k.h (OVERRIDE_OPTIONS): Allow version 04.00 default.
+ (VERSION_0400_SYNTAX, REQUIRES_88110_ASM_OP): New definitions.
+ * m88kdgux.h (ASM_FIRST_LINE): Print the version string.
+
+ * m88k.md (length attribute): Branches may be expanded to two
+ instructions by the assembler.
+ (DFmode bcnd pattern): Don't try to fill the delay slot.
+ (CCmode bbx patterns): Reverse the 1/0, not the condition.
+
+ * m88kdgux.h (ASM_SPEC): Pass -KVstring given -mversion-string.
+
+ * m88kdgux.ld, t-m88kdgux: New file.
+ * m88kdgux.h (LIB_SPEC): Add crtend.o.
+ (STARTFILE_SPEC): Add crtbegin.o, and m88kdgux.ld for COFF.
+ (CTOR_LIST_END, DTOR_LIST_END): Define as -1.
+ (DO_GLOBAL_{C,D}ORS_BODY): Ignore null entries and look for -1
+ bounds.
+
+Sun Dec 27 16:08:04 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * hp320.h (ASM_OUTPUT_DOUBLE_OPERAND): Delete spurious space after \.
+
+ * gstddef.h [__sequent__]: #undef _PTRDIFF_T_ at beginning, if defined.
+
+ * reload1.c (emit_reload_insns): Error instead of abort
+ if an asm has a VOIDmode output operand.
+
+ * reload.c (push_reload): Move the NO_REGS abort after the
+ error check for asms, to avoid crashing for asms.
+ Fix inmode and outmode too, if they are VOID for an asm.
+
+Sun Dec 27 10:48:10 1992 Jeffrey A Law (law@schirf.cs.utah.edu)
+
+ * reorg.c (mostly_true_jump): When trying to determine
+ if the current insn is essentially a conditional return,
+ look inside of SEQUENCE insns for jumps.
+ Predict jumps to the exit test for loops as likely to be taken.
+
+Sun Dec 27 06:53:39 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c (relax_delay_slots): Only look at JUMP_LABEL for a
+ condjump_p.
+
+ * jump.c (delete_jump): Use single_set to see if INSN just sets PC.
+ Remove code to delete previous cc0-setting insn.
+ (delete_compution): No longer conditional on #ifndef HAVE_cc0.
+ If insn uses CC0, delete previous insn that just sets CC0 for us;
+ do deletion via recursive call.
+
+ * combine.c (subst, case SET): Call recog_for_combine with OTHER_INSN,
+ not UNDOBUF.OTHER_INSN.
+
+ * genoutput.c (have_error): New variable.
+ (error): Set it.
+ (main): Test it and return FATAL_EXIT_CODE if it is set.
+
+ * emit-rtl.c (copy_rtx_if_shared): A CONST can be shared if it
+ contains a SYMBOL_REF.
+ * rtl.c (copy_rtx): Likewise.
+ A SCRATCH must be shared.
+ A MEM may be shared if it is at a constant address.
+
+Sun Dec 27 02:48:27 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (macroexpand): Expand each macroarg first time we find a need
+ to substitute its expansion.
+ (macarg): Don't expand them here.
+
+ * expr.c (expand_expr, constructor case): If we made a stack slot,
+ set MEM_IN_STRUCT_P if the type warrants it.
+
+ * configure: When testing existence of a config file, specify $srcdir.
+
+Sat Dec 26 18:12:08 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (make_node, case 'c'): For INTEGER_CST, use size of
+ struct containing constant, just like for reals. Also, clean
+ up code to avoid confusing fallthrough.
+
+ * a29k/unix.h, rs6000/aix32.h, rs6000/mach.h, rs6000/xm-mach.h:
+ Include main file from subdirectory.
+
+ * config/a29k, config/alpha, config/romp, config/rs6000: New
+ directories.
+ * configure: If a file isn't in config, try in config/$cpu_type.
+ (a29k, alpha, romp, rs6000): Files moved to new machine subdirectories.
+ Delete lines that duplicate default actions of configure.
+
+ * combine.c (gen_lowpart_for_combine): Allow MODE to be wider
+ than a word in restricted circumstances.
+
+ * c-typeck.c (check_format): Using both a precision and the `0' flag
+ is only a problem on `d', `i', `o', `u', `x', and `X' conversions.
+
+Sat Dec 26 17:05:24 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * object.h: Don't include objc.h or stdio.h.
+ Change Class_t to Class everywhere.
+ (id, nil, Nil, Class, STR, SEL, IMP, BOOL, YES, NO): Define,
+ but not if objc.h was already included.
+ [__objc_INCLUDE_GNU] (Class): Alias this to Class_t.
+
+ * object.m: Include objc.h and stdio.h before object.h.
+
+Sat Dec 26 05:12:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.3.3 released.
+
+Fri Dec 25 06:53:49 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * expmed.c (store_bit_field): If VALUE needs to be narrowed, do
+ it with gen_lowpart, not an explicit SUBREG.
+
+ * a29k.md (divsf3): Fix typo in mode of DIV.
+
+Fri Dec 25 00:03:26 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * Makefile.in (install-dir): Add missing semicolon.
+
+ * i386sco4.h (_KR, _SVID, _NO_PROTOTYPE): Define if -traditional.
+
+Thu Dec 24 15:02:29 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4: Don't change bitfield types to int.
+
+ * seq386.h (TARGET_DEFAULT): Override.
+
+Wed Dec 23 20:19:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386sco4.h (CPP_SPEC): Avoid repeated def of _M_SYSV.
+
+Tue Dec 22 15:40:08 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (store_parm_decls): Use TYPE_MAIN_VARIANT to compare types
+ when merging info from previous prototype.
+
+ * fixinc.svr4: Add special fixes for netinet/in.h and sys/endian.h.
+
+Mon Dec 21 02:58:27 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * m68kv4.h (ASM_OUTPUT_CASE_END):
+ Use switch_table_difference_label_flag.
+
+ * configure (m68k-motorola-sysv*): Set use_collect2.
+
+Sat Dec 19 20:19:44 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.c (secondary_reload_class): Return CR_REGS for larger than
+ word memory, and BP_REGS for part-word mem with no DW.
+
+ * a29k.md: Consistently use `&' in constraint of MATCH_SCRATCH.
+ Always use a reg as 4th arg of dmac/fmac even if ignored by insn.
+ Uses of `b' as a constraint in multi-word reload patterns should
+ be `c'.
+
+Sat Dec 19 01:32:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (all.cross): Add `specs' as dep.
+
+ * build-make (CC): Delete the -V option.
+
+ * getpwd.c (getpwd): Don't get upset if ERANGE is not defined.
+
+Fri Dec 18 20:56:59 1992 John Hassey (hassey@dg-rtp.dg.com)
+
+ * objc-actions.c (build_encode_expr):
+ Terminate the encode string with a null.
+ (encode_aggregate): Distinguish pointer to record from a
+ record. Output fields for record. Fix unions.
+
+Fri Dec 18 17:17:39 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 33.
+ (struct mips_args): Add support for passing QI/HI mode structures
+ the way the MIPS compiler passes them.
+ (SIZE_TYPE, PTRDIFF_TYPE): Define as unsigned int, and int if not
+ defined already.
+
+ * mips.c (init_cumulative_args): Use a static structure to
+ initialize the CUMULATIVE_ARGS structure.
+ (function_arg_advance): Add a newline at the end of debug output.
+ (function_arg): If a structure is passed as a QImode or HImode
+ value in a register, record the fact for the call define_expands
+ and prologue expander to move the structure into the high part of
+ the register, and back again. If debugging, print if the argument
+ is a structure.
+ (mips_expand_prologue): Shift any QI/HI structures passed back, so
+ they can be used as normal QI/HI values.
+
+ * mips.md (call): If there were any tiny structures passes as
+ QI/HI modes in registers, shift the register, so that the
+ structure value is in the high part of the register.
+ (call_value): Ditto.
+ (call_internal): Delete creating $31 rtx, since we can get it from
+ the normal insn patterns.
+ (call_value_internal): Ditto.
+
+Fri Dec 18 05:14:14 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Make abstract virtual functions work.
+ * cp-call.c (compute_conversion_costs): Undo change of Sept 1 about
+ setting HARSHNESS to 0 re: the conversion of the first argument.
+ (build_method_call): Delete the code that redid the RTL for calling
+ the right fn, since we will now behave correctly. (Even with this,
+ we ended up calling the wrong fn---the base class, rather than the
+ derived one.)
+
+ * cp-decl2.c (grokclassfn): Try using the local value for a nested
+ type if the IDENTIFIER_TYPE_VALUE isn't there.
+
+ * cp-method.c (build_overload_nested_name): Use DECL_NAME instead of
+ DECL_ASSEMBLER_NAME, since pushtag now mangles together
+ DECL_ASSEMBLER_NAME. This will make us emit `Q21D1B', not `Q221D1B'.
+
+Thu Dec 17 17:51:16 1992 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * Makefile.in (install-dir): Added missing then and semicolon.
+
+Thu Dec 17 15:19:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * x-i386s4 (CC): New assignment.
+
+Wed Dec 16 15:49:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-actions.c (finish_objc) [OBJC_SELECTORS_WITHOUT_LABELS]:
+ Always call build_selector_translation_table.
+
+ * Makefile.in (install-dir):
+ If cross-compiler, create $(tooldir) and $(assertdir).
+
+Wed Dec 16 14:19:08 1992 Richard Kenner (kenner at vlsi1.ultra.nyu)
+
+ * rs6000.h (INITIALIZE_TRAMPOLINE): Get function address and toc
+ pointer from correct place relative to FNADDR.
+
+ * varasm.c (assemble_trampoline_template): If TRAMPOLINE_SECTION
+ is defined, put the trampoline template into that section.
+
+ * alpha.h (TRAMPOLINE_SECTION): New macro.
+
+Wed Dec 16 14:19:41 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * reload.c (get_secondary_mem): Don't save address if it isn't valid.
+
+Wed Dec 16 13:59:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_trampoline_template):
+ Use readonly_data_section, not text_section.
+
+Wed Dec 16 11:32:11 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 32.
+ (compute_frame_size): Change function return type to long.
+ (epilogue_reg_mentioned_p): New function decl.
+ (mips_frame_info): Change unsigned longs to longs.
+ (ELIGIBLE_FOR_EPILOGUE_DELAY): Call epilogue_reg_mentioned_p.
+
+ * mips.c (epilogue_reg_mentioned_p): New function to return true
+ if any register used in the epilogue sequence is referenced. If
+ the stack size is greater than 32k bytes, return true for
+ registers $8 and $9, since they are used to hold temps.
+ (compute_frame_size): Change return type & variables to long.
+ (compute_frame_size): Use 1L in shifts to create GP save mask.
+ (save_restore): Merge function into save_restore_insns.
+ (save_restore_insns): Add FILE * argument, to write to the .s
+ file if non-NULL -- otherwise produce insns. Add arguments to
+ pass in that the prologue/epilogue has loaded the stack size into
+ $8 if large stack frame. Completely rewrite large stack frame
+ support, so that it doesn't abort if large stack frame, saved GP
+ registers, and no saved FP registers. If large stack frame, use
+ stack size stored in $8 if we can.
+ (function_prologue): Make tsize long.
+ (function_epilogue): Ditto.
+ (mips_expand_prologue): Ditto.
+ (mips_expand_epilogue): Ditto.
+ (mips_expand_prologue): Change call to save_restore_insns.
+ (mips_expand_epilogue): Ditto.
+ (function_epilogue): Call save_restore_insns instead of
+ save_restore.
+
+Wed Dec 16 07:33:08 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stmt.c (expand_goto): Set LABEL_REF_NONLOCAL_P in the LABEL_REF
+ we make in the non-local case.
+
+ * varasm.c (assemble_trampoline_template): Always put template in
+ text section.
+
+Wed Dec 16 05:04:06 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * combine.c (try_combine): Allow for the case where I3 becomes an
+ unconditional jump when it is the last nonnote insn.
+
+Tue Dec 15 20:30:06 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (do_pragma): Use index, not strchr.
+
+ * seq386.h (FUNCTION_PROFILER): Add missing . to label name.
+
+ * reload1.c (eliminate_regs_in_insn): Test old_body, not new_body,
+ since people have tested it that way.
+
+ * reload1.c (eliminate_regs_in_insn): Don't recopy new_body
+ if it is an asm_operands insn.
+
+Tue Dec 15 19:42:58 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (return peepholes): Add QImode and HImode move/return
+ patterns.
+
+Tue Dec 15 17:42:07 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (ASM_SPEC): New macro.
+
+ * alpha.h (TRAMPOLINE_{TEMPLATE,SIZE}, INITIALIZE_TRAMPOLINE):
+ Make major changes to fix numerous bugs.
+ (TRANSFER_FROM_TRAMPOLINE): New macro.
+ * alpha.md: Add new UNSPEC_VOLATILE 0 to flush instruction cache.
+
+Mon Dec 14 13:16:14 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (output_epilog): Support LANGUAGE_STRING values for F77,
+ Ada, and Pascal.
+
+Sun Dec 13 16:42:26 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.sco: Complete rewrite by ian@cygnus.com.
+
+Sat Dec 12 17:51:43 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * va-alpha.h: Correctly form multi-word object.
+
+ * alpha.c (alpha_builtin_savregs): Correctly compute ARGSIZE and NREGS.
+
+ * alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Deleted.
+
+Sat Dec 12 08:42:43 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa-hpux.h (TARGET_DEFAULT): Do not enable TARGET_SHARED_LIBS
+ by default in 2.3.3 since it doesn't really work.
+ * pa-ghpux.h, pa1-hpux.h, pa1-ghpux.h: Likewise.
+
+ * pa.md (floatsisf, floatsidf): Do not accept general registers.
+
+Fri Dec 11 00:13:52 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure (i[34]86-*-sco3.2v4*): Use fixinc.sco.
+ * fixinc.sco: New file.
+ Like fixinc.svr4 but turn !__STDC__ into !__STRICT_ANSI__. Don't
+ require space after getcwd argument in stdlib.h.
+ * x-i386s4: Don't use rcc:
+ (CC, OLDCC, RCCFLAGS, CCLIBFLAGS): Vars deleted.
+ * xm-i386sco.h (ONLY_INT_FIELDS): Define if not __GNUC__.
+ (CODE_FIELD_BUG): Likewise.
+ * rtl.h (struct rtx_def) [ONLY_INT_FIELDS]: Handle CODE_FIELD_BUG.
+
+Fri Dec 11 17:56:53 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-search.c (lookup_nested_field): Check for assignment to members
+ of an enclosing class only when looking at a member, not at other
+ things (like nested types).
+
+ * cp-cvt.c (convert_to_reference): If a conversion can be found via
+ a constructor, then use it. Also fix a typo about when to
+ return the result of a type conversion.
+
+Fri Dec 11 08:15:53 1992 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * reload1.c (choose_reload_regs): Don't inherit a reload if the
+ previous reload wasn't at least as wide as the current reload.
+
+Fri Dec 11 07:19:11 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (output_epilog): Remove garbage from one decl of EXTRA.
+ Subtract, not add, size from frame pointer.
+
+ * a29kunix.h (LINK_SPEC): Use -T, not -c, for new gld and change file
+ name to default.gld from default.ld.
+
+ * function.c (assign_outer_stack_local): Align proper frame offset.
+
+ * loop.c (get_condition): Check for overflow when canonicalizing
+ comparison.
+
+Thu Dec 10 15:53:41 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * enquire.c (i_define, u_define, f_define): Add #undef before #define.
+ * fixinc.svr4 (limits.h): Add #ifndef/#endif around macros that
+ are supposed to be defined in float.h.
+
+ * combine.c (try_combine): Only use I2DEST as a scratch reg for
+ a split if it does not overlap any inputs of NEWPAT.
+
+Thu Dec 10 10:23:28 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (get_last_value): Never use value from later insn, even
+ if reg is only set once.
+
+ * c-tree.h (IDENTIFIER_LIMBO_VALUE): Delete duplicate definition.
+
+Thu Dec 10 08:54:03 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * i386sco4.h (CPP_PREDEFINES): Define i386 and unix here.
+ (CPP_SPEC): Not here.
+
+Wed Dec 9 19:03:55 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.h (ASM_DECLARE_FUNCTION_NAME): Correctly get the return type
+ of DECL.
+
+ * x-pa (CC): Set to "/usr/local/bin/gcc" instead of
+ "/usr/local/gcc".
+
+Tue Dec 8 17:50:26 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Bump Meissner version number to 31.
+ (LEGITIMIZE_ADDDRESS): Split large offsets, even when not
+ optimizing. Otherwise, illegal stack offsets can be generated.
+
+Tue Dec 8 11:55:52 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (sh[123]add): Use "shadd_operand" as the predicate for
+ operand one.
+ * pa.c (shadd_operand): New function.
+
+Tue Dec 8 08:30:13 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * hp320.h (AS_BUG_FLOATING_CONSTANT, AS_BUG_TRAILING_LABEL): New.
+ (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Output align 1 to
+ accomodate the "trailing label" bug.
+ (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_FLOAT_OPERAND): Define to
+ output values in hex to accomodate the "floating constant" bug.
+ (PRINT_OPERAND_FLOAT, PRINT_OPERAND): Ditto.
+
+ * gcc.c (temp_names): New variable.
+ (do_spec_1): Rewrite MKTEMP_EACH_FILE for %g/%u/%U.
+ (choose_temp_base): Abort if mktemp yields a null string.
+
+Tue Dec 8 08:30:13 1992 Niklas Hallqvist (niklas@della.appli.se)
+
+ * integrate.c (expand_inline_function): Don't output line notes
+ for implicit formals.
+
+Tue Dec 8 06:21:44 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (max_uid): New variable.
+ (cse_end_of_basic_block): Use it to ignore insns made by CSE.
+ (cse_main): Set it.
+
+Mon Dec 7 21:22:29 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ * cp-init.c (do_friend): Revert change of Sept 1; it seems to have
+ broken properly emitting friends.
+
+Mon Dec 7 19:09:25 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (eliminate_regs_in_insn): Make another copy of all the
+ RTL if we changed something and we aren't permanently replacing.
+
+ * romp.md (reload_out{q,h}i): Write as proper PARALLEL.
+
+Sun Dec 6 16:27:14 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (add-mult): Add missing `&' in constraints of kludge
+ plus/plus/mult pattern.
+
+Sun Dec 6 16:26:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_binop): Correct sign of complex quotient imagpart.
+
+Sun Dec 6 07:59:16 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version # to 30.
+ (LEGITIMIZE_ADDRESS): For <reg>+<large int> addresses, rewrite so
+ that <reg> + (<large int> & ~0x7fff) is put into a pseudo reg.
+ This is to allow CSE to generate better code for repeated
+ references in the same general vicinity, such as when large stack
+ frames are used.
+
+ * config/dec-osf1.h (LINK_SPEC): Pass -call_shared, -no_archive,
+ and -exact_version to the linker. If -call_shared, do not pass
+ -non_shared to the linker.
+ * mips-5.h (LINK_SPEC): Ditto.
+ * mips-5bsd.h (LINK_SPEC): Ditto.
+ * mips-svr4.h (LINK_SPEC): Ditto.
+ * mips-sysv.h (LINK_SPEC): Ditto.
+
+Fri Dec 4 19:50:29 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * fixincludes: fix _cplusplus typo in SCO's tinfo.h
+
+Fri Dec 4 19:22:35 1992 Randy S. Welch (randy@kcin.alphacdc.com)
+
+ * xm-plexus.h: New file.
+ * configure (m68k-plexus-sysv*): Use it.
+
+Fri Dec 4 19:21:44 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (start_function): Use TYPE_MAIN_VARIANT when comparing
+ return type with previous prototype declaration.
+
+ * cccp.c (output_line_command): Use alloca for line_cmd_buf.
+
+Fri Dec 4 19:20:34 1992 Richard Kenner (kenner@mole.gnu.ai.mit.edu)
+
+ * cse.c (cse_insn): Always pass result of canon_reg through
+ validate_change before using it in insn.
+
+ * c-decl.c, cp-decl.c (init_decl_processing): Don't use hardwired
+ sizes for the modes when making int{Q,H,S,D}I_type_mode and the
+ unsigned versions of them; the actual size depends on BITS_PER_UNIT.
+
+Fri Dec 4 19:13:35 1992 Jonas Olsson (ljo@po.cwru.edu)
+
+ * i386bsd.h (ASM_OUTPUT_ADDR_DIFF_ELT, JUMP_TABLES_IN_TEXT_SECTION):
+ Copy definitions from i386v4.h to get PIC code correct.
+
+Thu Dec 3 19:20:14 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c: Include sys/types.h for systems that need things for
+ signal.h.
+
+Thu Dec 3 01:40:42 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (finalize_pic): Remove "*_" from GLOBAL_OFFSET_TABLE name.
+ * spc-sol2.h (ASM_SPEC): Pass "-K PIC" to assembler when pic.
+ (JUMP_TABLES_IN_TEXT_SECTION): Define.
+ (SELECT_RTX_SECTION): Define.
+
+ * fixincludes (sys/types.h): Check for [ \t]size_t not size_t.
+
+Wed Dec 2 15:40:36 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure (rs6000-ibm-aix32): New target.
+ * rs6000-aix32.h: New file.
+
+Tue Dec 1 18:05:20 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-type2.c (build_functional_cast): Revert change of Nov 2,
+ concerning clearing the TREE_VALUE of a default parameter.
+
+Tue Dec 1 13:33:25 1992 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * local-alloc.c (optimize_reg_copy_2): Correct reg_n_refs updates.
+
+ * Makefile.in (INSTALLED_H): Add syslimits.h.
+
+Tue Dec 1 11:09:50 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (build_method_call): When looking for a default arg
+ initialized by a ctor, be careful of a null ref w/ operand 1.
+
+Tue Dec 1 10:43:13 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (num_sign_bit_copies): Return 1 on failure, not 0.
+ Fix typo in last change; return 1 on failure, not BITWIDTH.
+
+Tue Dec 1 09:39:47 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.c (function_prologue): Do not emit a .loc before the
+ function if debug level is 1. This confuses gdb.
+
+Tue Dec 1 02:48:29 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * isc.h (TARGET_DEFAULT): New macro - don't make TARGET_IEEE_FP
+ default for ISC.
+
+Fri Nov 27 01:30:41 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.3.2 released.
+
+ * objc/core.c (searchForMethodInHierarchy):
+ If SEL or NAME is 0, return 0.
+
+ * gcc.c (LINK_LIBGCC_SPECIAL_1): New parameter.
+ * rs6000.h (LINK_LIBGCC_SPECIAL_1): Defined.
+
+ * t-hp320g (RANLIB, RANLIB_TEST, AR, AR_FLAGS):
+ Just copy value of ..._FOR_TARGET.
+ (LIBCONVERT): Use TARGET_TOOLPREFIX.
+
+ * reload.c (find_reloads) [SMALL_REGISTER_CLASSES]:
+ Don't use preferred_class for a multiword register.
+
+ * cccp.c (do_include): Initialize searchptr to 0.
+
+Fri Nov 27 07:40:54 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst, make_field_assignment, num_sign_bit_copies):
+ Protect calls to significant_bits; unless we only care if the
+ result is a power of two, don't call if mode size is wider
+ than HOST_BITS_PER_WIDE_INT.
+ (extended_count, simplify_shift_const, simplify_comparison): Likewise.
+
+Thu Nov 26 10:31:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h (va_end): #undef before the declaration.
+
+ * gstdarg.h (va_arg): Alternative definition for big-endian machines.
+ * gvarargs.h (va_arg): Copy both definitions from gstdarg.h.
+
+ * limitx.h, limit.y: Test and define _GCC_LIMITS_H_, not _LIMITS_H_.
+
+ * mips.c (mips_debugger_offset): Don't crash for unknown cases.
+
+ * c-typeck.c (build_unary_op): Call pedantic_lvalue_warning
+ for *all* cases of incrementing a cast.
+
+ * libgcc2.c (__udiv_w_sdiv): Cast 1 before shifting by 31.
+
+ * fixincludes (PWDCMD): New variable, set specially for Apollos.
+ Use it to get the working dir.
+
+ * combine.c (num_sign_bit_copies): Fix 1-off error in PLUS case.
+
+ * c++: Put newline into `for arg do'.
+
+Thu Nov 26 08:32:20 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (struct algorithm): Make coeff a HOST_WIDE_INT.
+
+ * romp.c (output_epilog): Always call output_fpops.
+
+Wed Nov 25 16:24:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-fixincludes): Use SYSTEM_HEADER_DIR.
+
+ * m68ksgs.h (ASM_OUTPUT_DOUBLE_OPERAND): Really use the operand VALUE.
+
+ * tree.h (CONSTRUCTOR_NAME_FORMAT): Let config.h override this.
+ * tower-as.h (CONSTRUCTOR_NAME_FORMAT): Defined.
+
+ * c++: Replace `for arg do' which ash can't handle.
+
+ * t-next (OTHER_FIXINCLUDES_DIRS): Delete /NextDeveloper/Headers.
+
+ * apollo68.h (HAVE_ATEXIT): Commented out.
+
+ * regclass.c: Fix typo in use of SECONDARY_INPUT_RELOAD_CLASS.
+ (copy_cost): Fix typo in use of SECONDARY_OUTPUT_RELOAD_CLASS.
+
+Wed Nov 25 14:15:50 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * fixinc.svr4 (regexp.h): Don't add a getrnge declaration if a
+ conflicting declaration is already present.
+
+Wed Nov 25 06:47:18 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (LINK_LIBGCC_SPECIAL): No longer define.
+
+ * stmt.c (expand_value_return): Don't emit move between differing
+ modes when PROMOTE_FUNCTION_RETURN is defined; convert instead.
+
+ * integrate.c (expand_inline_function): Ensure a REG used as
+ COPY has REG_USERVAR_P set if LOC does.
+
+ * optabs.c (expand_binop, expand_twoval_binop): If we are going
+ to fail, remove any load from MEM we did due to -fforce-mem;
+ if the MEM was volatile, this will cause an extra load.
+ (expand_complex_abs): Likewise.
+ Correct use of variable LAST so it doesn't include the load
+ from MEM (to fix unrelated bug).
+
+Tue Nov 24 00:23:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386bsd.h (FUNCTION_PROFILER): Use mcount, not _mcount.
+
+ * t-next (OTHER_FIXINCLUDES_DIRS): Leave just /LocalDeveloper/Headers
+ and /NextDeveloper/Headers.
+
+Mon Nov 23 22:06:31 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * ns32k.md (movsi): Split alt 1 to deprecate xy classes in operand 1.
+
+ * combine.c (make_extraction): When making a low part subreg of a reg,
+ use inner_mode, not is_mode.
+
+Mon Nov 23 21:11:13 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * romp.h (ASM_FILE_START): Stop at first blank in VERSION_STRING.
+
+Mon Nov 23 21:09:20 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * fold-const.c (range_test): Convert the constants to the unsigned
+ type before expanding the range test.
+
+Mon Nov 23 20:54:45 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Mon Nov 23 13:21:43 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * c++ (first): Only shift if $first is no, on the chance we got no
+ arguments at all. If we didn't get anything, say so (since -lg++
+ will fake out the gcc driver into thinking we want to do something).
+
+ * cp-decl.c (start_decl): If grokdeclarator returns a
+ void_type_node, return a NULL_TREE.
+
+ * cp-typeck.c (build_modify_expr_1): When calling build_opfncall for
+ `operator=', use make_node to create a plain NOP_EXPR for it to use,
+ rather than trying to pass NOP_EXPR down hoping it gets there intact.
+ (build_modify_expr): Ditto.
+ * cp-parse.y (expr_no_commas): Ditto.
+ * cp-method.c (build_opfncall): Use TREE_CODE on ARG3 for a
+ MODIFY_EXPR, since it'll be coming in properly as a tree now.
+
+ Sat Nov 21 02:33:28 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-init.c (expand_default_init): Clear DECL_REGISTER if we're
+ going to call a ctor, otherwise we may end up generating bogus and
+ confusing error messages about taking the addr of something declared
+ to be `register'.
+
+ * cp-typeck.c (build_x_function_call): Recognize a ptr-to-method
+ that is being passed in as a function argument or as part of
+ a COMPONENT_REF.
+ (build_indirect_ref): If ERRORSTRING is NULL (it's passed in that
+ way in many places), then don't try to use it.
+
+ Thu Nov 19 01:41:58 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-dem.c (do_builtin_type): Recognize `w', a wide character, since
+ it's now a type according to the ANSI X3J16 working paper; output
+ "wchar_t" for it.
+ (cplus_demangle): Accept `w' as an integral type.
+
+ Wed Nov 18 21:29:14 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-class.c (finish_struct): Re-enable code to cut down on the size
+ of symbol output, the positives outweigh the negatives.
+
+ Wed Nov 18 19:51:59 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (dfs_walk): Move setting of
+ vbase_decl_ptr_intermediate out of #ifdef code.
+
+ Wed Nov 18 18:49:13 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Make wording on error message
+ stronger.
+
+ Tue Nov 17 17:46:11 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-search.c (CHECK_convert_pointer_to_single_level): Don't define.
+
+Mon Nov 23 19:44:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * mot3300.h (switch_table_difference_label_flag): Define it.
+
+ * ns32k.md (addsi3): Add & for alternative 1 in operand 0.
+
+Mon Nov 23 18:29:27 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * genattrtab.c (obstack.h): Include after sys/time.h.
+
+ * c-decl.c (duplicate_decls): For builtins, create new function
+ type instead of trying to modify old one.
+
+Mon Nov 23 16:28:36 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386bsd.h (COMMENT_BEGIN): Redefine as #.
+ (ASM_APP_ON, ASM_APP_OFF): Redefine to use #.
+
+ * combine.c (num_sign_bit_copies): Inhibit x-1 special case
+ when x is a paradoxical subreg.
+
+ * xm-linux.h (malloc, calloc): Definitions deleted.
+
+Mon Nov 23 11:52:41 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa.md (sh[123]add): Use "nonmemory_operand" instead of
+ "register_operand" as the predicate for the first operand.
+
+Mon Nov 23 00:29:27 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Pass -i* after -U*.
+
+Sun Nov 22 17:03:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * hp320.h (FUNCTION_PROFILER): Complete replacement.
+
+ * xm-hp320.h (index, rindex): Defined.
+
+ * gstddef.h: Fix prev change; test of _STDDEF_H was backwards.
+
+Sun Nov 22 16:12:38 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * toplev.c (W_options): Delete -Wreturn-type, as it is in lang_options.
+ * c-decl.c (c_decode_option): Decode -Wreturn-type.
+
+ * c-decl.c, cp-decl.c (pushdecl): Don't inherit DECL_INITIAL when
+ redeclaring the current function.
+
+ * integrate.c (expand_inline_function): Use the original
+ declaration of the inlined function rather than a redeclaration as
+ the BLOCK_ABSTRACT_ORIGIN of the body.
+
+Sat Nov 21 19:54:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): Do -D's and -A's and -U's in order specified.
+
+ * gcc.c (default_compilers): When running cpp,
+ move %{D*} and %{U*} (in that order) just before %i.
+
+Sat Nov 21 18:24:55 1992 Torbjorn Granlund (tege@hal.gnu.ai.mit.edu)
+
+ * xm-pa.h: Remove #ifdef hpux stuff.
+ (S_ISDIR): Remove.
+ * xm-pahpux.h: New file, developed from old xm-pa.h. Define
+ rindex/index.
+ * pa-hpux7.h, pa-gux7.h: New files.
+
+ * configure (hppa1.0-*-hpux*, hppa1.0-*-hpux*): Use xm-pahpux.h.
+ (hppa1.0-*-hpux7*): New alternative.
+
+Sat Nov 21 14:10:57 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * spc-sol2.h (SWITCH_TAKES_ARG, LINK_SPEC): New override definitions.
+
+ * xm-mot3300.h (index, rindex): Defined.
+
+Sat Nov 21 07:54:53 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h (MIPS_VERSION): Set Meissner version number to 29.
+
+ * mips.c (mips_expand_prologue): If profiling, emit an insn to
+ block other insns from being scheduled before the end of the
+ prologue.
+
+ * mips.md (blockage): New unspec_volatile insn to prevent other
+ insns from being scheduled before it.
+
+Sat Nov 21 06:03:38 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * sdbout.c (template_name_p): New function.
+ (sdbout_record_type_name): Use it to possibly use the
+ DECL_ASSEMBLER_NAME instead of DECL_NAME if looking at a template.
+ (sdbout_symbol): Ditto.
+
+Fri Nov 20 15:31:05 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type): Handle need for name of a RECORD_TYPE
+ when it has none.
+
+ * configure (sparc-*-solaris2): Set broken_install.
+
+ * integrate.c (subst_constants): Inhibit special treatment of subreg
+ when the stuff inside is not a reg.
+
+ * config/plexus.h (SIZE_TYPE): Fix syntax.
+
+ * gcc.c (do_spec_1): Handle MKTEMP_EACH_FILE.
+
+Fri Nov 20 15:10:20 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * fixincludes (math.h): Get rid of inconsistent inline definitions
+ for abs that are present in HP-UX 8.0.
+
+Fri Nov 20 10:07:48 1992 Michael Meissner (meissner@osf.org)
+
+ * collect2.c (FREAD, FWRITE): Undef these macros if they were
+ defined before including ldfcn.h.
+
+Fri Nov 20 15:38:47 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * integrate.c (expand_inline_function): Mark all notes as integrated.
+
+ * final.c (final): When producing SDB debugging info, delete line
+ number notes from inlined functions in other files as well as
+ duplicate line number notes.
+
+Fri Nov 20 05:24:16 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
+
+ * config.sub: Added machines and operating systems for Emacs
+ ports, since Emacs now uses config.sub for its configuration.
+ New manufacturers recognized not to be operating systems: High
+ Level Hardware (highlevel, defaults to using BSD), Gould
+ (gould, defaults to System V), Commodore (cbm, defaults to
+ amigados), National Semiconductor (ns, defaults to Genix), and
+ Masscomp (masscomp, defaults to RTU).
+ Recognize the NS1600 (ns16k) and the Clipper (clipper) as
+ processors.
+ Recognize these processors with default manufacturers: the
+ Cydra (cydra) from Cydrome (cydrome), the XPS100 (xps100) from
+ Honeywell (honeywell), and the Orion (orion) and Orion 1/05
+ (orion105) from High Level Hardware (highlevel).
+ If the ISC operating system is given with a version number,
+ don't kill it and set it to 2.2; just have it default to 2.2
+ if omitted.
+ Make Irix SGI's default operating system, not SYSV.
+ Make BSD Encore's default, so it applies for all Encore
+ machines, not just the umax and mmax abbreviations.
+ All of Encore's machines use BSD, not just the ns32k-based
+ ones. Make it the manufacturer's default.
+ Make it possible to specify an operating system for a Gould
+ machine. Make sysv the manufacturer's default, so it applies
+ when we specify the manufacturer as well as when we omit it.
+ Add Uniplus (uniplus), Iris (iris), Xenix (xenix), and RTU
+ (rtu) as recognized operating system names.
+
+Wed Nov 18 17:58:18 1992 Karl Berry (karl@cs.umb.edu)
+
+ * i386iscgas.h (SDB_DEBUGGING_INFO): #undef.
+ (DBX_DEBUGGING_INFO): #define.
+ (DBX_OUTPUT_MAIN_SOURCE_{DIRECTORY,FILENAME}): Override dbxout.c.
+
+ * bsd386.h (LPREFIX) [NO_UNDERSCORES]: Define as `.L'.
+
+Wed Nov 18 13:50:43 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.c (compute_frame_size): Make sure the {gp,fp}+offset fields
+ are always initialized, even if there were no gp/fp registers
+ saved.
+
+Wed Nov 18 09:58:50 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.md (insv): Remove constraints from operand matching
+ const_0_operand.
+
+ * regclass.c (regclass): Add missing cast from enum to int.
+
+Wed Nov 18 09:40:01 1992 John Hassey (hassey@dg-rtp.dg.com)
+
+ * core.c (initialize_class): The class may not have an initialize
+ method.
+
+Wed Nov 18 09:40:01 1992 Wilson Tien (wtien@urbana.mcd.mot.com)
+
+ * xm-m68kv.h (rindex, index): use strrchr and strchr instead.
+
+Wed Nov 18 01:27:37 1992 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
+
+ * config.sub: Added Xenix operating system.
+
+Tue Nov 17 18:32:01 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (combine_reloads): Don't combine with a reload needed
+ for multiple things.
+
+Mon Nov 16 08:52:52 1992 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.c (output_move_double): Handle indirect stores to memory
+ via an auto-incremented/auto-decremented register in the same
+ manner in which loads are handled.
+
+Thu Nov 12 21:02:59 1992 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ Cygnus<-->FSF merge.
+
+ Thu Nov 12 15:02:53 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * tree.h (value_member, purpose_member, binfo_member,
+ tree_int_cst_equal, tree_int_cst_lt, index_type_equal,
+ expand_decl_init): Add decls with prototypes.
+
+ * cp-decl.c (finish_decl): Don't try to use TYPE if it's an
+ error_mark_node.
+
+ * cp-decl.c (sigsegv): Set to the default handler before calling
+ anything, so we can avoid possible infinite loops. Call
+ my_friendly_abort instead of just error().
+ * cp-type2.c (my_friendly_abort): If I is 0, it's coming from sigsegv.
+
+ * cp-type2.c (my_friendly_assert): New function.
+ * cp-call.c, cp-class.c, cp-class.h, cp-cvt.c, cp-decl.c, cp-decl.h,
+ cp-decl2.c, cp-dem.c, cp-edsel.c, cp-except.c, cp-expr.c, cp-gc.c,
+ cp-hash.h, cp-init.c, cp-input.c, cp-lex.c, cp-lex.h, cp-method.c,
+ cp-pt.c, cp-search.c, cp-spew.c, cp-tree.c, cp-tree.h, cp-type2.c,
+ cp-typeck.c, cp-xref.c, cp-parse.y: Don't include assert.h, and use
+ the new function `my_friendly_assert' instead of the `assert' macro.
+
+ Wed Nov 11 22:14:51 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * tree.h (perm_calloc): Add decl.
+ * cp-parse.y (except_stmts): Declare return type of get_insns,
+ since we don't (can't) include rtl.h.
+ * cp-tree.c (TYPE_HASH): Use HOST_WIDE_INT instead of int when
+ casting pointers to integers.
+ (ld_cmp): Likewise.
+ * cp-call.c (build_method_call): Likewise.
+ * cp-class.c (finish_struct_methods): Likewise.
+ * cp-method.c (build_overload_value): Add decl of index.
+ (build_opfncall): Cast to HOST_WIDE_INT, not int.
+ * cp-search.c (get_binfo): Likewise.
+ (get_base_distance): Likewise.
+ (breadth_first_search): Likewise. Also declare to return
+ HOST_WIDE_INT, not int.
+
+ Wed Nov 11 14:34:25 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ Thu Nov 5 15:58:38 1992 Tim Moore (moore at defmacro.cs.utah.edu)
+
+ * cp-decl.c (duplicate_decls): Round to obstack alignment when
+ testing if newdecl is at the top of the permanent obstack.
+
+ Wed Nov 11 13:56:18 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-search.c (build_vbase_vtables_init): Make sure external virtual
+ tables are declared on machines that need the declaration by calling
+ assemble_external.
+
+ Wed Nov 11 12:51:44 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (grokfield): If the init field is really a list with
+ just an error_mark_node, then it wasn't a real initialization, so
+ don't treat it like one.
+
+ Tue Nov 10 16:21:20 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-init.c (build_new): If arg 1 of an array reference is an
+ error_mark, then just pretend that there were 0 elements.
+
+ Tue Nov 10 13:23:30 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_x_function_call): If the type of FUNCTION is an
+ error_mark, don't bother checking its lang-specific info.
+
+ Tue Nov 10 12:38:36 1992 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-decl.c (decls_match): Avoid core dumping when TREE_TYPE is
+ NULL_TREE, as is the case when olddecl is a TEMPLATE_DECL.
+
+ Tue Nov 10 11:03:36 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (pushdecl_top_level): Disable assert for now; it's
+ always acted correctly.
+
+ Mon Nov 9 12:04:27 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (try_for_typename): Deleted rule.
+ (scoped_id): Don't use it.
+
+ Fri Nov 6 18:07:37 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-init.c (expand_aggr_init): If INIT is 0, don't bother trying to
+ play with its type.
+
+ Thu Nov 5 16:52:37 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-decl.c (finish_decl): Set TREE_STATIC, TREE_PUBLIC and
+ DECL_EXTERNAL correctly for use with #pragma interface.
+
+ Fri Nov 6 10:07:01 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (finish_struct): Don't try to work with a field that
+ got a bogus type.
+
+ * cp-method.c (build_overload_value): Don't call debug_tree!
+
+ * cp-call.c (build_method_call): If processing a default argument
+ that calls a ctor for its default value, use INSTANCE_PTR for the
+ parm list, discarding what we knew before.
+
+ * cp-decl.c (grokdeclarator): If initializing a const member and
+ acting pedantic, then do make it an error.
+
+ * cp-decl2.c (warn_traditional): New variable.
+ (lang_decode_option): Use it for -Wtraditional and -Wno-traditional.
+ * cp-tree.h (warn_traditional): Add decl.
+ * cp-lex.c (readescape): For x, avoid overflow when shifting in if.
+ Warn for \a and \x if warn_traditional; pass through
+ the escaped x and a if -traditional. Support \e like \E; for both,
+ pedwarn about ANSI C.
+
+ * cp-call.c (find_scoped_type): Delete arg TAGS; instead, compute it
+ inside from TYPE. If TAGS is null, don't return immediately, since
+ we need to look for TYPE_DECLs.
+ (resolve_scope_to_name): Call find_scoped_type without replicating
+ the tags.
+
+ Thu Nov 5 17:53:32 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Constant class members can be
+ initialized.
+
+ Thu Nov 5 17:11:30 1992 Mike Stump (mrs@cygnus.com)
+
+ Thu Nov 5 19:48:17 1992 Niklas Hallqvist (niklas@appli.se)
+
+ * cp-pt.c (instantiate_class_template): Types are used in later
+ processing, so they must go into the permanent obstack.
+
+ Thu Nov 5 13:02:56 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't allow members to be initialized
+ in the class declaration.
+
+ * cp-decl2.c (finish_file): Set the DECL_CLASS_CONTEXT on a function
+ that's a file-scope set of ctors/dtors for global variables, so
+ is_friend will see things the way they should be seen.
+
+ * cp-call.c (find_scoped_type): New function.
+ (resolve_scope_to_name): Use it to check for names that might be in
+ base classes.
+
+ Wed Nov 4 00:43:15 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (db_yyerror): Deleted fn.
+ (yyprint, yyerror, init_parse, yyhook, reduce_cmp, token_cmp,
+ print_parse_statistics,set_yydebug, debug_yytranslate): Moved to
+ cp-lex.c.
+ (reduce_count, token_count): Ditto.
+ (current_declspecs): Made static.
+
+ * cp-typeck.c (build_c_cast): Warn if casting between a pointer and
+ an integer whose sizes differ.
+
+ * cp-parse.y (unary_expr): Finish making new with placement work;
+ use the rule `new' instead of the token `NEW' when parsing it.
+
+ Tue Nov 3 02:16:47 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (c_expand_return): Avoid referencing DECL_NAME if it's
+ null when checking for a ref to or the addr of a local variable.
+
+ * cp-search.c (dfs_pushdecls): Don't try to use the context of a
+ field which has none at the time.
+
+ * cp-decl.c (redeclaration_error_message): Don't complain about
+ redefinition of a function if it's a definition of an abstract
+ virtual function.
+ (duplicate_decls): For an abstract virtual, don't use the old RTL
+ from abort when creating the RTL for the newdecl.
+
+ Tue Nov 3 00:15:44 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): For `inline', `unsigned', and `signed',
+ see them as types, not as storage class specs, when looking for more
+ than one storage class.
+
+ * cp-lex.c (readescape): New arg ignore_ptr.
+ (real_yylex): Pass new arg, handle result that comes back.
+
+ * cp-decl.c (WCHAR_TYPE_SIZE): Deleted; never used.
+
+ Mon Nov 2 10:23:52 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (real_yylex): Let skip_white_space handle \r.
+
+ * cp-parse.y (parmlist): Warn on a decl `foo (...)', without a first
+ argument.
+
+ * cp-type2.c (build_functional_cast): If expr_as_ctor's argument is
+ a SAVE_EXPR, don't wipe out the argument.
+
+ * cp-call.c (build_method_call): Only complain about not having an
+ object for a called method if the method is non-static.
+
+ Sun Nov 1 16:50:14 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (warn_char_subscripts): Declare.
+ (lang_decode_option): Handle -Wchar-subscripts.
+ * cp-typeck.c (build_array_ref): If the type of either the array or
+ its index is an error_mark_node, then return one. Add code to see
+ if the index is a character (add warning), then do the default
+ promotions. Don't warn if it's a register array. Make a ref
+ volatile if the array is volatile.
+ * cp-tree.h (warn_char_subscripts): Add decl.
+
+ * cp-typeck.c (common_type): If either type is nonsense (an
+ error_mark), use the other type.
+
+ Thu Oct 29 18:39:50 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Fix problem introduce by me on Oct 22
+ 17:41:13. Put back call to build_offset_type that I took out, as it
+ is not wrong, as the comment for build_offset_type had led me to
+ believe.
+
+ Thu Oct 29 17:30:12 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-cvt.c: Delete block-level extern decls; include flags.h instead.
+ * cp-tree.h (flag_int_enum_equivalence): Declare here.
+ * cp-call.c: Not here.
+
+ * Makefile.in (stamp-cp-parse): There are now only 29 shift/reduce
+ conflicts, because of the removed wrapper stuff.
+
+ * cp-lex.c (lastiddecl, ridpointers): Define here.
+ (NORID): Don't define here.
+ * cp-lex.h (NORID): Define here instead.
+ (ridpointers, lastiddecl, token_buffer, looking_for_typename): Ditto.
+ (make_pointer_declarator, make_reference_declarator,
+ reinit_parse_for_function, reinit_parse_for_method, yylex): Likewise.
+ * cp-parse.y: Don't define any of them in here.
+
+ * cp-typeck.c (commonparms): Call tree_cons with NULL_TREEs, not 0s.
+ (convert_arguments): Likewise.
+ Throughout the file, say `ANSI C++ forbids', not `ANSI C forbids'.
+ * cp-lex.c, cp-type2.c: Likewise.
+
+ Remove wrapper functionality from the compiler.
+ * cp-call.c (build_method_call): Delete wrap and wrap_type.
+ Delete code that used them. Don't set err_name to "wrapper", since
+ wrapper_name doesn't exist anymore.
+ * cp-class.c (finish_base_struct): Don't worry about TYPE_WRAP_TYPE.
+ * cp-decl.c (grokfndecl): Delete code for WRAPPER_EXPR and
+ ANTI_WRAPPER_EXPR.
+ (grokdeclarator): Likewise. Don't set TREE_HAS_WRAPPER_PRED.
+ * cp-decl2.c (grokclassfn): Likewise.
+ (check_classfn): Likewise.
+ * cp-init.c (get_member_function): Don't check TYPE_NEEDS_WRAPPER.
+ * cp-lex.c (real_yylex): Don't check WRAPPER_OR_ANTI_WRAPPER_NAME_P.
+ * cp-method.c (wrapper_name, wrapper_pred_name, anti_wrapper_name):
+ Deleted variables.
+ (init_method): Don't do any setup for *WRAPPER_*.
+ (hack_wrapper): Deleted function.
+ * cp-parse.y (wrapper): Deleted rule.
+ (identifier_or_opname): Deleted all wrapper predicates.
+ (notype_declarator): Deleted predicates LEFT_RIGHT for wrappers.
+ * cp-ptree.c (print_lang_type): Deleted message for printing "wrapper".
+ * cp-search.c (get_wrapper): Deleted fn.
+ * cp-tree.h (struct lang_type): Deleted has_wrapper_pred and
+ wrap_type members.
+ (build_wrapper, hack_wrapper, get_wrapper): Deleted decls.
+ (wrapper_name, wrapper_pred_name, anti_wrapper_name): Deleted decls.
+ (TYPE_WRAP_TYPE, TYPE_HAS_WRAPPER, TYPE_NEEDS_WRAPPER,
+ TYPE_HAS_WRAPPER_PRED, WRAPPER_DECL_FORMAT, WRAPPER_PRED_DECL_FORMAT,
+ ANTI_WRAPPER_DECL_FORMAT, WRAPPER_NAME_FORMAT,
+ WRAPPER_PRED_NAME_FORMAT, ANTI_WRAPPER_NAME_FORMAT,
+ WRAPPER_NAME_P, WRAPPER_PRED_NAME_P, ANTI_WRAPPER_NAME_P,
+ WRAPPER_OR_ANTI_WRAPPER_NAME_P): Deleted.
+ (enum overload_flags): Deleted WRAPPER_FLAG, WRAPPER_PRED_FLAG,
+ and ANTI_WRAPPER_FLAG tags.
+ * cp-typeck.c (build_function_call_real): Delete wrapper code.
+ (unary_complex_lvalue): Don't check TYPE_NEEDS_WRAPPER.
+ * stmt.c (warn_if_unused_value): Don't check *WRAPPER_EXPR.
+ * tree.def (WRAPPER_EXPR, ANTI_WRAPPER_EXPR): Deleted.
+
+ Wed Oct 28 15:38:44 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): New arguments FNDECL, PARMNUM,
+ and ERRTYPE. Use them to give warnings about const and volatile
+ references being used incorrectly. Call itself with dummy arguments
+ where appropriate.
+ (convert): Call convert_to_reference with dummy args.
+ (convert_force): Likewise.
+ * cp-typeck.c (warn_for_assignment): Remove static declaration,
+ cp-cvt.c needs to see it now.
+ (convert_for_initialization): Call convert_to_reference with fndecl,
+ parmnum, and errtype.
+
+ Tue Oct 27 17:38:18 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Fix problem introduce by me on Oct 22
+ 17:41:13. Only output error or warning message about extra
+ qualifiers when we are inside a class declaration.
+
+ Tue Oct 27 16:21:41 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.h (THIS_NAME_P): Fix to reflect September 1 change in
+ THIS_NAME.
+
+ Tue Oct 27 12:35:59 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (operator_name): Remove check for top-level operator
+ <typename> decl.
+ * cp-decl.c (grokdeclarator): Complain here about type conversion
+ operators that aren't declared as members of classes.
+
+ * cp-decl.c (grokdeclarator): Only call do_friend on a friend if
+ decl's non-zero.
+
+ Tue Oct 27 09:31:08 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c (do_identifier): Add missing fourth argument to
+ lookup_field.
+
+ Mon Oct 26 15:15:39 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): Check for ambiguities
+ between constructor and conversion operators a bit harder.
+
+ Sat Oct 24 19:34:39 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ Mon Sep 14 14:36:53 1992 Chip Salzenberg (chip@tct.com)
+
+ cp-decl.c (poplevel): If apparently nested inline function has
+ DECL_ABSTRACT_ORIGIN, don't output it; propagate TREE_ADDRESSABLE.
+ (pushdecl): When copying inline details into an extern decl,
+ copy DECL_RESULT, TREE_ASM_WRITTEN. Set DECL_ABSTRACT_ORIGIN.
+
+ Fri Oct 23 18:52:19 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (poplevel): Use error_with_decl on an unused label, so
+ its line number comes out correct.
+
+ Thu Oct 22 18:31:50 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (operator_name): If a type conversion operator is
+ defined at the top level, don't crash, complain.
+
+ Thu Oct 22 17:41:13 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Return void_type_node instead of
+ NULL_TREE on errors, to forestall another error message. Check for
+ redundant or illegal qualification on class members.
+
+ Thu Oct 22 13:15:57 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.h (ANON_AGGRNAME_P): Check the second charater as well, as
+ it could be $vtbl_ptr_type, and not an ANON_AGGRNAME.
+
+ Wed Oct 21 19:31:36 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (build_method_call): Initialize b_or_d to 0.
+
+ * cp-typeck.c (compparms): Delete dead code for returning if either
+ TREE_PURPOSE is true when t1 and t2 are both 0.
+
+ * cp-parse.y (object): Only pass one argument into build_x_arrow.
+
+ * cp-parse.y (unary_expr): Add code to parse `&&label'.
+ (stmt): Expand computed gotos.
+
+ * cp-method.c (fndecl_as_string): Say it's static before giving its
+ type, it looks better (and matches how you'd declare it).
+
+ Wed Oct 21 16:22:43 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (start_decl): return NULL_TREE, not error_mark_node to
+ signify error.
+ * cp-decl2.c (cplus_decl_attributes): New function. Don't call
+ decl_attributes if the first argument is NULL_TREE.
+ * cp-tree.h (cplus_decl_attributes): Declare new function.
+ * cp-parse.y: Changed all calls to decl_attributes into calls to
+ cplus_decl_attributes, as all calls may pass NULL_TREE in the first
+ argument.
+
+ Wed Oct 21 11:40:35 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_method_call): Avoid an abort on parse errors by
+ changing an assert into a conditional my_friendly_abort.
+
+ Tue Oct 20 16:52:32 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.h (TYPE_ASSEMBLER_NAME_STRING,
+ TYPE_ASSEMBLER_NAME_LENGTH): New macros.
+ * cp-search.c (build_type_pathname): Use new macros.
+ * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for TYPE_DECLs with
+ build_overload_name so that assembler names for template type things
+ are like __vt$t1X1Zi$1T.4 and not __vt$X<int>$T.4.
+ * cp-decl.c (pushdecl): Since the rest of the compiler wants to use
+ DECL_NAME for TYPE_DECLs, use that instead of DECL_ASSEMBLER_NAME.
+
+ Tue Oct 20 11:29:50 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Oct 7 16:01:55 1992 Chip Salzenberg (chip@tct.com)
+
+ [ changes propagated from 921005 snapshot ]
+ * cp-lex.c (readescape): No warning if digits in \x are all 0's.
+
+ Fri Oct 9 15:18:19 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Only find out if olddecl is a
+ friend after we know it's not a TREE_LIST.
+
+ Wed Oct 7 16:04:34 1992 Mike Stump (mrs@cygnus.com)
+
+ Wed Oct 7 12:26:07 PDT 1992 Ron Guilmette (rfg at netcom.com)
+
+ * cp-lex.c (readescape): Permit \? as an escape sequence.
+
+ Tue Oct 6 17:54:09 1992 Mike Stump (mrs@cygnus.com)
+
+ Major MI revamp.
+
+ * cp-search.c (get_binfo, find_base_distance): Fix comments.
+ Disable incorrect code that would incorrectly find ambiguities where
+ none existed. Add some code to find all ambiguities.
+ * cp-search.c (get_binfo2_recursive, get_binfo2): Added to find
+ ambiguities.
+
+ * cp-search.c (convert_pointer_to_single_level): Added so that one
+ can convert pointer unambiguously to an immediate base class
+ pointer.
+
+ * cp-search.c (dfs_walk): Added comments. Fixed to keep track of
+ how it walks the inheritance hierarchy so that when we get down to
+ the bottom, we have a pointer to what we want.
+ * cp-search.c (dfs_find_vbases): Changed to use new intermediate
+ pointer instead of incorrectly trying to convert at the bottom.
+ * cp-search.c (init_vbase_pointers): Changed to set up new
+ intermediate pointer.
+
+ * cp-*.c: Rename child -> base_binfo, child_child ->
+ base_base_binfo, child_binfos -> base_binfos, .*_child ->
+ .*_base_binfo. Rename DERIVED_FROM_P to UNIQUELY_DERIVED_FROM_P.
+
+ Tue Oct 6 14:51:13 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-spew.c (yylex_ctr): Make unsigned.
+ * cp-decl2.c (spew_debug): Add extern reference.
+ (lang_decode_option): New option `-spew-debug', so masochists can
+ use it when they need to.
+
+ Mon Oct 5 15:47:35 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ Implement protected baseclasses.
+ * cp-class.c (finish_base_struct): Set TREE_VIA_PROTECTED.
+ (finish_struct_methods): Check for either public or protected
+ members to kick out of the "all members are private" test.
+ * cp-decl.c (xref_tag): Set TREE_VIA_PROTECTED appropriately.
+ * cp-parse.y (base_class_visibility_list): Remove code about
+ `protected' visibility not being implemented.
+ * cp-pt.c (tsubst): Set via_protected and call hash_tree_cons
+ with it as necessary.
+ * cp-search.c (compute_visibility): Set visibility if protected.
+ Return the appropriate visibility when resolving a field.
+ (lookup_field): Set TREE_VIA_PROTECTED for btypes from its child.
+ When complaining about a member being protected, differentiate when
+ it's from a protected base class (could be a public member in the
+ base).
+ (lookup_fnfields): Set TREE_VIA_PROTECTED.
+ (get_baselinks): Pass TREE_VIA_PROTECTED into hash_tree_cons.
+ Also pass a 0 when necessary.
+ * cp-tree.c (propagate_binfo_offsets): Set TREE_VIA_PROTECTED.
+ (layout_vbasetypes): Ditto.
+ (layout_basetypes): Ditto.
+ (list_hash_lookup): Check TREE_VIA_PROTECTED when looking at an
+ incomplete basetype.
+ (hash_tree_cons): New argument `via_protected'. Set TREE_VIA_PROTECTED
+ when necessary.
+ (list_hash_lookup_or_cons): Check TREE_VIA_PROTECTED when making
+ sure a hash list is sane.
+ (make_binfo): Set TREE_VIA_PROTECTED for the new child.
+
+ Mon Oct 5 13:27:44 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (maybe_adjust_addr_for_delete): Make sure we don't
+ evaluate the addr twice if it has side effects.
+
+ Mon Oct 5 13:05:37 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (build_vec_delete): Make sure we don't evaluate the base
+ expression twice if it has side effects.
+
+ Mon Oct 5 12:38:35 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Issue a warning or error if we're
+ being ANSI-careful when they do `extern inline'.
+ (flag_ansi): Add extern decl.
+
+ Mon Oct 5 12:34:32 1992 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct): Don't give an error if an enumeration
+ type is stuck in a bit-field, as it is legal c++.
+
+ Mon Oct 5 11:43:09 1992 Mike Stump (mrs@cygnus.com)
+
+ Mon Sep 14 16:39:10 1992 Chip Salzenberg (chip@tct.com)
+
+ * cp-cvt.c (convert_to_integer): Don't pass truncation thru lshift
+ if shift count >= width of narrower type. Instead, just use 0.
+
+ Fri Oct 2 13:21:40 1992 Ken Raeburn (raeburn@kyriath.cygnus.com)
+
+ * cp-decl.c (start_function): Reinstate error check for missing
+ semicolon erroneously removed.
+
+Thu Nov 12 17:37:23 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (movdf_internal): Split movdf insn into two -- one for
+ normal use, and one for -msoft-float, and don't prefer FPU
+ registers in the -msoft-float case.
+ (movsf_internal): Ditto for movsf.
+
+Thu Nov 12 07:30:17 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.h (HARD_REGNO_MODE_OK): Restrict MODE_INT from FP regs only.
+
+ * i386.md (floatMN2 recognizers): Don't omit mode on a
+ match_operand that might be reloaded. Split into separate
+ patterns for each mode.
+ (zero_extract test): Disable for now.
+
+ * i386.c (float_op): Delete - no longer used.
+
+Wed Nov 11 11:55:22 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_comparison, case ASHIFTRT): mode_for_size
+ returns BLKmode on error, not VOIDmode.
+
+ * romp.md (reload_outdi): Write as proper PARALLEL.
+
+Wed Nov 11 01:06:33 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (lang_options): Change +e... to -+e...
+
+ * xm-tower.h: Include xm-svr3.h.
+ (bcopy, bzero, bcmp, USG): Macros deleted.
+
+Tue Nov 10 12:26:23 1992 Steve Chamberlain (sac@cygnus.com)
+
+ * sdbout.c (plain_type_1): Handle LONG_TYPE_SIZE like INT_TYPE_SIZE.
+
+Tue Nov 10 14:20:27 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.md (ffssi2): Add =& constraints to the two match_scratch
+ clobbered registers. Fix from John F Carr.
+
+ * mips-tdump.c (toplevel): Move #undef index and rindex before
+ including sym.h.
+
+Tue Nov 10 10:37:50 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-common): Delete deps $(srcdir)/g++ $(srcdir)/c++
+
+ * expr.c (init_expr_once): Try indexing mem by fp as well as sp.
+
+Tue Nov 10 10:28:59 1992 Chris Smith (csmith@convex.com)
+
+ * genattrtab.c (main): Unlimit stack size.
+
+Tue Nov 10 10:17:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * print-rtl.c (print_rtx): Use sizeof spaces - 1 to get the length
+ of the spaces string.
+
+Tue Nov 10 09:56:32 1992 Jeffrey A. Law (law@schirf.cs.utah.edu)
+
+ * pa-hpux.h (LINK_SPEC): Disable linking against shared libraries.
+ * pa-ghpux.h (LINK_SPEC): Likewise.
+
+Tue Nov 10 08:39:01 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * elxsi.h (GO_IF_LEGITIMATE_ADDRESS): Verify that register is valid
+ for use as base register (un-allocated pseudos aren't when strict).
+
+Mon Nov 9 22:17:23 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xm-3b1.h (index, rindex): Define as macros.
+
+ * i386bsd.h: Complete rewrite.
+
+Mon Nov 9 14:22:38 1992 Michael Meissner (meissner@osf.org)
+
+ * mips.h, decrose.h: Move LINK_LIBGCC_SPECIAL to decrose.h.
+
+Mon Nov 9 12:39:03 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * unroll.c (final_biv_value): Make a note after loop_end
+ if we need to use NEXT_INSN (loop_end).
+
+ * objc-actions.c (build_message_expr): Don't crash if super_type is 0.
+
+Mon Nov 9 07:42:30 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * caller-save.c (save_call_clobbered_regs): Ensure any insns we add
+ are in the same basic block as the insn we added them for.
+
+Mon Nov 9 12:35:57 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * pa.h (TARGET_*): Move it to the beginning of the file.
+ (CPP_SPEC): Handle -mnosnake.
+ * pa-ghpux.h pa-hpux.h pa1-ghpux.h pa1-hpux.h pa1.h pa.h: Move
+ definition of TARGET_DEFAULT to before inclusion of other pa*h files.
+ Only define TARGET_DEFAULT if not already defined.
+ Get rid of hpux8 conditionals.
+
+Sun Nov 8 20:38:19 1992 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * i386.md (movstrsi): mask move count after signed shift.
+
+Sun Nov 8 00:24:30 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixinc.svr4: Avoid use of | in sed regexp; use multiple s commands.
+
+ * i386mach.h: Include i386gstabs.h, not i386gas.h.
+
+ * gsyslimits.h: Renamed from syslimits.h.
+ * Makefile.in (USER_H): syslimits.h deleted.
+ (install-common-headers): Install gsyslimits.h as syslimits.h.
+ Depend on gsyslimits.h and assert.h.
+
+ * cccp.c (rescan): Accept # as command inside macro args, etc.
+ If an actual newline at the same level precedes.
+
+ * fixincludes (EXINIT): Set it to `set', not null.
+
+ * toplev.c (main): Use strncmp when testing for gstabs+ vs gstabs.
+
+Sat Nov 7 17:46:35 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * optabs.c (expand_unop):
+ For complex negation, do get_insns, not gen_sequence.
+
+ * c-decl.c (finish_decl): Don't clear DECL_INITIAL in inline fn decls.
+
+ * c-typeck.c (process_init_constructor): Strip NOP_EXPR from indices.
+ Clear end_index if there's an error in a range.
+
+ * mips-5sysv.h, mips-5svr4.h, mips-5bsd.h (CPP_PREDEFINES):
+ Add single-underscore variants of all the predefined symbols.
+
+ * gstddef.h [_ANSI_H_]: When undefing at the end, test _STDDEF_H,
+ not __need_ptrdiff_t.
+
+ * mips.c (gen_int_relational): Handle overflow when incrementing cmp1.
+
+Fri Nov 6 23:03:14 1992 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * elxsi.c: Include config.h.
+
+Fri Nov 6 18:53:21 1992 Chip Salzenberg (chip@tct.com)
+
+ * i386sco.h (STARTFILE_SPEC): Fix line wrap.
+ (SIGNED_CHAR_SPEC): Defined to set _CHAR_UNSIGNED.
+
+Fri Nov 6 19:06:56 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * dbxout.c (dbxout_symbol): Give name ` ' to unnamed enums.
+
+Fri Nov 6 15:26:30 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * optabs.c (init_libfuncs): Add casts when comparing/incrementing enum.
+
+Fri Nov 6 15:41:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (main): Really accept -gstabs+.
+
+Fri Nov 6 06:46:22 1992 Tom Wood (wood@dg-rtp.dg.com)
+
+ * m88k.md (tcnd_divide_by_zero, divsi3, udivsi3): Allow the
+ explicit trap for divide by zero to resume execution along the
+ expected path.
+
+ * t-m88kv4 (FIXINCLUDES): Delete.
+
+Fri Nov 6 03:08:13 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386.md (andsi3): Mask immed op to 0xff in QI-reg ff00-byte case.
+
+ * gstddef.h: Find ansi.h in machine subdir.
+ [__need_ptrdiff_t]: Don't undef _SIZE_T_ or _WCHAR_T_.
+ * gvarargs.h, gstdarg.h: Don't test, define or undef _VA_LIST_
+ on NET 2 systems. Don't include ansi.h.
+
+ * c-lex.c (readescape): Support \e like \E. Warn only if -pedantic.
+
+Fri Nov 6 08:34:17 1992 Tim Moore (moore at defmacro.cs.utah.edu)
+
+ * integrate.c (copy_rtx_and_substitute)[ARGS_GROW_DOWNWARD]: Map
+ virtual args pointer to the top of the argument block.
+ * calls.c (expand_call)[ARGS_GROW_DOWNWARD] Fix fencepost error in
+ calculating high_to_save and low_to_save. Use - high_to_save to
+ address stack_area.
+
+Fri Nov 6 00:41:53 1992 Paul Eggert (eggert@twinsun.com)
+
+ * sparc.h (TARGET_EDOM, GEN_ERRNO_RTX): Deleted.
+
+Thu Nov 5 18:55:44 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (output_prologue): Fix typo: `add' should be `addq'.
+
+Thu Nov 5 18:35:43 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-fixincludes): Add semicolon in new for-loop.
+
+Thu Nov 5 15:24:14 1992 Michael Meissner (meissner@osf.org)
+
+ * i386rose.h, decrose.h (REAL_LD_FILE_NAME): Define to be the
+ correct location on OSF/1 -- /usr/bin/ld points to
+ /usr/ccs/gcc/ld, which is collect.
+ (REAL_NM_FILE_NAME): Ditto for nm.
+ (REAL_STRIP_FILE_NAME): Ditto for strip.
+
+Wed Nov 4 13:36:10 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * optabs.c (expand_binop): When trying to expand a multiple word
+ add into multiple single word adds, don't overwrite OP0 and OP1 in
+ case we must backtrack. We use instead new variables XOP0 and XOP1.
+
+Wed Nov 4 16:45:53 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Don't discard SCO version number if it's 3.2v4.
+
+ * xm-vax-vms.h (HOST_FLOAT_FORMAT): Defined.
+
+ * varasm.c: Fix typos in last change.
+
+Wed Nov 4 10:11:28 1992 Torbjorn Granlund (tege@jupiter.sics.se)
+
+ * va-pa.h (va_end): Do it like in other va-*.h files.
+
+Wed Nov 4 07:23:46 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * local-alloc.c (optimize_reg_copy_1): If P is a CALL_INSN, count
+ it as being crossed by SRC since SRC used to die there.
+
+Wed Nov 4 00:13:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * x-next (libgcc2.a, stdarg.h): New rules.
+
+ * varasm.c (immed_real_const_1, immed_double_const):
+ Don't push on const_double_chain in nested function.
+
+ * expr.c (emit_move_insn): Do return a value, in complex case.
+
+Tue Nov 3 10:45:09 1992 H.J. Lu (hlu@yardbird.eecs.wsu.edu)
+
+ * i386linux.h (STARTFILE_SPEC): -static is added to ld if
+ -pg, -g or -p is passed down by gcc.
+
+Tue Nov 3 15:14:48 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * pa.c (output_ior): Handle "ior" against zero.
+
+ * i386mach.h (YES_UNDERSCORES): Define it.
+
+ * sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Use REAL_VALUE_MINUS_ZERO.
+ (ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
+
+Tue Nov 3 08:25:35 1992 Chris Smith (csmith@convex.com)
+
+ * convex.h (REG_CLASS_FROM_LETTER): Add 'A', index regs.
+ (movsi alternative): Use it to make psh.w sp (push the
+ stack pointer) a noninstruction.
+
+Tue Nov 3 08:05:10 1992 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Ensure operand of REG_NOTES is an INSN;
+ otherwise, we might try to read outside allocated memory.
+
+ * va-alpha.h (va_end): Don't define enum if va_end already defined.
+
+Tue Nov 3 02:56:22 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc/Makefile: Use $(srcdir), not `..'.
+
+ * objc-actions.c (build_message_expr): Use save_expr for receiver.
+
+ * va-i860.h (va_end, anonymous enum): Don't declare if
+ va_end already defined as macro.
+ * va-mips.h, va-i960.h (va_end): If already a macro, don't declare.
+
+Mon Nov 2 21:17:40 1992 Paul Eggert (eggert@twinsun.com)
+
+ * va-sparc.h (va_end): If already def as macro, don't declare.
+
+Mon Nov 2 16:04:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * i386linux.h: Include i386gstabs.h, not i386gas.h.
+
+Mon Nov 2 14:46:31 1992 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (install-cross-tools): Delete old symlink before
+ making new one; else symlink will fail and we will use
+ backed strategy.
+
+Sun Nov 1 17:55:56 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * varasm.c (decode_rtx_const): Handle PC same as LABEL_REF.
+
+Sun Nov 1 03:19:39 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.3.1 released.
+
+ * x-i386s4: Renamed from x-i386sco4.
+ * configure (i[34]86-*-sco*): Use new name.
+
+ * sol2-c1.asm, sol2-ci.asm, sol2-cn.asm: Renamed from sol2-crt...
+ * t-sol2: User new names.
+
+See ChangeLog.6 for earlier changes.
diff --git a/gcc/ChangeLog.8 b/gcc/ChangeLog.8
new file mode 100644
index 00000000000..9c9140e30c9
--- /dev/null
+++ b/gcc/ChangeLog.8
@@ -0,0 +1,11080 @@
+Tue Mar 1 19:43:31 1994 Stan Shebs (shebs@cygnus.com)
+
+ * a29k/a29k.h (TARGET_SOFT_FLOAT): Define.
+ (TARGET_SWITCHES): Add -msoft-float.
+ * a29k/a29k.md (all floating point): Disable floating point insns
+ if doing soft floats.
+
+Tue Mar 1 19:36:05 1994 Glenn Holloway (glenn@soi.com)
+
+ * defaults.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use
+ ASM_OUTPUT_INTERNAL_LABEL instead of ASM_GENERATE_INTERNAL_LABEL.
+
+Tue Mar 1 19:26:47 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc/sol2.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
+ * sparc/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Add.
+
+ * c-typeck.c (build_binary_op): Pass TREE_TYPE (orig_op0) not
+ orig_op0 to TREE_UNSIGNED.
+
+Tue Mar 1 18:33:33 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * varasm.c (output_constant): Strip off some NOP_EXPRs
+ before further processing.
+
+Tue Mar 1 12:00:00 1994 Stan Cox (coxs@dg-rtp.dg.com)
+
+ * m88k.c (legitimize_address, print_operand): Make -fPIC work
+ again. Put addresses inside UNSPEC when loading them to
+ ensure that cse won't mistakenly optimize them.
+
+ * m88k.md: Two new patterns, to match (HIGH (UNSPEC (..))) and
+ (LO_SUM (reg) (UNSPEC (..))) as generated above.
+
+ * m88k.h: (GO_IF_LEGITIMATE_ADDRESS) Reject invalid PIC addresses.
+
+Tue Mar 1 11:00:14 1994 Doug Evans (dje@cygnus.com)
+
+ * configure: Fix some typos.
+ * config.sub: Move comment to proper place.
+
+Mon Feb 28 18:31:50 1994 Doug Evans (dje@cygnus.com)
+
+ * ns32k/encore.h (ASM_OUTPUT_ASCII): Fix typo.
+
+Mon Feb 28 18:31:42 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * expr.c (convert_move): Change name of truncsipsi to truncsipsi2
+ to conform to existing convention, same with extendpsisi.
+
+Mon Feb 28 08:11:55 1994 Jim Meyering (meyering@comco.com)
+
+ * cccp.c (check_precompiled): Delete unused var dollar_loc.
+ (pcstring_used): Delete unused var TMP.
+ (write_output): Delete unused var WRITTEN.
+ (assertion_lookup): Delete unused var BP.
+ (pedwarn_with_file_and_line): Delete unused var I.
+
+Mon Feb 28 07:12:24 1994 Julian Bradfield (jcb@dcs.ed.ac.uk)
+
+ * m68k.md (call): Change HPUX_ASM case.
+ * m68k/hp320.h (READONLY_DATA_SECTION, LEGITIMATE_PIC_OPERAND_P):
+ Defined.
+ (FUNCTION_PROLOGUE): Emit PIC prologue.
+
+Mon Feb 28 06:21:18 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (eliminate_regs, case MULT): New case, to apply
+ distributive law, when needed.
+
+ * stor-layout.c (variable_size): If global_bindings_p < 0,
+ don't even make the SAVE_EXPR.
+
+ * reg-stack.c (reg_to_stack): Use GET_RTX_CLASS.
+ Clear LABEL_REFs here.
+ (find_blocks): Make algorithm identical to that inreg_to_stack.
+ Use GET_RTX_CLASS.
+ Don't clear LABEL_REFs here.
+ Build a list of labels referenced by other than jumps.
+ If computed jump, mark using that list and forced_labels.
+ (uses_reg_or_mem): New function, copied from flow.c.
+
+ * optabs.c (expand_binop): Use expand_divmod to do
+ integer division for DIV of MODE_COMPLEX_INT operands.
+
+Sun Feb 27 20:24:30 1994 Rob Austein (sra@epilogue.com)
+
+ * protoize.c (process_aux_info_file): Properly start over on
+ file error.
+
+Sun Feb 27 17:42:19 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expmed.c (store_split_bit_field): If OP0 is a SUBREG, then
+ compute WORD from the base register, instead of from the SUBREG.
+ (extract_split_bit_field): Likewise.
+ (extract_bit_field): Sign-extend multiword bitfield if necessary.
+
+ * emit-rtl.c (subreg_realpart_p): New function.
+ * integrate.c (copy_rtx_and_substitute): Use subreg_realpart_p
+ instead of subreg_lowpart_p for CONCAT.
+
+ * c-pragma.c (HANDLE_PRAGMA_WEAK): Depend on ASM_OUTPUT_DEF not
+ SET_ASM_OP when defining it.
+ * dwarfout.c (ASM_OUTPUT_DEF): Delete definition.
+ * defaults.h (ASM_OUTPUT_DEF): Add it here.
+ * varasm.c (handle_pragma_weak): Depend on ASM_OUTPUT_DEF not
+ SET_ASM_OP when defining it. Use ASM_OUTPUT_DEF to output value
+ instead of SET_ASM_OP and explicit ASM_OUTPUT_LABELREF calls.
+
+ * calls.c (expand_call): Set nregs to -1 for BLKmode parameter,
+ then before move_block_to_reg call set it to the type size.
+
+ * reorg.c (try_merge_delay_insns): Success when SLOT_NUMBER ==
+ NUM_SLOTS not when NEXT_TO_MATCH == 0.
+
+ * expmed.c (store_fixed_bit_field): Adjust BITPOS so that it
+ fits inside MODE before adjusting OFFSET to get an aligned address.
+
+ * expmed.c (store_fixed_bit_field): Move float mode to integral
+ mode conversion from near end of function to top of function.
+
+ * c-typeck.c (process_init_element): Check for constructor_type
+ set before dereferencing it in the string cst code.
+
+Sun Feb 27 17:28:06 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k/mot3300.h (TARGET_DEFAULT): Default to 68020-40.
+ (ASM_SPEC): New macro.
+ (FUNCTION_VALUE, FUNCTION_VALUE_REGNO_P): Return pointer in a0.
+ (*_LIBCALL): Use functions from sysV68's library.
+ (INIT_CUMULATIVE_ARGS, FUNCTION_ARG*): Some libcalls pass
+ parameters in registers.
+
+Sun Feb 27 15:20:35 1994 Ron Guilmette (rfg@netcom.com)
+
+ * flags.h (id_clash_len): Now unsigned.
+ (warn_larger_than, larger_than_size): New variables.
+ * toplev.c: Likewise.
+ (main): Support -Wlarger-than-NN.
+ * c-common.c (declare_hidden_char_array): Build new type if
+ warn_larger_than.
+ * c-decl.c (finish_decl, finish_function): Issue warning for
+ large objects, if requested.
+
+Sun Feb 27 10:50:50 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * integrate.c (expand_inline_function): Allow extra arguments
+ and force their evaluation for side-effects.
+
+ * local-alloc.c (qty_compare{,_1}): Give multi-word regs higher
+ priority, as stated in the comments.
+ * global.c (allocno_compare): Likewise.
+
+ * c-common.c (binary_op_error): Initialize OPNAME.
+ * c-decl.c (store_parm_decls): Initialize some vars.
+ * c-lex.c (readescape): Initialize FIRSTDIG.
+ * c-typeck.c (type_lists_compatible_p): Initialize NEWVAL.
+ (pop_init_level): Initialize SIZE.
+ (output_pending_init_elements): Initialize NEXTPOS_TREE.
+ * calls.c (expand_call): Initialize OLD_PENDING_ADJ.
+ * cccp.c (main, args case 'D'): Rewrite to avoid uninitialized var.
+ (main, args case 'A'): Delete unused var P1.
+ (rescan): Initialize STR.
+ (do_xifdef, do_endif): Initialize arg to skip_to_end_of_comment.
+ * expr.c (emit_move_insn): Delete unused vars.
+ (emit_move_insn_1): Don't set SUBMODE unless used.
+ (expand_builtin, case BUILT_IN_SAVEREGS): Clean up uses of VALREG
+ and SAVED_VALREG.
+ * final.c (final_scan_insn): Always set OPS and use alloca.
+ * gcc.c (execute): Initialize PROG.
+ * optabs.c (emit_float_lib_cmp): Init LIBFUNC; abort if not reset.
+ * stmt.c (expand_start_bindings): Properly set NOTE if bytecode.
+ * tree.c (make_node, stabilize_reference_1): Abort if unknown class.
+ * varasm.c (make_decl_rtl): Initialize NAME and abort if not reset.
+
+Sat Feb 26 13:09:37 1994 Doug Evans (dje@canuck.cygnus.com)
+
+ * mips-tfile.c (fatal, error): Don't use prototypes
+ ifndef HAVE_VPRINTF.
+
+ * fixincludes: Fix including of machine/r3_cpu.h and machine/r4_cpu.h
+ in machine/cpu.h on Ultrix 4.3.
+
+Sat Feb 26 07:14:04 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (MASK_NO_SUM_IN_TOC, TARGET_NO_SUM_IN_TOC): New macros.
+ (MASK_MINIMAL_TOC): Change bit value.
+ (TARGET_SWITCHES): Add -mno-sum-in-toc; use -mfull-toc instead
+ of -mnormal-toc, other minor changes.
+ * rs6000.md (movsi): If -mno-sum-in-toc, do addition of
+ symbol + const.
+
+ * jump.c (rtx_renumbered_equal_p): Fix bug in comparing SUBREGs
+ and REGs.
+ Two commutative operations are equal if the operands are in the
+ opposite order.
+
+ * function.c (fixup_var_refs_insn): Delete CLOBBER of VAR. If
+ VAR is being assigned into by a libcall sequence, remove the
+ libcall notes.
+
+ * cse.c (count_reg_usage, case SET): If SRC has side-effects,
+ count a usage of DEST in it.
+
+ * expr.c (store_expr): In promoted TARGET case, if EXP is a
+ volatile MEM and WANT_VALUE is nonzero, only reference the MEM once.
+ Return TARGET if it is a hard register; clean up return code.
+
+ * tree.c (substitute_in_type, case REAL_TYPE): Fix typo in
+ previous change.
+
+Fri Feb 25 06:42:20 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (substitute_in_type, case REAL_TYPE): Allow
+ TYPE_{MIN,MAX}_VALUE to be unassigned.
+
+ * combine.c (if_then_else_cond): Fix typo in narrowing of a SUBREG.
+
+ * alpha.md (neg[sd]f2): Use %R1 consistently.
+
+ * reload.c (find_reloads): Don't restrict class of multiword
+ operand to preferred class.
+ (find_reloads_address_1): Rework to use `switch'.
+ Reload a SUBREG of a hard reg as a unit.
+
+ * alpha.md (mul*): Disallow multiply by constant.
+
+Thu Feb 24 21:20:11 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.sco: In <prototypes.h>, fix prototypes of getcwd and
+ link.
+
+Thu Feb 24 13:06:05 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Don't force os=-hpux for hp9k2... and hp9k3...
+
+Thu Feb 24 11:17:11 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * configure (hppa*-*-osf*): Renamed from hppa*-*-mach. Target
+ filenames changed accordingly.
+
+Thu Feb 24 08:54:27 1994 Bob Miorelli (pwa-b!miorelli@uunet.uu.net)
+
+ * lynx.h (LIB_SPEC, LINK_SPEC): Add missing blanks.
+
+Thu Feb 24 08:42:07 1994 Ian Willis (ianw@sco.com)
+
+ * i386/sco.h, i386/scodbx.h (HANDLE_SYSV_PRAGMA): Define.
+
+Thu Feb 24 07:31:44 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * loop.c (maybe_eliminate_biv_1): Ignore GIV if it isn't
+ always computed.
+
+ * loop.c (scan_loop, strength_reduce): Go back to LOOP_TOP, not
+ its NEXT_INSN (in case SCAN_START == LOOP_TOP).
+
+Wed Feb 23 07:30:14 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (choose_reload_regs): If EQUIV is a SUBREG,
+ make a new REG.
+
+ * c-common.c (decl_attributes): Warn if attribute will be ignored.
+ Allow `noreturn', `volatile', and `const' on object of type
+ pointer to function.
+ Always give decl with error or warning.
+ * calls.c (expand_call): Functions may be const or volatile from
+ their type.
+
+Tue Feb 22 11:00:12 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: In #[el]if, put double underscores around M32,
+ m88k, pdp11, tower[_0-9]*, u370, u3b[0-9]*. From Kaveh R.
+ Ghazi.
+
+ * fixinc.sco: Fix prototype declaration of utime in <sys/times.h>;
+ it's broken in SCO 3.2v4.0.
+
+Tue Feb 22 08:14:28 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.h (FUNCTION_{PROLOGUE,EPILOGUE}): %$ is not supported
+ in fprintf.
+ (ADJSP): New macro to resolve %$.
+
+ * pc532.h (FRAME_POINTER_REQUIRED): Deleted.
+ * pc532-mach.h (FRAME_POINTER_REQUIRED): Moved to here.
+ (DEFAULT_PCC_STRUCT_RETURN): Deleted; redundant.
+
+ * ns32k.c (output_move_dconst): New function.
+ * ns32k.h (output_move_dconst): New declaration.
+ * ns32k.md: Added peephole patterns for stack adjustments followed
+ by QI/HI pushes.
+ (movsi): Use output_move_dconst for TARGET_32532.
+ (ffs): New patterns.
+
+ * ns32k.c (global_symbolic_reference_mentioned_p): New function.
+ (print_operand_address): Allow pc-relative mode not only
+ for {LABEL, SYMBOL}_REF but for CONST too. If compiling PIC,
+ transform "symbol+const(Rx)" to "const(symbol(sb))[Rx:b]".
+ * ns32k.h (OVERRIDE_OPTIONS): New macro to support PIC.
+ (FUNCTION_PROLOGUE): Save/Load sb when compiling PIC.
+ (FUNCTION_EPILOGUE): Restore sb when compiling PIC.
+ (INITIAL_FRAME_POINTER_OFFSET): Take saved sb into account when PIC.
+ (LEGITIMATE_CONSTANT_P, GO_IF_LEGITIMATE_ADDRESS):
+ Set current_function_uses_pic_offset_table if P uses a global
+ symbolic reference.
+ (ENCODE_SECTION_INFO): New macro to support PIC.
+
+Tue Feb 22 07:59:27 1994 Torbjorn Granlund (tege@cygnus.com)
+
+ * alpha.md (divsi3): Emit all RTL from RTL template.
+ (udivsi3, modsi3, umodsi3, divdi3, udivdi3, moddi3, umoddi3): Likewise.
+
+Tue Feb 22 07:21:31 1994 Samuel A. Figueroa (figueroa@cs.nyu.edu)
+
+ * i386/os2.h (LINK_SPEC, LIB_SPEC): New macros.
+ (PATH_SEPARATOR): Delete from here.
+ * i386/xm-os2.h (PATH_SEPARATOR): Add to here.
+
+Mon Feb 21 17:48:39 1994 Jim Wilson (wilson@cygnus.com)
+
+ * mips-tfile.c (fatal, error): Add ! HAVE_VPRINTF versions.
+
+Sun Feb 20 16:53:02 1994 Ted Lemon (mellon@pepper.ncd.com)
+
+ * mips.c (mips_move_2words): Check for TARGET_FLOAT64 != TARGET_64BIT.
+ (override_options): Don't override MASK_64BIT; don't allow -gp64
+ without -mips3.
+ * mips.h: Update mips3 comments.
+ (TARGET_OPTIONS): Add gp64 and gp32.
+ (SECONDARY_MEMORY_NEEDED): Don't allow fp<->gp copy if TARGET_FLOAT64
+ != TARGET_64BIT.
+ (CC1_SPEC): Generate correct -mfp* and -mgp* from -mips*
+ * mips.md (movdf_internal1): Disable if TARGET_FLOAT64 != TARGET_64BIT.
+ (movdf_internal1a): New pattern.
+ * osfrose.h (CC1_SPEC): Update as above.
+
+Sun Feb 20 15:40:45 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.h (HARD_REGNO_MODE_OK): Update comment.
+
+ * iris5.h (OBJECT_FORMAT_ELF): Add comments.
+ * configure (mips-sgi-irix5): Use collect.
+
+Sat Feb 19 14:25:41 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Permit upper case characters in typedef of size_t
+ in <sys/types.h>.
+
+Thu Feb 17 18:02:02 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * c-parse.in (attrib): Handle attribute ((section ("string"))).
+ * c-common.c (decl_attributes): Decode section attribute.
+ * c-decl.c (duplicate_decls): Merge section name into new decl.
+ * tree.h (DECL_SECTION_NAME): New macro.
+ (struct tree_decl): New member `section_name'.
+ * varasm.c (IN_NAMED_SECTION): New macro.
+ (named_section): New function.
+ (enum in_section): New value `in_named'.
+ (in_named_name): New global.
+ (make_function_rtl, make_decl_rtl, output_constant_def): Fix comment
+ regarding ASM_OUTPUT_LABELREF.
+ (make_decl_rtl): Warn if section attribute used with uninitialized
+ variable declaration.
+ (assemble_start_function, assemble_variable, output_constant_def):
+ Change to named section if given.
+ * sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Define.
+ * h8300/h8300.h (ASM_OUTPUT_SECTION_NAME): Define.
+ (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION): Delete.
+ (ASM_OUTPUT_LABELREF): Call fprintf directly.
+ * h8300/h8300.c (asm_output_labelref): Delete.
+ * sh/sh.h (ASM_OUTPUT_SECTION_NAME): Define.
+ (ASM_OUTPUT_SECTION): Delete.
+
+Wed Feb 16 21:46:48 1994 Doug Evans (dje@cygnus.com)
+
+ * i960/i960.c (i960_function_prologue): Put register save area before
+ outgoing arg block.
+
+Wed Feb 16 15:33:26 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expr.c (get_pointer_alignment): ALIGN is alignment of innermost
+ object, not the MAX of alignment of all objects.
+
+ * expr.c (group_insns): Delete.
+ (emit_move_insn_1, expand_expr): Use emit_no_conflict_block
+ instead of group_insns.
+
+ * final.c (end_final): Pass BIGGEST_ALIGNMENT not align to
+ ASM_OUTPUT_ALIGNED_LOCAL.
+
+ * alpha.c (alpha_builtin_saveregs): Don't include
+ current_function_arg_offset_rtx in argsize. Subtract 48 from arg
+ base address when no int registers stored on the stack.
+
+ * genattrtab.c (expand_units): Fix blockage calculation.
+
+ * loop.c (scan_loop): Add no_labels_between_p call to tests which
+ decide if an invariant reg can be safely replaced with its SET_SRC.
+
+Wed Feb 16 00:54:04 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Fix uses of new in Xm/Traversal.h. Found on
+ RS/6000.
+
+Tue Feb 15 19:44:41 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * tree.def: Remove STRING_TYPE. No-one uses it.
+ * tree.h (struct tree_type): New bitfield string_flag.
+ * tree.h (TYPE_STRING_FLAG): New macro.
+ * tree.c, sparc.c: Remove unneeded tests for STRING_TYPE.
+ * expr.c (expand_builtin), dwarfout.c: Use TYPE_STRING_FLAG.
+ * dbxout.c (dbxout_type): For SET_TYPE and ARRAY_TYPE, use
+ TYPE_STRING_FLAG to emit appropriate indication.
+
+Tue Feb 15 19:36:45 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * real.c (real_value_truncate): If requested mode is not
+ supported, return the unmodified input instead of aborting.
+
+Tue Feb 15 19:30:48 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_increment): Handle both BAD_SUBREG and POST.
+
+Tue Feb 15 11:09:08 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.svr4: Make byteorder.h a here document, rather than
+ copying it from the source directory.
+ * byteorder.h: Removed.
+
+ * fixinc.sco: Don't install <sys/byteorder.h>.
+
+ * fixincludes: Removed references to GCCCMD. Instead of running
+ ${GCCCMD} to determine correct value for size_t, just fix the
+ header files to use __SIZE_TYPE__.
+ * Makefile.in (fixinc.ready): Removed target.
+ (stmp-fixinc): Don't depend upon fixinc.ready. Don't pass fourth
+ argument (was "`pwd`/xgcc -B`pwd`/") to $(FIXINCLUDES).
+ (clean): Don't remove fixinc.ready.
+
+ * rs6000.h (RS6000_ITRUNC, RS6000_UITRUNC): Define.
+ * rs6000.md (fix_truncdfsi2, fixuns_truncdfsi2): Use RS6000_ITRUNC
+ and RS6000_UITRUNC, not "itrunc" and "uitrunc".
+ * rs6000.c (output_prolog): Likewise.
+
+Mon Feb 14 19:19:06 1994 Jim Meyering (meyering@idefix.comco.com)
+
+ * gen-protos.c (main): Remove unused args in call to fprintf.
+ * bi-opcode.c (main): Move unused arg ++i out of call to printf.
+
+Mon Feb 14 19:14:55 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * real.c (eifrac): If FIXUNS_TRUNC_LIKE_FIX_TRUNC,
+ convert on positive overflow as if unsigned.
+
+Mon Feb 14 19:13:15 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (lang_options): Add -W{no,}extern-inline.
+
+ * gcc.c (default_compilers): Generate and use .ii files in the
+ intermediate stage of compiling C++ source.
+
+Mon Feb 14 19:08:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * local-alloc.c (optimize_reg_copy): A register that dies in
+ a CALL_INSN doesn't cross that call.
+
+ * combine.c (simplify_shift_const, case AND): When remaking
+ binary operation, do it in SHIFT_MODE.
+
+Mon Feb 14 11:27:35 1994 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * config.sub: Add case for Bull dpx20.
+
+Sun Feb 13 23:50:15 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * rs6000.c (output_epilog): Don't output a traceback table if
+ flag_inhibit_size_directive is set.
+
+Sun Feb 13 17:47:14 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (rs6000_adjust_cost): Renamed from ppc_adjust_cost.
+ * rs6000.h (ADJUST_COST): Call rs6000_adjust_cost.
+
+Sun Feb 13 17:07:02 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * rs6000.h (ASM_OUTPUT_INTERNAL_LABEL_PREFIX): Define.
+ (ASM_OUTPUT_ADDR_VEC_ELT): Use ASM_GENERATE_INTERNAL_LABEL instead
+ of assuming the default format for internal labels.
+ (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ * rs6000.c (output_prolog, output_epilog): Likewise.
+ (output_function_profiler): Likewise.
+
+ * fixincludes: Fix conflicts with C++ reserved words in
+ X11/ShellP.h, Xm/Traversal.h, and Xm/BaseClassI.h. Found on
+ RS/6000.
+
+Sun Feb 13 13:40:17 1994 Michael Meissner (meissner@osf.org)
+
+ * halfpic.h (toplevel): Include stdio.h if it hasn't been included
+ already, so that STDIO_PROTO can be defined. Otherwise,
+ asm_fprintf gets a prototype mismatch.
+
+Sun Feb 13 02:36:30 1994 Doug Evans (dje@cygnus.com)
+
+ * gcc.c (fatal, error): Fix declarations (dependent on HAVE_VPRINTF)..
+
+Sat Feb 12 19:46:29 1994 Michael Meissner (meissner@osf.org)
+
+ * configure (386-*-osfrose): Use i386/xm-osf.h as xm file.
+
+ * i386/xm-osf.h (new file): Define HAVE_PUTENV and HAVE_VPRINTF.
+
+Sat Feb 12 08:51:02 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * calls.c (expand_call): When preserving subexpressions, don't put
+ expensive arguments directly into hard registers.
+
+ * combine.c (REVERSIBLE_CC_MODE): Add default definition.
+ (reversible_comparison_p): REVERSIBLE_CC_MODE.
+ * sparc.h (REVERSIBLE_CC_MODE): Define.
+
+ * combine.c (subst): Always simplify true and false arms if
+ if_then_else_cond succeeds.
+ (subst, case IF_THEN_ELSE): More canonicalizations; delete some
+ redundant tests.
+ (if_then_else_cond): Canonicalize (OP (mult COMP A) (mult REV_COMP B)).
+ (gen_binary): Simplify (REL_OP (compare X Y) 0) here.
+
+Sat Feb 12 07:41:55 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * cse.c (cse_main): Conditionalize special treatment of
+ PIC_OFFSET_TABLE_REGNUM on PIC_OFFSET_TABLE_REG_CALL_CLOBBERED.
+
+ * expmed.c (expand_shift): Truncate immediate count if
+ SHIFT_COUNT_TRUNCATED.
+
+Fri Feb 11 18:49:42 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * dbxout.c (dbxout_type_fields): Emit anonymous fields
+ just like other fields, but with an empty name. Don't
+ treat the fields as belonging to the containing object.
+
+Fri Feb 11 20:08:25 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * rs6000.md (definition of "type"): Add "jmpreg" as new type.
+ Change "mtlr" to "mtjmpr".
+ (movsi matcher): Pair `c' and `l' in the same constraint
+ alternative.
+ (return): Set attribute to "jmpreg".
+ (indirect_jump): Likewise.
+ * rs6000.h (ADJUST_COST): Call ppc_adjust_cost.
+ * rs6000.c (ppc_adjust_cost): New function. Adjust for TYPE_JMPREG.
+
+Fri Feb 11 17:39:42 1994 Michael Collison (collison@osf.org)
+
+ * reload1.c (gen_input_reload): If reg-reg add is not valid,
+ try copying reg-reg and adding reg-int.
+
+Fri Feb 11 17:36:11 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * expr.c (expand_builtin): If the builtin was called as
+ __builtin_whatever, pretend we're optimizing.
+
+Fri Feb 11 17:30:28 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c (mark_jump_label, case LABEL_REF): Update REG_LABEL
+ note if changing target of jump.
+
+ * regclass.c (record_reg_classes): Fix logic in case of matching
+ operands.
+
+Fri Feb 11 16:03:21 1994 Doug Evans (dje@cygnus.com)
+
+ * tree.h (VPROTO, VA_START): Avoid duplicate definition.
+ * rtl.h (VPROTO, VA_START): Likewise.
+ * gcc.c (VPROTO, VA_START): Define.
+ (PROTO): Define.
+ Add prototypes for static functions.
+ * g++.c (VPROTO, VA_START): Define.
+
+ * gstdarg.h: Don't define _STDARG_H/etc. if not gcc,
+ it may collide with system's header.
+
+Thu Feb 10 19:26:37 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * c-typeck.c (c_expand_return): Do not warn about returning the
+ address of a locally declared extern variable.
+
+Thu Feb 10 15:57:06 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide default
+ definition.
+ (asm_insn_count): Use IS_ASM_LOGICAL_LINE_SEPARATOR rather
+ than assuming the logical line separator is ';'.
+
+ * pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Define.
+
+Thu Feb 10 08:49:39 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.h (reload_secondary_{reload,icode}): Deleted.
+ (reload_secondary_{in,out}_{reload,icode}): New variables.
+ * reload.c: Likewise.
+ (MATCHES, MERGABLE_RELOADS, MERGE_TO_OTHER): Move to front of file.
+ (push_secondary_reload): New function, from find_secondary_reload.
+ (find_secondary_reload): Deleted.
+ (push_reload): Call push_secondary_reload.
+ (combine_reloads): Use new vars for secondary reloads and icodes.
+ * reload1.c (emit_reload_insns): Use new vars for secondary
+ reloads and icodes.
+
+ * explow.c (memory_address): Fix error in last change.
+
+Thu Feb 10 08:13:49 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * rtl.h, tree.h, mips-tfile.c (VPROTO): New macro.
+ * combine.c, expr.h, genattrtab.c, output.h, rtl.h, tree.h, toplev.c:
+ Use PROTO for varargs functions.
+ * genattrtab.c (attr_printf): Only declare when defined.
+ * bc-emit.c, calls.c, combine.c, emit-rtl.c, final.c, g++.c:
+ If __STDC__, include gstdarg and use ANSI form of varargs.
+ * gcc.c, genattrtab.c, mips-tfile.c, tree.c, toplev.c: Likewise.
+
+Wed Feb 9 09:53:54 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (SUBTARGET_SWITCHES): Add -mmcount-ptr as a
+ synonym for -mno-mcount.
+ (CC1_SPEC): If -melf, pass -mmcount-ptr by default.
+
+ * i386/osfelf.h (CC1_SPEC): Unless -mrose, pass -mmcount-ptr by
+ default.
+
+ * configure (alpha-dec-osf): Use osf2.h and gdb-osf2.h on OSF/1 2.0 and
+ beyond.
+
+ * alpha/osf2.h, alpha/gdb-osf2.h (new files): Support for OSF/1 2.0
+ that uses 4 byte wchar_t's instead of 2 byte.
+
+Tue Feb 8 20:18:12 1994 Paul Eggert (eggert@twinsun.com)
+
+ * real.c (earith, ereal_negate, eneg, eisneg, enan, emovo, esub):
+ Propagate the sign of NaNs, so that e.g. -(NaN) evaluates to -NaN.
+ (eadd, ediv, emul, eremain, e53toe, e64toe, e113toe, e24toe, esqrt):
+ Likewise.
+ (make_nan): New arg specifies sign of NaN. All callers changed.
+ (eiisneg): New function.
+ (esqrt): Compute sqrt(-0.0) to be -0.0, not 0.0.
+
+Tue Feb 8 19:23:41 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * toplev.c: Include ctype.h.
+
+ * tree.c (int_fits_type_p): Properly handle case of variable bounds
+ for types.
+
+Tue Feb 8 19:20:04 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fixproto: Add popen and pclose to required list for stdio.h.
+ Add putenv to required list for stdlib.h.
+ Add getopt to required list for unistd.h.
+
+ * fixproto: Append "#include <stdlib.h>" to assert.h if it uses
+ exit or abort.
+
+ * libgcc2.c (__builtin_new): If __new_handler returns, keep trying
+ to allocate the memory.
+ (__default_new_handler): Add __ to beginning of name to avoid
+ namespace clashing.
+
+Tue Feb 8 18:50:07 1994 Jim Wilson (wilson@cygnus.com)
+
+ * i386/x-aix (FIXINCLUDES): Delete definition.
+ * configure (i[34]86-ibm-aix): Delete definition of fixincludes.
+ * fixincludes: When edit size_t typedef, modify sed pattern to
+ avoid matching typedef uses of size_t. Likewise when adding
+ #ifndef GCC_SIZE_T.
+ * fixinc.ps2: Delete file.
+
+ * mips.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Use SIZE not ROUNDED.
+
+ * iris5.h (SIZE_TYPE, PTRDIFF_TYPE): Don't redefine.
+ (MAX_WCHAR_TYPE_SIZE): Define.
+
+ * mips-tdump.c (print_file_desc): Correct printf format.
+ (main): Likewise.
+
+ * flow.c (find_basic_blocks): Also look for REG_LABEL notes on first
+ instruction of each basic block.
+
+ * sparc.c (save_regs, restore_regs): Use __inline__ not inline.
+
+Tue Feb 8 10:13:54 1994 Doug Evans (dje@cygnus.com)
+
+ * toplev.c (open_dump_file): New function.
+ (compile_file): Open dump files with it. Remove dump_base_name_length.
+
+Sun Feb 6 15:52:48 1994 Jim Wilson (wilson@cygnus.com)
+
+ * collect2.c (sys_siglist): Don't declare if
+ DONT_DECLARE_SYS_SIGLIST is defined.
+ * mips/xm-sysv4.h (DONT_DECLARE_SYS_SIGLIST): Define.
+ * sparc/xm-sol2.h (NO_SYS_SIGLIST): Delete.
+ (DONT_DECLARE_SYS_SIGLIST): Define.
+ * mips-tfile.c (sys_siglist): Don't declare if NO_SYS_SIGLIST or
+ DONT_DECLARE_SYS_SIGLIST are defined.
+ (catch_signal): Add code for NO_SYS_SIGLIST case.
+
+ * sched.c (reg_pending_sets, reg_pending_sets_all): New variables.
+ (sched_analyze_1): Set reg_pending_sets instead of reg_last_sets.
+ (sched_analyze_2): Set reg_pending_sets or reg_pending_sets_all
+ instead of reg_last_sets.
+ (sched_analyze_insn): Use reg_pending_sets and
+ reg_pending_sets_all to set reg_last_sets. Set
+ reg_pending_sets_all instead of reg_last_sets.
+ (schedule_block): Allocate and clear reg_pending_sets.
+
+ * sparc.md (movdi): Handle 'U' and 'T' constraints.
+
+ * m68k/hp320.h (FUNCTION_PROFILER): Concatenate strings to avoid
+ use of ANSI C specific feature.
+
+ * mips.c (function_arg): When soft-float, don't add bias for
+ second SFmode argument.
+
+ * iris5.h (CPP_PREDEFINES): Add _MIPSEB.
+
+Sun Feb 6 08:40:46 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (struct temp_slot): Add new field, ADDRESS.
+ (assign_stack_temp): Initialize it to zero.
+ (find_temp_slot_from_address, update_temp_slot_address): New functions.
+ (preserve_temp_slots): Use find_temp_slot_from_address.
+ * explow.c (memory_address): Call update_temp_slot_address on
+ new and old address.
+
+ * cse.c (canon_hash, case LABEL_REF, SYMBOL_REF): Avoid warning
+ on 64-bit machines.
+
+Sat Feb 5 17:55:52 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure (i[34]86-sequent-ptx): Alias for i[34]86-sequent-sysv*.
+
+Sat Feb 5 11:46:00 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * sh.c (hard_regno_mode_ok): New vector.
+ (output_stack_adjust): Always adjust stack with an addsi insn.
+ (calc_live_regs): Support alernative calling conventions.
+ (print_operand): Delete obsolete cases.
+ (synth_constant): New function to generate constants by
+ arithmetic means.
+ (expand_block_move): Use new block move support routines.
+ (prepare_move_operands): Use synth_constant when possible, try
+ and geneate splits for DI moves.
+ (output_jump_label_table, dump_table, output_far_jump,
+ prepare_split_double_ops,from_compare, equality_operator,
+ handle_pragma, expand_acall): New functions.
+ (prepare_scc_operands): When condition isn't supported swap args
+ and alter test.
+ (output_move_double): Generate better code for constant moves.
+ (output_shift): Cope with negative shifts.
+ (byte_index_operand, pop_operand, painful_immediate_operand,
+ ok_shift_value, hard_immediate_operand, adjust_insn_length,
+ dump_constants, output_movepcrel): Deleted.
+ (final_prescan_insn): Now only prints pc.
+ (shiftcosts, andcosts, multcosts): Work out some insn costs.
+ (gen_ashift, gen_shifty): Emit code for shift operations.
+ (fixit, hi_const, find_barrier, broken_move,
+ machine_dependent_reorg): New functions to fix move instructions
+ with out-of-range literals.
+
+ * sh.h (OPTIMIZATION_OPTIONS, CONDITIONAL_REGISTER_USAGE): New.
+ (TARGET_SWITCHES): Extra -m options for experimental calling
+ conventions.
+ (HARD_REGNO_MODE_OK): Use hard_regno_mode_ok vector rather than
+ inline code.
+ (FRAME_POINTER_REQUIRED): Always 0.
+ (reg_class, REG_CLASS_CONTENTS, REG_CLASS_NAMES): Change order
+ of classes.
+ (FRAME_GROWS_DOWNWARD): Don't define.
+ (FUNCTION_ARG_PARTIAL_NREGS): Always 0.
+ (MAX_REGS_PER_ADDRESS): Is 2.
+ (GO_IF_LEGITIMATE_INDEX): Split up into smaller macros.
+ (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Jump tables are of
+ switchable size and always pc relative.
+ (RTX_COSTS): Use new andcosts, multcosts and shiftcosts functions.
+ (INSN_SETS_ARE_DELAYED, INSN_REFERENCES_ARE_DELAYED): New.
+ (ASM_OUTPUT_CASE_LABEL, ASM_OUTPUT_ADDR_DIF_ELT): Now switches are
+ pc relative.
+
+ * sh.md (define_attr length): Calculate lengths more accurately.
+ (define_attr "rte", "hit_stack"): New.
+ (cmp*): Allow all conditions by swapping args.
+ (addc, adddi3, and_ff, casesi, casesi_worker, peepholes): New.
+ (div*, mul*): Use library routines with special calling
+ conventions.
+ (shifts): Generate only legal shift insn sequences.
+ (extend*): Get clobbers right, extra constraints.
+ (mov*): Greatly simplified.
+ (b*): Use from_compare function.
+ (return, rte): Understand pragma interrupt.
+ (anddi3, iordi3, xordi3): Deleted.
+ (consttable_2,consttable_4, consttable_8, align_2, align_4,
+ consttable_end, movesi_k, movhi_k, movdi_k): Support for inline
+ literal tables.
+ (movstrsi, block_move_real, block_lump_real): Use new block move
+ routines.
+
+ * toplev.c (rest_of_compilation): Invoke MACHINE_DEPENDENT_REORG if
+ defined.
+
+Sat Feb 5 08:05:58 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * cse.c (memory_extend_rtx): New variable.
+ (cse_main): Initialize it.
+ (cse_insn): See if we have already loaded a MEM in a wider mode.
+
+Sat Feb 5 07:05:29 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fixproto: Add lstat to required_list for sys/stat.h
+
+Fri Feb 4 12:14:49 1994 Stan Cox (coxs@dg-rtp.dg.com)
+
+ * m88k.h: (TARGET_SWITCHES) Assume -muse-div-instruction
+ -mno-check-zero-division for -m88110. (CONSTANT_ADDRESS_P) Fix a
+ -fpic reload bug. (DONT_REDUCE_ADDR) Don't strength reduce so
+ m88k scaled loads/stores will be used. (enum processor_type) Use
+ instead of attr_cpu, which is not always defined.
+
+ * m88k.md: (movdf) Split movdf so it can go into a branch delay slot
+
+ * m88k.c: (m88k_gp_threshold) Make -mshort-data- unsigned.
+ (block_move_*) Copy MEM_IN_STRUCT_P for block move cases.
+
+ * dgux.h: (TARGET_SVR4) Use -msvr4/-msvr3 instead of
+ -mversion-03.00 to choose assembler syntax.
+
+Fri Feb 4 08:14:31 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (gen_lowpart_common, gen_highpart): Test *_BIG_ENDIAN
+ with "if", not #if and fix one erroneous test.
+
+Thu Feb 3 17:15:07 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expmed.c (store_bit_field, insv case): Don't use PUT_MODE on
+ xop0 when it is a SUBREG, generate a new SUBREG.
+
+Thu Feb 3 13:24:14 1994 Alex Zatsman (alex.zatsman@analog.com)
+
+ * hard-reg-set.h (GO_IF_HARD_REG_EQUAL): Fix typo.
+
+Thu Feb 3 07:45:45 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c: Add prototypes for static functions.
+ (uses_reg_or_mem): New function.
+ (find_basic_block): Some cleanups; eliminate shadowed variables.
+ Look for REG_LABEL notes in all insns and allow for multiple such.
+ Don't delete labels in forced_labels.
+ Generalize test for computed jumps.
+ (find_auto_inc): OFFSET should be HOST_WIDE_INT.
+ (mark_used_regs): Put decls of parms in parm order.
+ (find_use_as_address): PLUSCONST should be HOST_WIDE_INT.
+
+ * reload1.c (eliminate_regs, case INSN_LIST): Properly remake
+ list when we change something further on.
+
+Wed Feb 2 21:25:03 1994 Jim Wilson (wilson@cygnus.com)
+
+ * c-typeck.c (signed_or_unsigned_type): Check for any
+ INTEGRAL_TYPE_P not just INTEGER_TYPE.
+
+ * Makefile.in (enquire.o): Depend on stmp-int-hdrs.
+
+ * mips.h (CPP_SPEC): Define __PTRDIFF_TYPE__ not __PTRDIFF_TYPE.
+
+ * reorg.c (fill_simple_delay_slots): When fill epilogue delay
+ slot, set needed to end_of_function_needs instead of clearing it.
+
+Wed Feb 2 15:20:38 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * tree.c (FILE_FUNCTION_FORMAT): Fix typo if neither dot nor dollar
+ in label.
+
+Wed Feb 2 14:38:56 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (const_binop, COMPLEX_TYPE, case RDIV_EXPR):
+ If complex integer, use TRUNC_DIV_EXPR for inner division.
+
+ * c-tree.h: Re-order declarations for functions in c-typeck.c to
+ agree with order there; add some missing declarations.
+ * c-typeck.c: Add prototypes for static functions; delete
+ forward declarations of non-static functions.
+ (initializer_constant_valid_p): Add missing parameter to
+ recursive call.
+
+Wed Feb 2 14:22:05 1994 Kaveh R. Ghazi (ghazi@noc.rutgers.edu)
+
+ * objc/Makefile (SUBDIR_INCLUDES): Add -I for include directory.
+
+Wed Feb 2 13:24:23 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * expmed.c (synth_mult): Delay allocation of algorithm structures
+ until they are needed. Reorder early-exit tests to avoid comparing
+ value that is not yet set.
+
+Tue Feb 1 18:56:19 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * c-common.c (decl_attributes): Allow format attributes
+ on old style (non-prototype) function declarations.
+
+Tue Feb 1 11:25:40 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * tree.c (build_type_variant): Simplify by using build_type_copy.
+
+ * c-decl.c (grokdeclarator): `volatile' function warning
+ corrected to read `noreturn' function warning.
+ (finish_function): Likewise.
+ * cp-decl.c (finish_function): Likewise.
+ * c-typeck.c, cp-typeck.c (c_expand_return): Likewise.
+ * toplev.c (rest_of_compilation): Likewise.
+
+Tue Feb 1 06:06:22 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (make_extraction): Don't make an extraction that
+ has the potential of crossing a boundary.
+
+ * regclass.c: Add prototypes for static functions.
+ (auto_inc_dec_reg_p): New function.
+ (regclass): Call it to allow a register needing a secondary reload
+ to be used for inc/dec if it is already valid for it.
+
+ * gcc.c (default_compilers, @ada): Don't duplicate "-gnat" parameters;
+ pass -quiet unless -Q is specified.
+
+ * alpha.md (minsf3, maxdf3, mindf3): Properly insert constant of
+ zero into patterns.
+
+Mon Jan 31 20:55:41 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * i960.c (i960_function_name_declare): Handle names that start
+ with '*'.
+
+Mon Jan 31 19:13:59 1994 Chip Salzenberg (chip@fin.uucp)
+
+ Unify error and message functions:
+ * toplev.c: Include "gvarargs.h".
+ (fatal_insn_not_found): Omit superfluous argument to error.
+ (vmessage, v_message_with_file_and_line): New functions.
+ (v_message_with_decl, file_and_line_for_asm): Likewise.
+ (v_error_with_file_and_line, v_error_with_decl): Likewise.
+ (v_error_for_asm, verror, vfatal): Likewise.
+ (v_warning_with_file_and_line, v_warning_with_decl): Likewise.
+ (v_warning_for_asm, vwarning): Likewise.
+ (error_with_file_and_line, error_with_decl, error, fatal): Now just
+ wrappers for above functions.
+ (error_for_asm, warning_with_file_and_line): Likewise.
+ (warning_with_decl, warning_for_asm, warning): Likewise.
+
+Mon Jan 31 19:03:16 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sched.c (sched_analyze_insn): Add use dependencies for registers
+ mentioned in REG_DEAD notes.
+
+ * configure (mips-tandem-sysv4*): Add.
+ * mips/svr4-t.h, mips/svr4-t-gdb.h: New files.
+
+ * sched.c (priority): Call insn_cost() for anti- and output-
+ dependencies as well as for true dependencies.
+
+ * cse.c (find_best_addr): Limit number of cse_gen_binary calls to
+ 20 per iteration.
+
+Mon Jan 31 18:08:27 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * real.c (emovo): Use separate variable for loop index.
+
+ * fold-const.c (operand_equal_for_comparison_p): Declare
+ correct_width as unsigned.
+
+ * configure (m68k-wrs-vxworks): Fix typo in name.
+
+ * Makefile.in (cross-test, enquire, protoize, unprotoize):
+ Specify program name in -o to force into build directory.
+
+ * i386/sol2.h (CPP_SPEC): Add -Dsun.
+
+ * alpha/gdb.h: Renamed from alpha-gdb.h.
+ * alpha/gdb-osf12.h: New file.
+ * configure (alpha): Reflect new name for files and support
+ gdb with OSF V1.2.
+
+Mon Jan 31 15:18:40 1994 Jim Wilson (wilson@cygnus.com)
+
+ * bc-emit.c (class_narrowest_mode, byte_mode, word_mode): Add
+ extern to declaration.
+ * expr.c (local_vars_size): Likewise.
+
+ * genattrtab.c (expand_units): When calculate BLOCKAGE, reverse
+ terms to POS_MINUS_OP. Clarify comment before BLOCKAGE computation.
+ (write_complex_function): Use EXECUTING_INSN for first switch, and
+ CANDIDATE_INSN for second switch.
+
+ * sparc/lite.h (TARGET_DEFFAULT): Add -mapp-regs.
+ * sparc/sparc.h (TARGET_APP_REGS): Define.
+ (TARGET_SWITCHES): Add new options -mapp-regs and -mno-app-regs.
+ (TARGET_DEFAULT): Add -mapp-regs.
+ (CONDITIONAL_REGISTER_USAGE): Make %g2, %g3, and %g4 be fixed when
+ the -mno-app-regs option is used.
+ * sparc/sun4os3.h (TARGET_DEFAULT): Delete.
+
+ * svr4-5.h (STARTFILE_SPEC): Include values-X[cta].o file in link.
+
+ * xcoffout.c (ASM_OUTPUT_LFE): Output absolute line number not
+ relative line number.
+
+Fri Jan 28 19:20:07 1994 Michael Collison (collison@osf.org)
+
+ * flow.c (find_auto_inc): Check for increment using single_set.
+
+Fri Jan 28 19:11:17 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (fsel): Remove insns with record bit set.
+
+Thu Jan 27 18:22:25 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (output_prolog): Fix typo in previous change.
+
+Wed Jan 26 18:19:51 1994 Per Bothner (bothner@sugar-bombs.gnu.ai.mit.edu)
+
+ * c-typeck.c (initializer_constant_valid_p): Make non-static.
+ (It's used by the Chill back-end.)
+
+Wed Jan 26 13:54:40 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * sched.c (attach_deaths_insn): Add REG_DEAD notes to CLOBBER if
+ it is for a MEM.
+
+Tue Jan 25 08:30:11 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * cse.c (HASHBITS): Removed.
+ (HASH, struct set, canon_hash, safe_hash, remove_from_table):
+ Generate and use unsigned hash values, to avoid potential trouble
+ with signed shift/overflow.
+ Also name variables consistently: "hash", not "hash_code".
+ (lookup, lookup_for_remove, insert, merge_equiv_classes): Likewise.
+ (invalidate, rehash_using_reg, invalidate_for_call): Likewise.
+ (find_best_addr, record_jump_cond, cse_insn): Likewise.
+
+Mon Jan 24 18:59:59 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expmed.c (store_split_bit_field): For BYTES_BIG_ENDIAN, only
+ pad on left if value not in memory. Reject gen_lowpart_common
+ output if it returns the input value.
+
+ * unroll.c (copy_loop_body): When delete simplified condjump,
+ protect the label, so that it doesn't get deleted also.
+
+ * toplev.c (compile_file): If yyparse returns an error, pop all
+ pending binding levels.
+
+Mon Jan 24 18:30:53 1994 Doug Evans (dje@cygnus.com)
+
+ * objc/Object.h (streamVersion, read, write): #ifndef out for the
+ alpha since TypedStream not supported there yet.
+ * objc/Object.m (streamVersion, read, write): Ditto.
+
+Mon Jan 24 17:40:56 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.c (sparc_address_cost): Delete.
+ * sparc.h (ADDRESS_COST): Define to 1.
+
+ * bsd-5.h, mips-5.h, svr3-5.h, svr4-5.h (ASM_OUTPUT_NEWLINE):
+ Define new macro.
+ * mips.h (ASM_OUTPUT_NEWLINE): New default for new macro.
+ (ASM_OUTPUT_ASCII): Use ASM_OUTPUT_NEWLINE.
+
+ * sparc.h (ASM_OUTPUT_COMMON): Don't output .global. Use SIZE not
+ ROUNDED.
+ (ASM_OUTPUT_LOCAL): Delete.
+ (ASM_OUTPUT_ALIGNED_LOCAL): Define.
+
+Sun Jan 23 18:57:01 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * expr.c (do_jump_for_compare): Initialize JUMP_LABEL for the branch
+ insn before trying to invert it.
+
+Sun Jan 23 18:40:23 1994 Samuel A. Figueroa (figueroa@cs.nyu.edu)
+
+ * i386/os2.h (PATH_SEPARATOR): New macro.
+ * i386/gas.h (ASM_FILE_START): Delete; identical to one in bsd.h,
+ which is included.
+
+Sun Jan 23 18:21:23 1994 Randy S. Welch (randy@tss.com)
+
+ * m68k/plexus.h: Assume GAS 2.x used and add support for debugging.
+
+Sun Jan 23 06:19:28 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Properly test for output operand
+ when changing RELOAD_FOR_OUTPUT_ADDRESS to RELOAD_FOR_INPUT_ADDRESS.
+
+ * combine.c (subst, case SUBREG): Handle paradoxical SUBREG of
+ constant.
+ (IF_THEN_ELSE): Add missing "else" and check for comparison
+ before calling reversible_comparison_p.
+
+ * c-typeck.c (output_init_elements): Use FIELD instead
+ of constructor_fields when doing alignment and sizing.
+ (output_pending_init_elements): Don't blow up when writing
+ other than first field put haven't written anything yet.
+ Update constructor_bit_index when we emit a skip.
+
+ * toplev.c (rest_of_compilation): Defer compilation of function
+ that were specified as inline, whether or not they actually were
+ inlined.
+
+ * alpha.h (OBJECT_FORMAT_COFF, EXTENDED_COFF, NM_FLAGS): Define.
+ * x-alpha: New file.
+
+ * combine.c (simplify_comparison): Can remove NOT on both operands
+ if we swap comparison code.
+
+ * rs6000.md: Insert some missing blank lines.
+
+ * alpha.c (output_{pro,epi}log): Use assemble_name to output
+ alpha_function_name.
+
+ * combine.c (simplify_comparison): Fix typos in last change.
+
+Sun Jan 23 05:59:31 1994 Per Bothner (bothner@cygnus.com)
+
+ * c-typeck.c (really_start_incremental_init): Save current elements
+ instead of clearing them.
+
+Sat Jan 22 15:50:29 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-typeck.c (c_expand_return): Issue a warning if returning
+ address of non-static local object.
+
+ * combine.c (if_then_else_cond): Don't do anything with COMPARE.
+ (simplify_comparison): Strip SIGN_EXTEND, NOT, or NEG when
+ both operands have it.
+
+ * combine.c (num_sign_bit_copies): Ifndef WORD_REGISTER_OPERATIONS,
+ ensure we don't do the wrong thing if X is narrower than MODE.
+
+Thu Jan 20 01:06:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (ASM_OUTPUT_SOURCE_LINE): Make the first source line stab
+ for each procedure special to avoid the need for nasty hacks in GAS.
+
+ * pa.md (iorscc): Fix typo.
+
+Wed Jan 19 19:35:37 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.h (ASM_GLOBALIZE_LABEL): Don't globalize function labels here.
+
+Mon Jan 17 16:38:16 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * xcoffout.c (xcoffout_begin_block): Don't emit a .bb for the
+ function level scope.
+ (xcoffout_end_block): Don't emit a .eb for the function level
+ scope.
+
+Sun Jan 16 14:29:31 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Alphabetize the list of machine-name aliases.
+ Add nh3000 and nh[45]000.
+ Delete duplicate clauses for hp9k2... and hp9k31...
+
+Sat Jan 15 18:06:45 1994 Torbjorn Granlund (tege@blues.cygnus.com)
+
+ * config/sparc/sparc.md (smulsi3_highpart): New pattern.
+ (umulsi3_highpart): New pattern.
+ * config/mips/mips.md (smulsi3_highpart): New pattern.
+ (umulsi3_highpart): New pattern.
+
+Thu Jan 13 18:54:27 1994 Jim Wilson (wilson@cygnus.com)
+
+ * iris3.h (CPP_SPEC): Define __SIZE_TYPE__, __PTRDIFF_TYPE__, and
+ __mips.
+ (SIZE_TYPE, PTRDIFF_TYPE): Delete.
+ * mips.c (dfhigh, dflow, sfhigh, sflow): New variables.
+ (mips_sw_reg_names): Consistently use $ as name prefix.
+ (large_int): Handle 64 bit constants.
+ (reg_or_0_operand, mips_const_double_ok): Don't examine
+ CONST_DOUBLE internals.
+ (mips_const_double_ok): Use REAL_VALUE_* macros.
+ (simple_memory_operand): Add 64 bit support. Only test
+ TARGET_GP_OPT to determine if doing gp optimizations. Pass
+ address not MEM to eliminate_constant_term. Use SMALL_INT.
+ (mips_fill_delay_slot): Add 64 bit support.
+ (mips_move_1word): Add 64 bit support. Don't examine CONST_DOUBLE
+ internals.
+ (mips_move_2words): Likewise.
+ (mips_address_cost): Pass address not MEM to
+ eliminate_constant_term. Use SMALL_INT.
+ (gen_int_relational): New variable mode. Add 64 bit support.
+ (gen_conditional_branch): Add 64 bit support.
+ (block_move_load_store, block_move_loop, block_move_call,
+ expand_block_move, output_block_move, function_arg_advance,
+ function_arg, function_arg_partial_nregs): Likewise.
+ (override_options): Clear MASK_GPOPT if threshold is zero or
+ negative. Set MASK_GPOPT if optimizing. Set mips_isa from -misa=
+ option, else from MIPS_ISA_DEFAULT if defined, else to 1. Make
+ default cpu depend on isa. Add cpus r4400, r4600, orion. Rewrite
+ TARGET_NAME_REGS support. Initialize dfhigh, dflow, sfhigh,
+ sflow. Add 64 bit support.
+ (print_operand): Use REAL_VALUE_* macros.
+ (mips_output_external): Don't depend on mips_section_threshold.
+ (make_temp_file): Define P_tmpdir when __MSDOS__. Malloc filename
+ string. Don't unlink temp file when __MSDOS__.
+ (mips_asm_file_start): Delete TARGET_NAME_REGS support.
+ (mips_asm_file_end): Unlike temp file when __MSDOS__.
+ (mips_declare_object): Don't test mips_sections_threshold.
+ (compute_frame_size, save_restore_insns, function_prologue,
+ mips_expand_prologue, function_epilogue, mips_expand_epilogue):
+ Add 64 bit support.
+ (function_epilogue): Correctly output `#' before .set volatile.
+ * mips.h (enum cmp_type): Add 64 bit support.
+ (enum processor_type): Add PROCESSOR_R4600.
+ (MASK_64BIT, TARGET_64BIT): New mask bit, to indicate 64 bit mode.
+ (HAVE_64BIT_P, OPTIMIZATION_OPTIONS): Delete.
+ (CPP_SPEC): Don't abort if not defined.
+ (CC1_SPEC): -mips1 and -mips2 imply -mfp32. -mips3 implies -mfp64.
+ (CPP_SPEC): Define __SIZE_TYPE__, __PTRDIFF_TYPE__, and __mips.
+ (BITS_PER_WORD, UNITS_PER_WORD, INT_SIZE_TYPE, LONG_TYPE_SIZE,
+ LONG_LONG_TYPE_SIZE, POINTER_SIZE, POINTER_BOUNDARY,
+ PARM_BOUNDARY, EMPTY_FIELD_BOUNDARY, HARD_REGNO_NREGS,
+ CONST_OK_FOR_LETTER_P, STACK_ARGS_ADJUST, FUNCTION_PROFILER,
+ TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT,
+ INITIALIZE_TRAMPOLINE, CASE_VECTOR_MODE, MOVE_MAX,
+ TRULY_NOOP_TRUNCATION, Pmode, FUNCTION_MODE,
+ ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT,
+ ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add 64 bit support.
+ (MAX_BITS_PER_WORD, MAX_UNITS_PER_WORD, UNITS_PER_FPREG,
+ MAX_INT_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE, MAX_LONG_TYPE_SIZE,
+ MAX_MOVE_MAX): Define.
+ (INDEX_REG_CLASS): NO_REGS not GR_REGS.
+ (CONST_DOUBLE_OK_FOR_LETTER_P): Don't examine CONST_DOUBLE
+ internals.
+ (PREFERRED_RELOAD_CLASS): Return CLASS if it isn't ALL_REGS.
+ (TRANSFER_FROM_TRAMPOLINE, ASM_OUTPUT_CASE_LABEL): Delete.
+ (REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_P): Redefine to 0.
+ (GO_IF_LEGITIMATE_ADDRESS): Delete redundant code0 == REG test.
+ (ENCODE_SECTION_INFO): Don't test mips_section_threshold.
+ (CONST_COSTS): CONST_INT have cost 0 not CONSTS_N_INSNS (0). Pass
+ address not MEM to eliminate_constant_term. Add 64 bit support.
+ (MEMORY_MOVE_COST, ASM_OUTPUT_DOUBLE_INT): Define.
+ (EXTRA_SECTIONS): Delete in_last_p1.
+ (SELECT_RTX_SECTION): Delete division by BITS_PER_UNIT.
+ (NO_BUILTIN_SIZE_TYPE, NO_BUILTIN_PTRDIFF_TYPE): Define.
+ (SIZE_TYPE, PTRDIFF_TYPE): Add 64 bit support.
+ * mips.md (cpu): Add r4600.
+ (define_function_unit): Correct numerous errors. Add r4600.
+ (adddi3*, subdi3*, mulsidi3, umulsidi3, negdi2*, one_cmpdl2*,
+ nordi2*, anddi2*, iordi3*, xordi3*, movdi*, ashldi3*, ashrdi3*,
+ lshrdi3*, seq, sne, sgt, sge, slt, sle, sgtu, sgeu, sltu, sleu,
+ indirect_jump, tablejump, call*, call_value*): Add 64 bit support.
+ (adddi3_internal_3, addsi3_internal_2, subdi3_internal_3,
+ subsi3_internal_2, muldi3, muldi3_internal, divmoddi4, udivmoddi4,
+ divdi3, moddi3, udivdi3, umoddi3, absdi3, ffsdi2,
+ negdi2_internal_2, anddi3_internal1, xordi3_immed, truncdisi2,
+ truncdihi2, truncdiqi2, zero_extendsidi2,
+ zero_extendsidi2_interal, zero_extendhidi2, zero_extendqidi2,
+ extendsidi2, extendhidi2, extendhidi2_internal, extendqidi2,
+ extendqidi2_insn, fix_truncdfdi2, fix_truncsfdi2, floatdidf2,
+ floatdisf2, fixuns_truncdfdi2, fixuns_truncdfsi2,
+ ashldi3_internal4, ashrdi3_internal_4, lshrdi3_internal4, cmpdi,
+ tstdi, branch_zero_di, branch_equality_di, seq_di_zero, seq_di,
+ sne_di_zero, sne_di, sgt_di, sge_di, slt_di, sle_di_const,
+ sle_di_reg, sgtu_di, sgeu_di, sltu_di, sleu_di_const, sleu_di_reg,
+ indirect_jump_internal1, indirect_jump_internal2,
+ tablejump_internal1, tablejump_internal2): New patterns.
+ (mulsi3): Add missing mips_move_1word parameter.
+ (mulsi3+1): Don't split on r4000.
+ (divmodsi4, udivmodsi4, udivsi3, umodsi3): Correct lengths.
+ (divsi3, modsi3, udivsi3, umodsi3): Allow constant operands.
+ (sqrtdf2, sqrtsf2): Correct type attribute.
+ (abssi2): Add mips2 support.
+ (movsi_unaligned, movsi_ulw, movsi_usw): Comment out.
+ (movsf, movdf): Use F not E.
+ (cmpdf, cmpsf, branch_fp*, s{eq,ne,lt,le,gt,ge}_[ds]f): Depend on
+ TARGET_HARD_FLOAT.
+ * va-mips.h: Add 64 bit support.
+
+Thu Jan 13 06:14:17 1994 Paul Eggert (eggert@twinsun.com)
+
+ * c-parse.in (maybe_attribute): Allow multiple __attribute__
+ clauses on a declaration.
+
+Thu Jan 13 06:01:09 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.h (REG_CLASS_CONTENTS): Fix problems with last word of
+ register set in some classes.
+
+ * a29k.h (MEMORY_MOVE_COST): New macro.
+
+Thu Jan 13 05:42:30 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * config.sub: Fix typo in -hiux* case.
+
+Wed Jan 12 13:25:12 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * dbxout.c (dbxout_range_type): If the range has a base type
+ (TREE_TYPE), emit it, even if that is some other integer type.
+
+Wed Jan 12 06:02:23 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h (MASK and TARGET): Change POWERPCSQR to PPCFPX to
+ describe both fsqrt and fsel.
+ (TARGET_SWITCHES): powerpc64 implies ppcfpx.
+ * rs6000.c (rs6000_override_options): Change POWERPCSQR to PPCFPX.
+ * rs6000.md (sqrtsf2, sqrtdf2): Change POWERPCSQR to PPCFPX.
+ (maxsf3, minsf3, maxdf3, mindf3): New patterns using fsel instruction.
+
+Tue Jan 11 19:14:31 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.c (output_prolog): Update debug reg map when
+ we have -mkernel-registers.
+
+ * fold-const.c (fold, truth_andor): Don't apply distributive
+ law when it would change evaluation order.
+ Clean up code a bit to improve flow.
+
+Mon Jan 10 19:37:27 1994 David Robinson (drtr@mail.ast.cam.ac.uk)
+
+ * expr.c (emit_move_insn_1): Call gen_realpart and gen_imagpart
+ instead of gen_lowpart and gen_highpart.
+ * function.c (assign_parms): Likewise.
+ * optabs.c: Remove redundant prototype for gen_highpart.
+
+Mon Jan 10 19:14:07 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * jump.c (comparison_dominates_p): NE is dominated by LT, GT, LTU
+ and GTU.
+
+Mon Jan 10 19:06:57 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (gen_{real,imag}part): Extract value from
+ CONCAT directly.
+ (gen_lowpart_common, gen_highpart): Don't do it here.
+
+ * cse.c (simplify_relational_operation): Don't do anything with CC0
+ in addition to MODE_CC values.
+
+ * expr.c (protect_from_queue): If (MEM (QUEUED ...)), modify a
+ new MEM instead of the one we were passed.
+
+ * i386/linux.h: Update banner, reformat comments.
+ (STARTFILE_SPEC, GPLUSPLUS_INCLUDE_DIR): No longer conditional
+ on CROSS_COMPILER.
+ * Makefile.in (gcc.o, cccp.o): No longer define TOOLDIR.
+
+ * regclass.c (globalize_reg): New function.
+ (init_reg_sets_1): Don't handle global regs here.
+ * varasm.c (make_decl_rtl): Call globalize_reg, not init_reg_sets_1.
+
+ * a29k.c (print_operand, case 'F'): If we have to do the last
+ prolog insn, give that priority for an unfilled delay slot.
+
+ * function.c (preserve_rtl_expr_result): New function.
+ * expr.c (exand_expr, case RTL_EXPR): Call it.
+
+Mon Jan 10 13:43:04 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sched.c (new_insn_dead_notes): Compare registers with rtx_equal_p.
+
+ * Makefile.in (Makefile, stmp-fixinc, deduced.h, stmp-fixproto):
+ Execute shell scripts with $(SHELL).
+ * config/x-lynx (SHELL): Define to /bin/bash.
+
+Sun Jan 9 22:31:00 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (special indexed fpstores): Fix assorted typos.
+
+Sun Jan 9 04:34:17 1994 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * jump.c (follow_jumps): Don't follow tablejumps.
+
+ * Makefile.in (install-headers-cpio): Run cpio in include-dir.
+
+Sat Jan 8 14:54:06 1994 Doug Evans (dje@cygnus.com)
+
+ * toplev.c (rest_of_compilation): jump_optimize can change max_reg_num
+ so rerun reg_scan before calling cse_main.
+
+Fri Jan 7 20:34:14 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * config/alpha/alpha.h (RTX_COSTS): Return actual costs for
+ multiplication.
+
+Tue Jan 4 13:44:09 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sdbout.c (sdbout_symbol): Handle variables at zero offset from
+ frame pointer.
+
+Tue Jan 4 07:35:05 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (substitute_expr): Don't abort for RTL_EXPR and
+ SAVE_EXPR; just do nothing.
+
+Tue Jan 4 00:52:15 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (andsi3): Use "?" instead of "!" to avoid losing
+ in some cases.
+
+Mon Jan 3 16:59:34 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * jump.c (thread_jumps): Don't thread to loop label;
+ create new label before loop instead.
+ (thread_jumps): Rename argument `verbose' -> `flag_before_jump'.
+ * toplev.c (rest_of_compilation): Pass 1 for flag_before_jump
+ first time we call thread_jumps.
+
+ * c-typeck (build_binary_op, case *_DIV_EXPR): Use same shorten
+ condition as for *_MOD_EXPR.
+
+Mon Jan 3 08:00:16 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (truth_value_p): New function.
+ (fold): Use it to see when we should make a TRUTH_{AND,OR}_EXPR.
+ (fold, case TRUTH_{AND,OR,ANDIF,ORIF}_EXPR): Use distributive
+ law on expressions such as (A && B) || (A && C).
+
+Sun Jan 2 08:14:38 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_relational_operation): Correct declaration of
+ variables holding parts of constants.
+
+Fri Dec 31 06:27:57 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * toplev.c (main): Turn on -fomit-frame-pointer if it is safe.
+ Add -O3, which turns on -finline-functions.
+ * a29k.h, alpha.h, clipper.h, h8300.h, m88k.h, pa.h, romp.h, rs6000.h:
+ Define CAN_DEBUG_WITHOUT_FP; delete OPTIMIZATION_OPTIONS.
+ * sh.h, sparc.h: Likewise.
+ * arm.h: Delete OPTIMIZATION_OPTIONS.
+ * h8300.h: Define NO_FUNCTION_CSE and CAN_DEBUG_WITHOUT_FP;
+ delete OVERRIDE_OPTIONS.
+ * i960.h (OPTIMIZATION_OPTIONS): Just turn on machine-specific opts.
+ (CAN_DEBUG_WITHOUT_FP): Define.
+ * mips.h (CAN_DEBUG_WITHOUT_FP): Define.
+ (OPTIMIZATION_LEVELS): Just set MASK_GPOPT.
+
+ * cse.c (simplify_relational_operation): Rewrite and simplify.
+ Add case when we can simplify A-B for compare of A and B.
+
+ * combine.c (added_links_insn): New variable.
+ (distribute_links): Set it.
+ (if_then_else_cond): New function.
+ (try_combine): Return added_links_insn if it is earlier than what
+ we would otherwise return.
+ (subst): Generalize (OP X Y) to call if_then_else_cond
+ instead of only checking for an explicit IF_THEN_ELSE.
+ (subst, case IF_THEN_ELSE): When converting to a MULT, simplify
+ the MULT before putting it into OP.
+ (subst, case AND): Don't make IF_THEN_ELSE here; now made in
+ generic case earlier.
+
+ * combine.c (force_to_mode): Add new parm JUST_SELECT; all
+ callers changed.
+
+Wed Dec 29 18:05:00 1993 Leonid Baraz (lbaraz@iil.intel.com)
+
+ * fold-const.c (fold, case PLUS_EXPR): Add a missing test of
+ flag_fast_math.
+
+Wed Dec 29 06:52:07 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_binary_operation, case MULT): Don't convert
+ to ASHIFT if still generating RTL.
+
+Mon Dec 27 22:15:55 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Do not fix <sundev/ipi_error.h>, because SunOS
+ sed can not handle the very large macro it contains.
+
+Mon Dec 27 06:28:48 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (maxsf3, minsf3): Correct numerous errors.
+
+ * combine.c (subst, case MINUS): Allow some FP simplifications
+ if -ffast-math.
+ (reversible_comparison_p): FP comparisons reversible with -ffast-math.
+ * cse.c (simplify_binary_operation, fold_rtx): Allow some FP
+ simplications with -ffast-math.
+ (simplify_relational_operation): FP comparisons can be reversed
+ if -ffast-math is specified.
+ * fold-const.c (fold): Simplify more FP ops if -ffast-math.
+ * jump.c (can_reverse_comparison_p): Return 1 if -ffast-math.
+ * loop.c (get_condition): Can reverse comparison if -ffast-math.
+
+ * alpha.c (ior_operand): New function.
+ * alpha.h (PREDICATE_CODES): Add ior_operand.
+ * alpha.md (iordi3): Use ornot for some constant cases.
+
+Sun Dec 26 07:55:26 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (do_tablejump): Call emit_cmp_insn with likely-constant
+ as second operand.
+
+ * jump.c (jump_optimize): When deleting an insn after a jump,
+ update reallabelprev since it might point to the deleted insn.
+
+ * cse.c (count_reg_usage): Don't count a register used within
+ a SET that sets it.
+ (delete_dead_from_cse): Pass new parm to count_reg_usage.
+
+ * cse.c (fold_rtx, case PLUS): If we have (plus A B), A is
+ equivalent to a negative constant, and the negated constant is in
+ register, convert to (minus A C) where C is the register containing
+ the negated constant.
+
+Sat Dec 25 23:47:01 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (DBX_BLOCKS_FUNCTION_RELATIVE): Define.
+ (ASM_OUTPUT_SOURCE_LINE): Likewise.
+ (DBX_FUNCTION_FIRST): Likewise.
+
+ * pa.h (FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM): Change to %r3
+ for compatability with HP compilers.
+
+ * pa.h (READONLY_DATA_SECTION): Re-enable use of $LIT$.
+
+Sat Dec 25 06:05:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (gen_reg_rtx): Only clear part of arrays we aren't
+ going to copy into.
+
+ * expr.c (expand_expr, case CONSTRUCTOR): If have a target,
+ don't build constructor into memory.
+
+ * expr.c (expand_expr, case ARRAY_REF): Remove uses of *_type_node
+ and simplify folding a reference to a character in a STRING_CST.
+
+ * a29k.c, a29k.h: Rename R_ACC to R_ACU to not conflict with access.h.
+
+ * m68k/crds.h (HAVE_VPRINTF): Delete from here.
+ * m68k/xm-crds.h (HAVE_VPRINTF): Define.
+ * m68k/dpx2.h (USG): Delete from here (already in xm.h file).
+
+ * print-tree.c (print_node, print_node_brief): Say something
+ when TREE_CONSTANT_OVERFLOW is set.
+
+ * loop.c (check_dbra_loop): Fix error in previous change.
+
+ * combine.c (set_nonzero_bits_and_sign_copies, nonzero_bits):
+ Fix errors in SHORT_IMMEDIATES_SIGN_EXTEND code.
+
+ * alpha.h (FUNCTION_ARG): Pass complex float in float regs.
+
+ * fold-const.c (fold, case EQ_EXPR, NE_EXPR): If COMPLEX_TYPE
+ and at least one arg is a COMPLEX_EXPR, split into a logical
+ operation on the real and imaginary parts.
+
+ * c-typeck.c (common_type): For COMPLEX_TYPE, return one of the
+ original types if is the desired common type.
+ (build_binary_op): Use SHORT_COMPARE code even if complex.
+
+ * c-decl.c (grokdeclarator): Properly validate __complex__ and
+ create the various kinds of complex integer types.
+
+ * cse.c (simplify_unary_operations): Check that operations really
+ are double-word before doing them.
+
+Fri Dec 24 15:21:16 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * cccp.c (read_name_map, read_filename_string, open_include_file):
+ New functions.
+ (struct file_name_list): New members: name_map, got_name_map.
+ (main, path_include, do_include, do_once): Set got_name_map.
+ (do_include): Use open_include_file instead of open. Add new
+ parameter to lookup_import calls.
+ (lookup_import): New parameter searchptr. Call open_include_file
+ instead of open.
+
+ * expr.c (convert_modes): Can't truncate REG with gen_lowpart if
+ TRULY_NOOP_TRUNCATION doesn't allow it.
+
+Fri Dec 24 14:36:53 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * cse.c (cse_insn): Set "cse_jumps_altered" when collapsing
+ a switch statement into an unconditional jump.
+ * toplev.c (rest_of_compilation): Rerun jump_optimize
+ before the second CSE pass.
+
+Fri Dec 24 05:34:38 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_binary_operation, case PLUS, MINUS):
+ Simplify such things as (X >> 1) - X.
+
+ * alpha.md (define_attr type): Add new type ISUBR.
+ (divmod): Set to type ISUBR.
+ * alpha.c (output_prolog): Need GP if type ISUBR.
+
+ * reload.c (push_reload, find_reloads): Reload inside a paradoxical
+ SUBREG of MEM except don't force a reload unless the inner mode
+ is narrower than BIGGEST_ALIGNMENT.
+
+ * c-typeck.c (check_init_type_bitfields): Check recursively inside
+ arrays and records.
+
+ * c-parse.in (attrib): Allow expressions instead of constants.
+ * c-common.c (decl_attribute): Verify that alignment and format
+ argument numbers are all integer constants.
+ Continue on to next attribute if one is in error.
+
+ * cse.c (simplify_binary_operation): Can fold multi-word
+ operations when first is CONST_INT.
+ (simplify_binary_operation, case PLUS, MINUS): Don't call
+ plus_constant when OP0 is VOIDmode.
+
+ * c-typeck.c (pop_init_level): Don't abort if have incomplete array
+ type inside some other type.
+
+Thu Dec 23 22:06:21 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * jump.c (thread_jumps): Delete redundant loop termination test.
+
+ * cse.c (simplify_binary_operation, case *SHIFT*): Reduce arg1 as
+ defined by SHIFT_COUNT_TRUNCATED.
+
+ * config/pa/pa.c (Several places): Declare values from INTVAL(x) as
+ HOST_WIDE_INT.
+ (uint32_operand): New function.
+ (output_block_move): Change unroll threshold from 64 to 32.
+ (compute_movstrsi_length): Corresponding change.
+ (print_operand): Don't call debug_rtx, just abort.
+
+ * config/pa/pa.h (FUNCTION_INCOMING_ARG): Delete definition.
+ (RTX_COSTS) [PLUS]: Rewrite.
+ (output_scc_insn): Delete.
+ (output_floatsisf2): Delete.
+ (output_floatsidf2): Delete.
+ (PREDICATE_CODES): Define, but leave within #if 0 for now.
+
+ * config/pa/pa.md (iorscc): New recognizer.
+ 2 new recognizers for sub;subb. 1 new recognizer for addi;subb.
+ (movstrsi): Remove predicates. Set inline threshold to 8.
+ (umulsidi3): Change predicates to nonimmediate_operand.
+ New recognizer for multiply-by-immediate.
+ (andsi3): Add `!' for register alternative.
+ (vdepi_ior, vdepi_and): New recognizers.
+ (vextru rx,1,ry, vextrs rx,1,ry): New recognizers.
+
+ * config/pa/pa.c (initialize_pic): Delete.
+ (finalize_pic): Use PIC_OFFSET_TABLE_REGNUM rather than 19.
+ * config/pa/pa.h (CONDITIONAL_REGISTER_USAGE): Never make
+ PIC_OFFSET_TABLE_REGNUM fixed.
+ (INITIALIZE_PIC): Delete.
+ * config/pa/pa.md (call, call_value): If PIC, emit USE for for
+ PIC_OFFSET_TABLE_REGNUM. Use PIC_OFFSET_TABLE_REGNUM rather than 19.
+
+Thu Dec 23 18:51:12 1993 Jim Wilson (wilson@cygnus.com)
+
+ * local-alloc.c (optimize_reg_copy_1): After decreasing sregno's
+ reg_live_length, correct it if it is now obviously too small.
+
+ * loop.c (check_dbra_loop): Don't reverse loop if there is a
+ single memory store to an invariant address.
+
+ * gcc.c (translate_options): Skip arguments of -B, -b, -V, -x,
+ and -Xlinker options.
+
+ * configure (riscos-*-*): Use fixincludes instead of fixinc.mips.
+ * fixinc.mips: Delete file.
+ * fixincludes: Merge in changes from fixinc.mips. Fix identifiers
+ host_mips, mips, MIPSE[LB], R[34]000, SYSTYPE_*. Fix size_t uses
+ in stddef.h, memory.h, unistd.h. Fix /**/ in bsd43/bsd43_.h.
+
+Thu Dec 23 18:28:02 1993 Richard Earnshaw (rwe11@sticte.cl.cam.ac.uk)
+
+ * expmed.c (expand_mult): Preserve useful sub-expressions when
+ expanding a synthesized mult.
+
+Thu Dec 23 18:21:34 1993 Russ Noseworthy (jrnosewo@ral.rpi.edu)
+
+ * configure (m68k-wrs-vxworks): New, same as m68k-sun-sunos*.
+
+Thu Dec 23 09:03:30 1993 Phil Nelson (phil@cs.wwu.edu)
+
+ * ns32k.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use .long, not .double.
+
+Thu Dec 23 07:30:24 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (libgcc.a): Allow chmod of tmpcopy directory to
+ fail since it can be empty.
+
+ * gcc.c (default_compilers, gnat1): Don't write -gnatb.
+
+ * c-common.c (T_ST): Fix typo in last change.
+
+ * expr.c (expand_expr, case MINUS_EXPR): When expanding an
+ initializer, use plus_constant as appropriate.
+
+ * collect2.c (main): When searching compiler directories,
+ look for ld_suffix, not full_ld_suffix.
+
+ * a29k/unix.h (TARGET_DEFAULT): Update to use new values.
+
+ * Makefile.in (GCC_CFLAGS): Add -I./include.
+
+Thu Dec 23 06:57:39 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * Makefile.in (ENQUIRE_CFLAGS): Omit -DNO_STDDEF.
+ (USE_ALLOCA): Allow ${ALLOCA} to begin with a dash.
+ (OBJC, OBJECTIVE-C): Depend on objc-runtime.
+ (objc-headers): Make include directory if missing.
+
+ * xm-svr3.h (HAVE_VPRINTF): Define.
+
+ * cse.c (delete_reg_equiv): Don't reference elements of
+ REG_{NEXT,PREV}_EQV that are not defined.
+
+Wed Dec 22 14:21:49 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_parms): For parameter passed by invisible
+ reference, use DECL_INCOMING_RTL if DECL_RTL is a pseudo-reg address.
+
+ * xcoffout.h (DBX_FINISH_SYMBOL): Get variable name from DECL_RTL
+ instead of from DECL_ASSEMBLER_NAME.
+
+ * sched.c (priority): Handle INSN_DELETED_P insns, in addition to
+ insns which were deleted by being turned into notes.
+
+ * expr.c (expand_expr, NEGATE_EXPR case): Use subtarget in
+ recursive call, not target.
+
+ * fixproto (required_unistd_h): Delete getgroups from list.
+
+ * fix-header.c (missing_extern_C_count): Ifdef out.
+ (write_lbrac, recognized_function, read_scan_file, write_rbrac):
+ Likewise.
+
+ * cccp.c (main): Cast alloca result to char * to avoid warning.
+
+ * unroll.c (find_splittable_givs): For rewritting illegal init
+ insn, use force_operand instead of emit_iv_add_mult.
+
+Wed Dec 22 13:44:17 1993 Ron Guilmette (rfg@netcom.com)
+
+ * tree.c (chainon): Detect more circularities.
+
+ * enquire.c (main): Move declarations of SIZE and TOTAL to
+ where they won't cause "unused" warnings when NO_MEM is defined.
+ (promotions): Explicitly declare return type (to avoid warnings).
+ Always return a value.
+
+Wed Dec 22 13:39:40 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * Makefile.in (gcc.o): Define DEFAULT_TARGET_VERSION.
+ * gcc.c (compiler_version): New variable.
+ (spec_version): Initialize from DEFAULT_TARGET_VERSION.
+ (main): Distinguish COMPILER_VERSION from TARGET_VERSION.
+ (process_command): Use COMPILER_VERSION for %v.
+ Guard against a COMPILER_VERSION that lacks a minor.
+
+Wed Dec 22 07:47:17 1993 Greg Gilley (ggilley@adobe.com)
+
+ * gcc.c (default_compilers): Treat ".cpp" as C++.
+ * cccp.c (main): Strip off ".cpp" extension.
+ * toplev.c (strip_off_ending): Likewise.
+
+Wed Dec 22 07:26:26 1993 Rafal Pietrak (Rafal_Pietrak@camk.edu.pl)
+
+ * Makefile.in (install-headers, install-headers-tar): Correctly
+ handle directories when $(libsubdir) is a relative path.
+
+Wed Dec 22 07:12:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-common.c (T_ST): New macro.
+ (scan_char_table): With s, c and [, allow `a' flag.
+ (print_char_table): Accept Z and m codes.
+ (check_format_info): Handle the `a' flag.
+
+Tue Dec 21 21:09:38 1993 Rainer Orther (ro@TechFak.Uni-Bielefeld.de)
+
+ * fixincludes (rpc/auth.h, rpc/xdr.h): Declare structures before
+ using them in prototypes, for Irix 4.0.5.
+ (rpc/rpc.h): Avoid a nested comment on Ultrix 4.3.
+
+Tue Dec 21 18:41:36 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * configure (cpp_md_flags): Rename to md_cppflags.
+ (MD_CPP, MD_DEPS): Set appropriately for native or cross build.
+ (MD_FILE): Edit in place.
+ * Makefile.in (MD_FILE rule): Depend on $(MD_DEPS). Invoke $(MD_CPP).
+
+Tue Dec 21 17:37:20 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
+ (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
+
+Tue Dec 21 13:25:39 1993 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Also pass Pascal arrays
+ by reference.
+
+ * sched.c (sched_analyze): For CALL_INSN followed by
+ NOTE_INSN_SETJMP note, make it depend on all registers not just
+ hard registers, and add a REG_DEAD -1 note.
+ (unlink_notes): Don't save away NOTE_INSN_SETJMP notes.
+ (schedule_block): After scheduling CALL_INSN, check for REG_DEAD
+ -1 note. If find it, delete it, and output a NOTE_INSN_SETJMP note.
+
+ * rtlanal.c (replace_regs, case REG): Return copies of SUBREGs, to
+ avoid invalid sharing.
+
+Tue Dec 21 13:07:14 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (output_function_prologue): Use ASM_GENERATE_INTERNAL_LABEL
+ rather than generating one on its own.
+
+ * pa.h (ASM_GENERATE_INTERNAL_LABEL): Always use L$ as the prefix
+ for internal labels.
+ (ASM_OUTPUT_INTERNAL_LABEL): Likewise.
+
+Mon Dec 20 19:10:16 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-typeck.c (struct initializer_stack): New field ELEMENTS.
+ (start_init, finish_init): Save and restore constructor_elements.
+
+ * emit-rtl.c (gen_lowpart_common): Return a new hard reg even
+ if not valid in MODE if the input REG is not valid in its mode.
+
+ * rs6000.md (divsi3): Correct logic for when we call force_reg.
+ (modsi3): Ensure operands[2] is a CONST_INT; include REG in
+ predicate.
+
+Thu Dec 16 16:14:53 1993 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.c (compute_frame_size): Remove implicit assumption that %r4
+ is the frame pointer.
+
+ * pa.c (output_function_prologue): Reverse last change. Output
+ both the function label and the .PROC here.
+
+ * pa.h (ASM_DECLARE_FUNCTION_NAME): Do not output the function
+ label or the .PROC here.
+
+Thu Dec 16 11:34:48 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Do not preserve _HIDDEN_VA_LIST in stdio.h.
+
+Wed Dec 15 13:48:25 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (flag_conserve_space): New language specific flag to
+ tell the compiler to use .common when possible. Reduces the size of
+ .o files.
+ * cp-decl.c (duplicate_decls): Copy DECL_COMMON from the olddecl.
+ * cp-decl.c (start_decl): Set DECL_COMMON appropriately.
+ * cp-decl.c (finish_decl): Use flag_conserve_space, instead of
+ flag_no_common.
+ * cp-decl2.c (flag_conserve_space, lang_f_options): New flag.
+ * toplev.c (lang_options): New -fconserve-space flag.
+ * tree.h (DECL_COMMON): New flag.
+ * tree.h (tree_decl): New common_flag.
+ * varasm.c (assemble_variable): Use DECL_COMMON to help determine if
+ an object can be put in .common.
+ * c-decl.c (start_decl): Set DECL_COMMON to 1.
+
+Wed Dec 15 19:04:55 1993 Conrad Kimball (cek@sdc.boeing.com)
+
+ * Makefile.in (cccp.o, stmt-proto): Use $(includedir).
+
+Wed Dec 15 18:44:03 1993 Leonid Baraz (lbaraz@iil.intel.com)
+
+ * tree.c (copy_node): Handle length of INTEGER_CST like make_node.
+
+Wed Dec 15 18:37:29 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * final.c (profile_function): Set ALIGN properly.
+
+ * protoize.c: Remove declarations of setjmp and longjmp.
+
+Wed Dec 15 18:31:01 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-typeck.c (missing_braces_mentioned): Renamed from
+ `partial_bracket_mentioned'.
+ (start_init): Clear `missing_braces_mentioned'.
+ (warning_init): New function.
+ (push_init_level): Optionally warn about missing braces.
+ When warning about braces around scalars, identify which scalars.
+
+Wed Dec 15 18:21:29 1993 Richard Henderson (richard@viz.tamu.edu)
+
+ * mips/iris3.h (LIB_SPEC): Use shared libc when not profiling,
+ not debugging, and no "-static".
+
+Wed Dec 15 18:14:31 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * expr.c (expand_builtin): Allow __builtin_next_arg to be used
+ in varargs functions.
+
+Wed Dec 15 18:09:57 1993 Kaveh R. Ghazi (ghazi@noc.rutgers.edu)
+
+ * Makefile.in (gnucompare, gnucompare3): New targets.
+
+Tue Dec 14 00:19:44 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (output_call): Put temporary label after the
+ RP adjustment. "- 8" adjustment is no longer necessary.
+
+ * x-pa (CC): Do not use absolute path to gcc.
+
+ * pa.c (output_function_prologue): Do not output the .PROC directive
+ here.
+
+ * pa.h (ASM_DECLARE_FUNCTION_NAME): Emit the .PROC immediately
+ after the function's label.
+
+ * pa.h (ASM_FILE_START): Emit a .file directive at the beginning
+ of the output file if debug symbols are being generated.
+
+ * pa.h (MAX_OFILE_ALIGNMENT): Define appropriately for the PA.
+
+ * pa-ghiux.h (TARGET_DEFAULT): Enable TARGET_JUMP_IN_DELAY and
+ TARGET_GAS.
+ * pa1-ghiux.h (TARGET_DEFAULT): Likewise.
+
+ * pa-ghpux.h (TARGET_DEFAULT): Enable TARGET_JUMP_IN_DELAY.
+ * pa-gux7.h (TARGET_DEFAULT): Likewise.
+ * pa-utahmach.h (TARGET_DEFAULT): Likewise.
+ * pa.h (TARGET_DEFAULT): Likewise.
+ * pa1-ghpux.h (TARGET_DEFAULT): Likewise.
+ * pa1-utahmach.h (TARGET_DEFAULT): Likewise.
+ * pa1.h (TARGET_DEFAULT): Likewise.
+
+ * pa.h (LEGITIMATE_CONSTANT_P): Remove hack for function addresses.
+ * pa.c (secondary_reload_class): Function addresses no longer
+ need secondary reloads.
+ (emit_move_sequence): Special handling of function addresses is
+ no longer needed.
+ * pa.md (lo_sum of a function address): Use short form as we have
+ no intention of supporting MPE external calls.
+
+Mon Dec 13 20:58:58 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst, case MINUS): Canonicalize (minus A (plus A B)).
+
+Mon Dec 13 19:09:42 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * mips/iris4.h (ASM_OUTPUT_ASCII): Wrap in `do { ... } while (0)'.
+ * clipper/clix.h, fx80/fx80.h, i860/bsd.h, m68k/3b1.h: Likewise.
+ * m68k/amix.h, m68k/crds.h, m68k/hp320.h, m68k/m68kv4.h: Likewise.
+ * m68k/mot3300.h, m68k/sgs.h, m68k/tower-as.h: Likewise.
+ * ns32k/encore.h, tahoe/harris.h, tahoe/tahoe.h: Likewise.
+ * vax/vaxv.h,we32k/we32k.h: Likewise.
+
+Mon Dec 13 03:28:02 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * configure (sparc-*-solaris2): Fix typo in extra_parts.
+
+Sun Dec 12 08:19:38 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cccp.c (main): Combine tests of single-character suffixes.
+ (deps_output): Different second parameter: SPACER determines
+ meaning of first argument (target, dependency, literal text).
+ Wrap output correctly.
+
+Sun Dec 12 07:54:07 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (type_hash_canon): Clean up obstack usage a bit.
+
+ * recog.c (indirect_operand): Verify mode of OP is correct.
+
+ * calls.c (expand_call, store_one_arg): Properly push and pop
+ temporary level around expression evaluations.
+
+ * configure: Handle EXTRA_PARTS and EXTRA_OBJS like the others.
+ (i[34]86-*-osfrose*): Replace t-osfrose with extra_objs assignment.
+ (i[34]86-*-sco*): Likewise for t-sco.
+ (i[34]86-*-isc*): Likewise for t-isc.
+ (i[34]86-ibm-ai*): Likewise for t-aix.
+ (i[34]86-*-solaris2, i860-alliant-*): Add extra_parts.
+ (sparc-*-solaris2*, m88k-*): Likewise.
+ (mips-dec-osfrose*): Add extra_objs.
+ (clipper-intergraph-clix*): Replace t-clix with extra_headers and
+ extra_parts.
+ * Makefile.in (halfpic.o): New rule; copied from t-osfrose.
+ * h8300/t-h8300: Delete null LIB2FUNCS_EXTRA.
+ * i386/t-sol2, i860/t-fx2800, m88k/t-dgux-gas: Delete EXTRA_PARTS.
+ * m88k/t-dgux, m88k/t-m88k, m88k/t-sysv4, sparc/t-sol2: Likewise.
+ * m88k/t-luna: Don't require bash.
+ * mips/t-osfrose: Delete EXTRA_OBJS and halfpic.o rule.
+ * clipper/t-clix, i386/t-aix, i386/t-isc, i386/t-osfrose, i386/t-sco:
+ Deleted; no longer needed.
+
+Sun Dec 12 06:47:14 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Version 2.5.7 released.
+
+Sun Dec 12 06:18:33 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * function.c (thread_prologue_and_epilogue_insns): When constructing
+ USE chain, set both NEXT_INSN and PREV_INSN links. Also, preserve
+ order of USE insns in chain.
+
+Sun Dec 12 06:13:51 1993 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: Update to relect recent changes elsewhere.
+ * objc/makefile.dos: Likewise.
+
+Sat Dec 11 18:09:50 1993 Per Bothner (bothner@cygnus.com)
+
+ * dbxout.c (dbxout_type): The "base type" of a SET_TYPE is its
+ DOMAIN_TYPE, not its TREE_TYPE.
+ * dwarfout.c (output_type): Likewise.
+
+Sat Dec 11 07:36:57 1993 David Rifkind (dave@yarc.com)
+
+ * rs6000.md: Add a few missing new nmemonics.
+
+Sat Dec 11 06:57:55 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cccp.c (INPUT_STACK_MAX): Double size.
+
+ * integrate.c (initialize_for_inline): Handle CONCAT when setting up
+ parmdecl_map.
+
+ * rs6000.md (modsi3): Reject REG in predicate to avoid undefined
+ reference and extra pseudo creation if will fail.
+
+Fri Dec 10 10:03:36 1993 Mike Stump (mrs@cygnus.com)
+
+ * toplev.c (lang_options): Change -fnodollars-in-identifiers to
+ -fno-dollars-in-identifiers to match docs.
+
+Fri Dec 10 15:42:02 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * c-lex.c (yylex): When reading malformed floating point constant,
+ avoid printing error more than once, and avoid passing malformed
+ number to subsequent atof call.
+
+Fri Dec 10 06:03:35 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (easy_fp_constant): Use input_operand to see if
+ each word can be loaded in one insn.
+
+ * rs6000.md: Change numerous occurrences of TARGET_POWERPC
+ to ! TARGET_POWER and make related changes.
+
+ * rs6000.md (modsi3): Rework to operate correctly for both POWER
+ and PowerPC.
+
+Thu Dec 9 16:19:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
+ NO_{DOLLAR,DOT} macro checks, so it always gets defined.
+ (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
+
+Wed Dec 8 05:46:26 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (mark_used_regs, case CLOBBER): Refine previous change
+ to just look at the address of a MEM inside a CLOBBER.
+
+ * fold-const.c (fold, case *_{DIV,MOD}_EXPR): When using
+ distributive law, take care when C2 is negative.
+
+Tue Dec 7 08:45:59 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (mark_used_regs): Look inside a CLOBBER; it may be the only
+ place regs are used if it has a stack slot that is from an inlined
+ function.
+
+Mon Dec 6 20:56:11 1993 David Rifkind (dave@yarc.com)
+
+ * expr.c (move_block_{to,from}_reg): Check HAVE_{load,store}_multiple
+ value; don't just #idef the symbol.
+
+Mon Dec 6 08:01:59 1993 Torbjorn Granlund (tege@cygnus.com)
+
+ * pa.c (hppa_legitimize_address): If we can't legitimize,
+ do nothing; don't call abort.
+
+Mon Dec 6 07:38:30 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c (output_ascii_pseudo_op): 8-bit chars should be zero-extended.
+ * arm.h (ASM_OUTPUT_ASCII): Likewise.
+
+Mon Dec 6 07:32:59 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * objc/encoding.h: Include ctype.h.
+
+ * expr.c (expand_expr, case PLACEHOLDER_EXPR): Remove top entry
+ from PLACEHOLDER_LIST when expanding the value in it.
+
+Mon Dec 6 05:40:38 1993 Doug Evans (dje@cygnus.com)
+
+ * emit-rtl.c (start_sequence): Save current sequence_rtl_expr.
+
+Fri Dec 3 07:07:01 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Version 2.5.6 released.
+
+ * c-typeck.c (c_expand_return): Return if convert_for_assignment
+ returns error_mark_node.
+
+Fri Dec 3 06:42:05 1993 Arne Henrik Juul (arnej@fm.unit.no)
+
+ * fixincludes (stdio.h): Fix typos (missing quote) in previous change.
+
+Fri Dec 3 06:35:57 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * gstddef.h: Define and protect against __STDDEF_H__ for Irix 5.1.
+
+ * sparc.c (shift_operand): Delete function.
+ * sparc.md (ashlsi3, ashrsi3, lshrsi3): Use arith_operand instead
+ of shift_operand. Truncate shift counts to 5 bits.
+
+Thu Dec 2 08:11:00 1993 Stefan Rapp (sr@irb.informatik.uni-dortmund.de)
+
+ * loop.c (scan_loop): Correct arguments for register check.
+
+Thu Dec 2 07:07:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * fixincludes: Preserve _HIDDEN_VA_LIST when changing VA_LIST to
+ DUMMY_VA_LIST. Change __va_list to __gnuc_va_list. For AIX
+ 3.2.5.
+
+Thu Dec 2 07:00:24 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (push_topmost_sequence, end_sequence): Update
+ sequence_rtl_expr from sequence_stack entry.
+
+ * calls.c (emit_library_call): Use Pmode, not OUTMODE, when passing
+ in structure address.
+
+ * a29k.c (secondary_reload_class): Kernel regs are in same class
+ as user regs.
+
+ * a29k.md (movti split): Set CR to 3, not 1 like DImode.
+
+Thu Dec 2 06:46:07 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * reload.c (find_reloads_toplev): Replace obsolete reference to
+ BYTE_LOADS_*_EXTEND with LOAD_EXTEND_OP.
+
+Thu Dec 2 06:39:16 1993 Jeffrey A Law (law@snake.cs.utah.edu)
+
+ * pa.h (ASM_STABS_OP, ASM_STABN_OP): Define.
+ (ASM_FILE_END): Put a TAB before the .stabs directive.
+
+Thu Dec 2 06:30:17 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (define_function_unit): Restore ppc601 load and fpload
+ timings.
+
+Wed Dec 1 17:24:17 1993 Brendan Kehoe (brendan@mole.gnu.ai.mit.edu)
+
+ Wed Nov 24 06:36:10 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.c (get_decl_list): Use the DECL_NESTED_TYPENAME for the
+ value we're going to paste onto CLASSTYPE_ID_AS_LIST. This will get
+ the right name for nested classes, and for templates.
+
+ Mon Nov 29 13:09:31 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Properly evaluate TREE_PUBLIC for
+ friends. (Fixes spurious warnings about friends being declared
+ static but not used.)
+
+ * cp-type2.c (build_functional_cast): If we got an error_mark_node
+ from build_method_call, make sure EXPR_AS_METHOD is cleared out
+ again, so the later checks will work properly.
+
+ * cp-decl.c (build_enumerator): Fix logic so an enum inside a class
+ that's local to a function has its enumerators end up in that
+ class's list of members, not in the list for the function.
+
+Tue Nov 30 19:26:05 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * sparc.h (STATIC_CHAIN_REGNUM): Use %g2; %g1 is reserved
+ for prologue.
+ (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Swap useage of %g1
+ and %g2.
+
+ * m68k.md (movdf): Don't need earlyclobber when a register
+ is copied to itself.
+
+Sat Nov 27 06:19:22 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Version 2.5.5 released.
+
+ * c-typeck.c (pop_init_level): Ensure never on momentary_obstack
+ when calling complete_array_type.
+
+Sat Nov 27 03:52:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixproto (scanning files_to_check): Create subdirs files are in.
+
+ * config/m68k/m68k.md (cmpsi, cmphi, cmpqi): Handle SGS_CMP_ORDER
+ when outputting cmpm insn.
+
+Fri Nov 26 15:57:24 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Do define __GNUC_MINOR__ if input is `-'.
+
+Thu Nov 25 18:16:25 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.h (struct sequence_stack): New field sequence_rtl_expr.
+ (struct function): Likewise.
+ * emit-rtl.c: Include tree.h.
+ (sequence_rtl_expr): New variable.
+ (save_emit_status, restore_emit_status): Save and restore it.
+ (init_emit): Initialize it.
+ (start_sequence_for_rtl_expr): New function.
+ * function.c: Declare sequence_rtl_expr.
+ (struct temp_slot): New field rtl_expr.
+ (assign_stack_temp): Set it from sequence_rtl_expr.
+ ({free,pop}_temp_slots): Don't free any slot with nonzero rtl_expr.
+ (free_temps_for_rtl_expr): New function.
+ * expr.c (expand_expr, case RTL_EXPR): Call free_temps_for_rtl_expr.
+ * stmt.c (expand_start_stmt_expr): Call start_sequence_for_rtl_expr
+ instead of start_sequence.
+ * cp-parse.y (except_stmts): Likewise.
+ * cp-init.c (build_new): Likewise.
+ * cp-typeck.c (build_modify_expr): Likewise.
+ * Makefile.in (emit-rtl.o): Includes tree.h.
+
+Thu Nov 25 17:24:02 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (stmp-fixproto): Create include subdir if doesn't exist.
+
+Wed Nov 24 14:32:47 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * c-common.c (shorten_compare): Correct typo from last change.
+
+Wed Nov 24 13:25:09 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * protoize.c (save_def_or_dec): Correct typo in change of Nov 23. Make
+ sure pointers within def_dec_p are valid before it is freed.
+
+Wed Nov 24 07:02:50 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * expr.c (expand_expr, case ADDR_EXPR): Also pass const0_rtx if
+ necessary, to avoid multiple cleanup runs.
+ (expand_expr, case WITH_CLEANUP_EXPR): Pass const0_rtx if
+ necessary, to keep the recursive call from running the same
+ cleanups twice.
+ (expand_expr, case TARGET_EXPR): Don't try to add the cleanup if
+ ignore's non-zero, since we would have already done it.
+
+Tue Nov 23 21:10:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF C++ front-end merge.
+ Tue Nov 23 11:05:28 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-errfn.c (STRDUP): Cast return value of alloca to (char *).
+
+ Mon Nov 22 00:07:17 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (real_yylex): Move declaration of tmp inside the block
+ that uses it, so compilers don't try to mis-optimize it away.
+
+ * cp-search.c (dfs_pushdecls): Make sure there's a lang_specific
+ node on the decl before trying to print the warning out.
+
+ * cp-decl.c (grokdeclarator): Say the member was redeclared as
+ static, not just that it can't be declared static.
+
+ * cp-search.c (get_first_matching_virtual): Don't do
+ SET_IDENTIFIER_ERROR_LOCUS as an attempt to avoid multiple warnings
+ with -Woverloaded-virtual. It changes the compiler's behavior
+ (elicits unwanted errors).
+
+ Sat Nov 20 19:31:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (lang_type): Add field `has_nonpublic_ctor', and delete
+ dummy since we used the two bits it was holding out for the MIPS
+ compiler.
+ (TYPE_HAS_NONPUBLIC_CTOR): Defined.
+ * cp-class.c (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_CTOR
+ as appropriate for a copy ctor with non-public visibility.
+ (finish_struct): Don't generate a copy ctor if the type if one of
+ its fields has a private copy ctor, or a protected one for which we
+ aren't allowed access.
+ (base_info): Add member `saw_nonpublic_ctor'.
+ (finish_base_struct): Set b->saw_nonpublic_ctor if necessary.
+
+ * cp-method.c (hack_identifier): Make sure there's a
+ DECL_LANG_SPECIFIC before getting ready to grope around a class.
+
+ * cp-typeck.c (build_indirect_ref): Complain if we encounter a
+ pointer to member.
+
+ Fri Nov 19 16:37:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (start_decl): Complain when a function is declared as
+ part of a template definition, but the class it's supposed to be
+ part of wasn't a template.
+
+ * cp-decl.c (pushdecl): Don't warn about shadowing a member of
+ `this' if that member is static.
+
+ * cp-call.c (convert_harshness_old): Don't die if one of the types
+ isn't an aggregate with a binfo.
+ (convert_harshness_ansi): Likewise.
+
+ Fri Nov 19 12:18:31 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (convert_for_assignment): Fix typo so initialization
+ of a pointer from an integer actually work, rather than emit bogus
+ code.
+
+ * cp-pt.c (overload_template_name): Accept unions for templates.
+ (instantiate_class_template): Likewise.
+ * cp-parse.y (template_instantiate_once): Likewise.
+
+ * cp-lex.c (real_yylex): Instead of using the "shorts" method to
+ check for overflow, use the C front-end's "parts" method (to handle
+ any size, and not rely on long long being 32 bits wide).
+
+ Thu Nov 18 11:51:34 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-lex.c (cons_up_default_function): Disable earlier change; it
+ screws up stabs somehow. Very strange.
+
+ Thu Nov 18 00:16:29 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Say what class is involved when saying
+ we can't declare a member inside it.
+
+ * cp-lex.c (real_yylex): Recognize operator->() as POINTSAT, not
+ POINTSAT_LEFT_RIGHT. By swallowing the parens, we ended up never
+ building the call properly for them.
+ * cp-parse.y (POINTSAT_LEFT_RIGHT): Remove token.
+ (operator_name): Remove POINTSAT_LEFT_RIGHT rule.
+ * cp-spew.c (init_spew): Remove POINTSAT_LEFT_RIGHT from
+ toks_follow_ids.
+
+ * cp-parse.y (primary): Only try to print out the operator's name if
+ it's valid.
+
+ * cp-decl.c (grok_op_properties): Fix missing parens to keep the
+ logic from accidentally giving an error when it shouldn't.
+
+ Wed Nov 17 20:04:00 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-search.c (dfs_pushdecls): TREE_PURPOSE doesn't have to be
+ a _DECL for class_value to be an envelope, it just can't be an
+ IDENTIFIER_NODE.
+
+ Wed Nov 17 15:54:02 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-type2.c (process_init_constructor): Deal with pointers to
+ members as initializers for initializer lists.
+
+ Wed Nov 17 11:48:38 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-decl.c (ambi_op_p): Add ++ and --.
+
+ * cp-error.c: Lose the anon_parm_name stuff.
+
+ * cp-lex.c (cons_up_default_function): Change input_filename for
+ synthetic code.
+
+ * cp-error.c (dump_aggr_type): Always print const or volatile.
+ (dump_function_decl): Only print static if verbose.
+
+ * cp-errfn.c (cp_sprintf): New function.
+
+ * cp-decl.c (grokfndecl): Be more verbose in complaint about applying
+ method qualifiers to non-methods.
+
+ Wed Nov 17 09:51:04 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-parse.y (attrib): Accept "noreturn" attribute.
+
+ Tue Nov 16 12:28:49 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-decl2.c (grokoptypename): Fix handling of udc's.
+
+ * cp-method.c (build_component_type_expr): Ditto.
+
+ * cp-class.c (finish_struct_methods): Be more verbose in complaint
+ about overloaded operator delete.
+
+ * cp-decl.c (grok_op_properties): Do more checking on operators.
+ (grokdeclarator): Remove check for ops being members, fix handling
+ of user-defined conversions.
+ (grokfndecl): Remove checks for ops, move call to grok_op_properties
+ up.
+ (finish_decl): Remove check for ops with default arguments.
+ (ambi_op_p): New fn, name for either unary or binary op
+ (unary_op_p): New fn, checks name for unary op
+
+ Mon Nov 15 12:38:54 1993 Brendan Kehoe (brendan@rtl.cygnus.com)
+
+ * g++.c (main): If they gave us -v, also show the invocation of the
+ gcc driver.
+
+ Mon Nov 15 12:04:47 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Lose "operator <typename>".
+
+ * cp-method.c (build_component_type_expr): Ditto.
+
+ * cp-decl2.c (grokoptypename): Ditto.
+
+ Make C++ accept template parameters as type names; for example,
+ doing `template <class T, T t> A {...}'.
+
+ * cp-pt.c (end_template_parm_list): Fix a bug in gs4t's patch.
+ (grok_template_type): Simplify.
+
+ * cp-typeck.c (build_modify_expr_1): Give error if trying to
+ get default operator= for class where you can't.
+
+ * cp-decl.c (duplicate_decls): Uniformify, fix redeclaration of
+ builtins.
+
+ Sat Nov 6 19:06:25 EST 1993 Gnanasekaran Swaminathan (gs4t@virginia.edu)
+
+ * cp-pt.c (begin_template_parm_list): pushdecl here so that we
+ can push TEMPLATE PARAMETERS as type names.
+ (process_template_parm): build_lang_decl for TEMPLATE
+ PARAMETERS here.
+ (grok_template_type): New function. get the actual type of a
+ TEMPLATE PARAMETER.
+ (coerce_template_parms): delete pushdecl as it is moved (see
+ above). Don't build type decls for TEMPLATE PARAMETERS as it is
+ built above.
+
+ Mon Nov 15 12:04:47 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-decl.c (duplicate_decls): If a function has been declared with
+ explicit language linkage, redeclaring (or defining) it without
+ is OK.
+
+ Fri Nov 12 15:30:27 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-lex.c (operator_name_string): Fix handling of __ad__foo.
+
+ * cp-error.c (dump_decl): Handle demangling of vtable names.
+
+ * cp-tree.c (lang_printable_name): Pass everything to decl_as_string,
+ not just functions.
+
+ * cp-decl2.c (check_classfn): Use cp_error.
+
+ * cp-error.c (dump_decl): Fix IDENTIFIER_TYPENAME_P case.
+
+ * cp-method.c (build_decl_overload): Propagate IDENTIFIER_OPNAME_P
+ to mangled identifier.
+
+ * cp-type2.c (my_friendly_abort): Add "confusion" message for
+ abort after earlier errors.
+
+ Wed Nov 10 18:39:17 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-decl2.c (lang_decode_option): Include warn_enum_clash among
+ -Wall.
+
+ Wed Nov 10 16:18:19 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (stamp-cp-parse): Update counts.
+
+ Wed Nov 10 15:27:12 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-errfn.c (cp_thing): Allow cp_*_at to use an arbitrary argument,
+ not just the first, by using, for instance, `%+D'.
+
+ Mon Nov 8 13:50:49 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c (language_as_string): New function for printing language
+ context. Corresponds to %L.
+
+ Mon Nov 8 10:39:28 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-pt.c (reinit_parse_for_template): Use inline_text_obstack
+ instead of permanent_obstack so that yylex() doesn't clobber the
+ growing object.
+
+ * cp-lex.c (reinit_parse_for_block): Overhaul to reduce code size by
+ half and make #line directives in template definitions work.
+
+ Sun Nov 7 15:19:28 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-pt.c (instantiate_class_template): if (!setup_parse), don't
+ mess with lineno and input_filename.
+
+ Mon Nov 1 18:15:59 1993 Kung Hsu (kung@cirdan.cygnus.com)
+
+ * cp-cvt.c(convert_to_reference): Fix when pass ref to array as
+ initializer, the argument type is convert to pointer and the type
+ in the field of the class should also convert to pointer.
+
+ Fri Nov 5 11:57:41 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-pt.c (instantiate_template): Work properly with
+ -fexternal-templates.
+
+ * cp-lex.c (extract_interface_info): #if 0 out earlier
+ tinst_level work pending further work.
+
+ Fri Nov 5 07:39:00 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-search.c (compute_visibility): Don't lose access to public
+ members from base classes of base classes.
+
+ * cp-typeck.c (convert_for_assignment): Allocate enough space in
+ LHSBUF for the null terminiator.
+
+ Tue Nov 2 07:20:03 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-decl2.c (build_push_scope): Don't push the scope for
+ ptr-to-method declarations. Also, clarify some comments.
+
+ * cp-parse.y (abs_member_declarator): Add `see_typename' epsilon
+ rule so that parser can recognize ptr-to-member functions.
+
+ Mon Nov 1 18:15:59 1993 Kung Hsu (kung@cirdan.cygnus.com)
+
+ * cp-cvt.c(convert_to_reference): Fix when pass ref to array as
+ initializer, the argument type is convert to pointer and the type
+ in the field of the class should also convert to pointer.
+
+ Mon Nov 1 11:06:39 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-errfn.c: Don't include <string.h>.
+ Don't use the return value of strcpy.
+
+ Sun Oct 31 22:32:05 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-call.c (build_scoped_method_call): Return (void)0 if trying to
+ call a nonexistent destructor.
+
+ * cp-parse.y (object): Support p.~int().
+
+ * cp-error.c (dump_expr): Handle error_mark_node better.
+
+ Sat Oct 30 21:49:00 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-parse.y (primary): Support p->~int().
+
+ Fri Oct 29 18:09:12 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-type2.c (build_functional_cast): Don't delete things twice.
+
+ Thu Oct 28 15:35:55 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-tree.h (struct tinst_level): The template instantiation level
+ structure. Used by the code described below.
+
+ * cp-pt.c (push_tinst_level): New function for remembering file
+ context when instantiating templates. Stores the identifier as well,
+ for error reporting.
+ (pop_tinst_level): Da opposite.
+ (tinst_for_decl): Returns a pointer to the tinst_level structure to
+ use for determining which file to associate the current DECL with, or
+ NULL to use the current file and line. To restore the old behavior,
+ just change this function to "return 0;".
+ (instantiate_class_template): push_tinst_level.
+
+ * cp-parse.y (tmplate_instantiate_once): pop_tinst_level() after
+ instantiating member templates.
+
+ * cp-lex.c (extract_interface_info): If instantiating a template,
+ set up interface/implementation according to the spot in the user's
+ code that triggered the instantiation.
+
+ * cp-pt.c (tsubst): Associate the FUNCTION_DECL with the spot in the
+ user's code that triggered the instantiation. *Currently disabled*
+
+ * cp-class.c (finish_struct): If we're instantiating a template,
+ associate the TYPE_DECL with the spot in the user's code that
+ triggered the instantiation. *Currently disabled*
+
+ * cp-pt.c (coerce_template_parms): Do extra checking on the template
+ parms, since templates are more picky than initializers.
+
+ Wed Oct 27 17:06:54 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-parse.y (datadef): Don't override a template with a forward
+ declaration of a template class.
+
+ Tue Oct 26 17:54:12 1993 Kung Hsu (kung@cirdan.cygnus.com)
+
+ * cp-parse.y (component-declarator0): fix bit field name same as type
+ name syntax error.
+
+ Tue Oct 26 16:07:29 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (build_up_reference): Fix typo, fixes core dump on bad
+ code.
+
+ Tue Oct 26 11:52:09 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c (dump_function_decl): Only print default arguments
+ if verbose.
+ (dump_type): Ditto.
+
+ Mon Oct 25 22:18:05 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * cp-typeck.c (c_sizeof, build_c_cast): Re-enable Salzenberg's
+ July 10 change (set TREE_OVERFLOW as well as TREE_CONSTANT_OVERFLOW).
+
+ Mon Oct 25 18:53:08 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-pt.c (instantiate_class_template): Don't do the
+ push_template_decls thang if !setup_parse; the binding level
+ never gets popped.
+
+ Mon Oct 25 11:54:34 1993 Kung Hsu (kung@cirdan.cygnus.com)
+
+ * cp-method.c (hack_identifier): fix seg fault when an
+ external variable does not have class context.
+
+ Sun Oct 24 19:01:15 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-spew.c (scan_tokens): Test for ';' in first pre-scan of the
+ tokens.
+
+ Fri Oct 22 23:46:17 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-tree.c (get_decl_list): When consing up CLASSTYPE_ID_AS_LIST,
+ don't assume that `value' is a reasonable identifier to use.
+ (list_hash_lookup_or_cons): Ditto.
+
+ * cp-error.c (dump_decl, CONST_DECL): Pass off non-enum cases to
+ dump_expr.
+ (dump_expr): Pass off DECLs to dump_decl.
+
+ Fri Oct 22 20:57:46 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * cp-errfn.c (STRDUP): Change to comma expr for bdmaged cc's.
+ (cp_thing): Add decl for ap, initialize fmt later.
+
+ Fri Oct 22 17:15:01 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c (dump_decl): Handle CONST_DECLs for enum tags.
+
+ * cp-type2.c (my_friendly_abort): Move abortcount to global level.
+
+ * cp-search.c (dfs_pushdecls): Be more helpful in shadowing warning.
+
+ * cp-pt.c (mangle_class_name_for_template): If the last template
+ parameter was also a template class, insert a space so that
+ the mangled name can be used as input for the compiler (i.e.
+ with default_copy_constructor_body).
+
+ Fri Oct 22 16:40:27 1993 Mike Stump (mrs@cygnus.com)
+
+ Handle constructors in templates better.
+
+ * cp-call.c (build_method_call): Use constructor_name_full instead
+ of constructor_name.
+ * cp-cvt.c (convert_to_reference, convert, build_type_conversion_1,
+ build_type_conversion): Ditto.
+ * cp-decl.c (make_temporary_for_reference, grok_reference_init):
+ Ditto.
+ * cp-init.c (expand_default_init, expand_aggr_init_1, build_new):
+ Ditto.
+ * cp-typeck.c (build_modify_expr_1, convert_for_initialization):
+ Ditto.
+ * cp-search.c (lookup_field, lookup_fnfields): Check for short
+ constructor name, as that is how we store it.
+ * cp-decl2.c (constructor_name_full): New routine.
+ * cp-tree.h (constructor_name_full): Declare it.
+ * cp-call.c (build_method_call): Check for either short or the full
+ constructor name.
+
+ Wed Oct 20 17:17:37 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-tree.h: Declare code_as_string.
+
+ * cp-error.c (code_as_string): New function, translates
+ enum tree_code into a string. Very incomplete at the moment.
+
+ * cp-decl.c (lookup_tag): Use cp_error more.
+
+ Tue Oct 19 16:39:20 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c (dump_type_prefix): Do the prefix/suffix thang for
+ ARRAY_TYPE nodes.
+
+ Thu Oct 14 23:56:34 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-gc.c (build_dynamic_cast): Avoid doing runtime work if possible.
+ (build_typeid): Add logic.
+
+ Thu Oct 14 10:56:43 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-gc.c (build_typeid): New function, allegedly returns the
+ Type_info object for the type of an expression, currently does
+ nothing.
+ (get_typeid): New function, allegedly returns the Type_info object
+ for a _TYPE node, currently does nothing.
+ (build_dynamic_cast): New function, supposedly implements
+ run-time checked casting, currently only does what can be done
+ at compile time.
+
+ * cp-parse.y (.kindof_pushlevel): Only push first decl (the variable).
+ (primary): Add dynamic_cast and typeid expressions.
+ (simple_if): Use partially_scoped_stmt again.
+ Makes 'if' condition work.
+
+ * cp-error.c (expr_as_string): Suppress parens on initial call
+ to dump_expr.
+
+ * cp-tree.h: Add decls for Type_info_type_node, build_typeid,
+ get_typeid and build_dynamic_cast.
+
+ * gplus.gperf: Add typeid and dynamic_cast.
+
+ * cp-spew.c (init_spew): Ditto.
+
+ Wed Oct 13 19:15:21 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ Partial implementation of Stroustrup's proposal for declarations in
+ conditions from X3J16/92-0121.
+
+ * cp-parse.y (paren_cond_or_null): New rule, use condition instead
+ of expr.
+ (xcond): Ditto.
+ (condition): New rule, used in the condition parts of if, while, for
+ and switch statements. Allows a restricted set of declarations of
+ the form "type_specifier declarator = expression".
+ (.kindof_pushlevel): Like pushlevel, but pushes all of the decls
+ from the previous binding level into the new one too.
+ (partially_scoped_stmt): Like implicitly_scoped_stmt, but uses
+ .kindof_pushlevel instead of .pushlevel.
+ (simple_if): .pushlevel before condition.
+ (simple_stmt, simple_if ELSE): Ditto, pop binding level.
+ (simple_stmt, simple_if): Ditto.
+ (simple_stmt, WHILE): Ditto.
+ (simple_stmt, forhead.1): .pushlevel before condition, use xcond
+ instead of xexpr, pop binding level.
+ (simple_stmt, forhead.2): Use xcond instead of xexpr, always pop
+ binding level.
+ (simple_stmt, SWITCH): .pushlevel before condition, etc, etc.
+ (forhead.2): always .pushlevel.
+ (datadef): Use cp_error more.
+ (simple_stmt, CASE): Ditto.
+
+ * cp-decl2.c (pushdecls): New function, push all decls in the chain
+ into the current scope.
+
+ Wed Oct 13 12:31:58 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c: Remove redefinition of NULL, as some machines don't
+ like it. Clean up all NULL uses.
+
+ Mon Oct 11 17:21:08 1993 Kung Hsu (kung@cirdan.cygnus.com)
+
+ * cp-decl2.c (finish_file): Fix libg++ build problem of mismatch
+ blocks.
+
+ Mon Oct 11 13:51:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Mon Oct 4 11:49:48 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cp-typeck.c (build_modify_expr): Check whether recursive calls
+ return error_mark_node.
+
+ Mon Oct 4 12:41:16 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cp-class.c (finish_struct): Too-long bitfield is an error.
+ * cp-decl.c (grokdeclarator): "inline main()" is an error.
+ (grok_op_properties): Overloaded ?: is an error.
+ (start_enum): Duplicate enum definition is an error.
+
+ Mon Oct 4 12:45:11 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cp-typeck.c (common_type): Use TYPE_MAIN_VARIANT when preferring
+ long int to int (when width is the same).
+
+ Mon Oct 4 12:46:54 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cp-typeck.c (convert_for_assignment): Mismatch in signedness
+ of pointer targets should not inhibit warnings for const mismatch.
+
+ Mon Oct 4 12:53:04 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cp-typeck.c (default_conversion): Convert to unsigned int
+ if original type is unsigned and of greater or equal size.
+
+ Mon Oct 11 13:19:42 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (build_enumerator): Call default_conversion on the VALUE
+ before calling constant_expression_warning.
+
+ Mon Oct 11 10:21:37 1993 Kung Hsu (kung@cirdan.cygnus.com)
+
+ * cp-decl.c (finish_function): fix the mismatch LBB LBE block
+ problem, specifically when compiler generated
+ destructor/constructor (pr2972)
+ * cp-decl2.c (finish_file): same as above
+ * cp-parse.y (compstmt): same as above
+
+ Mon Oct 11 01:08:09 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c (dump_type_suffix): Cope with arrays with unspecified
+ bounds.
+
+ Thu Oct 7 19:35:26 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c: Deal with printing out array DECLs properly.
+ Use dump_char for printing out string literals, too.
+
+Tue Nov 23 18:08:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dwarfout.c (function_start_label): New function.
+ (output_entry_point_die): Use it.
+ (output_global_subroutine_die, output_local_subroutine_die): Use it.
+
+ * c-common.c (check_format_info): Always use TYPE_MAIN_VARIANT
+ when comparing cur_type against wanted_type.
+
+ * protoize.c (save_def_or_dec): If function's aux info doesn't end
+ with a closeparen, ignore it.
+ (xmalloc, xrealloc): Cast result of malloc.
+
+ * c-typeck.c (build_binary_op): Don't accept complex types
+ for max, min, lt, etc.
+
+Tue Nov 23 18:05:14 1993 Lisa Repka (lisa@MicroUnity.com)
+
+ * reorg.c (rare_destination): Ensure we always correctly handle
+ a null JUMP_LABEL.
+
+Tue Nov 23 17:48:39 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * i960/i960.h (ASM_SPEC): Pass -linkrelax, not -link-relax.
+
+Tue Nov 23 17:35:25 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c (arm_backwards_branch): Branching to the current insn is a
+ backwards branch.
+
+Tue Nov 23 13:59:24 1993 Hallvard B Furuseth (hbf@durin.uio.no)
+
+ * libgcc2.a (__bb_exit_func): Fix format %*d -> %*ld.
+
+ * c-parse.in, cp-parse.y (maybe_type_qual): Don't fail to set $$.
+
+Tue Nov 23 15:26:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine, simplify_shift_const): Add initializations
+ for some uninitialized variables.
+
+ * c-common.c (check_format_info): When we have INTEGER_TYPEs,
+ save result of signed_type or unsigned_type for later
+ comparison with the various forms of char types.
+
+ * expr.c (expand_expr, case SAVE_EXPR): Properly recompute the
+ value of UNSIGNEDP when SAVE_EXPR_RTL is nonzero and we have promoted.
+
+Tue Nov 23 04:14:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dwarfout.c (output_local_subroutine_die): Use the function name
+ from its symbol_ref, not DECL_ASSEMBLER_NAME.
+
+Mon Nov 22 13:59:41 1993 Steve Chamberlain (sac@mole.gnu.ai.mit.edu)
+
+ * final.c (get_attr_length): asm_insn_count takes a body, not an
+ insn.
+
+Sun Nov 21 22:37:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/mot3300.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
+ Use SIZE, not ROUNDED.
+ (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Definitions turned off.
+ (REGISTER_PREFIX, IMMEDIATE_PREFIX): New definitions.
+ (PARM_BOUNDARY): New definition.
+
+Sun Nov 21 15:39:04 1993 Tor Egge (tegge@pvv.unit.no)
+
+ * m88k/dolph.h (SDB_ALLOW_FORWARD_REFERENCES): Define.
+ (SDB_ALLOW_UNKNOWN_REFERENCES): Define.
+ (CPP_PREDEFINES): Redefine.
+ (CPP_DEFAULT): Redefine.
+ (INITIALIZE_TRAMPOLINE): Redefine.
+ * m88k/dolphin.ld: New file.
+ * m88k/t-m88k (realclean): Remove some generated .asm files.
+ * m88k/x-dolph (EXTRA_PARTS): Redefined to also contain gcc.ld.
+ (gcc.ld): Copied from dolphin.ld.
+ (X_CFLAGS): Define __m88k__.
+ * libgcc2.c (__enable_execute_stack): Add DolphinOS version.
+
+Sun Nov 21 01:00:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/isi.h (LIB_SPEC): Use -lm in addition to -lc--
+ not instead of -lc.
+
+ * fix-header.c (write_rbrac): Make added declarations conditional
+ on __cplusplus and nothing else.
+ * fixproto (stdio.h): Reenable adding protos for v*printf.
+
+ * sys-protos.h (authdes_create): Delete arg info.
+ We can't count on having struct sockaddr defined.
+
+ * fixincludes (math.h): When deleting inline sqrt and abs,
+ be flexible about arg name and function body.
+
+ * Makefile.in (stmp-fixproto): Never run fixproto twice.
+
+Sat Nov 20 16:52:15 1993 Jim Wilson (wilson@cygnus.com)
+
+ * stmt.c (warn_if_unused_value): Handle arbitrary number of casts
+ before a modify.
+
+Sat Nov 20 16:38:25 1993 Eric Baur (eric@synnet.com)
+
+ * i386/perform.h (perform_divsi3, perform_modsi3): Add '&' in
+ constraint for DX; explicitly copy arg arg1 to cx.
+
+Sat Nov 20 02:26:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_builtin): For sin, cos, fsqrt, alloca, ffs, strlen,
+ strcpy, memcpy, strcmp, memcmp, if args are bad, use expand_call.
+
+ * fix-header.c (write_rbrac): Treat rewinddir like memmove.
+
+Fri Nov 19 18:24:43 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * protoize.c: Remove declarations for malloc and realloc.
+
+ * expr.c (store_field): Convert EXP to MODE before calling
+ store_bit_field.
+
+ * optabs.c (expand_complex_abs): Replace some erroneous
+ uses of MODE with SUBMODE.
+
+ * combine.c (force_to_mode): Don't allow sign-extension of
+ constants when we are narrowing things in an IOR or XOR.
+
+Fri Nov 19 16:42:43 1993 Jim Wilson (wilson@cygnus.com)
+
+ * rs6000.c (output_function_profiler): When TARGET_MINIMAL_TOC,
+ emit .long instead of .tc.
+
+Fri Nov 19 13:22:37 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure: Let a host set truncate_target to specify that the
+ installation directory names must be truncated to 14 characters.
+ If set, truncate the target argument.
+
+Fri Nov 19 17:27:58 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * clipper.h (HARD_REGNO_MODE_OK): Allow any mode in general regs.
+ Float regs may only hold SFmode and DFmode.
+ (FUNCTION_ARG): Only MODE_INT and MODE_FLOAT with size <= 8 are
+ passed in registers.
+ (FUNCTION_ARG_ADVANCE): Update accordingly.
+ (FUNCTION_ARG_PARTIAL_NREG): Undefine.
+
+ * clipper.md (movsf+1,2,movdf+1,2): Make 'f' preferred register class.
+
+Thu Nov 18 20:09:56 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * fixincludes: When compute DOTS, convert /./ to / to avoid
+ accidentally converting it to /../.
+ * fixinc.dgux, fixinc.svr4: Likewise.
+
+Thu Nov 18 06:14:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (expand_function_end): New arg END_BINDINGS.
+ * c-decl.c (finish_function): Pass new arg to expand_function_end.
+ * cp-decl.c (finish_function): Pass new arg to expand_function_end.
+ Don't call expand_end_bindings here.
+ * integrate.c (output_inline_function):
+ Pass new arg to expand_function_end.
+
+Wed Nov 17 18:54:21 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * objc/objects.c: Include "tconfig.h" before "runtime.h".
+
+Wed Nov 17 19:15:31 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fixincludes (math.h): Add missing quoting of `*' when fixing
+ prototype of `sqr'.
+
+Tue Nov 16 07:15:52 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (EXTRA_CONSTRAINT): New macro.
+ (SECONDARY_{INPUT,OUTPUT}_RELOAD_CLASS): Disallow unaligned into float
+ regs.
+ * alpha.md (movdi): Use 'Q' instead of 'm' for FP.
+
+Tue Nov 16 02:06:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.5.4 released.
+
+ * c-typeck.c (push_init_level): When aligning next struct field,
+ make sure there's another field left.
+
+ * cp-errfn.c: Don't include string.h.
+ (STRDUP): Macro deleted.
+ (cp_thing): Copy strings "by hand".
+
+ * combine.c (force_to_mode): Don't do right-shift in a narrower mode.
+
+Mon Nov 15 01:54:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sdbout.c (sdbout_symbol): If non-static var has static-style RTL,
+ don't output anything for it.
+
+ * Makefile.in (stmp-fixproto): Don't depend on xsys-protos.h.
+ (diff): Don't compare bi-parser.c
+
+ * news.h (NO_DOT_IN_LABEL, NO_DOLLAR_IN_LABEL): Defined.
+
+ * c-typeck.c (push_init_level, really_start_incremental_init):
+ Skip any nameless bitfields at start of record.
+ (process_init_element): Skip any nameless bitfields after the field
+ just processed.
+
+Mon Nov 15 02:09:54 1993 Torbjorn Granlund (tege@blues.cygnus.com)
+
+ * pa.h (RETURN_IN_MEMORY): Define.
+
+Sun Nov 14 17:25:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr): For TRUTH_AND_EXPR, TRUTH_OR_EXPR
+ and TRUTH_XOR_EXPR, if result mode doesn't match operands,
+ don't use subtarget.
+
+ * c-typeck.c (convert_for_assignment): Fix typo (codel => coder).
+
+Sun Nov 14 12:45:37 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (assign_parms): Clear STACK_PARM when we have a
+ pass-by-pointer parm that we load into a pseudo.
+
+ * flow.c (flow_analysis): Fix bug in previous change.
+
+ * fold-const.c (twoval_comparison_p): Do nothing for SAVE_EXPR, at
+ least for now.
+
+ * reload.c (push_reload): Allow RELOAD_FOR_INPUT with a secondary
+ reload the same class as the input if the modes differ.
+
+ * expr.c (store_expr): Convert constants to proper mode in two places.
+
+ * sh.h (HAVE_VPRINTF): Delete from here.
+ * xm-sh.h (HAVE_VPRINTF): New macro.
+
+Sun Nov 14 04:28:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i860/i860.h (SECONDARY_INPUT_RELOAD_CLASS):
+ Moving any kind of integer cst to float reg needs intermediate.
+
+ * sys-protos.h (getmntent): Delete the arg decls
+ because BSD 4.4 and Sunos disagree on them.
+
+Sat Nov 13 23:06:42 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/mips/mips.c (function_arg, function_arg_advance):
+ In default case, handle complex modes much like BLKmode.
+ (function_arg_partial_nregs): Likewise.
+
+Sat Nov 13 22:31:48 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (CPP_SPEC): Always define __LANGUAGE_C__ unless assembler.
+ Define __cplusplus for C++.
+
+ * alpha.md (movsf, movdf): Add 'G' to constraint for operand 1
+ when operand 0 is a register and support it in alternative 0.
+
+ * stmt.c (expand_end_bindings): Use emit_move_insn instead of
+ gen_move_insn in case nonlocal_goto_handler_slot is not a valid memref.
+
+ * flow.c (find_basic_blocks): When starting new basic block
+ for a CALL_INSN in the presence of nonlocal labels, don't
+ get confused with following CLOBBER.
+ (flow_analysis): Use same logic as find_basic_block to see when
+ the insn after a CALL_INSN starts a new basic block.
+
+ * expmed.c (store_split_bit_field): Properly load a constant VALUE
+ into a WORD_MODE pseudo.
+
+Sat Nov 13 18:27:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/ns32k/ns32k.md (movsi): Handle moves to fp reg.
+ Handle const_double as operand 1.
+
+ * Makefile.in (diff): Fix typo in name gcc.??s.
+
+Fri Nov 12 08:34:58 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * dbxout.c (dbxout_type_field): Skip fields with variable
+ position and/or size instead of crashing on them.
+
+Fri Nov 12 22:49:50 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * bi-arity.c, bi-opcode.c, bi-opname.c (main): Flush stdout and
+ and check for errors prior to termination; end with call to exit
+ rather than return from main, as with gen*.c.
+ * bi-arity.c, bi-lexer.c, bi-opcode.c, bi-opname.c, bi-parser.y:
+ Use FATAL_EXIT_CODE rather than hardcoded 1 for fatal exit code.
+
+Fri Nov 12 18:41:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstdarg.h, gvarargs.h: Test __bsdi__ like __BSD_NET2__.
+
+ * pa.h (FUNCTION_ARG_BOUNDARY): Fix return value for 64bit
+ pass by value structures.
+
+ * fix-header.c (write_rbrac): Handle v*printf like memmove.
+
+Fri Nov 12 08:53:47 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.md (comparison): Don't emit invalid optimization
+ for (set (reg) (comparison)) and (set (reg) (neg (comparison)))
+ when comparison is LT.
+
+ * arm.c (pattern_really_clobbers_lr): Setting a subreg of a mem is
+ valid and safe.
+
+Fri Nov 12 08:38:22 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * m68k/hpux7.h: Add directory name to #include of hp320.h.
+
+Thu Nov 11 00:00:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.5.3 released.
+
+ * fix-header.c, gen-protos.c (fancy_abort): New function.
+
+ * c-typeck.c (mark_addressable): Handle REALPART_EXPR and
+ IMAGPART_EXPR.
+
+ * integrate.h (global_const_equiv_map_size): Declared.
+
+ * dbxout.c (dbxout_symbol): If it's C++, don't check the
+ DECL_SOURCE_LINE of a typedef.
+ (dbxout_parms): Fix previous change.
+
+Wed Nov 10 10:33:28 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * fixproto (rel_source_subdir): Prune out redundant /subdir/../ to
+ prevent recursion.
+
+Wed Nov 10 22:30:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/ns32k/encore.h (ASM_OUTPUT_ASCII): Declare i.
+
+Wed Nov 10 16:18:19 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokvardecl): Undo change of Jan 15 1993 which
+ tried to implement the "one definition rule". The duplicate_decls
+ call in pushdecl does implement this; grokvardecl got some bad hits.
+
+Wed Nov 10 08:44:17 1993 Niklas Hallqvist (niklas@appli.se)
+
+ * cp-search.c (compute_visibility): Revert Tiemann's patch of
+ Nov 5. Instead check that privately inherited entities don't
+ get restricted visibility if the private derivation is a
+ shallow derivation (i.e. one leading to the most derived
+ class) and we're actually in the most derived class' scope.
+
+ * cp-search.c (dfs_pushdecls): Don't be confused by the fact that
+ overloaded methods from an outer scope almost looks like an
+ envelope.
+
+Wed Nov 10 18:55:22 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * fixincludes: Copy files needed for other files at the very end.
+
+ * arm.md (reload patterns for mla instruction): New.
+
+Wed Nov 10 18:17:40 1993 Jim Wilson (wilson@cygnus.com)
+
+ * dbxout.c (dbxout_parms): For parms passed via invisible
+ reference, accept any reg except FP, SP, and AP.
+
+ * unroll.c (unroll_loop): Set global_const_equiv_map_size.
+
+Wed Nov 10 17:52:33 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst_prev_insn): New variable.
+ (try_combine): Set it.
+ (get_last_value): Use subst_prev_insn if set instead of
+ looking for the first insn before SUBST_LOW_CUID.
+
+ * integrate.c (global_const_equiv_map_size): New variable.
+ (expand_inline_function): Set it.
+ (expand_inline_function, copy_rtx_and_substitute, try_constants):
+ Never access const_equiv_map without checking for out-of-range.
+ (mark_stores): Likewise.
+
+ * alpha.md (smaxdi3): Was incorrectly called maxdi3.
+
+ * rs6000.h (LINK_SPEC): Don't pass -btextro if -r.
+
+ * alpha/osf12.h: New file.
+ * configure (alpha-dec-osf1.2): New case, to use new file.
+
+ * rs6000.md (sqrtdf2): Fix typo in extra condition.
+ (plus/eq pattern): Fix typo: "addze" was "adddze".
+
+Wed Nov 10 12:32:56 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * expmed.c (expand_divmod): If rem_flag, always force op0 to a
+ register.
+
+ * expr.c (expand_expr): Use a smaller alignment when reading from
+ a field with a variable offset.
+
+Wed Nov 10 01:28:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_assignment): Use a smaller alignment when storing
+ into a field with a variable offset.
+
+ * fixincludes (math.h): Delete inline definitions for sqr.
+
+Tue Nov 9 15:33:45 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-method.c (hack_identifier): Undo rfg's earlier patch.
+
+Tue Nov 9 19:30:02 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (reload) [SMALL_REGISTER_CLASSES]: Try, at least,
+ to avoid 2-groups whose second register is explicitly used.
+
+Tue Nov 9 19:08:47 1993 Jim Wilson (wilson@cygnus.com)
+
+ * mips.md (adddi3): Use DImode not SImode in force_reg call.
+
+ * mips.c (PIC_OFFSET_TABLE_MASK): New macro.
+ (function_epilogue): When -mabicalls, ignore
+ PIC_OFFSET_TABLE_REGNUM when calculating load_only_r31.
+
+ * loop.c (strength_reduce): Accept VOIDmode initial values.
+
+Tue Nov 9 09:23:31 1993 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu)
+
+ * pa.md (negscc): Add mode for NEG.
+
+Tue Nov 9 12:51:54 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.md ("cmpsf" & "cmpdf"): Undo inadvertent change included
+ with CCEVENmode change.
+
+Tue Nov 9 01:31:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (loop on $required): When a file is copied
+ because another file needs it, scan it for what files it needs.
+
+ * fix-header.c (write_rbrac): When adding proto for memmove,
+ put it inside #ifndef memmove.
+
+Mon Nov 8 16:50:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * sdbout.c (sdbout_init) [RMS_QUICK_HACK_1]: Call sdbout_symbol
+ for __vtbl_ptr_type.
+
+ * cp-decl.c (init_decl_processing): Undo previous change.
+
+ * c-typeck.c (build_binary_op): Warn for ordered compare of ptr with 0
+ only if pedantic in both cases.
+
+Mon Nov 8 18:25:06 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h (ASM_FILE_START): Emit filename directive.
+
+Sun Nov 7 00:24:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (mostlyclean): Delete fixhdr.ready here.
+ (clean): Not here.
+
+ * scan-decls.c (scan_decls): After seeing an extern variable
+ declaration, goto new_statement to read a new token, rather
+ than going to handle_statement (which uses the current token).
+
+Sat Nov 6 19:40:22 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * config/vax/vms.h (__MAIN_NAME): Define as " main(" rather
+ rather than " main (" to reflect current cc1plus.
+
+ * config/vax/vms.h: Add __GNUC_MINOR__=5 to CPP_PREDEFINES.
+
+Sat Nov 6 22:54:25 1993 Tor Egge (tegge@pvv.unit.no)
+
+ * m88k.c (partial_ccmode_register_operand, even_relop)
+ (odd_relop): New functions, for support of CCEVENmode.
+ (print_operand, new case '!'): Revert following condition.
+ * m88k.h (EXTRA_CC_MODES, EXTRA_CC_NAMES, SELECT_CC_MODE):
+ New macros to define CCEVENmode.
+ * m88k.md: Handle CCEVENmode as a new mode. Logical operations
+ on CCmode registers now results in CCEVENmode.
+ Add patterns for jumps and ext's for CCEVENmode.
+ (cmpsf, cmpdf): Use reg 65 and clobber reg 64.
+
+Sat Nov 6 17:07:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cp-decl.c (init_decl_processing) [RMS_QUICK_HACK_1]:
+ If sdb output, call sdbout_symbol for vtable_entry_type.
+ * config/m88k/dgux.h (RMS_QUICK_HACK_1): Defined.
+
+Sat Nov 6 12:32:31 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * unroll.c (unroll_loop): Don't unroll loop if jump has combined
+ the original loop start label with another label.
+
+Sat Nov 6 05:01:31 1993 Chris Smith (csmith@convex.com)
+
+ * convex.md (untyped_call, blockage): Add new patterns.
+
+Sat Nov 6 03:11:46 1993 Noah Friedman (friedman@gnu.ai.mit.edu)
+
+ * just-fixinc: Rename fixed native limits.h to syslimits.h (or
+ install gsyslimits.h) before renaming gcc's limits.h from tmpfoo
+ directory.
+
+Sat Nov 6 00:07:41 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (emit_move_insn_1): Push the components of a complex
+ in proper order: imag part has higher address.
+
+Fri Nov 5 16:23:51 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * mips.c (mips_abicalls): Change type to enum mips_abicalls_type.
+ (override_options): Use MIPS_ABICALLS_{NO,YES} instead of
+ ABICALLS_{NO,YES}.
+ * mips.h (enum mips_abicalls_type): New type.
+ (mips_abicalls_attr): New define.
+ (mips_abicalls): Change type to enum mips_abicalls_type.
+ * mips.md (abicalls): Use mips_abicalls_attr not mips_abicalls.
+
+Fri Nov 5 20:34:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixproto (stdio.h): Don't add protos for vprintf, vfprintf, vsprintf.
+
+Fri Nov 5 20:32:53 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * config/pa/pa.md (decrement_and_branch_until_zero):
+ Add missing `return'.
+
+Fri Nov 5 16:08:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * listing: Handle i386-linux like m68020.
+ Pass compilation options thru an awk variable, not as ordinary args.
+
+ * cccp.c (safe_read, safe_write): Handle EINTR.
+ (output_line_command): Handle NO_IMPLICIT_EXTERN_C here.
+ (main): Not here.
+
+ * protoize.c (safe_read, safe_write): Handle EINTR.
+ (safe_write): Return right away after safe_write.
+
+Fri Nov 5 11:40:59 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa-ghpux.h (NO_IMPLICIT_EXTERN_C): Define.
+ * pa-hpux.h (NO_IMPLICIT_EXTERN_C): Define.
+
+Fri Nov 5 09:45:20 1993 Kresten Krab Thorup (krab@viking)
+
+ * objc/archive.c (objc_read_string): Allocate string properly.
+ * objc/hash.h (compare_strings): Check for null pointers.
+
+Fri Nov 5 11:29:26 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Use
+ REAL_ARITHMETIC macros including hex for special values.
+
+Fri Nov 5 10:26:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (build_method_call): For unions, don't use get_binfo and
+ convert_pointer_to_real, since unions can't be involved in complex MI
+ situations. (Fixes union ctor crash, and completes Sep 27 fix.)
+
+Fri Nov 5 07:39:00 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-search.c (compute_visibility): Don't lose access to public
+ members from base classes of base classes.
+
+ * cp-search.c (get_base_distance): Initialize BASETYPE_PATH before
+ using. Also, initialize RVAL from get_base_distance_recursive.
+
+Fri Nov 5 05:48:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i860/paragon.h (SIZE_TYPE): #undef it.
+
+ * config/m88k/dgux.h (LIB_SPEC): Handle -msvr4.
+ (GPLUSPLUS_INCLUDE_DIR): Definition and #undef deleted.
+
+ * cccp.c (main): Handle NO_IMPLICIT_EXTERN_C.
+
+Fri Nov 5 03:11:05 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * config/m68k/m68k.h (RTX_COST): Return actual costs for
+ multiplication, not costs for theoretical special cases that are
+ not handled in the md.
+
+Fri Nov 5 00:42:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * emit-rtl.c (gen_highpart): If arg is function value hard reg,
+ return a subreg of it (as in gen_lowpart_common).
+
+ * integrate.c (expand_inline_function): Handle CONCAT as rtl for parm.
+ (copy_rtx_and_substitute): For subreg, handle case where the reg
+ inside turns into a CONCAT.
+
+ * configure: Treat hppa1.[01]-hpux8.0[01] like hppa1.[01]-hpux8.02.
+
+ * fixproto: Don't scan sub-directories whose names end in CC
+ or contain ++ - these are probably C++ directories.
+
+Thu Nov 4 12:02:04 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * integrate.c (expand_inline_function): Don't call
+ push_temp_slots, free_temp_slots, and pop_temp_slots when handling
+ parameters, because they might end up in a temp slot.
+
+Thu Nov 4 15:00:38 1993 Samuel Figueroa (figueroa@cs.nyu.edu)
+
+ * i386/os2.h, i386/xm-os2.h: New files.
+
+Thu Nov 4 14:36:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_enum): Undo previous change.
+
+Thu Nov 4 13:30:16 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * loop.c (strength_reduce): Ignore initial value if it is the
+ wrong mode.
+ (record_initial): Don't ignore any set of the register.
+
+ * rs6000.md (movdf): Don't have reload choose alternative of
+ loading a constant into a GPR.
+
+ * reload.c (find_reloads, case 'o'): A pseudo is not always
+ an offsettable memref.
+ (find_reloads): If we reload a constant into a register via
+ memory, count it as two reloads.
+
+ * function.c (expand_function_start): If not optimizing, ensure
+ we mark context display regs as live for the entire function.
+
+Thu Nov 4 02:24:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.h (DECL_IN_TEXT_SECTION): New macro.
+ * varasm.c (assemble_variable): Set DECL_IN_TEXT_SECTION.
+ * dbxout.c (dbxout_symbol_location): Test DECL_IN_TEXT_SECTION.
+
+Wed Nov 3 23:59:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_function_call): Initialize fundecl to 0.
+
+Wed Nov 3 16:34:01 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.h (REGISTER_MOVE_COST): Decrease cost for move from
+ SHIFT_REGS to avoid regclass overflow.
+
+Wed Nov 3 15:35:44 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/m68k.c (output_move_double): Fix up the test for overlap
+ of source address with operands[0].
+
+ * regclass.c (regclass): Consider commutativity even when
+ one arg is a constant.
+
+Wed Nov 3 12:06:23 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * expmed.c (expand_divmod): Use target as copy_to_suggested_reg
+ argument only if it has the same mode as op0.
+
+Wed Nov 3 04:58:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c (safe_write, safe_read): Really use arg DESC.
+
+ * libgcc2.c (exit): Fix declaration of _exit.
+
+ * c-common.c (check_format_info): Make warning nicer for mismatch
+ of int vs long, etc.
+ Don't warn if field width is an unsigned int.
+
+ * c-decl.c (finish_enum): Always make an enum signed if it will fit.
+
+Wed Nov 3 14:23:52 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * cse.c (cse_insn): Call `invalidate' also for STRICT_LOW_PART and
+ ZERO_EXTRACT (three places).
+ (invalidate_from_clobbers): Likewise (two places).
+ (cse_around_loop): Likewise.
+ (invalidate_skipped_set): Likewise.
+ (cse_set_around_loop): Likewise.
+
+Wed Nov 3 03:56:55 1993 Paul Eggert (eggert@twinsun.com)
+
+ * dbxout.c (dbxout_type): Print `-2' instead of `0037777777776'
+ for an enumeration constant whose value is -2;
+ otherwise, GDB 4.11 rejects the type.
+
+Wed Nov 3 04:35:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (fix-header, gen-protos): Link with HOST_LIBS.
+ Depend on HOST_LIBDEPS.
+
+Wed Nov 3 00:07:18 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * fixproto: When checking for uses of _flsbuf, make sure to
+ not match (say) __flsbuf or other non-word _flsbuf strings.
+ * fixproto: Be more robust when checking for files indirectly
+ needed (via #include directives). E.g. handle "../foo/bar.h"
+ properly, and silently ignore missing include files.
+
+Tue Nov 2 17:37:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (do_spec_1): Use spec_version for %v, not version_string.
+ Distinguish %v1 and %v2.
+ (default_compilers): For __GNUC_MINOR__, use %v2.
+ For __GNUC__ and __GNUG__, use %v1.
+
+ * protoize.c (safe_read): New function.
+ (process_aux_info_file, edit_file): Use safe_read.
+
+ * cccp.c (safe_read): New function.
+ (main, finclude, check_precompiled): Use safe_read.
+
+Tue Nov 2 14:31:42 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Don't remove /**/ from X11/Xlibint.h or
+ X11/extensions/multibufst.h; unnecessary.
+
+Tue Nov 2 07:20:12 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * optabs.c (init_optabs): Function `ffs' takes `int', not mode that
+ is BITS_PER_WORD wide.
+
+Tue Nov 2 02:53:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cp-typeck.c (comptypes): Fix typo in changing STRICT from 2 to 1.
+
+ * protoize.c (edit_file): Use safe_write.
+ (safe_write): New subroutine.
+
+ * calls.c (expand_call): Discard __ prefix like _ or __x.
+
+ * objc/objects.c: Include tconfig.h.
+
+Mon Nov 1 23:34:46 1993 Rainer Orth (ro@anemone.techfak.uni-bielefeld.de)
+
+ * fixincludes (sys/stat.h) fix fchmod prototype, first arg is
+ int, not char * [AIX 3.2.4]
+ (rpc/svc.h): avoid nested comments [Ultrix 4.3]
+ (stdio.h, stdlib.h): fixed getopt prototypes to match POSIX.2
+ [DEC Alpha OSF/1 1.3]
+
+Mon Nov 1 11:42:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * fixincludes: Fix <sys/limits.h> like <limits.h>.
+
+ * fixincludes: Unquote 'f' in #define _IO. Fix elf.h like
+ elf_abi.h. For Irix 5.
+
+Mon Nov 1 15:15:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (mips-sgi-irix5*): Add fixincludes=Makefile.in.
+
+ * fixproto (setjmp.h): Don't require siglongjmp and sigsetjmp.
+ They need sigjmp_buf, and are missing on many systems.
+
+ * Makefile.in (stmp-fixproto): Print a notice that warnings and errors
+ from fixproto are normal.
+ (distdir): Avoid spurious output from gcc.texi version number check.
+ (diff): New target.
+
+Mon Nov 1 15:19:09 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Don't remove /**/ from X11/xmd.h; breaks gcc
+ -traditional on some systems.
+
+Mon Nov 1 07:38:58 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu
+
+ * rs6000.md: Add set_attr for "length" when we are going to split
+ an insn at output time.
+
+ * rs6000.md (bdn/bdz): Fix typo in checking for when we
+ need to split.
+
+ * rs6000.md (mulsi3): Make alternatives be "mq" and "no_mq"
+ instead of "power" and "powerpc". Only allow one pattern (either
+ with or without the clobber of MQ) to match.
+
+ * stmt.c (expand_decl_init): If CONST_DECL, don't generate any
+ code, but call expand_expr if DECL_INITIAL is a constant.
+
+Mon Nov 1 06:17:16 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * m68k.md (divhisi3, udivhisi3, modhisi3, umodhi3): Comment out.
+ (divhisi3, udivhisi3, modhisi3, umodhi3 recognizers): Comment out.
+
+ * expmed.c (synth_mult): When factoring T, break from loop after
+ first factor.
+ (expand_mult): Increase max cost to 12 again.
+
+Mon Nov 1 01:06:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (safe_write): New function.
+ (write_output): Use safe_write.
+
+Mon Nov 1 01:06:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.5.2 released.
+
+ * cccp.c (do_ident): Fix previous change.
+
+Sun Oct 31 14:41:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Version 2.5.1 released.
+
+ * cccp.c (do_ident): Substitute macros and output here.
+ (directive_table): Turn off the pass_thru field for #ident.
+
+ * c-common.c (shorten_compare): Undo previous change.
+ Instead, just suppress warnings if both args are constant.
+
+ * config/m68k/m68k.md (extzv, and its recognizer):
+ If width is 32, don't set CC_NOT_NEGATIVE.
+ If width is variable, clear the CC status.
+
+ * config/m68k/m68k.c (output_move_double): Extend the special case
+ for *--sp = sp[N] to handle 12 bytes as well as 8 bytes.
+
+Sun Oct 31 17:02:13 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-init.c (expand_aggr_init_1): When unswitching a COND_EXPR
+ initializer (i.e. int a = b ? 1 : 0 => int a; b ? a=1 : a=0),
+ set TREE_SIDE_EFFECTS on the result.
+
+Sun Oct 31 13:33:46 1993 Jim Wilson (wilson@cygnus.com)
+
+ * expr.c (do_store_flag): For equality test of a single bit, use
+ subtarget instead of target in calls.
+
+Sat Oct 30 17:58:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/hpux7.h: New file.
+ * configure (m68k-hp-hpux7*): New alternative.
+
+ * c-common.c (shorten_compare): Do nothing if both args constant.
+
+ * config.sub: Re-add hitachi to list of companies not to treat
+ as OS names.
+
+ * expr.c (convert_move): When extending to multi-word register
+ via its low word, clobber the whole thing.
+
+ * config/i386/i386.c (output_move_double): Extend the special case
+ for *--sp = sp[N] to handle 12 bytes as well as 8 bytes.
+
+Sat Oct 30 17:21:33 1993 Atsushi Furuta (furuta@sra.co.jp)
+
+ * pa-ghiux.h, pa-hiux.h, pa1-ghiux.h: New files, for Hitachi H3050/RX.
+ * pa1-hiux.h, x-pa-hiux, xm-pahiux.h: Likewise.
+ * config.sub, configure: Add H3050/RX support.
+
+Sat Oct 30 03:40:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/pa/pa.c (output_dbra): Fix argument number in addi at end.
+
+ * tree.h (enum built_in_function): Added END_BUILTINS to delimit
+ standard from language-specific builtins.
+
+ * toplev.c (rest_of_compilation): When an `extern inline' is not
+ really inline, clear DECL_INITIAL so we don't complain about
+ a subsequent non-extern definition.
+ * c-decl.c (finish_function): If rest_of_compilation set DECL_INITIAL
+ to null, leave it null.
+
+ * c-common.c (convert_and_check): Don't warn converting 0xff
+ to a signed char, etc., unless pedantic.
+
+ * Makefile.in (mainversion): New variable.
+ (distdir): Use mainversion when verifying gcc.texi has been updated.
+
+Sat Oct 30 03:12:54 1993 Torbjorn Granlund (tege@cygnus.com)
+
+ * m68k.md (mulsidi3 patterns): Fix typo, LSHIFTRT was ASHIFT.
+
+Fri Oct 29 12:06:09 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.svr4 (sys/stat.h): Don't change definitions into
+ prototypes if they may already be in prototype form.
+
+Fri Oct 29 16:50:33 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/linux.h (LIB_SPEC): Use -lieee if -mieee-fp.
+
+Fri Oct 29 13:04:16 1993 Arne H. Juul (arnej@fm.unit.no)
+
+ * mips/iris5.h (LINK_SPEC): Pass -no_unresolved if -call_shared.
+
+Fri Oct 29 12:52:54 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (addsf3, subsf3, mulsf3, divsf3): Put POWERPC first,
+ then POWER.
+
+ * mips/iris5.h ({DBX,SDB,MIPS}_DEBUGGING_INFO): Turn off until working.
+
+Fri Oct 29 12:15:12 1993 Minh Tran-Le (tranle@intellicorp.com)
+
+ * i386/xm-aix.h: Define HAVE_PUTENV for AIX PS/2.
+
+Fri Oct 29 11:49:46 1993 DJ Delorie (dj@ctron.com)
+
+ * i386/go32.h: Add support for coff-based ctor/dtor handling.
+
+Thu Oct 28 21:33:22 1993 Kresten Krab Thorup (krab@next.com)
+
+ * objc-act.c (check_methods_accessible): Fix bug in
+ -Wno-protocol. Reset chain to bottom class for each search.
+
+Thu Oct 28 21:30:38 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-parse.in (init): Remove extraneous pop_momentary in error case.
+
+Thu Oct 28 19:01:33 1993 Ron Guilmette (rfg@netcom.com)
+
+ * cp-method.c (hack_identifier): If an overloaded identifier
+ can only mean one thing, it can only mean one thing.
+
+Thu Oct 28 18:52:15 1993 John F Carr (jfc@mit.edu)
+
+ * cp-typeck.c (get_member_function_from_ptrfunc): Convert delta
+ to size_t before adding to pointer.
+
+Thu Oct 28 18:43:41 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.h (ENCODE_SECTION_INFO): Use DECL_RTL for DECLs.
+
+Wed Oct 27 20:58:31 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.c (emit_move_sequence): Fix typo, `Pmode' was `mode'.
+
+Wed Oct 27 00:01:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (cse_insn): When using src_related, copy the rtx.
+ Likewise for src_eqv_here.
+
+ * c-typeck.c (output_pending_init_elements): Don't crash if
+ constructor_unfilled_fields is 0.
+
+ * fixincludes (bsd/sys/wait.h): Undo previous change.
+
+ * config/m68k/xm-amix.h (abort): Don't use fancy_abort.
+ (alloca): In GCC 1, define as __builtin_alloca.
+
+ * config/m68k/amix.h (ASM_GENERATE_INTERNAL_LABEL)
+ (ASM_OUTPUT_INTERNAL_LABEL): #if 0 deleted, to reenable these.
+ (NO_DOT_IN_LABEL): Defined.
+ (NO_DOLLAR_IN_LABEL): Undefined.
+
+ * function.c (assign_parms): If parmreg is a CONCAT, handle the
+ case where stack_parm is 0.
+
+ * expr.c (do_jump): Use do_jump_by_parts_equality for complex compares.
+
+ * c-typeck.c (build_c_cast): When making union constructor,
+ copy TREE_CONSTANT from the given value.
+ (initializer_constant_valid_p): Special handling for "constant"
+ union constructor.
+
+ * bytecode.def: Rename dup to duplicate.
+ * expr.c (expand_assignment): Use duplicate.
+ (bc_expand_expr): Likewise.
+ (bc_expand_constructor): Likewise.
+
+ * print-tree.c (print_node_brief): Use unsigned char to print
+ the bytes of a real constant.
+
+ * expmed.c (store_bit_field): When calling operand_subword_force,
+ if VALUE has a non-void mode, pass that mode.
+
+ * config/m68k/amix.h (NO_DOLLAR_IN_LABEL): Defined.
+
+Tue Oct 26 19:05:36 1993 John F Carr (jfc@mit.edu)
+
+ * rs6000.c (rs6000_override_options): Support -mcpu=rsc1.
+
+Tue Oct 26 19:01:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (deduced.h): Add -I. and -I$(srcdir).
+
+ * scan-types.sh (CC): Move a " to avoid shell error.
+
+ * config.sub (paragon): New alias.
+ * configure (i860-*-osf*): New alternative.
+ * gstdarg.h, gvarargs.h [__i860__]: Add to little-endian list.
+ * libgcc2.c (___builtin_saveregs): New alternative for __PARAGON__.
+ * va-i860.h: Treat __PARAGON__ like __SVR4__.
+ (va_dcl) [__PARAGON__]: Declare va_alist.
+ * paragon.h, xm-paragon.h: New files.
+
+Tue Oct 26 18:58:49 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fix-header.c: Delete duplicate definition of "buf".
+ * fix-header.c, gen-protos.c, scan-decls.c, scan.c: Include hconfig.h.
+ * scan-decls.c: Remove unused #ifdef OLD.
+
+ * Makefile.in (gen-protos.o, scan.o, fix-header.o, scan-decls.o):
+ Add rule to compile using $(HOST_CC).
+ Show using hconfig.h.
+
+ * rs6000.md (movsi): Can copy a TOC address into a register.
+
+Tue Oct 26 15:03:07 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (default_compilers): Define __GNUC_MINOR__, using %v.
+ (do_spec_1): Implement %v.
+
+Tue Oct 26 11:06:59 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c (consume_string): Handle "\"" and '\''.
+
+Tue Oct 26 13:44:17 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * Makefile.in (fix-header.o): Depend on fix-header.c.
+ (scan-decls.o): New target.
+ (gen-protos.o, scan.o): New targets.
+
+ * Makefile.in (gen-protos, fix_header): Add $(HOST_CFLAGS) and
+ $(HOST_LDFLAGS).
+
+ * x-sysv (OLDCC): Add -XNh1500.
+ * x-mips: Likewise.
+
+Tue Oct 26 12:21:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * fixincludes: Fix NeXT <sys/wait.h> problem in <bsd/sys/wait.h>
+ as well, since that is where the file is in NeXTStep 3.0.
+
+Tue Oct 26 07:23:08 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * expmed.c (init_expmed): Use register 10000, not FIRST_PSEUDO_REGISTER
+ that gets special treatment in rtx_cost.
+ (expand_mult): Decrease max cost to 8.
+
+ * c-typeck.c (build_binary_op): For TRUNC_MOD_EXPR and FLOOR_MOD_EXPR,
+ set common.
+
+Tue Oct 26 01:59:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * protoize.c [__NeXT__]: Don't declare setjmp or longjmp.
+
+ * configure: Ignore --verbose option if specified.
+
+ * expr.c (emit_move_insn_1): Don't call group_insns
+ when X is a CONCAT.
+ (emit_move_insn_1, case CONJ_EXPR and COMPLEX_EXPR): Likewise.
+
+ * fixproto (signal.h): Add prototypes only for kill and raise.
+ Not for the POSIX signal functions.
+ (sys/resource.h): Delete special handling for this file.
+
+ * c-typeck.c (push_init_level): Align here for element of record.
+ (process_init_element): Not here (was before call to push_init_level).
+
+ * scan-types.sh: Expect GCC source dir as argument.
+ In dummy.c, use gstddef.h and gstdarg.h, not stddef.h and stdarg.h.
+ * Makefile.in (deduced.h): Pass GCC source dir to scan-types.sh.
+
+Mon Oct 25 23:23:26 1993 Torbjorn Granlund (tege@blues.cygnus.com)
+
+ * c-typeck.c (build_binary_op): For TRUNC_MOD_EXPR and FLOOR_MOD_EXPR,
+ don't shorten when divisor might be -1.
+
+Mon Oct 25 23:45:20 1993 Minh Tran-Le (tranle@intellicorp.com)
+
+ * seq-sysv3.h (CPP_SPEC): Define _SEQUENT_ to be compatible with cc.
+ (INVOKE__main): Defined.
+ (HAVE_ATEXIT): Defined.
+
+ * configure (i[34]86-sequent-sysv): Use fixinc.srv4 and define
+ broken_install.
+
+Mon Oct 25 18:53:51 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case PLACEHOLDER_EXPR): Fix typos.
+
+Mon Oct 25 16:25:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * scan.c (scan_string, skip_spaces): Add newline before fn name.
+
+ * scan-decls.c (scan_decls): When reading parameter list,
+ handle whitespace differently, and keep track of line number.
+
+ * config/i386/x-linux (STMP_FIXPROTO): Define as empty.
+
+Mon Oct 25 13:22:37 1993 Kaveh R. Ghazi (ghazi@caip.rutgers.edu)
+
+ * fixincludes: Fix bad S_IS* macros in <sys/stat.h> on m88k-sysv3.
+
+Mon Oct 25 22:34:12 BST 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * fixincludes: Remove nested brackets in change of Oct 21.
+ Fix token pasting operator in ARM/RISCiX include files.
+
+Mon Oct 25 13:01:52 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * sparc.h (LONG_DOUBLE_TYPE_SIZE): Don't define here.
+ * sol2.h (LONG_DOUBLE_TYPE_SIZE): Do define here.
+
+ * configure (mips-sgi-irix5): Don't use collect.
+
+Sun Oct 24 14:15:12 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * libgcc2.c (L_bb): Undef NULL before including <stdio.h>.
+
+Sun Oct 24 03:04:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (g++.o): New target.
+
+ * varasm.c (assemble_variable): Set last_assemble_variable_decl.
+ (last_assemble_variable_decl): New variable.
+ * toplev.c (rest_of_decl_compilation): Test that var.
+
+Sat Oct 23 20:28:13 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * configure (mips-sgi-irix5): Uncomment.
+ * iris5.h: Replace with working version.
+ * xm-iris5.h: New file.
+
+ * mips.c (mips_abicalls): New variable.
+ (override_options): Set mips_abicalls. Allow '^' as print operand
+ punctuation character.
+ (print_operand): Add support for '^'.
+ (mips_asm_file_start): Use ABICALLS_ASM_OP instead of ".abicalls".
+ (compute_frame_size): Handle TARGET_ABICALLS case.
+ (mips_expand_prologue): Likewise.
+ * mips.h (mips_abicalls): Declare new variable.
+ (PIC_FUNCTION_ADDR_REGNUM): New macro.
+ (STARTING_FRAME_OFFSET): Handle TARGET_ABICALLS case.
+ * mips.md (abicalls): New attribute.
+ (define_delay): Don't fill call delay slots when TARGET_ABICALLS.
+ (call_internal3, call_value_internal3): Renamed from
+ call_internal2 and call_value_internal2.
+ (call_internal2, call_value_internal2): New call patterns for
+ TARGET_ABICALL case.
+ (call_internal4, call_value_internal4): Likewise.
+
+Sat Oct 23 00:06:14 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (deduced.h): Depend on GCC_PASSES and stmp-int-hdrs.
+ (xsys-protos.h): Depend on GCC_PASSES.
+ (fixhdr.ready): New target.
+ (stmp-fixproto): Depend on fixhdr.ready, not fix-header itself.
+ (clean): Delete fixhdr.ready.
+
+Fri Oct 22 01:20:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fix-header.c: Renamed from patch-header.c.
+ (progname): Change name.
+ * fixproto: Use fix-header.
+ * Makefile.in (fix-header, fix-header.o): Renamed from patch-header*.
+ (stmp-fixproto, mostlyclean): Rename references to them.
+
+ * expr.c (store_field): In BLKmode case, return blk_object.
+
+ * config/m88k/m88k.h (ASM_FINISH_DECLARE_OBJECT): Undef, then define.
+
+ * Version 2.5.0 released.
+
+Thu Oct 21 13:02:48 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * mips.h (CUMULATIVE_ARGS): Double size of adjust array.
+ * mips.c (function_arg): Add comment about too many adjust entries.
+
+Thu Oct 21 13:48:14 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (HARD_REGNO_MODE_OK): Multi-word objects cannot
+ go into MQ, LR, or CTR.
+
+ * configure (mips-sgi-iris5*): Disable; not working yet.
+ * mips/iris5.h (ASM_SPEC, LINK_SPEC, CPP_PREDEFINES): Extend a bit.
+
+ * expmed.c (expand_divmod): Create RESULT in proper mode when trying
+ quotient-and-remainder insn.
+
+Thu Oct 21 13:14:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (STMP_FIXPROTO): Uncomment the definition.
+
+ * varasm.c (output_constructor): Fix previous change:
+ if no TYPE_DOMAIN, don't set min_index.
+
+Thu Oct 21 11:13:21 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * fixincludes: Avoid conflicting uses of __wchar_t in cc1plus and
+ stdlib.h for ARM/RISCiX.
+
+Thu Oct 21 08:16:13 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * Makefile.in (install-common): Remove g++ dependency.
+ Not built for cross compilers.
+
+Thu Oct 21 00:04:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (required): Accept a space instead of a tab
+ between #define and CTRL (or _CTRL).
+
+ * config/m68k/m68k.c (output_move_double): Use reg_overlap_mentioned_p
+ when checking for overlap between source and dest.
+ Fix syntax for the lea insn for double overlap case.
+ * m68k.md (movdi, movdf, movxf): Delete the & from load case.
+
+ * config/m88k/m88k.h (ASM_FINISH_DECLARE_OBJECT): Emit .size
+ only if DECLARE_ASM_NAME.
+
+Wed Oct 20 21:32:11 1993 Jeff Law (law@snake.cs.utah.edu)
+
+ * pa.c (output_arg_descriptor): Do not stop searching if a USE
+ for the static link or struct value register is found.
+
+Wed Oct 20 22:43:22 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (ASM_FINISH_DECLARE_OBJECT): Don't emit .size
+ directive if using the OSF/rose object format.
+
+ * i386/osfrose.h, i386/osfelf.h (SWITCH_TAKES_ARG): Allow use of
+ System V.4 -h * and -z * switches.
+ (LINK_SPEC): Pass -G, -h*, -z* switches through to the ELF linker.
+ Map -static, -symbolic, and -shared into the appropriate -B, -d,
+ and -G options when invoking the ELF linker.
+
+Wed Oct 20 20:32:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (fold_rtx): Alter previous change: don't fold the shift
+ if the count exceeds the width of the value inside the subreg.
+
+ * varasm.c (copy_constant): New function.
+ (output_constant_def): Use it.
+
+ * Makefile.in ($(srcdir)/INSTALL): Add --no-split.
+
+Wed Oct 20 19:35:35 1993 John F Carr (jfc@mit.edu)
+
+ * alpha.h (LIB_SPEC): Link -lprof1 when profiling.
+
+Wed Oct 20 19:21:18 1993 Jim Wilson (wilson@cygnus.com)
+
+ * cccp.c (sys_errlist): Conditionalize declaration for BSD 4.4.
+ * collect2.c, g++.c, gcc.c, protoize.c: Likewise.
+ * collect2.c (my_strerror): Move block local extern declarations
+ for sys_errlist and sys_nerr to file level.
+
+Wed Oct 20 18:27:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (output_init_element): When initializing a union,
+ do it right away: never put the field on the pending list.
+
+ * patch-header.c (main): Delete output file before opening it.
+ Discard directory names from progname.
+ * patch-header.c: Simplify and fix handling of errno.h.
+ (It no longer thinks errno.h always needs fixing.)
+ * patch-header.c (write_lbrac, write_rbrac): Only write
+ extern "C" if that specifically is needed.
+
+Wed Oct 20 18:12:21 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.md (cacheflush): Split into dcacheflush and icacheflush.
+ Rewrite to use space regs correctly.
+ * pa.h (TRAMPOLINE_TEMPLATE): Rewrite.
+ (TRAMPOLINE_SIZE): Update with new size.
+ (INITIALIZE_TRAMPOLINE): Rewrite.
+
+Wed Oct 20 17:58:32 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * varasm.c (output_constructor): Add support for non-zero
+ lower array bound.
+ * expr.c (store_constructor): Likewise.
+
+Wed Oct 20 15:16:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * toplev.c (rest_of_decl_compilation): Use ASM_FINISH_DECLARE_OBJECT
+ unconditionally, but define it as no-op by default.
+
+ * config/convex/convex.h (MAX_LONG_TYPE_SIZE): Defined.
+
+ * varasm.c (size_directive_output): New variable.
+ * toplev.c (rest_of_decl_compilation): Use ASM_FINISH_DECLARE_OBJECT.
+ * config/svr4.h (ASM_DECLARE_OBJECT_NAME): Set size_directive_output.
+ (ASM_FINISH_DECLARE_OBJECT): Defined.
+ * config/i386/osfrose.h, config/m88k/m88k.h: Likewise.
+
+ * patch-header.c (inf_size): Move decl inside main.
+ (strdup): Use xmalloc rathern than malloc.
+ Don't use the return value of strcpy.
+ (INF_UNGET): Take parameter; do nothing if EOF.
+ (strcpy): Declaration deleted.
+
+Wed Oct 20 11:39:56 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * xm-mips.h (HAVE_VPRINTF): Define for BSD 4.4.
+
+ * mips.c (mips_output_filename): When emitting stabs, don't
+ disable them if using gas.
+ (mips_output_lineno): Likewise.
+
+ * sparc.h (INITIALIZE_TRAMPOLINE): Emit 3 flush instrutions.
+ * sparc.md (flush): Add pattern.
+
+Wed Oct 20 10:47:54 1993 Michael Meissner (meissner@osf.org)
+
+ * configure (mips-dec-bsd, mips-dec-osf): Fix a typo in the last
+ change.
+
+Wed Oct 20 07:57:06 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h, aix31.h (RS6000_CROR_BIT_NUMBER): Deleted.
+ (RS6000_CALL_GLUE): New macro.
+ * rs6000.c (print_operand, case '.'): Use RS6000_CALL_GLUE
+ instead of RS6000_CROR_BIT_NUMBER.
+ (print_operand, case 'E', case 0): Use "return", not "break".
+ * rs6000.md (call): Don't use CROR or NOP; just use "%.".
+
+ * c-common.c (check_format_info): Consider "char", "signed char",
+ and "unsigned char" types as equivalent.
+
+ * loop.c (find_and_verify_loops): Properly continue loop after
+ moving a block of code near a loop exit.
+
+Wed Oct 20 02:01:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (extraclean): Delete file djefoo.
+ (stmp-fixproto): Depend on stmp-headers, not LIBGCC2_DEPS.
+
+Tue Oct 19 23:11:16 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * config/i386/isc.h (LONG_DOUBLE_TYPE_SIZE): Define as 64 bits
+ due to FP emulator bugs in the target kernel.
+ * config/i386/sco.h: Likewise (kernel bugs are only suspected).
+
+Tue Oct 19 21:21:34 PDT 1993 Ralph Campbell (ralphc@pyramid.com)
+
+ * configure (mips-dec-bsd): New alternative.
+ * config/mips/dec-bsd.h: New file.
+
+Tue Oct 19 18:49:40 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * c-typeck.c (digest_init): For arrays, use comptypes to compare
+ types instead of comparing pointers.
+
+Tue Oct 19 11:24:16 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
+
+ * reload1.c (reload): Cope when inherited register is larger than
+ one word.
+ (choose_reload_regs): Ditto.
+
+Tue Oct 19 18:09:18 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (define_function_unit): Add support for RIOS2
+ asymmetric integer units.
+
+Tue Oct 19 17:48:37 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (assign_parms): Properly set parm_reg_stack_loc for
+ args that are a CONCAT.
+
+ * clipper.md (movdi): Force use of "o" alternative if
+ operand 1 is a MEM.
+
+ * alpha.h (HAVE_ATEXIT): New macro.
+
+ * reload.c (push_reload, find_reloads): If an operand is
+ a SUBREG of a PLUS, force a reload and reload what is inside.
+
+ * dbxout.c (print_int_cst_octal): Fix bug in last change.
+
+Tue Oct 19 17:42:23 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c: Include reload.h
+ (arm_reload_out_hi): New function.
+ (output_call): Don't look inside operands[0].
+ * arm.h: Add function definitions for shift_instr,
+ output_mov_long_double_fpu_from_arm,
+ output_mov_long_double_arm_from_fpu,
+ and output_mov_long_double_arm_from_arm.
+ (FLOAT_WORDS_BIG_ENDIAN): Define to 1.
+ (SECONDARY_OUTPUT_RELOAD_CLASS): return GENERAL_REGS for HImode
+ outputs.
+ (ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT):
+ output floating point constants as hex, make order correct given
+ definition of FLOAT_WORDS_BIG_ENDIAN.
+ (PRINT_OPERAND): Delete redundant code when handling CONST_DOUBLE.
+ * arm.md: (reload_outhi): New pattern.
+ (movhi): Handle reloads better.
+ (restorehi): Delete. Also tidy up commented out code.
+ (call): Make this a define_expand.
+ (matcher for above): only accept MEM(reg)
+ (call_value): Handle as for (call).
+ * xm-arm.h (HOST_FLOAT_WORDS_BIG_ENDIAN): Define to 1.
+
+Tue Oct 19 13:25:03 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-type2.c (build_m_component_ref): Fix typo, type must be set,
+ after changing component. Fixes problem introduced on Thu Sep 9
+ 21:22:40 1993.
+
+Tue Oct 19 01:09:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (m68000-convergent-sysv*): Untangle from m68k-*-lynxos.
+
+ * Makefile.in (stmp-fixproto): Depend on LIBGCC2_DEPS.
+ (crtbegin.o, crtend.o): Specify -fno-inline-functions.
+
+ * config/mips/iris5.h: New file.
+ * config/mips/mips.c (mips_asm_file_start): Handle ABICALLS_ASM_OP.
+ * configure (mips-sgi-iris5*): New configuration.
+
+Mon Oct 18 16:16:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (note_mem_written): (mem (scratch)) means clobber everything.
+
+ * gen-protos.c: Include ctype.h.
+
+ * expmed.c (extract_split_bit_field): Change shift count calculation
+ in little-endian case.
+
+ * Makefile.in (stmp-fixproto): Added dependency on fixproto script.
+
+Mon Oct 18 11:26:08 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * c-typeck.c (process_init_element): Align structure elements
+ that are subaggregates.
+
+ * c-decl.c (finish_decl): After preserve_initializer call, set
+ TREE_PERMANENT bit in initializer.
+
+ * combine.c (can_combine_p): Don't combine instructions across a
+ volatile insn.
+ * rtlanal.c (volatile_insn_p): New function.
+
+Sun Oct 17 03:04:49 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * configure (powerpc-ibm-aix*): Set cpu_type.
+ * config.sub: Recognize powerpc.
+
+Sun Oct 17 21:37:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reload1.c (eliminate_regs_in_insn): Rerecognize some loads and
+ stores.
+ * pa.md (indexing loads and stores): Provide variants which avoid
+ reload problems with shift-add operations.
+
+ * pa.h (READONLY_DATA_SECTION): Disable.
+
+Thu Oct 14 12:38:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (fold_rtx): Special case handling for folding
+ a subreg of the result of a left shift.
+
+Thu Oct 14 00:05:42 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (DBX_CONTIN_LENGTH): Set to 4000.
+
+ * expr.c (do_jump_for_compare): Don't blow up if aren't any insns
+ in this sequence yet.
+
+ * alpha.h (LINK_SPEC): Now OK to pass -O3 to linker.
+ (ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE): Work around
+ bug in DEC assembler.
+
+Wed Oct 13 21:47:58 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Remove erroneous parens from Alpha OSF/1 <sym.h>.
+
+Wed Oct 13 16:08:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/sun3.h (CPP_PREDEFINES): Don't define _CROSS_TARGET_ARCH.
+
+ * fold-const.c (invert_truthvalue): Handle SAVE_EXPR.
+
+ * Makefile.in (install-collect2): Depend on install-dir.
+ (install-info, install-float-h-cross): Likewise.
+
+Wed Oct 13 15:51:02 1993 Stephen L. Moshier (moshier@world.std.com)\
+
+ * real.h (FLOAT_WORDS_BIG_ENDIAN): New macro.
+ (HOST_FLOAT_WORDS_BIG_ENDIAN): Likewise, for host.
+ (REAL_VALUE_TO_TARGET_DOUBLE (default version)): Use them.
+ (efixi, efixui): Return HOST_WIDE_INT.
+ (REAL_VALUE_FROM_INT): Cast inputs to HOST_WIDE_INT.
+ * real.c (FLOAT_WORDS_BIG_ENDIAN, HOST_FLOAT_WORDS_BIG_ENDIAN):
+ Use everywhere in place of WORDS_BIG_ENDIAN, HOST_WORDS_BIG_ENDIAN,
+ except in reference to endian-ness of integers.
+ (etrunci, etruncui, efixi, efixui, ereal_from_int, ereal_to_int,
+ ltoe, ultoe, eifrac, euifrac): Change `long' to `HOST_WIDE_INT'.
+
+Wed Oct 13 15:47:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in (initdcl, notype_initdcl): Call decl_attributes
+ before init as well as after.
+
+ * config/ns32k/pc532.h (FRAME_POINTER_REQUIRED):
+ Require a frame pointer if fn calls setjmp.
+
+Wed Oct 13 15:27:01 1993 Jim Wilson (wilson@cygnus.com)
+
+ * jump.c (jump_optimize): When moving a range of instructions,
+ include all NOTEs before the range, not just line number notes.
+
+Wed Oct 13 11:01:51 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * patch-header.c: #include <sys/types.h> before <sys/stat.h>.
+
+Wed Oct 13 11:57:33 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (seq): Fix typo: had "xubfic" instead of "subfic".
+
+ * va-m88k.h (_VA_LIST_): Define.
+
+ * alpha.c (ignore_line_number): No longer used.
+
+ * mips-tdump.c (print_global_hdr): Fix typo in cast in ctime call.
+
+ * cccp.c (main): Don't catch SIGPIPE if no such signal.
+
+ * x-alpha: File deleted, all shipped OSF systems have `ranlib'.
+
+ * fold-const.c (optimize_bit_field_compare, decode_field_reference):
+ Don't do anything if get_inner_reference returned its argument.
+
+ * bi-reverse.c: Avoid defining NULL; can cause duplicate definition
+ errors.
+
+Wed Oct 13 07:58:28 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (ASM_OUTPUT_ADDR_DIFF_ELT): Define like in V.4.
+ (FUNCTION_PROFILER, FUNCTION_PROLOGUE): Don't load up %eax with
+ the pointer value before calling indirect, just call indirect the
+ memory address to save some cycles in profiling.
+
+Tue Oct 12 12:41:12 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cse.c (record_jump_cond): At end, make missing equivalences
+ first, and then merge them.
+
+Tue Oct 12 21:30:29 1993 Doug Evans (dje@cygnus.com)
+
+ * va-h8300.h (__va_rounded_size): Fix typo in #ifdef.
+
+Tue Oct 12 20:19:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * bc-emit.c: Include stdio.h last.
+ * combine.c: Include stdio.h after gvarargs.h.
+
+Tue Oct 12 13:28:18 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: Re-write. We now assume that there are two
+ source directories (source_dir_all and source_dir_std). These
+ are handled differently. All files in source_dir_all (normally
+ ./include) are processed, but in source_dir_std (normally
+ /usr/include) we only process the standard ANSI/Posix ones where
+ we might be able to add missing prototypes.
+ * scan-decls.c (scan_decls): Rewrote from being a program whose
+ output is piped to patch-header, to a subroutine called by
+ patch-header. This should be somewhat more efficient.
+ * Makefile.in (scan-decls): Removed rule to make program.
+ * patch-header.c (recognized_macro, recognized_extern,
+ recognized_function): New functins, with logic moved out from
+ read_scan_file, so they can be called by scan_decls.
+ * patch-header (main): Read the original header file into a
+ buffer (rather than reading it with stdio). This should be more
+ efficient, partly because we can re-write it in place.
+ (inf_skip_spaces, inf_read_upto, inf_scan_ident): New functions,
+ based on skip_spaces, read_upto, and scan_ident in scan.c, but
+ these read from the in-memory buffer mentioned above.
+ * scan-types.sh: Don't check for sigset_t, since it can be a
+ struct, whose name cannot be simplify replaced by its definition.
+ * Makefile.in (deduced.h): Don't pass -nostdinc.
+
+Tue Oct 12 18:36:32 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ Changes to support native ecoff and embedded stabs debugging
+ for the Alpha.
+
+ * alpha.c (output_prolog): Put out file and line number if sdb
+ debugging format, put out .ent directive, signal start of function for
+ alpha_output_filename and set up debugging auto/arg offsets.
+ (output_epilog): Signal end of function for alpha_output_filename.
+ (alpha_output_filename, alpha_output_lineno): New functions.
+ * alpha.h (TARGET_SWITCHES): Add gas option.
+ (ASM_DECLARE_FUNCTION_NAME): Moved output of .ent directive to
+ output_prolog.
+ (DBX_NO_XREFS): Removed, gdb understands cross references and the
+ native debugger can't handle embedded stabs.
+ (ASM_FILE_START): Replace output of .file directive
+ by ASM_OUTPUT_SOURCE_FILENAME call.
+ (TARGET_GAS, MASK_GAS, SDB_DEBUGGING_INFO, DBX_DEBUGGING_INFO,
+ MIPS_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE, DEBUGGER_AUTO_OFFSET,
+ DEBUGGER_ARG_OFFSET, ASM_OUTPUT_SOURCE_LINE,
+ ASM_OUTPUT_SOURCE_FILENAME, DEFAULT_GDB_EXTENSIONS, ASM_STABS_OP,
+ ASM_STABN_OP, ASM_STABD_OP, SDB_ALLOW_FORWARD_REFERENCES,
+ SDB_ALLOW_UNKNOWN_REFERENCES, PUT_SDB_DEF, PUT_SDB_PLAIN_DEF,
+ PUT_SDB_TYPE, PUT_SDB_BLOCK_START, PUT_SDB_BLOCK_END,
+ PUT_SDB_FUNCTION_START, PUT_SDB_FUNCTION_END, PUT_SDB_EPILOGUE_END,
+ ASM_FINAL_SPEC, CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB,
+ MIPS_UNMARK_STAB, SHASH_SIZE, THASH_SIZE): New macros.
+ * alpha-gdb.h: New file.
+ * configure (alpha-*-osf*): Handle --with-stabs and --with-gnu-as.
+ * mips-tfile.c (add_local_symbol): Index in the external symbol
+ must point to local symbol table entry for procedures.
+
+Mon Oct 11 16:14:53 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: If a file is referenced with double quotes from
+ a fixed file, make sure it is copied into the fixed include
+ directory.
+ Remove DPS/XDPSlib.h special-case code.
+
+Tue Oct 12 08:05:28 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000/powerpc.h: New file.
+ * configure (powerpc-ibm-aix*): New target.
+ * rs6000.h (MASK and TARGET): Add new flags for POWER2 and PowerPC
+ with square root.
+ (ASSEMBLER_DIALECT): New macro.
+ (CONDITIONAL_REGISTER_USAGE): Set MQ register fixed if not POWER.
+ (SHIFT_COUNT_TRUNCATED): Conditional on POWER.
+ (ASM_OUTPUT_REG_{PUSH,POP}): Mnemonics dependencies.
+ * rs6000.c (rs6000_override_options): Use new TARGET flags and
+ add some more cpu choices.
+ (output_prolog, output_epilog): Support new mnemonics and avoid
+ using lm/stm when not POWER.
+ * rs6000.md: Update define_function_units.
+ Put both old and new mnemonics in all templates.
+ Add target tests to pattern conditional field throughout.
+ (one_cmplsi2): Make POWER and PowerPC variants.
+ (mulsi3): Convert to define_expand which calls appropriate POWER
+ or PowerPC pattern.
+ (divsi3, udivsi3): Add patterns for PowerPC case. Update divsi3
+ define_expand for PowerPC case.
+ (ashlsi3, lshrsi3, ashrsi3, extendqisi2, extendqihi2): Convert to
+ define_expand which calls appropriate POWER or PowerPC pattern.
+ (floating-point): Add PowerPC single-precision FP, and SF/DF sqrt
+ insns for 603, 604, 620.
+ (call insns): Use "nop" for magic TOC restore.
+ (move data, nop): Use PowerPC extended mnemonics.
+
+Tue Oct 12 07:58:36 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (SETUP_INCOMING_VARARGS): If not TARGET_FPREGS,
+ save another copy of the integer regs where the FP regs would
+ have gone.
+
+ * tree.h (struct tree_type): symtab_address is now a union of
+ pointer and integer.
+ (TYPE_SYMTAB_ADDRESS): Refer to the integer.
+ (TYPE_SYMTAB_POINTER): New macro to refer to pointer.
+ * sdbout.c (KNOWN_TYPE_TAG, SET_KNOWN_TYPE_TAG): Refer to
+ TYPE_SYMTAB_POINTER and remove casts.
+ (tag_of_ru_type): Likewise.
+
+ * reload1.c (reload): Fix typo in RELOAD_FOR_INSN case when
+ accounting for reloads.
+
+ * expr.c (convert_modes): Reset OLDMODE from X after we strip
+ a SUBREG due to a promoted variable.
+
+ * dbxout.c (dbxout_type, case INTEGER_TYPE): Output bounds in
+ octal if type wider than HOST_WIDE_INT.
+ (print_int_cst_octal): Trim bound by precision of its type.
+ Avoid warning on what may be shift into sign bit.
+
+ * bi-reverse.c: Add missing #include for hconfig.h.
+
+ * fixincludes: Quote braces when looking for DONE files.
+
+ * final.c (dialect_number): New variable.
+ (init_final): Initialize it.
+ (output_asm_insn, asm_fprintf): Support ASSEMBLER_DIALECT.
+
+Tue Oct 12 01:34:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): If traditional, allow unbraced scalar
+ to initialize the first element of an aggregate.
+
+ * cccp.c (output_line_command): Output the `4' flag only if cplusplus.
+ (do_line): Handle the `4' flag.
+
+ * final.c (final_scan_insn): Call walk_alter_subreg for operands
+ that are PLUS or MULT, before constrain_operands.
+
+Mon Oct 11 15:18:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * real.c (debug_real): New function.
+
+ * regclass.c (reg_scan_mark_refs): XEXP (x, 0) in EXPR_LIST may be 0.
+
+ * config/m68k/m68k.md (cmphi): Turn on constraints to support cmpm.w.
+
+Mon Oct 11 13:20:54 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * unroll.c (unroll_loop): Set map->const_equiv_map_size to
+ new_maxregnum.
+ (copy_loop_body): When set const_age_map entry for split dest reg,
+ verify that it is within the bounds of the map.
+ (find_splittable_regs): Count number of biv sets, not number of
+ bivs. Don't pass result to find_splittable_givs.
+ (find_splittable_givs): Delete parameter result. Add local
+ variable result.
+
+Mon Oct 11 07:43:31 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_assignment): When assigning an INDIRECT_REF to
+ a RESULT_DECL, the size and source rtx were swapped.
+
+ * function.c (trampoline_address): Don't allocate anything
+ from parent function's current obstack.
+
+ * regclass.c (reg_scan): Don't call reg_scan_mark_refs on notes
+ if there aren't any.
+ (reg_scan_mark_refs, case INSN_LIST, EXPR_LIST): New cases.
+
+ * cse.c (simplify_binary_operation): Test value of
+ SHIFT_COUNT_TRUNCATED if it is defined.
+ * combine.c (subst, shift and rotate cases): Likewise.
+ * a29k.h, alpha.h, fx80.h, i960.h, mips.h, pa.h, pyr.h, rs6000.h:
+ Define SHIFT_COUNT_TRUNCATED to have a value of 1.
+ * sparc.h, tahoe.h, we32k.h: Likewise.
+
+Mon Oct 11 02:40:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * regclass.c (regno_last_note_uid): New vector.
+ (reg_scan): Initialize regno_last_note_uid.
+ Call reg_scan_mark_refs for the notes. Pass its new arg.
+ (reg_scan_mark_refs): New arg NOTE_FLAG. Pass it recursively.
+ Set regno_last_note_uid.
+ * regs.h (regno_last_note_uid): Declared.
+ * jump.c (jump_optimize): Use regno_last_note_uid when deciding
+ whether a register is set and never used.
+
+Sun Oct 10 22:51:01 1993 Stephen Moshier (moshier@world.std.com)
+
+ * real.c (asctoeg): Fix backward condition in last change.
+
+Sun Oct 10 22:33:17 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * configure (hppa1.0-*-mach*): Use collect2.
+ (hppa1.1-*-mach*): Likewise.
+
+ * pa.c (legitimize_pic_address): Delete unused variables.
+ (output_block_move, output_ior): Likewise.
+ (hppa_builtin_saveregs): Likewise.
+ (emit_move_sequence): Add parens as suggested by -Wall.
+ (compute_frame_size): Likewise.
+ (output_ascii): Return type is "void".
+ (hppa_expand_prologue, import_milli): Likewise.
+
+ * pa.c (output_function_prologue): Pass the highest register
+ number saved for ENTRY_GR and ENTRY_FR directives rather
+ than the number of registers saved.
+ (hppa_expand_prologue): Account for %r4 when it's being
+ used as a frame pointer.
+
+Sun Oct 10 18:42:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (start_init): Don't set require_constant_elements
+ for scalar types.
+
+ * c-parse.in (stmt): Don't call default_conversion on top-level
+ expressions.
+
+ * c-typeck.c (convert_for_assignment): Allow silent conversion to
+ a pointer from an integer 0 that resulted from arithmetic.
+
+ * varasm.c, c-pragma.c (enum pragma_state): Defined.
+
+ * config/i386/i386.c (restore_386_machine_status)
+ (save_386_machine_status): New functions.
+ (clear_386_stack_locals): Store those functions in
+ save_machine_status, restore_machine_status.
+ (struct machine_function): New structure definition.
+
+ * function.h (struct function): New field `machine'.
+ * function.c (save_machine_status, restore_machine_status): New vars.
+ (push_function_context, pop_function_context): Use them.
+
+ * explow.c (emit_stack_save): Cast enum array index to int.
+
+Sun Oct 10 12:49:39 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c (const_ok_for_arm): Cast constants to unsigned HOST_WIDE_INT.
+ (output_prologue): Sanity check the finite state machine.
+ (output_epilogue): Delete unused variable.
+ (final_prescan_insn): Always clear arm_target_insn when FSM goes to
+ state 0.
+ * arm.h (OPTIMIZATION_OPTIONS): Don't set flag_omit_frame_pointer,
+ since this inhibits debugging.
+ (ASM_OUTPUT_INTERNAL_LABEL): Always clear arm_target_insn when FSM
+ goes to state 0.
+
+Sun Oct 10 08:56:58 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (ALPHA_COSTS): Add missing arg to call to rtx_cost.
+
+ * combine.c (force_to_mode, case ASHIFTRT): Verify that result of
+ making a LSHIFTRT remains a shift.
+
+ * tree.c (save_tree_status): Function_maybepermanent_obstack is the
+ function_obstack of parent function.
+ (restore_tree_status): Only free objects later than
+ maybepermanent_firstobj in function_maybepermanent_obstack.
+ (make_node): Fix logic error in PARM_DECL code.
+ Put PARM_DECL in parent function's saveable obstack.
+ * function.c (put_reg_into_stack): Allocate fixup structure in
+ saveable obstack.
+
+ * expr.c (expand_assignment): Don't short circuit store_expr
+ when TO is a VAR_DECL since it needs special handling if promoted.
+
+ * combine.c (subst, case SUREG): Only call force_to_mode if both
+ inner and outer modes are MODE_INT.
+
+ * mips-tfile.c (WORD_ALIGN): Fix typo in last change.
+
+ * c-common.c (check_format_info): Support X/Open formats like "%1$d".
+
+Sat Oct 9 22:29:17 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * configure: If no target is specified, try getting one
+ with config.guess.
+ * config.guess: New file.
+
+Sat Oct 9 19:50:24 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * c-common.c (check_format_info): Avoid ?: conditional for function
+ to be called.
+
+ * config/vax/xm-vms.h [VAXC] (bc_check_for_full_enumeration_handling)
+ (current_function_has_nonlocal_goto)
+ (output_deferred_addressed_constants): New macros to shorten
+ external names exceeding 31 characters.
+
+ * make-cc1.com: Move alloca handling before bytecode construction
+ so that VAX C won't need two different values for LIBS. Eliminate a
+ comment about make-like functionality that referred to a capability
+ which has not been implemented.
+
+Sat Oct 9 21:53:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * fixincludes: Unquote a quoted `t' in a #define _IO line, for AIX
+ 3.2 sys/stropts.h #define _IO(t,v).
+ (sys/spinlock.h): Don't copy it if it doesn't exist.
+ (DPS/XDPSlib.h): Change "XDPS.h" to <DPS/XDPS.h>, for AIX.
+
+Sat Oct 9 15:00:00 1993 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: Change $(srcdir)/ to $(srcdir)\ in commands.
+
+Sat Oct 9 15:17:22 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case ABS_EXPR): Don't copy twice into
+ volatile MEM.
+
+ * expr.c (expand_expr): Never reset ORIGINAL_TARGET.
+ Pass ORIGINAL_TARGET to lang_expand_expr, not TARGET.
+
+Sat Oct 9 13:27:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * tree.c (pop_momentary_nofree): New function.
+ * c-parse.in (initdcl, notype_initdcl, init): Undo previous change.
+ (init): Use pop_momentary_nofree if the initializer has real data.
+
+Sat Oct 9 12:55:26 1993 Stephen Moshier (moshier@world.std.com)
+
+ * real.c (asctoeg): Allocate local buffer dynamically. Count
+ any lost significant digits before the decimal point.
+
+Fri Oct 8 16:33:42 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-tree.h (OFFSET_REF): Override OFFSET_REFs from the back-end, as
+ we need to do something more complex with them.
+ * cp-tree.def (CP_OFFSET_REF): Very similar to OFFSET_REFs, but
+ allow the front-end to handle them.
+
+Fri Oct 8 14:40:29 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c (dump_expr, REAL_CST): Support printing of real values
+ when REAL_IS_NOT_DOUBLE (prints out rep in hex).
+
+Fri Oct 8 13:54:03 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-type2.c (store_init_value): Move pointer to member function
+ initilization code to...
+ * cp-type2.c (digest_init): here. Allows nested pointer to member
+ functions to work.
+ * cp-decl.c (build_ptrmemfunc_type): Use a real union instead of a
+ magic union, as the initialization code doesn't like them.
+ * cp-tree.h (TYPE_PTRMEMFUNC_FN_TYPE): Changed to go though the
+ union.
+ * cp-tree.h (DELTA2_FROM_PTRMEMFUNC, PFN_FROM_PTRMEMFUNC): Accessor
+ macros to go thought union. Allows us to change pointer to member
+ functions a little easier.
+ * cp-typeck.c (get_member_function_from_ptrfunc,
+ build_binary_op_nodefault): Changed to use new accessor macros.
+ * cp-typeck.c (build_ptrmemfunc): Use new union instead. Also, make
+ sure TREE_CONSTANT is set for CONSTANT things.
+ * cp-decl.c (pfn_or_delta2_identifier): Added to cache
+ get_identifier calls.
+ * cp-tree.h (pfn_or_delta2_identifier): Declare it.
+ * cp-decl.c (init_decl_processing): Setup pfn_or_delta2_identifier.
+
+Fri Oct 8 19:03:09 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * xcoffout.h (DBX_STATIC_BLOCK_START): For N_LCSYM, force change
+ to text section to avoid assembler bug.
+
+ * mips.md (movsi_unaligned): Change in comment "loads" to "stores".
+
+ * calls.c (emit_library_call_value): Compute struct_value_size,
+ and pass it to emit_call_1.
+
+Fri Oct 8 16:13:17 1993 H.J. Lu (hjl@nynexst.com)
+
+ * config/i386/linux.h (STARTFILE_SPEC): Handle -p and -pg
+ outermost. Also add support for cross-linking.
+
+Fri Oct 8 15:20:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (cp-error.o, cp-errfn.o): Add dependency rules.
+
+Fri Oct 8 08:00:51 1993 Eric Youngdale (eric@kafka)
+
+ * linux.h: Only include i386/gstabs.h if LINUX_ELF is not defined.
+
+ * linuxelf.h: Copy a lot of stuff from the SVr4 configuration:
+ include "i386/i386.h", "i386/att.h" and "svr4.h".
+ (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): Undefine.
+ (ASM_FILE_START, RETURN_IN_MEMORY, ASM_OUTPUT_ADDR_DIFF_ELT)
+ (JUMP_TABLES_IN_TEXT_SECTION, DBX_REGISTER_NUMBER): Copy from sysv4.h.
+ (TARGET_VERSION): Define to print "i386 Linux/ELF".
+ (LINUX_ELF): Define, before we include "i386/linux.h"
+ (YES_UNDERSCORE): Undefine.
+
+Fri Oct 8 13:40:44 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h, i386/osfelf.h (CPP_SPEC): If buliding for shared
+ libraries, define __SHARED__.
+
+ * i386/osfrose.h (FUNCTION_PROFILER): If half-pic, call mcount in a
+ half-pic fashion.
+ (FUNCTION_PROLOGUE): If half-pic call through _mcount_ptr in a
+ half-pic fashion.
+
+ * halfpic.c (half_pic_external): New function to declare a halfpic
+ identifier as always external.
+
+ * halfpic.h (half_pic_external): declare function.
+ (HALF_PIC_EXTERNAL): Declare accessor macro.
+
+Fri Oct 8 15:03:56 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF C++ front-end merge.
+ Thu Oct 7 11:45:32 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (CPLUS_OBJS): Change error.o to cp-errfn.o
+
+ * cp-*.c, cp-parse.y: Rename lang_error and its kin to cp_error
+ and the like to accomodate rms's belief structure.
+
+ * error.c: Moved to cp-errfn.c to accomodate rms's belief structure
+
+ Wed Oct 6 15:05:49 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-pt.c (mangle_class_name_for_template): Always use type_as_string
+ for printing out type parameters. Nuke id and type variables.
+
+ * cp-error.c (dump_expr, INTEGER_CST): Support printing of character
+ literals and large integers
+ (dump_char): New function
+ (dump_type): Deal with ** and *& more prettily
+
+ * cp-pt.c (mangle_class_name_for_template): Strip out code for
+ printing template parameters, replace with call to expr_as_string.
+
+ * cp-method.c (build_overload_value): descend through
+ TREE_OPERAND on NOP_EXPRs as well as NON_LVALUE_EXPRs.
+
+ * cp-decl.c (poplevel_class): Add assertion that
+ class_binding_level is not NULL.
+
+ Tue Oct 5 11:11:25 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ Patches to support proper handling of system includes without munging:
+
+ * cp-lex.h: Declare in_c_header, a flag meaning 'implicitly wrap this
+ file in extern "C" { }'.
+
+ * cp-lex.c: Define in_c_header.
+ (check_newline): If in_c_header when changing files,
+ pop_lang_context().
+ (check_newline): If "4" seen on #line line, push_lang_context(C).
+
+ * cccp.c: Add a new field c_system_include_path to struct
+ file_name_list which indicates that the directory contains C-language
+ system includes.
+ (*various*): Set this flag correctly
+ (is_system_include): Return 2 if C-language system include.
+ (output_line_command): Output " 4" after " 3" for C-language system
+ include.
+
+ * cp-tree.h (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Coerce X to boolean
+ value
+
+ Mon Oct 4 17:03:48 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-tree.h: Add declaration for flag_external_templates
+
+ * cp-decl.c (start_decl): Don't declare flag_external_templates
+
+ * cp-pt.c: Ditto
+
+ * cp-parse.y (template_instantiate_once): Ditto
+
+ * cp-lex.c (reinit_parse_for_method): Ditto
+ (cons_up_default_function): Ditto
+ (extract_interface_info): Don't set interface_unknown
+ if (processing_template_defn && !flag_external_templates)
+
+ * cp-error.c (dump_type): Deal properly with pointers to member
+ functions.
+
+ * cp-pt.c (instantiate_class_template): If !flag_external_templates,
+ increment interface_unknown so that nested classes will be dealt with
+ properly.
+ (end_template_instantiation): If !flag_external_templates,
+ decrement interface_unknown.
+
+ * cp-lex.c (cons_up_default_function): Remove redundant check
+ for processing_template_defn && !flag_external_templates
+ (reinit_parse_for_method): Ditto
+
+ * cp-parse.y (template_instantiate_once): Don't mess with
+ interface_unknown
+
+ Mon Oct 4 15:47:34 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Move setting of TREE_CHAIN after
+ all possible return 0;s as we only want to do this when we know
+ that we are dealing with a duplicate.
+
+ * cp-decl.c (start_function): Remove my_friendly_abort 19. Allows
+ one to declare a built-in as extern inline.
+
+ Mon Oct 4 12:47:33 1993 John F Carr (jfc@mit.edu)
+
+ * cp-lex.c (consume_string): Change variable `c' to int so return
+ value of getch can be assigned to it safely. Compare return value
+ of getch to EOF, not -1.
+
+ Mon Oct 4 11:42:46 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (error and its kin): Use #defines for the argument
+ lists for ease of adding arguments, and of moving to vfprintf when
+ dje adds it.
+
+ * error.c (lang_thing and its children): Do the same thing.
+
+ * cp-typeck.c (build_binary_op): Do away with the kludge, now that
+ error accepts more arguments.
+
+ Sun Oct 3 16:34:39 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-error.c: Remove all traces of in_parmlist
+
+ Sun Oct 3 13:54:57 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (convert_harshness_ansi, convert_harshness_old): Handle
+ pointer to function members properly.
+
+ Fri Oct 1 16:42:30 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-error.c (dump_function_decl, dump_function_name): Make static
+ to match prototype.
+
+ Fri Oct 1 15:23:31 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_ptrmemfunc): Move some code into the virtual
+ conditional part. Fixes problem with core core dumping when the
+ class that we want to build a pointer to member function for doesn't
+ have any virtual functions.
+
+ Thu Sep 30 18:15:29 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-parse.y (id_scope): Print the name of the invalid scope.
+ (unary_expr): Add .scope new typespec '(' typespec ')' expansion
+ which just gives an error.
+
+ * cp-typeck.c (build_binary_op): Print more helpful message for
+ a missing member operator (print the desired type involved).
+ Very kludgey due to error()'s two-arg limit.
+
+ * error.c (lang_thing): Abort if more than NARGS (currently 2) are
+ passed, since this is likely to cause a seg fault elsewhere anyway.
+
+ Thu Sep 30 14:19:28 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * g++int.texi: Add error reporting section, make `makeinfo'able
+
+ * cp-type2.c (my_friendly_abort): Deal with recursive calls
+
+ Thu Sep 30 12:24:33 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (grok_array_decl): Don't pedwarn on reversing the array
+ and its index in `a[b]'.
+
+ * cp-typeck.c (build_conditional_expr): Make pointer type mismatch
+ in a conditional expression get a pedwarn.
+ (build_binary_op_nodefault): Make comparison between different
+ pointer types lacking a cast get a pedwarn.
+ (build_modify_expr): Don't strip the NOP_EXPRs, since we're using
+ the rhs in a non-lvalue context.
+ (convert_for_assignment): Allow conversion of 0 to a pointer, but
+ not a 0 that results from casting or folding.
+
+ Thu Sep 30 11:24:59 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-typeck.c (build_modify_expr): For memberwise assignment,
+ put nop_expr (reference_type (lhstype)) at the end of of the list so
+ that the expression has the correct type.
+
+ * error.c (lang_thing): Don't rely on STDC array initialization
+
+ Tue Sep 28 18:20:05 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (build_virtual_init): Use get_binfo and
+ convert_pointer_to_real, to find the right basetype to convert to,
+ instead of trying to use convert_pointer_to, as convert_pointer_to
+ doesn't handle complex MI situations. Cures a bogus "cannot
+ convert a pointer of type `B' to a pointer of type `A'" when the
+ compiler is initializing virtual table pointers.
+
+ Mon Sep 27 14:54:42 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_method_call): Use get_binfo and
+ convert_pointer_to_real, to find the right basetype to convert to,
+ instead of trying to use convert_pointer_to, as convert_pointer_to
+ doesn't handle complex MI situations. Cures a bogus "cannot
+ convert a pointer of type `B' to a pointer of type `A'" when the
+ compiler is setting up the `this' pointer.
+ * cp-cvt.c (convert_pointer_to): Just call convert_pointer_to_real
+ to implement functionality.
+ * cp-cvt.c (convert_pointer_to_real): New routine. Uses new
+ functionality in get_base_distance to figure out which exact
+ parent we want to convert to.
+ * cp-search.c (get_base_distance_recursive, get_base_distance):
+ Modify to support searching for a specific PARENT given as a binfo
+ from our hierarchy.
+ * cp-typee.h (convert_pointer_to_real): Declare new routine.
+
+ Mon Sep 27 13:02:51 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-type2.c (my_friendly_abort): Undo previous change
+
+ * cp-*.c: Use lang_error instead of error_with_decl,
+ error_with_aggr_type, etc. Not complete; I only changed the easy
+ cases and a few of the more obscure ones. Please convert calls
+ over when you're working on an appropriate section.
+
+ * cp-method.c: Strip out error reporting code
+
+ * Makefile.in (CPLUS_OBJS): Add error.o and cp-error.o
+
+ * cp-error.c: New file, contains call-back functions for C++.
+ The actual output code is an extensively overhauled version of the
+ code from cp-method.c.
+ Don't call my_friendly_* to avoid undesirable recursion.
+
+ * error.c: New file, provides call-back mechanism for language-
+ dependent error reporting.
+
+ Fri Sep 24 13:52:27 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-type2.c (my_friendly_abort): Don't die quietly if
+ errorcount or sorrycount are positive, die loudly.
+
+Fri Oct 8 13:58:13 1993 Doug Evans (dje@cygnus.com)
+
+ * loop.c (scan_loop): When skipping consecutive insns,
+ don't count notes.
+
+Fri Oct 8 10:41:07 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * c-common.c (check_function_format): Correct error in last
+ change.
+
+Fri Oct 8 08:10:03 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in (initdcl, notype_initdcl): Call push_momentary and
+ pop_momentary here.
+ (init): Not here.
+
+Fri Oct 8 06:35:07 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * dbxout.c (dbxout_type, case INTEGER_TYPE): Correctly check
+ for type smaller than `integer'.
+
+ * expr.c (expand_expr, case MAX_EXPR): Don't use TARGET directly
+ if it is a volatile MEM.
+
+ * i386/t-aix, i386/t-isc, i386/t-osfrose, i386/t-sco, mips/t-osfrose:
+ Remove LIMITS_H; hasn't been used for a while.
+
+ * configure: Add EXTRA_PASSES like we add EXTRA_HEADERS.
+ Correct EXTRA_HEADERS handling to accept multiple names.
+ (mips-*-*): Set extra_passes to mips-tfile and mips-tdump when
+ we use t-mips, t-bsd, t-svr[34], and t-ultrix.
+ * Makefile.in (mips-tfile, mips-tfile.o, mips-tdump, mips-tdump.o):
+ New rules.
+ * mips-tfile.c: Don't define memory functions on Alpha.
+ (Ptrdiff_t): Always `long'.
+ (WORD_ALIGN): Make portable.
+ * mips/t-bsd, t-mips, t-svr3, t-svr4, t-ultrix: Remove
+ definition of EXTRA_PASSES and remove rules for mips-* files.
+
+ * dbxout.c (dbxout_parms): Don't confuse a parameter at an
+ offset of zero from AP or FP with one that has variable size.
+
+ * calls.c (emit_library_call): Fix typo in last change; should
+ use Pmode instead of SImode.
+
+Fri Oct 8 00:34:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_decl): Error if block-scope static var
+ has incomplete type.
+
+ * expr.c (expand_expr, case VAR_DECL): If decl wasn't laid out,
+ lay it out now, and fix the rtl's mode.
+
+Thu Oct 7 12:30:10 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * c-decl.c (complete_array_type): Correctly set MAXINDEX to
+ one less than array size.
+
+Thu Oct 7 20:44:41 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * c-typeck.c (build_binary_op): For *_DIV_EXPR, set shorten based
+ on orig_op0.
+
+Thu Oct 7 18:19:17 1993 Jim Wilson (wilson@cygnus.com)
+
+ * xm-mips.h (HAVE_VPRINTF): Correct typo, is VPRINTF not VFPRINTF.
+
+ * Makefile.in (LIB2FUNCS): Add _fixtfdi, _fixunstfdi, _floatditf.
+
+Thu Oct 7 14:58:02 1993 Michael Meissner (meissner@osf.org)
+
+ * configure (i386-osf): ELF on OSF/1 does not need collect2.
+
+Thu Oct 7 17:38:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): New option -lang-c-c++-comments.
+
+Thu Oct 7 16:40:38 1993 Michael Meissner (meissner@osf.org)
+
+ * config/i386/osfrose.h (OSF_PROFILE_BEFORE_PROLOGUE): New macro
+ to determine whether profiling goes before the function prologue
+ or after. New style profiling goes before in order to save
+ getting and saving the function's callers address or have mcount
+ 'know' there is a frame pointer. Old style profiling using mcount
+ and some ELF PIC profiling goes after the prologue.
+ (FUNCTION_PROLOGUE): Redefine in order to get new style profiling
+ before the function prologue if desired.
+ (FUNCTION_PROFILER): Do not put a profile call if it already has
+ been put out in the prologue. Change new style profiling to call
+ through _mcount_ptr instead of _real_mcount. Propigate ROSE brain
+ damage regarding mcount being in the users name space to ELF.
+ (SUBTARGET_SWITCHES): Make -mmcount default again instead of
+ -mno-mmcount.
+
+ * i386.h (FINALIZE_PIC): Add macro to set the variable
+ current_function_uses_pic_offset_table if either -p or -a switches
+ are used.
+
+Thu Oct 7 17:07:57 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * rtl.c (byte_mode, word_mode): Move to emit-rtl.c.
+ (init_rtl): Move initialization of byte_mode and word_mode to
+ init_emit_once.
+ * emit_rtl.c (byte_mode, word_mode): Moved from rtl.c.
+ (init_emit_once): Moved in initialization of bytes_mode and
+ word_mode from init_rtl.
+
+Thu Oct 7 11:11:25 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cccp.c (struct file_name_list): Add new field c_system_include_path.
+ (*various*): Set this flag correctly
+ (is_system_include): Return 2 if C-language system include.
+ (output_line_command): Output " 4" after " 3" for C-language system
+ include.
+
+Thu Oct 7 14:45:20 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * Makefile.in (install-dir): Fix typo.
+ (install-common): Remove obsolete comment.
+ (install-common): Install native g++ only if not cross.
+
+Thu Oct 7 11:27:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (emit_library_call, emit_library_call_value):
+ Allocate a temp slot if arg must be passed by reference.
+
+ * gcc.c (read_specs): Fix call to bzero.
+
+Thu Oct 7 08:53:57 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * alpha.md: Clean up usage of commutative declarator `%'.
+
+Thu Oct 7 08:14:46 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * i860/xm-fx2800.h (HAVE_VPRINTF): Fix typo; was HAVE_VFPRINTF.
+
+ * xm-alpha.h: Always declare malloc, realloc, etc, to be void *.
+
+ * combine.c (force_to_mode): Sign-extend constant being truncated.
+
+Wed Oct 6 18:53:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * bi-lexer.c (xmalloc, xrealloc): Cast the result of malloc, realloc.
+
+Wed Oct 6 15:30:39 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (FUNCTION_PROFILER): Define to pass the function
+ address, its caller, and the unique label address through the
+ _real_mcount pointer, unless -mmcount is used, in which case use
+ the old calling sequence.
+ (SUBTARGET_SWITCHES): Add -mmcount, -mno-mcount support.
+
+Wed Oct 6 15:29:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (output_function_prologue): Pass on information about the
+ number of callee saved general and floating point registers which
+ are saved by the current function's prologue.
+ (hppa_expand_prologue): Keep track of the number of callee
+ register saves done for general and floating point registers.
+
+Wed Oct 6 13:50:03 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * cexp.y (MAX_CHAR_TYPE_SIZE, MAX_INT_TYPE_SIZE,
+ MAX_LONG_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): Define.
+ (yylex): Use them instead of the non-MAX versions, to avoid
+ dependencies on target_flags.
+
+Wed Oct 6 13:47:13 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * combine.c (try_combine): New variable i3_subst_into_i2.
+ Set it for special case of substituting i3 into i2. Use it near
+ end to detect when special case succeeded. Move i2notes to
+ i3notes for this special case.
+ (distribute_notes, REG_UNUSED case): Ignore all REG_UNUSED notes
+ except those from I3.
+
+Wed Oct 6 13:14:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_c_cast): When making a CONSTRUCTOR, provide
+ the dummy first operand.
+
+ * real.c (real_value_truncate): Correct etrunci argument
+ in case SImode.
+
+Wed Oct 6 06:55:05 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * final.c (asm_fprintf): Add cases for 'w' and 'l'.
+
+ * Makefile.in (bi-opcode.o): Includes hconfig.h.
+ * bi-lexer.c: Remove declarations of malloc and realloc.
+ * bi-opcode.c: Include hconfig.h.
+ * bi-parser.y: Remove declaration of malloc.
+
+ * regclass.c (record_reg_classes): Check if operands are the same
+ by seeing if they are the same register.
+
+ * cse.c (record_jump_cond): Rehash OP1 if OP0's insert_regs returns
+ nonzero.
+
+ * calls.c (expand_call): Add yet another assignment to MEM_IN_STRUCT_P.
+
+Wed Oct 6 00:08:28 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * sparc.c (uns_small_int, uns_arith_operand): New functions.
+ * sparc.md (umulsidi3): Use uns_arith_operand not arith_operand.
+ (const_umulsidi3): Use uns_small_int not small_int.
+
+ * sparc.h (SELECT_CC_MODE): Add support for ASHIFT.
+ * sparc.md (ashlsi3+1, ashlsi3+2): New patterns to replace shift
+ and compare with addcc.
+
+Tue Oct 5 16:25:32 1993 Jim Wilson (wilson@cygnus.com)
+
+ * sched.c (sched_analyze_2): Make volatile asms depend on all
+ pseudo registers.
+
+ * mips.c (mips_expand_prologue): Handle structure return values as
+ the first argument if necessary.
+
+ * mips.h (CLASS_MAX_NREGS): For DFmode and !TARGET_FLOAT64 case,
+ return 2 not 4.
+ (CLASS_UNITS): Take size parameter instead of num (words).
+
+ * c-typeck.c (output_init_element): When try to copy FIELD if it
+ is an interger constant, first check to make sure it is nonzero.
+
+ * reorg.c (fill_simple_delay_slots): When take insn from a
+ following unconditional branch target, if new_label is zero, must
+ set it to the result of find_end_label ().
+
+ * iris3.h (INITIALIZE_TRAMPOLINE, TRANSFER_FROM_TRAMPOLINE):
+ Delete.
+ * mips.h (INITIALIZE_TRAMPOLINE): Delete #ifndef/#endif. Change
+ function name from __enable_execute_stack to __gcc_flush_cache.
+ (TRANSFER_FROM_TRAMPOLINE): Likewise. Delete code calling
+ mprotect. Uncomment code calling cacheflush.
+
+Tue Oct 5 16:11:53 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (error and its kin): Use #defines for the argument
+ lists for ease of adding arguments and add one arg.
+
+Tue Oct 5 16:05:11 1993 Tor Egge (tegge@pvv.unit.no)
+
+ * cccp.c (rescan): Don't expand an identifier after a '#'.
+
+Tue Oct 5 15:15:52 1993 Chip Salzenberg (chip@fin.uucp)
+
+ Move format warning code to c-common.c for use with C++.
+ * c-tree.h (init_function_format_info, record_function_format,
+ check_function_format): Declare.
+ * c-common.c: Include <ctype.h>; avoid home-grown ISDIGIT.
+ (decl_attributes): Call record_function_format with DECL_NAME
+ and also DECL_ASSEMBLER_NAME.
+ (struct format_char_info): Moved here from c-typeck.c.
+ (print_char_table): Likewise; renamed from print_table.
+ (scan_char_table): Likewise; renamed from scan_table.
+ (struct function_format_info): Likewise; add assembler_name.
+ (function_format_list): Make list, not array.
+ (init_function_format_info): Likewise; renamed from
+ init_format_info_table.
+ (record_function_format): Likewise; renamed from
+ record_format_info; record assembler_name.
+ (check_format_info): Likewise; renamed from check_format.
+ (check_function_format): New interface that does not require
+ knowledge of struct function_format_info.
+ * c-decl.c (init_decl_processing): Call init_function_format_info.
+ * c-typeck.c (struct format_char_info, print_table, scan_table,
+ struct function_info, function_info_entries, function_info_table,
+ record_format_info, init_format_info_table, check_format): Moved
+ to c-common.c.
+ (build_function_call): Call check_function_format.
+
+Tue Oct 5 14:08:18 1993 Wolfgang Stukenbrock (wgstuken@informatik.uni-erlangen.de)
+
+ * gcc.c (choose_temp_base): Correct size allocated for temp_filename.
+
+Tue Oct 5 06:34:34 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (contains_placeholder_p): Return 0 for CONSTRUCTOR.
+ (substitute_in_expr): Don't allow CONSTRUCTOR.
+
+ * tree.c (make_node, case 'd'): Refine in which obstack
+ PARM_DECLs are allocated.
+
+ * calls.c (expand_call): Properly test if we need to promote
+ operand; use convert_modes instead of convert_to_mode.
+ * expr.c (convert_modes): Properly handle extending constants
+ since we might be changing signedness.
+
+ * gcc.c (read_specs): Make a null entry at end of `compilers'
+ when reading new entry from file.
+
+ * tree.c (contains_placeholder): Return 0 for WITH_RECORD_EXPR.
+
+ * bi-arity.c, bi-lexer.c, bi-opname.c, bi-parser.y: Include hconfig.h.
+ * Makefile.in (bi-arity.o, bi-lexer.o, bi-opname.o, bi-parser.o):
+ Likewise.
+
+ * bc-emit.c (dconst[012], dconstm1): Remove redundant definition.
+
+Tue Oct 5 06:24:43 1993 Lisa Repka (lisa@MicroUnity.com)
+
+ * varasm.c (decode_rtx_const, case CONST_DOUBLE): Only use mode
+ of X if it is not VOIDmode.
+
+Tue Oct 5 00:45:30 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * i386/i386.c (output_to_reg): Handle XFmode write to MEM by
+ reading back value after write if source doesn't die.
+ * i386/i386.md (pushxf,movxf,extenddfxf2,extendsfxf2): Likewise.
+
+ * i386/i386.md (movxf,extenddfxf2,extendsfxf2): Don't emit fld
+ before calling output_to_reg: output_to_reg does that now.
+
+ * i386/i386.h (FIXED_REGISTERS): Don't fix hard reg st7 if XFmode
+ is enabled.
+
+ * reg-stack.c (move_for_stack_reg): If the 387 regstack is not
+ full when doing an XFmode write from 387 to MEM, copy the source
+ reg and write the copy.
+
+Mon Oct 4 18:40:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * regclass.c (record_reg_classes): There is no alt_cost
+ for a pair of matching args if they are the same pseudo reg.
+
+ * varasm.c (bc_output_ascii): New function.
+ (assemble_string): Use it.
+ (assemble_static_space, assemble_variable): Put braces around uses
+ of BC_OUTPUT_COMMON and BC_OUTPUT_LOCAL.
+
+Mon Oct 4 18:03:04 1993 Stephen L Moshier (moshier@world.std.com)
+
+ * expr.c (bc_init_mode_to_opcode_maps, bc_expand_expr): Cast enum
+ array indices to int.
+ (bc_load_memory, bc_store_memory): Likewise.
+ (bc_runtime_type_code): Cast enum logical operand to int.
+ * bc-emit.c (bc_emit_bytecode): Cast enum array indices to int.
+ * bc-optab.c (deduce_conversion, emit_typecode_conversion): Likewise.
+ (bc_init_mode_to_code_map, preferred_typecode): Likewise.
+ (bc_expand_binary_operation, bc_expand_unary_operation): Likewise.
+ (bc_expand_increment): Likewise.
+ * bc-typecd.h: Cast enum arithmetic and logical operands to int.
+
+Mon Oct 4 05:52:21 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.c (incoming_regs): Only use 16 registers for parameter
+ passing.
+
+ * tree.c (build_string): Remove previous change and comment why
+ string text has to be in saveable_obstack.
+ * varasm.c (output_constant_def): Remove last change; no longer needed.
+
+Sun Oct 3 18:51:19 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * i386/i386.c (output_op_from_reg): Handle 3-word XFmode values.
+ (output_to_reg): Likewise.
+ (output_move_double): Handle XFmode operands.
+ (output_move_const_single): Use REAL_VALUE_TO_TARGET_SINGLE.
+ (print_operand): Add letter `T', size `12'. Use REAL_VALUE
+ macros to convert floating point operands.
+ (convert_387_op): Add XFmode to case FLOAT_EXTEND.
+
+ * i386/i386.h (LONG_DOUBLE_TYPE_SIZE): Define as 96.
+ (FIXED_REGISTERS): If XFmode enabled, hard reg st7 is fixed.
+ (ASM_OUTPUT_DOUBLE): Use REAL_VALUE_... macros.
+ (ASM_OUTPUT_FLOAT): Likewise.
+ (ASM_OUTPUT_LONG_DOUBLE): New macro.
+ (PRINT_REG): Add size case 12.
+ (DEBUG_PRINT_REG): Likewise.
+
+ * i386/i386.md: (tstxf_cc, tstxf, cmpxf, cmpxf_cc, cmpxf_ccfpeq,
+ swapxf, movxf, extenddfxf2, extendsfxf2, truncxfsf2, truncxfdf2,
+ fixuns_truncxfsi2, fix_truncxfdi2, fix_truncxfsi2, floatsixf2,
+ floatdixf2, addxf3, subxf3, mulxf3, divxf3, negxf2, absxf2,
+ sqrtxf2): New patterns.
+
+ * i386/next.h,i386/osfrose.h,i386/sysv4.h
+ (ASM_OUTPUT_DOUBLE,ASM_OUTPUT_FLOAT): Use REAL_VALUE_ macros.
+ (ASM_OUTPUT_LONG_DOUBLE): New macro.
+
+ * i386/bsd.h,i386/sco4.h (ASM_OUTPUT_DOUBLE): Deleted,
+ use default version.
+
+ * i386/next.h,i386/sco.h (VALUE_REGNO): Add case XFmode.
+
+Sun Oct 3 16:35:05 1993 Michael Meissner (meissner@wombat.gnu.ai.mit.edu)
+
+ * collect2.c (read_file): Fix typo in prototype.
+
+Sun Oct 3 18:32:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (bytecode.realclean): Don't delete bi-lexer.c.
+
+Sun Oct 3 19:45:02 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c (default_compilers): Add rules for Ada.
+ * toplev.c (lang_options): Add temporary parameter "gnat".
+
+ * tree.c (staticp): DECL_EXTERNAL is not defined for CONSTRUCTOR.
+
+ * tree.def (PLACEHOLDER_EXPR, WITH_RECORD_EXPR): New tree codes.
+ * tree.c (save_expr): Don't evaluate something containing a
+ PLACEHOLDER_EXPR.
+ (contains_placeholder_p, substitute_in_{expr,type}): New functions.
+ * tree.h: Add declarations for new functions.
+ * calls.c (expand_call): Pass objects who size depends on the
+ contents of the object by invisible reference.
+ * function.c (assign_parms): Likewise.
+ * explow.c (expr_size): If the size contains a PLACEHOLDER_EXPR,
+ surround it with a WITH_RECORD_EXPR.
+ * expr.c (store_expr): Use expr_size value, not size_int.
+ (store_constructor): Handle case of variable position and allow
+ it to contain a PLACEHOLDER_EXPR.
+ (get_inner_reference): Make a WITH_RECORD_EXPR if required.
+ (expand_expr, case PLACEHOLDER_EXPR, WITH_RECORD_EXPR): New cases.
+ (expand_expr, case ARRAY_REF): Make WITH_RECORD_EXPR expressions
+ when needed.
+
+ * calls.c (expand_call): Set MEM_IN_STRUCT_P in stack slot if
+ appropriate.
+
+ * varasm.c (output_constant_def): Copy string as well as string
+ node when deferring output of constants.
+
+ * configure (i370-*): Renamed tm-mvs.h to mvs.h.
+ * config/i370/mvs.h: Renamed from tm-mvs.h.
+
+Sun Oct 3 12:50:57 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.h (function definitions): Add new functions definitions.
+ (arm_condition_codes): make this externally visible.
+ (STARTFILE_SPEC): Move to riscix.h and riscix1-1.h.
+ (CPP_PREDEFINES): Move old defn to riscix.h and riscix1-1.h, add
+ generaic default definition.
+ (CPP_SPEC): Define for generic implementation, pass cpu variant
+ defn to pre-processor.
+ (TARGET_VERSION): Indicate this is generic variant.
+ (TARGET_6): New macro, set when compiling for arm6 in 32bit mode.
+ (ARM_EXTRA_TARGET_SWITCHES): New macro, hook for os dependent files
+ to make additions to TARGET_SWITCHES. Default to null.
+ (processor_type): new enum type defining processor variant for
+ attributes.
+ (arm_cpu_attr): Macro to get at cpu type from attributes.
+ (TARGET_WHEN_DEBUGGING): remove non-generic definitions
+ (OVERRIDE_OPTIONS): Set processor type for attributes.
+ (OPTIMIZE_OPTIONS): Set flag_force_mem.
+ (PROMOTE_MODE): Promote byte constants unsigned.
+ (ENABLE_XF_PATTERNS): Define, do not enable XFmode insns by default
+ -- it tends to crash riscix.
+ (REAL_ARITHMETIC): Define.
+ (CONSTANT_ALIGNMENT): Align string constants so that we can access
+ them faster.
+ (TARGET_FLOAT_FORMAT): Is IEEE_FLOAT_FORMAT.
+ (FIRST_PSEUDO_REGISTER): Increase to support fake registers.
+ (FIXED_REGISTERS): Describe behaviours of fake regs.
+ (CALL_USED_REGISTERS): Likewise.
+ (HARD_REGNO_NREGS): Deal with fake frame and argument registers.
+ (HARD_REGNO_MODE_OK): Likewise.
+ (FRAME_POINTER_REGNUM): Make this a fake register)
+ (HARD_FRAME_POINTER_REGNUM): Define. set to reg 11 (fp).
+ (FRAME_POINTER_REQUIRED): It is if TARGET_APCS.
+ (ARG_POINTER_REGNUM): Set to new fake register.
+ (CC_REGNUM): Define, set to fake register.
+ (REG_ALLOC_ORDER): Adjust to get better allocation in small functions.
+ Add fake registers.
+ (REG_CLASS_CONTENTS): Add new fakes.
+ (REGNO_REG_CLASS): Likewise.
+ (CONST_OK_FOR_LETTER_P): Add recognition for negated and inverted
+ constant integers.
+ (EXTRA_CONSTRAINT): Add 'Q' to recognize MEM (REG). Add 'S' for
+ symbols in the text segment.
+ (CONST_DOUBLE_OK_FOR_LETTER_P): Add 'H' for negated fp constants.
+ (SECONDARY_OUTPUT_RELOAD_CLASS): Define. Needed to store DFmode held
+ in SImode regs.
+ (REGISTER_MOVE_COST): Make this more expensive than memory for
+ float<->int moves.
+ (USE_RETURN_INSN): Define, call function.
+ (ELIMINABLE_REGS): Define to eliminate fake regs.
+ (CAN_ELIMINATE): Likewise.
+ (INITIAL_ELIMINATION_OFFSET): Likewise.
+ (INITIAL_FRAME_POINTER_OFFSET): Delete.
+ (REGNO_OK_FOR_BASE_P): Add fake regs.
+ (MAX_REGS_PER_ADDRESS): Is only 2; shifting by reg not allowed in addr.
+ (CONSTANT_ADDRESS_P): Accept addresses with the symbol_ref flag set.
+ (LEGITIMATE_CONSTANT): Accept negated floats; also constant addresses.
+ (ENCODE_SECTION_INFO): Mark strings that will go in the text segment
+ with the symbol_ref flag.
+ (REG_OK_FOR_BASE_P [!REG_OK_STRICT]): Add new fakes.
+ (REG_OK_FOR_PRE_POST_P [!REG_OK_STRICT]): Likewise.
+ (REG_OK_FOR_PRE_POST_P [REG_OK_STRICT]): Likewise.
+ (GO_IF_LEGITIMATE_INDEX): constant FLOAT indicees must be word
+ aligned; be more restrictive about multi-reg ints; allow all legal
+ shift operations; check boundary conditions more carefully.
+ (DEFAULT_SIGNED_CHAR): Remove os dependent alternatives.
+ (LOADS_ZERO_EXTEND): Define; only QImode loads do.
+ (HAVE_VPRINTF): Move to xm-arm.h
+ (SHIFT_COUNT_TRUNCATED): Not true -- Delete.
+ (CONST_COSTS): Define; give the cost of constants.
+ (RTX_COSTS): Define; give the cost of rtl.
+ (MEMORY_MOVE_COST): Is expensive.
+ (BRANCH_COST): Set high to get conditional instructions.
+ (ADDRESS_COST): Are all the same.
+ (NOTICE_UPDATE_CC): Delete.
+ (EXTRA_CC_MODES): Add a no overflow mode and floating point modes.
+ (EXTRA_CC_NAMES): Likewise.
+ (SELECT_CC_MODE): Return the appropriate mode.
+ (STORE_FLAG_VALUE): Define.
+ (PREDICATE_CODES): Define, show what they are.
+ (ARM_OS_NAME): Supply generic version.
+ (ASM_FILE_START): Print appropriate OS name.
+ (REGISTER_NAMES): Add fakes.
+ (DBX_OUTPUT_MAIN_SOURCE_FILENAME): set desc field to compiler version
+ number expected by dbx (RISCIX hack).
+ (ASM_OUTPUT_INTERNAL_LABEL): Don't reset arm_ccfsm_state if label isn't
+ a code ('L') label.
+ (ASM_OUTPUT_LONG_DOUBLE): Define for XFmode.
+ (ASM_OUTPUT_DOUBLE): Use REAL_ARITMETIC routines.
+ (ASM_OUTPUT_FLOAT): Likewise.
+ (ASM_OUTPUT_OPCODE): Change of arm_ccfsm_state is now handled by insns
+ that need to change it.
+ (PRINT_OPERAND): %d is replaced by appropriate condition characters,
+ %D by the inverse of those given. CONST_DOUBLEs use REAL_ARITHMETIC
+ functions.
+ (PRINT_OPERAND_ADDRESS): Support all the shift types.
+ (INIT_CUMULATIVE_ARGS): Add missing bracket.
+
+ * riscix.h: New file -- OS dependent defintitions for riscix 1.2 and
+ above.
+
+ * riscix1-1.h: New file -- OS dependent definitions for riscix before
+ version 1.2
+
+ * rix-gas.h: New file -- riscix 1.2 and above, but with an assembler
+ which supports stabs.
+
+ * arm.c (arm_compare_op0, arm_compare_op1, arm_compare_fp): New
+ variables.
+ (arm_cpu): New variable.
+ (lr_save_eliminated): New variable.
+ (arm_condition_codes): delete definition.
+ (return_used_this_function): New variable.
+ (use_return_insn): New function.
+ (const_ok_for_arm): Use HOST_WIDE_INT; rewrite to work if
+ HOST_WIDE_INT > 32 bits.
+ (fpa_consts_inited, strings_fpa): New variables.
+ (init_fpa_table): New function, initialize above.
+ (const_double_rtx_ok_for_fpu): Rewrite using fpa_consts_inited and
+ REAL_ARITHMETIC functions.
+ (neg_const_double_rtx_ok_for_fpu): New function.
+ (s_register_operand): New function, as register_operand, but don't
+ accept SUBREG (MEM).
+ (reload_memory_operand): New function.
+ (arm_rhs_operand): Use s_register_operand.
+ (arm_rhsm_operand): New function.
+ (arm_add_operand): New function.
+ (arm_not_operand): New function.
+ (fpu_rhs_operand): Use s_register_operand.
+ (fpu_add_operand): New function.
+ (di_operand): Use s_register_operand.
+ (di_operand, case MEM): address must be offsettable.
+ (index_operand): Use s_register_operand.
+ (const_shift_operand): New function.
+ (shift_operator): Also accept MULT by power of two.
+ (equality_operator): New function.
+ (minmax_operator): New function.
+ (cc_register): New function.
+ (minmax_code): New function.
+ (adjacent_mem_locations): New function.
+ (load_multiple_operation): New function.
+ (store_multiple_operation): New function.
+ (arm_gen_load_multiple): New function.
+ (arm_gen_store_multiple): New function.
+ (gen_compare_reg): New function.
+ (arm_backwards_branch): New function.
+ (short_branch): New function.
+ (arm_insn_not_targeted): New function.
+ (fp_immediate_constant): New function.
+ (eliminate_lr2ip): New function.
+ (output_call_mem): New function.
+ (output_mov_long_double_fpu_from_arm): New function.
+ (output_mov_long_double_arm_from_fpu): New function.
+ (output_mov_long_double_arm_from_arm): New function.
+ (output_move_double): output constants using output_move_immediate;
+ sign_extend CONST_INTs; handle PRE/POST INCs.
+ (shift_instr): Handle MULT.
+ (output_shift_compare): New function.
+ (pattern_really_clobbers_lr): New function.
+ (function_really_clobbers_lr): New function.
+ (output_return_instruction): New function.
+ (output_prologue): Determine whether tail calling is possible,
+ compensate for this when saving registers. Re-initialize
+ return_used_this_function; use HARD_FRAME_POINTER_REGNUM, when
+ saving floating point regs.
+ (output_epilogue): Epilogue isn't needed if return_used_this_function;
+ use HARD_FRAME_POINTER_REGNUM when restoring floating point regs
+ and there is a stack frame; Arm 6 requires different return
+ instruction.
+ (output_load_symbol): New function.
+ (final_prescan_insn): Add support for RETURN patterns; can also
+ conditionalize and target a RETURN; use attributes to determine
+ whether condition codes are set or clobbered; add new case CALL_INSN
+ to switch, fail if Arm 6; support a jump inside a parallel; call
+ recog () before returning to recover from using attributes on other
+ insns.
+
+ * arm.md (type): New attribute for scheduling.
+ (cpu): New attribute for cpu type for use in conds attribute.
+ (conds): New attribute to describe actions on condition codes, set in
+ insns.
+ (length): New attribute, set in insns.
+ (write_conflict): New attribute describing conflicts with the write
+ buffer.
+ (fpa): New function unit for floating point co-processor.
+ (write_buf): New function unit for Arm 6 write buffer.
+ Most patterns: use s_register_operand instead of register_operand.
+ Most patterns: Don't use general operand and then expect reload to
+ do the work.
+ (adddi3): op0 can be the same as ops1 or 2; clobbers condition codes.
+ New unnamed patterns to add an SImode operand to a DImode op.
+ (addsi3): accept constants that can be catered for using sub.
+ New unnamed patterns that set conditions on add.
+ (incscc): new pattern, conditional increment.
+ New split to add some numbers in two insns.
+ (addsf3): Use REAL_ARITHMETIC; support -ve immediates.
+ (adddf3): Likewise.
+ (FLOAT_EXTEND and ADD): New unnamed patterns.
+ (addxf3): New pattern.
+ (subdi3): Allow input and output operands to overlap exactly.
+ (SUB DImode and SImode): New unnamed patterns.
+ (subsi3): Don't accept a constant as last operand, it will never be
+ matched.
+ (SUB and set CC) New unnamed patterns.
+ (decscc): new pattern, conditional decrment.
+ (subdf3): Fix bad case alternative.
+ (FLOAT_EXTEND and SUB): New unnamed patterns.
+ (subxf3): New pattern.
+ (mulsi3): Allow op2 to be the same as op0
+ (MULT and set CC): New unnamed patterns.
+ (MULT and ADD): Ops 2 and 3 can match op 0.
+ (MULT, ADD and set CC): New unnamed patterns.
+ (mulsf3): use fmls for faster multiply.
+ (FLOAT_EXTEND and MULT): New unnamed patterns.
+ (mulxf3): New pattern.
+ (divsf3): use dvfs and rdfs for faster divide.
+ (FLOAT_EXTEND and DIV): New unnamed patterns.
+ (divxf3): New pattern.
+ (FLOAT_EXTEND and MOD): New unnamed patterns.
+ (modxf3): New pattern.
+ (anddi3): op 0 can be the same as ops1 or 2.
+ (*_EXTEND and AND): New unnamed patterns
+ (andsi3): Also accept constants that can be handled with bic
+ instruction.
+ (AND and set CC): New unnamed patterns.
+ (andcbsi3): Delete, this can't be generated any more.
+ (NOT then AND): New unnamed patterns.
+ (NOT then AND and set CC): Likewise.
+ (iordi3): Ops 1 and 2 can match op 0.
+ (*_EXTEND and IOR): New unnamed patterns.
+ (iorsi3): Only accept a valid rhs operand for op 2.
+ (IOR and set CC): New unnamed patterns.
+ (xordi3): New pattern.
+ (*_EXTEND and XOR): New unnamed patterns.
+ (xorsi3): Only accept a valid rhs operand for op 2.
+ (XOR and set CC): New unnamed patterns.
+ (split pattern): Complex pattern with NOT, AND, and IOR, can
+ sometimes produce better code if reordered.
+ (AND (IOR () NOT ())): Special pattern to recognize spilt above.
+ ([su]{min,max}si3): New patterns.
+ (set memory from MIN/MAX operation): New pattern.
+ (Arithmetic on MIN/MAX operation): New pattern.
+ (ashlsi3, ashrsi3, lshrsi3, rotrsi3): Only accept a valid rsh for op2.
+ (unnamed LSHIFT pattern): likewise.
+ (SHIFT and set CC): New unnamed patterns.
+ (SHIFT and NOT): New unnamed pattern.
+ (SHIFT, NOT and set CC): New unnamed patterns.
+ (negdi2): operand1 can be the same as op 0.
+ (FLOAT_EXTEND and NEG): New unsigned pattern.
+ (negxf2): New pattern.
+ (abssi2): New pattern.
+ (ABS and NEG): New unnamed pattern.
+ (FLOAT_EXTEND and ABS): New unnamed pattern.
+ (absxf2): New pattern.
+ (FLOAT_EXTEND and SQRT): New unnamed pattern.
+ (sqrtxf2): New pattern.
+ ({sin,cos}{sf,df,xf}2): New patterns.
+ (FLOAT_EXTEND and SIN/COS): New unnamed patterns.
+ (one_cmpldi2): New pattern.
+ (NOT and set CC): New unnamed patterns.
+ (floatsixf2, fix_truncsfsi2, fix_truncdfsi2, fix_truncxfsi2): New
+ patterns.
+ (truncxfsf2, truncxfdf2): New patterns.
+ (zero_extendsidi2, zero_extendqidi2, extendsidi2): New patterns.
+ (ZERO_EXTEND and set CC): New patterns.
+ (extend{sf,df}xf2): New patterns.
+ (movdi): Constrains must accept PRE/POST INC/DEC.
+ (movsi): make an expand that splits up integers and unsupported
+ moves.
+ (unnamed pattern to match movsi): New, don't allow things to
+ be moved back together again.
+ (REG-REG copy and set CC): New unnamed pattern.
+ (restorehi): use plus_constant in expansion code, not PLUS in RTL part.
+ (storehi, storeinthi): likewise.
+ (movhi): Break up impossible moves.
+ (pattern to match movhi): Don't allow impossible moves to be put
+ back together.
+ (movqi): Break up impossible moves.
+ (pattern to match movqi): Don't allow impossible moves to be put
+ back together; convert negative constants into mvn instruction.
+ (movsf): Use REAL_ARITHMETIC for constants; add alternatives for
+ moving GENERAL_REGS to and from memory.
+ (movdf): Make this an expand; split out impossible moves.
+ (reload_outdf): New pattern.
+ (pattern to match movdf): Don't allow impossible moves to be put back
+ together; add alternatives for moving GENERAL_REGS to and from memory;
+ rearrange and weight to get optimal register allocation.
+ (movxf): New pattern.
+ (load_multiple): New expand pattern.
+ (pattern to load multiple, pattern to load multiple with write-back):
+ New unnamed patterns.
+ (store_multiple): New expand pattern.
+ (pattern to store multiple, pattern to store multiple with write-back):
+ New unnamed patterns.
+ (movstrsi): Expand short moves as a series of load/store multiples with
+ write-back.
+ (cmp*): Make these expands; just set some state variables.
+ (CC = COMPARE op, op): New unnamed patterns.
+ (CC = COMPARE op, NEG op): New unnamed pattern.
+ (CC = COMPARE op, SHIFT op): New unnamed pattern.
+ (FLOAT_EXTEND then COMPARE): New unnamed patterns.
+ (CC = CC): New unnamed (dummy) pattern to allow cse to combine repeated
+ compares.
+ (b{eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu}): Make these expand patterns,
+ use gen_compare_reg().
+ (pattern to match branches, pattern to match inverted brances): New
+ unnamed patterns.
+ (s{eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu}): New expands.
+ (pattern to match store_flag operations): New unnamed pattern.
+ (pattern to match NOT store_flag, pattern to match NEG store_flag):
+ New unnamed patterns.
+ (jump): handle arm_ccfsm_state explicitly.
+ (CALL (MEM)): New unnamed patterns.
+ (return): New pattern.
+ (conditional RETURN): New unnamed patterns;
+ (table_jump (MEM)): New unnamed pattern.
+ (indirect_jump (MEM)): New unnamed pattern.
+ Replace shift-arithmetic patterns with new versions that catche all
+ cases.
+ (Old peephole patterns (commented out)): remove.
+ (shift-arithmetic and set CC): New unnamed patterns.
+ (reload patterns for all shift-arithmetic patterns): New patterns.
+ Add many new patterns to merge store_flag patterns, arithmetic and
+ shifting.
+ New patterns to match conditional comparisons.
+ (movcond): New pattern.
+ (arith (MEM, MEM+4)): New unnamed pattern to spot load multiple
+ possibility.
+ (patterns to match extended pre-increment): New unnamed patterns.
+ (peepholes to match extended post-increment): New.
+ (peephole to match move and set conds): Needed because combine misses
+ this one.
+ (peepholes to match load/store multiples): New.
+ (CALL, RETURN): New peephole.
+ (CALL, JUMP): New peephole.
+ (save_stack_nonlocal, restore_stack_nonlocal): New expands for
+ non-local gotos.
+ special split to break up some conditional arithmetic sequences
+ before scheduling.
+
+ *configure (arm-*-riscix1.[01]*, arm-*-riscix*): New configurations.
+ *config.sub: Recognize operating system "riscix*"; recognize acorn as
+ vendor.
+
+Sat Oct 2 17:24:44 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * i386.md (addhi3): Use byte opcodes when the low byte of a word
+ is known to be zero.
+
+Sat Oct 2 14:11:06 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * combine.c (can_combine_p): Allow an insn with a REG_EQUIV note
+ that reads memory to be moved past an insn that writes memory.
+
+Sat Oct 2 14:04:03 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * regclass.c (record_reg_classes): Skip to next alternative
+ when we skip normal cost computation.
+
+ * collect2.c: Add prototypes to static declarations.
+ (PROTO): New macro.
+ (dup2, putenv): Functions return integers; add type and returns.
+
+ * varasm.c (make_decl_rtl): Set TREE_SIDE_EFFECTS on global if
+ -fvolatile-global.
+
+ * tree.c (build_string): Make lifetime of string the same as
+ tree node.
+
+Sat Oct 2 04:55:44 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * a29k/a29k.h, a29k/unix.h, alpha/alpha.h, arm/arm.h, clipper/clix.h,
+ convex/convex.h, elxsi/elxsi.h, fx80/fx80.h, gmicro/gmicro.h,
+ h8300/h8300.h, i370/tm-mvs.h, i386/386bsd.h, i386/aix386ng.h,
+ i386/gas.h, i386/go32.h, i386/linux.h, i386/lynx.h, i386/mach.h,
+ i386/next.h, i386/osfelf.h, i386/osfrose.h, i386/sco.h, i386/sco4.h,
+ i386/sco4dbx.h, i386/scodbx.h, i386/sequent.h, i386/sun.h,
+ i386/sysv3.h, i386/sysv4.h, i860/fx2800.h, i860/i860.h, i860/mach.h,
+ i860/sysv3.h, i860/sysv4.h, i960/i960.h, m68k/3b1.h, m68k/3b1g.h,
+ m68k/altos3068.h, m68k/apollo68.h, m68k/crds.h, m68k/ctix.h,
+ m68k/dpx2.h, m68k/hp2bsd.h, m68k/hp320.h, m68k/hp3bsd.h,
+ m68k/hp3bsd44.h, m68k/isi.h, m68k/lynx.h, m68k/m68kv4.h,
+ m68k/mot3300.h, m68k/news.h, m68k/next.h, m68k/pbb.h, m68k/plexus.h,
+ m68k/sun2.h, m68k/sun3.h, m68k/sun3mach.h, m68k/tower-as.h,
+ m68k/tower.h, m88k/dgux.h, m88k/luna.h, m88k/m88k.h, m88k/sysv3.h,
+ m88k/sysv4.h, mips/bsd-4.h, mips/bsd-5.h, mips/dec-osf1.h,
+ mips/iris3.h, mips/mips.h, mips/news4.h, mips/news5.h,
+ mips/nws3250v4.h, mips/osfrose.h, mips/svr3-4.h, mips/svr3-5.h,
+ mips/svr4-4.h, mips/svr4-5.h, mips/ultrix.h, ns32k/encore.h,
+ ns32k/merlin.h, ns32k/ns32k.h, ns32k/pc532-mach.h, ns32k/pc532.h,
+ ns32k/sequent.h, ns32k/tek6000.h, ns32k/tek6100.h, ns32k/tek6200.h,
+ pa/pa-ghpux.h, pa/pa-gux7.h, pa/pa-hpux.h, pa/pa-hpux7.h,
+ pa/pa-utahmach.h, pa/pa.h, pa/pa1-utahmach.h, pyr/pyr.h, romp/romp.h,
+ rs6000/aix31.h, rs6000/mach.h, rs6000/rs6000.h, sh/sh.h, sparc/lite.h,
+ sparc/lynx.h, sparc/pbd.h, sparc/sol2.h, sparc/sparc.h, sparc/sysv4.h,
+ spur/spur.h, tahoe/harris.h, tahoe/tahoe.h, vax/ultrix.h, vax/vax.h,
+ vax/vaxv.h, vax/vms.h, we32k/we32k.h
+ (CPP_PREDEFINES): Add system/cpu/machine assertions where missing.
+
+Fri Oct 1 22:11:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gvarargs.h: Test __sequent__ like __BSD_NET2__.
+
+Fri Oct 1 17:19:54 1993 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * cse.c (insert_regs): Always return something.
+ (simplify_unary_operation): Remove unused variable.
+ (cse_process_notes): Likewise.
+ (invalidate_skipped_block): Likewise.
+ (cse_set_around_loop): Likewise.
+
+ * pa-ghpux.h (LINK_SPEC): Pass "-a -archive" when
+ debugging.
+ * pa-hpux.h (LINK_SPEC): Likewise.
+ * pa-ghpux.h (LIB_SPEC): Make sure to add space between flags.
+ * pa-gux7.h (LIB_SPEC): Likewise.
+ * pa-hpux.h (LIB_SPEC): Likewise.
+ * pa-hpux7.h (LIB_SPEC): Likewise.
+
+Fri Oct 1 22:17:12 1993 Eric Youngdale (eric@kafka)
+
+ * vmsconfig.com: Write out the definitions from Makefile.in for
+ the symbols BC_ALL and BI_OBJ into files BC_ALL.OPT and
+ BI_ALL.opt. Remove "bytecode " from compiler options files so
+ compiler will link correctly.
+
+ * make-cc1.com (bc_generate): New VMS DCL function. Takes a BC
+ header file that needs to be generated, and builds it.
+
+ * make-cc1.com: Compile entries listed in BI_ALL.OPT, and then call
+ bc_generate for every header file listed in BC_ALL.OPT
+
+Fri Oct 1 21:13:17 1993 H.J. Lu (hjl@nynexst.com)
+
+ * config/i386/linux.h (LIB_SPEC): Handle -p anmd -pg outermost.
+
+Fri Oct 1 18:23:57 1993 Jim Wilson (wilson@cygnus.com)
+
+ * reload1.c (gen_input_reload): Handle PLUS with MEM operand
+ exactly the same as a PLUS with a REG operand.
+ * reload.c (form_sum): Undo Sep 28 change.
+
+ * Makefile.in (cc1, cc1plus, cc1obj): Delete superfluous
+ dependencies on bytecode.
+ (stamp-bcarity, stamp-bcopcode, stamp-bcopname): Create stamp files.
+
+Fri Oct 1 18:17:56 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * configure (cpp_md_flags): New variable.
+ (links): Build link from md.pre-cpp if cpp_md_flags defined.
+ (CPP_MD, CPP_MD_FLAGS, MD_FILE): New macros for Makefile.
+ * Makefile.in (md): New dependency.
+ (MD_FILE): New macro.
+ (clean): Remove file md if md.pre-cpp exists.
+ (distclean): Remove md.pre-cpp.
+
+Fri Oct 1 15:44:48 1993 Michael Meissner (meissner@osf.org)
+
+ * halfpic.h (toplevel): Enclose the whole file inside a #ifndef
+ NO_HALF_PIC conditional.
+
+ * i386/x-osfrose (CCLIBFLAGS, GCC_CFLAGS): Define NO_HALF_PIC so
+ that the two common variables in halfpic.h don't get created.
+
+ * mips/x-osfrose (CCLIBFLAGS, GCC_CFLAGS): Ditto.
+
+Fri Oct 1 10:46:15 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.h (R_KR): New macro.
+ (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS, CALL_USED_REGISTERS):
+ Adjust for more registers present.
+ (REG_ALLOC_ORDER, REG_CLASS_CONTENTS, REGISTER_NAMES): Likewise.
+ (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, REGNO_REG_CLASS): Likewise.
+ (CONDITIONAL_REGISTER_USAGE): Swap names rather than replacing them.
+ * a29k.c (gpc_reg_operand): Include kernel registers.
+
+ * a29k.h (TARGET_LARGE_MEMORY): New flag; change value for
+ all others.
+ (ENCODE_SECTION_INFO): New macro.
+ (TARGET_SWITCHES): Add "normal" and change values.
+
+ * a29k.c (call_operand, case SYMBOL_REF): Handle TARGET_LARGE_MEMORY
+ and SYMBOL_REF_FLAG.
+
+Thu Sep 30 23:25:13 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (optimize_skip): Do not thread a jump to a new target if
+ doing so would invalidate the insn in the jump's delay slot.
+
+Thu Sep 30 14:21:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * bi-lexer.c (scan_string): Do xmalloc if buffer is null and
+ xrealloc if it's not, not the other way around.
+
+Thu Sep 30 10:57:30 1993 Jan Brittenson (bson@nutrimat.gnu.ai.mit.edu)
+
+ * bc-emit.c (bc_end_function, seg_data): Use bcopy instead of memcpy.
+
+Thu Sep 30 05:53:58 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case PLUS_EXPR, MINUS_EXPR): Properly handle
+ case when ARG1 splits and VARSIGN is -1.
+
+Wed Sep 29 19:41:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_modify_expr): Check whether recursive calls
+ return error_mark_node.
+
+Wed Sep 29 18:35:30 1993 Leonid Baraz (lbaraz@iil.intel.com)
+
+ * rtl.h (GEN_INT): Add missing cast to HOST_WIDE_INT.
+ * jump.c (rtx_renumbered_equal_p, case CONST_INT): Use INTVAL,
+ not XINT.
+
+Wed Sep 29 17:32:03 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * glimits.h (UINT_MAX, ULONG_MAX, ULONG_LONG_MAX):
+ redefine in a simpler way.
+
+Wed Sep 29 17:25:17 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * fixincludes (sys/spinlock.h): change references of
+ "../machine/*.h" to <machine/*.h>
+
+Wed Sep 29 07:09:50 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (reg_or_short_operand): Remove redundant test.
+
+ * sched.c: Add prototypes for static function.
+ (add_dependence, remove_dependence, regno_use_in): Now static.
+ (schedule_insns): Have dummy version also take FILE * parameter.
+
+Wed Sep 29 01:29:31 1993 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (quote_string): New function.
+ (special_symbol, write_output, output_line_command): Use it to escape
+ special characters in file names when outputting #line directives.
+ (do_line): Parse escape sequences in #line directives' file names.
+ * c-lex.c, cp-lex.c (check_newline, yylex, real_yylex): Likewise.
+ (ignore_escape_flag): Remove var.
+
+Tue Sep 28 21:27:26 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu
+
+ * function.c (push_temp_slots, pop_temp_slots): Always change level.
+ * cp-expr.c (cplus_expand_expr): Push and pop temp slots around
+ making new temp slots and freeing them.
+ * expr.c (expand_assignment, expand_expr, do_jumps): Likewise.
+ * integrate.c (expand_inline_function): Likewise.
+
+Tue Sep 28 18:50:57 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): Don't call find_reloads_toplev
+ (or anything like that) for match_operator operands.
+
+ * config/ns32k/ns32k.c (output_move_double): Special code for
+ pushing from an address that uses the sp. Use PUSHOP for pushes,
+ not POPOP.
+
+ * config/ns32k/ns32k.h (FUNCTION_EPILOGUE, FUNCTION_PROLOGUE):
+ Add %$ in adjspb/adjspd insns.
+ * config/ns32k/ns32k.md (recognizer for subtracting const from reg 17):
+ Add %$ in adjspb/adjspd insns.
+
+ * bytetypes.h (QItype, HItype, SItype, DItype): Use __signed__.
+
+ * Makefile.in (stamp-bcopname, stamp-bcopcode):
+ Use shorter names for temporary files.
+ (bc-emit.o): Depend on bc-arity.h.
+
+ * bi-opname.c, bi-arity.c, bi-opcode.c (xmalloc): New function.
+ * bi-opname.c, bi-arity.c: Include stdio.h.
+
+ * function.c (expand_main_function): Put back accidentally
+ deleted previous change to use NAME__MAIN.
+
+ * glimits.h (INT_MAX, LONG_MAX, LONG_LONG_MAX): Delete parens.
+ (__glimits__evconcat__, __glimits__concat__): New macros.
+ (UINT_MAX, ULONG_MAX, ULONG_LONG_MAX): Use them.
+
+ * cccp.c (output_dots): New function.
+ (do_include): Call it (to indent output for print_include_names).
+
+Tue Sep 28 18:22:31 1993 Jim Wilson (wilson@cygnus.com)
+
+ * reload1.c (eliminate_regs): All recursive calls now pass INSN
+ instead of NULL_RTX. Second assignment to ref_outside_mem changed
+ to be same as first assignment.
+
+ * combine.c (force_to_mode, LSHIFTRT case): Avoid shifts larger
+ than HOST_BITS_PER_WIDE_INT.
+
+ * sched.c (schedule_insns): Don't zero reg_n_calls_crossed for
+ pseudos live across multiple blocks.
+
+ * fixincludes ({sparc,sun3,sun3x,sun4,sun4c,sun4m}/asm_linkage.h,
+ {sun4c,sun4m}/debug/asm_linkage.h: Replace /**/ with ##.
+
+ * reorg.c (mark_target_live_regs): When scanning insns, ignore
+ CLOBBERs in addition to USEs.
+
+ * life.h: Comment that this is for sparclite w/o FPU.
+ * sparc.h (CPP_SPEC): Handle -mf930 and -mf934.
+ (TARGET_SWITCHES): Add -mf930 and -mf934 options. -msparclite no
+ longer does -mno-fpu.
+
+ * fixinc.svr4, fixincludes (math.h): Put #ifndef around HUGE_VAL
+ define.
+ * math-68881.h, math-3300.h (HUGE_VAL): Add #undef before HUGE_VAL
+ define, instead of surrounding it with #ifndef/#endif.
+
+ * sparc/bsd.h: New file.
+ * configure (sparc-*-bsd*): New configuration.
+
+ * reload.c (form_sum): Change the way that form_sum canonicalizes
+ addresses, so that it never creates (PLUS (PLUS MEM CONST_INT) REG)
+ but instead canonicallizes this to (PLUS (PLUS REG CONST_INT) MEM).
+
+Tue Sep 28 16:00:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * bc-emit.c: Include gvarargs.h, not varargs.h.
+ Don't include string.h.
+ (seg_align): Use bzero, not memset.
+
+Mon Sep 27 20:53:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (pop_init_level): Add special case for nonincremental
+ scalar initializers.
+
+ * protoize.c: Declare rindex unconditionally.
+
+ * c-decl.c (init_decl_processing): Use signed_type and unsigned_type
+ to set signed_wchar_type_node and unsigned_wchar_type_node.
+
+Mon Sep 27 20:31:01 1993 Paul Eggert (eggert@twinsun.com)
+
+ * dbxout.c (dbxout_init, dbxout_source_file): Quote special
+ characters when outputting source file names.
+ * config/a29k/a29k.h, config/a29k/unix.h, config/alpha/alpha.h,
+ config/i386/aix386ng.h, config/i386/bsd.h, config/i386/gas.h,
+ config/i386/sun386.h (ASM_FILE_START): Likewise.
+ * config/elxsi/elxsi.h, config/m68k/3b1.h, config/m68k/crds.h,
+ config/m68k/mot3300.h, config/m68k/tower-as.h, config/m88k/m88k.h,
+ dwarfout.c (ASM_OUTPUT_SOURCE_FILENAME): Likewise.
+ * xcoffout.h, config/i386/i386iscgas.h, config/i860/fx2800.h
+ (DBX_OUTPUT_MAIN_SOURCE_DIRECTORY, DBX_OUTPUT_MAIN_SOURCE_FILENAME):
+ Likewise.
+ * xcoffout.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Likewise.
+ * config/mips/mips.c (mips_output_filename): Likewise.
+ * toplev.c (output_file_directive): Likewise.
+ (output_quoted_string): New function.
+
+Mon Sep 27 19:31:57 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * bi-lexer.c (xrealloc): Handle 0 passed as BLOCK.
+
+ * Makefile.in (stamp-bcopname, stamp-bcopcode, stamp-bcarity):
+ Renamed from stamp-bc-... to fit in 14 chars.
+ Don't rm the .h files.
+ (STAGESTUFF): Add some bc and bi files.
+
+ * c-lex.c (yylex): Handle i together with f or l in float constant.
+
+Mon Sep 27 19:00:18 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * cccp.c (special_symbol, initialize_builtins): If
+ NO_BUILTIN_SIZE_TYPE is defined, never refer to SIZE_TYPE.
+ Likewise for NO_BUILTIN_PTRDIFF_TYPE and PTRDIFF_TYPE.
+
+Mon Sep 27 18:59:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (eliminate_regs, SET case): Check for INSN_LIST
+ along with EXPR_LIST.
+
+Mon Sep 27 14:29:17 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/typedstream.h (objc_read_object): Add declaration.
+
+Mon Sep 27 17:00:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure: Handle option --with-elf.
+ (i[34]86-*-linux*): Use linuxelf.h if --with-elf.
+ (i[34]86-*-osfelf): Config deleted.
+ (i[34]86-*-osfrose): Handle --with-elf.
+ * config/i386/linuxelf.h: New file.
+
+Mon Sep 27 14:19:33 1993 Jan Brittenson (bson@nutrimat.gnu.ai.mit.edu)
+
+ * expr.c (bc_expand_constructor): Delete cast of argument to
+ bc_emit_instruction to HOST_WIDE_INT. Move assignment of ptroffs
+ to separate line.
+
+Mon Sep 27 10:32:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (stmt.o, expr.o, emit-rtl.o): Add missing dependency
+ on bc-typecd.def.
+ (bi-run.o): Fix formatting.
+
+Mon Sep 27 10:26:43 1993 Jan Brittenson (bson@nutrimat.gnu.ai.mit.edu)
+
+ * Makefile.in (bi-arity.h, bc-opcode.h, bc-opname.h): Use
+ move-if-changed.
+ (stamp-bc-arity, stamp-bc-opcode, stamp-bc-opname): New targets.
+
+Sun Sep 26 23:11:34 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (ASM_FILE_START): Remove last change for $LIT$ subspace,
+ not all HPUX linkers handle it correctly.
+
+Sun Sep 26 20:51:36 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stmt.c (expand_exit_loop_if_false, bc_expand_start_cond):
+ Use xjumpifnot, not jumpifnot.
+
+ * Makefile.in (bi-arity, bi-opcode, bi-opname): Delete $(LEXLIB).
+
+ * varasm.c (assemble_string): Put braces around ASM_OUTPUT_ASCII.
+
+Sat Sep 25 08:30:16 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case COND_EXPR): Set MEM_IN_STRUCT_P
+ properly for TEMP.
+
+ * combine.c (BYTE_LOADS_EXTEND, LOAD_EXTEND): Deleted.
+ (subst, force_to_mode, nonzero_bits, num_sign_bit_copies):
+ Use new macros LOAD_EXTEND_OP and WORD_REGISTER_OPERATION instead
+ of BYTE_LOADS_*_EXTEND and LOAD_EXTEND.
+ * expr.c (do_store_flag): Likewise.
+ * reload.c (push_reload, find_reloads): Likewise.
+ * reload1.c (eliminate_regs): Likewise.
+ * a29k.h, alpha.h, clipper.h, arm.h, i960.h, m88k.h, mips.h:
+ Use WORD_REGISTER_OPERATION and LOAD_EXTEND_OP and delete
+ BYTE_LOADS_{SIGN,ZERO}_EXTEND.
+ * pa.h, romp.h, rs6000.h, sh.h, sparc.h: Likewise.
+
+Sat Sep 25 06:19:20 1993 Jan Brittenson (bson@nutrimat.gnu.ai.mit.edu)
+
+ * bi-lexer.l: Deleted.
+
+ * bi-lexer.c: New file.
+
+ * Makefile.in (bi-lexer): Deleted.
+ (bi-lexer.l): Deleted.
+
+Fri Sep 24 16:59:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF C++ front-end merge.
+
+ Tue Sep 21 19:17:29 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (build_ptrmemfunc_type): Set CLASSTYPE_GOT_SEMICOLON
+ just in case.
+ * cp-decl.c (start_function): Exclude pointer to member functions in
+ IS_AGGR_TYPE test.
+ * cp-method.c (dump_type_prefix, dump_type_suffix, dump_type):
+ Handle pointer to member functions.
+
+ Tue Sep 21 10:47:10 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.c (finish_struct): Since we know which base class we want
+ the binfo for, get it directly, instead of searching for it. Cures
+ a compiler_error in binfo_value.
+
+ Thu Sep 16 20:33:25 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (convert_pointer_to): Make error more specific and more
+ readable.
+
+ Thu Sep 16 20:14:18 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c (consume_string): Add second argument so that we can use
+ this routine for character constants too. Also, handle eof inside
+ the string or character constant better. Make static, as it isn't
+ used anyplace else.
+
+ * cp-lex.c (reinit_parse_for_block): Add second argument to
+ consume_string. Add support for character constants.
+
+ * cp-tree.h (consume_string): Remove declaration, not used any place
+ else.
+
+ Wed Sep 15 12:44:13 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * cp-gc.c (build_t_desc): Make sure finish_table is called
+ for the methods and ivars tables.
+
+ Mon Sep 13 14:40:23 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (unify): Use the referent type if necessary.
+
+ Fri Sep 10 16:34:37 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_binary_op_nodefault): Add missing fourth
+ argument to build_binary_op calls, and eliminate bogus delta2
+ check.
+
+ Fri Sep 10 14:52:59 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_binary_op_nodefault): Make sure delta2's match
+ when comparing pointers to _virtual_ member functions.
+
+ Fri Sep 10 14:27:45 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (convert_for_assignment): Revert a cast.
+ * cp-typeck.c (build_binary_op_nodefault): Add missing fourth
+ argument to build_binary_op calls.
+
+ Thu Sep 9 21:22:40 1993 Mike Stump (mrs@cygnus.com)
+
+ Complete re-vamp of pointer to member functions. Implements
+ complete semantics. Cures problems on CONVEX, i960 and alpha.
+
+ * cp-tree.h (get_member_function_from_ptrfunc, build_ptrmemfunc):
+ New routines.
+ * cp-decl.c (build_ptrmemfunc_type): New routine, builds canonical
+ pointer to member function types.
+ * cp-decl.c (grokdeclarator): Use new type for POINTER_TYPE to
+ METHOD_TYPEs.
+ * cp-method.c (build_overload_name): Make the old mangling to show
+ through when mangling the new pointer to member function type.
+
+ * cp-tree.h (TYPE_PTRMEMFUNC_P, TYPE_PTRMEMFUNC_FN_TYPE,
+ TYPE_GET_PTRMEMFUNC_TYPE, TYPE_SET_PTRMEMFUNC_TYPE): New macros
+ for pointer to member function code.
+ * cp-init.c (resolve_offset_ref): Handle pointer to member functions
+ specially.
+ * cp-type2.c (store_init_value): Make new pointer to member
+ functions initializable.
+ * cp-typeck.c (convert_for_assignment): Make new pointer to member
+ functions assignable.
+ * cp-type2.c (build_m_component_ref): Make new pointer to member
+ functions work.
+ * cp-typeck.c (build_x_function_call, build_function_call_real,
+ build_binary_op): Ditto.
+ * cp-class.c (add_virtual_function): Don't set the high bit on
+ DECL_VINDEXs.
+
+ * cp-typeck.c (get_member_function_from_ptrfunc): New routine to
+ resolve a pointer to member function.
+ * cp-typeck.c (build_ptrmemfunc): New routine to build CONSTRUCTORs
+ for new pointer to member functions. Used by to generate
+ initialization and assignment expressions.
+ * cp-typeck.c (build_binary_op_nodefault): Implement == and != for
+ new pointer to member functions.
+ * cp-typeck.c (unary_complex_lvalue): Handle & in more reasonable
+ ways to make new pointer to member functions work.
+
+ * cp-parse.y (expr_no_commas): Don't dereference the second
+ argument, this is now done in build_m_component_ref as needed.
+ * cp-typeck.c (build_x_binary_op): Ditto.
+
+ Other misc work.
+
+ * cp-call.c (build_field_call, build_scoped_method_call,
+ build_method_call): Second arg to build_indirect_ref should be
+ NULL_PTR, not NULL or 0.
+ * cp-class.c (build_vbase_path, build_vfn_ref, popclass): Ditto.
+ * cp-cvt.c (convert_from_reference): Ditto.
+ * cp-decl2.c (setup_vtbl_ptr, finish_file): Ditto.
+ * cp-init.c (emit_base_init, build_virtual_init,
+ expand_aggr_vbase_init_1, expand_recursive_init_1,
+ get_member_function, resolve_offset_ref, build_new, build_delete,
+ build_vec_delete): Ditto.
+ * cp-search.c (dfs_init_vbase_pointers, init_vbase_pointers,
+ build_vbase_vtables_init): Ditto.
+ * cp-type2.c (build_x_arrow, build_functional_cast): Ditto.
+ * cp-typeck.c (build_modify_expr): Ditto.
+
+ Instead of calling get_identifier with the same value all the time,
+ call it once, and re-use the cached value.
+
+ * cp-decl.c (pfn_identifier, index_identifier, delta_identifier,
+ delta2_identifier): New cached calls to get_identifier.
+ * cp-tree.h (this_identifier, pfn_identifier, index_identifier,
+ delta_identifier, delta2_identifier): Allow them to be accessed
+ everywhere.
+ * cp-decl.c (init_decl_processing): Initialize pfn_identifier,
+ index_identifier, delta_identifier and delta2_identifier and
+ use a cached get_identifier call.
+ * cp-class.c (delta_name, pfn_name): Removed, use delta_identifier
+ and pfn_identifier instead.
+ * cp-class.c (popclass): Use a cached get_identifier call for `this'.
+
+ Tue Sep 7 16:01:14 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-search.c (immediately_derived): New function.
+ (get_binfo): Use it.
+ (compute_visibility): Rewrite how private inheritance is handled, so
+ it actually works. Use the new immediately_derived fn.
+
+ Mon Sep 6 14:44:46 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-decl.c (grokfndecl): Add empty statement after foundaggr label.
+
+ Sat Sep 4 16:12:27 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-decl.c (grokfndecl): Require class or enum argument to
+ operators.
+
+ * cp-init.c (build_member_call): Make destructor without object
+ error more useful, don't complain of missing destructor.
+
+ Thu Sep 2 15:51:54 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (globalize_nested_type): Make sure the type in question
+ has a lang_specific area before trying to clear DECL_CLASS_CONTEXT.
+
+ Wed Sep 1 13:40:30 1993 Chip Salzenberg (chip@fin)
+
+ * cp-decl.c (start_function): Call duplicate_decls when user
+ redefines a builtin function.
+
+ Thu Sep 2 15:38:43 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (instantiate_class_template): Only kick back the local
+ value if we're setting things up for the parser.
+
+ Wed Sep 1 12:54:38 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-init.c (emit_base_init): Don't complain if the base has no
+ constructor; we should try to use the default constructor instead.
+
+ Wed Sep 1 11:57:00 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (find_scoped_type): Undo the sorry for now, it's hitting
+ a lot of code that it shouldn't be.
+
+ Mon Aug 30 13:08:48 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-typeck.c (build_x_unary_op): unary & on an expression of
+ RECORD_TYPE that has an incomplete type gives the simple address of
+ the object, and should not give an error about method not found.
+
+ Mon Aug 30 11:06:26 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-pt.c (instantiate_class_template): Don't try to instantiate a
+ template that's already being worked on.
+
+ * cp-init.c (perform_member_init): Make an uninitialized reference
+ be a pedwarn, not a warning.
+
+ * cp-class.c (finish_struct): Make declaration of a negative width
+ for a bit-field be an error, not a warning.
+
+ Sat Aug 28 09:40:47 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-call.c (find_scoped_type): Add a `sorry' call if we hit an
+ uninstantiated type.
+
+ Thu Aug 26 13:53:23 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-call.c (build_scoped_method_call): Don't produce an error
+ if the type has no destructor.
+
+ * cp-decl.c (record_builtin_type): Don't set TYPE_HAS_DESTRUCTOR
+ after all.
+
+ Wed Aug 25 19:10:24 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cp-call.c (build_method_call): Check for class type value as
+ well
+
+ * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Create macro
+ (IDENTIFIER_HAS_CLASS_TYPE_VALUE): Ditto
+
+ * cp-init.c (is_aggr_typedef): Check for class type value as well
+ (for template destructors)
+ (build_delete): Don't assert aggregate type, don't check
+ TREE_GETS_DELETE if built-in type.
+
+Fri Sep 24 15:57:14 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * rtl.h: (HARD_FRAME_POINTER_REGNUM): New macro.
+ (hard_frame_pointer_rtx): New variable
+ * combine.c: (combinable_i3_pat): Don't add REG_DEAD notes for
+ HARD_FRAME_POINTER_REGNUM.
+ (subst, case SUBREG): Don't change register number or mode if it
+ is HARD_FRAME_POINTER_REGNUM.
+ * cse.c: (FIXED_REGNO_P): HARD_FRAME_POINTER_REGNUM is fixed.
+ (CHEAP_REG): HARD_FRAME_POINTER_REGNUM is cheap.
+ (FIXED_BASE_PLUS): Allow hard frame pointer as base.
+ (NONZERO_BASE_PLUS_P): Likewise.
+ (cannon_hash, case REG): Add HARD_FRAME_POINTER_REGNUM to list of
+ special registers for SMALL_REGISTER_CLASSES.
+ (find_best_addr): Addresses containing HARD_FRAME_POINTER_REGNUM
+ cannot be replaced.
+ (cse_main): value in HARD_FRAME_POINTER_REGNUM is preserved across
+ calls.
+ * dbxout.c: (dbxout_symbol): FRAME_POINTER_REGNUM has been eliminated
+ by now, use HARD_FRAME_POINTER_REGNUM.
+ * emit-rtl.c: (hard_frame_pointer_rtx): New variable.
+ (gen_rtx): return hard_frame_pointer_rtx if generating rtl
+ for HARD_FRAME_POINTER_REGNUM.
+ (enit_emit_once): Generate initial rtl for hard_frame_pointer_rtx.
+ * explow.c: (copy_all_regs): Don't copy HARD_FRAME_POINTER_REGNUM.
+ * flow.c: (life_analysis): Mark HARD_FRAME_POINTER_REGNUM as live at
+ the end of the function.
+ (insn_dead_p): Don't delete insns that set the hard frame pointer.
+ (mark_set_1): Don't add death information about
+ HARD_FRAME_POINTER_REGNUM.
+ (mark_used_regs, case REG): Don't put HARD_FRAME_POINTER_REGNUM in
+ regs_ever_live. Don't mark it as needed either.
+ * function.c: (instantiate_virtual_regs_1, case MEM): references to
+ MEM via the hard frame pointer shouldn't be copied.
+ * genattrtab.c: (hard_frame_pointer_rtx): New Dummy definition.
+ * global.c: (global_alloc): Make sure that it is always possible to
+ eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM.
+ * jump.c: (thread_jumps): Value in HARD_FRAME_POINTER_REGNUM is never
+ modified by a call.
+ * local-alloc.c: (find_free_reg): Make sure we will always be able
+ to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM.
+ * loop.c: (invariant_p, case REG): hard_frame_pointer_rtx is
+ invariant.
+ * reload.c: (immune_p): Constants never overlap hard frame pointer
+ references.
+ (find_reloads_address): Compute invalid references to the hard
+ frame pointer in a register; also (reg + const)
+ and (reg + reg + const).
+
+ * reload1.c: (init_reload): use HARD_FRAME_POINTER_REGNUM instead of
+ FRAME_POINTER_REGNUM.
+ (reload): Only prohibit elimination of HARD_FRAME_POINTER_REGNUM, not
+ FRAME_POINTER_REGNUM if frame_pointer_needed. Never prohibit
+ elimination of FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM.
+ Mark HARD_FRAME_POINTER_REGNUM as live at the start of a block if
+ it is still needed after elimination.
+ (eliminate_regs): For non-local goto's, don't delete stores into the
+ hard frame pointer.
+ (eliminate_regs_in_insn): adjust comment.
+ (mark_not_eliminable): if frame_pointer_rtx and hard_frame_pointer_rtx
+ are not the same, then frame_pointer_rtx is eliminable;
+ hard_frame_pointer_rtx never is if it is set..
+ (order_regs_for_reload): HARD_FRAME_POINTER_REGNUM is a bad spill reg.
+ (choose_reload_regs): HARD_FRAME_POINTER_REGNUM is a bad choice.
+ * reorg.c: (mark_referenced_resource): if frame_pointer_needed,
+ HARD_FRAME_POINTER_REGNUM is also a referenced resource.
+ (mark_target_live_regs): value in HARD_FRAME_POINTER_REGNUM is not
+ call-clobbered.
+ (dbr_schedule): HARD_FRAME_POINTER_REGNUM should be valid at the
+ end of a function.
+ * rtlanal.c: (rtx_unstable_p): HARD_FRAME_POINTER_REGNUM is not
+ an unstable register.
+ (rtx_varies_p, case REG): hard_frame_pointer_rtx is invariant.
+ (rtx_addr_can_trap_p, case REG): hard_frame_pointer_rtx won't trap.
+ * sched.c: (memrefs_conflict_p): We can work out whether references
+ via hard_frame_pointer_rtx are likely to conflict.
+ (attach_deaths, case REG): Don't add death notes for
+ HARD_FRAME_POINTER_REGNUM.
+ * sdbout.c: (sdbout_symbol): Use HARD_FRAME_POINTER_REGNUM instead of
+ FRAME_POINTER_REGNUM.
+ * stmt.c: (expand_goto): Set hard_frame_pointer_rtx when restoring
+ the frame. Use it when restoring other registers.
+ (expand_end_bindings): ARG_POINTER_REGNUM will be eliminated into
+ HARD_FRAME_POINTER_REGNUM, not FRAME_POINTER_REGNUM; adjust code
+ accordingly.
+ * stupid.c: (stupid_find_reg): never use HARD_FRAME_POINTER_REGNUM.
+
+Fri Sep 24 15:05:14 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (eliminate_regs): Specially handle the case where INSN
+ is a note (an EXPR_LIST or INSN_LIST).
+ (eliminate_regs_in_insn): Pass the notes as INSN,
+ when calling eliminate_insn to process the notes.
+
+Fri Sep 24 11:29:26 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (SET_ASM_OP): Define.
+
+Fri Sep 24 04:47:33 1993 Jan Brittenson (bson@nutrimat.gnu.ai.mit.edu)
+
+ * Makefile.in (toplev.o): Add bytecode.h and bc-emit.h to list
+ of dependencies.
+ (stmt.o): Add bytecode.h, bc-typecd.h, bc-opcode.h, bc-optab.h,
+ and bc-emit.h to list of dependencies.
+ (expr.o): Add bytecode.h, bc-opcode.h, bc-typecd.h, bc-optab.h,
+ bc-emit.h, and modemap.def to list of dependencies.
+ (emit-rtl.o): Add bytecode.h, bc-opcode.h, bc-typecd.h,
+ bc-optab.h, bc-emit.h, bc-opname.h to list of dependencies.
+ (integrate.o, regclass.o, varasm.o, function.o): Add bytecode.h to
+ list of dependencies.
+
+Thu Sep 23 23:58:58 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * att.h (ASM_OUTPUT_ASCII): Enclose macro in "do { .. } while (0)".
+ * sun386.h (ASM_OUTPUT_ASCII): Likewise.
+
+Thu Sep 23 11:55:47 1993 Ted Lemon (mellon@ncd.com)
+
+ * toplev.c (lang_options): Add -fallow-single-precision.
+
+Thu Sep 23 00:40:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (bi-parser.c): Supply explicit rule.
+ Add bi-parser.h as target.
+ Put these files in srcdir.
+
+ * bc-emit.c (bc_gen_rtx): Call gen_rtx.
+ (bc_print_rtl): #if 0 the contents.
+
+ * Makefile.in (bc-optab.o, bc-emit.o): Add missing deps.
+ (bi-parser.c, bi-lexer.c): Don't depend on .h files here.
+
+ * varasm.c (handle_pragma_weak): Test HANDLE_PRAGMA_WEAK
+ and WEAK_ASM_OP and SET_ASM_OP.
+
+ * Makefile.in (stmt.o): Fix typo.
+
+ * emit-rtl.c (gen_label_rtx): If output_bytecode, make a CODE_LABEL
+ but with different contents.
+
+ * rtl.h (BYTECODE_LABEL, BYTECODE_OFFSET, BYTECODE_BC_LABEL):
+ (BYTECODE_UID): New macros.
+ (struct rtx_def): Delete elements label, offset, bc_label, uid.
+
+ * Makefile.in (bc-arity.h, bc-opcode.h, bc-opname.h): Use `./'.
+ (bi-arity, bi-opcode, bi-opname, bi-lexer): Use host compiler.
+ Link with HOST_LIBS and depend on HOST_LIBDEPS.
+ (bi-unparse): Deleted.
+ (bytecode.distclean): Don't do anything with bi-unparse
+ (bi-arity.o, bi-opcode.o, bi-opname.o, bi-parser.o, bi-reverse.o)
+ (bi-lexer.o): Use host compiler.
+
+ * expr.c (expand_increment): Don't store directly ito a subreg
+ that is narrower than a word.
+
+Wed Sep 22 22:18:35 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * combine.c (init_reg_last_arrays): New function.
+ (combine_instructions): Use it.
+ (force_to_mode): Narrow mask to fit mode (except VOIDmode).
+ (record_value_for_reg): When zeroing reg_last_set_value, also
+ zero reg_last_set_{mode,nonzero_bits,sign_bit_copies}.
+ (record_dead_and_set_regs): Likewise.
+
+Wed Sep 22 22:13:07 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * bc-emit.c (bc_initialize): Add MODE arg to REAL_VALUE_ATOF calls.
+
+ * Makefile.in (bi-lexer.c): File is in $(srcdir).
+
+ * reg-stack.c (record_label_references): Don't follow a null label
+ reference chain.
+
+Wed Sep 22 15:56:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (bi-arity, bi-opcode, bi-opname, bi-unparse, bi-lexer):
+ Make the rules explicit. Don't use $^.
+ (bi-run.o, bi-parser.o, bi-lexer.o): Eliminate $<.
+ (bc-arity.h, bc-opcode.h, bc-opname.h): Eliminate $< and $@.
+
+ * c-typeck.c (set_init_index): Handle and allow CONST_DECL.
+ (build_c_cast): When making a CONSTRUCTOR for a union cast,
+ specify its type.
+
+ * Makefile.in (bi-lexer.o, bi-parser.o): Use ALL_CFLAGS.
+
+ * bi-arity.c (main): Make sure there's some value within
+ each pair of braces.
+
+ * expr.c (bc_adjust_stack): Use VALIDATE_STACK_FOR_BC,
+ not VALIDATE_STACK.
+ * bc-emit.c (bc_emit_bytecode): Likewise.
+ (bc_emit_instruction) [! __GNUC__]: Don't really use bc-typecd.def.
+
+ * varasm.c (bc_assemble_integer): Make definition static.
+
+ * expr.c (bc_strdup): Don't use strcpy's value.
+
+ * bytetypes.h: New file. Typedefs moved from bytecode.h.
+ (union stacktype): Moved here.
+ * bytecode.h: Typedefs deleted.
+ * bi-run.h: (union stacktype): Deleted.
+ (BI_PARAMS): Don't continue the parmlist.
+ * bc-emit.c: Include bytetypes.h, if __GNUC__.
+
+Wed Sep 22 15:49:47 1993 Ted Lemon (mellon@ncd.com)
+
+ * c-decl.c (flag_allow_single_precision): New variable.
+ (c_decode_option): Handle -fallow-single-precision.
+ * c-tree.h (flag_allow_single_precision): Declared.
+ * c-typeck.c (default_conversion): Implement -fallow-single-precision.
+
+Wed Sep 22 11:18:24 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct): Move special C++ only code that
+ handles anonymous unions inside structures here.
+ * stor-layout.c (layout_record): From here.
+
+Wed Sep 22 14:14:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * enquire.c (FPROP): Recognize 80387 or 68881 XFmode format.
+
+ * c-typeck.c (build_component_ref): For a field in an anonymous union,
+ make two nested COMPONENT_REFs.
+ (lookup_field): Additional arg INDIRECT.
+
+Wed Sep 22 14:45:42 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * tm.texi (CLEAR_INSN_CACHE): New macro.
+ * libgcc2.c (__clear_cache): add case for new CLEAR_INSN_CACHE.
+
+ * libgcc2.c (__enable_execute_stack): Add case for NeXT/__MACH__.
+ * config/m68k/next.h (INITIALIZE_TRAMPOLINE): Append call to
+ __enable_execute_stack.
+ (CLEAR_INSN_CACHE): New macro.
+
+ * varasm.c (output_constructor): Use the type given
+ by the constructor expression only if available. Otherwise
+ use the type of the declared type.
+
+Tue Sep 21 19:51:26 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu)
+
+ * objc/Object.[hm] (-compare:, -shouldNotImplement:): Added.
+
+ * objc/archive.c (objc_write_type, objc_write_types): Take
+ take char** args for writing strings in stead of char* to
+ match NeXT. Also correct some typos in error messages.
+
+Tue Sep 21 18:35:04 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * c-typeck.c (push_member_name): Take a decl instead of a string.
+ Allow DECL_NAME to be NULL (anonymous fields).
+ * c-typeck.c (push_init_level, process_init_element): Change
+ callers appropriately.
+
+Tue Sep 21 16:44:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.c (L_bb): Test inhibit_libc.
+
+ * Makefile.in (ENQUIRE, CROSS_TEST): New variables.
+ (all.cross): Use them.
+
+ * mips-tfile.c, mips-tdump.c [CROSS_COMPILE]: Include mips/a.out.h.
+
+ * arm.h, clipper.h, i386.h, i860.h, pyr.h, spur.h:
+ (INIT_CUMULATIVE_ARGS): Pass just the return value type
+ to aggregate_value_p.
+
+Tue Sep 21 10:50:19 1993 Jan Brittenson (bson@nutrimat.gnu.ai.mit.edu)
+
+ * emit-rtl.c (gen_label_rtx, emit_line_note): add conditional for
+ bytecode.
+
+ * expr.c (mode_to_const_map, mode_to_load_map, mode_to_store_map):
+ new variable.
+ (bc_init_mode_to_opcode_maps): new function; initialize maps.
+ (expand_assignment, expand_expr, expand_increment): add
+ conditional for bytecode.
+ (bc_expand_expr, bc_load_memory, bc_store_memory,
+ bc_allocate_local, bc_allocate_variable_array, bc_load_externaddr,
+ bc_strdup, bc_load_externaddr_id, bc_load_localaddr,
+ bc_load_parmaddr, bc_canonicalize_array_ref,
+ bc_expand_component_address, bc_push_offset_and_size,
+ bc_expand_address, bc_runtime_type_code, bc_gen_constr_label,
+ bc_expand_constructor, bc_store_field, bc_store_bit_field,
+ bc_load_bit_field, bc_adjust_stack): new function.
+
+ * function.c (put_var_into_stack, expand_main_function): do
+ nothing for bytecode.
+ (bc_build_calldesc): new function.
+ (init_function_start): use it if outputting bytecode.
+ (expand_function_start, expand_function_end): add conditional for
+ bytecode.
+ (bc_expand_function_start, bc_expand_function_end): new function.
+
+ * integrate.c (output_inline_function): signal error for bytecode.
+
+ * regclass.c (fix_register): signal error for bytecode.
+
+ * stmt.c (struct nesting): new members bc_stack_level, skip_label).
+ (struct goto_fixup): new members bc_target, label, bc_handled,
+ bc_stack_level.
+ (emit_nop, expand_computed_goto, expand_label, expand_goto,
+ expand_goto_internal, fixup_gotos, expand_asm,
+ expand_asm_operands, expand_expr_stmt, expand_start_expr_stmt,
+ expand_end_expr_stmt, expand_start_cond, expand_start_else,
+ expand_end_cond, expand_start_loop, expand_loop_continue_here,
+ expand_end_loop, expand_exit_loop_if_false, expand_null_return,
+ expand_return, expand_start_bindings, expand_end_bindings,
+ expand_decl, expand_start_case, pushcase,
+ check_for_full_enumeration, expand_end_case): add conditional for
+ bytecode.
+ (bc_expand_goto_internal, bc_expand_fixup, bc_fixup_gotos,
+ bc_expand_start_cond, bc_expand_end_cond, bc_expand_start_else,
+ bc_expand_end_bindings, bc_expand_decl,
+ bc_expand_variable_local_init, bc_expand_decl_init,
+ bc_expand_start_case, bc_pushcase,
+ bc_check_for_full_enumeration_handling, bc_expand_end_case,
+ bc_new_uid): new function.
+
+ * toplev.c (output_bytecode): new variable.
+ (f_options): add entry for -fbytecode.
+ (fatal_insn_not_found, compile_file, rest_of_decl_compilation,
+ rest_of_compilation, main): add conditional for bytecode.
+
+ * config/m68k/m68k.c config/m68k/m68k.h: add bytecode specific
+ definitions.
+
+ * varasm.c (text_section, data_section, make_function_rtl,
+ make_decl_rtl, assemble_asm, assemble_start_function,
+ assemble_zeros, assemble_string, assemble_variable,
+ assemble_external, assemble_external_libcall, assemble_label,
+ assemble_name, assemble_static_space,
+ assemble_trampoline_template, assemble_integer, assemble_real,
+ decode_addr_const, output_constant_def, output_constant_pool,
+ output_constant, output_constructor): add conditional for
+ bytecode.
+ (bc_output_constructor, output_byte_asm, bc_make_rtl,
+ bc_output_data_constructor, bc_assemble_integer):
+ new function.
+ (handle_pragma_weak): break out asm writing code from
+ handle_pragma_token, move to varasm.c, so bytecode-specific
+ macros can access static varasm data and functions.
+
+ * c-pragma.c (handle_pragma_token): use handle_pragma_weak.
+
+ * function.h (enum pragma_state): moved from c-pragma.c
+
+ * bc-config.h, bc-emit.c, bc-optab.c, bc-optab.h, bc-trans.h,
+ bc-typecd.def, modemap.def, bytecode.def, bc-emit.h, bc-typecd.h,
+ bi-arity.c, bi-defs.h, bi-lexer.c, bi-opcode.c, bi-opname.c,
+ bi-parser.c, bi-parser.h, bi-reverse.c, bi-run.c, bi-run.h,
+ bi-unparse.c: new file. bc-* are exclusively compiler files, bi-*
+ are interpreter files.
+
+ * Makefile.in: add rules and/or dependencies for bc-emit.o,
+ bc-optab.o, bytecode, bi-arity, bi-opcode, bi-opname, bi-lexer,
+ bi-run.o, bi-parser.c, bi-parser.o, bi-lexer.o bi-arity.o,
+ bi-opcode.o, bi-opname.o, bi-reverse.o, bc-arity.h, bc-opcode.h,
+ bc-opname.h, bytecode.mostlyclean, bytecode.distclean,
+ bytecode.realclean
+
+
+Tue Sep 21 10:20:55 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Try putting RETURN at end of function
+ both at start and at end of our optimization.
+
+Mon Sep 20 17:22:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr): Handle flag_volatile here.
+ * c-typeck.c (build_indirect_ref): TREE_THIS_VOLATILE no longer
+ depends on flag_volatile.
+
+Mon Sep 20 15:21:31 1993 Doug Evans (dje@cygnus.com)
+
+ * gstddef.h: Back out change of Sep 15 (handles Sun lossage).
+ Prevented bootstrapping.
+
+Mon Sep 20 12:21:56 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/archive.c (objc_read_string): Allocate n+1 chars instead of
+ just n.
+
+Sun Sep 19 13:06:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (combine_temp_slots): Handle deletion properly.
+ Free the RTL that is allocated.
+ * rtl.c (rtx_free): New function.
+
+ * config/m68k/m68k.c (output_move_double): Handle register overlap
+ case that occur in soft-float XFmode. Code basically copied from
+ i386.c.
+
+Sun Sep 19 14:40:08 JDT 1993 Michael Ben-Gershon (mybg@cs.huji.ac.il)
+
+ * cse.c (simplify_unary_operation): If REAL_ARITHMETIC is defined,
+ and a FIX operation is applied to convert a CONST_DOUBLE to an INT,
+ the CONST_DOUBLE must first be rounded to zero.
+
+Sun Sep 19 12:49:05 1993 James Van Artsdalen (james@bigtex.cactus.org)
+
+ * Makefile.in (objc-headers): Depend on stmp-fixinc to build the
+ include/ subdirectory first.
+
+Sun Sep 19 09:45:16 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * gstddef.h (size_t): Acorn RISCiX requires __size_t defined.
+
+Sun Sep 19 09:08:09 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * genrecog.c (preds): Correct typo in name of `comparison_operator'.
+ (add_to_sequence): If PREDICATE_CODES specified, warn if we find a
+ predicate not in that list.
+
+ * reload.c (find_reloads): Reject an alternative if two operands
+ match the same output and we have to do a reload.
+
+ * rs6000.c (rs6000_override_options): Change processor type to
+ "rios1"; allow "rios" as synonym.
+ Add synonyms for "mpc6xx".
+ * rs6000.h (enum processor_type): Change from RIOS to RIOS1.
+ (PROCESSOR_DEFAULT): Likewise.
+ * rs6000.md (attribute "cpu"): Change from "rios" to "rios1"; all
+ uses changed.
+
+ * xm-alpha.h: Add extern declaration for alloca.
+
+ * a29k.h (PREDICATE_CODES): Fix typos and add missing entries.
+ * alpha.h, i860.h i960.h, m88k.h, mips.h, rs6000.h: Likewise.
+
+Sat Sep 18 09:27:03 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (convert_move): Use emit_library_call_value.
+
+Sat Sep 18 08:01:44 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.h (REG_ALLOC_ORDER): Add missing entries.
+
+ * combine.c (recog_for_combine): Fix typos in previous change.
+
+ * reload.c (earlyclobber_operand_p): New function.
+ (combine_reloads): Use it.
+ (find_reloads): Set reload_earlyclobbers earlier.
+ (refers_to_regno_for_reload_p): Count something being stored into
+ if it is an earlyclobber operand.
+
+Fri Sep 17 21:40:02 1993 Per Bothner (bothner@cygnus.com)
+
+ * fold-const.c (invert_truthvalue): Instead of aborting,
+ build a TRUTH_NOT_EXPR when unable to optimize.
+ (The aborts were not a problem for C, which always first
+ calls truthvalue_conversion, but that should not be
+ necessary for a language with real Booleans.)
+
+Fri Sep 17 20:38:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (output_init_element): Update constructor_bit_index
+ for union types.
+
+ * libgcc2.c: Declare __fixunsxfdi only if really have XFmode.
+ Likewise for __fixunstfdi.
+
+Fri Sep 17 18:08:37 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (recog_for_combine): Always reject a PARALLEL containing
+ our special CLOBBER.
+
+ * cse.c (fold_rtx, case MINUS): Copy result obtained from
+ hash table.
+
+ * cse.c (fold_rtx, case SUBREG): If paradoxical SUBREG of a
+ constant, return the constant.
+
+ * c-typeck.c (lookup_field): Use HOST_WIDE_INT instead of long or
+ int when we want integer wide enough to hold a pointer difference.
+
+Fri Sep 17 16:03:22 1993 Per Bothner (bothner@cygnus.com)
+
+ * dbxout.c (dbxout_type): For CHAR_TYPE and BOOLEAN_TYPE (in
+ languages that have them - not C), adopt an AIX convention
+ to distinguish these from other types.
+
+Fri Sep 17 09:02:06 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.h (emit_library_call_value): Fix declaration.
+
+Thu Sep 16 12:05:44 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (fixinc.ready): New target, like libgcc2.ready,
+ depending on xgcc and cpp.
+ (stmp-fixinc): Depend on fixinc.ready instead of xgcc and cpp.
+ (clean): Remove fixinc.ready.
+
+Thu Sep 16 10:22:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads): For PLUS operand, call find_reloads_toplev.
+
+ * optabs.c (expand_complex_abs): Fix typo in prev change.
+
+Thu Sep 16 02:06:11 1993 Jim Wilson (wilson@cygnus.com)
+
+ * flags.h (current_function_has_nonlocal_goto): Declare.
+ * function.h (struct function): New field has_nonlocal_goto.
+ * function.c (current_function_has_nonlocal_goto): New var.
+ (push_function_context): Save it.
+ (pop_function_context): Restore it.
+ (init_function_start): Init it.
+ * integrate.c (function_cannot_inline_p): Don't inline if it's set.
+ * stmt.c (expand_goto): Set it.
+
+ * reorg.c (mark_set_resources): For CALL_INSN, if followed by a
+ NOTE_INSN_SETJMP note, then assume that all registers are clobbered.
+ Handle case where CALL_INSN is in a sequence.
+
+Wed Sep 15 17:38:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstddef.h: Delete the conditional that used to semi-avoid
+ interference with sys/stdtypes.h on Sun. (fixincludes makes
+ it ok.)
+
+Wed Sep 15 16:17:09 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (ASM_FILE_START): Fix access information for $LIT$
+ subspace.
+
+Wed Sep 15 14:53:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/ns32k/ns32k.md: Add peepholes for stack adjust plus pushes.
+
+Wed Sep 15 13:38:24 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * c-typeck.c (lookup_field): New function (for chill).
+ (build_component_ref): Call it.
+
+Wed Sep 15 08:12:32 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * libgcc2.c: Declare __fixunsxfdi and __fixunstfdi.
+
+ * integrate.c (copy_for_inline, copy_rtx_and_substitute):
+ Always preserve the volatil flag when copying ASM_OPERANDS.
+
+Tue Sep 14 21:56:20 1993 Jim Wilson (wilson@cygnus.com)
+
+ * c-typeck.c (valid_compound_expr_initializer): New function.
+ (digest_init): Handle compound expressions as initializers when
+ pedantic.
+
+ * varasm.c (immed_double_const, immed_real_const_1): Don't touch
+ const_double_chain if not inside a function.
+
+Tue Sep 14 16:22:03 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Compare types using comptypes
+ instead of comparing pointers. (Helps Chill front end.)
+
+Tue Sep 14 12:16:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (emit_library_call_value): Finish making it work.
+ * optabs.c (expand_float): Use emit_library_call_value.
+ (expand_unop, expand_binop): Likewise.
+ (expand_complex_abs): Likewise.
+ Also pass SUBMODE as output mode to emit_library_call_value.
+ * function.c (aggregate_value_p): Allow type node as argument.
+
+ * config/ns32k/ns32k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
+ If omitting frame pointer, output an adjspd if necessary.
+ Use movd to save registers if four or less need saving.
+ Set DEPTH properly.
+
+ * reload.c (find_dummy_reload): New args inmode, outmode.
+ (find_reloads): Pass new args.
+ (push_reload): Likewise.
+
+Mon Sep 13 12:52:03 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (set_init_index): Don't allow variable indices.
+
+ * c-decl.c (complete_array_type): Handle TREE_PURPOSE
+ of array constructor elements.
+
+ * expr.c (store_constructor): Handle TREE_PURPOSE of array constructor.
+ (expand_expr, ARRAY_REF case): Likewise.
+
+ * varasm.c (output_constructor): Handle index value in
+ the TREE_PURPOSE, for array constructors.
+
+ * c-typeck.c (output_init_element): When putting an elt into a
+ CONSTRUCTOR, always set the TREE_PURPOSE (even for arrays).
+ Copy the node if it's an INTEGER_CST.
+ (output_pending_init_elements): If have gap and not incremental,
+ advance constructor_unfilled_fields or constructor_unfilled_index.
+
+Sun Sep 12 23:00:25 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr, case ARRAY_REF): Coerce lower bound (if
+ non-zero) to sizetype before subtraction.
+
+Sun Sep 12 16:18:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (push_init_level): Pop any implicit levels
+ that have been filled up.
+ Don't die if constructor_type is 0.
+ (process_init_element): If VALUE is 0 for union type,
+ update constructor_bit_index.
+
+Sun Sep 12 10:59:08 1993 Bill Cox (bill@cygnus.com)
+
+ * c-typeck.c (digest_init): Remove obsolete comments on args
+ TAIL, OF_WHAT.
+
+Sun Sep 12 08:45:36 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * loop.c (basic_induction_var): New arg MODE.
+ Use it to call convert_modes.
+ (strength_reduce): Supply the new arg to basic_induction_var.
+
+ * expmed.c (expand_shift): Use convert_modes.
+ (emit_store_flag): Likewise.
+
+Sat Sep 11 16:44:15 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * collect2.c (main): Provide upward compatibility with old version
+ of collect (avoids infinite mutual recursion between the two).
+
+Sat Sep 11 13:05:07 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * c-typeck.c (constructor_no_implicit): New variable.
+ If set, dis-allows eliding of braces in initializers.
+ (Set by Chill front-end.)
+ * c-typeck.c (process_init_element): Use it.
+
+Sat Sep 11 15:55:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * stor-layout.c (layout_record): Turn off PCC_BITFIELD_TYPE_MATTERS
+ rounding of field bitpos, if maximum_field_alignment is nonzero.
+
+Fri Sep 10 08:52:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (check_init_type_bitfields): Check for mismatch
+ between field's mode and its type's mode.
+
+ * expr.c (protect_from_queue): Don't alter an existing MEM.
+ (convert_modes): Use X's mode (not OLDMODE) unless it is VOIDmode.
+
+Fri Sep 10 01:01:32 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * config.sub: Recognize operating system `netbsd*'.
+
+Thu Sep 9 18:09:14 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * c-typeck.c (really_start_incremental_init, push_init_level):
+ Add support for arrays with non-zero lower bounds. (Used by Chill.)
+
+Thu Sep 9 19:20:59 1993 Jim Wilson (wilson@cygnus.com)
+
+ * tree.c (make_node): Put PARM_DECLs of nested functions onto
+ parent's saveable obstack.
+
+Thu Sep 9 14:17:00 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (CROSS_LIBGCC1): New variable. Rule to use when
+ building libgcc1.a for a cross compiler. Defaults to
+ libgcc1.cross.
+ * cross-make (LIBGCC1): Default to $(CROSS_LIBGCC1) rather than
+ libgcc1.cross.
+ * config/i386/t-next, config/i386/t-sol2, config/m88k/t-dgux,
+ config/m88k/t-luna, config/m88k/t-dgux-gas,
+ config/m88k/t-luna-gas, config/m88k/t-m88k,
+ config/m88k/t-m88k-gas, config/m88k/t-sysv4,
+ config/m68k/t-next, config/mips/t-bsd, config/mips/t-bsd-gas,
+ config/mips/t-mips, config/mips/t-mips-gas,
+ config/mips/t-osfrose, config/mips/t-svr3,
+ config/mips/t-svr3-gas, config/mips/t-svr4,
+ config/mips/t-svr4-gas, config/mips/t-ultrix, config/pa/t-pa,
+ config/sparc/t-sol2, config/h8300/t-h8300, config/sh/t-sh,
+ config/t-libc-ok (CROSS_LIBGCC1): Defined to be libgcc1.null.
+
+Thu Sep 9 09:48:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr): Set ignore for COND_EXPR with VOID_TYPE.
+
+ * expr.c (convert_modes): New function.
+ (convert_to_mode): Use that.
+ * expr.h (convert_modes): Declared.
+ * optabs.c (expand_twoval_binop): Use convert_modes.
+ (expand_complex_abs): Likewise.
+ (emit_cmp_insn): Likewise.
+ (expand_inline_function): Likewise.
+ * expmed.c (expand_divmod): Likewise.
+ (emit_store_flag): Likewise.
+ * loop.c (basic_induction_var): Likewise.
+ * integrate.c (expand_inline_function): Likewise.
+
+ * optabs.c (widen_operand): New arg OLDMODE.
+ (expand_binop, expand_unop): Fix calls to widen_operand.
+
+Wed Sep 8 18:25:50 1993 Doug Evans (dje@cygnus.com)
+
+ * sparc.c, sparc.h, sparc.md: Cosmetic changes only. Just
+ reordered code a little.
+
+Wed Sep 8 14:49:59 1993 Jim Wilson (wilson@cygnus.com)
+
+ * dbxout.c (dbxout_parms): For parameters in registers, if use
+ DECL_RTL, then must use TREE_TYPE instead of DECL_ARG_TYPE.
+
+ * mips.md (fix_truncdfsi2, fixtruncsfsi2): Mark SImode scratch
+ register as early clobbered when dest is in memory.
+
+ * fixincludes (sbusdev/audiovar.h): Fix wrongly edited // comments
+ nested within /* */ comments.
+
+ * gcc.c (process_command): Don't warn for -x after last input file
+ if spec_lang is zero.
+
+ * fixinc.mips (bsd43/bsd43.h): Change /**/ to ##.
+
+ * expr.c (convert_move): When truncating, call force_reg first if
+ it is something that gen_lowpart won't understand.
+
+ * sys-protos.h (getrlimit, getrusage, setrlimit): Return int not void.
+
+Wed Sep 8 11:28:41 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * m88k.c (output_call): Avoid use of jsr.n r1, this loses on
+ the 88110.
+
+Wed Sep 8 10:51:07 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h: (MASK_*, TARGET_*): Add target masks and tests.
+ (TARGET_SWITCHES): Add target switches for various architectures
+ and mnemonics options.
+ (TARGET_OPTIONS): Add cpu type as special target option.
+ (OVERRIDE_OPTIONS): Call rs6000_override_options to decipher.
+
+ * rs6000.c (rs6000_cpu, rs6000_cpu_string): New variables.
+ (rs6000_override_options): New function.
+
+ * rs6000.md (define_attr): Expand list of instruction attributes.
+ (define_function_unit): Compute delay information based
+ upon processor type and expand functional unit types.
+ (mulsi3, divsi3, divmodsi4, divsf3, divdf3, muldf3, movsf):
+ Use expanded attributes.
+ (load with update): Likewise.
+
+Wed Sep 8 06:34:32 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (output_init_element): When adding to
+ constructor_pending_elts, copy field.
+
+Wed Sep 8 06:15:58 1993 David Gershovich (dgirsh@iil.intel.com)
+
+ * expmed.c (make_tree, case CONST_INT): Properly set high part if
+ unsigned.
+
+ * optabs.c (expand_binop): Must always widen second operand
+ of shift.
+
+Wed Sep 8 05:16:59 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (push_init_level): Diagnose extra brace group at end
+ of record. Set constructor_type to 0.
+ (pop_init_level): Don't output anything if constructor_type is 0.
+ (process_init_element): Do nothing if constructor_type is 0.
+
+Tue Sep 7 19:11:20 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-common.c (c_build_type_variant): Allocate new type in same
+ obstack as old one.
+
+Tue Sep 7 17:45:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Fix error message text.
+
+Tue Sep 7 14:32:51 1993 Leonid Baraz (lbaraz@iil.intel.com)
+
+ * sched.c (schedule_block): Correct type of BIT.
+
+ * fold-const.c (fold): Don't try to process an RTL_EXPR.
+
+Tue Sep 7 06:18:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dbxout.c (dbxout_type): Handle enum constants bigger than one word.
+ Don't print big unsigned values as negative.
+ * c-decl.c (build_enumerator): Choose type properly for wide constants.
+ (finish_enum): Always set type of the enumerators to the enum type.
+ * c-typeck.c (default_conversion): For enum that's unsigned,
+ if it's at least as wide as int, convert to an unsigned type.
+
+ * config/i386/sol2.h (LIB_SPEC, LINK_SPEC, SWITCH_TAKES_ARG):
+ Definitions copied from sparc/sol2.h.
+ (CPP_SPEC): Copied from sparc/sol2.h, but deleted -msparclite.
+
+Mon Sep 6 14:43:20 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * genextract.c (insn_name_ptr): Define for debugging.
+ (walk_rtx, case MATCH_OP_DUP): Expand recog_dup_loc using XEXP not
+ XVECEXP.
+
+Mon Sep 6 13:28:03 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rtlanal.c (modified_between_p): Handle vectors.
+ (modified_in_p): New function.
+ (refers_to_regno_p): If setting AP, FP, or SP, we clobber the
+ virtual registers.
+ * optabs.c (emit_libcall_block): Don't move insns that reference
+ things set in previous insns.
+
+Mon Sep 6 08:35:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/mips/mips.h: Don't declare abort.
+
+Mon Sep 6 01:03:58 1993 Jim Wilson (wilson@cygnus.com)
+
+ * protoize (abort): Correct volatile function declaration.
+
+Sun Sep 5 18:23:09 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * Makefile.in (USER_H): Add va-h8300.h.
+
+ * collect2.c (our_file_name, last_file_name): deleted.
+ (our_file_names): New variable.
+ (is_in_prefix_list): New function.
+ (find_a_file): Call is_in_prefix_list.
+ (main): Make COLLECT_NAMES a list of our invocations.
+ If we've invoked ourselves, try again with ld_file_name.
+
+Sun Sep 5 16:00:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (assign_parms): When parm needs conversion on entry,
+ don't store it back in the slot where it was passed.
+
+Sun Sep 5 14:51:14 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * c-decl.c (grokdeclarator): For PARM_DECLs, only call
+ c_build_type_variant is constp or volatilep is true.
+
+Sun Sep 5 06:44:09 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.c: (print_operand): Convert fprintf of single letters
+ to putc and convert fprintf of constant strings to fputs.
+ Output '%u' operand as hexadecimal.
+
+Sat Sep 4 11:16:18 1993 Craig Burley (burley@gnu.ai.mit.edu)
+
+ * c-common.c (truthvalue_conversion): A complex value is nonzero
+ if either part is nonzero, not if both parts are nonzero.
+
+Fri Sep 3 19:02:41 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (build_enumerator): Apply default conversion to
+ constant-expression.
+
+Fri Sep 3 18:03:47 1993 Chris Lang (chrisl@mirc00.ncms.org)
+
+ * cccp.c (skip_if_group): Check for traditional mode when
+ skipping ahead to next #, ignore unless at beginning of line.
+
+Fri Sep 3 18:00:15 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h, i386/osfelf.h (LINK_SPEC): Pass -v and -dn on to
+ the ELF linker, which now accepts these switches.
+
+Fri Sep 3 13:34:22 1993 Doug Evans (dje@cygnus.com)
+
+ * i386/x-linux: Add -Iinclude to BOOT_CFLAGS.
+
+Fri Sep 3 01:54:19 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (READONLY_DATA_ASM_OP): Define.
+ (READONLY_DATA_SECTION): Define.
+ (EXTRA_SECTIONS): Add in_readonly_data.
+ (EXTRA_SECTION_FUNCTIONS): Add readonly_data.
+
+Thu Sep 2 19:19:14 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * clipper.h : Improve generated code for C400 Clipper.
+ (TARGET_SWITCHES): New options `c300' `c400'.
+ (TARGET_C300, TARGET_C400): New defines.
+ (TARGET_DEFAULT): Define as TARGET_C300.
+ (CONDITIONAL_REGISTER_USAGE): New define.
+
+Thu Sep 2 17:47:57 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * glimits.h (__INT_MAX__, __LONG_MAX__, __LONG_LONG_MAX__): New macros.
+ (INT_MAX, LONG_MAX, LONG_LONG_MAX): Use them.
+ (UINT_MAX, ULONG_MAX, ULONG_LONG_MAX): Ditto.
+
+Thu Sep 2 14:26:28 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (YES_UNDERSCORES): Delete macro, since we have
+ redefined all of the macros that are based on using it.
+ (CPP_SPEC, CC1_SPEC): Remove #ifndef NO_UNDERSCORE version.
+ OSF/ELF will now omit the leading underscore by default.
+ (LINK_SPEC): Pass -dy through to ELF linker. Do not pass -v to
+ ELF linker.
+
+ * i386/osfelf.h (CPP_SPEC, CC1_SPEC): Remove #ifndef NO_UNDERSCORE
+ version. OSF/ELF will now omit the leading underscore by default.
+ (LINK_SPEC): Pass -dy through to ELF linker. Do not pass -v to
+ ELF linker.
+
+
+ * final.c (tree.h): Include tree.h to get the declaration for
+ decl_printable_name.
+ (last_filename): Global to hold last filename encountered in a
+ NOTE.
+ (add_bb): New function to do common code for emitting a basic
+ block profiling increment. Remember the current function, and if
+ debugging, line number and filename for each basic block.
+ (add_bb_string): New function to remember strings for profiling
+ basic blocks.
+ (end_final): Bump name array size to 20. Use BSS to store profile
+ block count array unless -fno-common. Eliminate redefining name
+ within for loop block. Add a length field and three new parallel
+ arrays for basic blocks to hold function name, and if debugging,
+ line number and file name for basic block profiling.
+ (final_start_function): Save a printable version of the current
+ function name away if profiling basic blocks.
+ (final_end_function): Forget the current printable version of the
+ current function name if profiling basic blocks.
+ (final): Move basic block profiling support to just call add_bb.
+ (final_scan_insn): Ditto.
+ (output_source_line): Save filename in last_filename. If the file
+ name was changed and profiling basic blocks, remember the new file
+ name for the next call to add_bb.
+
+ * libgcc2.c (L_bb): If BLOCK_PROFILER_CODE is defined, expand it
+ here directly. If BLOCK_PROFILER_CODE is not defined, add code
+ that appends basic block profile information into a text file
+ bb.out. Move sun3 specific block profiling code to m68k/sun3.h.
+
+ * Makefile.in (final.o): Final.c now includes tree.h.
+
+ * m68k/sun3.h (BLOCK_PROFILER_CODE): Move the sun3 specific basic
+ block profiling code here from libgcc2.c.
+
+Wed Sep 1 19:00:06 1993 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * rs6000.md (truncdfsf2): Round to single instead of doing nothing.
+
+ * jump.c (jump_optimize): When optimize conditional jump around
+ unconditional jump, handle case where prev_label can be zero.
+
+ * c-decl.c (finish_decl): For static const variables, preserve
+ initializers instead of discarding them.
+
+Wed Sep 1 18:43:01 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Bump REJECT for a hard register; just
+ not for a pseudo.
+
+ * rs6000.md: Clean up hex constants a bit in emitted insns.
+
+ * rs6000.c (input_operand): Allow "easy" FP constants.
+ * rs6000.h (SECONDARY_MEMORY_NEEDED): New macro.
+ * rs6000.md (movdf): Simplify by taking advantage of
+ having SECONDARY_MEMORY_NEEDED.
+ Fix bugs relating to order in which moves are done.
+
+Wed Sep 1 18:08:36 1993 Jim Wilson (wilson@cygnus.com)
+
+ * reload.c (find_reloads_address_1): Handle SUBREGs same as REGs.
+
+Wed Sep 1 18:03:45 1993 Mike Stump (mrs@mole.gnu.ai.mit.edu)
+
+ * collect2.c (is_ctor_dtor): Make sizeof argument match the
+ string.
+
+Wed Sep 1 15:01:48 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (start.encap): Build g++ here also.
+
+Tue Aug 31 16:30:53 1993 Jim Wilson (wilson@cygnus.com)
+
+ * combine.c (make_compound_operation): Handle the case
+ (and (xor/ior (lshift...) (lshift...)) ...).
+ (make_field_assignment): In get_pos_from_mask call, only invert
+ bits in mode mask.
+
+ * reload.c (push_reload): Abort is secondary_reload wants same
+ class as an input reload.
+
+ * Makefile.in (libgcc1.a, libgcc2.a): Don't use set -e.
+ * configure (i[34]86-*-lynxos, m68k-*-lynxos, sparc-*-lynxos): Use
+ xm-lynx.h, x-lynx. Don't run fixincludes.
+ * x-lynx, xm-lynx.h: New files.
+
+ * Makefile.in (xsys-protos.h): Use fixtmp.c not tmp.c, and delete
+ it afterwards.
+
+ * function.c (assign_stack_temp): When allocate a slot too large,
+ split extra off into a slot of its own.
+ (combine_temp_slots): New function.
+ (free_temp_slots, pop_temp_slots): Call combine_temp_slots.
+
+Tue Aug 31 06:35:37 1993 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md: (zero_extendqisi2, zero_extendqihi2): Change anonymous
+ patterns to use 16-bit and 32-bit hexadecimal values and masks
+ instead of bit ranges if constant.
+ (rotlsi3, lshrsi3, move condition codes, scc insns): Likewise.
+
+Tue Aug 31 06:25:52 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (struct c_function): Remove unneeded enum_next_value.
+ (push_c_function_context, pop_c_function_context): Don't save it.
+
+Mon Aug 30 16:16:56 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-decl.c (get_parm_info, store_parm_decls): If PROMOTE_PROTOTYPE,
+ promote all integral types shorter than int, including short enums.
+ * c-typeck.c (convert_arguments): Likewise.
+ * cp-decl.c (grokparms): Likewise.
+ * cp-except.c (finish_exception_decl): Likewise.
+ * cp-typeck.c (convert_arguments): Likewise.
+
+Sun Aug 29 18:34:25 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (TARGET_NO_FP_IN_TOC): New; deleted TARGET_FP_IN_TOC.
+ (TARGET_SWITCHES): Rearrange to have three TOC choices.
+ (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Use TARGET_NO_FP_IN_TOC.
+ * rs6000.c (output_toc): Likewise.
+
+Sat Aug 28 15:04:35 1993 Jim Wilson (wilson@cygnus.com)
+
+ * mips.h (SELECT_SECTION): Simplify sdata_section test.
+
+ * lynx.h (CPP_SPEC): Use include_v not include-v.
+ (LINK_SPEC): Add missing `-' before `k' option.
+ (PREFERRED_DEBUGGING_TYPE): Define to DBX_DEBUG.
+ (SDB_DEBUGGING_INFO): Define.
+ (MD_EXEC_PREFIX): Define to /usr/local/lib/gcc-.
+ (LINK_LIBGCC_SPECIAL_1): Define.
+ (NAME__MAIN, SYMBOL__MAIN): Define.
+
+ * sparc.h (EXTRA_CONSTRAINT): Delete 'S'.
+ * sparc.md (call+1, call+2, call_value+1, untyped_call+1): Split
+ into two patterns, one using address_operand and 'p', the other
+ immediate_operand and 'i'.
+
+Fri Aug 27 15:43:19 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (nonzero_bits): Fix reversed test for when we
+ need to insert extra bits when sizes differ.
+ (nonzero_bits, case EQ): Always return STORE_FLAG_VALUE when returning
+ integer mode; remove now-redundant test.
+
+ * rs6000.h (LINK_SPEC): Add -bexport:/usr/lib/libg.exp when -g.
+
+Fri Aug 27 13:17:28 1993 Jim Wilson (wilson@cygnus.com)
+
+ * rs6000.c (print_operand_address): When TARGET_MINIMAL_TOC, use
+ r30 instead of r2 for TOC references.
+ (output_prologue): If TARGET_MINIMAL_TOC, and the constant pool
+ is needed, then setup r30.
+ (output_toc): When TARGET_MINIMAL_TOC, use .long instead of .tc.
+ * rs6000.h (TARGET_MINIMAL_TOC): New macro.
+ (TARGET_SWITCHES): Add -mminimal-toc and -mno-minimal-toc.
+ (ELIMINABLE_REGS): Add elimination for r30.
+ (CAN_ELIMINATE): Add case for r30.
+ (INITIAL_ELIMINATION_OFFSET): Add case for r30.
+ (toc_section): When TARET_MINIMAL_TOC, initialize toc_table.
+
+Thu Aug 26 17:59:38 1993 Doug Evans (dje@cygnus.com)
+
+ * gstdarg.h, gvarargs.h: Add support for H8/300H.
+ * va-h8300.h: New file.
+
+Thu Aug 26 15:15:27 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF C++ front-end merge.
+ Wed Aug 25 17:55:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (alter_visibility): Properly grok protected visibility.
+
+ Wed Aug 25 12:55:17 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (c_sizeof): If we're given an OFFSET_TYPE, work with
+ the type it refers to.
+
+ * cp-decl.c (finish_function): Properly handle inline functions,
+ don't just call rest_of_compilation.
+
+ * cp-decl2.c (flag_inline_debug): Deleted, never used.
+ (lang_f_options): Deleted -finline-debug.
+ * toplev.c (lang_options): Likewise.
+
+ Tue Aug 24 16:06:23 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-dem.c: Deleted. See demangler in the binutils distribution.
+
+ Tue Aug 24 14:24:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (start_function): Don't get ready to complain about a
+ built-in C-linkage function against a C++-linkage function.
+
+ Tue Aug 24 13:54:43 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * g++.c: also include <sys/types.h>
+
+ Tue Aug 24 05:39:57 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-parse.y (id_scope): Renamed from scoped_id. Also added handler
+ for case when rule appears after `dont_see_typename' action. Now
+ handles pointer-to-member syntax.
+
+ Mon Aug 23 14:04:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (datadef): Disallow forward declaration of an enum.
+
+ * cp-class.c (finish_struct): Set LAST_X to X, so we keep the chain
+ in some semblance of sanity. Makes more than one nested typedef
+ work properly.
+ * cp-decl.c (grokdeclarator): Rewrite how class-local typedefs are
+ handled to generate a TYPE_DECL that's useful.
+
+ * cp-decl.c (start_function): Don't error out if it's a static
+ function; don't return 0, which can cause other problems.
+
+ Sun Aug 22 18:00:57 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Set DECL_OVERLOADED flag on "C"
+ functions so that they are treated properly when "C++" functions of
+ the same name are declared before they are.
+
+ Sun Aug 22 13:31:44 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Fix how we handle binding levels, and tweak Niklas's new scoping
+ code to work 100%. This work should significantly improve how
+ g++ handles the use of nested classes.
+ * cp-tree.h (NEW_CLASS_SCOPING): Default to 1 now!
+ * cp-decl.c (pop_binding_level): Set current_binding_level to be
+ class_binding_level if it's non-NULL. Change code that looks for
+ our method of climbing back up the binding levels when we're
+ dealing with a parm.
+ (pushlevel_class): Call push_binding_level, not pushlevel.
+ (poplevel_class): Don't weird out if level is 0. DO NOT set
+ class_binding_level to the level_chain, this was the biggest bug
+ that made the pushes and pops to end up being unbalanced.
+ Call pop_binding_level instead of manually putting the level on
+ the free_binding_level chain.
+ (pop_from_top_level): Don't call poplevel if previous_class is
+ non-NULL.
+ (finish_function): Call expand_start_bindings and
+ expand_end_bindings in a balanced way.
+ (finish_function): Don't flail around screwing with the RTL for
+ the function in a very special case, just always call
+ rest_of_compilation as we normally would.
+ (finish_method): Call poplevel, not pop_binding_level.
+ * cp-class.c (pushclass): Don't call unuse_fields.
+ * cp-tree.c (break_out_calls): Always call copy_node, not just
+ when changed++ == 0.
+ * cp-search.c (bridge_obstack): Deleted.
+ (push_class_decls): Use search_obstack, not bridge_obstack.
+ (init_search_processing): Don't init bridge_obstack anymore.
+
+ * cp-init.c (build_new): Don't clear LOOKUP_COMPLAIN on flags, since
+ we need to honor the visibility of what we find.
+
+ Sat Aug 21 12:07:26 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Give an error about an array of
+ offset types and method types, in addition to reference types.
+ Also make sure to set `type' to be error_mark_node for each.
+
+ * cp-parse.y (primary, PLUSPLUS/MINUSMINUS): Resolve the OFFSET_REF
+ here.
+ * cp-typeck.c (build_x_unary_op): Not here.
+
+ * cp-class.c (finish_struct): Set DECL_CLASS_CONTEXT only if it's
+ a virtual function.
+ * cp-decl.c (grokfndecl): Communicate the virtual bit to function
+ decls that overload a virtual function from a base class.
+ * cp-search.c (dfs_pushdecls): Look at DECL_CLASS_CONTEXT if it's
+ a virtual function.
+
+ Fri Aug 20 13:35:54 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Make the g++ driver work with MS-DOS.
+ * g++.c (P_tmpdir, {R,W,X}_OK) [__MSDOS__]: Defined.
+ (choose_temp_base_try, choose_temp_base, perror_exec,
+ run_dos) [__MSDOS__]: New functions for the g++ program to operate
+ correctly under MS-DOS.
+ (temp_filename, temp_filename_length) [__MSDOS__]: New variables.
+ (main): Fix off-by-one error in allocation of arglist. When
+ running the main GCC program, handle running it under OS/2, MS-DOS,
+ as well as on a system that has execvp(2). Only find the location
+ of the GCC executable if we're not using DOS.
+
+ * cp-decl.c (poplevel): Only call remember_end_note if we haven't
+ already created the block. Set TREE_USED on the block.
+ (duplicate_decls): If the type of either the old or new decl is an
+ error_mark_node, we've already issued an error so set types_match
+ to be 1 now.
+ (xref_defn_tag): Mark the TYPE_DECL as ignored if doing dwarf
+ debugging.
+
+ * cp-parse.y (base_init, nodecls): Call keep_next_level to make
+ sure the BLOCK node is kept with the outermost curly braces of a
+ function.
+ (compstmt): For `{ }', insert a .pushlevel and do all of the other
+ stuff we need in every other compstmt situation, to generate proper
+ debugging for such things and handle the binding levels properly for
+ them.
+
+ Thu Aug 19 18:24:25 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (build_vec_delete): Wrap void COND_EXPR in NOP_EXPR, so
+ that the backend does not abort when trying to use the void mode
+ expression. Fixes make check (tString.o) in libg++.
+
+ Thu Aug 19 12:21:12 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_x_unary_op): When we receive an OFFSET_REF,
+ resolve it before looking for a way to handle the operation.
+
+ * cp-method.c: Include ctype.h.
+
+ Thu Aug 19 12:00:08 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c, cp-search.c (NEW_SEARCH, NEW_CONVERT,
+ CHECK_convert_pointer_to_single_level): Remove ability to revert to
+ old code, and remove checks. Cleans-up the code a little.
+
+ Thu Aug 19 00:41:55 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (expand_aggr_init): Avoid faulting, give error instead.
+
+ Wed Aug 18 22:43:25 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.h (RID_BIT_TYPE, RIDBIT_SETP, RIDBIT_NOTSETP, RIDBIT_SET,
+ RIDBIT_RESET, RIDBIT_RESET_ALL, RIDBIT_ANY_SET): New RID macros,
+ replaces RIDBIT macro. The new macros allow us to easily expand
+ past 32 RIDs.
+ * cp-decl.c (grokvardecl, grokdeclarator): Use them.
+
+ * cp-decl.c (grokdeclarator): Implement `mutable' keyword.
+ * cp-lex.c (init_lex, ): Ditto.
+ * cp-lex.h (enum rid): Ditto.
+ * cp-ptree.c (print_lang_decl): Ditto.
+ * cp-tree.h (struct lang_decl_flags, DECL_MUTABLE_P): Ditto.
+ * cp-typeck.c (build_component_ref_1, build_component_ref): Ditto.
+ * gplus.gperf (mutable): Ditto.
+ * cp-hash.h: Regenerate.
+
+ * cp-tree.h (struct lang_type): Fill out type_flags to multiple of 4
+ bytes for MIPS.
+
+ Fri Aug 13 16:07:46 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (DEBUG_DEFAULT_FUNCTIONS): Take out the #undef, so we can
+ use the command line to turn this on.
+
+ * cp-decl.c (grokdeclarator): Look for IDENTIFIER_TEMPLATE in the
+ name of current_class_type, not in current_class_type itself.
+
+ * cp-decl.c (pushdecl): Change to also check TREE_PUBLIC on the decl
+ in question, and do a pedwarn_with_decl instead of
+ warning_with_decl for conflicting extern declarations.
+
+ Fri Aug 13 12:26:41 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h: Delete all the old PARANOID stuff, it's suffered
+ serious bit rot.
+ (PRINT_LANG_DECL, PRINT_LANG_TYPE): Deleted, not used anymore.
+ (LANG_ID_FIELD, SET_LANG_ID): New macros.
+ ({,SET_}IDENTIFIER_{LABEL_VALUE, IMPLICIT_DECL, AS_DESC, AS_LIST,
+ ERROR_LOCUS}): Redefine these macros to use the new LANG_ID_FIELD
+ and SET_LANG_ID ones, so everything is much cleaner and readable.
+
+ * cp-decl.c (pushtag) [NEW_CLASS_SCOPING]: Push into the template's
+ class scope before trying to push the decl, and then pop back out.
+ (globalize_nested_type) [NEW_CLASS_SCOPING]: Asserts 348 and 349
+ aren't correct, shadow can come out to be null in some situations.
+
+ Thu Aug 12 10:56:50 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-method.c (build_overload_name): Allow the debugger to
+ deterministically demangle names with more than 9 nested class
+ levels.
+
+ Thu Aug 12 00:46:54 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (pushd_stack_level): Fix memory corruption problem.
+ Don't assume that the obstack won't move, because they will. Among
+ other things, the fix allows one to nest classes upto 240 levels
+ deep, instead of 60 or so.
+
+ Thu Aug 12 00:38:05 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * cp-decl2.c (finish_file): Use new get_file_function_name().
+ * cp-tree.h (FILE_FUNCTION_FORMAT): No longer needed.
+
+ Fri Aug 6 11:37:08 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (pop_binding_level) [DEBUG_CP_BINDING_LEVELS]: Don't
+ call abort, since we need to see where things end up.
+
+ Fri Aug 6 11:13:57 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct): Blast away old DECL_SIZE on
+ base_layout_decl so that the old value is not reused, but rather the
+ new value in the TREE_TYPE (TYPE_SIZE ()) will be.
+
+ Thu Aug 5 18:45:26 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (emit_base_init): Move vbase vtable pointer init to very
+ end of base initialization code. Completes July 30 change. The
+ dynamic type of a virtual base should not be the type of the current
+ constructor, until after all bases are initialized.
+
+Thu Aug 26 06:00:09 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c: (apply_args_register_offset): Don't use ANSI-style
+ definition.
+
+Wed Aug 25 19:37:26 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * expmed.c (store_bit_field): Do not use bitfield instructions for
+ STRICT_ALIGNMENT machines if the MEM's alignment isn't as big as
+ the MEM's mode.
+
+Wed Aug 25 19:17:13 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-typeck.c (format_char_info_print_table, "p"): Allow width.
+
+Tue Aug 24 18:36:31 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (output_{pro,epi}log): Don't need no-ops after calls
+ to functions to save and restore FP regs.
+
+Tue Aug 24 15:43:43 1993 Michael Meissner (meissner@osf.org)
+
+ * osfrose.h (SUBTARGET_SWITCHES): Add -mlarge-align and
+ -mword-align to control whether alignments of > 4 are honored.
+ (ASM_OUTPUT_ALIGN_CODE): If -mlarge-align allow alignments > 4.
+ (ASM_OUTPUT_ALIGN): Ditto.
+ (ASM_OUTPUT_LOOP_ALIGN): Always do a .align 2.
+ (FUNCTION_BLOCK_PROFILER): Define.
+ (BLOCK_PROFILER): Define.
+
+Tue Aug 24 14:04:11 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (compute_frame_size): Always align stack to 64 byte
+ boundary.
+
+ * pa.h (STACK_BOUNDARY): Stack pointer is 512 bit (64 byte)
+ aligned.
+
+ * pa.c (output_call): Use ASM_OUTPUT_INTERNAL_LABEL instead of
+ output_asm_label.
+
+Tue Aug 24 11:24:27 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * Merge of Objective C related changes since June 1.
+
+ * objc/xforward.c, objc/mutex.h: Files removed.
+ * objc/encoding.[ch]: New files.
+ * objc/todo: File removed.
+
+ Tue Jun 1 00:05:12 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * expr.c (apply_args_register_offset): New function
+ (apply_args_reg_offset): New variable
+ (apply_args_size): Added initialization of apply_args_reg_offset.
+
+ * objc-act.c (offset_is_register): New variable
+ (forwarding_offset): Use apply_args_register_offset to get
+ register offset.
+ (encode_method_def, encode_method_prototype): Prepend argument
+ offset by '+' if passed in register.
+ (apply_args_register_offset): Added declaration.
+
+ Sun Jun 6 20:57:03 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/encoding.h, objc/encoding.c: New files.
+ * objc/Object.m (-performv): Use new objc_msg_sendv.
+ * objc/sendmsg.c (objc_msg_sendv): Use new encoding facilities.
+ * objc/objc.h (arglist_t): Data-definition changed.
+ * objc/xforward.c: File removed.
+ * objc/Makefile (sendmsg.c, fflags, xforward): Targets removed;
+ (OBJC_O): Added encoding.o;
+ (OBJC_H): Added encoding.h, removed mutex.h.
+
+ * objc/objc.h (nil_method): Don't define it, import it from sendmsg.c.
+
+ Wed Jun 16 17:39:56 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/objc-api.h: (CLS_SETNUMBER): Clear old number
+ * objc/sendmsg.c (__objc_update_dispatch_table_for_class):
+ Don't free dtable... (memory leak to make posing work)
+ * objc/class.c (class_pose_as): lazy copy dtables.
+ #include sarray.h
+
+ Tue Jun 22 21:39:11 1993 Kresten Krab Thorup (krab@xiv)
+
+ * objc/class.c (class_pose_as): Rewritten
+ * objc/sendmsg.c (__objc_update_dispatch_table_for_class):
+ Free old dispatch table and install a new.
+
+ Tue Aug 24 00:41:35 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc-act.c (generate_method_descriptors, generate_ivar_lists,
+ generate_dispatch_tables): Reorganized use of constructors.
+ (build_descriptor_table_initializer, build_ivar_list_initializer,
+ build_dispatch_table_initializer): Removed argument `int *size'.
+
+ Tue Aug 24 00:52:04 1993 Kresten Krab Thorup (krab@iesd.auc.dk)
+
+ * objc/sendmsg.c (__objc_install_dispatch_table_for_class):
+ Dynamically expand dispatch table when full.
+
+Mon Aug 23 19:37:33 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (TARGET_TRAILING_COLON): Delete switch. TARGET_GAS now
+ controls the use of trailing colons.
+
+Mon Aug 23 18:46:14 1993 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * config/m68k/dpx2g.h (ASM_LONG): Move from dpx2.h.
+
+ * configure (m68k-bull-sysv): Add support for working with native
+ assembler.
+ * config/m68k/dpx2.h (MOTOROLA): Define this.
+ (VERSADOS): This the name of the DPX2 assembler. Define this in case.
+ (USG): Define this.
+ (SGS_NO_LI): define this to suppress jump table usage.
+ (TARGET_DEFAULT): Define this to 3 inside the conditional USE_GAS
+ since bitfields do not work a clean way on DPX2.
+ (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION,
+ SELECT_RTX_SECTION): #undef these.
+ (READONLY_DATA_SECTION): Define to data_section.
+ (*_ASM_OP, ASM_OUTPUT_*): Define these accordingly to the native
+ assembler syntax.
+ (LONG_DOUBLE_TYPE_SIZE): Set to 64 to not use XFmode.
+ (REAL_ARITHMETIC): Define this to use the software floating point
+ emulator.
+ (JUMP_TABLES_IN_TEXT_SECTION): Define this to 1.
+ (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Override m68k.h default.
+ (ASM_OUTPUT_ASCII): add a new variable to take care of the lentgh of
+ the operand field which must be < 80 chars.
+ (PRINT_OPERAND_ADDRESS): Override m68k.h default.
+ (PUT_SDB_TYPE): Output type in decimal.
+ (PUT_SDB_FUNCTION_[START|END]): Override sdbout.c default.
+ (PUT_SDB_BLOCK_[START|END]): Override sdbout.c default.
+
+Mon Aug 23 18:33:26 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (twoval_comparison_p): Add new arg, SAVE_P; all
+ callers changed.
+ (fold, case EQ_EXPR): If SAVE_P is true after call to
+ twoval_comparison_p, call save_expr on the expression we make.
+
+Mon Aug 23 07:57:41 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (CC1_SPEC, CPP_SPEC): If NO_UNDERSCORE is
+ defined, the ELF compiler defaults to -mno-underscores to remove
+ leading underscores. Clean up ROSE -pic options so that they are
+ never passed when building ELF objects.
+ * i386/osfelf.h: Likewise.
+
+Sun Aug 22 23:36:24 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * expr.c (expand_builtin_apply): Fix typo.
+
+ * pa.md (untyped_call): New define_expand.
+
+Fri Aug 20 12:24:50 1993 Ian Lance Taylor (ian@spiff.gnu.ai.mit.edu)
+
+ * gcc.c (main): Correct August 6 change.
+
+Thu Aug 19 19:19:19 1993 Jim Wilson (wilson@cygnus.com)
+
+ * combine.c (simplify_shift_const, XOR case): When applying
+ distributive law, use shift_mode and GET_MODE (varop) instead of
+ result_mode.
+
+Thu Aug 19 08:28:50 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (scc): Fix typo in scc with compare and set.
+
+ * combine.c (can_combine_p): Don't reject SUBREG assignments here.
+ (subst): Instead, do it here, but also allow it in as a
+ nested SUBREG since the inner one will be eliminated.
+ (simplify_and_const_int): Convert (and (neg X) (const_int 1))
+ to a shift when X is known to be either 0 or 1.
+
+ * fold-const.c (fold): Handle EQ_EXPR and NE_EXPR where both
+ args are comparisons or BIT_AND_EXPR with constant 1.
+
+Wed Aug 18 23:37:05 1993 Jim Wilson (wilson@cygnus.com)
+
+ * mips.h (SELECT_SECTION): Put object in sdata only if size is
+ known, i.e. greater than 0.
+
+Wed Aug 18 17:48:51 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Don't split a PARALLEL of a SIGN_EXTEND
+ and the object being sign extended if we have made assumptions
+ about the form the I2DEST.
+
+ * combine.c (nonzero_bits): Handle case when BYTE_LOADS_EXTEND is
+ not on and we are asked for something in a mode wider than it.
+
+Wed Aug 18 02:21:35 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (movdf insn): Distinguish between offsettable and
+ nonoffsettable memory locations when loading/storing a GR.
+ (movdi insn): Likewise. Loading a DImode constant can take as
+ many as 4 insns (length of 16 bytes).
+
+ * pa.md (zero_extendqihi2): No need to explicitly set a length;
+ the defaults are correct.
+ (zero_extendqisi2, floatsisf2, floatsidf2): Likewise.
+ (fix_truncdfsi2, fix_truncsfdi2, fix_truncdfdi2): Likewise.
+
+ * pa.c (emit_move_sequence): Check both reload_in_progress and
+ reload_completed when choosing a scratch/temporary register.
+
+ * pa.h (TARGET_KERNEL): Delete switch and all references to it.
+ * pa.c (emit_move_sequence): Always handle secondary reloads for
+ symbolic addresses.
+ (secondary_reload_class): Symbolic operands always need a secondary
+ reload from R1_REGS if their target class is not R1_REGS.
+ * pa.md (HIGH for symbolic operands): TARGET_KERNEL version is now
+ the only choice. Delete ! TARGET_KERNEL version.
+
+ * pa.h (DEFAULT_GDB_EXTENSIONS): GDB extensiosn are on by default.
+ * pa-hpux.h (DEFAULT_GDB_EXTENSIONS): Turn GDB extensions off.
+ * pa-hpux7.h (DEFAULT_GDB_EXTENSIONS): Likewise.
+
+ * pa.h (TARGET_GAS): New target flag to control use of GAS
+ specific assembler directives.
+ (TARGET_SWITCHES): Support -mgas and -mno-gas.
+ (ASM_DECLARE_FUNCTION_NAME): If TARGET_GAS then emit .PARAM
+ directives for static functions so argument relocations work.
+ * pa-ghpux.h (TARGET_DEFAULT): Enable TARGET_GAS.
+ * pa-gux7.h, pa-utahmach.h, pa.h (TARGET_DEFAULT): Likewise.
+ * pa1-ghpux.h, pa1-utahmach.h, pa1.h (TARGET_DEFAULT): Likewise.
+
+ * pa.c (hppa_legitimize_address): Rework address computation for
+ x[n - m] so that problems with implicit space register selection
+ are avoided.
+
+ * pa.h (EXTRA_CONSTRAINT): Delete unused 'S' constraint.
+ * pa.md (call_internal_symref): Make pattern unavailable if
+ TARGET_LONG_CALLS.
+ (call_value_internal_symref): Likewise.
+
+Mon Aug 16 18:47:56 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ From parkes@uiuc.edu:
+ * encore.h, ns32k.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use .double instead
+ of .word.
+ * ns32k.h (CASE_VECTOR_MODE): Now SImode; was HImode.
+ * ns32k.md (tablejump): Now SImode and uses cased.
+
+ * fold-const.c (fold, case EQ_EXPR): Re-enable converting
+ signed MOD operations to unsigned when inside comparisons
+ against zero, but only when the second operand of the MOD
+ is an integral power of two.
+
+Mon Aug 16 12:38:28 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * fixinc.dgux: Fixed va_list problem in _int_varargs.h
+
+Mon Aug 16 11:26:57 1993 Kevin Buettner (kev@spuds.geg.mot.com)
+
+ * configure (m88k-mot-sysv4*): Added new configuration for m88k
+ delta machines running svr4.
+
+ * config/m88k/mot-sysv4.h: New file.
+
+Mon Aug 16 11:16:32 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * combine.c: (use_crosses_set_p): Check for partially overlapping
+ hard regs.
+
+Sun Aug 15 20:17:20 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (find_end_label): If a suitable RETURN insn exists at
+ the end of the current function, place a label in front of it for
+ the end_of_function_label.
+
+Fri Aug 13 16:40:03 1993 Pat Rankin (rankin@eql.caltech.edu)
+
+ * c-typeck.c (check_format): For scan of "%[", skip over scan set
+ til closing ']' to avoid processing it as ordinary format characters.
+
+Fri Aug 13 16:02:23 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * c-common.c (declare_hidden_char_array): New function to
+ factor out duplicate code in declare_function_name.
+ Don't set DECL_EXTERNAL (which is illegal without TREE_PUBLIC)
+ to prevent output; instead, set TREE_ASM_WRITTEN.
+ (declare_function_name): Use declare_hidden_char_array.
+
+Fri Aug 13 14:58:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/ns32k/encore.h (ASM_OUTPUT_ALIGN_CODE): Override as no-op.
+
+Fri Aug 13 14:29:17 1993 Stephen Moshier (moshier@world.std.com)
+
+ * sparc.h (LONG_DOUBLE_TYPE_SIZE): Define to 128.
+
+ * real.c (GET_REAL, PUT_REAL): Add TFmode versions.
+ (MAXDECEXP, MINDECEXP): New decimal exponent limits
+ that vary with definition of LONG_DOUBLE_TYPE_SIZE.
+ (endian, ereal_atof, real_value_truncate, einfin, emdnorm, asctoeg):
+ Add cases for TFmode.
+ (etartdouble): New function converts REAL_VALUE_TYPE to TFmode
+ for use by ASM_OUTPUT_LONG_DOUBLE.
+ (edivm, emulm): Ifdef out, replace by faster multiply and divide.
+ (etoe113, toe113, e113toe): New type conversions for TFmode.
+ (asctoe113, e113toasc): New TFmode binary <-> decimal conversions.
+ (at top level): Define constants ezero, eone, emtens, etens, ...
+ in a new 20-byte format when LONG_DOUBLE_TYPE_SIZE = 128 and
+ set NE to 10. Otherwise, the internal format remains 12 bytes wide.
+ (etoudi, etodi, ditoe, uditoe): New functions, signed and unsigned
+ DImode float and fix, for real.c used in a libgcc-of-last-resort.
+ (esqrt): New function, correctly rounded square root for libgcc.
+ (etodec): Delete ifdef'd version.
+ (eroundi, eroundui): Rename to efixi, efixui and always
+ round towards zero.
+
+ From frank@atom.ansto.gov.au (Frank Crawford):
+ (etoibm, toibm, ibmtoe): New conversions for IBM 370 float format.
+ (e53toe, e64toe, toe64, etoe53, toe53, etoe24, toe24, asctoe53,
+ asctoeg, make_nan): Ifdef for IBM.
+
+ * real.h (REAL_VALUE_TYPE): Define array at least 20 bytes wide
+ if LONG_DOUBLE_TYPE_SIZE is 128 bits.
+ (etartdouble): Declare and use for REAL_VALUE_TO_TARGET_LONG_DOUBLE
+ when long double is TFmode.
+ (REAL_VALUE_FIX, REAL_VALUE_UNSIGNED_FIX): Must always round
+ towards zero.
+
+Fri Aug 13 07:50:42 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case SAVE_EXPR): Set MEM_IN_STRUCT_P
+ appropriately when the result is a MEM.
+
+ * integrate.c (expand_inline_function): Copy args that are in
+ hard regs instead of substituting them directly into insns.
+
+ * rs6000.md (subsi3): Merge alternatives.
+ (comparison patterns): Eliminate generation of "sfi."; no such
+ instruction exists.
+
+Thu Aug 12 21:24:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/sun3.h (CPP_PREDEFINES): Define _CROSS_TARGET_ARCH.
+
+Thu Aug 12 19:02:47 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.md (attribute "type"): Add new type, "branch".
+ (attribute "length"): New attribute; put on all insns that don't
+ have default length.
+ (branch patterns): If conditional branch won't reach, take
+ conditional branch around an unconditional branch.
+
+ * rs6000.md (plus): Split (plus (COMPARISON FOO ...) ...) at FOO.
+
+Thu Aug 12 14:04:40 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (SUBTARGET_SWITCHES): Add -munderscores and
+ -mno-underscores.
+ (CPP_SPEC): If -mno-underscores, define __NO_UNDERSCORES__.
+ (LPREFIX): Redefine, to take -m{,no-}underscores into account.
+ (ASM_GENERATE_INTERNAL_LABEL): Ditto.
+ (ASM_OUTPUT_INTERNAL_LABEL): Ditto.
+ (ASM_OUTPUT_LABELREF): Ditto.
+
+ * i386/osfelf.h (CPP_SPEC): If -mno-underscores, define
+ __NO_UNDERSCORES__.
+
+ * c-decl.c (pushdecl): Don't give nested warning messages if
+ DECL_IN_SYSTEM_HEADER is set in order not to give warnings when
+ defining new instances of __FUNCTION__ and __PRETTY_FUNCTION__.
+
+Thu Aug 12 13:42:04 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (legitimize_pic_address): Delete 4th arg SCRATCH.
+ Fix all callers.
+ (emit_move_sequence): Delete 3rd arg SCRATCH_REG. Fix all
+ callers. If operand1 is an invalid PIC address, then legitimize
+ it before doing anything else.
+ * sparc.h (SECONDARY_INPUT_RELOAD_CLASS): Delete case for invalid
+ PIC addresses.
+ (CONSTANT_ADDRESS_P): Reject invalid PIC addresses.
+ (LEGITIMATE_PIC_OPERAND_P): New macro.
+ (GO_IF_LEGITIMATE_ADDRESS): Reject invalid PIC addresses.
+ (LEGITIMIZE_ADDRESS): Fix call to legitimize_pic_address.
+ * sparc.md (reload_insi): Delete.
+ (*): Fix all callers of legitimize_pic_address and emit_move_sequence.
+
+ * sched.c (sched_analyze_insn): Handle USE before a JUMP_INSN just
+ like a USE before a CALL_INSN.
+ * function.c (thread_prologue_and_epilogue_insns): For the
+ epilogue, put USE insns immediately before the return insn.
+
+ * sparc.h (ASM_OUTPUT_DOUBLE): Always use REAL_VALUE_TO_TARGET_DOUBLE.
+ (ASM_OUTPUT_FLOAT): Always use REAL_VALUE_TO_TARGET_SINGLE.
+
+Wed Aug 11 19:48:24 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * tree.c (get_file_function_name): New function
+ for language-independent constructor name generation.
+ * objc-act.c (build_module_descriptor): Use it.
+ * tree.h (CONSTRUCTOR_NAME_FORMAT): Removed.
+
+Wed Aug 11 19:50:05 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (try_merge_delay_insns): Fix typo.
+ (fill_simple_delay_slots): Only access the JUMP_LABEL field
+ if the INSN needing delay slots is a JUMP_INSN.
+
+Wed Aug 11 15:09:52 1993 Michael Meissner (meissner@osf.org)
+
+ * c-typeck.c (output_init_element): Don't call default_conversion
+ for a STRING_CST if type is directly suitable for it.
+ (digest_init): Eliminate a lot of code that checks the variable
+ 'element', since element is always 0 in these code paths.
+
+Wed Aug 11 17:59:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (combine_instructions): Fix typo on test of basic block
+ number.
+
+Wed Aug 11 17:44:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (m68k-hp-bsd4.4*): Add missing *;
+ move before m68k-hp-bsd*.
+
+Wed Aug 11 09:21:56 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Get SIZE_TYPE by invoking gcc rather than cc; gcc
+ location is passed in as fourth argument.
+ * Makefile.in (stmp-fixinc): Depend upon xgcc and cpp; pass
+ objdir/xgcc -Bobjdir/ as fourth argument to $(FIXINCLUDES).
+
+Tue Aug 10 15:12:11 1993 Jim Wilson (wilson@cygnus.com)
+
+ * cse.c (cse_insn): After inserting src_eqv, check to see if it is
+ identical to any uninserted SET_SRCs, and if so, set their src_elt
+ to src_eqv_elt.
+
+Tue Aug 10 12:56:46 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (DOLLARS_IN_IDENTIFIERS): Define as 2.
+
+Mon Aug 9 19:02:49 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ Merged fixproto stuff from Cygnus.
+
+ Fri Aug 6 12:23:04 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto, Makefile.in: Rename tmp.[ci] -> fixtmp.[ci].
+
+ Tue Aug 3 22:24:58 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: Find not only nested directories, but also
+ links to directories.
+
+ Mon Aug 2 18:58:35 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: Add kludge to getting hit by double globbing.
+ * scan-types.sh: Fix to emit #define, not a typedef.
+ * patch-header.c (main): Make sure to print a space after
+ a function name when we didn't see a '('.
+ * Makefile.in (stmp-fixproto): Fix so (/*...*/) becomes ().
+
+ Fri Jul 30 17:18:22 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: Append seen files to fixproto.list file,
+ instead of done_files variable (which could become too long).
+ * fixproto: Don't generate a huge rel_souce_files variable
+ (which might become too long); instead loop over directories.
+ * fixproto: Remove signal() from list of required functions
+ for signal.h, because we can't grok its complicted prototype.
+ * Makefile.in (mostlyclean): Also delete fixproto.list.
+
+ Thu Jul 29 12:43:53 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * scan-decls.c (skip_to_enclosing_brace): New function.
+ * scan-decls.c (main): After a parameter list, skip
+ any following function body (usually for inline functions).
+
+ * fixproto: Fix to make sure stdlib.h and unistd.h get
+ the proper required_list, even when they need to be created.
+ * fixproto: Direct cpp error messages to /dev/null.
+ * patch-header.c: Make less verbose.
+
+ Wed Jul 28 16:12:39 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: Rewrite to use a case statement instead of eval to
+ set required_list and extra_check_list.
+ * fixproto: Simplify remaining call to tr improving portability.
+
+ * scan-decl: Recognize inline functions, emitting typecode 'I'.
+ * patch-header (read_scan_file): Handle inline functions.
+ * patch-header (read_scan_file): Fix thinko. Rename variable.
+
+Mon Aug 9 17:47:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (build_c_cast): For (void *) (FOO *) 0, return a nop_expr
+ so it doesn't count as a null pointer constant.
+ (convert_for_assignment, build_binary_op): Pedantically warn about
+ that case if looking for a null_pointer_constant.
+ (build_conditional_expr): Likewise.
+
+ * ns32k.c (output_move_double): Fix typos in last change.
+
+ * expr.c (store_expr): Don't return TEMP if it's a MEM.
+
+Mon Aug 9 15:26:27 1993 Jim Wilson (wilson@cygnus.com)
+
+ * varasm.c (assembler_variable): For XCOFF_DEBUG, restore section
+ if dbxout_symbol call changes it.
+
+ * sched.c (schedule_insns): Don't emit a NOTE at the end of the last
+ basic block if that would put it between a JUMP_INSN and a BARRIER.
+
+ * mips.h (OPTIMIZATION_OPTIONS): Use |=, not &= to set -mpgopt.
+ * mips.c (function_arg, DFmode case): Set regbase to GP_ARG_FIRST
+ if cum->arg_number greater than or equal to 2.
+
+Mon Aug 9 07:31:07 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * optabs.c (widen_operand): New function.
+ (expand_binop, expand_unop): Call it.
+
+Sun Aug 8 17:32:04 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (num_sign_bit_copies): Properly handle case when MODE is
+ narrower than that of X.
+ (simplify_shift_const): Remove change of July 26.
+
+Sun Aug 8 17:26:57 1993 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.c (sparc_type_code): Support range types.
+
+ * expr.c (expand_increment): Call save_expr on inner expression if
+ it is itself an increment expression.
+
+ * configure (*-*-riscos*): Set broken_install.
+ (mips-*-riscos[56789]sysv4): Use xm-sysv4.h.
+ * mips/xm-sysv4.h: New file.
+ * mips/svr3-5.h, mips/svr4-5.h (_SC_PAGE_SIZE): Define to
+ _SC_PAGESIZE if that exists.
+
+ * sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Use fp_zero_operand.
+ * sparc.c (reg_or_0_operand): Use fp_zero_operand.
+ (fp_zero_operand): New function.
+
+ * c-typeck.c (build_array_ref): Force array to be allocated on the
+ stack if it is accessed by out-of-bound constant integer subscript.
+
+ * configure (mips-*): Standardize indentation.
+ (mips-*-*bsd*): Use t-bsd and t-bsd-gas.
+ (mips-*-*sysv4*): Use t-svr4 and t-svr4-gas.
+ (mips-*-*sysv*): Use t-svr3 and t-svr3-gas.
+ * mips/t-bsd, mips/t-bsd-gas, mips/t-svr3, mips/t-svr3-gas,
+ mips/t-svr4, mips/t-svr4-gas: New files.
+
+Sun Aug 8 11:33:51 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * expmed.c (SLOW_UNALIGNED_ACCESS): Define, but allow override.
+ (store_bit_field): Test that instead of STRICT_ALIGNMENT.
+ Also, allow fetching as non-bitfield if memory is aligned enough.
+ (extract_bit_field): Install code here like that in store_bit_field.
+
+Sun Aug 8 04:26:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_assignment): If WANT_VALUE is 0, return NULL.
+ (store_expr): Likewise.
+ Rename arg SUGGEST_REG to WANT_VALUE.
+ Never return TARGET if WANT_VALUE unless BLKmode.
+ Instead, return TEMP or a value copied from TARGET.
+ Pass 0 for WANT_VALUE in recursive calls that ignore value.
+
+ * varasm.c (contains_pointers_p): New function.
+ (assemble_variable): Use that.
+
+ * toplev.c (rest_of_decl_compilation): Don't look at DECL_IGNORED_P.
+ Don't output a read-only initialized extern variable.
+
+ * c-common.c (declare_function_name): Set DECL_EXTERNAL in the decls.
+
+Sat Aug 7 22:25:42 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (process_init_element): Don't call clear_momentary
+ if value is 0.
+
+Sat Aug 7 15:53:06 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * caller-save.c (MAX_MOVE_MAX, MAX_UNITS_PER_WORD): New macros.
+ (regno_save_mode, regno_save_mem): Use them.
+ * tm.texi (MAX_MOVE_MAX, MAX_UNITS_PER_WORD): Document them.
+
+ * c-decl.c (init_decl_processing): Make long long available to
+ use for SIZE_TYPE and PTRDIFF_TYPE.
+
+Sat Aug 7 14:47:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/ns32k/ns32k.md (strict_low_part add/subtract recognizers):
+ Use %2, not %1, in template.
+
+Sat Aug 7 07:40:28 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Don't combine two reloads if their
+ reload_reg_rtx values differ.
+
+ * alpha.c (add_long_const): New function.
+ (output_{pro,epi}log): Use it.
+ If register save area is more than 32768 from SP, compute its
+ address into a register.
+
+ * expmed.c (expand_divmod): Clean up code and documentation,
+ especially in areas related to when copies are made.
+
+ * reload.c (push_reload, find_reloads): Treat (subreg (pseudo))
+ and (subreg (mem)) the same.
+ If we have (subreg:M1 (mem:M2 ...) ...), never do anything
+ special if M1 and M2 are the same size.
+
+ * tree.c (print_obstack_name): New function; derived from
+ original debug_obstack.
+ (debug_obstack): Call print_obstack_name.
+ * print-tree.c (print_node): Print obstack node is contained in.
+
+Sat Aug 7 04:47:43 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-decl.c (finish_decl): Allow file-scope static incomplete array.
+
+Fri Aug 6 13:03:27 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * expr.c (expand_expr, case PLUS_EXPR): Goto binop2 not
+ both_summands if we should not be returning a plus.
+
+Fri Aug 6 16:35:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/m68k.md (call and call_value pic recognizers) [HPUX_ASM]:
+ Output plain bsr, without `@PLTPC'.
+
+Fri Aug 6 16:12:08 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (reg_or_6bit_operand): New function.
+ * alpha.h (PREDICATE_CODES): Add reg_or_6bit_operand to list.
+ * alpha.md (shifts): Use reg_or_6bit_operand for shift counts.
+
+Fri Aug 6 15:57:58 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * gcc.c (main): If standard_startfile_prefix is a relative path,
+ prepend standard_exec_prefix/MACHINE/VERSION and, if
+ GCC_EXEC_PREFIX is defined, GCC_EXEC_PREFIX/MACHINE/VERSION.
+
+ * configure: If config.status did not change, don't update its
+ modification time.
+
+Fri Aug 6 15:23:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (output_init_element): Fix backward test in last change.
+ Use TYPE_MAIN_VARIANT.
+
+Fri Aug 6 06:43:09 1993 Michael Meissner (meissner@osf.org)
+
+ * g++.c (fancy_abort): Provide function in case user does
+ #define abort fancy_abort when building GCC.
+
+Fri Aug 6 00:15:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): If -v, print header search dir list.
+
+ * c-typeck.c (output_init_element): Call default_conversion here.
+ Set constructor_erroneous, etc., here.
+ (process_init_element): Not here.
+
+Thu Aug 5 20:55:47 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+
+ Thu Aug 5 17:07:20 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (build_vtable, prepare_fresh_vtable): Turn on
+ WRITABLE_VTABLES stuff that I disabled July 30th.
+ * cp-pt.c: Include flags.h to get write_symbols.
+
+ Thu Aug 5 15:50:25 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct): Make DWARF conditional code, really
+ DWARF conditional (write_symbols == DWARF_DEBUG).
+ * cp-decl.c (pushtag): Ditto.
+ * cp-decl2.c (finish_vtable_vardecl): Ditto.
+ * cp-pt.c (end_template_instantiation): Ditto.
+ * cp-search.c (dfs_debug_mark): Ditto.
+
+ Wed Aug 4 15:42:19 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_object_ref): Pass the original basetype, not
+ the type value of it, into build_scoped_ref (completes change of
+ Jul 1).
+
+ Wed Aug 4 14:40:35 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (related_vslot): Additional check to make sure vslots
+ are related.
+ * cp-class.c (modify_vtable_entries): Use DECL_CONTEXT, not
+ DECL_CLASS_CONTEXT when finding the vtable to put the virtual
+ function in, as otherwise we might not be able to find secondary
+ vtables. Ensures that the virtual function pointer will be put in
+ the correct vtable, instead of the wrong one.
+ * cp-class.c (modify_vtable_entry): Delete unused argument context.
+ * cp-class.c (modify_vtable_entries): Ditto.
+
+ Tue Aug 3 08:24:50 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-init.c (nc_nelts_field_id): New variable to cache the value of
+ the "nelts" identifier, to avoid unnecessary calls to get_identifier.
+ (init_init_processing): Use it.
+ (build_new): Likewise.
+ (build_vec_delete): Likewise.
+
+ * cp-decl2.c (walk_vtables): Make sure the type of VARS isn't an
+ error_mark_node when we're running down the list.
+
+ * cp-decl.c (grokdeclarator): Give an error and return an
+ error_mark_node, instead of saying sorry, when we're dealing with a
+ structure that's not yet been defined. Make sure type isn't an
+ error_mark_node when looking for an anonymous type.
+
+ * cp-pt.c (end_template_instantiation): If we're supplying dwarf
+ debug info, set up the TYPE_STUB_DECL and output the rest of the
+ debug output for the decl.
+
+ * cp-search.c (pop_search_level): Change from a macro into a
+ function, so we can more easily debug it.
+
+ * cp-search.c (dfs_debug_mark): Only mark the type name as ignored
+ if we aren't doing dwarf debugging.
+
+ * cp-typeck.c (build_unary_op): Only allow the prefix operators to
+ be lvalues, not the postfix ones.
+
+ * cp-decl.c (duplicate_decls): Delete the code that saved and
+ restored the UID of a decl, it's no longer necessary.
+
+ * cp-call.c (compute_conversion_costs_ansi): Avoid generating
+ warnings when we call build_type_conversion.
+
+ Mon Aug 2 17:56:36 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (start_function): Complain about redeclaration of a
+ template function, being careful to only deal with pre-parsed
+ declarations that *are* in fact from templates.
+
+ Fri Jul 30 18:03:10 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c, cp-decl.c, cp-pt.c, cp-tree.h: Delete all of the old
+ code for DEBUG_CP_BINDING_LEVELS, and replace it with a new, cleaner,
+ and more usable format.
+
+ Fri Jul 30 17:06:24 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (build_vtable, prepare_fresh_vtable): Temporarily
+ disable the change of June 20th making vtables readonly by default.
+
+ Fri Jul 30 14:47:09 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-init.c (emit_base_init): Make sure we initialize the pointer to
+ vtables even when we are not in charge. Fixes virtual calls to derived
+ objects that have a static base type, so that they call derived
+ functions, not base functions.
+ * cp-search.c (build_vbase_vtables_init): Change comments to reflect
+ uses of last argument more accurately. Also rename last argument to
+ a better name.
+
+ Wed Jul 28 16:23:52 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-search.c (build_type_pathname): Deleted fn.
+ * cp-class.c (build_type_pathname): Moved to here and made static,
+ since prepare_fresh_vtable is the only fn that ever uses it.
+ * cp-tree.h (build_type_pathname): Deleted prototype.
+
+ * g++.c (error) [!HAVE_VFPRINTF]: Move before fatal to avoid an
+ implicit declaration.
+
+ Wed Jul 28 13:49:58 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * Makefile.in (g++-cross): Add an explicit $(srcdir) for g++.c, pass
+ the quotes as part of GCC_NAME
+
+ * g++.c: only define GCC_NAME if it's already undefined
+
+ Tue Jul 27 10:48:30 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (finish_decl): Don't error on uninitialized const
+ arrays. Use error, not error_with_decl, so we know what really
+ brought about the problems.
+
+ * g++.c: New file, written in C so we don't do so many exec's, as we
+ did with the shell script.
+ * g++, c++: Deleted.
+ * Makefile.in (STAGESTUFF): Added g++ and g++-cross.
+ (all.cross): Added g++-cross.
+ (all.build): Depend upon g++.
+ (g++, g++-cross): New rules.
+ (install-common): Depend upon g++. Changed installation of g++/c++
+ to install the g++ program, and link c++ to it. Likewise for
+ g++-cross and c++-cross.
+
+ Mon Jul 26 09:40:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_unary_op) [case ADDR_EXPR]: When taking the
+ address of an increment/decrement operation, act on the thing
+ being incremented, not the ..._EXPR itself.
+
+ Fri Jul 23 08:33:32 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-call.c (build_method_call): Check DECL_STATIC_FUNCTION_P, not
+ TREE_STATIC, when validating a method call in a static call context.
+
+Thu Aug 5 19:18:00 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.h (TYPE_OBSTACK): New macro.
+ (struct tree_type): Add new field obstack.
+ * tree.c (make_node, copy_node): Set TYPE_OBSTACK.
+ (build_type_variant, build_type_copy, build_pointer_type): Put
+ new node in same obstack as old node; use push/pop obstacks.
+ * stor-layout.c (layout_type): Put size-related nodes in same
+ obstack as type.
+
+ * reload.c (push_reload, find_reloads): Refine when we reload
+ inside a SUBREG by respecting BYTE_LOADS_*_EXTEND; see comments
+ in push_reload.
+
+Thu Aug 5 14:17:59 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (ASM_DECLARE_FUNCTION_SIZE): Enable setting the
+ size for elf functions.
+
+Thu Aug 5 01:44:37 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * toplev.c (rest_of_compilation): If not optimizing, turn off
+ DECL_INLINE for functions declared as inline. Avoid turning on
+ DECL_INLINE when -finline-functions is used without -O.
+
+Thu Aug 5 00:06:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (handler): Check whether c_file and o_file are 0.
+
+Wed Aug 4 18:06:26 1993 Samuel A. Figueroa (figueroa@cs.nyu.edu)
+
+ * i386/gas.h (ASM_FILE_START): Write out two backslashes for each
+ backslash in the filename.
+
+Wed Aug 4 18:00:43 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * clipper.md (movdf+2): Allow `f' register as source operand in
+ first alternative.
+
+Wed Aug 4 07:35:03 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (eliminate_regs_in_insn): Always do elimination in
+ REG_NOTES if we changed anything in the insn.
+
+ * genattrtab.c: Include gvarargs.h after hconfig.h, like elsewhere.
+
+Wed Aug 4 01:32:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (output_init_element): Call digest_init before
+ calling output_constant. Always pass 0, 0 for last 2 args
+ to digest_init.
+
+ * expr.c (do_tablejump) [PIC_CASE_VECTOR_ADDRESS]: If pic,
+ copy INDEX to a register early, to avoid invalid address later.
+
+Tue Aug 3 23:56:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (process_command): Don't check whether file `-' exists.
+
+Tue Aug 3 18:52:13 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * configure (m88k-dg-dgux*): Use fixinc.dgux.
+ * x-dgux (INSTALL_HEADERS): Definition deleted.
+ * fixinc.dgux: New file.
+
+Tue Aug 3 17:34:53 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (store_one_arg): Don't pass ARG->STACK as TARGET if it
+ is a different mode than the expression (i.e., a promoted mode).
+
+ * combine.c (force_to_mode): Now pass actual AND mask instead
+ of number of bits; generalize appropriately.
+ Move most cases from simplify_and_const_int in.
+ (simplify_and_const_int): Remove most code from here; call
+ force_to_mode instead.
+ (subst, make_extraction, make_compound_operation): Change calls
+ to force_to_mode.
+ (make_field_assignment): Likewise.
+ (simplify_comparison): Add call to force_to_mode when
+ doing a sign bit comparison.
+ * optabs.c (code_to_optab): New variable.
+ (init_optab): Initialize it.
+ * expr.h: Declare code_to_optab.
+
+Tue Aug 3 15:40:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gstddef.h: Test and define __INT_WCHAR_T_H.
+
+Mon Aug 2 22:42:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i[34]86-sequent-sysv*): New alternative.
+ * config/i386/seq-sysv3.h: New file.
+
+ * combine.c (struct undo): Rename `rtx' fields to `r'.
+ (undo_all, SUBST, gen_rtx_combine): Corresponding changes.
+
+Mon Aug 2 18:53:23 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (subst): Move simple operations inside IF_THEN_ELSE
+ if the IF_THEN_ELSE is in the second operand as well as the first.
+ (subst, case NEG): Use plus_constant to make a PLUS.
+ (subst, case MINUS): Simplify (minus 1 (comparison foo bar)).
+ (subst, case EQ): Add a number of missing cases where
+ comparisons may be replaced with arithmetic or logical ops.
+ (subst, case IF_THEN_ELSE): Handle (if_then_else COND (OP Z C1) Z)
+ in a more general manner.
+ (simplify_and_const_int): Make AND with gen_binary in case we
+ can simplify it.
+
+Mon Aug 2 14:45:43 1993 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * genattrtab.c (substitute_address): In prototype, don't specify
+ the arg types of the arg functions.
+
+ * config/m68k/x-dpx2 (CLIB): Fix typo.
+
+Mon Aug 2 06:36:53 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * local-alloc.c (block_alloc): Don't attempt to allocate a
+ SCRATCH if it will not fit in scratch_list.
+
+Mon Aug 2 00:02:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (expand_call): Check properly for volatile function.
+
+Sun Aug 1 04:18:23 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-common.c (decl_attributes): Support attributes `volatile'
+ with alias `noreturn', and `const'.
+ * c-parse.in (attrib): Accept those attributes.
+
+ * c-typeck.c (build_binary_op): Warn about ordered comparison
+ between pointers to complete and incomplete types.
+
+ * c-parse.in (stmt): In an expr stmt, call default_conversion
+ for arrays and for functions.
+
+ * c-decl.c (finish_struct): No pedwarn for field with enum type
+ if size matches int.
+ (grokdeclarator): No error for void type for extern or global var.
+
+ * c-typeck.c (digest_init): No error for a STRING_CST that already
+ went through digest_init.
+ (parser_build_binary_op): Generate a NON_LVALUE_EXPR, not NOP_EXPR,
+ around a constant value.
+
+ * config/m68k/amix.h (ASM_OUTPUT_INTERNAL_LABEL)
+ (ASM_GENERATE_INTERNAL_LABEL): Definitions deleted.
+
+ * expr.c (do_tablejump): Use PIC_CASE_VECTOR_ADDRESS if defined.
+ * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Defined.
+ (GO_IF_LEGITIMATE_ADDRESS): If pic, accept LABEL+INDEX.
+
+ * c-decl.c (grokdeclarator): Warn here for volatile fn returning
+ non-void type.
+ (start_function): Not here.
+
+ * c-decl.c (grokdeclarator): Don't pass on const and volatile
+ fron function value type to function type.
+
+Sat Jul 31 01:48:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Finish getting rid of tail.
+ Also get rid of old_tail_contents. Don't set free_tree_list.
+ (free_tree_list): Var deleted.
+
+ * c-typeck.c (process_init_element): Treat string constants specially
+ only for arrays of integers.
+
+Fri Jul 30 06:49:58 1993 Torbjorn Granlund (tege@sics.se)
+
+ * expmed.c (mult_is_very_cheap): Delete.
+ (mult_cost): Delete.
+ (init_expmed): Delete computation of mult_cost and mult_is_very_cheap.
+ (expand_mult): Compute mult_cost here for every constant multiplier.
+ (synth_mult): Return found algorithms through a struct pointer.
+
+Fri Jul 30 06:45:35 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case NOP_EXPR): Delete a pair of conversions
+ back to the original type when intermediate type is at least as wide.
+
+ * combine.c: Remove change of July 21.
+ (this_basic_block): New variable.
+ (combine_instructions): Set it.
+ (try_combine, distribute_links): Use it and basic_block_head
+ to see if we've gone to a new basic block instead of trying
+ to reproduce calculation done in flow.
+
+ * stmt.c (expand_return): Don't use jumps for "return x == y" if
+ they are expensive.
+
+Fri Jul 30 02:03:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/i386.md (ffssi2 and ffshi2 recognizers):
+ Generate unique labels by hand.
+
+Thu Jul 29 01:47:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (push_init_level): For braces around scalar, just warn.
+ (process_init_element): Special handling for {"foo"}.
+ (struct constructor_stack): New field `replacement_value'.
+ (push_init_level, really_start_incremental_init): Clear new field.
+ (pop_init_level): Return the replacement_value if any.
+ At top level in initializer, output that value,
+ and set the array size from it.
+
+ * c-typeck.c (digest_init): Delete arg TAIL. Fix all calls.
+
+ * objc-act.c (build_shared_structure_initializer):
+ Call default_conversion for NAME.
+ (add_objc_string): Make an ADDR_EXPR to return.
+ (init_objc_symtab): Make ADDR_EXPR for UOBJC_SELECTOR_TABLE_decl.
+
+ * objc-act.c: Build all CONSTRUCTORs with types.
+ (build_constructor): New function. All CONSTRUCTOR builds changed.
+ (init_def_list, init_objc_symtab): New arg TYPE.
+ (init_module_descriptor): Likewise.
+ (init_objc_symtab): Pass TYPE arg to init_def_list.
+ (generate_objc_symtab_decl): Pass TYPE arg to init_objc_symtab.
+ (build_module_descriptor): Pass TYPE arg to init_module_descriptor.
+ (build_descriptor_table_initializer): New arg TYPE.
+ (generate_method_descriptors): Pass TYPE arg to
+ build_descriptor_table_initializer.
+ (generate_protocols): Pass TYPE arg to build_protocol_initializer.
+ (uild_protocol_initializer): New arg TYPE.
+ (build_ivar_list_initializer): New arg TYPE.
+ (generate_ivar_lists): Pass TYPE arg to build_ivar_list_initializer.
+ (build_dispatch_table_initializer): New arg TYPE.
+ (generate_dispatch_tables): Pass TYPE arg to
+ build_dispatch_table_initializer.
+ (build_category_initializer): New arg TYPE.
+ (build_shared_structure_initializer): New arg TYPE.
+ (generate_category): Pass TYPE arg to build_category_initializer.
+ (generate_shared_structures): Pass TYPE arg to
+ build_shared_structure_initializer.
+
+ * config/i386/x-ncr3000 (CC, OLDCC): Deleted.
+ * config/i386/xm-sysv4.h [__HIGHC__]: Include alloca.h.
+
+ * convert.c (convert_to_integer): Don't pass truncate into ABS_EXPR.
+
+ * configure: Ignore -enable... and --enable... options.
+
+Wed Jul 28 20:15:05 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (compare): Add ./ in tail command.
+
+Wed Jul 28 15:36:11 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * integrate.c (copy_rtx_and_substitute, case LABEL_REF): If
+ we turn off LABEL_REF_NONLOCAL_P, increment function_call_count.
+
+ * integrate.c (copy_for_inline, case LABEL_REF): Properly copy
+ LABEL_REF with LABEL_REF_NONLOCAL_P set.
+ Copy LABEL_OUTSIDE_LOOP_P flag.
+ (copy_rtx_and_substitute, case LABEL_REF): Likewise.
+ (copy_rtx_and_substitute, case CONST): Make recursive call for
+ a LABEL_REF in the constant pool.
+
+ * c-iterate.c (iterator_loop_{pro,epi}logue): Set TREE_SIDE_EFFECTS
+ on the MODIFY_EXPRs we make.
+ Pass const0_rtx as TARGET to expand_expr.
+ * cp-cvt.c (build_up_reference): Set TREE_SIDE_EFFECTS on MODIFY_EXPR.
+ * stmt.c (expand_return): Likewise.
+
+Wed Jul 28 12:17:39 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (SUBTARGET_OVERRIDE_OPTIONS): Use this instead of
+ OVERRIDE_OPTIONS.
+
+Wed Jul 28 13:45:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_expr, case ADDR_EXPR): Treat CONCAT like REG.
+
+ * c-decl.c (start_function): Warn if volatile fn returns non-void.
+
+Wed Jul 28 13:22:15 1993 Jim Wilson (wilson@cygnus.com)
+
+ * c-parse.in (simple_if, if_prefix, stmt): Undo Jul 7 change.
+ (if_prefix): Store stmt_count in $$ not $1.
+ (stmt): Add comment explaining why empty-if warning is here.
+
+ * sparc.c (shift_operand): New function.
+ * sparc.md (ashlsi3, ashrsi3, lshrsi3): Use shift_operand.
+
+ * loop.c (strength_reduce): Don't ignore a giv that depends on a
+ reversed biv.
+
+ * mips/x-sysv (ALLOCA): Define.
+ * mips-5.h (STARTFILE_SPEC): Define.
+ * x-iris3: New file.
+ * configure (mips-sgi-*): Use x-iris3 instead of x-iris.
+ * Makefile.in (libgcc.a): Do `chmod +w *' between two ar commands.
+
+ * i960.h (INITIAL_FRAME_POINTER_OFFSET): Negate, and subtract 64
+ bytes.
+
+ * sched.c (schedule_block): Do not emit line number notes before
+ other notes.
+
+ * varasm.c (assemble_variable): flag_no_common applies only if
+ external linkage.
+
+ * calls.c (expand_call): For unaligned arguments on
+ BYTES_BIG_ENDIAN machines, correct bitfield offset calculations.
+ * expr.c (move_block_from_reg): New argument SIZE. If SIZE less
+ than word and BYTES_BIG_ENDIAN, shift block left to align it
+ before storing it to memory.
+ * expr.h (move_block_from_reg): Add new argument to prototype.
+ * function.c (assign_parms): Pass extra argument SIZE to
+ move_block_from_reg calls.
+ (locate_and_pad_parm): For !ARGS_GROW_DOWNWARD case, move downward
+ padding pad_below call after round_up call.
+ * mips.c (function_arg): Shift all structures less than 4 bytes,
+ not just those which are QImode or HImode.
+ * a29k.h, alpha.h, i960.c, m88k.c, pa.c, romp.h, rs6000.h:
+ Add new parameter to move_block_from_reg calls.
+
+Wed Jul 28 12:40:06 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * expmed.c (store_split_bitfield): Fix handling of bitfields that
+ cross word boundaries, can only handle a word at a time.
+ (extract_split_bitfield): Likewise.
+
+Wed Jul 28 06:44:50 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * configure: Use m88k/x-sysv3 for m88k-*-sysv3.
+ * m88k/x-sysv3: New file, use gnu alloca.
+
+Tue Jul 27 13:53:06 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu)
+
+ * fixproto: Pass '-' to tr as the 1-character range '---'.
+ * cross-make: Define STMP_FIXPROTO to empty for cross.
+ * patch-header.c (read_scan_file): Minor re-write to avoid
+ obstack_copy0, since that uses the non-portable bcopy().
+ * Makefile.in (patch-header): Use $(HOST_OBSTACK).
+ * gen-protos.c (main): Disable obnoxious warning message.
+
+Tue Jul 27 16:42:44 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * fold-const.c (optimize_bit_field_compare): Preserve volatility
+ of bitfield.
+
+Tue Jul 27 01:33:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (convert_for_assignment): Mismatch in signedness
+ of pointer targets should not inhibit warnings for const mismatch.
+
+ * function.c (assign_parms): Don't copy too much when extending
+ parm_reg_stack_loc.
+
+ * config/m88k/m88k.h (ASM_DECLARE_OBJECT_NAME): Don't make a .size
+ if the size is not known. Use DECL, not decl.
+ * config/svr4.h, config/i386/osfrose.h: Likewise.
+
+ * c-typeck.c (set_init_index): Add pedantic warning.
+ (set_init_label): Likewise.
+
+Tue Jul 27 14:22:48 1993 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * gstddef.h (_WCHAR_T_H): Test this and define this.
+
+ * configure (m68k-bull-sysv): Test for --stabs;
+ generate either native coff or dbx-in-coff debugging information.
+
+ * config/m68k/dpx2.h (CPP_PREDEFINES): added -D_POSIX_SOURCE
+ -D_XOPEN_SOURCE -D_BULL_SOURCE to the list.
+ (CPP_SPEC): removed ansi definition.
+ * config/m68k/dpx2g.h (DBX_DEBUGGING_INFO): Remove this to let gcc
+ deals with gas and coff.
+ * config/m68k/dpx2cdbx.h: New file for gas and dbx-in-coff.
+ * config/x-dpx2 (CLIB): removed -lc_s and added -lmalloc.
+ (X_CFLAGS): removed -D_SYSV and added -D_POSIX_SOURCE -D_XOPEN_SOURCE
+ -D_BULL_SOURCE to deal with the posix stuff.
+
+Mon Jul 26 17:42:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (digest_init): Add `static' to definition.
+
+ * combine.c (simplify_shift_const): Inhibit hacks based on
+ num_sign_bit_copies if shift_mode differs from the mode of varop.
+
+ * toplev.c (main): When -W sets warn_uninitialized, avoid later warning
+ if warn_uninitialized is not supported.
+
+Mon Jul 26 14:14:02 BST 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * collect2.c (NAME__MAIN, SYMBOL__MAIN): Add default definitions.
+ (write_c_file, scan_prog_file [OBJECT_FORMAT_ROSE]):
+ Use macros instead of explicitly __main.
+
+ * function.c (expand_main_function): Likewise.
+
+ * libgcc2.c (__main): Use macro SYMBOL__MAIN instead of invoking
+ directly.
+
+Mon Jul 26 16:03:33 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case EQ_EXPR): Remove code that converts
+ mod to unsigned mod; it isn't correct for negative operands.
+
+ * toplev.c (strip_off_ending): Allow .ad* for Ada.
+
+Mon Jul 26 14:06:04 1993 Bill Cox (bill@majipoor.cygnus.com)
+
+ * c-decl.c (print_lang_decl, print_lang_type): Correct function
+ headers to match prototype, and calls.
+
+Sun Jul 25 17:01:34 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: New script to add prototypes and otherwise clean up
+ system include files (especially for C++ and also gcc -Wimplicit).
+ * scan-decl.c: New program used by fixproto to analyze header
+ files (it extracts declarations from cpp output).
+ * patch-header.c: New program used by fixproto to analyze and
+ patch header files.
+ * scan.c: New file. Routines used by scan-decls and
+ patch-header.
+ * scan.h: New file. Common declarations.
+ * gen-protos.c: New file. Massages a list of prototypes.
+ * Makefile.in: Add fixproto support.
+ * populate: Deleted. Superseded by fixproto.
+
+Sun Jul 25 03:56:18 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (start_init): Fill in p->next.
+
+ * config/i386/i386.md (movstrictqi): Change q<-g alternative to q<-m.
+
+Sat Jul 24 18:17:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (emit_move_insn_1): For complex stack push,
+ don't use change_address.
+
+Sat Jul 24 15:05:50 1993 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixincludes (unistd.h): Generalize AIX fix (for using
+ C++ keyword new) to unistd.h as well as stdio.h.
+ * fixincludes (sys/wait.h): Fix NeXT problem with
+ a 'wait(union wait*)' prototype that breaks Posix.1.
+ * fixincludes (math.h): For C++, patch AIX's use of
+ 'class' as function name.
+
+Sat Jul 24 02:48:31 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * function.c (put_reg_into_stack): New subroutine.
+ (put_var_into_stack): Use that; handle CONCAT.
+
+ * varasm.c (assemble_variable): For array whose size comes from
+ the initializer, determine proper alignment here.
+ (assemble_align): New function.
+
+ * c-typeck.c: Handle gaps in record initializers.
+ (constructor_bit_index): New variable.
+ (constructor_stack): New field bit_index.
+ (really_start_incremental_init, push_init_level): Save and init it.
+ (pop_init_level): Restore it.
+ (output_init_element): Update constructor_bit_index.
+ Use it to output gaps.
+ (pop_init_level): Speed up by using constructor_bit_index.
+
+ * c-typeck.c (process_init_element): Accept STRING_CST for subarray.
+
+ * loop.c (mark_loop_jump): Handle weird cases like jumping to
+ a symbol_ref.
+
+Fri Jul 23 15:55:14 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * c-tree.h: Fix prototypes for print_lang_decl, print_lang_type.
+
+Fri Jul 23 15:06:05 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (start_init): Second arg is now a tree.
+
+Fri Jul 23 08:26:43 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+ Thu Jul 22 09:54:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (push_overloaded_decl): Fix typo in warning msg.
+
+ Tue Jul 20 13:13:18 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (build_vtable, prepare_fresh_vtable): Make the vtables
+ readonly by default.
+
+ Mon Jul 19 13:16:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (NEW_CLASS_SCOPING): Turn this off for now.
+
+ Mon Jul 19 11:04:51 1993 Jason Merrill (jason@rtl.cygnus.com)
+
+ * cp-class.c (build_vfn_ref): Rename `index' to `idx'.
+
+ Fri Jul 16 07:44:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (finish_struct): Check both if the type has a default
+ constructor, and if it has a non-const copy constructor, so we'll know
+ not to generate a const copy constructor for the type we're working on.
+ * cp-lex.c (cons_up_default_function): Add other front-end debugging
+ info.
+ (default_copy_constructor_body): And take it out of here.
+
+ * cp-expr.c (cplus_expand_expr): Add missing arguments to expand_expr.
+
+ Thu Jul 15 16:54:33 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (default_copy_constructor_body): Also check to copy
+ anonymous unions, since they don't show up as FIELD_DECLs.
+ (largest_union_member): New function.
+
+ Thu Jul 15 16:23:18 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-expr.c (cplus_expand_expr): Use resolve_offset_ref to handle
+ OFFSET_REFs, as anything else would be wrong.
+
+ Thu Jul 15 13:23:40 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.h (CLASSTYPE_INTERFACE_KNOWN,
+ SET_CLASSTYPE_INTERFACE_UNKNOWN_X, SET_CLASSTYPE_INTERFACE_UNKNOWN,
+ SET_CLASSTYPE_INTERFACE_KNOWN): New access methods.
+ * cp-class.c (import_export_vtable, duplicate_tag_error,
+ finish_struct): Use new access method.
+ * cp-decl.c: (grokfndecl, grokdeclarator, xref_tag): Ditto.
+ * cp-gc.c (build_t_desc): Ditto.
+ * cp-lex.c (set_vardecl_interface_info, make_lang_type): Ditto.
+ * cp-pt.c (end_template_instantiation, do_pending_expansions):
+ Ditto.
+ * cp-search.c (dfs_debug_mark): Ditto.
+
+ * cp-decl.c (grok_reference_init): Reword error message.
+
+ Wed Jul 14 09:17:18 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): Adjust change of May 30th to
+ accept more things (and still handle ARM p308 properly). Disable
+ the old way, but leave it to be properly fixed later.
+
+ Tue Jul 13 22:43:38 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (get_binfo_from_vfield): New function.
+ * cp-decl.c (finish_function): Use get_binfo_from_vfield to get the
+ binfo used to find the vtable for this vfields. Corrects problem
+ with vtable pointers being wrong during called member functions,
+ called from destructors.
+
+ Tue Jul 13 11:52:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't pedwarn about a duplicate long
+ for `long long', until we figure out how we really want to handle it.
+
+ Sat Jul 10 14:54:36 1993 Chip Salzenberg (chip@fin.uucp)
+
+ * cp-tree.h (warn_redundant_decls, warn_missing_braces): Declared.
+ * cp-decl.c (warn_redundant_decls): Not declared here.
+ * cp-decl2.c (warn_missing_braces): Defined.
+ (lang_decode_option): Handle -Wmissing-braces.
+ * cp-type2.c (process_init_constructor): Test warn_missing_braces.
+
+ * cp-typeck.c (build_binary_op_nodefault): Make warning
+ message distinguish between right/left and shift/rotate.
+
+ * cp-decl.c (init_decl_processing): When making SIZETYPE,
+ start with name in SIZE_TYPE. If -traditional, use a signed
+ version of that type, if it is unsigned.
+
+ * cp-typeck.c (c_sizeof, build_c_cast): Set TREE_OVERFLOW in
+ addition to TREE_CONSTANT_OVERFLOW.
+
+ * cp-decl.c (finish_enum): Store layout results into variant types.
+
+ * cp-typeck.c (internal_build_compound_expr): When pedantic, don't
+ simplify a COMPOUND_EXPR, so that it won't be mistaken for an
+ lvalue or an integer constant expression.
+
+ * cp-parse.y (program): After extdefs, pop any unpopped binding lvls.
+
+ * cp-decl.c (grokdeclarator, ARRAY_REF case): Build array type,
+ and then build the variant array type.
+
+ * cp-lex.c (real_yylex): Avoid invalid shift for erroneous empty
+ char const.
+
+ * cp-decl.c (complete_array_type): Make maxindex -1 for empty
+ constructor.
+
+ * cp-type2.c (initializer_constant_valid_p): Allow cast of ptr to
+ wider integer.
+
+ * cp-decl.c (pushdecl): Copy DECL_FRAME_SIZE for inline function decls.
+
+ * cp-decl.c (finish_decl): Do not allocate static var of
+ unknown size.
+ (complete_array_type): Use 0 as default maxindex.
+
+Fri Jul 23 07:18:20 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (aggregate_value_p): An ARRAY_TYPE is also an aggregate.
+
+Fri Jul 23 01:54:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * gcc.c (main): Improve "No input files" error message.
+
+Thu Jul 22 23:00:11 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (relax_delay_slots): Do not redirect a jump if doing so
+ invalidates insns in the jump's delay slots.
+ (redirect_with_delay_slots_safe_p): New function.
+
+Thu Jul 22 18:01:29 1993 John Hassey (hassey@dg-rtp.dg.com)
+
+ * invoke.texi, m88k.h, m88k.c: Changed serialize-volatile
+ to use tb1 instead of fldcr, fldcr has problems on 88110.
+ Made serialize-volatile the default behavior for all models.
+
+Thu Jul 22 11:19:28 PDT 1993 Ron Guilmette (rfg@netcom.com)
+
+ * fixinc.svr4 (making LIB absolute): Just concat with $ORIG_DIR.
+
+ * configure: Use `sed' rather than `cat' to put `MAYBE_TARGET_DEFAULT'
+ definition in. (This is a work-around for an NFS bug.)
+
+Thu Jul 22 14:59:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c: Output most constructors an element at a time.
+ (digest_init): Deleted code for raw constructors.
+ (process_init_constructor): Function deleted.
+ (start_init, finish_init): New functions.
+ (really_start_incremental_init)
+ (push_init_level, check_init_type_bitfields, pop_init_level)
+ (set_init_index, set_init_label, process_init_element)
+ (output_init_element, output_pending_init_elements): New functions.
+ * c-tree.h: Declare most of those functions.
+
+ * c-parse.in (cast_expr): Use new initializer parsing functions.
+ (initdcl, notype_initdcl): Likewise.
+ (init): Likewise.
+ (initlist_maybe_comma, initlist1): These replace initlist.
+ (initelt): New nonterminal.
+ Change specified index syntax to `[INDEX]='.
+ Change specified field syntax to `.NAME='.
+
+ * varasm.c (output_constant_def_contents): New function.
+ (output_constant_def): Use it.
+ (deferred_constants): New list of constants not yet output.
+ (defer_addressed_constants): New function.
+ (output_deferred_addressed_constants): New function.
+ (make_decl_rtl): Don't ever replace old rtl;
+ instead, change its mode if necessary.
+
+Wed Jul 21 15:50:19 1993 Jim Wilson (wilson@cygnus.com)
+
+ * expr.c (expand_expr, COMPONENT_REF case): For unaligned object
+ in an aligned union, set MEM_IN_STRUCT_P if create a MEM rtx.
+
+ * sparc.c (output_move_double): Only set highest_first if first reg
+ of dest overlaps memory src address. Otherwise, if addreg1 set and
+ is same as second reg of dest, suppress trailing decrement.
+
+ * sparc.md (movdi+1): Delete & from r/i constraint.
+
+ From rfg@netcom.com:
+ * fixinc.svr4 (<ftw.h>): Don't apply specialized fixes to <ftw.h>
+ if we are on Solaris. They are not needed in that case.
+
+ * combine.c (nonlocal_label_list): New variable.
+ (combine_instructions): Set it.
+ (try_combine, distribute_links): CALL_INSN terminates a basic
+ block if nonlocal_label_list is set.
+
+ * config/mips/{bsd-4.h, bsd-5.h, iris3.h, mips.h, news4.h,
+ news5.h, nws3250v4.h, osfrose.h, svr3-4.h, svr3-5.h, svr4-4.h,
+ svr4-5.h, ultrix.h} (CPP_SPEC): Define LANGUAGE_ASSEMBLY, not
+ LANGUAGE_C, when compiling a .s file.
+
+ * m68k.h (TARGET_SWITCHES): Recognize -m68851, -mno-68851,
+ -m68302, -mno-68302, -m68332, -mno-68332.
+
+ * lynx.h, i386/lynx.h, m68k/lynx.h, sparc/lynx.h: New files.
+ * i386.h (OVERRIDE_OPTIONS, SUBTARGET_OVERRIDE_OPTIONS): Define.
+ * m68k.h (TARGET_SWITCHES): Add SUBTARGET_SWITCHES.
+ (OVERRIDE_OPTIONS): Add SUBTARGET_OVERRIDE_OPTIONS.
+ (SUBTARGET_SWITCHES, SUBTARGET_OVERRIDE_OPTIONS): Define.
+ * sparc.h (TARGET_SWITCHES): Add SUBTARGET_SWITCHES.
+ (OVERRIDE_OPTIONS): Add SUBTARGET_OVERRIDE_OPTIONS.
+ (SUBTARGET_SWITCHES, SUBTARGET_OVERRIDE_OPTIONS): Define.
+
+ * fixincludes (sys/types.h sys/stdtypes.h): Delete newline before
+ do.
+ (machine/cpu.h): Delete space in `2>& 1'.
+
+ * config.sub (lynx): Recognize as vendor.
+ (lynxos): Recognize as OS.
+ * configure (i386-*-lynxos, sparc-*-lynxos, m68k-*-lynxos):
+ Recognize as new configurations.
+
+ * gcc.c (link_command_spec): Move %{T*} after %{L*} and %D.
+
+ * optabs.c (expand_binop): Synthesize double word shifts and
+ rotates from single word shifts.
+ * sparc.md (ashldi3, lshrdi3): Obsolete, deleted.
+
+Wed Jul 21 15:55:18 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.svr4: When fixing ftw.h, preserve remainder of
+ ftw and nftw declaration; don't just rewrite it.
+
+Tue Jul 20 23:35:36 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (is_ctor_dtor): Delete leading _'s from sym names
+ in `special' table, in neither-dots-nor-dollars case.
+
+Tue Jul 20 18:49:09 1993 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h, i386/osfelf.h (CC1_SPEC): Don't turn on
+ -mhalf-pic if ELF.
+
+ * i386/osfrose.h (ASM_FILE_END): Put filename, sans directory into
+ the .ident string.
+
+Tue Jul 20 15:07:06 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c: Add prototypes for static functions.
+ (subst, case IF_THEN_ELSE): Add missing arg to make_compound_operation.
+ (make_compound_operation, case ASHIFTRT): Delete extra gen_unary arg.
+
+Mon Jul 19 18:15:48 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * rs6000.c (current_file_function_operand): New function.
+ * rs6000.h (ENCODE_SECTION_INFO): New macro.
+ (PREDICATE_CODES): Add current_file_function_operand.
+ * rs6000.md: Add variants of call and call_value patterns for
+ calls to functions defined in the same file. Omit the TOC pointer
+ reload after such calls.
+
+Mon Jul 19 13:17:52 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (fill_simple_delay_slots): Try filling any insn needing
+ delay slots with a JUMP_INSN.
+
+Mon Jul 19 00:33:24 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * varasm.c (assemble_variable): New arg DONT_OUTPUT_DATA.
+ * toplev.c (rest_of_decl_compilation): Pass 0 as DONT_OUTPUT_DATA.
+
+Sun Jul 18 15:38:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (c_expand_return): Set TREE_SIDE_EFFECTS
+ for the MODIFY_EXPR that we make.
+
+ * stmt.c (expand_return): When expanding assignment into DECL_RESULT,
+ ignore the "value"--do it for effect.
+
+ * fold-const.c (fold): Handle CONJ_EXPR.
+ * c-typeck.c (build_unary_op): Support CONJ_EXPR.
+ Change BIT_NOT_EXPR to CONJ_EXPR if arg is complex.
+
+Sun Jul 18 14:22:05 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (init_function_start): Initialize trampoline_list here.
+ (expand_function_end): Not here.
+
+Sun Jul 18 01:24:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-typeck.c (common_type): Use TYPE_MAIN_VARIANT when preferring
+ long int to int (when width is the same).
+
+ * varasm.c (assemble_variable): Move debugging output calls
+ to after section has been selected. Select the section again
+ if the debugging output call changes the section.
+ * dbxout.c (dbxout_symbol_location): Call in_text_section
+ to decide whether to use DBX_STATIC_CONST_VAR_CODE.
+
+ * objc-act.c (synth_module_prologue): Call layout_type for the array
+ type used for _OBJC_SELECTOR_TABLE.
+
+Sat Jul 17 00:41:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (expand_increment): Convert constant subtract to add
+ before setting single_insn. Compensate for this when choosing
+ the tree code to pass to `build'.
+
+ * toplev.c (rest_of_compilation): If function is extern inline,
+ even if we can't inline it, don't compile it.
+
+Fri Jul 16 21:33:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * dwarfout.c (dwarfout_init): Report failure of getpwd.
+
+Fri Jul 16 15:59:07 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/m68k/hp320.h (LINK_LIBGCC_SPECIAL, SPACE_AFTER_L_OPTION)
+ (LIB_SPEC): Move outside of USE_GAS conditional.
+
+Fri Jul 16 14:26:25 1993 David d `zoo' Zuhn (zoo@cygnus.com)
+
+ * config.sub: if [ "$os" ] --> if [ x"$os" != x"" ]
+
+Fri Jul 16 05:50:35 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-typeck.c (check_format): With -Wformat, warn about
+ printf("%ld", 1) even if sizeof (int) == sizeof (long),
+ since the code isn't portable. Similarly for "%d" vs 1L.
+
+ * c-typeck.c (convert_arguments) [PROMOTE_PROTOTYPES]:
+ With -Wconversion, use unpromoted type to check for signedness changes.
+
+Thu Jul 15 13:04:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (stdlib.h): Check carefully for definition of size_t.
+
+Wed Jul 14 19:05:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Fix size_t definition in stdlib.h as in types.h.
+ Also a conditional to prevent repeated definition.
+
+Wed Jul 14 14:53:26 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Don't discard comment end characters on lines that
+ look like "#endif */". Fixes Esix 4.0.4 problem.
+
+Wed Jul 14 12:20:13 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (emit_move_sequence): Use cint_ok_for_move instead of
+ checking each condition ourselves.
+
+ * pa-utahmach.h (CPP_PREDEFINES): Do not define HPUX_SOURCE, hp700
+ or HP700.
+ * pa1-utahmach.h (CPP_PREDEFINES): Do not define hp9000s800,
+ hp9k8, HPUX_SOURCE, or hp800.
+
+ * Allow unconditional jumps in delay slots of call and millicode
+ call instructions.
+ * pa.h (TARGET_JUMP_IN_DELAY): New target flag to allow/disallow
+ jump instructions in call delay slots.
+ (TARGET_SWITCHES): Add -mjump-in-delay and -mno-jump-in-delay.
+ Provide -mno alternatives for most options.
+ (output_call): Declare.
+ * pa.c (output_call): New function to output a function call or
+ millicode call, possibly with a jump in the delay slot.
+ (output_mul_insn): Accept additional argument, use output_call.
+ (output_div_insn): Likewise.
+ (output_mod_insn): Likewise.
+ (jump_in_call_delay): New function to determine if the given
+ JUMP_INSN is in the delay slot of a call or millicode call.
+ * pa.md (uncond_branch): New type attribute. Explicitly disallow
+ uncond_branch in most delay slots.
+ (in_call_delay attribute): New test for delay slot of call insns.
+ Allow uncond_branches in the delay slot if TARGET_JUMP_IN_DELAY.
+ (define_delay for calls, millicode calls, branches, returns, etc):
+ Broken up into two define delays. One for calls and millicode
+ calls, a second for branches, returns, etc.
+ (millicode insns): Pass the current insn down to
+ output_{mul,div,mod}_insn.
+ (jump insn): Use "uncond_branch" type attribute. Length of this
+ insn varies if it is in the delay slot of a call.
+ (call_internal_symref): Use output_call.
+ (call_value_internal_symref): Likewise.
+ (call_internal_reg): Use %r syntax instead of just register numbers.
+ (call_value_internal_reg): Likewise.
+
+Wed Jul 14 02:19:11 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * rtl.def (CONCAT): New rtx code.
+ * emit-rtl.c (gen_lowpart_common, gen_highpart): Handle CONCAT.
+ (operand_subword): Likewise.
+ (gen_reg_rtx): For complex mode, return a CONCAT of two pseudos.
+ * stmt.c (expand_decl): Make a CONCAT, for decls of complex type.
+ * dbxout.c (dbxout_symbol_location): Subroutine broken out from
+ dbxout_symbol. Handle CONCAT here.
+ (dbxout_symbol_name): New subroutine. Handle anonymous decls too.
+ (dbxout_reg_parms): Simplify using dbxout_symbol_location.
+ Handle CONCAT.
+
+ * c-typeck.c (build_c_cast): When casting to union, if value is array
+ or function, do default_conversion.
+
+Wed Jul 14 00:52:23 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
+
+ * config.sub: Add case for Bull dpx/2.
+
+Mon Jul 12 17:26:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes: When looking for #define CTRL,
+ accept multiple spaces between the two words.
+
+ * reload1.c (reload): Don't free scratch_list or scratch_block if 0.
+
+Mon Jul 12 17:12:31 1993 Paul Eggert (eggert@twinsun.com)
+
+ * c-common.c (unsigned_conversion_warning): Just use `warning',
+ not `pedwarn'; these diagnostics are not required by Standard C.
+ * c-typeck.c (convert_for_assignment): Use `convert_and_check',
+ not `convert', for converting arithmetic types, since
+ `convert_and_check' no longer reports an error
+ where it should just warn.
+
+Mon Jul 12 16:44:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/i386/i386.md (ffssi2, ffshi2): Assume bsf produces
+ garbage if input is 0. Use jumps to load output in that case.
+
+ * config/vax/vax.h (INITIALIZE_TRAMPOLINE): Add code to
+ do an rei to clear the insn cache.
+
+Sun Jul 11 18:13:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/ns32k/ns32k.c (output_move_double): Do the low reg first,
+ when only the high reg has an overlap.
+
+ * c-typeck.c (convert_arguments): Don't warn about sign change
+ for an INTEGER_CST inside NOP_EXPR, if value not fits new type.
+ Delete the code to check for VAL having enumeration type.
+
+ * i860.c (output_move_double): Fix typos in Jun 28 change.
+
+Sat Jul 10 16:05:26 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * i860.c (output_move_double): Only set highest_first if first reg
+ of dest overlaps memory src address. Otherwise, if addreg1 set and
+ is same as second reg of dest, suppress trailing decrement.
+
+Sat Jul 10 19:49:31 1993 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * jump.c (jump_optimize): Correctly identify branches to the end
+ of a function so that they may be turned into RETURN insns.
+
+Sat Jul 10 17:37:12 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (main): Allocate COLLECT_NAME string with xmalloc.
+
+Sat Jul 10 14:44:29 1992 Chip Salzenberg (chip@fin.uucp)
+
+ * basic-block.h (REGSET_ELT_TYPE): Make unsigned to avoid
+ signed arithmetic overflow.
+ * hard-reg-set.h (HARD_REG_ELT_TYPE): New unsigned type to
+ avoid signed arithmetic overflow.
+ (HARD_REG_SET): Define as HARD_REG_ELT_TYPE, or array thereof.
+ (HARD_CONST): Always cast to HARD_REG_ELT_TYPE.
+ (*_HARD_REG_*): Use unsigned HARD_CONST and HARD_REG_ELT_TYPE
+ types instead of assuming HOST_WIDE_INT.
+
+Sat Jul 10 10:25:16 1993 Karl Berry (karl@cs.umb.edu)
+
+ * fixincludes: Check for symlinks being available in /tmp.
+
+Sat Jul 10 02:01:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/3b1.h (MY_ISCOFF, OBJECT_FORMAT_COFF, NO_SYS_SIGLIST):
+ New definitions.
+
+Fri Jul 9 20:40:29 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (dbra and movb patterns): Fix constraints so that FP
+ registers are never preferred.
+
+Fri Jul 9 17:36:35 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * va-clipper.h: Make var/stdargs compatible with apogee's acc.
+ (__gnuc_va_list): Replace __va_f and __va_r with __va_reg.
+ (__va_list, _SYS_INT_STDARG_H): New defines.
+ (va_arg): Corresponding changes.
+
+ * config/clipper/clipper.c (clipper_builtin_saveregs) : Dito.
+
+Fri Jul 9 13:39:08 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+ Fri Jul 9 12:17:20 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_array_ref): Force the array to be allocated on
+ the stack if it is accessed by a out-of-bound constant integer
+ subscript.
+
+ * cp-decl.c (pushdecl): Undo change to generate a new _TYPE node for
+ a typedef.
+
+ Thu Jul 8 16:25:52 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (pushtag): Don't mark the binding layer marker; for
+ dwarf debugging, do mark the TYPE_DECL we created as ignored.
+
+ * cp-tree.h (IN_CHARGE_NAME): Define to not need DOLLAR_IN_LABEL.
+ (VTBL_PTR_TYPE): Likewise.
+ (VTABLE_DELTA_NAME, VTABLE_INDEX_NAME, VTABLE_PFN_NAME,
+ VTABLE_DELTA2_NAME): Use two leading underscores.
+
+ Thu Jul 8 14:31:40 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (TREE_ANON_UNION_ELEM): Deleted, it's never set.
+ * cp-decl.c (build_default_constructor): Delete checking
+ TREE_ANON_UNION_ELEM.
+ * cp-init.c (emit_base_init): Likewise.
+ * cp-type2.c (my_friendly_abort): Update count.
+
+ * cp-type2.c (build_functional_cast): Disable assert 323 (see
+ comments for explanation).
+
+ * cp-typeck.c (comp_target_parms): Return 0 if strict is != 0, not
+ just > 0.
+
+ * cp-decl.c (init_decl_processing): Don't set WARN_RETURN_TYPE.
+
+ Wed Jul 7 18:36:59 1993 Niklas Hallqvist (niklas@della.appli.se)
+
+ Add the changes to redo how we handle scoping. [Merged by bpk.]
+
+ * cp-class.c ({pop,push}_nested_class): New functions to use
+ instead of plain {push,pop}class. These functions will see to
+ that static entities of enclosing classes will be visible.
+ * cp-tree.h ({pop,push}_nested_class): Declare them.
+ * cp-decl.h ({finish,start}_function): Use these new functions
+ instead of plain {push,pop}class calls.
+ (grokdeclarator): Ditto.
+ * cp-decl2.c (build_push_scope): Ditto.
+ * cp-class.c (popclass): Only call pop_class_decls if MODIFY is
+ set.
+
+ * cp-decl.c (start_decl): Maybe call pushdecl_class_level instead of
+ pushdecl. This is used for nested types.
+ (grokdeclarator): Remove the {push,pop}level calls around the
+ indirect recursion occuring when groking class-local typedefs.
+ Remove the error check of such typedefs hiding other fields in the
+ same scope. Remove the pushdecl_class_level call since start_decl
+ does the work now.
+
+ Class scoping (and type value caching) redone. The new behaviour
+ is triggered by NEW_CLASS_SCOPING being defined to 1. The old
+ behavior is accomplished by defining it to the value 0. The entries
+ below describes the effective changes when NEW_CLASS_SCOPING is set
+ to non-zero.
+
+ * cp-class.c (set_class_shadows): Add prototype.
+ (previous_class_values): New variable.
+ (pushclass): Adapted to not use previous_class_type & unuse_fields.
+ Removed setting of IDENTIFIER_CLASS_VALUE.
+ (popclass): Adapted to not use previous_class_type. Don't reset
+ IDENTIFIER_CLASS_VALUE. Moved call of pop_class_decls.
+ (maybe_push_cache_obstack): New function.
+ * cp-decl.c (current_class_depth): Add extern decl.
+ (previous_class_values): Add extern decl.
+ (pop_decl_level): Don't reset IDENTIFIER_CLASS_VALUE.
+ (set_class_shadows): New function.
+ (poplevel_class): Adjust setting of IDENTIFIER_CLASS_VALUE to only
+ happen if we're not leaving a toplevel class.
+ (push_to_top_level): Don't use adjust_type_value.
+ (set_identifier_type_value): Reverse the choice between class and
+ local scope when installing the type value.
+ (set_identifier_local_value): Set the type value if we're seeing a
+ TYPE_DECL.
+ (set_nested_typename): Added comment.
+ (pushtag): Don't call set_identifier_type_value. Leave out
+ setting of IDENTIFIER_CLASS_VALUE.
+ (adjust_type_value): Removed.
+ (pushdecl): Don't call adjust_type_value.
+ (pushdecl_class_level): Call push_class_level_binding. Set the
+ type value if we're seeing a TYPE_DECL.
+ (push_class_level_binding): New function whose guts came from
+ pushdecl_class_level.
+ (globalize_nested_type): See to that both the class_shadowed and
+ type_shadowed lists in the binding stack gets updated correctly.
+ Don't call set_identifier_type_value on the DECL_NESTED_TYPENAME.
+ Clear DECL_CLASS_CONTEXT as well as DECL_CONTEXT. Install a
+ correct IDENTIFIER_{CLASS,TYPE}_VALUE if needed.
+ (grokdeclarator): Prefer pushdecl_class_level over pushtag when
+ recording a nested typedef.
+ (build_enumerator): Don't install a method-local enumerator into
+ class scope.
+ * cp-decl2.c (grokfield): Don't call set_identifier_type_value.
+ * cp-search.c (closed_envelopes): New list containing information
+ of what decls should be pushed when entering a class scope.
+ (dfs_pushdecls): Build and maintain the closed_envelopes list
+ instead of managing the IDENTIFIER_CLASS_VALUEs directly.
+ (dfs_compress_decls): Adapted to recognize the envelopes
+ dfs_pushdecls has installed in the IDENTIFIER_CLASS_VALUE slots.
+ (push_class_decls): Tell overload_template_name to push the
+ template decls into class scope instead of building a new level.
+ Added code to open up the envelopes in closed_envelopes and
+ install the class/type values in the class binding contour with
+ proper shadowing.
+ (dfs_popdecls): Removed.
+ (pop_class_decls): Removed the actual decl-popping code, leaving
+ just the obstack freeing pop_search_level call. The popping is
+ automatically handled by poplevel now.
+ * cp-tree.h (NEW_CLASS_SCOPING): A new macro constant defaulted to
+ the value 1.
+ (adjust_type_value): Prototype removed.
+ (push_class_level_binding): Added prototype.
+
+ Wed Jul 7 11:04:09 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (pushdecl): When processing a typedef statement,
+ generate a whole new ..._TYPE node. Be careful that the type we're
+ looking at isn't an error_mark_node.
+
+ * cp-class.c (finish_struct): Set the DECL_CONTEXT on the type we've
+ found.
+ * cp-decl.c (pushtag): Mark the TYPE_DECL as ignored when using
+ dwarf debugging; don't ignore it if it's anonymous for dwarf
+ debugging. Put the DECL_CONTEXT in the TYPE_CONTEXT of TYPE.
+ (globalize_nested_type): Remember to set TYPE_CONTEXT.
+ * cp-pt.c (overload_template_name): Set DECL_CONTEXT.
+ * cp-search.c (compute_visibility): Set DECL_CONTEXT if the context
+ is NULL.
+
+ * cp-class.c (finish_struct): Mark the tag as ignored for dwarf
+ debugging.
+
+ * cp-except.c (EHS_type): Don't make it static.
+ * cp-class.c (finish_struct): Don't create a default copy
+ constructor for the EHS_type.
+
+ * cp-class.c (get_vtable_name): Leave the numbers in the name for
+ the vtable, so we're uniform with what prepare_fresh_vtable is
+ doing. Introduces a binary incompatability.
+
+ * cp-tree.c (build_cplus_method_type): Mark the first argtype (the
+ this pointer) as artificial.
+
+ * cp-init.c (do_friend): Don't allow a friend of a class that's not
+ yet been defined; instead, complain. Make sure we mark every decl
+ that comes in as being a friend of something.
+
+ * cp-decl2.c (grokclassfn): Mark the __in_chrg parameter as
+ artificial. Don't mark it as readonly, and for destructors make
+ sure the first arg in the arg_types chain has TREE_SIDE_EFFECTS set,
+ so it's seen as artificial.
+ (finish_vtable_vardecl): For dwarf debugging, make the vtable's
+ VAR_DECL node be ignored.
+
+ * cp-decl.c (redeclaration_error_message): Use comptypes to see if
+ OLDDECL and NEWDECL have the same type.
+ * cp-typeck.c (comptypes): Compare the main variants of the types,
+ after we've checked the qualifiers that could have been used on them.
+
+ * cp-call.c (EVIL_RETURN, QUAL_RETURN, TRIVIAL_RETURN, ZERO_RETURN):
+ Rewrite definitions to not use do/while(0), to avoid bogus warnings
+ on compilers that can't deal with a return inside it. Change all
+ uses of them to do `return FOO_RETURN'.
+
+ Tue Jul 6 13:00:44 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Set GIVE_ERROR so we know where the
+ previous declaration was for empty parameter name list declarations.
+
+ * cp-class.c (finish_struct): Clean up error message about anonymous
+ classes.
+
+ * cp-class.c (finish_struct): Don't play with TAIL when we're
+ dealing with a TYPE_DECL of a RECORD_TYPE; the list continues on
+ just fine, and TAIL is only used for managing FN_FIELDS.
+
+ * cp-decl.c (pushlevel): Change cast to HOST_WIDE_INT.
+ * cp-search.c (breadth_first_search): Likewise.
+
+ Fri Jul 2 19:24:55 1993 Steve Chamberlain (sac@rtl.cygnus.com)
+
+ * cp-method.c: Include "cp-class.h"
+
+ Fri Jul 2 18:16:10 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-call.c (build_overload_call_real): Don't look at a required
+ template instantiation and a speculative template instantiation as
+ two different functions if they are really the same function.
+
+ Thu Jul 1 22:28:46 1993 Michael Tiemann (tiemann@blues.cygnus.com)
+
+ * cp-tree.h: Don't include "cp-class.h" here.
+ * cp-call.c, cp-cvt.c: Include it here instead.
+
+ Thu Jul 1 18:42:03 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Fix typo. (olddecl->olddecls)
+
+ Thu Jul 1 18:34:12 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ New implementation of argument matching. This is now much cleaner
+ to read, and is designed such that it should be easy to tweak
+ things when incorrect decisions are made based on the candidates
+ being examined.
+
+ * cp-decl2.c (flag_ansi_overloading): New variable.
+ (lang_f_options): Add -fansi-overloading.
+ * toplev.c (lang_options): Add -fansi-overloading and
+ -fno-ansi-overloading.
+
+ * cp-class.h (harshness_code): New struct.
+ (candidate): New members `h' and `h_len' used by new method. New
+ anonymous union `v', with ansi_harshness and old_harshness.
+ Deleted member `harshness' (used by old method, now in `v').
+ Change every file that uses harshness to refer to it in the union
+ as appropriate.
+ (EVIL_CODE, CONST_CODE, ELLIPSIS_CODE, USER_CODE, STD_CODE,
+ PROMO_CODE, QUAL_CODE, TRIVIAL_CODE): New macros.
+
+ * cp-call.c (EVIL_RETURN, QUAL_RETURN, TRIVIAL_RETURN,
+ ZERO_RETURN): New macros.
+ (rank_for_overload): Renamed to rank_for_overload_old.
+ (rank_for_overload_ansi): New function for new method.
+ (rank_for_overload): Call the appropriate fn based on the new flag.
+ (rank_for_ideal): New function for new method.
+ (compute_harshness): Renamed to compute_harshness_old.
+ (compute_harshness_ansi): New function for new method.
+ (compute_conversion_costs): Renamed to compute_conversion_costs_old.
+ (compute_conversion_costs_ansi): New function for new method.
+ (compute_conversion_costs): Call the appropriate fn based on the
+ new flag.
+ (ideal_candidate): Renamed to ideal_candidate_old.
+ (ideal_candidate_ansi): New function for new method.
+ (ideal_candidate): Call the appropriate fn based on the new flag.
+ (strictly_better): New function for new method.
+ (build_method_call): Change things to use the new method if
+ -fansi-overloading is set.
+ (build_overload_call_real): Likewise.
+ * cp-cvt.c (convert_to_aggr): Likewise.
+
+ * cp-call.c (build_overload_call_real): Only use the speed hack
+ to trigger immediately if the OVERLOAD_NAME has a global value if we
+ aren't using the new overloading scheme.
+
+ * cp-cvt.c (build_type_conversion): Only accept using an `operator
+ double' if there isn't a conflicting `operator int', if
+ -fansi-overloading is on.
+
+ Thu Jul 1 17:54:44 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Propagate some changes from C
+ front-end. Conflicts with built-in functions are now only warnings.
+
+ Thu Jul 1 15:43:48 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_field_call): Use real type if type is a
+ REFERENCE_TYPE.
+ * cp-parse.y (primary): Cleanup and move some code out into new
+ function build_object_ref.
+ * cp-tree.h (build_object_ref): New function.
+ * cp-typeck.c (build_object_ref): Define new function.
+ * cp-typeck.c (build_x_function_call): Return error_mark_node if
+ first argument is, and handle when TREE_PURPOSE is a binfo and comes
+ from lookup_fnfields.
+
+ Thu Jul 1 13:48:46 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (readescape): Don't complain for \% unless pedantic.
+
+ Wed Jun 30 10:35:50 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (bad_specifiers): Moved to cp-decl.c. New args
+ `inlinep' and `object' (old object renamed to type), so we can see
+ where the thing was declared. Use error_with_decl instead of error.
+ * cp-decl.c (grokdeclarator): Pass INLINEP and DECL down; move calls
+ so we'll have a valid DECL to give it.
+ * cp-tree.h (bad_specifiers): Deleted prototype.
+
+ * cp-call.c (build_scoped_method_call): If it's a reference, work
+ with the actual type.
+ * cp-type2.c (build_scoped_ref): Likewise.
+
+ Tue Jun 29 19:49:57 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-lex.c (default_copy_constructor_body): Hack broken code to work
+ marginally better than how it worked before, so that PlotFile3D's
+ make check of libg++ works.
+
+ Tue Jun 29 12:44:48 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (mark_addressable): Don't complain about taking the
+ address of an object with register storage class; it's legal in C++.
+
+ * cp-typeck.c (convert_arguments): Only warn about passing an object
+ through an ellipsis.
+
+ * cp-parse.y (typed_declspecs): Make sure the TYPESPEC we hit
+ upon is non-null.
+
+ Tue Jun 29 11:58:03 1993 Tony Deigh (tonyd@bostech.com)
+
+ * cp-decl.c (grokdeclarator): Look at the decl as a FUNCTION_TYPE
+ before seeing if its TYPE_MAIN_VARIANT matches or it's a friend;
+ this way, we can properly detect declaration of another class's
+ methods inside another class. Solves chainon aborts.
+
+ Tue Jun 29 09:47:36 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (finish_struct): Use pedwarn_with_decl for warnings
+ about non-static const/ref in class without a ctor, so the line
+ number is helpful.
+
+ Tue Jun 29 02:46:39 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (build_up_reference): Delete unneed cast.
+ * cp-typeck.c (convert_for_assignment): Likewise.
+
+ Mon Jun 28 19:19:34 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-lex.c (real_yylex): Use pedwarn to warn about using catch, try
+ and throw as identifiers.
+
+ Mon Jun 28 11:13:17 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-method.c (hack_identifier): Only look for visibility if we have
+ a basetype path.
+
+ * cp-decl.c (grokdeclarator): Also forbid the subscripting operator,
+ and class member access operator being declared as a non-member
+ function.
+
+ * cp-init.c (add_friend): Pedwarn on duplicate friend decls.
+
+ * cp-init.c (is_friend_type): New function.
+ (is_friend): Call it; rewrite in minor ways, to clean the code up.
+ * cp-tree.h (is_friend_type): Add prototype.
+ * cp-search.c (compute_visibility): Also check if the
+ CURRENT_CLASS_TYPE is a friend of CONTEXT, which can buy us access
+ to the field in question.
+
+ * cp-init.c (sort_member_init): Disable assert that was wrong.
+
+ * cp-class.c (finish_struct): Make declaration of a non-static const
+ or reference member get a pedwarn if the class it's in has no
+ constructor.
+
+ * cp-decl2.c (grokfield): Fix up the error message about member
+ initialization.
+
+ * cp-typeck.c (c_expand_return): Make sure we don't set
+ CURRENT_FUNCTION_RETURNS_VALUE if we set CURRENT_FUNCTION_RETURNS_NULL.
+
+ * cp-method.c (dump_init): Don't emit digit_buffer if we're giving
+ an enum's tag.
+
+Fri Jul 9 16:45:25 1993 David d `zoo' Zuhn (zoo@cygnus.com)
+
+ * config.sub: Make -solaris reflect the most recent major release.
+
+Fri Jul 9 16:18:20 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * Change length attributes to use bytes instead of instruction
+ counts.
+ * pa.h (CASE_VECTOR_MODE): Change to DImode.
+ * pa.c (compute_movstrsi_length): Return length in bytes.
+ (pa_adjust_insn_length): Return adjustment in bytes.
+ (output_cbranch): Handle lengths as bytes.
+ (output_bb, output_dbra, output_movb): Likewise.
+ * pa.md (default length define_attr): Lengths are in bytes now.
+ (asm_attributes): Likewise.
+ (delay slot attributes): Deal with lengths in bytes.
+ (explicit length computations): Compute length in bytes.
+
+ * Make more dbra insns and support movb insns.
+ * pa.h (output_dbra, output_movb): Declare.
+ * pa.md (dbra pattern): Use output_dbra.
+ (dbra pattern #2): New pattern. Also use output_dbra.
+ (movb, inverted movb): New patterns.
+ * pa.c (pa_adjust_insn_length): dbra and movb insns which have
+ their output in a FP register do not need adjustment.
+ (output_cbranch, output_bb): Handle conditional jump to the
+ following instruction.
+ (output_dbra): New function extracted from dbra pattern.
+ (output_movb): New function.
+ (eq_neq_comparison_operator): New function.
+ (movb_comparison_operator): New function.
+
+Fri Jul 9 01:07:52 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/mot3300.h (ASM_OUTPUT_OPCODE): Don't add .w suffix
+ to jump insns.
+
+ * combine.c, cse.c: Include stdio.h before rtl.h.
+
+Wed Jul 7 18:06:45 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ From moshier@world.std.com:
+ * sparc.c (singlemove_string): Convert SFmode by REAL_VALUE... macros.
+ * sparc.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE):
+ Use REAL_VALUE_TO_DECIMAL to generate decimal string.
+ (REAL_ARITHMETIC): Define.
+
+ * sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Use
+ STARTING_FRAME_OFFSET.
+ (STARTING_FRAME_OFFSET): Set to -16.
+
+ * c-parse.in (simple_if): Save stmt_count, and print empty body
+ warning here.
+ (if_prefix): Don't save stmt_count here.
+ (stmt): Don't print empty body warning here.
+
+ * combine.c (simplify_comparison): Add parentheses to satify gcc.
+ * sparc.c (sparc_frw_save_restore): Likewise.
+ * expr.c (convert_to_mode): Move misplaced parentheses.
+
+Wed Jul 7 16:37:26 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * Improve code for conditional branches and dbra insns on the PA.
+ * pa.c (pa_adjust_insn_length): Rewrite so that it only adjusts
+ insns which really need adjustment.
+ (output_cbranch): Rework so that output templates are simpler.
+ Use shorter sequence for long backwards conditional branches with
+ a filled delay slot that is nullified. More agressively use "skip"
+ instructions. More agressively nullify the delay slot if nothing
+ useful could be placed there.
+ (output_bb): Likewise.
+ (forward_branch_p): New function.
+ * pa.md (conditional branches): Use the full displacement range
+ for the branch target. Update length computations to match current
+ reality.
+ (branch on bit patterns): Likewise.
+ (decrement_and_branch_until_zero): Re-enable pattern. Rewrite to
+ be simpler and more efficient. Also handle case where loop counter
+ is in a FP register.
+
+Wed Jul 7 11:19:03 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * glimits.h (MB_LEN_MAX): Don't override the value from the system
+ <limits.h>. Just define it if it is not already defined.
+
+ * collect2.c (main): Search for ld in the compiler directories.
+
+Wed Jul 7 13:40:55 1993 Jim Wilson (wilson@kropotkin.gnu.ai.mit.edu)
+
+ * collect2.c (fork_execute, scan_prog_file): Use "fork" in error
+ messages instead of "vfork" when vfork is defined to fork.
+
+Tue Jul 6 16:38:36 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.c (sparc_type_code): Recognize SET_TYPE. For special
+ Fortran/Pascal types, just return qualifiers instead of aborting.
+
+ * c-decl.c (insert_block): Correct typo in comment.
+
+ * combine.c (simplify_and_const_int, LSHIFTRT case): Must be at
+ least as many sign bit copies as bits in mask.
+
+ * c-typeck.c (build_conditional_expr): All simplified results
+ must go through pedantic_non_lvalue.
+ * cp-typeck.c (build_conditional_expr): Likewise.
+ * fold-const.c (fold, COND_EXPR case): Likewise.
+ (pedantic_non_lvalue): New function.
+ * tree.h (pedantic_non_lvalue): Add declaration.
+
+ * fold-const.c (invert_truthvalue): Check for ERROR_MARK input.
+
+ * m68k.h (LEGITIMATE_BASE_REG_P): New macro.
+ (INDIRECTABLE_1_ADDRESS_P, GO_IF_INDEXABLE_BASE,
+ LEGITIMATE_INDEX_REG_P): Accept SUBREG everywhere REG is accepted.
+
+ * sparc.h (EXTRA_CONSTRAINT): For 'T', pass address not mem to
+ strict_memory_address_p call. For 'U', don't accept unallocated
+ pseudo-reg when strict.
+
+ * sparc.c (output_move_quad): Implement CNSTOP case.
+
+ * i960.h (ASM_OUTPUT_COMMON): Use SIZE not ROUNDED.
+
+Tue Jul 6 02:12:15 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cse.c (simplify_binary_operation, case MINUS): Fix backwards
+ test added in last change.
+
+ * config/i386/sun.h (SIZE_TYPE): Deleted.
+
+ * c-typeck.c (convert_arguments): Don't warn for -Wconversion
+ about signedness of an arg that's extended from narrower unsigned type.
+
+ * c-decl.c (duplicate_decls): Don't warn for non-extern var decl
+ following an extern one (for -Wredundant-decls).
+
+Mon Jul 5 17:50:27 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (emit_reload_insns): Don't use gen_lowpart_common to
+ get reload register into proper mode.
+ * reload.c (subst_reloads): Likewise.
+
+ * combine.c (subst, case PLUS): Simplify (plus (comp A B) -1), etc.
+
+ * fold-const.c (fold, case EQ_EXPR, LE_EXPR): If comparing results
+ of signed MOD with zero, use an unsigned MOD.
+
+ * calls.c: Fix typo: had ARGS_GROW_DOWNARD.
+
+ * configure (rs6000-ibm-aix): Use default files for aix3.2 and
+ aix31.h for aix3.[01]. Add new file x-aix31.
+ * rs6000.c (input_operand): Fix missing operand on a return.
+ (print_operand): Add new code '.'.
+ (rs6000_sa_size): Delete unused variable `i'.
+ (output_prolog, output_epilog): Use new RS6000_CROR_BIT_NUMBER.
+ * rs6000.h (CPP_PREDEFINES): Define _AIX32.
+ (ASM_DECLARE_FUNCTION_NAME, TEXT_SECTION_ASM_OP): Use ".text[PR]" as
+ csect name.
+ (RS6000_CROR_BIT_NUMBER): New macro.
+ (PRINT_OPERAND_PUNCT_VALID_P): Allow `.' as valid.
+ * rs6000.md (call patterns): Use %. in cror.
+ * x-rs6000 (CLIB): No longer need -lm.
+ * aix31.h, x-aix31.h: New files.
+ * aix32.h: Deleted.
+
+Mon Jul 5 17:44:09 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * romp.md (movhi): When storing a constant in an HImode register, use
+ cal16 instead of cal so that the high bits are clear (combine
+ requires this).
+
+Mon Jul 5 17:15:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * objc-act.c (encode_type_qualifiers): Add casts to enums in indices.
+
+Mon Jul 5 02:25:54 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * Makefile.in: Parameterize libgcc.a and install-libgcc
+ (LIBGCC and INSTALL_LIBGCC).
+
+ * tree.c (get_narrower): Preserve unsignedness when bitschange == 0.
+
+Sun Jul 4 02:55:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expmed.c (store_split_bit_field, extract_split_bit_field):
+ Handle fields split across more than 2 aligned units.
+
+ * expr.c (store_field): Test STRICT_ALIGNMENT at run time.
+ (expand_expr, COMPONENT_REF case): Fetch unaligned field as bitfield.
+
+ * collect2.c (error, fatal, fatal_perror): Say collect2, not collect.
+
+ * c-parse.in (primary): In statement expression case,
+ if compstmt returns something other than a BLOCK,
+ return it unchanged.
+
+Sat Jul 3 20:32:43 1993 Minh Tran-Le (tranle@intellicorp.com)
+
+ * fixinc.svr4: Added fixup for __STDC__ == 0 and __STDC__ == 1
+ cases found in sequent PTX-2.0.x headers.
+
+Sat Jul 3 18:54:07 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (call_operand_address): Do not accept registers anymore.
+ * pa.md (call expanders): Emit different patterns for named calls
+ and indirect calls.
+ (call_internal_symref, call_internal_reg): New patterns.
+ (call_internal): Deleted. Now handled by call_interal_{symref,reg}.
+ (call_value_internal_symref, call_value_internal_reg): New patterns.
+ (call_value_internal): Deleted. Now handled by
+ call_value_internal_{symref,reg).
+
+Sat Jul 3 16:40:52 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * collect2.c (main): Give ld_file_name an initial value.
+
+Fri Jul 2 16:36:56 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
+
+ * sparc.md (ashldi3+2): Change lshift to ashift.
+
+ * sparc.md (zero_extendhisi2, extendhisi2, extendqihi2,
+ extendqisi2): Preserve the SUBREG_WORD value of subreg operands.
+ (ashldi3): Delete, obsoleted by lshldi3 pattern.
+ (lshldi3): Rename to ashldi3 for consistency with SImode shifts.
+
+Fri Jul 2 01:10:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (install-headers-tar): Ignore exit status of the
+ first tar command.
+
+Thu Jul 1 14:31:45 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * flow.c (find_auto_inc): In *p=expr;q=p+size case, avoid clobbering q
+ if referenced in expr.
+
+Fri Jul 2 01:26:01 1993 Paul Eggert (eggert@twinsun.com)
+
+ * tree.h (pushcase, pushcase_range): Add a new converter
+ function argument that specifies how to convert case labels to the
+ nominal type.
+ * stmt.c (pushcase, pushcase_range): Likewise.
+ * c-parse.in (label): Use `convert_and_check' when checking for
+ overflow in case labels.
+ * cp-parse.y (simple-stmt): Similar change, but use `convert' instead;
+ this leaves the behavior unchanged for C++. A C++ expert should look
+ into this.
+
+ * tree.h (TREE_OVERFLOW): New macro.
+ * c-common.c (constant_expression_warning, overflow_warning,
+ convert_and_check): Distinguish between TREE_OVERFLOW, which is just
+ for warnings, and TREE_CONSTANT_OVERFLOW, which is for required
+ pedantic diagnostics.
+ * c-typeck.c (c_sizeof, build_c_cast): Set TREE_OVERFLOW in addition
+ to TREE_CONSTANT_OVERFLOW.
+ (store_init_value): STRIP_TYPE_NOPS is required before
+ constant_expression_warning.
+ * fold-const.c: (const_binop, fold_convert, fold):
+ Set TREE_OVERFLOW in addition to TREE_CONSTANT_OVERFLOW.
+
+Thu Jul 1 20:55:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * reload1.c (eliminate_regs): Fix typo in BYTE_LOADS_ZERO_EXTEND.
+
+Thu Jul 1 20:00:00 1993 DJ Delorie (dj@ctron.com)
+
+ * gcc.c (choose_temp_base): Try multiple variables. Don't
+ assume that the variable points to a valid directory.
+
+ * gcc.c (pexecute): Handle the MS-DOS return codes correctly.
+ Add .exe to file name when appropriate.
+
+ * configure.bat: Make gcc use its own obstack.o.
+
+ * objc/makefile.dos: New file for building with djgpp.
+
+Thu Jul 1 18:15:17 1993 Paul Eggert (eggert@twinsun.com)
+
+ * fixincludes, fixinc.svr4: Don't create absolute symbolic links;
+ make them relative instead.
+ * fixincludes: Remove special case for IRIX 4.0.1 that was
+ superseded by a more general fix to fixincludes.
+
+ * fixinc.svr4: Remove everything after #endif, instead of trying
+ to turn it into comments, which loses inside comments.
+ * fixincludes: Likewise. Remove #endif workarounds for Ultrix 4.[12]
+ and SunOS 4.1, which are no longer needed because of this bug fix.
+
+Thu Jul 1 14:56:56 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (OVERRIDE_OPTIONS): Define. Give a warning if -fpic or
+ -fPIC was specified on the command line.
+
+ * configure (hppa1.0-hp-hpux8.02): New target.
+ (hppa1.1-hp-hpux8.02): Accept "--gas" in this configuration.
+ * pa-oldas.h: New target for 1.0 machines running HPUX 8.02.
+ * pa.c (output_arg_descriptor): Reverse polarity of test for
+ HP_FP_ARG_DESCRIPTOR_REVERSED.
+ * pa.h (ASM_DOUBLE_ARG_DESCRIPTORS): Likewise.
+ * pa-hpux7.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Define.
+ * pa1-oldas.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Define.
+ (TARGET_DEFAULT): Clear useless bits in TARGET_DEFAULT.
+ * pa-utahmach.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Do not define here.
+ * pa1-utahmach.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Likewise.
+ * pa1-ghpux.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Likewise.
+ * pa1-hpux.h (HP_FP_ARG_DESCRIPTOR_REVERSED): Likewise.
+
+Thu Jul 1 09:48:23 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case GE_EXPR, LT_EXPR): Don't assume
+ result of comparison is integer_type_node.
+
+Thu Jul 1 00:23:16 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * config/i386/mach.h (SIZE_TYPE): Definition deleted.
+
+Wed Jun 30 16:16:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/m68k/sun3.h (SIZE_TYPE): Definition deleted.
+
+Wed Jun 30 16:55:25 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * mips.c (gen_int_relational): For test with constant result,
+ copy const0_rtx or const_true_rtx to result register instead
+ of allocating a new pseudo-register.
+
+Wed Jun 30 15:19:42 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * config.sub: Recognize `gnu' as a valid operating system. Sheesh.
+
+Wed Jun 30 13:43:45 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (output_function_prologue): Emit SAVE_SP flag if a frame
+ pointer is needed.
+
+Wed Jun 30 00:52:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * collect2.c (main): Don't look for `gld' or `TARGET-gld'.
+
+ * fixincludes (stdtypes.h): Verify that size_t etc. follow whitespace.
+
+ * expr.c (expand_expr, case PLUS_EXPR): In the special case
+ to return sym+integer as an expression, limit it to when
+ the non-CONST_INT arg is at least a constant.
+ (expand_increment): Do preinc with single insn if there's such an insn.
+
+ * stmt.c (expand_end_case): Pass 1 as UNSIGNEDP to emit_cmp_insn
+ when handling wide values.
+ Save original minval in orig_minval and use for making the table.
+
+Tue Jun 29 22:28:06 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (singlemove_string): Use zdepi and ldil to load constants
+ into registers when appropriate.
+
+Tue Jun 29 11:26:35 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Recognize -sysv* after -sysvr4.
+
+ * config/vax/vax.h (GO_IF_NONINDEXED_ADDRESS): Declare reg_equiv_mem.
+
+Mon Jun 28 20:12:04 1993 Steve Chamberlain (sac@apple-gunkies.gnu.ai.mit.edu)
+
+ * config/sh/*: Major rework.
+
+Mon Jun 28 02:46:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * fixincludes (file): When changing VA_LIST to DUMMY_VA_LIST,
+ preserve _NEED___VA_LIST.
+
+ * config/ns32k/ns32k.c (output_move_double):
+ Handle reg[n,n+1] = mem[reg[n] + reg[n+1]].
+ * config/ns32k/ns32k.md (movdf, movdi): Delete `&' from constraint.
+
+ * config/sparc/sparc.c (output_move_double): Use new local var
+ highest_first to make sure addreg1 gets handled in the overlap case.
+ In 2-reg-overlap case, really use proper reg in new address.
+
+ * config/i860/i860.c (output_move_double):
+ Handle reg[n,n+1] = mem[reg[n] + reg[n+1]]. Use new local var
+ highest_first to make sure addreg1 gets handled in the overlap case.
+ * config/i860/i860.md (movdf, movdi): Delete `&' from load constraint.
+
+ * config/sparc/sol2.h (CPP_SPEC): For -compat-bsd, put the ucbinclude
+ dirs before, not after.
+
+ * expr.c (store_field): Store unaligned field with bit field methods.
+
+ * config/vax/vax.h (GO_IF_NONINDEXED_ADDRESS): If reload_in_progress,
+ check a REG's reg_equiv_mem the way we would check a MEM.
+
+ * reload.c (find_reloads_address): Be selective about what inner
+ addresses to allow in an indirect mem ref.
+
+Sun Jun 27 16:40:59 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * emit-rtl.c (copy_rtx_if_shared): Don't try to copy a 0-length vector.
+
+ * config/m68k/x-apollo68 (TAROUTOPTS): New definition.
+
+ * config.sub: Canonicalize -sco4 and -sco3.2.4 to -sco3.2v4.
+
+ * gcc.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Check for -iwithprefixbefore.
+ (option_map): Add --include-with-prefix-before and
+ --include-with-prefix-after.
+
+Sun Jun 27 16:04:52 1993 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * va-clipper.h: Use and define Macro __GNUC_VA_LIST. Define struct
+ __gnuc_va_list.
+
+Sun Jun 27 08:32:19 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * machmode.h (INTEGRAL_MODE_P, FLOAT_MODE_P): New macros.
+ * cse.c (simplify_*_operation, fold_rtx, record_jump_cond, cse_insn):
+ Use them.
+ * combine.c (subst, apply_distributive_law): Likewise.
+ (reversible_comparison_p): Likewise.
+ Can reverse if MODE_COMPLEX_INT or MODE_PARTIAL_INT.
+
+ * function.c (fixup_stack_1): Handle
+ current_function_internal_arg_pointer.
+
+ * stor-layout.c: Add prototypes for layout_record and layout_union.
+ (smallest_mode_for_size): New function.
+ (variable_size): Allow variable sizes if global_bindings_p returns a
+ negative value.
+ (mode_for_size): Fix incorrect comment.
+ (layout_decl): If DECL has a size already, don't copy from type.
+ (layout_type, case INTEGER_TYPE, ENUMERAL_TYPE): Use smallest
+ integer mode that fits, whether or not it fits exactly.
+
+ * emit-rtl.c (restore_emit_status): Clear LAST_LABEL_NUM.
+
+ * calls.c (expand_call): If function hasn't been used before,
+ call assemble_external.
+
+ * expr.c (store_constructor): Treat QUAL_UNION_TYPE just
+ like UNION_TYPE.
+ (safe_from_p, case ADDR_EXPR): EXP is safe from X it is is static or
+ if the object whose address is being taken is safe from X.
+ (expand_expr): Fix misplaced comment from last change.
+ (expand_expr, case *_DECL): If not already used, assemble external.
+ (expand_expr, case EXIT_EXPR): Simplify.
+ (expand_expr, TRUTH_{AND,OR}IF_EXPR): Properly handle IGNORE case.
+
+ * tree.c (array_type_nelts): Tighten up code and make more general.
+ (build_function_type): Allow function to return array.
+ (decl_function_context): Treat QUAL_UNION_TYPE like UNION_TYPE.
+
+ * fold-const.c (fold, case TRUTH_XOR_EXPR): End with `return',
+ not `break'.
+
+ * dwarfout.c (output_compile_unit_die): Add support for Ada.
+
+ * c-iterate.c (collect_iterators, case SAVE_EXPR): Simplify code
+ added in previous change.
+
+ * expr.c: Fix typo: was ARGS_GROW_DOWNARD.
+
+ * combine.c (subst, case IF_THEN_ELSE): Install correct version of
+ last change.
+
+Sat Jun 26 15:38:33 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * cccp.c (main): For -iwithprefix, if no include_prefix,
+ make a default from GCC_INCLUDE_DIR.
+ Support -iwithprefixbefore.
+
+ * reload.c (find_reloads): When merging reloads again after they have
+ been changed, do check reload_reg_class and reload_nocombine.
+
+ * config/sparc/sparc.md (movdf recognizer): Remove & from
+ constraint for loading mem to cpu reg.
+
+ * expr.c (expand_assignment): If FROM is scalar function call,
+ expand_expr FROM before TO.
+
+ * gcc.c (translate_options): `*' inhibits warning of extraneous arg.
+
+Sat Jun 26 11:07:23 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): Use reg_equiv_address for invalid addresses
+ of the form (mem (reg)).
+
+ * config/*/xm-*.h: Remove line that #define's alloca
+ to __builtin_alloca.
+
+ * fold-const.c (fold, case PLUS_EXPR, MINUS_EXPR): Apply
+ distributive law to multiplication.
+ (fold, case *_DIV_EXPR): Replace code to handle (A*C1)/C2 with
+ more general code to handle addition as well.
+ (fold, case *_MOD_EXPR): Add simplified version of above code.
+
+ * integrate.c (function_cannot_inline_p): Can now inline nested
+ functions.
+ (expand_inline_function): Set up static chain if needed.
+ (output_inline_function): Don't switch to temporary allocation
+ here.
+ * toplev.c (compile_file): Switch to temporary allocation when
+ writing out inline function.
+ * cp-decl2.c (write_vtable_entries, finish_file): Likewise.
+ * c-decl.c, cp-decl.c (poplevel): Start new function context
+ when writing inline function.
+
+ * c-decl.c (init_decl_processing): When making SIZETYPE,
+ start with name in SIZE_TYPE. If -traditional, use a
+ signed version of that type, if it is unsigned.
+
+ * fold-const.c: Add prototypes for static functions.
+ ({l,r}{shift,rotate}_double): COUNT arg is HOST_WIDE_INT, PREC is int.
+ (all_ones_mask): Remove __inline__.
+ (range_test): Make static; not used elsewhere.
+ * tree.h: Add more decls for functions in fold-const.c.
+
+ * calls.c (expand_calls): Fix typo: ALLOCATE_OUTGOING_ARGS
+ should be ACCUMULATE_OUTGOING_ARGS.
+
+ * tree.def (TRUTH_{AND,OR,XOR}_EXPR): Make code class be 'e' like
+ the rest of the truth operations.
+ * fold-const.c (fold_truthop): Treat a BIT_AND_EXPR with a constant of
+ one as if it were surrounded with an NE_EXPR.
+ (fold): Don't move operation into conditional if it
+ is BIT_{AND,OR}_EXPR with the constant 1; change it to TRUTH_*_EXPR
+ instead.
+ When moving things inside conditions, move comparisons as well as
+ binary operations.
+ Don't make a SAVE_EXPR when moving things inside conditionals unless
+ the value would really have been used twice.
+
+ * expr.c (do_store_flag): When computing via a shift, allow for
+ an inner RSHIFT_EXPR in BITNUM.
+ Sometimes do the operations as signed.
+
+ * combine.c (subst): apply_distributive_law can also handle AND.
+ (subst, case IF_THEN_ELSE): Make a shift when appropriate.
+ (simplify_shift_const): If we have an outer operation and made
+ a shift, see if it can be simplified.
+
+Sat Jun 26 03:25:35 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * configure (i370-*-mvs*): New configuration.
+ * config/i370/i370.md, mvs370.c, tm-mvs.h, xm-mvs.h
+
+ * final.c, varasm.c: Include ctype.h.
+ * c-lex.c: Include ctype.h.
+ (isalnum, isdigit): Macros deleted.
+
+ * config/sparc/sparc.c (output_move_double): Handle
+ reg[n,n+1] = mem[reg[n] + reg[n+1]].
+ * config/sparc/sparc.md (movdi): Delete the earlyclobber in load case.
+
+Sat Jun 26 03:15:38 1993 Doug Evans (dje@wookumz.gnu.ai.mit.edu)
+
+ * gcc.c (option_map): Add missing comma.
+
+Sat Jun 26 02:17:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config/we32k/we32k.c: Clean up formatting.
+
+ * calls.c (calls_function_1): Add declaration.
+
+ * config/m68k/m68k.md (fix_truncdfsi2, fix_truncdfhi2, fix_truncdfqi2):
+ Require TARGET_68881 as well as TARGET_68040.
+
+Fri Jun 25 20:13:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * calls.c (calls_function): Don't scan a single save_expr twice.
+ (calls_function_1): New subroutine for the actual recursion.
+
+ * c-parse.in (all_iter_stmt_simple): Add missing `else'.
+
+Fri Jun 25 15:53:59 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ Cygnus<->FSF merge.
+ Fri Jun 25 10:00:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c: Delete some #if 0'd code that has been there forever.
+
+ * cp-type2.c (my_friendly_abort): Update count of aborts (added by
+ emit_base_init rewrite).
+
+ Make default copy constructors work properly.
+ * cp-lex.c (cons_up_default_function): Mark the generated ctor with
+ RID_INLINE, so it won't get emitted unless it's needed.
+ * cp-decl.c (grok_ctor_properties): If CTYPE has virtual base
+ classes, make sure we don't pay attention to the int that we
+ magically added to the ctor decl.
+ * cp-ptree.c (print_lang_type): Note a const copy ctor vs a normal
+ copy ctor. Say if TYPE_HAS_DEFAULT_CONSTRUCTOR.
+ * cp-tree.h (cons_up_default_function): Modify prototype.
+ * cp-class.c (finish_struct): Also check TYPE_HAS_CONSTRUCTOR, so
+ we don't generate a default ctor if they already declared one
+ (taking whatever arg types).
+
+ Wed Feb 3 17:41:02 1993 Chip Salzenberg (chip@tct.com)
+
+ * cp-class.c (needs_const_ctor): Eliminate as meaningless.
+ (finish_struct) Always generate default functions.
+ Generate exactly one copy constructor: either "X(X&)" or
+ "X(const X&)", but not both.
+ * cp-lex.c (cons_up_default_function): Take list of fields
+ as a new parameter. Use default_copy_constructor_body.
+ Set TREE_PUBLIC and DECL_EXTERNAL correctly for usage with
+ #pragma interface.
+ (default_copy_constructor_body): New function (uses obstacks).
+
+ Thu Jun 24 12:41:16 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-call.c (build_scoped_method_call, build_method_call): Remove
+ maybe_adjust argument to build_delete as it is unneeded and remove all
+ support for the magic cookie key in the area just before the data
+ allocated by new [].
+ * cp-decl.c (finish_function, maybe_build_cleanup,
+ push_exception_cleanup): Likewise.
+ * cp-decl2.c (delete_sanity, finish_file): Likewise.
+ * cp-init.c (init_init_processing, build_new,
+ maybe_adjust_addr_for_delete, build_delete, build_vbase_delete,
+ build_vec_delete): Likewise.
+ * cp-tree.c (build_cplus_new): Likewise.
+ * cp-tree.h (build_delete): Likewise.
+
+ Wed Jun 23 17:18:41 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (init_decl_processing): Also catch SIGBUS.
+ (sigsegv): Rename to signal_catch; also reset SIGBUS.
+
+ * cp-typeck.c (pointer_diff): Error if op1 is a pointer to an
+ incomplete type.
+
+ Wed Jun 23 16:17:43 1993 Mike Stump (mrs@rtl.cygnus.com)
+
+ * cp-search.c (dfs_get_vbase_types, get_vbase_types): Conform to ARM
+ 12.6.2 with respect to virtual bases. Virtual bases are now
+ initialized in dfs order.
+
+ Wed Jun 23 16:04:17 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.c (layout_basetypes): Disable the warning relating to a
+ non-virtual dtor.
+
+ Tue Jun 22 20:03:59 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-lex.c (reinit_parse_for_block): Detect EOFs inside templates.
+
+ Tue Jun 22 16:10:46 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-class.c (finish_struct): Set TYPE_NONCOPIED_PARTS now that the
+ right vtable can be found, so that the vtable pointers are set
+ correctly when implementing default copy constructors.
+ * cp-typeck.c (build_modify_expr): Use TYPE_NONCOPIED_PARTS in the
+ same way the backend uses it when implementing default copy
+ constructors.
+
+ Tue Jun 22 10:50:56 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Don't try to mangle the name of a fn
+ that has C linkage.
+
+ * cp-init.c (xref_friends): Deleted fn, since it's the same as
+ xref_friend.
+ (xref_friend): Make it static.
+ (do_friend): Change call to xref_friend.
+ * cp-tree.h (xref_friend, xref_friends): Delete extern decls.
+
+ * cp-tree.h (lang_type): Delete `dynamic' bit.
+ * gplus.gperf (dynamic): Delete reserved word.
+ * cp-hash.h: Generated a new version.
+ * cp-lex.c (init_lex): Delete doing an unset of `dynamic'.
+ * cp-parse.y (DYNAMIC): Delete token and setting it to %right.
+ (new, aggr): Delete DYNAMIC rules.
+ * cp-spew.c (init_spew, struct toks_follow_types): Delete DYNAMIC.
+
+ * cp-typeck.c (convert_for_assignment): There's no standard
+ conversion from a pointer to member to a `void *'.
+
+ * cp-decl.c (init_decl_processing): Add builtins for
+ __builtin_apply_args, __builtin_apply, and __builtin_return.
+
+ Mon Jun 21 12:05:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (grok_x_components): New function. Adjust the code that
+ handles ENUMERAL_TYPEs and UNION_TYPEs to make more sense.
+ * cp-parse.y (component_decl): Move a lot of code into that fn.
+ * cp-tree.h (grok_x_components): Add extern decl.
+
+ * cp-parse.y (component_decl_list): Don't warn about a semicolon
+ after a component_decl_list.
+
+ * cp-search.c (lookup_field): Be careful to handle operators
+ properly when complaining about ambiguities &c.
+
+ * cp-search.c (dfs_pushdecls): Make sure we have a context before
+ seeing if it derives from TYPE.
+
+ Fri Jun 18 08:14:11 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (finish_anon_union): Use simple_cst_equal to find the
+ member that can hold all the values, instead of just doing a compare
+ between the DECL_SIZEs.
+
+ Wed Jun 16 10:57:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (build_unary_op): Make sure it's the global fn `main'
+ before complaining about taking the address of it.
+
+ * cp-decl.c (grokdeclarator): Also forbid `operator ()' as a
+ non-member fn.
+
+ * cp-decl.c (grok_reference_init): Don't allow an initializer list
+ as the initializer for a reference.
+
+ * cp-method.c (dump_init): Handle a NON_LVALUE_EXPR.
+
+ Sun Jun 13 12:55:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokvardecl): Don't complain about duplicate
+ definitions of `extern "C"' declarations (parallelize it with how
+ regular `extern' decls are handled).
+
+ * cp-decl.c (start_function): Avoid a null-reference on CTYPE.
+
+ * cp-cvt.c (build_default_binary_type_conversion): Look deeper into
+ what ARG1 and ARG2 are if they're POINTER_TYPEs.
+
+ Thu Jun 10 12:09:17 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Make the warning about opr-eq being a
+ member function be a pedwarn.
+
+ Thu Jun 10 00:30:08 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.h: (previous_class_type): Add external declaration.
+ * cp-class.c (prev_class_type): Rename to previous_class_type.
+ * cp-decl.c (struct saved_scope): Add previous_class_type slot.
+ * cp-decl.c (push_to_top_level, pop_from_top_level): Track
+ previous_class_type value. The only trick is that we have to call
+ popclass(-1) when we have a previous_class_type that we are about to
+ destroy, to keep things in sync.
+
+ Tue Jun 8 16:48:49 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-cvt.c (build_thunk, convert_fn_ptr): New routines to handle
+ thunks.
+ * cp-cvt.c (cp_convert_to_pointer): Use convert_fn_ptr when
+ converting non-static pointer to members.
+
+ Tue Jun 8 16:41:59 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (reinit_parse_for_block): Make sure not to try to use
+ consume_string on an escaped double-quote.
+
+ Tue Jun 8 16:25:43 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-call.c (build_method_call): Don't search hidden functions from
+ base classes, as this violates chapter 10.
+
+ Mon Jun 7 18:46:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-init.c (emit_base_init): Rewrite, merging the two paths into
+ one for member initialization. Now members will be initialized in
+ order of declaration, not in the order of the mem-initializer list.
+ (perform_member_init, sort_member_init): New functions.
+
+ Mon Jun 7 18:01:31 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (is_subobject_of_p, lookup_field, lookup_fnfields):
+ Because virtual bases don't necessarily share the same binfo, use
+ the binfo hierarchy of TYPE_BINFO of any virtual bases, when
+ performing hiding checks. Fixes problem introduced on Thu Mar 25
+ 23:09:27 1993. The symptom is the compiler reports non ambiguous
+ members as being ambiguous.
+
+ Sun Jun 6 11:45:44 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-call.c (EVIL,TRIVIAL): New macros.
+ (convert_harshness): Use these macros.
+
+ Sat Jun 5 19:06:13 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-init.c (emit_base_init): Make clearing BINFO_BASEINIT_MARKED
+ symmetric with its setting. Fixes p2825.
+
+ Thu Jun 3 16:24:30 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (component_declarator, component_declarator0):
+ Allow attribute after nameless field.
+
+ * cp-lex.c (real_yylex): Take care to expand token_buffer before
+ storing each character.
+
+ * cp-lex.c (real_yylex): If an integer value overflows so the high
+ word is negative, it's of unsigned long long type. Integer constant
+ is unsigned for purposes of int_fits_type_p so that it compares huge
+ constants properly. Warn about integers so large that they are
+ unsigned.
+
+ * cp-cvt.c (convert_from_reference): Do an or-equals on setting
+ TREE_SIDE_EFFECTS for NVAL.
+ * cp-tree.c (lvalue_p): For a SAVE_EXPR, check its first argument.
+
+ Thu Jun 3 11:34:35 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (grok_alignof): New function.
+ * cp-parse.y (unary_expr, ALIGNOF unary_expr rule): Move the code
+ into the new function, to reduce the size of the parser.
+ * cp-tree.h (grok_alignof): Add prototype.
+
+ * cp-decl.c (grokdeclarator): Allow function-call notation for
+ initialization of scalars as well as aggregates.
+
+ * cp-decl.c (pushdecl): Don't pay attention to friends when noting a
+ missing `static' decl. Disable this code for now.
+
+ Wed Jun 2 12:23:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (duplicate_decls): Do a regular error if the line number
+ on NEWDECL hasn't been set yet (e.g., before finish_struct).
+
+ * cp-class.c (finish_struct): Remove warning about a bit-field
+ having a bad type in ANSI C++, it's not appropriate given the
+ warning immediately above.
+
+ * cp-typeck.c (require_instantiated_type): Don't allow an
+ initializer list in an argument list.
+
+ * cp-decl.c (pushdecl): Change shadowing of a param in outermost
+ block of the fn from a pedwarn to an error, since it's a
+ redeclaration.
+
+ * cp-class.c (finish_struct): Say anonymous classes and structs are
+ useless, not just classes.
+
+ * cp-lex.c (real_yylex): Warn if catch, throw, or try are used as
+ identifier names.
+
+ * cp-decl.c (pushdecl): Make sure we have a CURRENT_FUNCTION_DECL
+ before setting its public flag.
+
+ * cp-decl.c (expand_static_init): Only complain about multiple
+ initializations of a static variable if we actually have an
+ initializer.
+ (finish_decl): Likewise for const.
+
+ * cp-search.c (build_mi_matrix): Fix off-by-one error in
+ clearing of MI_MATRIX.
+ (get_base_distance): Init NEW_BINFO to 0.
+
+ * cp-pt.c (instantiate_member_templates): Initialize XXX to 0.
+
+ * cp-call.c (build_method_call): Zero out candidates.
+ (build_overload_call_real): Likewise.
+
+ Wed Jun 2 11:53:24 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-search.c (lookup_fnfields_here): Use TYPE_MAIN_VARIANT on
+ context types before comparing. Fixes const member functions not
+ being found in templates.
+
+ Tue Jun 1 18:26:18 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-parse.y (structsp): Avoid a null-ref on ID.
+ (left_curly): Likewise.
+
+ Tue Jun 1 13:49:20 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (pushdecl): Communicate a `static' decl of a prototype
+ into its definition, if they forget to take care of it.
+
+ * cp-init.c (emit_base_init): Make error message more useful about
+ insufficient initializers for a member of a class w/o a ctor.
+
+ Sun May 30 09:45:06 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-call.c (compute_conversion_costs): Penalise each argument that
+ matches an ellipsis, not just the ellipsis itself.
+ (build_method_call): Don't consider a candidate an easy match if
+ cp->ellipsis is non-zero (fixes p2778).
+
+ Sat May 29 09:34:57 1993 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * cp-cvt.c (convert_to_reference): Match ARM rules more closely by:
+ (1) not converting between types of different signedness, and
+ (2) converting between types of different varieties if a const&
+ suggests we can use a temporary (fixes p2780).
+
+ * cp-decl.c (decls_match): Handle pseudo-match of parameter lists
+ according to p308 of the ARM.
+ (push_overloaded_decl): Ditto.
+ * cp-typeck.c (comptypes): Rest of change (closes p2779).
+
+ * cp-call.c (compute_conversion_costs): Count ellipses when we see
+ them.
+ (ideal_candidate): Gracefully handle arg lists that have ellipses
+ (Fixes p2777).
+
+ * cp-call.c (build_method_call): Delete some #ifdefs that are
+ obsoleted by ANSI.
+
+ Fri May 28 12:15:21 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (finish_decl): Don't allow overloaded operators to have
+ default arguments.
+
+ * cp-cvt.c (convert): If it's an anonymous enum, say so instead of
+ giving the cryptic `._123' as the enum type.
+
+ Thu May 27 10:52:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl.c (grokdeclarator): Return 0 instead of doing a 155 abort,
+ so we'll get the right error message later.
+
+ * cp-type2.c (readonly_error): Give a more useful error when the arg
+ is a RESULT_DECL.
+
+ * cp-init.c (build_new): Set LOOKUP_COMPLAIN on the flags, so we'll
+ pay attention to the visibility of the constructor we're trying to
+ call.
+
+ * toplev.c (lang_options): Add warning about ctor/dtor privacy.
+ * cp-decl2.c (lang_decode_option): Grok it. Make -Wall effect it.
+ (warn_ctor_dtor_privacy): New variable, default being on.
+ * cp-tree.h (warn_ctor_dtor_privacy): Add extern decl.
+ * cp-class.c (finish_struct_methods): Make the ctor warning
+ conditionalized on the flag.
+ (finish_struct): Likewise for ctors.
+ * invoke.texi (Option Summary, Warning Options): Add it.
+ (Options to Request or Suppress Warnings): Explain it.
+
+ * cp-decl.c (grokdeclarator): Use a pedwarn on extern inline.
+
+ Tue May 25 13:55:48 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-init.c (build_delete): Don't pass the size as an argument to
+ builtin delete for a non-aggregate type. Only pass it for a class
+ when we'll be using its own operator delete(). (complies w/ $12.5)
+ (build_x_delete): Don't pass the size down to builtin delete.
+
+ * cp-decl2.c (delete_sanity): If it's a pointer to a type that has
+ no destructor, then build a regular delete expression, instead of a
+ vector one (since we didn't push any info into the BI_header_type
+ area).
+
+ * cp-decl2.c (grok_array_decl): Add a pedwarn if they do `5[a]'.
+
+ * cp-typeck.c (comptypes): Don't warn about t2 being an
+ error_mark_node.
+
+ * cp-decl.c (finish_decl): If type is laid out, but decl is not,
+ call layout_decl.
+
+ Mon May 17 10:35:55 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-tree.h (error_not_base_type): Add prototype.
+
+ Fri May 14 17:16:55 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-class.c (finish_struct): Use get_binfo instead of binfo_value
+ to find vfields. Cures compiler_error.
+
+ Thu May 13 14:57:51 1993 Mike Stump (mrs@cygnus.com)
+
+ * cp-tree.c (binfo_value): If type is the main binfo for elem,
+ return it.
+
+ Wed May 12 13:10:07 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-typeck.c (c_expand_return): Pedwarn on using return without a
+ value in a function that requires one. Clear
+ CURRENT_FUNCTION_RETURNS_NULL, so we don't get a bogus warning about
+ reaching the end of a non-void function.
+
+ Tue May 11 17:51:16 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-decl.c (start_decl): Allow -fexternal-templates compiled code to
+ fall back to old strategy of generating static copies for templates
+ that are not under the control of #pragma interface/implementation,
+ but warn if this happens.
+ * cp-decl2.c (warn_if_unknown_interface): Likewise.
+ * cp-lex.c (reinit_parse_for_method, cons_up_default_function):
+ Likewise.
+ * cp-pt.c (end_template_decl, instantiate_member_templates,
+ instantiate_template): Likewise.
+ * cp-tree.h (warn_if_unknown_interface): Likewise.
+
+ Sat May 8 05:53:17 1993 Michael Tiemann (tiemann@cygnus.com)
+
+ * cp-decl.c (finish_decl): TOPLEV should be set non-zero also if we
+ are at the pseudo-global level. Use TOPLEV instead of testing
+ CURRENT_BINDING_LEVEL.
+
+ Fri May 7 12:42:46 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-decl2.c (grok_array_decl): New function.
+ * cp-parse.y (primary): Use it instead of lots of code in the
+ parser.
+ * cp-tree.h (grok_array_decl): Add prototype.
+
+ * cp-parse.y (component_decl): Disable change about TYPE_DECLs going
+ into the TYPE_FIELDS list for now.
+ * cp-type2.c (store_init_value): Disable checks for now.
+
+ Thu May 6 16:59:19 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (check_newline): Use a while instead of a do-while to
+ avoid reading the line after the #pragma if we're at a newline.
+
+ Wed May 5 16:38:06 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (stamp-cp-parse): Update reduce/reduce count to 13.
+
+ * cp-decl2.c (delete_sanity): New function.
+ * cp-parse.y (unary_expr): Call it, getting rid of a lot of
+ repeated code in the parser.
+ * cp-tree.h (delete_sanity): Add prototype.
+
+ * cp-init.c (emit_base_init): Don't try to do anything with a member
+ that lacks a DECL_NAME (e.g., types we added in component_decl from
+ the parser).
+
+ Wed May 5 12:57:33 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * cp-parse.y (get_current_declspecs): Obsolete, deleted.
+
+ Tue May 4 13:46:09 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-type2.c (process_init_constructor): Don't check for private or
+ protected members; we do that in store_init_value now.
+
+ * cp-parse.y (simple_stmt): Use expr_no_commas instead of expr for
+ case labels.
+
+ * cp-typeck.c (build_binary_op_nodefault): Add 'right' and 'left' to
+ shift count warnings to distinguish them from each other.
+
+ * cp-decl.c (finish_decl, grokdeclarator): Report overflows in
+ storage sizes.
+ (build_enumerator): Report overflows on enumerators.
+ * cp-decl2.c (grokbitfield): Likewise.
+ * cp-parse.y (unary_expr): Warn about overflows in parser-built
+ unary expressions.
+ * cp-typeck.c (c_sizeof): Call force_fit_type only for INTEGER_CST.
+ (build_c_cast): Ignore any integer overflow caused by a cast.
+ (convert_for_assignment): Warn if source had overflow in folding.
+ (build_conditional_expr): Check conversions in if-then-else
+ expressions.
+ * cp-tree.h (convert_and_check, overflow_warning,
+ unsigned_conversion_warning): Add prototypes for fns in c-common.c.
+
+ * cp-decl.c (init_decl_processing): Make the arrays 200 long to
+ leave enough room for most names.
+
+ * cp-decl.c (lookup_label): Return a NULL_TREE if not within a
+ function.
+ * cp-parse.y (unary_expr, ANDAND identifier): Handle lookup_label
+ returning a NULL_TREE.
+
+ * cp-method.c (dump_init): Grok a FIELD_DECL as well.
+
+ * cp-decl.c (finish_function): Move setting of the DECL_RESULT's
+ context and calling setjmp_protect after poplevel, so we have a
+ valid DECL_INITIAL for the fndecl (not an error_mark_node).
+
+ Mon Jan 25 11:04:23 1993 Niklas Hallqvist (niklas at della.appli.se)
+
+ * cp-parse.y (component_decl): Handle anonymous unions as static
+ class members.
+ * cp-decl.c (grokdeclarator): Ditto.
+
+ * cp-decl.c (shadow_tag): Emit error message if static or extern
+ is specified as per ARM 7.1.1.
+
+ * cp-decl2.c (finish_anon_union): Issue error if a global
+ anonymous union is not declared static, remove old funny error
+ about some optimizer failing.
+
+ * cp-class.c (finish_struct): Corrected error message concerning
+ anonymous classes.
+
+ * cp-lex.c (check_for_missing_semicolon): Allow trailing storage
+ specifiers.
+
+ Fri Jan 29 09:39:17 1993 Niklas Hallqvist (niklas at della)
+
+ * cp-parse.y (component_decl): Nested unions, enums and structs
+ should have their TYPE_DECLs in the TYPE_FIELDS slot of the
+ containing type so the access flags eventually will get correctly
+ set.
+
+ * cp-type2.c (store_init_value): Check for the aggregate conditions
+ described in ARM 8.4.1.
+
+ Mon May 3 19:10:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-lex.c (real_yylex): Don't warn about floating point out of
+ range if target floating-point format is IEEE.
+
+ * cp-class.c (finish_struct): Promote unsigned bitfields to signed
+ int if the field isn't as wide as an int.
+
+ * cp-search.c (dfs_pushdecls): Use warning_with_decl, so we give the
+ line number of the offending method declaration, rather than the
+ line number of the curly-brace that ends the class definition.
+
+ Mon May 3 18:04:15 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-cvt.c (convert): When doing int->enum conversions, always call
+ pedwarn, even if we didn't give `-pedantic'.
+
+ * cp-decl.c (start_function): Add extern decl of
+ `flag_external_templates'.
+
+ * cp-lex.c (check_newline): Warn if there's anything after a
+ `#pragma interface'.
+
+ Mon May 3 12:39:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-class.c (finish_struct_methods): Use `warning' on a class w/ a
+ private dtor and no friends, so the line number comes out right. Also
+ only emit this warning when `extra_warnings' is true.
+
+ * cp-type2.c (process_init_constructor): Don't allow use of an
+ initializer list for a class with private or protected members.
+
+ Sat May 1 15:07:24 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-decl.c (start_decl, start_function): Add a new flag
+ -fexternal-templates. Use flag_external_templates to determine when
+ template definitions should be made externally visible and
+ accessible. This permits non-exponential growth in object files
+ that use templates.
+ * cp-decl2.c (lang_f_options): Likewise.
+ * cp-lex.c (reinit_parse_for_method, cons_up_default_function):
+ Likewise.
+ * cp-parse.y (template_instantiate_once): Likewise.
+ * cp-pt.c (end_template_decl, instantiate_member_templates,
+ instantiate_template, end_template_instantiation): Likewise.
+ * toplev.c (lang_options): Likewise.
+
+ Fri Apr 30 18:50:00 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * cp-spew.c (arbitrate_lookup): If the next character is a '[', then
+ have the compiler assume it's an expression instead of a type.
+
+ Fri Apr 30 14:39:28 1993 Mike Stump (mrs@poseidon.cygnus.com)
+
+ * cp-class.c (maybe_fixup_vptrs): Use the VF_NORMAL_VALUE of the
+ vfields to get the binfo to get the vtable, so that we may pick up
+ the most derived version of the vtable.
+
+ * cp-class.c (finish_base_struct): Always set the VF_NORMAL_VALUE so
+ that maybe_fixup_vptrs can get the most derived vtable.
+
+Fri Jun 25 14:00:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Convert ...-sysvr4 into ...-sysv4.
+
+ * config/m68k/news.h (CPP_PREDEFINES): Have two alternatives,
+ one for motorola and one for not motorola.
+
+ * config/m68k/tower-as.h, mot3300.h, m68kv4.h, hp320.h, amix.h:
+ * config/m68k/3b1.h, crds.h (CPP_PREDEFINES): Add __motorola__.
+
+ * expr.c (store_expr): If TARGET is volatile mem ref, return it.
+
+ * toplev.c (lang_options): Add -fdollars-in-identifiers.
+ * c-decl.c (c_decode_option): Handle -fdollars-in-identifiers.
+
+Fri Jun 25 13:33:39 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa-hpux.h (LINK_SPEC): Search shared libraries by default; turn
+ off shared library searching of -static is specified.
+ * pa-ghpux.h (LINK_SPEC): Likewise.
+
+ * pa.h (TARGET_SHARED_LIBS): Delete switch and all references to
+ the switch.
+ * pa.c: References to TARGET_SHARED_LIBS deleted.
+ * pa.md: Likewise.
+
+ * pa-utahmach.h (TARGET_DEFAULT): Allow indexing on Mach ports.
+ * pa1-utahmach.h (TARGET_DEFAULT): Likewise.
+ * pa.h (TARGET_DISABLE_INDEXING): Clean up comments.
+
+Fri Jun 25 00:50:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * expr.c (store_expr): Ignore SUGGEST_REG if target is volatile.
+
+ * config/mips/mips.md (negdi2, negdi2_internal): Renamed from negdi3...
+
+Thu Jun 24 00:31:27 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * gcc.c (option_map): Make --version alias for -dumpversion.
+
+Wed Jun 23 07:50:21 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * romp.c (output_prologue): Delete unused var, INSN.
+ (output_encoded_offset): New function.
+ (output_epilogue): Minor changes to traceback table; call
+ new output_encoded_offset.
+ (romp_debugger_{auto,arg}_correction): New functions.
+ * romp.h (DBX_REGPARM_STABS_LETTER, DEBUGGER_{AUTO,ARG}_OFFSET):
+ New macros.
+
+ * reorg.c (fill_slots_from_thread): When replacing a use of a
+ register with what it was set to, don't do it when either the
+ destination or source of the copy is set in the insn.
+
+ * jump.c (jump_optimize): Properly make jump into store-flag
+ sequence when the jump can't be reversed but the TRUE branch
+ is const0_rtx.
+
+ * expr.c (expand_expr): Set IGNORE if target is const0_rtx or
+ result type is VOID.
+ Move most IGNORE processing to one place to avoid expanding things
+ that don't need to be expanded.
+ (expand_expr, case CONSTRUCTOR, case COND_EXPR): If IGNORE, don't
+ expand anything we don't have to.
+ (expand_expr, case CONVERT_EXPR): Don't deal with IGNORE here.
+
+Wed Jun 23 07:47:32 1993 John F Carr (jfc@Athena.mit.edu)
+
+ * regs.h (scratch_list, scratch_block, scratch_list_length): New vars.
+ * reload1.c (mark_scratch_live): New function.
+ (reload): Call it on each SCRATCH.
+ Free scratch list and block.
+ (spill_hard_reg): Reallocate any SCRATCH whose register we want to
+ spill.
+ * local-alloc.c (scratch_block, scratch_list{,_length}, scratch_index):
+ New variables.
+ (local_alloc): Allocate and initialize them.
+ (alloc_qty_for_scratch): Can allocate likely-spilled register
+ classes for SCRATCH.
+ (block_alloc): Likewise for regs in small register classes.
+ Only allocate a SCRATCH if it can fit in the block we make.
+ Don't mark regs used in SCRATCH live here; instead, make entry in
+ new tables.
+
+Tue Jun 22 19:52:08 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu)
+
+ * emit-rtl.c (copy_rtx_if_shared): In `E' case, get the length
+ before copying, and don't get it again after.
+
+Tue Jun 22 10:50:56 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * toplev.c (report_error_function): Change format of the
+ included-file stack to be more readable.
+ * cccp.c (print_containing_files): Likewise.
+
+Mon Jun 21 19:21:18 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (print_operand, case 'J'): Write out shift count
+ of 0, not 32 for bit 31 of CCR.
+
+See ChangeLog.7 for earlier changes.
diff --git a/gcc/ChangeLog.9 b/gcc/ChangeLog.9
new file mode 100644
index 00000000000..9cd8cdfe1a1
--- /dev/null
+++ b/gcc/ChangeLog.9
@@ -0,0 +1,9968 @@
+Tue Feb 28 16:36:58 1995 Michael Meissner <meissner@cygnus.com>
+
+ * rs6000/eabi.asm (__eabi): Correctly reload r30 in the case where
+ the GOT pointers have to be relocated.
+
+ * rs6000/rs6000.md (floatsidf2, floatunssidf2): Add
+ TARGET_SOFT_FLOAT conditional dropped in the last change.
+ (movdf insns): Add -msoft-float varients that do not use 'f' register
+ constraints.
+ (movti): On PowerPC, don't clobber the MQ register, since it doesn't
+ exist. Add abort to default switch case.
+ (store_multiple, load_multiple): Test for TARGET_POWER instead
+ of !TARGET_POWERPC to determine whether the MQ register exists.
+
+Tue Feb 28 14:46:48 1995 Doug Evans <dje@cygnus.com>
+
+ * configure (extra_headers): Renamed from header_files.
+
+ * toplev.c (rest_of_compilation): Defer output of static inlines
+ even if not optimizing, they may never be referenced.
+
+Mon Feb 27 17:06:47 1995 Doug Evans <dje@cygnus.com>
+
+ * cccp.c (do_include): Check for redundant file before opening in
+ relative path case. Don't call fstat unnecessarily.
+
+Mon Feb 27 11:20:29 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * mips.md (muldi3_internal): Change dmul to dmult.
+
+Mon Feb 27 02:30:54 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * pa.c (hppa_expand_prologue): Don't save the PIC register into
+ the stack for functions which have no stack of their own.
+
+Mon Feb 27 00:43:32 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/gnu.h (ASM_SPEC): Macro removed.
+
+Sun Feb 26 20:21:52 1995 Doug Evans <dje@cygnus.com>
+
+ * reload.c (find_reloads_address): Fix typo in reg+const case.
+
+Sat Feb 25 10:21:13 1995 Doug Evans <dje@cygnus.com>
+
+ * gcc.c (print_search_dirs): New variable.
+ (build_search_list): New function.
+ (putenv_from_prefixes): Call it.
+ (option_map): New option --print-search-dirs.
+ (process_command): Handle it.
+ (main): Print installation directory and exec/startfile_prefixes if
+ --print-search-dirs given.
+
+ * Makefile.in (Makefile): Delete config.run afterwards.
+ (distclean): Delete config.run.
+
+Sat Feb 25 08:36:40 1995 David Mosberger-Tang (davidm@cs.arizona.edu)
+
+ * alpha.h (ASM_SPEC): Pass -pg to assembler.
+ (FUNCTION_PROFILER): Do nothing; the assembler does it for us.
+
+Sat Feb 25 08:24:27 1995 H.J. Lu (hjl@nynexst.com)
+
+ * configure (native_prefix): New; lets some hosts put
+ files in /usr instead of /usr/local if no --prefix specified.
+
+Sat Feb 25 08:07:56 1995 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000.h (RTX_COSTS): Add cost of FFS.
+
+Sat Feb 25 06:52:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * mips.c (mips_fill_delay_slot): Fix typo in call to FP_REG_P.
+
+ * cse.c (simplify_unary_operation): If operand mode is VOIDmode
+ for UNSIGNED_FLOAT and operand looks negative, can't simplify.
+
+ * rs6000.c (low_32_bit_operand): New function.
+ * rs6000.h (PREDICATE_CODES): Add low_32_bit_operand.
+ * rs6000.md: Remove unneeded tests on HOST_BITS_PER_INT from
+ some extra conditions.
+ Use low_32_bit_operand for (plus:DI (zero_extend:DI ..) ..) cases.
+
+Sat Feb 25 00:49:29 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/xm-gnu.h (POSIX): Define this macro.
+
+ * config/gnu.h (GNU_CPP_PREDEFINES): Add missing backslash.
+
+Fri Feb 24 19:17:29 1995 Jeffrey A. Law <law@snake.cs.utah.edu>
+
+ * configure (hppa1.?-hp-hpux9*): Use hpux9 configuration files.
+ * pa-hpux9.h, pa-ghpux9.h, pa1-hpux9.h, pa1-ghpux9.h: New
+ configuration files.
+
+Fri Feb 24 15:55:33 1995 Jim Wilson <wilson@cygnus.com>
+
+ * reorg.c (relax_delay_slots): When searching for next CODE_LABEL,
+ use next_real_insn not next_active_insn.
+
+ * stdarg.h, va-*.h, varargs.h (va_end): Expand to a void expression
+ instead of nothing.
+
+ * sh.h (PACKSTRUCT_BIT, TARGET_PACKSTRUCT): Change to PADSTRUCT.
+ Add comment saying that the option is not useful.
+ (TARGET_SWITCHES): Change -mpackstruct option to -mpadstruct.
+ (STRUCTURE_SIZE_BOUNDARY): Change PACKSTRUCT to PADSTRUCT changing
+ default value from 32 to 8.
+
+ * dwarfout.c (PUSHSECTION_FORMAT): Add a leading tab.
+
+ * expr.c (expand_expr, case COMPONENT_REF): Don't fetch unaligned
+ field if we only want its address.
+
+ * i960.c (fp_literal_one, fp_literal_zero): Don't accept VOIDmode.
+ (i960_output_ldconst): In DFmode code, delete code to handle FP_REG_P
+ target. In DFmode and SFmode code, delete test for HOST_FLOAT_FORMAT
+ == TARGET_FLOAT_FORMAT.
+ * i960.h (REAL_ARITHMETIC): Define.
+ (LEGITIMATE_CONSTANT_P): Pass argument mode not VOIDmode to fp_literal.
+
+ * i960.h (CC1_SPEC): Don't output implicit -gstabs or -gcoff option
+ if user gave an explicit one.
+ * vx960-coff.h (CC1_SPEC): Likewise.
+
+ * dbxout.c (GDB_INV_REF_REGPARM_STABS_LETTER): New macro.
+ (dbxout_parms): For gdb, output use GDB_INV_REF_REGPARM_STABS_LETTER
+ for parameters passed by invisible reference in registers.
+
+ * mips.c (mips_secondary_reload_class): Also handle SUBREGs.
+ * mips.md (madsi): Don't use '+' constraint in a clobber.
+ (madsi_highpart, umadsi_highpart): Delete.
+
+ * dbxout.c (dbxout_parms): For parameters passed in memory, delete
+ obsolete code to handle parameters converted and stored back to
+ the stack slot where they were passed in.
+ (dbxout_reg_parms): Delete obsolete ifdefed out code. Combine
+ redundant PARM_PASSED_IN_MEMORY tests. For case where parameter
+ lives in memory, output stab if it doesn't live where it was passed.
+
+ * sh.c: Correct typos and formatting problems.
+ (add_constant, current_function_pretend_args_size,
+ flag_traditional, table_lab): Delete unnecessary declarations.
+ (sh_cpu): Change type from attr_cpu to processor_type.
+ (need_slot, output_shift, lshiftrt_insns, howshift,
+ pop_operand): Delete.
+ (print_operand, output_branch): Delete calls to need_slot.
+ (synth_constant): Comment that it doesn't work.
+ (output_movedouble): Handle PRE_DEC dest not POST_INC dest.
+ (output_options): Don't use flag_traditional.
+ (shift_insns): Correct numbers to optimal sequences.
+ (shift_amounts): New table.
+ (shift_insns_rtx): New function.
+ (shiftinsns): Combine LSHIFTRT and ASHIFT cases.
+ (shiftcosts): Return true costs of shifts instead of estimate of 1.
+ (gen_ashift): Handle negative shift amounts. Call gen_lshrsi3_m
+ for single bit LSHIFTRT, and gen_lshrisi3_k for multiple bit shifts.
+ (gen_shifty_op): Handle negative shift amounts at top. Generate
+ optimal sequences for ASHIFT and LSHIFTRT.
+ (find_barrier): Correct pattern for matching mova instructions.
+ (general_movsrc_operand): Delete redundant test for (MEM LABEL_REF).
+ Don't reject POST_INC address for size > 4.
+ (general_movdst_operand): Don't reject PRE_DEC address for size > 4.
+ * sh.h: Correct typos and formatting problems.
+ (MODE_DISP_OK_[12]): Delete.
+ (GO_IF_LEGITIMATE_INDEX): Delete uses of MODE_DISP_OK_[12].
+ (RTX_COSTS): Add LSHIFTRT.
+ (table_lab): Delete declaration.
+ (enum processor_type): New enum.
+ (sh_cpu_attr): New macro.
+ (sh_cpu): Change type to enum processor_type to avoid incomplete
+ enum type.
+ * sh.md: Correct typos and formatting problems.
+ (cpu): Use sh_cpu_attr not sh_cpu.
+ (adddi3, subdi3, udivsi3-1, divsi3-1, mulsi3_call-1, ashrsi2_16,
+ ashrsi2_31, dect, casesi_worker): Use arith_reg_operand not
+ register_operand.
+ (ashlsi3_n, lshrsi3_n): Enable pattern. Set length correctly.
+ Use '#' to output it.
+ (ashlsi3_n+1, lshrsi3_n+1): New patterns to split shifts.
+ (ashlsi3, lshrsi3): Use shiftby_operand instead of gen_shifty_op.
+ (lshlsi3_m): New pattern for single bit shifts.
+ (lshlsi3_k): Only handle multiple bit shifts.
+ (negc): Use IOR not PLUS to set carry bit.
+ (push+2, pop+2, movsi_pi, movdi-2, movdf_k-1, movsf_i-1): Delete.
+ (movsi_i, movqi_i, movhi_i): Delete redundant < and > constraints.
+ (movsf_i): Delete incorrect < and > constraints.
+
+Fri Feb 24 13:07:55 1995 Stephen L Moshier <moshier@world.std.com>
+
+ * i386/i386.md (sinxf2, cosxf2): Define.
+
+Thu Feb 23 14:14:20 1995 Mike Stump <mrs@cygnus.com>
+
+ * rs6000.h/rs6000.h (RETURN_ADDR_RTX): Add definition to support
+ __builtin_return_address and __builtin_frame_address on the
+ rs6000. This is necessary to support exception handling in g++ on
+ the rs6000.
+
+Thu Feb 23 15:23:26 1995 Michael Meissner <meissner@cygnus.com>
+
+ * rs6000/rs6000.h (TARGET_SWITCHES): All -mpower switches set
+ -mmultiple by default. Rename -mno-fp-regs to -msoft-float and
+ -mfp-regs to -mhard-float.
+ (TARGET_NO_FPR): Rename all occurances of macro to be either
+ TARGET_HARD_FLOAT or TARGET_SOFT_FLOAT.
+ (FUNCTION_VALUE): If -msoft-float, floating point gets returned in
+ register 3.
+ (LIBCALL_VALUE): Ditto.
+ (USE_FP_FOR_ARG_P): Don't use floating point registers if
+ -msoft-float.
+ (MOVE_MAX): Use TARGET_MUTIPLE instead of TARGET_POWER to decide
+ to move 16 bytes at a time.
+ (GO_IF_LEGITIMATE_ADDRESS): Don't allow index + base register
+ addresses for DF's if -msoft-float.
+
+ * rs6000/rs6000.c (POWER_MASKS): Or in MASK_MULTIPLE.
+ (processor_target_table): Set MASK_MULTIPLE for Power CPUs and
+ don't set it for PowerPC CPUs.
+ (output_prolog): If -mrelocatable and a GOT pool is used, mark the link
+ register as being live. Load the GOT address via a bl instruction.
+ (output_toc): If V.4 semantics, make the TOC label be the difference
+ from the start of the TOC section, rather a label the assembler has to
+ recognize as being an offset.
+
+ * rs6000/rs6000.md (all floating point ops): For all operations,
+ check if floating point is allowed.
+ (movti): Use TARGET_MULTIPLE to decide whether to expand movti
+ instead of TARGET_POWER.
+
+ * rs6000/sysv4.h (SUBTARGET_SWITCHES): Move here from eabi.h, so the
+ various macro overrides don't have to be recoded for eabi as well
+ as System V.4. Add -mstrict-align to set STRICT_ALIGNMENT to 1.
+ Add -mrelocatable to specify that that the data/text sections may
+ be copied elsewhere, but not true V.4 style PIC.
+ (TOC_SECTION_FUNCTION): Handle TARGET_RELOCATABLE.
+ (TOC_SECTION_ASM_OP): Put quotes around ".got".
+ (MINIMAL_TOC_SECTION_ASM_OP): Put quotes around ".got1".
+
+ * rs6000/eabi.h (SUBTARGET_SWITCHES): Move to rs6000/sysv4.h.
+ (MINIMAL_TOC_SECTION_ASM_OP): Use ".got2" section if
+ -mrelocatable.
+
+ * rs6000/eabi.asm: New file to load up register 2 or relocate the .got2
+ addresses. Called from main.
+
+ * rs6000/t-rs6000: Build two libgcc.a's, one for normal use, and one
+ used when compiling with -msoft-float.
+
+ * rs6000/t-eabi: New file, build two libgcc.a's, one for normal use,
+ and one used when compiling with -msoft-float. Add support for eabi
+ module to relocate the .GOT2 section to support -mmultiple.
+
+ * configure (powerpc-*-eabi*): Use t-eabi, not t-rs6000.
+
+Thu Feb 23 06:58:46 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (ld): Add missing backslash to make continuation line.
+
+ * i386/winnt.c (gen_stdcall_suffix): Deleted.
+ * winnt/winnt.h (MODIFY_ASSEMBLER_NAME): Deleted.
+ (VALID_MACHINE_DECL_ATTRIBUTES): Deleted.
+ * varasm.c (make_decl_rtl): Remove reference to MODIFY_ASSEMBLER_NAME.
+
+ * alpha.h (RTX_COSTS): Update costs for FP operations.
+
+Thu Feb 23 00:13:05 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * c-typeck.c (build_binary_op): Warn if, in a comparison, a signed
+ operand that might be negative is converted to unsigned.
+
+Wed Feb 22 21:32:48 1995 Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de)
+
+ * config/svr4.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): New macro.
+
+Wed Feb 22 20:29:31 1995 J.T. Conklin <jtc@netbsd.org>
+
+ * configure (*-*-netbsd*): Set tmake_file to t-libc-ok.
+
+ * config/xm-netbsd.h, i386/xm-netbsd.h, m68k/xm-netbsd.h: New files.
+ * sparc/xm-netbsd.h: New file.
+ * ns32k/xm-netbsd.h: Changed to use config/xm-netbsd.h and
+ ns32k/xm-ns32k.h.
+ * configure (i386-*-netbsd*): Use i386/xm-netbsd.h.
+ (m68k-*-netbsd*): Use m68k/xm-netbsd.h.
+ (sparc-*-netbsd*): Use sparc/xm-netbsd.h.
+
+ * cppp.c, collect2.c: Removed __NetBSD__ from conditional.
+ * collect2.c: Declare strerror if HAVE_STRERROR is defined;
+ otherwise declare sys_errlist and sys_nerr.
+
+Wed Feb 22 19:07:08 1995 Niklas Hallqvist (niklas@appli.se)
+
+ * Makefile.in (libgcc1.a): Run ranlib.
+
+Wed Feb 22 18:46:50 1995 Yury Shevchuk (sizif@botik.yaroslavl.su)
+
+ * explow.c (memory_address): Add missing "else".
+
+Wed Feb 22 15:29:58 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * collect2.c (libselect): New function for passing to scandir.
+ (libcompare): Ditto.
+ (locatelib): Use scandir to look for libraries with matching version
+ numbers.
+
+Wed Feb 22 18:27:14 1995 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (enum sharp_token_type): New type.
+ (stringify, raw_before, raw_after): Use this type instead of char.
+ (collect_expansion, dump_single_macro): Keep track of white space
+ after # and around ## tokens, since the C Standard requires a
+ diagnostic if the white space doesn't match during a redefinition.
+ (sharp_token, sharp_sharp_token): Labels renamed from hash_token and
+ hash_hash_token for naming consistency.
+
+Wed Feb 22 17:37:12 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c (SWITCH_TAKES_ARG): Add `x'.
+ (process_command): -Wl, -Xlinker, and -lm values always go to
+ linker even if -x was specified.
+
+Wed Feb 22 09:33:36 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * fold-const.c (fold): Support folding CLEANUP_POINT_EXPRs into
+ arithmetic expressions.
+
+Wed Feb 22 08:40:30 1995 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000.c (print_operand, case 'H', 'S'): Delete unused.
+
+ * rs6000.md (ffssi2): Use gpc_reg_operand predicate.
+ (Some maskir patterns): Likewise.
+ (ffsdi2): Likewise.
+
+ * rs6000.md (movsfcc, movdfcc): New standard patterns.
+ (fselsfsf4, fseldfsf4, fseldfdf4, fselsfdf4): Name and create
+ variants of existing anonymous patterns for movsfcc and movdfcc.
+
+Wed Feb 22 08:10:36 1995 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * final.c (output_asm_name): New function, using code taken
+ from output_asm_insn.
+ (output_asm_insn): If flag_print_asm_name, print the comment
+ after the first assembler instruction even in multi-instruction
+ templates.
+
+Wed Feb 22 07:04:25 1995 Ian Lance Taylor (ian@cygnus.com)
+
+ * real.c (REAL_WORDS_BIG_ENDIAN): New macro. Define as either
+ FLOAT_WORDS_BIG_ENDIAN or HOST_FLOAT_WORDS_BIG_ENDIAN. Use it
+ instead of FLOAT_WORDS_BIG_ENDIAN.
+
+Wed Feb 22 07:03:39 1995 Stephen L Moshier (moshier@world.std.com)
+
+ * final.c (split_double): Handle CONST_INT that holds both words.
+ * i386.c (output_move_double): Let split_double extract any
+ constant in op 1; take size from op 0.
+
+ * real.c (m16m, edivm, emulm): Change `short' to `EMUSHORT', and `long'
+ to `EMULONG'.
+ Clean up comments.
+
+Wed Feb 22 00:52:40 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * pa.h (ASM_DECLARE_FUNCTION_NAME): Handle invisible reference
+ arguments passed in registers.
+
+Tue Feb 21 19:03:09 1995 Douglas Rupp (drupp@cs.washington.edu)
+
+ * Makefile.in ($exeext, $objext, $oldobjext): New macros.
+ * Makefile.in: Copy config.status to config.run and then execute.
+ * configure, Makefile.in: Try a "cp" if "ln" fails.
+ * objc/Makefile: Added {} around file variable.
+
+ * c-parse.in: New rules to allow attributes in a prefix position.
+ * c-tree.h (decl_attributes): Added argument.
+ * c-decl.c (grokdeclarator): Added code to support machine attributes.
+ * c-common.c (decl_attributes): Add third argument prefix_attributes.
+ (valid_machine_attribute): Deleted; moved to tree.c.
+ * tree.h (union tree_decl): New field MACHINE_ATTRIBUTES.
+ (DECL_MACHINE_ATTRIBUTES): New macro.
+ * c-decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
+ descendent typedef; make duplicate typedefs that are identical
+ generate a warning if they are both in system header files.
+ (redeclaration_error_message): Make duplicate typedefs that
+ are identical not an error if they are both in system header files.
+ * print-tree.c (print_node{,_brief}): Print machine attributes.
+
+ * calls.c (emit_call_1): Added function declaration node argument
+ passed to RETURN_POPS_ARGS; also effects calls to emit_call_1.
+ * function.c (assign_parms): Added arg to RETURN_POPS_ARGS.
+ * 1750a.h, a29k.h, alpha.h, arm.h, clipper.h, convex.h: Likewise.
+ * dsp16xx.h, elxsi.h, fx80.h, gmicro.h, h8300.h, i370/mvs.h: Likewise.
+ * i386.h, i386/isc.h, i386/next.h, i386/sco.h: Likewise.
+ * i386/scodbx.h, i860.h, i960.h, m68k.h, m88k.h, mips.h: Likewise.
+ * ns32k.h, pa.h, pdp11.h, pyr.h, romp.h, rs6000.h, sh.h: Likewise.
+ * sparc.h, spur.h, tahoe.h, vax.h, we32k.h: Likewise.
+
+ * cccp.c (main): Don't set "Include" environment variable for NT.
+ * protoize.c: Added #ifdef's WINNT.
+ * toplev.c (get_run_time): Return an approximate value for NT.
+ * gbl-ctors.h, libgcc2.c (atexit): Prototype now works with NT.
+ * gcc.c (fix_argv): Rewrite.
+
+ * i386/winnt.c: New file
+ * winnt/ld.c (expand_lib): Look for both libfoo.a and foo.lib.
+ Modified to support linking with Windows NT graphics libraries.
+ * i386/winnt.h, x-winnt: Support NT Graphics programs; also bug fixes.
+ * winnt/winnt.h (CPP_SPEC): Accept c++ style comments.
+ * winnt/xm-winnt.h: Reflect features/functions available in NT.
+
+ * fixinc.winnt: New file.
+ * configure (i[345]86-*-winnt): Add fixincludes and extra_objs.
+ * config-nt.bat: Deleted.
+ * configure.bat: Take arg specifying msdos or winnt batch file config.
+ * i386/config-nt.{bat,sed}: Updated to Windows NT 3.5.
+
+ * ginclude/stdarg.h, ginclude/varasgs.h: Test _VA_LIST_DEFINED macro.
+ * ginclude/stddef.h: Test _SIZE_T_DEFINED and _WCHAR_T_DEFINED.
+ * ginclude/varargs.h: Modifed to work with Windows NT. Needed a
+ _VA_LIST_DEFINED macro.
+
+ * tree.c: (chain_member_value, decl_attribute_variant): New functions.
+ (valid_machine_attribute): Moved here from c-common.c.
+
+ * varasm.c (make_decl_rtl): Call MODIFY_ASSEMBLER_NAME if defined.
+
+Tue Feb 21 12:40:05 1995 Jeffrey A. Law <law@snake.cs.utah.edu>
+
+ * local-alloc.c (block_alloc): Stop looping over the input
+ operands once we find an input/output register pair which can
+ be combined into a single qty.
+
+ * integrate.c (finish_inline): Don't set DECL_INLINE.
+
+Tue Feb 21 10:19:51 1995 Michael Meissner <meissner@cygnus.com>
+
+ * toplev.c (lang_options): Move fortran switches here, fixing bad
+ patch.
+
+Tue Feb 21 07:30:11 1995 Stephen L Moshier (moshier@world.std.com)
+
+ * rs6000.c (output_toc): Use REAL_VALUE_* macros.
+ * rs6000.h (REAL_ARITHMETIC): Define.
+
+Tue Feb 21 06:48:41 1995 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * stmt.c (expand_value_return): Make function static.
+
+Tue Feb 21 06:42:33 1995 Paul Eggert <eggert@twinsun.com>
+
+ Add support for ISO Normative Addendum 1 to the C Standard.
+ * ginclude/iso646.h: New file.
+ * Makefile.in (USER_H): Add iso646.h.
+ * c-lex.c (yylex): Add support for <: :> <% %> digraphs.
+ * cccp.c (rescan): Add support for %: and %:%: digraphs.
+ (collect_expansion, skip_if_group, dump_single_macro): Likewise.
+ (union hashval): Remove ival member; it doesn't suffice for `199409L'.
+ (special_symbol): Use cpval instead of ival for T_CONST macros.
+ (install): Remove ivalue argument, since string value now suffices.
+ All callers changed.
+ (initialize_builtins): Switch from int to string values for T_CONST.
+ If not traditional, initialize __STDC_VERSION__ to 199409L.
+ (STDC_VALUE): Remove no-longer-used configuration macro.
+
+Tue Feb 21 06:16:37 1995 Franz Korntner (fkorntne@bazis.nl)
+
+ * gcc.c (read_specs): Use length read when inserting zero.
+
+ * c-lex.c (yylex): For float, build constant in long double.
+
+Tue Feb 21 05:57:42 1995 Craig Burley (burley@gnu.ai.mit.edu)
+
+ * toplev.c (lang_options): Add options for Fortran.
+
+ * gcc.c (default_compilers): Add entries for .f and .F.
+
+Tue Feb 21 05:37:21 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c (default_compilers): Remove rule for ".ada".
+ Pass .ads or .adb suffix to -dumpbase, depending on input filename.
+
+ * toplev.c (compile_file): Initialize input_file_stack before
+ calling lang_init, not after.
+ * c-lex.c (check_newline): Give warning if unrecognized data on #line.
+ (yylex): Give error for unterminated string constant.
+
+Mon Feb 20 14:46:56 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * varasm.c (output_constant): Strip NOP_EXPRs for SET_TYPE too,
+ by using AGGREGATE_TYPE_P macro.
+
+Mon Feb 20 14:39:57 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * config/svr4.h (ASM_OUTPUT_SOURCE_LINE): Use assemble_name.
+
+Mon Feb 20 15:26:05 1995 Doug Evans <dje@cygnus.com>
+
+ * config.sub (sun4sol2): Alias for sparc-sun-solaris2.
+
+Sat Feb 18 16:15:33 1995 Mike Stump <mrs@cygnus.com>
+
+ * libgcc2.c (__unwind_function): New function to support stack
+ unwinding on rs6000 for g++ exception handling.
+
+Sat Feb 18 13:55:02 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * tree.h (get_set_constructor_bytes): Fix prototype.
+ * varasm.c (output_constructor): Fix typo byte_size -> size.
+
+Sat Feb 18 12:36:12 1995 Doug Evans <dje@cygnus.com>
+
+ Lynx patches from various Cygnus people.
+ * config.sub: Recognize lynx* as lynxos.
+ * configure (i386-lynx): Set xm_file to i386/xm-lynx.h
+ Set tmake_file to i386/t-i386bare.
+ (m68k-lynx): Set xm_file to m68k/xm-lynx.h.
+ Set tmake_file to m68k/t-lynx.
+ (rs6000-lynxos*): New target.
+ (sparc-lynxos*): Set xm_file to sparc/xm-lynx.h.
+ Set tmake_file to sparc/t-sunos41.
+ * config/lynx.h (LIB_SPEC, STARTFILE_SPEC): Update to LynxOS 2.2.2.
+ (FUNCTION_PROFILE): Undef.
+ * config/xm-lynx.h (HOST_BITS_PER_CHAR): Delete.
+ (HOST_BITS_PER_{SHORT,INT,LONG,LONGLONG}): Likewise.
+ (mktemp): Provide our own, lynx's definition isn't standard.
+ * i386/t-i386bare (LIBGCC1): Define to empty instead of libgcc1.null.
+ (CROSS_LIBGCC1): Likewise.
+ * i386/xm-lynx.h: New file.
+ * m68k/lynx.h (FUNCTION_VALUE): Redefine.
+ (LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P, NEEDS_UNTYPED_CALL): Likewise.
+ * m68k/t-lynx: New file.
+ * m68k/xm-lynx.h: New file.
+ * rs6000/lynx.h: New file.
+ * rs6000/rs6000.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
+ (OVERRIDE_OPTIONS): Call it.
+ * rs6000/x-lynx: New file.
+ * rs6000/xm-lynx.h: New file.
+ * sparc/xm-lynx.h: New file.
+
+Thu Feb 16 17:02:51 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/mips/mips.h (enum processor_type): Add PROCESSOR_R4650.
+ * config/mips/mips.c (override_options): Use PROCESSOR_R4650 for
+ the 4650, not PROCESSOR_R4600. Check for it when doublechecking
+ mips_isa level.
+ * config/mips/mips.md: Add r4650 to cpu attr. Update functional
+ units for r4650.
+ (mulsi3): If TARGET_MAD, generate mulsi3_r4650.
+ (mulsi3_r4650): New instruction, mul directly to register file,
+ supported on r4650.
+
+Thu Feb 16 11:44:51 1995 Michael Meissner <meissner@cygnus.com>
+
+ * rs6000/eabi.h (SUBTARGET_SWITCHES): Add support for
+ -mstrict-align to control whether STRICT_ALIGNMENT is 1 or 0.
+ (STRICT_ALIGNMENT): Redefine, to be 1 if -mstrict-align used.
+
+Wed Feb 15 13:03:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * libgcc2.c: Repair botch in application of patch.
+
+Tue Feb 14 16:00:52 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * tree.c (get_set_constructor_bytes): New function. Replaces ...
+ (get_set_constructor_words): ... removed old function.
+ * tree.h: get_set_constructor_words -> get_set_constructor_bytes.
+ * expr.c (store_constructor): Don't use get_set_constructor_words.
+ * varasm.c (const_hash): Add support for SET_TYPE constructors.
+ (record_constant_1): Likewise.
+ (copy_constant): Likewise.
+ (output_constant): Likewise. (Also SET_TYPE INTEGER_CSTs.)
+
+Tue Feb 14 08:05:07 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (stabilize_reference_1): No longer static.
+ * tree.h (stabilize_reference_1): Add declaration.
+
+Mon Feb 13 19:37:15 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/mips/gnu.h: Rewritten to use ELF object format.
+ * config/gnu.h (GNU_CPP_PREDEFINES): New macro.
+ * config/i386/gnu.h (CPP_PREDEFINES): Use GNU_CPP_PREDEFINES macro.
+ * config/i386/gnuelf.h: Likewise.
+
+Mon Feb 13 14:06:04 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * libgcc2.c (__default_new_handler): Don't call write if
+ inhibit_libc is defined.
+ (__pure_virtual): Ditto.
+
+Mon Feb 13 16:42:38 1995 Doug Evans <dje@cygnus.com>
+
+ * a29k/a29k-udi.h (DBX_DEBUGGING_INFO): Define.
+ (PREFERRED_DEBUGGING_TYPE): Define.
+
+ * expmed.c (store_split_bit_field): If value is VOIDmode,
+ pass word_mode to force_reg.
+
+ * varasm.c (function_section): New function.
+ (assemble_start_function): Call it.
+ * output.h (function_section): Declare it.
+ * final.c (final_scan_insn): Call function_section instead of
+ text_section.
+ * dwarfout.c (dwarfout_begin_block): Likewise.
+ (dwarfout_end_block): Likewise.
+ (dwarfout_label): Likewise.
+ (dwarfout_begin_function): Likewise.
+ (dwarfout_end_function): Likewise.
+ (dwarfout_line): Likewise.
+
+ * flow.c (find_basic_blocks): Revise calculation of when to
+ make another pass.
+
+ * libgcc2.c (exit): Don't call __do_global_dtors if
+ INIT_SECTION_ASM_OP and OBJECT_FORMAT_ELF.
+
+ * Makefile.in (libgcc1.S): New target.
+
+Mon Feb 13 12:45:11 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * tree.c (permanent_allocation): Pop function_maybepermanent_obstack,
+ not hardwired &maybepermanent_obstack.
+
+Mon Feb 13 12:10:31 1995 J.T. Conklin <jtc@netbsd.org>
+
+ * config/netbsd.h: Changed so that macro definitions used when gcc
+ is integrated into the NetBSD source tree are not defined unless
+ NETBSD_NATIVE is defined too.
+
+ * configure (*-netbsd-*): Rename netbsd config files so that they don't
+ have the machine type in them.
+ * i386/netbsd.h: Renamed from i386/netbsd-i386.h.
+ * m68k/netbsd.h: Renamed from m68k/netbsd-m68k.h.
+ * ns32k/netbsd.h: Renamed from ns32k/netbsd32k.h.
+
+Mon Feb 13 15:05:09 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * collect2.c (main): Remember all the .o files specified on the
+ command line, and scan them directly if COLLECT_SCAN_OBJECTS.
+ * rs6000/rs6000.h (COLLECT_SCAN_OBJECTS): Define.
+
+ * stmt.c (warn_if_unused_value): Don't warn about dereferenced
+ references.
+
+Mon Feb 13 14:00:51 1995 Jim Wilson <wilson@mole.gnu.ai.mit.edu>
+
+ * m68k.h (RTX_COSTS): Fix typo from last change.
+
+ * reload1.c (last_spill_reg): Move definition to top of file.
+ Don't initialize here.
+ (reload): Intialize here to -1.
+
+Mon Feb 13 09:29:49 1995 Paul Eggert <eggert@twinsun.com>
+
+ * fixinc.svr4 (longlong_t, u_longlong_t):
+ Work around bug in Solaris 2.4 <sys/types.h>.
+
+Mon Feb 13 08:31:18 1995 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000.h, powerpc.h (CPP_SPEC): Define _POSIX_SOURCE if -posix.
+
+ * rs6000.md (extendsfdf2): Undo 30 Nov 94 change. Use float_extend
+ instead of SUBREG and restore fmr instruction for differing FPRs.
+
+Mon Feb 13 05:25:09 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * convert.c (convert_to_{pointer,real,integer,complex}):
+ Handle references.
+
+Mon Feb 13 08:14:10 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-parse.in (ALIGN): Remove unused token.
+
+ * loop.c (mark_loop_jump): Remove bogus assignments to LABEL_
+ fields in default case.
+
+Mon Feb 13 07:55:30 1995 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * a29k.h (TARGET_MULTM): New #define.
+ (TARGET_SWITCHES): Recognize "-mno-multm".
+ * a29k.md (smulsi3_highpart, umulsi3_highpart, mulsidi3, umulsidi3):
+ Make these conditional on TARGET_MULTM.
+
+ * a29k.md (multm matcher): Delete.
+ (multmu matcher): Delete.
+ (mulsidi3 DEFINE_SPLIT): Generate RTL for smulsi3_highpart instead of
+ for deleted pattern. Fix typo in preparation code.
+ (umulsidi3 DEFINE_SPLIT): Analogous change.
+
+Mon Feb 13 07:09:02 1995 Peter Flass (FLASS@LBDRSCS.BITNET)
+
+ * i370/mvs.h (ASM_OUTPUT_ASCII): Don't duplicate first char.
+
+Mon Feb 13 06:51:07 1995 Samuel A. Figueroa (figueroa@CS.NYU.EDU)
+
+ * i386/os2.h (OBJECT_SUFFIX): New macro.
+ (LIB_SPEC, STARTFILE_SPEC): Adjust to include better set of libs.
+
+ * i386/xm-os2.h (DIR_SEPARATOR): Define if not already.
+ (strcasecmp): New definition.
+
+ * toplev.c (main): Look at DIR_SEPARATOR for finding last component.
+ * cccp.c (do_include, is_system_include, open_include_file):
+ Handle DIR_SEPARATOR.
+
+Sun Feb 12 20:20:28 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * config/sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Check to make
+ sure DECL is non-null before trying to reference it.
+ * config/mips/elf64.h (ASM_OUTPUT_SECTION_NAME): Likewise.
+
+Sun Feb 12 19:55:45 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * calls.c (expand_call): Add missing paren in last change.
+
+Sat Feb 11 18:09:27 1995 Jim Wilson <wilson@cygnus.com>
+
+ * libgcc2.c (L_fixunsxfsi, L_fixunsdfsi, L_fixunssfsi): Undef
+ normal types before including limits.h.
+
+ * calls.c (expand_call): When setting n_named_args, depend on new
+ macro STRICT_ARGUMENT_NAMING.
+
+ * expr.c (expand_builtin, case BUILT_IN_NEXT_ARG): Don't warn when
+ no argument if this is a varargs routine.
+
+Sat Feb 11 16:08:13 1995 Samuel A. Figueroa (figueroa@CS.NYU.EDU)
+
+ * gcc.c (specs): Use %O instead of "o" for object file suffix.
+ (do_spec_1, case 'O'): New option.
+
+Sat Feb 11 14:58:19 1995 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k/mot3300.h (RETURN_IN_MEMORY): Fix error in last change.
+
+Sat Feb 11 13:09:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cexp.y (%union): Delete VOIDVAL and SVAL; unused.
+
+ * c-decl.c (grokdeclarator): Use NAME, not IDENTIFIER_POINTER
+ of DECLARATOR for error messages; DECLARATOR might be null.
+
+ * expmed.c (expand_divmod): Always call expand_twoval_binop with
+ psuedos as targets.
+
+Fri Feb 10 14:55:05 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * caller-save.c: Replace MAX_UNITS_PER_WORD with MIN_UNITS_PER_WORD.
+ * h8300.h, mips.h, rs6000.h, sparc.h: Likewise.
+
+ * alpha.c (direct_return): Can't if have outgoing args.
+
+ * expr.c (store_constructor, ARRAY_TYPE): Use code for
+ non-integer INDEX for non-integer ELTTYPE size.
+ Allow INDEX to be zero in code and divide size by BITS_PER_UNIT.
+
+ * fold-const.c (fold): Don't modify tree with newly-allocated
+ nodes; instead make new tree in those cases.
+
+Wed Feb 8 15:13:49 1995 Doug Evans <dje@cygnus.com>
+
+ * sparc/sparc.c (v9_regcmp_p): New function.
+ (v9_regcmp_op): Call it.
+ * sparc/sparc.md (movsicc): New pattern.
+ (movdicc, movsfcc, movdfcc, movtfcc): Likewise.
+
+ * sparc/sparc.c (sparc64_initialize_trampoline): Use gen_flush
+ instead of knowing what pattern looks like.
+
+ * sparc/sparc.md (nonlocal_goto): Use Pmode instead of SImode.
+
+Wed Feb 8 10:05:11 1995 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>
+
+ * config.sub: Add a blank in the #! line for 4.2BSD, Dynix, etc.
+
+Wed Feb 8 02:52:21 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * pa.md (call, call_value): Emit save of the PIC register
+ with "emit_insn" before emitting the call insn itself.
+
+Tue Feb 7 15:19:40 1995 Jim Wilson <wilson@cygnus.com>
+
+ * sh.c (prepare_scc_operands, from_compare): Force constant 0 into
+ register for unsigned comparisons.
+
+ * sh.c: Correct errors in comments.
+ (calc_live_regs, expand_acall): Delete TARGET_SMALLCALL support.
+ (need_slot): Add comment. Delete test of INSN_ANNULLED_BRANCH_P.
+ (print_operand_address): Delete '*', '^', '!' support.
+ (synth_constant): Call zero_extend* instead of and*. Call ashlsi3_k
+ instead of ashlsi3_n.
+ (prepare_scc_operands): Abort for NE case.
+ (output_move_double, output_far_jump, output_branch): Delete commented
+ out code. Don't output assembler comments.
+ (gen_ashift): Don't call addsi3.
+ (fixit): Delete redundant test for QImode constants.
+ (hi_const): Delete TARGET_SHORTADDR support.
+ (find_barrier): Don't put constant pool between mova and its label.
+ (add_function, seen_function, bsr_operand, mac_operand,
+ fake_shift): Delete.
+ (sh_expand_prologue, expand_acall): Delete TARGET_BSR support.
+ (general_movsrc_operand): Don't reject non-I CONST_INT.
+ * sh.h: Correct errors in comments.
+ (CONDITIONAL_REGISTER_USAGE): Delete TARGET_NOSAVE support.
+ (TARGET_MAC, TARGET_TRYR0, TARGET_NOSAVE, TARGET_SMALLCALL,
+ TARGET_PARANOID, TARGET_RETR2, TARGET_SHORTADDR, TARGET_BSR): Delete.
+ (TARGET_SWITCHES): Delete above options.
+ (OVERRIDE_OPTIONS): Delete TARGET_BSR support.
+ (FUNCTION_BOUNDARY): Use 32 bit alignment when not TARGET_SMALLCODE.
+ (FIRST_RET_REG): Delete TARGET_RETR2 support.
+ (MODE_DISP_OK_[21]): Delete TARGET_TRYR0 support.
+ (EXTRA_CONSTRAINT_U): Delete.
+ (CONST_COSTS): For logical operations, give L constants cost 1.
+ (PRINT_OPERAND_PUNCT_VALID_P): Delete '*', '^', '!'.
+ * sh.md: Correct errors in comments. Delete all assembler comments.
+ Delete commented out patterns. Delete all peepholes but two.
+ Delete all define_splits but one. Delete all `combiner' patterns.
+ (mpy): Correct multiply latencies.
+ (needs_delay_slot, hit_stack, interrupt_function, in_delay_slot,
+ define_delay): Correct and/or simplify all reorg related definitions.
+ (addsi3_real): Delete.
+ (addsi3): Use arith_operand for argument 1.
+ (mulhisi3): Use arith_reg_operand not mac_operand.
+ (and_ffff, and_ff): Delete.
+ (andsi3): Handle constant 255 specially.
+ (rot*): Correct and/or simplify all rotate patterns.
+ (ashlsi3_k): Delete clobber of T bit. Output add for 1 bit shift.
+ (ashlsi3_n, lshrsi3_n): Delete use of fake_shift.
+ (negc): Correct pattern by adding set of T bit.
+ (extend*): Delete 'u' and 'U' constraint cases.
+ (pop): Separate 'l' and 'x' constraint cases.
+ (movsi-1): Better code for move to T bit case.
+ (bsr, bsr_value, mac): Delete.
+
+Tue Feb 7 14:23:52 1995 Doug Evans <dje@cygnus.com>
+
+ * sparc/sparc.md (*): Give names to all anonymous patterns.
+
+Mon Feb 6 23:41:09 1995 Stephen L Moshier <moshier@world.std.com>
+
+ * sparc/sysv4.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE): Remove
+ tests for host == target format and endianness.
+
+Mon Feb 6 16:52:38 1995 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * i386.h (RTX_COSTS): Rewrite.
+
+ * m68k/lb1sf68.asm (__udivsi3, __divsi3, __umodsi3, __modsi3):
+ Rewrite to actually work for more than a few small operands,
+ and to be reasonably small.
+ (__mulsi3): Eliminate usage of link register (i.e. a6).
+ (shift patterns): Delete.
+ (__umulsi3): Delete.
+ * t-m68kbare (LIB1ASMFUNCS): Remove _umulsi3.
+ * t-vxworks68: Likewise.
+
+Mon Feb 6 15:22:39 1995 Jim Wilson <wilson@cygnus.com>
+
+ * ginclude/va-i960.h (va_start): Add __builtin_next_arg call.
+
+ * sh/sh.c (sh_function_arg): Don't reject unaligned structures.
+ (sh_function_arg_partial_nregs): Likewise.
+
+ * sparc/sparc.md (movsf-1, movdf-1, movtf-1): Use 'F' not 'E'.
+
+ * sparc/sol2.h (STARTFILE_SPEC): Delete explicit /usr/ccs/lib/
+ pathnames.
+
+ * reload1.c (alter_reg): New variable stack_slot. Apply anti
+ BYTES_BIG_ENDIAN correction to stack slot address stored in
+ spill_stack_slot.
+
+ * jump.c (jump_optimize): When searching for a LOOP_END note to move,
+ stop if we find a LOOP_BEG note first.
+
+Mon Feb 6 15:03:35 1995 Doug Evans <dje@cygnus.com>
+
+ * i386/sysv3.h (DBX_DEBUGGING_INFO): Define.
+ (PREFERRED_DEBUGGING_TYPE): Define.
+
+Mon Feb 6 11:56:14 1995 Jeffrey A. Law <law@mole.gnu.ai.mit.edu>
+
+ * pa.md: Replace "misc" attribute with "multi" in recentlyadded
+ soft-float code.
+
+ * pa-osf.h (TARGET_DEFAULT): Protect definition.
+
+Mon Feb 6 11:52:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * fixincludes: When changing <assert.h> to include <stdio.h> or
+ <stdlib.h>, make it include them only for C++.
+
+Sun Feb 5 21:39:41 1995 Torbjorn Granlund <tege@cygnus.com>
+
+ * pa.c (globally): Use GEN_INT.
+ (emit_move_sequence): Use expand_inc instead of plus_constant
+ (generates less rtl).
+ * pa.md (globally): Use GEN_INT.
+
+ * pa.h (PREDICATE_CODES): Fix many errors. Enable.
+
+ * m68k.h (RTX_COSTS): Add special cases for a plain 68000.
+
+ * expmed.c (mul_cost, div_cost): New variables.
+ (mul_widen_cost, mul_highpart_cost): New variables.
+ (init_expmed): Init new variables.
+ (expand_mult_highpart): New argument, MAX_COST.
+ Use new argument in several places. Simplify code that tries
+ widening multiply variants.
+ (expand_divmod): New variables MAX_COST, EXTRA_COST.
+ Initialize MAX_COST dependent on REM_FLAG.
+ Calculate and pass cost in all calls of expand_mult_highpart.
+
+Sat Feb 4 13:19:29 1995 Jim Wilson <wilson@cygnus.com>
+
+ * mips/abi64.h, mips/cross64.h, mips/iris6.h: New files.
+ * mips/iris5.h (TARGET_DEFAULT): Add #ifndef/#endif around define.
+ * mips/mips.c (mips_isa_string): Add mips4 to comment.
+ (large_int): Delete code for handling 64 bit constants.
+ (mips_const_double_ok): For irix6, reject all floating point constants.
+ (mips_move_2words): Use dli not li for 64 bit constants.
+ Use dla not la for 64 bit addresses.
+ (output_block_move): Likewise.
+ (function_arg): Add support for 64bit ABI.
+ (override_options): Add support for mips4 and R8000.
+ (print_operand): Handle new modifiers 'B', 'b', 'T', 't'.
+ Make 'X' case work for 64 bit host.
+ (mips_output_filename): Use ASM_OUTPUT_FILENAME.
+ (mips_asm_file_start): Go to text section for 64bit ABI.
+ (compure_frame_size, save_restore_insns, function_prologue,
+ mips_expand_prologue, function_epilogue): Add support for 64 bit ABI.
+ (type_dependent_reg, mips_function_value): New functions.
+ * mips/mips.h (__PTR_TO_INT, __INT_TO_PTR): Delete.
+ (enum processor_type): Add R8000.
+ (mips_isa_string, CC1_SPEC): Add mips4 to comment.
+ (CONDITIONAL_REGISTER_USAGE): Use SUBTARGET_CONDITIONAL_REGISTER_USAGE.
+ (SUBTARGET_CONDITIONAL_REGISTER_USAGE): New macro.
+ (ASM_SPEC, LINK_SPEC, CPP_SPEC): Add mips4 support.
+ (MIPS_TEMP[12]_REGNUM): Change to avoid clobbering 64bit abi
+ parameter registers.
+ (SMALL_INT, SMALL_INT_UNSIGNED, CONST_OK_FOR_LETTER_P): Fix for 64
+ bit host.
+ (ABI_64BIT): New macro.
+ (REG_PARM_STACK_SPACE): Use UNITS_PER_WORD not 4.
+ (GO_IF_LEGITIMATE_ADDRESS, CONSTANT_ADDRESS_P, LEGITIMATE_CONSTANT,
+ LEGITIMIZE_ADDRESS): Don't allow CONST addresses for Irix6.
+ (ASM_OUTPUT_FILENAME): New macro.
+ (ASM_OUTPUT_ADDR_DIFF_ELT): Add 64 bit ABI support.
+ * mips/mips.md (type attribute): Add fmadd.
+ (cpu attribute): Add r8000.
+ (umaddi+1, ..., umadddi+8): Add pattern for multiply accumulate.
+ (movdi): Legitimize addresses, just like movsi does.
+ (loadgp): New pattern for 64 bit ABI.
+ (shift patterns): Use INTVAL instead of XINT for constants.
+ (jump, tablejump_interal[12]): Add 64 bit ABI support.
+ (movsicc-8, ..., movsicc): Add patterns for conditional moves.
+ * mips/t-cross64, mips/t-iris6, mips/x-iris6, mips/xm-iris6.h:
+ New files.
+ * configure: Add irix6 and irix5cross64 configurations.
+ * ginclude/va-mips.h (*): Change __mips==3 to __mips>=3.
+ (sgidefs.h): Include if _MIPS_SIM is defined.
+ (va_start): Add support for 64 bit ABI.
+
+Sat Feb 4 10:31:37 1995 Doug Evans <dje@cygnus.com>
+
+ * dbxout.c (dbxout_source_file): Don't switch to text section if
+ in function with section attribute. Print Ltext label to correct
+ file (important on mips).
+
+Fri Feb 3 14:43:23 1995 Michael Meissner (meissner@cygnus.com)
+
+ * rs6000/rs6000.md (call, call_value): If building for System V.4
+ or eABI, function pointers are just pointers, not pointers to a
+ three word area.
+
+Thu Feb 2 15:50:26 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * fixincludes: When fixing bool in <curses.h>, permit whitespace
+ before the semicolon. Needed on AIX 3.2.5.
+
+Thu Feb 2 12:06:12 1995 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000.md (smax:SF define_split): Change match_operand typo to
+ match_dup.
+ (smin:SF define_split): Likewise.
+ (smax:DF define_split): Likewise.
+ (smin:DF define_split): Likewise.
+
+Wed Feb 1 16:50:18 1995 Michael Meissner (meissner@cygnus.com)
+
+ * config.sub: Add support for powerpc-*-{elf,svr4,eabi}.
+ * configure: Ditto.
+
+ * rs6000/xm-sysv4.h: New file, to support building GCC for a
+ System V.4 PowerPC system.
+ * rs6000/sysv4.h: Ditto.
+ * rs6000/x-sysv4: Ditto.
+
+ * rs6000/eabi.h: New file, to support building GCC for an embedded
+ PowerPC system.
+
+ * rs6000/rs6000.h (TARGET_SWITCHES): Add -mmultiple, -mno-multiple
+ to control emitting load/store multiple instructions. On the
+ power, this is on by default, and on the powerpc it is off.
+ (SUBTARGET_SWITCHES): New macro, which defaults to nothing to
+ allow a subtarget to add new switches.
+ (SAVE_FP_*, RESTORE_FP_*): New macros that give the prefix and
+ suffix to use for the functions that save and restore the floating
+ point registers.
+
+ * rs6000/rs6000.c (output_prolog): Use TARGET_MULTIPLE instead of
+ TARGET_POWER to control whether to emitt load/store multiple
+ instructions. Use the SAVE_FP_*/RESTORE_FP_* macros instead of
+ using the hardwired AIX names for the functions to save and
+ restore the floating point registers.
+ (output_epilog): Likewise.
+ (print_operand_address): Do not prepend a '.' for %z when using
+ the ELF object file format.
+ (svr4_traceback): New function to emit the word before the
+ procedure prologue that System V.4 expects to do tracebacks.
+ (output_prolog): Call svr4_traceback under ELF systems.
+ (output_epilog): Omit AIX style traceback tables for ELF systems.
+ (output_function_profiler): Abort for now in the ELF case.
+
+ * rs6000/rs6000.md (load_multiple, store_multiple): Test against
+ TARGET_MULTIPLE instead of TARGET_POWER.
+
+Tue Jan 31 19:27:43 1995 Torbjorn Granlund <tege@cygnus.com>
+
+ * pa.h (REAL_ARITHMETIC): Define.
+ (ASM_OUTPUT_DOUBLE): Rewrite.
+ (ASM_OUTPUT_FLOAT): Rewrite.
+ * pa.md (SF and DF move): Use constraint 'E' instead of 'F'.
+ * pa.c (singlemove_string): Make case with SFmode CONST_DOUBLE abort.
+ (print_operand): #ifdef out CONST_DOUBLE cases.
+
+Tue Jan 31 19:27:43 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * pa/pa.h (TARGET_SOFT_FLOAT): New macro.
+ (TARGET_SWITCHES, CPP_SPEC, CONDITIONAL_REGISTER_USAGE, FUNCTION_VALUE,
+ LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P,
+ FUNCTION_ARG, ASM_DECLARE_FUNCTION_NAME, GO_IF_LEGITIMATE_ADDRESS,
+ RTX_COSTS): Use TARGET_SOFT_FLOAT.
+ * pa/pa.md (*sf*, *df*, etc): Make all floating point patterns depend
+ on ! TARGET_SOFT_FLOAT.
+ (movsi, movdi, movsf, movdf): Add patterns for TARGET_SOFT_FLOAT.
+
+Tue Jan 31 15:53:04 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * toplev.c (lang_options): Add -f{no-,}check-new.
+
+Tue Jan 31 13:55:37 1995 Doug Evans <dje@cygnus.com>
+
+ * mips/mips.h (ASM_DECLARE_FUNCTION_NAME): Ensure section is .text if
+ no section attribute.
+ * mips/elf64.h (ASM_OUTPUT_SECTION_NAME): Use asm_out_text_file for
+ functions.
+
+Tue Jan 31 13:26:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * libgcc2.c: Include <limits.h>, not "glimits.h".
+
+Mon Jan 30 16:34:24 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * c-common.c (type_for_size): Try to match on int before other
+ types (which might be the same size).
+ (type_for_mode): Ditto.
+
+Sat Jan 28 16:28:15 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): #undef before
+ defining.
+
+Sat Jan 28 13:54:23 1995 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (call, call_value): Always save the PIC register before
+ a call.
+
+Sat Jan 28 07:31:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-typeck.c (c_expand_return): Refine check for returning pointer
+ to local variable to allow subtracting a pointer from it.
+
+ * calls.c (expand_call): When emitting queue for each arg,
+ call protect_from_queue; put in initial_value so EXPR_LIST in
+ is_const case won't have QUEUED.
+
+Sat Jan 28 04:36:46 1995 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (call_internal_reg): Use an even faster sequence for
+ TARGET_FAST_INDIRECT_CALLS.
+ (call_value_internal_reg): Likewise.
+
+Fri Jan 27 21:28:51 1995 Ronald F. Guilmette (rfg@segfault.us.com)
+
+ * config.sub (unixware, svr4): Treat as synonyms for sysv4.
+
+Fri Jan 27 19:36:13 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/i386/gnuelf.h: New file.
+
+Fri Jan 27 16:55:05 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * libgcc1.c (perform_lshlsi3, __lshlsi3): Deleted.
+ * libgcc2.c (__lshldi3): Deleted.
+ * Makefile.in (LIB1FUNCS): Delete _lshlsi3.
+ (LIB2FUNCS): Delete _lshldi3.
+
+ * expr.c (expand_expr, case MINUS_EXPR): Remove bogus operand swap.
+
+ * optabs.c (expand_binop): Add missing test for VOIDmode
+ before calling convert_to_mode.
+
+ * final.c (high_{block,function}_linenum): New variables.
+ (final_start_function): Initialize them.
+ (final_end_function): Pass highest line number to function end
+ debugging routines.
+ (final_scan_insn): Pass highest line number in block to block end
+ debugging function.
+ (output_source_line): Update highest line in block and function.
+
+Thu Jan 26 03:46:35 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * configure (i[345]86-*linux*): Set $extra_parts if $elf.
+ (*-*-gnu*): Likewise.
+
+Wed Jan 25 18:11:19 1995 Jim Wilson <wilson@cygnus.com>
+
+ * sh.c (prepare_scc_operands): Force sh_compare_op1 to a register if
+ it is an invalid constant.
+ (output_branch): Add cases for 4, 8, and 18. Correct branch offsets
+ in comments.
+ (find_barrier): Correct test for move instructions that need to be
+ fixed by verifying that the set source is a bad constant.
+ (arith_reg_or_0_operand): New function.
+ * sh.h (CONST_OK_FOR_LETTER_P): Add case for 'N'. Correct comment.
+ (ADJUST_INSN_LENGTH, SHORTEN_WITH_AJUST_INSN_LENGTH): New macros.
+ * sh.md (define_attr type): Combine pcloadsi and pcloadhi into pcload.
+ (*): Likewise for all patterns that use them.
+ (define_attr length): Delete cases for pcloadsi and pcloadhi.
+ Modify branch offsets and lengths to be correct. Correct comment.
+ (*): Correct length attributes for all patterns.
+ (in_delay_slot): Delete maybe value. Change default case from yes to
+ no. Delete case for lengths of 4, 6, 8, 10, and 12.
+ (cmpeq_0, cmpeq_0-1, cmpeq_0-2): Delete patterns.
+ (cmpeqsi_t): Delete case with constant as first operand.
+ (cmpgtsi_t, cmpgesi_t): Use arith_reg_or_0_operand not arith_operand.
+ Put register cases first.
+ (cmpgeusi_t, cmpgtusi_t): Delete cases for comparing against zero.
+ (jump): Call output_far_jump if insn length >= 14 instead of == 14.
+ (casesi): Use arith_reg_operand not arith_operand for operand 2.
+
+ * fixincludes (strings.h): Fix return type of strlen.
+
+ * expr.c (expand_expr, case MIN_EXPR): If must emit multiple
+ instructions, then don't allow a MEM target.
+
+Wed Jan 25 17:07:47 1995 Pat Rankin (rankin@eql.caltech.edu)
+
+ * cccp.c (do_include): For VMS, don't attempt to
+ treat `#include X' as `#include <X.h>' unless `X' has already been
+ macro expanded.
+ (main): For VMS, do a better job of picking out the base name from
+ argv[0]'s absolute name.
+ * vax/xm-vms.h (FAILURE_EXIT_CODE): Define.
+
+Wed Jan 25 14:50:45 1995 David S. Miller (davem@nadzieja.rutgers.edu)
+
+ * genattrtab.c (check_attr_value): Change error message text.
+ (simplify_test_exp): Likewise.
+ * stmt.c (expand_asm, expand_asm_operands): Likewise.
+ * mips.c (print_operand, print_operand_address): Likewise.
+ * dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise.
+ (limit_reload_class, double_reg_to_memory): Likewise.
+ (print_operand_address, emit_1600_core_shift): Likewise.
+ (gen_tst_reg, gen_compare_reg): Likewise.
+ * dsp16xx.md (compare): Likewise.
+ * unroll.c (find_splittable_givs): Likewise.
+
+Wed Jan 25 13:21:10 1995 Matthias Pfaller (leo@marco.de)
+
+ * configure (ns32k-pc532-netbsd): Use netbsd32k.h instead of netbsd.h.
+ * ns32k/netbsd32k.h: Renamed from netbsd.h.
+ Don't include ansi.h.
+ Include config/netbsd.h and delete definitions included from it.
+ * ns32k/xm-netbsd.h (HAVE_ATEXIT): Deleted.
+
+Wed Jan 25 12:53:40 1995 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k/mot3300.h (DEFAULT_PCC_STRUCT_RETURN): Define as zero.
+ (RETURN_IN_MEMORY): Small aggregates are to be returned in d0.
+
+Wed Jan 25 12:48:43 1995 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (handle_directive): Fix typo: '\' caused next char to
+ be copied blindly, which was an error if !traditional and if
+ the next char was newline or one of <\'"/.
+
+Wed Jan 25 08:15:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c: Include expr.h after insn-config.h and insn-flags.h.
+
+Tue Jan 24 23:19:28 1995 Doug Evans <dje@cygnus.com>
+
+ Improved conditional move support from Richard Earnshaw.
+ * optabs.c (movcc_gen_code): New variable.
+ (init_optabs): Initialize it.
+ (emit_conditional_move): New function.
+ (can_conditionally_move_p): New function.
+ * combine.c (simplify_set): Call it.
+ * expr.h: (emit_conditional_move): Declare it.
+ (can_conditionally_move_p): Likewise.
+ (movcc_gen_code): Likewise.
+ * genopinit.c (optabs): Add entry for movcc_gen_code.
+ * genconfig.c (main): Delete #ifndef around HAVE_conditional_move.
+ * jump.c (jump_optimize): Try to emit a conditional move insn before
+ trying a store-flag insn.
+ * alpha.md (movsicc): New named pattern.
+ (movdicc, movsfcc, movdfcc): Likewise.
+ (SImode conditional move): New matcher.
+ * sparc.h (HAVE_conditional_move): Delete.
+
+ * configure: Recognize and ignore --x-* options.
+
+Mon Jan 23 23:23:33 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Renamed from
+ ASM_OUTPUT_SECTION. The old name was a typo.
+ (ASM_OUTPUT_SECTION_NAME): Take proper number of args.
+
+Mon Jan 23 18:51:38 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * collect2.c (main): Check LD_INIT_SWITCH and LD_FINI_SWITCH
+ separately.
+ (scan_prog_file): Don't add shared library initializers or
+ finalizers to list if LD_INIT_SWITCH or LD_FINI_SWITCH are
+ defined, respectively.
+
+Mon Jan 23 18:45:13 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/mips/mips.c (override_options): Permit any small integral
+ mode in the HI/LO registers.
+
+Mon Jan 23 15:41:10 1995 Steve Chamberlain <sac@cygnus.com>
+
+ * h8300.md (table_jump_h8300, table_jump_h8300h): Constrain
+ operand to use register.
+
+Sat Jan 21 00:01:08 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * configure (*-*-gnuelf*): Set elf=yes.
+ (*-*-gnu*): Use ${cpu_type}/gnuelf.h under --with-elf.
+
+Fri Jan 20 20:11:17 1995 Jim Wilson <wilson@cygnus.com>
+
+ * combine.c (num_sign_bit_copies): Can handle paradoxical subreg only
+ if LOAD_EXTEND_OP is defined to SIGN_EXTEND.
+
+ * loop.c (record_giv): Initialize new field same_insn.
+ * loop.h (structure induction): Add new field same_insn.
+ * unroll.c (copy_loop_body): When check for shared address givs, use
+ new same_insn field.
+ (find_splittable_givs): New variable v2. Scan givs to set new
+ same_insn field. Use same_insn to indentify address givs to be
+ shared.
+
+ * flow.c (find_basic_blocks): No longer need to check for deleted
+ nonlocal_labels.
+ * function.c (delete_handlers): When clear LABEL_PRESERVE_P,
+ also remove label from nonlocal_label list.
+ * integrate.c (save_for_inline_copying): Add comment that
+ nonlocal_label list should be updated if it ever can be nonzero.
+
+ * sdbout.c (syms.h): Don't include under Linux.
+
+ * loop.c (scan_loop): For the replace_rtx call, copy the rtx that is
+ being substituted in before the call.
+
+ * sh.c (machine_dependent_reorg): When remove SUBREG, add in
+ SUBREG_WORD to new register number.
+
+ * sh.c (multcosts): Do not compute cost of constant power-of-two
+ multiplies as if they were shifts. Reduce multiply cost from 5 to 3.
+ Delete variable insn_cost.
+
+Fri Jan 20 14:21:49 1995 Mike Stump <mrs@cygnus.com>
+
+ * stmt.c (expand_cleanups): Add 4th argument to indicate if code
+ needs to be expanded for the cleanup.
+ (expand_goto_internal): Ditto.
+ (bc_expand_goto_internal): Ditto.
+ (fixup_gotos): Ditto.
+ (expand_end_bindings): Ditto. We now always call expand_cleanups,
+ even after BARRIERs, so that the call to the exception handling
+ routines is always done.
+
+Thu Jan 19 18:39:14 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/mips/mips.h (MASK_SINGLE_FLOAT): Define.
+ (MASK_MAD): Define.
+ (TARGET_SINGLE_FLOAT, TARGET_DOUBLE_FLOAT): Define.
+ (TARGET_MAD): Define.
+ (TARGET_SWITCHES): Add single-float, double-float, mad, no-mad,
+ 4650.
+ (ASM_SPEC): For gas, pass down -m4650, and pass -m4650 if -mmad is
+ used.
+ (CC1_SPEC): If -mips3 is used, only set -mfp64 if neither
+ -msingle-float nor -m4650 are used. Don't permit both -mfp64 and
+ -msingle-float, or both -mfp64 and -m4650. If -m4650 is used,
+ pass down -mcpu=r4650.
+ (FIXED_REGISTERS): Change HI and LO to not be fixed.
+ (HARD_REGNO_NREGS): If TARGET_SINGLE_FLOAT, use floating point
+ registers in 4 byte units, not 8 byte units.
+ (SECONDARY_RELOAD_CLASS): Define.
+ (mips_secondary_reload_class): Declare.
+ (LIBCALL_VALUE): If TARGET_SINGLE_FLOAT, only use FP_RETURN if the
+ mode size is <= 4.
+ (REGISTER_MOVE_COST): Use a cost of 12 when moving HI or LO to
+ anything other than a general register.
+ * config/mips/mips.c (function_arg): If TARGET_SINGLE_FLOAT, pass
+ DFmode arguments in general registers.
+ (override_options): Accept 4650 as a cpu type. If
+ TARGET_SINGLE_FLOAT, permit only small floating point modes in
+ floating point registers. Always permit SImode modes in HI/LO
+ registers.
+ (compute_frame_size): If TARGET_SINGLE_FLOAT, only save 4 bytes
+ per floating point register. Align the floating point register
+ save space to an eight byte boundary.
+ (save_restore_insns): If TARGET_SINGLE_FLOAT, save floating point
+ regisers in single precision.
+ (mips_secondary_reload_class): New function.
+ * config/mips/mips.md: Require TARGET_DOUBLE_FLOAT for all double
+ precision floating point insns. Change the multiplication insns
+ to be single instructions which set a register of class l or h or
+ x, as appropriate, rather than explicitly setting HI and/or LO.
+ Use define_expand to avoid generating a shift near a multiply on
+ the r4000. Use match_scratch in the division insns to clobber HI
+ and LO, rather than mentioning them explicitly. Add support for
+ r4650 mad and madu insns.
+ * config/mips/t-ecoff (MULTILIB_OPTIONS): Add mips1/mips3.
+ (MULTILIB_DIRNAMES): Add mips1 mips3.
+
+Wed Jan 18 07:43:53 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (stabilize_reference): Fix typo in last change.
+ * expr.c (get_inner_reference): Don't ignore CONVERT_EXPR from
+ non-UNION_TYPE to UNION_TYPE.
+ (expand_expr, case CONVERT_EXPR): Check for conversion to union
+ before checking for not changing mode.
+
+Tue Jan 17 22:33:27 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (stabilize_reference, case RTL_EXPR): New case.
+
+Tue Jan 17 18:42:44 1995 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (emit_move_sequence): Also handle displacements which
+ do not fit in 14 bits for fp load/store secondary reloads.
+
+Tue Jan 17 13:34:22 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ Avoid bogus errors for C++ lvalues.
+ * c-decl.c (init_decl_processing): Set pedantic_lvalues to pedantic.
+ * fold-const.c (pedantic_non_lvalue): Only force a non-lvalue if
+ pedantic_lvalues is set.
+ * tree.h: Declare pedantic_lvalues.
+
+ Generalize shared truthvalue code to allow for C++ bool.
+ * c-tree.h: Declare boolean_{type,true,false}_node.
+ * c-decl.c (init_decl_processing): Set up
+ boolean_{type,true,false}_node to equal
+ integer_{type,one,zero}_node.
+ * c-common.c (truthvalue_conversion): Use
+ boolean_{type,true,false}_node instead of
+ integer_{type,one,zero}_node.
+ (shorten_compare): Ditto.
+
+Mon Jan 16 07:11:50 1995 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (rescan): Fix typo that caused tokens to be glued
+ together improperly.
+
+Sun Jan 15 21:00:24 1995 Doug Evans (dje@cygnus.com)
+
+ * configure (vintmsg): Delete.
+
+Sat Jan 14 17:50:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (get_inner_reference): Only treat offset of PLUS_EXPR
+ as special if second arg is integer constant.
+
+Sat Jan 14 01:28:15 1995 Doug Evans (dje@cygnus.com)
+
+ * expmed.c (extract_bit_field, fields bigger than word case): Count
+ subwords in target. Zero remaining upper bits if unsigned.
+
+ * c-common.c (decl_attributes): Fix typo in packed ignored warning.
+ Fix unrecognized mode warning. Make string comparisons consistent.
+ Support machine attributes with arguments. Make noreturn/volatile
+ warnings consistent with others.
+
+ * a29k.h (INIT_CUMULATIVE_INCOMING_ARGS): Reserve two regs for
+ caller's lr0,lr1.
+ * a29k.c (incoming_reg): Keep regstack aligned to even boundary.
+
+Fri Jan 13 20:29:30 1995 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * sdbout.c (plain_type_1): For LONG_LONG_TYPE_SIZE, return T_[U]LONG
+ instead of 0 (i.e. T_VOID).
+
+ * optabs.c (expand_binop): Do not force constant shift-count to
+ a register, to allow possible widening; do not convert_to_mode
+ mode{1,2} or copy_to_mode_reg if mode{1,2} is VOIDmode.
+ * m68k.md (zero_extendsidi2): New pattern.
+ (extendqidi2, extendhidi2, extendsidi2, extendplussidi): New patterns.
+ (adddia_sexthishl32, adddid_sexthishl32): New patterns.
+ (adddi_dilshr32, adddi_dishl32, adddi_mem): New patterns.
+ (adddi3, subdi3): Allow more alternatives.
+ (subdia_sexthishl32, subdid_sexthishl32): New patterns.
+ (subdi_dishl32, subdi_mem): New patterns.
+ (negdi2): New pattern.
+ (ashldi_sexthi, ashldi_const32, ashldi_const, ashldi3): New patterns.
+ (subreg1ashrdi_const32, ashrdi_const32): New patterns.
+ (ashrdi_const32_mem, ashrdi_const, ashrdi3): New patterns.
+ (subreg1lshrdi_const32, lshrdi_const32, lshrdi_const, lshrdi3): Ditto.
+ (lshrsi_31): New pattern.
+ (lshrsi_16, lshrsi_17_24): New names for old unnamed patterns.
+
+ * m68k.c (use_movqi, const_method): New functions.
+ (const_int_cost, output_move_const_into_data_reg): Likewise.
+ (singlemove_string): Call output_move_const_into_data_reg.
+ * m68k.md (fullword move): Likewise.
+ * m68k.h (CONST_COSTS): Call const_int_cost.
+
+Fri Jan 13 20:17:55 1995 Oliver Kellogg (okellogg@salyko.cube.net)
+
+ * 1750a.h, 1750a.c: Remove use of function prototypes.
+
+Fri Jan 13 15:53:33 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * tree.h (DECL_STATIC_CONSTRUCTOR): New macro.
+ (DECL_STATIC_DESTRUCTOR): New macro.
+ (tree_decl): Add static_ctor_flag and static_dtor_flag.
+
+ * objc-act.c (finish_file): Renamed from objc_finish.
+
+ * c-parse.in (program): Call finish_file.
+
+ * c-decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
+ (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
+
+ * c-lang.c (finish_file): New function to emit code for calling
+ static constructor and destructor functions as necessary.
+
+ * c-common.c (decl_attributes): Support __attribute__s
+ "constructor" and "destructor".
+
+Fri Jan 13 19:38:08 1995 Paul Eggert <eggert@twinsun.com>
+
+ * gcc.c (execute): Don't wait for just any N subprocesses,
+ since we may have started with some subprocesses before we
+ started executing. Wait just for _our_ N subprocesses.
+
+Fri Jan 13 18:08:17 1995 John F Carr <jfc@mit.edu>
+
+ * gencodes.c, genemit.c, genflags.c (gen_insn): Ignore insns whose
+ names begin with '*'.
+ * genoutput.c (output_epilogue): Do not reference gen_ functions for
+ insns whose names begin with '*'.
+
+Fri Jan 13 17:54:42 1995 Wolfgang Formann (wolfi@exner.tgm.ac.at)
+
+ * i386/isc.h (ASM_FILE_START): New macro.
+
+Fri Jan 13 15:01:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-parse.in (unary_expr): If -pedantic, give error for &&.
+
+ * fold-const.c (fold, case COND_EXPR): Properly swap args 1 and 2.
+ Strip nops from ARG2, just like ARG1.
+ Make {MIN,MAX}_EXPR properly when type of result different than args.
+
+ * function.c (optimize_bit_field): Don't remove a SUBREG that
+ changes mode class.
+
+ * Makefile.in (stmp-multilib*): Pass CC and CFLAGS to recursive make.
+
+ * alpha/osf12.h (LINK_SPEC): Add missing "\".
+
+Thu Jan 12 13:37:13 1995 Jim Wilson <wilson@cygnus.com>
+
+ * i960/t-* (LIBGCC1, CROSS_LIBGCC1): Define to empty instead of
+ to libgcc1.null.
+ * mips/t-*, sparc/t-*: Likewise.
+
+Thu Jan 12 08:13:55 1995 Steve Chamberlain (sac@wombat.gnu.ai.mit.edu)
+
+ * libgcc2.c (__lshldi3, __lshrdi3, __ashldi3, __ashrdi3):
+ Shift count comes as a word, not as an SI. Keep temporary in
+ a word.
+ (__moddi3, __divdi3): Make negate flag `c' have word_type for
+ efficiency.
+
+Thu Jan 12 07:18:09 1995 Stephen L Moshier (moshier@world.std.com)
+
+ * real.c (toe64): Use Intel bit pattern for little-endian XFmode Inf.
+ (e64toe): Likewise; also check the exponent field properly.
+
+Wed Jan 11 14:24:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * toplev.c (lang_options): Add -f{no-,}gnu-keywords,
+ -f{no-,}operator-names.
+
+Tue Jan 10 19:16:07 1995 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000.h (REGISTER_MOVE_COST): Add LINK_OR_CTR_REGS class to
+ expensive moves.
+
+Tue Jan 10 19:07:36 1995 Jonathan Beimel (jbeimel@gomez.sc.intel.com)
+
+ * combine.c (simplify_if_then_else): Fix typo: "|" should be "||".
+
+Tue Jan 10 05:49:25 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold): Avoid infinite recursion caused by last change.
+
+Mon Jan 9 17:08:56 1995 Michael Meissner (meissner@cygnus.com)
+
+ * configure: All AIX versions [456789].* use the AIX 4.1 support.
+
+Mon Jan 9 13:21:07 1995 David Edelsohn <edelsohn@npac.syr.edu>
+
+ * rs6000/aix41ppc.h: New file.
+
+ * configure (powerpc-ibm-aix4.1*): Add support AIX version 4.1 on
+ the powerpc.
+
+Sat Jan 7 08:51:29 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * sparc.c (order_regs_for_local_alloc): Add casts to bcopy call.
+ (print_operand, case 'f'): New case.
+ (sparc_initialize_trampoline): Use gen_flush instead of knowing
+ what pattern looks like.
+ Use MEM instead of address in flush insn, so virtual reg
+ instantiation can update.
+ Ensure address in flush insn is valid.
+ * sparc.md (flush): Change to using a MEM instead of address.
+
+ * reorg.c (dbr_schedule): Add missing casts in bzero call.
+
+ * fold-const.c (fold, case CONVERT_EXPR): Don't remove an
+ integer conversion when outer is FP unless it doesn't change
+ signedness; rework code in this area to be clearer.
+
+Sat Jan 7 02:58:21 1995 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (enum processor_type): New enumeration describing the
+ processor to schedule for (700, 7100, 7100LC).
+ (pa_cpu_attr, TARGET_OPTIONS, OVERRIDE_OPTIONS): Define.
+ (pa_cpu_string, pa_cpu): Provide extern decls.
+ * pa.c (pa_cpu, pa_cpu_string): Provide definitions.
+ (override_options): New function.
+ (pa_adjust_cost): Handle PROCESSOR_7100 and PROCESSOR_7100LC
+ scheduling. Handle anti-dependendy cases involving fp division
+ and sqrt. Handle output dependencies correctly. Break TYPE_FPMUL
+ into TYPE_FPMULSGL and TYPE_FPMULDBL.
+ * pa.md (cpu attribute): New attribute.
+ Clean up comments for PROCESSOR_700 scheduling info. Slightly
+ simplify. Make conditional on PROCESSOR_700.
+ Add comments and scheduling information for PROCESSOR_7100 and
+ PROCESSOR_7100LC. Set types for instructions which use the shifter
+ to "shift". Explicitly set lengths and types for all instructions.
+ Break type "fpmul" into "fmulsgl" and "fpmuldbl".
+
+Fri Jan 6 17:50:48 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh/sh.h (DO_GLOBAL_CTORS_BODY): Run constructors from right to
+ left not left to right.
+ * h8300/h8300.h: Likewise.
+
+Thu Jan 5 12:37:26 1995 Doug Evans <dje@cygnus.com>
+
+ * loop.c (get_condition): Use CONST0_RTX instead of const0_rtx.
+
+Wed Jan 4 04:26:23 1995 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (call expander): Use emit_insn_before to emit an insn to
+ save the PIC register before a function call.
+ (call_value expander): Likewise.
+
+Tue Jan 3 15:23:49 1995 Jim Wilson <wilson@cygnus.com>
+
+ * va-mips.h (va_arg, mips3 case): Use __PTRDIFF_TYPE__ not int in
+ casts.
+
+ * c-decl.c (duplicate_decls): Push to correct obstack before
+ creating new function types.
+
+Fri Dec 30 16:12:52 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * fixinc.svr4: Remove special patch for <netinet/in.h>.
+
+Fri Dec 30 08:00:53 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * varasm.c: Include output.h.
+ Add prototyes for all static functions; remove forward declarations
+ of non-static functions.
+ (assemble_variable): Add missing arg decl.
+ (bc_make_decl_rtl, const_hash, const_hash_rtx): Now static.
+ (output_addressed_constants, output_constructor): Likewise.
+ (bc_output_constructor): Add missing argument.
+ (output_byte_asm): Delete, unused.
+ * output.h: Add decls of functions in varasm.c.
+ Allow to be included when rtl.h is not.
+ * function.h ({save_restore}_varasm_status): Add decls.
+ * c-decl.c, c-typeck.c, toplev.c: Include output.h.
+ * Makefie.in (c-decl.o, c-typeck.o, toplev.o, varasm.o): Likewise.
+
+Thu Dec 29 21:48:03 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * calls.c (expand_call): Set MEM_IN_STRUCT_P as needed on return
+ value from assign_stack_temp.
+ (store_one_arg): Likewise.
+ * expr.c (save_noncopied_parts): Likewise.
+ (expand_expr): Likewise.
+ * function.c (assign_parms): Likewise.
+ * integrate.c (expand_inline_function): Likewise.
+ * stmt.c (expand_decl): Likewise.
+
+Thu Dec 29 14:06:34 1994 Jim Wilson <wilson@cygnus.com>
+
+ * cse.c (simplify_unary_operation): Cast constant 1 to HOST_WIDE_INT
+ before shifting left to form mask.
+ * gcc.c (print_multilib_info): Initialize last_path_len to 0.
+ * varasm.c (output_constructor): Change type of variable value to
+ HOST_WIDE_INT.
+
+ * expmed.c (expand_mult_highpart): Use convert_modes instead of
+ gen_lowpart to do conversions.
+
+Thu Dec 29 13:42:08 1994 Mike Stump <mrs@cygnus.com>
+
+ * toplev.c (lang_options): Add -frtti flag for rtti support in C++.
+
+Wed Dec 28 22:04:42 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * config/pa/lib2funcs.asm: New file.
+ * config/pa/t-pa (LIB2FUNCS_EXTRA): Define.
+ * config/pa/pa.h (DO_GLOBAL_DTORS_BODY): Define. Include a
+ reference to __gcc_plt_call so __gcc_plt_call always appears in
+ executables which reference __main.
+
+Wed Dec 28 21:18:26 1994 Jim Wilson <wilson@cygnus.com>
+
+ * mips.md (truncdiqi2+[123]): Add patterns to optimize DImode to
+ SImode truncation.
+
+ * reorg.c (fill_simple_delay_slots): For the epilogue case, set needed
+ to include frame pointer and stack pointer, don't include all of
+ end_of_function_needs. Reject insn if it sets a previously set
+ resource.
+
+ * sh.c (sh_expand_prologue): Clear extra_push at start. Clear
+ current_function_anonymous_args if set. Clear shiftsyms array.
+ (sh_expand_epilogue): Don't clear extra_push,
+ current_function_pretend_args_size, current_function_anonymous_args,
+ and shiftsyms array.
+
+ * reload.c (find_equiv_reg): Exclude registers clobbered in the
+ CALL_INSN_FUNCTION_USAGE field of a CALL_INSN.
+
+Tue Dec 27 19:22:35 1994 Mike Stump <mrs@cygnus.com>
+
+ * stmt.c (expand_cleanups): Add third parameter so that we can
+ avoid marking a cleanup region if this cleanup is part of a fixup
+ style goto.
+ (expand_goto_internal): Pass a 1 to expand_cleanups.
+ (bc_expand_goto_internal): Ditto.
+ (fixup_gotos): Ditto.
+ (expand_end_bindings): Pass a 0 to expand_cleanups.
+
+Tue Dec 27 15:45:18 1994 Jeffrey A. Law <law@snake.cs.utah.edu>
+
+ * pa.c (output_movb): Fix ttypo.
+
+Tue Dec 27 15:11:42 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/i960/i960.c (i960_output_double): Print hex constants if
+ REAL_VALUE_TO_TARGET_DOUBLE is defined.
+ (i960_output_float): Likewise with REAL_VALUE_TO_TARGET_SINGLE.
+
+Sun Dec 25 07:22:30 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * convert.c (convert_to_pointer): Eliminate ref to null_pointer_node.
+
+Thu Dec 22 12:51:31 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * limitx.h (syslimits.h): Find syslimits.h in the same directory.
+
+ * limity.h (_GCC_NEXT_LIMITS_H): If macro defined, recurse down
+ to real limits.h.
+
+ * gsyslimits.h (_GCC_NEXT_LIMITS_H): Define macro and start recursing
+ down to the real limits.h.
+
+Thu Dec 22 12:17:11 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (LIMITS_H_TEST): New variable.
+ (xlimits.h): Use LIMITS_H_TEST.
+ * config/m68k/t-next (LIMITS_H_TEST): Define.
+ * config/i386/t-next (LIMITS_H_TEST): Define.
+
+Wed Dec 21 15:56:13 1994 Holger Teutsch (teutsch@sw017.ffm-iw.Degussa.DE)
+
+ * clipper.h (TRAMPOLINE_TEMPLATE): Specify some code as explicit hex
+ words. Shorten template.
+ (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE): Update accordingly.
+ (FUNCTION_ARG,FUNCTION_ARG_ADVANCE): Aggregates are ALWAYS passed
+ on the stack.
+ * va-clipper.h (__va_rounded_size): Delete.
+ (__va_round): Args have at least PARM_BOUNDARY (=32) alignment.
+
+Wed Dec 21 15:36:46 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * m68k.md (sqrtsf2, sinsf2, sindf2, sinxf2): Define.
+ (cossf2, cosdf2, cosxf2): Likewise.
+ (sqrtxf2): Operand 1 now XFmode.
+
+Wed Dec 21 14:39:46 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k.md (adddi3, subdi3): New patterns.
+
+Wed Dec 21 13:56:08 1994 Michael Gschwind <mike@vlsivie.tuwien.ac.at>
+
+ * pdp11.md (mulhisi3): Add truncate to mulhisi3 to fix bug and
+ change from define_insn to define_expand to survive register
+ presssure.
+
+Wed Dec 21 12:51:10 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stmt.c (expand_asm_operands): Make sure input operands are
+ valid constants if they are constants.
+
+ * toplev.c (rest_of_compilation): Adjust tests for when to
+ inline and when to defer.
+ * calls.c (expand_call): Only inline if DECL_INLINE; don't
+ call function_cannot_inline_p here.
+
+ * stmt.c (expand_expr_stmt): If want values for statements,
+ convert function to address-of-function.
+
+Wed Dec 21 00:02:33 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * combine.c (simplify_shift_const): Always copy flags to new MEM.
+
+Tue Dec 20 14:15:58 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * rs6000/aix41.h (LINK_SPEC): Add case for -shared, just like rs6000.h.
+
+Tue Dec 20 09:14:00 1994 DJ Delorie (dj@ctron.com)
+
+ * i386/go32.h: support #pragma pack().
+
+ * msdos/configur.bat: add libgcc.a target.
+ * msdos/mklibgcc.c: new file, helps build libgcc.a.
+ * msdos/libgcc.mak: new file, makefile fragment for libgcc.a.
+ * msdos/top.sed: change Makefile to be able to build libgcc.a.
+
+Mon Dec 19 20:52:13 1994 Jim Wilson <wilson@cygnus.com>
+
+ * mips/x-sysv (CLIB): Add -L/usr/lib/cmplrs/cc3.11.
+
+ * dsp16xx/dsp16xx.h (HAVE_VPRINTF): Delete.
+
+ * flow.c (mark_set_1): For multi-reg hard register, clear all
+ reg_next_use entries.
+
+Mon Dec 19 17:49:59 1994 Doug Evans <dje@cygnus.com>
+
+ * Makefile.in (stmp-multilib): Check recursive make's return code.
+ (.PHONY): Tell GNU make the various LANGUAGES are phony targets.
+
+Mon Dec 19 17:07:41 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/mips/mips.c (print_operand): Don't print a CONST_DOUBLE
+ as a floating point value if it is not MODE_FLOAT.
+
+Mon Dec 19 15:27:42 1994 Jim Wilson <wilson@cygnus.com>
+
+ * fp-bit.c (fpadd_parts): Adding infinities with opposite signs
+ yields a NaN.
+
+ * loop.c (invariant_p): Reject const volatile references.
+
+Sun Dec 18 21:55:26 1994 Jeffrey A. Law <law@snake.cs.utah.edu>
+
+ * pa.md (pic2_highpart): Accept readonly operands.
+
+Sun Dec 18 16:29:20 1994 Jim Wilson <wilson@cygnus.com>
+
+ * mips/dec-bsd.h (CPP_PREDEFINES): Change _MIPSEB to _MIPSEL.
+
+ * cccp.c (macarg1): Count newline at end of C++ comment.
+
+Sun Dec 18 06:54:34 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stor-layout.c (layout_decl): Allow DECL_BIT_FIELD for any type.
+
+Sat Dec 17 03:43:24 1994 Jeffrey A. Law <law@snake.cs.utah.edu>
+
+ * pa.h (readonly_section): During PIC code generation, put
+ readonly data into the standard data section.
+
+ * pa.c (pic_label_operand): Disallow SYMBOL_REFs (constant data).
+
+Fri Dec 16 06:44:40 1994 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sparc/litecoff.h (DBX_BLOCKS_FUNCTION_RELATIVE, DBX_FUNCTION_FIRST,
+ DBX_OUTPUT_MAIN_SOURCE_FILE_END): Define.
+ (ASM_OUTPUT_SOURCE_LINE): Modify it to output function relative stabs.
+
+ * sh/lib1funcs.asm (ashiftrt_r4_1): Delete useless or instruction.
+ Add nop to rts delay slot.
+
+ * combine.c (distribute_notes): When output an insn to hold a REG_DEAD
+ note, update basic_block_head if necessary.
+
+Thu Dec 15 15:22:46 1994 Jeffrey A. Law <law@snake.cs.utah.edu)
+
+ * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Don't emit a ".text"
+ pseudo-op, we already make sure we're in the right space/subspace.
+
+Thu Dec 15 07:49:36 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (store_constructor): Properly get constant part of
+ bit position when DECL_FIELD_BITPOS is a PLUS_EXPR.
+
+Wed Dec 14 19:01:32 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (get_inner_reference): Use EXACT_DIV_EXPR to
+ compute byte offset from bit offset.
+
+Wed Dec 14 11:41:21 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * fixincludes: Fix non const atof parameter on NEWS-OS 4.2R.
+
+Tue Dec 13 18:39:09 1994 Doug Evans <dje@cygnus.com>
+
+ * h8300.c (handle_pragma): Only print warning once.
+
+ * function.c (instantiate_virtual_regs_1, case PLUS): If offset is
+ zero, make sure register replacement is still validated.
+
+Tue Dec 13 07:51:20 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tower-as.h (FUNCTION_EXTRA_EPILOGUE): Fix typo in mov.l opcode.
+ * tower.h (IMMEDIATE_PREFIX): Really define.
+
+ * expr.c (expand_expr, case MINUS_EXPR): Properly handle case
+ when the NEGATE overflows.
+
+Mon Dec 12 17:22:19 1994 der Mouse (mouse@collatz.mcrcim.mcgill.edu)
+
+ * reload.c (debug_reload): Use GET_MODE_NAME to avoid warning.
+
+Mon Dec 12 13:15:04 1994 Doug Evans <dje@cygnus.com>
+
+ * function.c (locate_and_pad_parm): Don't call pad_below for BLKmode
+ parms in regs.
+
+ * expmed.c (emit_store_flag): Set mode after canonicalizing op0/op1
+ so op1 is constant.
+
+Mon Dec 12 08:04:33 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * cccp.c, toplev.c (vms_fopen): Call `fopen' through an indirect
+ pointer to inhibit checking argument list against its prototype.
+ Increase RMS multi-block count from 16 to 32.
+
+Sat Dec 10 17:03:59 1994 H.J. Lu (hjl@nynexst.com)
+
+ * cccp.c (do_include): Avoid dynamic initialization of aggregate.
+
+Sat Dec 10 16:57:50 1994 Andreas Luik (luik@isa.de)
+
+ * m68k.md (cmpsi): Make this into a define_expand; legitimize
+ PIC addresses if necessary.
+ Old cmpsi code now unnamed define_insn pattern.
+
+Sat Dec 10 16:06:03 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (pedantic_omit_one_operand): New function.
+ (fold, case COND_EXPR): Use it instead of calling
+ pedantic_non_lvalue on the result of omit_one_operand.
+
+Fri Dec 9 15:53:35 1994 Steve Chamberlain (sac@wombat.gnu.ai.mit.edu)
+
+ * reload.c (find_reloads_address_1): Handle TRUNCATE and
+ ZERO_EXTEND in same way as SIGN_EXTEND.
+
+Fri Dec 9 14:52:41 1994 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * rs6000/rs6000.h (LINK_SPEC): Add %{shared:-bM:SRE}.
+ (LINK_LIBGCC_SPECIAL_1): Use LIBGCC_SPEC instead.
+
+Fri Dec 9 14:24:02 1994 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * gcc.c (default_compilers): Add support for Chill (.ch and .chi).
+
+Fri Dec 9 17:31:46 1994 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * fixinc.svr4 (sys/byteorder.h): Turn extern inlines back into
+ static inlines for targets (such as SPARC/Solaris) that don't
+ supply these functions in the C library.
+
+Fri Dec 9 17:19:44 1994 David Edelsohn <edelsohn@npac.syr.edu>
+
+ * rs6000.h (MASK_NO_FPR, TARGET_NO_FPR): Define.
+ (TARGET_SWITCHES): Add "fp-regs" and "no-fp-regs".
+ (CONDITIONAL_REGISTER_USAGE): Set FPRs fixed and call_used if
+ TARGET_NO_FPR.
+
+Fri Dec 9 16:06:23 1994 Doug Evans <dje@cygnus.com>
+
+ * fold-const.c (fold): Call real_zerop for real constants.
+
+Thu Dec 8 17:28:57 1994 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * dbxout.c (dbxout_type_method_1): Don't try to look at the first
+ argument of non-methods (which might not have a first argument).
+
+Thu Dec 8 16:07:27 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * configure (mips-*-gnu*): Recognize this configuration.
+ * config/mips/gnu.h: New file.
+
+Thu Dec 8 15:41:32 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k.c (extend_operator): New predicate.
+ * m68k.md (bsetmemqi, bclrmemqi): New patterns to set bit in memory
+ byte with bit number dynamic (use bclr/bset instructions).
+
+Thu Dec 8 14:13:45 1994 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (do_include): Don't turn newline markers into spaces
+ when expanding an include file name.
+
+ * cccp.c (discard_comments): If traditional, replace a comment
+ with nothing instead of with a space.
+
+ * cccp.c (char_name): New var.
+ (initialize_char_syntax): Initialize it.
+ (handle_directive): Use it to simplify printing of diagnostics.
+ Warn about '\r' too.
+ (create_definition, do_pragma, do_endif, make_assertion): Be consistent
+ about skipping all horizontal white space, not just space and tab.
+
+Thu Dec 8 13:54:38 1994 H.J. Lu (hjl@nynexst.com)
+
+ * i386/linuxelf.h: Modified for stabs-in-ELF.
+ (PREFERRED_DEBUGGING_TYPE): Defined as DBX_DEBUG.
+ (FUNCTION_PROFILER): Use mcount instead of _mount.
+ (CPP_PREDEFINES): Add -D__ELF__.
+ (CPP_SPEC): Add -D__PIC__ -D__pic__ for -fPIC or -fpic.
+ (LIB_SPEC): Don't use any default library if -shared.
+ (LIBGCC_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): New specs.
+ * configure (gxx_include_dir): Set default to '$(prefix)/include/g++'
+ (i[345]86-*-linuxelf): New platform for ELF.
+ * crtstuff.c (CRT_END): Add dummy refs to ___brk_addr, __environ
+ and atexit if __linux__ and __PIC__ defined.
+
+Thu Dec 8 12:58:34 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * config/xm-freebsd.h, i386/xm-freebsd.h: New files.
+ * configure (i[345]86-*-freebsd*): Use i386/xm-freebsd.h.
+
+Wed Dec 7 16:51:56 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k.md: New pattern for ior between SImode target and zero_extended
+ value.
+
+Wed Dec 7 16:42:46 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (distribute_notes): If can't find place for REG_DEAD
+ note, add an INSN with a USE to hold it.
+
+ * tree.c (preserve_momentary): New function.
+
+Wed Dec 7 15:59:00 1994 Doug Evans <dje@cygnus.com>
+
+ * function.c (locate_and_pad_parm): Do padding before rounding
+ so pad_below knows how much is needed.
+
+Tue Dec 6 17:53:37 1994 Steve Chamberlain (sac@wombat.gnu.ai.mit.edu)
+
+ * sh.md (ashrsi2_16): New pattern doesn't clobber reg 18.
+ (ashrsi2_31): Fix.
+
+Tue Dec 6 19:11:36 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * c-decl.c (init_decl_processing): Implement built-in functions
+ fabsf, sqrtf, sinf, cosf, fabsl, sqrtl, sinl, cosl.
+
+Tue Dec 6 18:42:15 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * make-gcc.com: Eliminate `set symbol/scope=noGlobal'.
+
+ * vax/vms.h (CPP_PREDEFINES): Set __GNUC_MINOR__ to 7.
+
+Tue Dec 6 15:10:37 1994 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * sparc/t-sol2 (CRTSTUFF_T_CFLAGS): Don't use PIC if
+ cross-compiling, use the native assembler otherwise.
+
+Tue Dec 6 05:48:32 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * configure (i[345]86-*-gnu*): Just set cpu_type=i386 here.
+ (*-*-gnu*): Match this in second case stmt and set other vars based on
+ $cpu_type.
+ * config/gnu.h: New file.
+ * config/i386/gnu.h: Include "gnu.h".
+
+Mon Dec 5 16:59:39 1994 Doug Evans <dje@cygnus.com>
+
+ * sparc/t-sparcbare (LIB2FUNCS_EXTRA): Compile fp-bit.c.
+
+Mon Dec 5 14:48:53 1994 Jim Wilson <wilson@mole.gnu.ai.mit.edu>
+
+ * unroll.c (copy_loop_body): Reformat CODE_LABEL_NUMBER macro call
+ to avoid HPUX compiler bug.
+
+Mon Dec 5 13:53:45 1994 Doug Evans <dje@cygnus.com>
+
+ * m68k.md (negsf2): Flip sign bit if software floating point.
+ (negdf2,negxf2): Likewise.
+ (abssf2): Zero sign bit if software floating point.
+ (absdf2,absxf2): Likewise.
+
+Mon Dec 5 13:00:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (EXTRA_CONSTRAINT, case 'R'): Fix error in last change.
+
+Mon Dec 5 00:40:11 1994 Doug Evans <dje@cygnus.com>
+
+ * Makefile.in (c-parse.h): Split away from c-parse.c for parallel
+ makes.
+ (bi-parser.h): Likewise with bi-parser.c.
+
+Sun Dec 4 21:04:40 1994 Doug Evans <dje@cygnus.com>
+
+ Delete this patch:
+ * reorg.c (fill_slots_from_thread): Create a USE insn for any
+ redundant insn we pretend to fill a delay slot with. Continue
+ searching for a suitable delay slot insn at the new USE insn.
+
+Fri Dec 2 11:29:41 1994 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * expr.c (store_constructor): Add support for SET_TYPE.
+
+Fri Dec 2 18:14:09 1994 David Edelsohn <edelsohn@npac.syr.edu>
+
+ * rs6000.h (MASK_64BIT, TARGET_64BIT, SHORT_TYPE_SIZE): Define.
+ (INT_TYPE_SIZE, MAX_INT_TYPE_SIZE, LONG_TYPE_SIZE): Define.
+ (MAX_LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE, CHAR_TYPE_SIZE): Define.
+ (FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE, LONG_DOUBLE_TYPE_SIZE): Define.
+ (POINTER_SIZE, PARM_BOUNDARY): Depend on TARGET_64BIT.
+ (BIGGEST_ALIGNMENT, STARTING_FRAME_OFFSET): Likewise.
+ (FIRST_PARM_OFFSET, REG_PARM_STACK_SPACE): Likewise.
+ (STACK_POINTER_OFFSET, Pmode, FUNCTION_MODE): TARGET_64BIT dependent.
+ * xcoffout.c (xcoff_output_standard_types): Add TARGET_64BIT
+ dependencies. Add "wchar", "long long int", and "long long
+ unsigned int" built-in C types.
+
+Fri Dec 2 18:08:16 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * integrate.c (subst_constant): Don't treat all virtual regs as
+ constants, just those that are off FP and AP, but not SP.
+ (expand_inline_function): If called function calls alloca, save and
+ restore SP around its call.
+
+ * rs6000.c (input_operand): Correctly check for SYMBOL_REF
+ referring to the TOC.
+ * rs6000.h (EXTRA_CONSTRAINT): Likewise.
+
+Wed Nov 30 20:42:57 1994 Jeffrey A. Law <law@snake.cs.utah.edu)
+
+ * reorg.c (fill_slots_from_thread): Create a USE insn for any
+ redundant insn we pretend to fill a delay slot with. Continue
+ searching for a suitable delay slot insn at the new USE insn.
+
+Wed Nov 30 19:02:49 1994 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * combine.c (record_dead_and_set_regs_1): Handle SUBREGs.
+
+ * expr.c (convert_move): When emit multiword conversion, force FROM
+ into a new pseudo-reg if it overlaps TO.
+
+ * fold-const.c (fold_truthop): Delete BIT_AND_EXPR of constants
+ with masks.
+
+Wed Nov 30 18:22:31 1994 David Edelsohn <edelsohn@npac.syr.edu>
+
+ * rs6000.h (BITS_PER_WORD): TARGET_POWERPC64 dependent.
+ (MAX_BITS_PER_WORD): Define.
+ (UNITS_PER_WORD): TARGET_POWERPC64 dependent.
+ (MAX_UNITS_PER_WORD): Define.
+ (UNITS_PER_FP_WORD): Define.
+ (HARD_REGNO_NREGS): Use MAX_UNITS_PER_FP_WORD.
+ (HARD_REGNO_MODE_OK): Likewise.
+ (CLASS_MAX_NREGS): Likewise.
+ (MOVE_MAX): TARGET_POWER and TARGET_POWERPC64 dependent.
+ (MAX_MOVE_MAX): Define.
+ * rs6000.md (floatsidf2): Test BITS_PER_WORD in pattern condition
+ not during build. Fail if TARGET_POWERPC64.
+ (floatunssidf2): Likewise.
+
+ * rs6000.md (extendsidi2): Use lwa_operand predicate.
+ (sign_extend load with update): New PowerPC64 pattern.
+ * rs6000.c (lwa_operand): New predicate.
+ * rs6000.h (PREDICATE_CODES): Add lwa_operand.
+
+Wed Nov 30 18:19:08 1994 Will Athanasiou (will@westford.ccur.com)
+
+ * rs6000.md (extendsfdf2): SFmode and DFmode register format
+ identical so use define_expand with paradoxical subreg no-op and
+ accompanying new define_split.
+
+Wed Nov 30 18:05:03 1994 Michael Collison (collison@sw.stratus.com)
+
+ * reload.c (combine_reloads): If using reg dying in this insn as
+ reload reg, ensure it can't be a secondary output reload reg.
+
+Wed Nov 30 15:48:29 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (emit_block_move): Only use movstr if size is
+ small enough constant or MODE is at least BITS_PER_WORD.
+
+ * c-common.c (decl_attribute): Allow special names (e.g, `word')
+ for mode attribute.
+ * libgcc2.c (word_type): Use __attribute__ ((mode (__word__))).
+
+Tue Nov 29 16:50:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (expand_shift): Open-code rotate even if by a variable.
+ * optabs.c (init_optabs): Don't set functions for rotl and rotr.
+
+Tue Nov 29 00:39:56 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (DEFAULT_PCC_STRUCT_RETURN): Define as zero.
+ (RETURN_IN_MEMORY): Only large structs (>8 bytes) and addressable
+ structs should be returned in memory.
+ * calls.c (expand_call): Handle returning BLKmode values in
+ registers. Do not try to promote BLKmode.
+ * expr.c (expand_assignment): For BLKmode structure returns,
+ copy the return value from registers into the target memory
+ locations.
+ * integrate.c (function_cannot_inline_p): Do not inline functions
+ which return a BLKmode value in registers.
+ * stmt.c (expand_return): For BLKmode structure returns, copy
+ the return value from memory into the return registers. Use
+ an integer mode rather than BLKmode for returning structures
+ in registers.
+ * explow.c (hard_function_value): Change a register in BLKmode
+ to a register in a sufficiently wide integer mode.
+
+ * calls.c (expand_call): Do not set is_integrable if the
+ function is not inlineable according to function_cannot_inline_p.
+
+Mon Nov 28 18:53:06 1994 Dave Love (d.love@dl.ac.uk)
+
+ * Makefile.in (FLAGS_TO_PASS): Fix typo in GCC_FOR_TARGET.
+
+Mon Nov 28 18:15:58 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * configure (lang): Really fix the quoting bug in bash 1.12.
+
+Mon Nov 28 18:03:48 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expmed.c (store_bit_field, extract_bit_field): Consistently use
+ SLOW_UNALIGNED_ACCESS instead of STRICT_ALIGNMENT.
+ * expr.c (move_by_pieces, move_by_pieces_ninsns, emit_push_insn,
+ expand_assignment, store_field, expand_expr): Likewise.
+ (SLOW_UNALIGNED_ACCESS): Default to STRICT_ALIGNMENT, not zero.
+
+ * cccp.c (create_definition): Error if comma not followed by an
+ identifier.
+ (collect_expansion): Error if # used in macro with no arguments.
+
+ * c-decl.c (finish_decl): Use DECL_CONTEXT instead of
+ current_binding_level to identify file-scope variables.
+
+Wed Nov 23 19:44:25 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * sh.c (MSW, LSW): New macros.
+ (print_operand_address): Added 'T' and 'S'. Modified
+ to support alternate endianness.
+ (output_movedouble): Support both byte orders.
+ (output_options): Tell assembler when in little endian mode.
+ (shiftinsns): New function to calculate shift cost more
+ accurately.
+ (gen_shifty_op): Use new function.
+ * sh.h (CPP_SPEC, ASM_SPEC, LINK_SPEC, LIBGCC2_WORDS_BIG_ENDIAN): New.
+ (TARGET_SWITCHES, WORDS_BIG_ENDIAN, BYTES_BIG_ENDIAN, ): Support
+ both byte orders.
+ * sh.md (addi3, subdi3, ashrdi3, ashldi3, extendsidi2, movdi, movdf):
+ Support both byte orders.
+ (ashrsi2_16, ashrsi2_31): New.
+ t-sh: Support both byte orders.
+
+Wed Nov 23 17:25:43 1994 Ian Dall (dall@hfrd.dsto.gov.au)
+
+ * config/ns32k/{ns32k.c,ns32k.h}: Add -mhimem to
+ support linking above 0x20000000 boundary.
+
+ * config/ns32k/{netbsd.h,pc532.h, ns32k.c}: Fix meaning
+ of BASE_REG_NEEDED.
+
+Wed Nov 23 17:24:24 1994 Matthias Pfaller (leo@marco.de)
+
+ * configure (ns32k-pc532-netbsd): No need for fixincludes
+ and libgcc1.
+ * ns32k/ns32k.h (CONST_COSTS): Correct range is -0x1fff to 0x2000.
+ * ns32k/ns32k.md (everywhere): Correct range is -0x1fffffff
+ to 0x20000000, others have to be loaded with movd.
+ Shortcircuit with TARGET_32532 as early as possible.
+ (movsi): Use movd to load unknown symbol values. to allow
+ * ns32k/ns32k.c (print_operand): Removed dead code.
+ * ns32k/pc532.h (TARGET_DEFAULT): Forbid usage of bitfield
+ instructions.
+
+Wed Nov 23 14:09:42 1994 Jim Wilson (wilson@cygnus.com)
+
+ * mips.c (mips_output_external): Exclude __builtin_next_arg from list
+ of used external functions.
+
+ * sh.c (arith_reg_operand): Disallow MACH_REG and MACL_REG.
+
+ * sparc.h (SECONDARY_MEMORY_NEEDED_RTX, SECONDARY_MEMORY_NEEDED_MODE):
+ Use MODE not mode.
+
+Wed Nov 23 13:30:52 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (emit_move_insn): If splitting up into individual words
+ and X is a push_operand, do the push and reference top of stack.
+
+Tue Nov 22 21:39:52 1994 Doug Evans (dje@cygnus.com)
+
+ * mips/elf64.h (ASM_OUTPUT_SECTION_NAME): Define.
+
+Tue Nov 22 06:29:21 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold_convert): Don't fold conversion if it would
+ produce constant larger than we can support.
+ * emit-rtl.c (gen_lowpart_common): Do nothing if size is
+ greater than twice host wordsize, not just if equal.
+
+ * optabs.c (emit_no_conflict_block): Just emit the insns if
+ the block contains something not an INSN or has an embedded block.
+
+ * emit-rtl.c (init_emit): Set REGNO_POINTER_FLAG
+ for HARD_FRAME_POINTER_REGNUM.
+
+ * machmode.h (ptr_mode): Add declaration.
+ * emit-rtl.c (ptr_mode): Add definition.
+ (init_emit_once): Initialize ptr_mode.
+ * stor-layout.c (layout_type): Use ptr_mode instead of equivalent
+ call to mode_for_size.
+
+Mon Nov 21 18:41:42 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * varasm.c (output_constant): When eliminating conversions,
+ treat ARRAY_TYPE like a record.
+
+ * m68k.md (movqi): Fix typo in push/pop case.
+
+Mon Nov 21 18:11:55 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * genopinit.c (gen_insn): Use GET_MODE_WIDER_MODE macro instead of
+ directly accessing the array.
+
+Mon Nov 21 17:59:07 1994 David Edelsohn <edelsohn@npac.syr.edu>
+
+ * aix41.h (LINK_SPEC): New overriding defintion.
+
+Mon Nov 21 17:44:01 1994 John F Carr (jfc@mit.edu)
+
+ * rs6000.c (input_operand): Allow a SYMBOL_REF referring to a
+ symbol in the TOC.
+
+Mon Nov 21 14:39:13 1994 Doug Evans (dje@cygnus.com)
+
+ * mips/t-ecoff (dp-bit.c): Fix typos.
+
+Mon Nov 21 14:06:29 1994 Jim Wilson (wilson@cygnus.com)
+
+ * emit-rtl.c (operand_subword): For CONST_DOUBLE, add case to
+ handle BITS_PER_WORD of 16.
+
+ * reload1.c (reload): When decrement max_groups of superclass, can
+ only do so if the group_size is smaller than the current group.
+
+ * c-lex.c (yylex): Do warn about floating point out of range if
+ target floating-point format is IEEE. Use warning instead of
+ pedwarn to avoid getting errors.
+
+Mon Nov 21 13:37:03 1994 Doug Evans (dje@cygnus.com)
+
+ * m88k/m88k-aout.h (CPP_PREDEFINES): Add -Acpu and -Amachine.
+ * m88k/m88k-coff.h (CPP_PREDEFINES): Likewise.
+ (DBX_DEBUGGING_INFO): Define.
+
+ * m68k/t-m68kbare (MULTILIB_MATCHES): Treat m68302/m68332 like m68000.
+
+Mon Nov 21 00:58:36 1994 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.c (output_call): When emitting an inline long-call, use LP%
+ and RP% prefixes to get the function's address.
+
+Sun Nov 20 07:00:25 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (objc-parse.y): Fix typo.
+
+ * t-svr3: Deleted.
+ * t-svr4 (EXTRA_PARTS): Deleted.
+ * i386/t-crtstuff, i386/t-crtpic: New files.
+ * i386/t-svr3dbx (EXTRA_PARTS): Deleted.
+ * configure: Replace use of t-svr3 with extra_parts definition.
+ Add extra_parts to t-svr4 users; likewise for i386/t-svr3dbx.
+ (i386 configurations): Add t-crtstuff if can't build crtstuff.c
+ with -fomit-frame-pointer; use t-crtpic if also must build with -fpic.
+
+Sat Nov 19 17:14:54 1994 Jim Wilson (wilson@cygnus.com)
+
+ * m68k/lb1sf68.asm (addsf3): After using swap for 16 bit rotate,
+ branch back only if count still greater than 0.
+
+ * c-typeck.c (build_binary_op): Can shorten shift only if shift count
+ is less than size in bits of arg0.
+ * expmed.c (expand_shift): Re-enable truncation of immediate shift
+ count.
+
+ * mips.c (mips_const_double_ok): Accept VOIDmode not DImode.
+ (mips_move_1word): Accept VOIDmode CONST_DOUBLE.
+
+Sat Nov 19 05:36:35 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (print_operand, case 'c', case 'd'): New cases.
+ * alpha.md (sign_extend): Disable pattern with explicit SUBREG.
+ (cmov): Allow first operand of comparison to be zero, 2nd reg.
+
+ * a29k/unix.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
+ * a29k/x-unix (CLIB): Remove -lsysv.
+
+Fri Nov 18 22:37:26 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * m88k/mot-sysv4.h: Remove, no longer needed.
+ * configure: Remove m88k-mot*-sysv4* special case.
+
+ * collect2.c: Make various functions static.
+
+ * sparc/sysv4.h ([CD]TORS_SECTION_ASM_OP): Remove #execinstr.
+
+ * svr4.h, i386/sol2.h, m88k/dgux.h, sparc/sol2.h
+ (LINK_SPEC): Pass -z text when -shared or -symbolic.
+ * svr4.h (LIBGCC_SPEC): Don't pass -lgcc when -symbolic.
+
+ * crtstuff.c: Fix comments.
+
+Fri Nov 18 22:36:26 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * pa/pa-hpux.h (LDD_SUFFIX): Move to pa.h.
+ (PARSE_LDD_OUTPUT): Ditto.
+ * pa/pa.h: (LDD_SUFFIX): Move from pa-hpux.h.
+ (PARSE_LDD_OUTPUT): Ditto.
+ (LINK_SPEC): Pass -b if -shared. Don't pass -u main if -shared.
+ * pa/pa1-osf.h: Reduce code duplication.
+
+Fri Nov 18 22:35:26 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * Makefile.in (crt{begin,end}.o): Pass $(CRTSTUFF_T_CFLAGS).
+ (CRTSTUFF_T_CFLAGS): New variable.
+
+ * svr4.h, m88k/sysv4.h, sparc/sysv4.h (FINI_SECTION_ASM_OP): Define.
+ * i386/sol2.h (FORCE_FINI_SECTION_ALIGN): Define to
+ FORCE_INIT_SECTION_ALIGN.
+ * m88k/dgux.h, m88k/mot-sysv4.h, sparc/sysv4.h
+ (INIT_SECTION_PREAMBLE): Remove.
+ * svr4.h, sparc/sol2.h (STARTFILE_SPEC): Include crti.o and
+ values-X?.o when building a shared lib.
+ * svr4.h, i386/sol2.h, sparc/sol2.h (LIB_SPEC): Remove endfiles.
+ (ENDFILE_SPEC): Handle endfiles.
+
+ * libgcc2.c (__do_global_dtors): Don't define if
+ INIT_SECTION_ASM_OP and OBJECT_FORMAT_ELF.
+ (L_[cd]tor_list): Lose unused pieces.
+
+ * crtstuff.c (__[CD]TOR_{LIST,END}__): static if OBJECT_FORMAT_ELF.
+ (__do_global_ctors_aux): In .text if OBJECT_FORMAT_ELF.
+ (__do_global_dtors_aux): Ditto.
+ (init_dummy): Dummy function to stick a call to __do_global_ctors_aux
+ into the .init section if OBJECT_FORMAT_ELF.
+ (fini_dummy): Similarly.
+ Remove reference to INIT_SECTION_PREAMBLE.
+
+ * mips/iris5.h (HAS_INIT_SECTION): Define.
+ (LINK_SPEC): Pass -u __main -init __main if not -shared.
+ (STARTFILE_SPEC): Don't include these when -shared.
+ (LIB_SPEC): Don't include these when -shared.
+ (ENDFILE_SPEC): Define.
+ (LD_INIT_SWITCH): Define.
+ (LD_FINI_SWITCH): Define.
+
+ * alpha/alpha.h (LD_INIT_SWITCH): Define.
+ (LD_FINI_SWITCH): Define.
+ (INIT_NAME_FORMAT): Lose.
+ (FINI_NAME_FORMAT): Lose.
+
+Fri Nov 18 22:34:26 1994 Ronald F. Guilmette (rfg@segfault.us.com)
+
+ * crtstuff.c, svr4.h, i860/sysv4.h, m88k/sysv4.h, sparc/sysv4.h
+ (CTORS_SECTION_ASM_OP): Remove @progbits, add SHF_WRITE.
+ (DTORS_SECTION_ASM_OP): Ditto.
+
+ * t-svr4, i386/t-sol2, m88k/t-sysv4, sparc/t-sol2
+ (CRTSTUFF_T_CFLAGS): Define to -fpic.
+
+Fri Nov 18 22:33:26 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * gcc.c (LIBGCC_SPEC): New spec.
+ (link_command_spec): Use LIBGCC_SPEC.
+ (set_spec): Handle LIBGCC_SPEC.
+ (process_command): Ditto.
+ (do_spec_1): %G is LIBGCC_SPEC.
+ (validate_all_switches): Also validate LIBGCC_SPEC.
+
+ * alpha/alpha.h (LIBGCC_SPEC): Do include libgcc when
+ creating a shared library.
+
+Fri Nov 18 22:32:26 1994 Steve Dum (steve_dum@mentorg.com)
+
+ * collect2.c (SUNOS4_SHARED_LIBRARIES): Support scanning the
+ _DYNAMIC field of SunOS 4 shared libraries directly.
+
+Fri Nov 18 22:31:26 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * collect2.c (main): For shared libraries, link in stubs even if
+ there are no constructors or destructors so that static objects
+ can be added without re-linking everything that uses the library.
+ (write_c_file_stat): Tweak.
+
+ * configure: Use sunos4.h instead of sparc.h for SunOS 4 targets.
+
+ * sparc/sunos4.h: New file for SunOS 4-specific things.
+ (SUNOS4_SHARED_LIBRARIES): Define to 1.
+ * sparc/sparc.h: (LINK_SPEC): Support -shared.
+ (LIB_SPEC): Ditto.
+
+ * pa/pa-hpux.h (LDD_SUFFIX): New macro.
+ (PARSE_LDD_OUTPUT): New macro.
+ (LINK_SPEC): Pass -b if -shared. Don't pass -u main if -shared.
+ (LIB_SPEC): Don't include if -shared.
+
+ * collect2.c (scan_prog_file): Ignore undefined symbols.
+
+Fri Nov 18 22:30:26 1994 Steve Dum (steve_dum@mentorg.com)
+
+ * collect2.c (enum pass): Add PASS_LIB.
+ (is_ctor_dtor): Check for shared library constructor and destructor
+ functions, too.
+ (main): Add o_file after any link libraries, too.
+ Create a shared object if COLLECT_GCC_OPTIONS contains -shared.
+ Also scan shared libraries for constructors and destructors if
+ LDD_SUFFIX is defined.
+ (write_c_file_stat): New function to write out file for a shared
+ object.
+ (write_c_file_glob): Renamed from write_c_file.
+ (write_c_file): Calls one of write_c_file_{stat,glob}.
+ (scan_prog_file): Update to deal with shared libraries.
+ (scan_libraries): New function to scan shared libraries for
+ constructors and destructors.
+
+Fri Nov 18 19:16:19 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.c (addrs_ok_for_quad_peep): New function.
+ (output_prolog): Use liu mnemonic.
+ (registers_ok_for_quad_peep): New function.
+ * rs6000.md (peepholes for two DF load/store): New peepholes.
+
+Fri Nov 18 19:10:24 1994 Kresten Krab Thorup (krab@next.com)
+
+ * objc/object.c (class_create_instance): Replace memchr
+ with memset.
+
+Fri Nov 18 19:06:15 1994 Doug Evans (dje@cygnus.com)
+
+ * sparc/lite.h: #include "gofast.h"
+ (INIT_SUBTARGET_OPTABS): Define.
+
+Fri Nov 18 19:01:51 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * Makefile.in (extraclean): Remove *.ps.
+
+Fri Nov 18 18:53:57 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * cccp.c (create_definition): Allow carriage-return ('\r')
+ as white space in simple or empty expansion.
+
+Fri Nov 18 18:30:40 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * winnt/ld.c (main): Fix off-by-one error allocating sdbuff.
+
+Fri Nov 18 18:23:54 1994 Mike Collison (collison@sw.stratus.com)
+
+ * regclass.c (record_reg_classes): For single SET between hard reg
+ alone in a class and pseudo, ensure reg is the only member of class.
+
+Fri Nov 18 15:15:27 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sol2.h (MD_STARTFILE_PREFIX): Delete.
+
+Fri Nov 18 14:16:04 1994 Chris Huey (cah@tactix.rain.com)
+
+ * Makefile.in (objc-parse.y, mostlyclean): Rename temp file
+ for objc-parse.y to be under 14 characters.
+
+Thu Nov 17 20:46:15 1994 Doug Evans <dje@cygnus.com>
+
+ VxWorks support from various people at Cygnus.
+ * config.sub: Vendor for vxworks is wrs.
+ * configure (i960-wrs-vxworks*): New target.
+ (m68k-wrs-vxworks*): New target.
+ (sparc-wrs-vxworks*, sparclite-wrs-vxworks*): New targets.
+ * i960/t-vxworks960, i960/vx960-coff.h, i960/vx960.h: New files.
+ * m68k/t-vxworks68, m68k/vxm68k.h: New files.
+ * sparc/t-vxsparc, sparc/vxsparc.h: New files.
+
+ * h8300/h8300.h (DBX_DEBUGGING_INFO): Define.
+ (PREFERRED_DEBUGGING_TYPE): Define to SDB_DEBUG.
+
+ * configure (--program-prefix, --program-suffix,
+ --program-transform-name, -v, -verbose): New arguments.
+ (as): If gas is in build tree, use it.
+ (ld, real-ld): Likewise but watch for use_collect.
+ (program_transform_name): Update Makefile if
+ --program-transform-name given.
+ (program_transform_cross_name): Likewise.
+ * Makefile.in (program_transform_name): Define.
+ (program_transform_cross_name): Define.
+ (GCC_INSTALL_NAME, GCC_CROSS_NAME): Define.
+ (install-common): Use them.
+ (install-man): Likewise.
+ (distclean): Delete *.asm.
+ (stage*, risky-stage*): If as/ld/real-ld exist, copy them to stage dir.
+
+ Embedded target support from various Cygnus people.
+ * config.sub (sparc): Recognize as a cpu.
+ (ecoff*, vsta, udi): Recognize as os's.
+ (udi29k): New alias.
+ * configure: (a29k-*-udi): New target.
+ (i[345]86-*-aout*): New target.
+ (i[345]86-*-coff*): New target.
+ (i[345]86-*-vsta): New target.
+ (m68k-*-aout*): New target.
+ (m68k-*-coff*): New target.
+ (m88k-*-aout*): New target.
+ (m88k-*-coff*): New target.
+ (mipsel-*-ecoff*): New target.
+ (mips-*-ecoff*): New target.
+ (mipsel-*-elf*): New target.
+ (mips-*-elf*): New target.
+ (mips64el-*-elf*): New target.
+ (mips64orionel-*-elf*): New target.
+ (mips64-*-elf*): New target.
+ (mips64orion-*-elf*): New target.
+ (sparc-*-aout*): New target.
+ (sparclite-*-coff*): New target.
+ (sparclite-*-*): Set tmake_file to sparc/t-sparclite.
+ (mips*-*-*): Changed from mips-*-*.
+ * optabs.c (expand_unop): Try subtraction from zero if there isn't a
+ negate library function.
+ * config/gofast.h: New file.
+ * a29k/a29k-udi.h, a29k/t-a29kbare: New files.
+ * i386/i386-aout.h, i386/i386-coff.h, i386/t-i386bare: New files.
+ * i386/vsta.h, i386/t-vsta, i386/x-vsta, i386/xm-vsta.h: New files.
+ * m68k/coff.h: New file (renamed from m68k-coff.h).
+ * m68k/lynx-ng.h, m68k/lynx.h: Include it.
+ * m68k/fpgnulib.c, m68k/lb1sf68.asm, m68k/m68kemb.h: New files.
+ * m68k/m68k-aout.h, m68k/m68k-coff.h, m68k/m68k-none.h: New files.
+ * m68k/t-m68kbare: New file.
+ * m88k/m88k-aout.h, m88k/m88k-coff.h, m88k/t-bug: New files.
+ * mips/ecoff-gdb.h, mips/ecoff.h, mips/ecoffl-gdb.h: New files.
+ * mips/ecoffl.h, mips/elf.h, mips/elf64.h, mips/elfl.h: New files.
+ * mips/elfl64.h, mips/elflorion.h, mips/elforion.h: New files.
+ * mips/t-ecoff: New files.
+ * sparc/lb1spc.asm, sparc/lb1spl.asm, sparc/litecoff.h: New files.
+ * sparc/sparc-aout.h, sparc/t-sparcbare, sparc/t-sparclite: New files.
+
+Thu Nov 17 18:32:24 1994 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * cse.c (simplify_binary_operation): Do (x - (x & y)) -> (x & ~y).
+
+Thu Nov 17 17:26:02 1994 Mark P. Gooderum (mark@good.com)
+
+ * stddef.h: Include <machine/ansi.h> on NetBSD.
+ Check for _BSD_XXX_T_ as well as _XXX_T_.
+ Add _BSD_XXX_T_ to list of defines to check and define for a given
+ type for SIZE_T, PTRDIFF_T, and WCHAR_T.
+
+Thu Nov 17 11:11:50 1994 Mike Collison (collison@sw.stratus.com)
+
+ * dsp16xx.c (notice_update_cc): Removed reference to obsolete LSHIFT.
+ * dsp16xx.h (RTX_COSTS): Likewise.
+
+Thu Nov 17 11:06:43 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (some_operand): New function.
+ * alpha.h (PREDICATE_CODES): Add `some_operand'.
+ * alpha.md (addsi3, adddi3): For patterns valid only
+ during reload, allow operand 1 to be `some_operand'.
+
+ * flow.c (find_auto_inc): Insert missing "return" statement.
+
+ * c-common.c (print_char_table): Allow `L' for `u'.
+
+Thu Nov 17 10:15:50 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * config.sub: Accept -domain as OS, and make it default for Apollo.
+
+Wed Nov 16 19:28:46 1994 Jim Wilson (wilson@chestnut.cygnus.com)
+
+ * loop.c (move_movables): For move_insn case, skip notes when deleting
+ instructions.
+
+Wed Nov 16 16:13:48 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * bi-run.h: Always check BITS_BIG_ENDIAN, BYTES_BIG_ENDIAN, and
+ WORDS_BIG_ENDIAN at run time, never at compile time.
+ * bytecode.h, combine.c, cse.c, dbxout.c, dwarfout.c: Likewise.
+ * expmed.c, expr.h, final.c, fold-const.c, function.c: Likewise.
+ * jump.c, objc-act.c, real.c, real.h, recog.c, reload.c: Likewise.
+ * reload1.c, sdbout.c, tree.c, varasm.c: Likewise.
+ * real.c: Replace uses of MIEEE and IBMPC with a compile time
+ check of IEEE and a runtime check of FLOAT_WORDS_BIG_ENDIAN.
+ * libgcc.2 (LIBGCC2_WORDS_BIG_ENDIAN): If not defined, define to
+ WORDS_BIG_ENDIAN. Use it instead of WORDS_BIG_ENDIAN.
+ * mips-tfile.c (init_file): Initialize fBigendian field based on
+ HOST_WORDS_BIG_ENDIAN, not BYTES_BIG_ENDIAN.
+ * config/mips/mips.h (MASK_BIG_ENDIAN): Define, replacing
+ MASK_UNUSED4.
+ (TARGET_BIG_ENDIAN): Define.
+ (TARGET_SWITCHES): Add eb and el. Include TARGET_ENDIAN_DEFAULT
+ in default value.
+ (TARGET_ENDIAN_DEFAULT): Define if not defined, based on
+ DECSTATION.
+ (CC1_SPEC): Convert -EB to -meb, convert -EL to -mel, and warn if
+ -EB and -EL are both used.
+ (CPP_SPEC): If -EB is seen, undefine MIPSEL, _MIPSEL, __MIPSEL and
+ __MIPSEL__, and define _MIPSEB, __MIPSEB, __MIPSEB__ and MIPSEB
+ (the last only if -ansi was not seen). Similarly if -EL is seen.
+ (REAL_ARITHMETIC): Define.
+ (BYTES_BIG_ENDIAN, WORDS_BIG_ENDIAN): Base on TARGET_BIG_ENDIAN.
+ (LIBGCC2_WORDS_BIG_ENDIAN): Define.
+ (CONST_COSTS): Use split_double in CONST_DOUBLE case.
+ * config/mips/mips.c (mips_move_2words): Use split_double rather
+ than CONST_DOUBLE_LOW and CONST_DOUBLE_HIGH.
+ (output_block_move): Check BYTES_BIG_ENDIAN at run time, not
+ compile time.
+ (print_operand): Check WORDS_BIG_ENDIAN, rather than using
+ MOST_SIGNIFICANT_WORD and LEAST_SIGNIFICANT_WORD.
+ * config/mips/t-mips (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
+ MULTILIB_MATCHES, LIBGCC, INSTALL_LIBGCC): Define to build both
+ big and little endian versions of libgcc.a.
+ * config/mips/t-mips-gas: LIkewise.
+ * config/mips/dec-bsd.h (CPP_SPEC): Same change as in mips.h.
+ * config/mips/dec-osf1.h (CPP_SPEC): Likewise.
+ * config/mips/iris3.h (CPP_SPEC): Likewise.
+ * config/mips/iris5.h (CPP_SPEC): Likewise.
+ * config/mips/osfrose.h (CPP_SPEC): Likewise.
+ (CC1_SPEC): Same change as in mips.h.
+
+Wed Nov 16 16:04:21 1994 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (rescan): Remove unnecessary comparisons of ibp to limit.
+
+Wed Nov 16 07:48:17 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * regclass.c (record_reg_classes): Handle case of single SET
+ between a hard register alone in a class and a pseudo.
+
+ * tree.c (integer_{zero,one,all_ones,pow2}p): Handle COMPLEX_CST.
+ (real_{zero,one,two}p): Likewise.
+
+ * gcc.c (main): For -V output, give both driver and compiler
+ versions, if they differ.
+
+ * toplev.c (rest_of_compilation): Always rerun jump_optimize
+ after CSE if -O2.
+
+ * fold-const.c (fold): If moved conversion into COND_EXPR,
+ leave it there if it is an integral conversion to word or narrower.
+ (fold, case NOP_EXPR): Ignore conversion to same type as operand.
+ (fold, case COND_EXPR): Make third operand the simplest.
+
+ * expr.c (convert_move): Don't put FROM in a register if it
+ is a SUBREG.
+ (store_expr): If don't want a value and storing into promoted
+ variable, do conversion at tree level; don't copy volatile MEM
+ unless want value, as comment says.
+
+Tue Nov 15 20:02:34 1994 Doug Evans (dje@cygnus.com)
+
+ * varasm.c (named_section): New argument decl, all callers changed.
+ * h8300/h8300.h, sh/sh.h, sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME):
+ New arg DECL.
+
+Mon Nov 14 15:07:19 1994 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * tree.h (POINTER_TYPE_P): New macro.
+ * m68k/m68kv4.h, m68k/mot3300.h (FUNCTION_VALUE): Use
+ POINTER_TYPE_P rather than checking the type against
+ POINTER_TYPE (to include references).
+ * function.c (init_function_start): Ditto.
+
+ * alpha/alpha.h (FUNCTION_VALUE): Use INTEGRAL_MODE_P rather than
+ checking the type against various integral and pointer types.
+
+ * m68k/{3b1,3b1g,crds,mot3300}.h: Don't define __PTR_TO_INT and
+ __INT_TO_PTR.
+ * m68k/xm-{3b1,crds,mot3300}.h: Define __PTR_TO_INT and __INT_TO_PTR.
+
+Tue Nov 15 19:29:04 1994 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * tree.c (staticp): A non-nested function is always static.
+
+Tue Nov 15 19:12:03 1994 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (specs, float.h-cross, xlimits.h): Use temporary instead
+ of redirecting output directly to make target.
+ ($(MD_FILE), xsys-protos.h): Likewise.
+ (mostlyclean): Remove any of these temporaries.
+ (libgcc2.a): Add missing semicolon in commented code that could cause
+ a /bin/sh syntax error if uncommented.
+
+Tue Nov 15 19:07:00 1994 Warner Losh (imp@village.org)
+
+ * i386/freebsd.h (NO_IMPLICIT_EXTERN_C): Define.
+
+Tue Nov 15 19:00:55 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * reorg.c (redundant_insn): Renamed from redundant_insn_p; all
+ callers changed.
+
+Tue Nov 15 18:57:46 1994 Jim Wilson (wilson@chestnut.cygnus.com)
+
+ * reorg.c (relax_delay_slots): When invert a conditional jump over a
+ single unconditional jump, invert the INSN_FROM_TARGET_P bit of insns
+ in the delay slots.
+
+ * reorg.c (redundant_insn_p): Change return type to rtx. Return the
+ redundant insn instead of true.
+ (update_reg_unused_notes): New function.
+ (fill_slots_from_thread): Call update_reg_unused_notes after one of
+ the redundant_insn_p calls.
+
+Tue Nov 15 18:39:33 1994 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * expmed.c (expand_divmod, case ROUND_DIV_EXPR): Implement.
+ * expr.c (do_jump_by_parts_greater_rtx): No longer static.
+ (expand_expr): Delete code for plain `abs'.
+ * optabs.c (expand_abs): New function, code moved from expand_expr.
+ * expr.h: Declare expand_abs.
+
+Tue Nov 15 12:11:26 1994 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.c (output_cbranch): Improve code for short backwards branch
+ with an unfilled delay slot.
+ (output_bb, output_dbra, output_movb): Likewise.
+
+Tue Nov 15 09:55:31 1994 Doug Evans (dje@cygnus.com)
+
+ * jump.c (delete_insn): Delete labels in ADDR_VECs and
+ ADDR_DIFF_VECs if their use count becomes zero.
+ * flow.c (flow_delete_insn): New function.
+ (find_basic_blocks): Call it to physically delete insns in
+ unreachable blocks. When scanning blocks after dead ones,
+ start scanning after the dead one (not at the dead one).
+ If there are lots of unreachable blocks, make another pass to squeeze
+ them out (this reduces memory usage in some pathalogical cases by a
+ significant amount without resorting to sparse matrices).
+ (propagate_block): Make code a bit more efficient (for example,
+ no need to test `loop_depth' for each insn, just notes).
+
+Tue Nov 15 09:42:31 1994 Lynn Shumaker (shumaker@saifr00.ateng.az.honeywell.com)
+
+ * function.c (assign_stack_temp): Compute size of slot after
+ assign_stack_local has accounted for alignment.
+
+Mon Nov 14 23:47:20 1994 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow
+ (lo_sum (reg) (unspec (symref))).
+
+ * pa.md (pic2_lo_sum): New pattern matching when -fPIC using UNSPEC.
+ * pa.c (legitimize_pic_address): Generate an insn matching
+ pic2_lo_sum when -fPIC.
+
+ * pa.md (pic_highpart): Add missing mode for PLUS.
+ (add_high_const): Likewise.
+
+ * pa.md (matcher for plain lo_sum): Call abort if this happens
+ when generating pic or PIC.
+
+Mon Nov 14 23:47:20 1994 Jeffrey A. Law (snake.cs.utah.edu)
+
+ * Automatic generation of inline long call sequences when needed.
+ * pa.h (TARGET_LONG_CALLS): Delete. Replace all uses of with
+ TARGET_PORTABLE_RUNTIME.
+ (TARGET_MILLICODE_LONG_CALLS): New target flag.
+ * pa.c (output_function_prologue): Keep track of the total number
+ of code bytes emitted for each source file.
+ (output_call): Handle TARGET_PORTABLE_RUNTIME and millicode calls
+ for TARGET_MILLICODE_LONG_CALLS. Emit an inline long-call if
+ needed. If emitting an inline long-call, perform argument relocations
+ before the call if they are needed, unfill the delay slot of the
+ call if necessary.
+ * pa.md (define_delay for millicode): Disable the delay slot if
+ TARGET_MILLICODE_LONG_CALLS.
+ (millicode insns and indirect calls): Properly compute length for
+ both TARGET_PORTABLE_RUNTIME and TARGET_MILLICODE_LONG_CALLS.
+ (call_internal_symref): Properly compute the length when more
+ than 240000 bytes of code have already been output. Take
+ TARGET_MILLICODE_LONG_CALLS into account in the length
+ computation.
+
+ * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Define.
+ (ASM_FILE_END): Delete unneeded definition.
+
+ * Fast indirect call support.
+ * pa.h (TARGET_FAST_INDIRECT_CALLS): New target switch.
+ (TARGET_SWITCHES): Add "fast-indirect-calls" and inverse.
+ * pa.md (call_internal_reg, call_value_internal_reg): Generate
+ appropriate code for TARGET_FAST_INDIRECT_CALLS.
+
+ * PA PIC support.
+ * pa.c (secondary_reload_class): Refine. Readonly data needs a
+ secondary reload only during PIC generation. Loading a floating
+ point register with a constant requires a register from R1_REGS
+ during -fPIC code generation.
+ (read_only_operand): Constant pool entries are no longer read only
+ during PIC code generation.
+ (hppa_legitimize_address): If flag_pic is nonzero, then
+ immediately call legitimize_pic_address.
+ (emit_move_sequence): Call legitimize_pic_address to handle
+ constant data. Handle secondary reloads for PIC. Use
+ pic_label_operand rather than open coding the test. Handle
+ loading a LABEL_REF when generating PIC.
+ (legitimzie_pic_address): Handle constant data addressing for PIC
+ here. Fix loading of symbolic addresses for -fPIC generation.
+ (pic_label_operand): Renamed from pic_operand. Handle any read
+ only operand (such as constant data). Reject function addresses,
+ Accept SYMBOL_REF with the read-only bit set. Generalize to
+ handle (const (plus (reg) (int))).
+ (finalize_pic): Delete unused function.
+ (check_pic): Delete function.
+ (pic_pc_rtx): Delete variable definition.
+ (current_function_uses_pic_offset_table): Delete extern decl.
+ (force_reg, validize_mem): Likewise.
+ (output_global_address): Don't tack on "-$global$" when generating
+ PIC code.
+ (finalize_pic): Don't emit code for initialization of
+ hppa_save_pic_table_rtx here. Don't claim we USE
+ pic_offset_table_rtx at function end.
+ * pa.h (SELECT_RTX_SECTION): Define. During PIC generation
+ everything (in the constant pool) goes into the data space.
+ (PRINT_OPERAND_ADDRESS): Handle CONST_INTs during PIC
+ generation. Handle LO_SUM address during -fPIC generation.
+ (LEGITIMATE_CONSTANT_P): Reject function labels when generating
+ PIC code.
+ (GO_IF_LEGITIMATE_ADDRESS): Only accept pic_reg + SYMBOL_REF for
+ -fpic.
+ (EXTRA_SECTION_FUNCTIONS): For -fpic, use the TEXT section for
+ constants to avoid GAS lossage.
+ (OVERRIDE_OPTIONS): Delete.
+ (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED): Define.
+ (FINALIZE_PIC): Delete definition.
+ (INIT_EXPANDERS): Define. Clear hppa_save_pic_table_rtx here.
+ * pa.md: Use !flag_pic rather than calling check_pic.
+ (HImode high and lo_sum): Only accept const_int_operands.
+ (pic_load_label): Force output to be in %r1.
+ (pic_highpart): New pattern. Output must go into %r1. More
+ linker trickery.
+ (symbolic high and lo_sum): Disallow during PIC generation if
+ source is a symbolic operand. Handle CONST_INT LO_SUM during PIC
+ generation. Simplify.
+ (define_split for symbolic_operand load): Do not accept a symbolic
+ operand that is a pic_label_operand.
+ (pic_load_label): Name this pattern. Mask least significant bits
+ and optimize when a simple label is within reach of an ldo.
+ (call, call_value): Emit new-style USE information for
+ pic_offset_table_rtx. Emit code for initialization of
+ hppa_save_pic_table_rtx and wrap it into push_topmost_sequence()
+ and pop_topmost_sequence() calls.
+
+ * Various PA configuration cleanups.
+ * configure (hppa*-*-h[pi]ux): Use xm-pahpux.h and x-pa-hpux instead
+ of the redundant hiux files. Likewise for t-pa instead of t-pa-hpux.
+ * config/pa/xm-pahiux.h: Delete. It's identical to xm-pahpux.h.
+ * config/pa/x-pa-hiux: Delete. It's idential to x-pa-hpux.
+ * config/pa/x-pa (TAROUTOPTS): Delete. It was an HPUX host
+ conditional, and x-pa is a BSD host target fragment.
+ (INSTALL_HEADERS): Define.
+ (STMP_FIXPROTO): Define.
+ * config/pa/t-pa (INSTALLED_H): Delete.
+ * config/pa/t-pa-hpux: Delete, it's identical to t-pa.
+ * config/pa/pa-hiux.h: Include "pa/pa-hpux.h" and just override
+ the CPP predefines.
+ (CPP_PREDEFINES): Add -A assertions.
+ * config/pa/{pa1-hiux.h, pa-ghiux.h, pa1-ghiux.h}: Likewise.
+ * config/pa/pa-ghpux.h: Simplify by including pa-hpux.h.
+ (DBX_DEBUGGING_INFO): Define.
+ (DEFAULT_GDB_EXTENSIONS): Define.
+
+Mon Nov 14 19:16:00 1994 Dennis Glatting <war04!dennisg@kerby.ocsg.com>
+
+ * fixincludes: Fixes for NextStep 3.2. Remove ``__const__'' from
+ sin and cos prototypes in ansi/math.h. Remove keyword ``template''
+ from bfd/libc.h. Remove ``volatile'' from abort in bsd/libc.h
+ and abort and exit in ansi/stdlib.h.
+
+Mon Nov 14 18:54:28 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * i386/x-winnt (EXTRA_PROGRAM): Match target name.
+
+Mon Nov 14 18:48:21 1994 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * freebsd.h (INCLUDE_DEFAULTS): Move definition beyond
+ FREEBSD_NATIVE conditional.
+ (FUNCTION_PROFILER): Move down to make file more similar to
+ netbsd-i386.h.
+ (DEFAULT_TARGET_MACHINE, etc): Comment our this braindamage!
+
+Mon Nov 14 18:46:18 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): If IS_CONST and VALREG == 0, end our
+ sequence and emit the insns.
+
+Sat Nov 12 06:35:42 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * Version 2.6.2 released.
+
+Sat Nov 12 06:35:21 1994 Torbjorn Granlund (tege@cygnus.com)
+
+ * expmed.c (expand_divmod, case TRUNC_DIV_EXPR): Promote signed
+ division by 0x80000000 to unsigned.
+
+Fri Nov 11 17:07:35 1994 Michael Meissner (meissner@osf.org)
+
+ * c-common.c (decl_attributes): Add double-underscore version of
+ printf and scanf for format type.
+
+Fri Nov 11 16:38:04 1994 Jim Wilson (wilson@chestnut.cygnus.com)
+
+ * mips-tdump.c: Include <time.h>. Delete ctime prototype.
+
+Fri Nov 11 14:16:00 1994 Holger Teutsch <holger@hotbso.rhein-main.de>
+
+ * clipper.md (movsi+1): Allow r->m move during reloading.
+
+Fri Nov 11 12:40:51 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * c-decl.c (duplicate_decls): Properly merge decls with
+ differing DECL_CONTEXT.
+
+ * function.c (preserve_rtl_expr_result): find_temp_slot_from_address
+ now used.
+ Don't bring the temp slot to an inner level than it was.
+ (assign_stack_temp): Always initialize p->rtl_expr.
+
+ * m68k/mot3300g.h (SPACE_AFTER_L_OPTION): Deleted.
+
+Thu Nov 10 18:50:52 1994 Kresten Krab Thorup (krab@next.com)
+
+ * objc/list.h: Add ifndef/define for repeated inclusion.
+
+Thu Nov 10 18:02:58 1994 Michael Meissner <meissner@pasta.osf.org>
+
+ * c-common.c (decl_attributes): Check for attributes with leading
+ and trailing double underscores.
+
+Thu Nov 10 17:55:07 1994 Chris Metcalf (metcalf@catfish.lcs.mit.edu)
+
+ * fixincludes: Make argument type const for popen and tempnam in
+ stdio.h and for strdup in string.h, for OSF/1 V3.0.
+
+ * va-alpha.h (va_arg): Add cast to void * to suppress warning.
+
+Thu Nov 10 17:48:21 1994 Walter Misar (hrz.th-darmstadt.de)
+
+ * m68k/hp320.h (FUNCTION_{PRO,EPI}LOGUE): Don't define.
+ (IMMEDIATE_PREFIX, REGISTER_PREFIX): Define.
+
+Thu Nov 10 15:04:57 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * m68k/crds.h (FUNCTION_{PRO,EPI}LOGUE): Add code to adjust stack
+ when no frame pointer.
+ * m68k.c (output_function_epilogue): Use a1 as scratch, not a0.
+ * m68k/tower-as.h (FUNCTION_{PRO,EPI}LOGUE): No longer defined.
+ (FUNCTION_EXTRA_EPILOGUE): Define.
+ * m68k/tower.h (REGISTER_PREFIX, IMMEDIATE_PREFIX): Define.
+
+ * i386/x-sco, i386/x-sco4 (CLIB): Add -lPW.
+ (ALLOCA): Delete.
+
+ * c-common.c ({print,scan}_char_table): Allow `L' modifier
+ for integer output formats.
+ (check_format_info): Treat `ll' like `q'.
+
+ * rs6000.md (movsi): In TOC symbol case, use "la" for PowerPC.
+ (movdi): Handle TOC symbol just like movsi.
+
+ * objc-act.c (init_objc): Add missing casts to args of bcopy.
+ (lang_init): Ensure line number is 0, not -1.
+
+Tue Nov 8 07:51:53 1994 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (dump_single_macro, dump_defn_1): If -traditional,
+ dump macros in traditional style. This also avoids a bogus error
+ message if the macro uses traditional stringizing.
+
+Mon Nov 7 21:28:13 1994 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>
+
+ * protoize.c [!POSIX]: Only define O_RDONLY and O_WRONLY if not
+ already defined.
+
+Mon Nov 7 19:33:31 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * combine.c (try_combine): Update split_code after converting MULT
+ to ASHIFT.
+
+Mon Nov 7 12:26:24 1994 Torbjorn Granlund <tege@cygnus.com>
+
+ * rs6000.md (DImode load-with-update matcher): Fix typo in MEM mode.
+ (compare patterns): Fix several typos, SImode => CCmode.
+ * sh.md (subdi3): Delete % from constraints.
+ * 1750a.md (subqi3): Likewise.
+ * clipper.md (subdi3): Likewise.
+ * i370.md (subqi3): Likewise.
+ (anonymous subqi3 matcher): Likewise.
+ * i860.md (subdi3): Likewise.
+ * dsp16xx.md (mulqi3): Fix typo in MULT mode.
+ * elxsi.md (one_cmplsi2): Fix typo in NOT mode.
+
+Mon Nov 7 12:47:37 1994 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68kv4.h (ASM_IDENTIFY_GCC): Use proper definition for SGS assembler.
+
+Mon Nov 7 11:02:25 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c (process_command): Ignore LIBRARY_PATH and LPATH if
+ cross-compiler.
+
+Sun Nov 6 07:23:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cross-test.c (foo): Return value for BU in range for shifts.
+
+Sat Nov 5 14:25:36 1994 Jim Wilson (wilson@chestnut.cygnus.com)
+
+ * m68k.h (PREFERRED_RELOAD_CLASS): FP constants rejected by 'G'
+ are OK for class FP_REGS.
+
+Sat Nov 5 14:08:31 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (store_one_arg): Preserve any temp slots whose address
+ may have been taken.
+
+ * real.c (GET_REAL, PUT_REAL): Cast args to bcopy to char *.
+ * reload1.c (reload): Likewise.
+ * i386.c ({save,restore}_386_machine_status): Likewise.
+ * reg-stack.c (subst_asm_stack_regs): Likewise.
+ (BLOCK_NUM): Rework to avoid cast of abort to int *.
+ (find_blocks): Don't use BLOCK_NUM on lhs.
+ (reg_to_stack, record_arg_reg_life): Cast arg to bzero to char *.
+
+Sat Nov 5 08:29:45 1994 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (rescan): Do not preserve newlines after macro name
+ if rescanning a macro expansion. Instead, preserve them if
+ not outputting marks.
+
+Fri Nov 4 17:25:29 1994 John David Anglin (dave@hiauly1.hia.nrc.ca)
+
+ * vax.c: Include tree.h and VMS-specific functions #ifdef VMS_TARGET.
+ * vms.h (VMS_TARGET): Define.
+
+Fri Nov 4 17:19:30 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * bi-arity.c (main): Cast enum to char in output.
+ * bc-emit.c (bc_emit_bytecode): Add missing cast.
+
+Thu Nov 3 14:17:22 1994 Mike Stump <mrs@cygnus.com>
+
+ * libgcc2.c (__register_exceptions): Find max ending of a segment for
+ end, not min.
+ * libgcc2.c (__unwind_function): New function to support stack
+ unwinding on i[34]86 for g++ exception handling.
+
+Thu Nov 3 18:55:42 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (c-parse.o, c-lex.o): c-parse.h is in $(srcdir).
+
+Thu Nov 3 18:11:56 1994 John F Carr (jfc@mit.edu)
+
+ * rs6000.md (movsi): New alternative for SYMBOL_REF source operand.
+ * rs6000.c (print_operand): New code '*' to print TOC register number.
+ * rs6000.h (EXTRA_CONSTRAINT): 'R' matches a SYMBOL_REF for TOC entry.
+ (PRINT_OPERAND_PUNCT_VALID_P): Recognize '*'.
+ (PREDICATE_CODES): input_operand can now match SYMBOL_REF.
+
+Thu Nov 3 18:03:24 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * cccp.c: TOOL_INCLUDE_DIR is not C++-aware.
+
+Thu Nov 3 17:23:30 1994 Jim Wilson (wilson@chestnut.cygnus.com)
+
+ * mips.c (mips_output_external): Exclude alloca from list of
+ used external functions.
+
+Tue Nov 1 19:19:41 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Version 2.6.1 released.
+
+Tue Nov 1 18:51:00 1994 Torbjorn Granlund (tege@cygnus.com)
+
+ * pa.md (add_high_const): Add missing mode for PLUS.
+
+Tue Nov 1 18:39:53 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * cse.c (simplify_unary_operation, case TRUNCATE): Set LV and HV.
+
+Tue Nov 1 18:36:23 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vax.c (struct extern_list): Put code back outside of #ifdef VMS.
+ (vms_check_external, vms_flush_pending_externals): Likewise.
+
+Mon Oct 31 16:18:12 1994 Michael Meissner <meissner@pasta.osf.org>
+
+ * i386/i386.md (movsf, movdf, movxf): If we are moving floating
+ point constants to a non-memory location that aren't 0 or 1,
+ assume we need the pic register if -fpic.
+
+Mon Oct 31 13:26:45 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't allow TFmode LO_SUM.
+ * sparc.md (movtf+3): Disable pattern.
+
+Mon Oct 31 08:11:47 1994 Doug Evans <dje@canuck.cygnus.com>
+
+ * expr.c (expand_expr, COND_EXPR case): Don't use original target as
+ a temp if it's a volatile mem ref. Finish previous patch (don't
+ expand "X ? A & 1 : A" as "A & (X != 0)").
+
+Mon Oct 31 08:07:09 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vax.c: Include tree.h #ifdef VMS.
+ (struct extern_list): Move inside #ifdef VMS; add SIZE and IN_CONST
+ fields; make `extern_head' static; add second list head.
+ (vms_check_external): Move inside #ifdef VMS; give new args; maintain
+ list of both pending external symbols and previously defined ones.
+ (vms_flush_pending_externals): New function.
+ * vax/vms.h (ASM_GLOBALIZE_LABEL): Pass new args to vms_check_external.
+ (ASM_OUTPUT_EXTERNAL): Just call vms_check_external.
+ (ASM_{,FINISH_}DECLARE_OBJECT_NAME, ASM_FILE_END): Define.
+
+Mon Oct 31 08:00:59 1994 Michael Gschwind (mike@vlsivie.tuwien.ac.at)
+
+ * pdp11.h (TARGET_SWITCHES): Add -split and -no-split.
+ (TARGET_SPLIT, TARGET_NOSPLIT): New macros.
+ (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Abort if -split.
+
+Mon Oct 31 07:53:34 1994 Warner Losh <imp@village.org>
+
+ * i386/x-freebsd (CLIB): Add definition.
+
+Mon Oct 31 07:49:17 1994 Jeffrey A Law <law@snake.cs.utah.edu>
+
+ * reorg.c (mark_set_resources): Properly handle SUBREGs.
+
+Mon Oct 31 07:24:32 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case COMPONENT_REF): Don't extract
+ field from a CONSTRUCTOR if it already has a TREE_CST_RTL.
+ (expand_expr, case ADDR_EXPR): Call mark_temp_addr_taken
+ on the temporary made when operand needs to be stored into memory.
+ * function.c (preserve_temp_slots): Preserve anything whose
+ address was taken when X is zero.
+
+Sun Oct 30 15:11:51 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * msdos/top.sed, i386/config-nt.sed: Update version to 2.6.1.
+ * pa/t-pa-hpux: Add missing newline at end.
+
+Sat Oct 29 21:16:29 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (operand_subword): Fix typo: HOST_BITS_PER_INT
+ should be HOST_BITS_PER_WIDE_INT.
+
+Fri Oct 28 19:13:13 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu)
+
+ * objc/misc.c (__objc_xcalloc): Use calloc instead malloc/bzero.
+
+Fri Oct 28 19:07:53 1994 Michael Gschwind (mike@vlsivie.tuwien.ac.at)
+
+ * pdp11.h (TRAMPOLINE_SIZE): Install real implementation.
+ (INITIALIZE_TRAMPOLINE, TRAMPOLINE_TEMPLATE): Likewise.
+
+Fri Oct 28 19:01:27 1994 Craig Burley (burley@gnu.ai.mit.edu)
+
+ * Makefile.in (stage?-start): Add semicolon between fi and done.
+
+Fri Oct 28 17:12:26 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Don't record a DEST if paradoxical SUBREG
+ and SRC is a SIGN_EXTEND or ZERO_EXTEND.
+
+ * alpha.md (reload_outqi): Correctly handle scratch assignments
+ for unaligned case when ADDR is a REG.
+
+Fri Oct 28 07:55:40 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.md (adddi3): Fixup code in case operands[0] is equal
+ to operands[2].
+
+Thu Oct 27 18:58:39 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (count_possible_groups): Fix typo in setting
+ counted_for_groups.
+
+Thu Oct 27 15:30:41 1994 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * c-typeck.c (process_init_element): In the case of
+ [LO .. HI] = VALUE, use save_expr to only evaluate VALUE once.
+
+Thu Oct 27 15:15:25 1994 Torbjorn Granlund (tege@rtl.cygnus.com)
+
+ * gcc.c (process_command): Don't forget to split -Wl arguments at
+ commas.
+
+ * gcc.c (process_command): Handle -Wl, and -Xlinker similar to -l,
+ i.e., preserve their order with respect to linker input files.
+
+Thu Oct 27 13:11:16 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * configure (i[345]86-*-winnt3*): Allow any version 3.x.
+ Don't use a t-winnt file and move x-winnt to config/i386.
+ * i386/x-winnt: Build ld-winnt.exe only on host.
+ * winnt/t-winnt: Deleted.
+
+Thu Oct 27 13:05:16 1994 Mike Collison (collison@chianti.sw.stratus.com)
+
+ * reload.c (debug_reload): New function to print reload info
+ set up by find_reloads.
+
+Wed Oct 26 18:27:03 1994 David Mosberger-Tang <davidm@piston.cs.arizona.edu>
+
+ * alpha.h (FUNCTION_PROFILER): Use $28 instead of $27.
+ (LINK_SPEC): Pass -pg to linker.
+ (LIB_SPEC): Link in -lprof1 with -pg, not -lprof2.
+ (STARTFILE_SPEC): USe gcrt0.o if -pg, not mcrt0.o.
+
+Wed Oct 26 18:22:34 1994 Doug Evans (dje@cygnus.com)
+
+ * expr.c (expand_expr, COND_EXPR case): Don't expand
+ "X ? A & 1 : A" as "A & (X != 0)".
+
+Wed Oct 26 18:06:52 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * winnt/ld.c (expand_lib, main): Fix off-by-one bugs in several
+ calls to malloc.
+
+Wed Oct 26 22:00:09 1994 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * winnt/t-winnt: Remove some spurious blank lines.
+
+Wed Oct 26 14:14:39 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (REAL_NM_FILE_NAME): Use /usr/ccs/gcc/bfd-nm
+ instead of /usr/ccs/bin/nm, since the GNU nm does not output stab
+ symbols by default.
+
+Wed Oct 26 13:47:06 1994 Michael Gschwind (mike@vlsivie.tuwien.ac.at)
+
+ * config.sub (pdp11): New machine name.
+ * configure (pdp11-*-*): New configuration.
+ * pdp11.c, pdp11.h, pdp11.md, xm-pdp11.h: New files.
+
+Wed Oct 26 07:33:40 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (find_basic_blocks): Ensure each live basic block is
+ actually reachable.
+ (life_analysis): Clean up handling of basic_block_drops_in.
+
+Tue Oct 25 18:40:12 1994 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (rescan): ".." no longer terminates a preprocessing
+ number, since that's incompatible with the C standard.
+
+Tue Oct 25 16:16:40 1994 Michael Dobson (dobson@info.usuhs.mil)
+
+ * we32k.h (CPP_PREDEFINES): Define u3b2, not u3b.
+
+Tue Oct 25 16:15:27 1994 Jim Wilson (wilson@cygnus.com)
+
+ * reorg.c (fill_slots_from_thread): Update THREAD if it is split.
+
+Mon Oct 24 00:12:46 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * toplev.c (lang_options): Add -f{no-,}access-control.
+
+Mon Oct 24 06:14:03 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * arm/arm.md (peepholes for call followed by branch): Disable.
+
+Sun Oct 23 08:54:27 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * arm/x-riscix (INSTALL): Invoke install.sh with -c flag.
+
+Fri Oct 21 00:42:08 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * Makefile.in (LIB2FUNCS): Add _pure.
+
+ * libgcc2.c (__pure_virtual): New function to go into vtable
+ entries for pure virtual methods instead of abort.
+
+Thu Oct 20 18:40:36 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (define_split comparison op with power of two minus 1):
+ Fix typo.
+
+Thu Oct 20 13:14:24 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * collect2.c (add_to_list): Check for duplicates.
+
+ * alpha/alpha.h (LINK_SPEC): Pass -shared through; don't
+ pass -init __main if -shared.
+ (STARTFILE_SPEC): Wrap startfiles in %{!shared:}.
+ (INIT_NAME_FORMAT): Define.
+ (FINI_NAME_FORMAT): Define.
+ * alpha/osf12.h (LINK_SPEC): Ditto.
+ * alpha/gdb-osf12.h: #include osf12.h instead of alpha.h
+
+ * gcc.c (STARTFILE_SPEC): Wrap startfiles in %{!shared:}.
+
+Thu Oct 20 16:07:46 1994 Jim Wilson (wilson@cygnus.com)
+
+ * unroll.c (loop_iterations): Move all failure exits after the
+ computation of final_value.
+
+ * mips.md (movdf_internal2+1): Disable when TARGET_64BIT.
+
+ * i960.c (VARARGS_STDARG_FUNCTION): New macro.
+ (i960_function_name_declare, output_function_profiler,
+ i960_function_epilogue, i960_output_call_insn, i960_output_ret_insn,
+ i960_reg_parm_stack_space): Use it.
+ (compute_frame_size): Don't use current_function_pretend_args_size.
+ (i960_function_arg_advance, i960_function_arg): Don't use parameter
+ named.
+ (i960_setup_incoming_varargs): No need to adjust first_reg_offset
+ after setting it. Don't save last named argument to stack.
+ Don't set pretend_size.
+ * i960.h (SIGNED_CHAR_SPEC): Use #if instead of ?:.
+ * va-i960.h (va_start): Use builtin_arts_info instead of
+ builtin_next_arg.
+
+ * cse.c (merge_equiv_classes, cse_insn): Call rehash_using_reg
+ after insert_regs.
+ (canon_hash): Don't use qty_const to compute hash code for a
+ register.
+
+Thu Oct 20 09:41:51 1994 Richard Kenner (kenner@vlsi1.ultra.nyu)
+
+ * stor-layout.c (variable_size): Return SIZE if it contains
+ a PLACEHOLDER_EXPR.
+
+Tue Oct 18 19:51:24 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * collect2.c (main): Check REAL_*_FILE_NAME first.
+
+Wed Oct 19 15:55:15 1994 David J. MacKenzie <djm@duality.gnu.ai.mit.edu>
+
+ * config.sub: Add licensing exception for Autoconf.
+
+Wed Oct 19 06:43:46 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.h (FUNCTION_BLOCK_PROFILER): Don't bother preserving
+ eax if -fpic, since it is a call clobbered register anyway. Fix -fpic
+ code so that it is correct.
+
+Tue Oct 18 18:00:23 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Move
+ macros here from osfrose, netbsd, and freebsd ports. Remove
+ assumptions that the assembler is gas. Rewrite and fix the
+ instructions produced with -fpic.
+
+ * i386/osfrose.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Delete.
+ * i386/freebsd.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Delete.
+ * i386/netbsd-i386.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER):
+ Delete.
+
+Tue Oct 18 20:27:29 1994 Doug Evans (dje@cygnus.com)
+
+ * sparc.h (FRAME_POINTER_REQUIRED): Require frame pointer if
+ non-leaf flat function.
+ * sparc.c (sparc_frame_info): Combine members gp_sp_offset and
+ fp_sp_offset into reg_offset. All uses changed.
+ (RETURN_ADDR_REGNUM): New macro.
+ (RETURN_ADDR_MASK, FRAME_POINTER_MASK): New macros.
+ (sparc_flat_compute_frame_info): Rename local mask to gmask.
+ Only ensure reg save area is 8 byte aligned if necessary.
+ (sparc_flat_save_restore): New arguments base_reg, offset, gmask,
+ and fmask. All callers changed. No longer use %g2 to save regs
+ in big stack frames.
+ (sparc_flat_output_function_prologue): Delete local tsize.
+ Reorder storing of previous frame pointer and return address reg to
+ make it easier for gdb to identify flat functions. Decrement %sp
+ twice when saving call-saved regs in big frames.
+ Count fp regs as 4 bytes in assembler comment.
+ (sparc_flat_output_function_epilogue): Likewise when restoring
+ call-saved regs.
+
+Tue Oct 18 19:33:55 1994 Mike Collison (collison@sw.stratus.com)
+
+ * reload1.c (reload): Correctly compute group additional needs when
+ the return register cannot be used as a spill register.
+
+Tue Oct 18 16:17:26 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * mips.h (ASM_SPEC): Pass -mcpu= option to GNU as.
+
+Tue Oct 18 08:39:49 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (propagate_block): Call mark_used_regs to show global regs
+ used by call.
+ * combine.c (can_combine_p): Don't combine into CALL_INSN where
+ DEST is a global reg.
+
+ * c-decl.c (start_function): Save immediate_size_expand
+ and initialize it to zero in case nested function.
+
+ * pa.c (non_hard_reg_operand): New function.
+ * pa.md (reload_{in,out}*): Replace general_operand with
+ non_hard_reg_operand.
+
+Fri Oct 14 18:35:30 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * gcc.c (default_compilers): Treat files with an extension of .c++
+ as C++ code.
+
+Mon Oct 17 19:21:57 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * configure (rs6000-ibm-aix4.1*): New configuration.
+ * rs6000/aix41.h: New file.
+
+Mon Oct 17 19:15:14 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * va-mips.h (va_arg): Add little endian mips3 support.
+
+ * sparc.h (RETURN_IN_MEMORY): Return true for TCmode values.
+
+ * README.IRIX5: Delete.
+ * install.texi: Update Irix 5 debugging info.
+
+ * mips.c (function_prologue): Only emit line number when SDB_DEBUG.
+
+ * configure: Delete new argument, --noguess. Default build from
+ host if host specified, otherwise guess build. Fix typo in
+ setting build from host.
+
+Mon Oct 17 15:54:56 1994 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * calls.c (expand_call, emit_library_call, emit_library_call_value):
+ Allways adjust current_function_outgoing_args_size, even #ifndef
+ ACCUMULATE_OUTGOING_ARGS. (Useful for stack overflow checking.)
+ * function.c (current_function_outgoing_args_size): Update comment.
+
+Mon Oct 17 18:49:01 1994 Paul Eggert <eggert@twinsun.com>
+
+ * cccp.c (rescan): Preserve newlines after macro names at the top level
+ since this is more likely to do the right thing with line numbers.
+
+Mon Oct 17 11:31:42 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (gen_reload): Renamed from gen_input_reload.
+ (emit_reload_insns): Delete SECONDARY_MEM_NEEDED case for input
+ reloads that can't happen and doesn't work.
+ Fix errors in use of reload_outxx insns.
+ Simplify output reload code by using gen_reload.
+ * reload.h (gen_reload): Renamed from gen_input_reload.
+
+Mon Oct 17 09:26:57 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * unroll.c (copy_loop_body, case JUMP_INSN): Don't abort if invert_exp
+ fails. Instead, redirect the jump around an unconditional branch.
+
+Sun Oct 16 05:02:23 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * emit-rtl.c (add_insn_{before,after}): Don't abort because AFTER was
+ deleted when not optimizing.
+
+Fri Oct 14 19:26:28 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.c (emit_move_sequence): Handle secondary reload when loading
+ a constant into SAR.
+
+Fri Oct 14 10:29:31 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * fixincludes: Fix X11/Intrinsic.h for RISCiX to remove ___type from
+ XtOffset.
+ Add all files that receive special attention to REQUIRED, so that
+ dependent copies are done if necessary.
+
+ * getpwd.c: Always use getwd if HAVE_GETWD is defined.
+ * arm/xm-arm.h: Define HAVE_GETWD.
+
+ * arm/x-riscix, arm/t-riscix: New files
+ * configure (arm-*-riscix*): Use them.
+
+Thu Oct 13 17:12:27 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * i960.md (call, call_internal, call_value, call_value_internal):
+ Use memory_operand not general_operand.
+
+ * optabs.c (expand_fix): Correct typo with FIX/UNSIGNED_FIX
+ REG_NOTES.
+
+Thu Oct 13 10:44:32 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * genattrtab.c (optimize_attrs): Don't do anything if
+ num_insn_ents is zero.
+
+Wed Oct 12 19:06:48 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * mips/mips.c (mips_expand_prologue): Handle types that need
+ constructing. Rename TYPE to PASSED_TYPE and use consistently.
+
+Wed Oct 12 11:32:05 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * genattrtab.c (num_insn_ents): New static variable.
+ (remove_insn_ent): Decrement num_insn_ents.
+ (insert_insn_ent): Increment num_insn_ents.
+ (optimize_attrs): Use xmalloc to allocate all the attr_value_list
+ structures at once, rather than using alloca for each one.
+
+Wed Oct 12 09:17:34 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * optabs.c (??hf2_libfunc): Define like ??sf2_libfunc.
+ (emit_float_lib_cmp): Call HFmode library functions.
+ (init_optabs): Set names for HFmode comparison functions.
+ * expr.h (??hf2_libfunc): Add declarations, like ??sf2_libfunc.
+
+Tue Oct 11 19:20:48 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * winnt/ld.c (main): Pass -debug:full -debugtype:coff.
+ * winnt/t-winnt: Rework rules for ld.
+ * i386/config-nt.bat: Renamed from config/i386/config-winnt.bat.
+ Make specific for x86, not all winnt; change filenames.
+ * i386/config-nt.sed: Remove -g from CFLAGS.
+ Reflect changes to t-winnt and other minor changes.
+ * i386/x-winnt: Renamed from winnt/x-winnt.
+ * i386/config-nt.sed: Renamed from config/winnt/top.sed.
+
+Tue Oct 11 18:40:41 1994 Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de)
+
+ * rs6000.h (ASM_DECLARE_FUNCTION_NAME): Always put out .lglobl
+ for static functions.
+
+Mon Oct 10 19:19:51 1994 Alex T. Ramos (ramos@engr.latech.edu)
+
+ * expr.c (convert_move): Add TImode conversions.
+
+Mon Oct 10 18:46:44 1994 Alex Dreyzen (alex@alex.jf.intel.com)
+
+ * optabs.c (expand_float): Copy TEMP to TARGET when
+ making recursive call and adjusting.
+
+Mon Oct 10 07:10:25 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/linux.h (DEFAULT_PCC_STRUCT_RETURN): Do not define as 0 if
+ LINUX_ELF is defined.
+ (perform.h): Include perform.h to define asm statements to use for
+ libgcc1.a builds.
+
+ * i386/linuxelf.h (DEFAULT_PCC_STRUCT_RETURN): Define as 1.
+ (RETURN_IN_MEMORY): Don't define.
+
+Sun Oct 9 11:49:20 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.md (movsf_mem): Add & constraint, so that the scratch
+ register does not clobber the destination address.
+
+Sun Oct 9 12:40:43 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * arm.md (reload_outdf): Don't call gen_addsi3 if the address is just
+ a register.
+
+Sat Oct 8 11:16:50 1994 Doug Evans (dje@cygnus.com)
+
+ * objc/archive.c (__objc_free): New function.
+ (__objc_finish_read_root_object): Use it.
+
+Fri Oct 7 19:23:03 1994 J.T. Conklin (jtc@cygnus.com)
+
+ * ginclude/stddef.h: Netware uses _SIZE_T_DEFINED_, _WCHAR_T_DEFINED_.
+
+Fri Oct 7 12:45:43 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.c (legitimate_address_p): Disable SUBREGs as either
+ the index or base register.
+
+Fri Oct 7 08:24:44 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * i386/gnu.h (CPP_PREDEFINES): Define __HURD__.
+
+ * collect2.c (my_strerror): If HAVE_STRERROR defined, call strerror.
+ * xm-gnu.h (HAVE_STRERROR): Define.
+
+ * function.c (preserve_temp_slots): If X cannot be a temp
+ slot, preserve all things whose address was taken at the
+ present level.
+
+ * function.c (assign_stack_temp): Abort if SIZE == -1.
+
+ * expr.c (safe_from_p): If EXP has a variable size, assume safe.
+ (preexpand_calls): Don't preexpand a call that returns a variable-
+ sized object.
+
+ * emit-rtl.c (add_insn_{after,before}): Fix error in last change.
+
+Thu Oct 6 09:18:28 1994 Kresten Krab Thorup (krab@next.com)
+
+ Adam Fedor (fedor@hopper.colorado.edu)
+ * objc/archive.c (__objc_finish_read_root_object): Delay freeing
+ of back-patch list.
+
+ Andrew McCallum (mccallum@cs.rochester.edu)
+ * objc/objc.h (BOOL): Changed from char to unsigned char.
+
+Thu Oct 6 08:17:04 1994 Stan Cox (coxs@dg-rtp.dg.com)
+
+ * m88k/m88k.c (emit_move_sequence): If operand1 is an invalid PIC
+ address, then legitimize it before doing anything else.
+
+Thu Oct 6 06:54:03 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Don't call force_const_mem on (const (truncate)).
+
+ * expr.c (store_expr): Don't clobber TEMP with address.
+
+ * reorg.c (try_merge_delay_insns): Update THREAD if it is split.
+
+ * function.c (struct temp_slot): New field addr_taken.
+ (assign_stack_temp): Initialize it.
+ (mark_temp_addr_taken): New function.
+ (preserve_temp_slots): Decrement level of things at same level
+ but whose address has been taken.
+ * expr.c (expand_expr, case ADDR_EXPR): Call mark_temp_addr_taken.
+
+Wed Oct 5 14:17:39 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * fold-const.c (fold, COMPONENT_REF): Don't die if the CONSTRUCTOR
+ doesn't initialize the field we want.
+
+Wed Oct 5 11:38:48 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.c (legitimize_pic_address): Changes to support
+ LABEL_REF references when using -fpic.
+ (output_pic_addr_const): Ditto.
+ (print_operand_address): Ditto.
+
+ * i386/i386.md (movsi insn): Changes to support LABEL_REF
+ references when using -fpic.
+ (movsi_lea): Name insn supporting lea instruction so it shows up
+ more clearly when doing -dp.
+
+Wed Oct 5 06:56:36 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c (try_merge_delay_insns): Update THREAD if deleting first
+ insn in it.
+
+Wed Oct 5 01:19:14 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * configure (i[345]86-*-gnu*): Set xm_file=i386/xm-gnu.h.
+ * config/i386/xm-gnu.h: New file.
+ * config/xm-gnu.h: New file.
+ * config/i386/gnu.h: Move #include <fcntl.h> out of here, into
+ config/xm-gnu.h.
+
+Tue Oct 4 23:19:28 1994 Michael Meissner <meissner@pasta.osf.org>
+
+ * protoize.c (POSIX includes): If POSIX is defined, include
+ sys/wait.h to get WIFSIGNALED, WTERMSIG, WIFEXITED, and
+ WEXITSTATUS.
+
+Tue Oct 4 21:48:02 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu>
+
+ * config/i386/gnu.h: Include <fcntl.h> to get O_RDONLY definition.
+ * gcc.c (O_RDONLY): Define macro iff not already defined.
+ (read_specs): Second arg to open should be O_RDONLY, not constant 0.
+
+Tue Oct 4 19:06:38 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (do_jump_for_compare): Properly scan insns when
+ branch is at start of sequence.
+
+Tue Oct 4 16:53:54 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * gcc.c, collect2.c, protoize.c (WIFSIGNALED): Define if not
+ already defined.
+ (WTERMSIG, WIFEXITED, WEXITSTATUS): Likewise.
+ * gcc.c (execute): Use them.
+ * collect2.c (do_wait): Likewise.
+ * protoize.c (gen_aux_info_file): Likewise.
+
+Tue Oct 4 16:38:06 1994 Michael Meissner <meissner@pasta.osf.org>
+
+ * i386/i386.h (RETURN_IN_MEMORY): Define so that large types such
+ as complex double values get returned like structures do, and
+ don't overwrite %ebx.
+
+Tue Oct 4 15:58:21 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * lynx-ng.h, lynx.h (PREFERRED_DEBUGGING_INFO): Add undef before
+ define.
+
+Tue Oct 4 05:12:02 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * config.sub: Translate -gnu/linux* to -linux*.
+
+Mon Oct 3 11:43:45 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * config.sub: Add support for MIPS variants: mips64, mipsel,
+ mips64el, mips64orion, mips64orionel, mips3*.
+
+Sun Oct 2 18:26:34 1994 Jason Merrill (jason@phydeaux.cygnus.com)
+
+ * function.c (push_function_context_to): Renamed from
+ push_function_context, adds argument to indicate that the new
+ function is not a nested function.
+ (push_function_context): Call it.
+ (pop_function_context{,_from}): Similarly.
+
+ * tree.c (save_tree_status): Add argument to indicate that the new
+ function is not a nested function.
+ (restore_tree_status): Ditto.
+
+Sun Oct 2 18:05:37 1994 Doug Evans (dje@cygnus.com)
+
+ * configure (i[34]86-*): Change to i[345]86-*.
+ (target_cpu_default): Treat i586 as an i486 (for now).
+
+Sun Oct 2 10:25:51 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * arm.md (movsf): If reloading, create a scratch from the target for
+ loading a constant into integer regs.
+ (movdf): Likewise.
+
+ Support for variants that fault on unaligned addrs:
+ * arm.h (TARGET_SHORT_BY_BYTES): New macro.
+ (TARGET_SWITCHES): Recognize switches -m[no-]short-load-bytes.
+ (TARGET_DEFAULT): Only define if not already done so.
+ (PROMOTE_MODE): Promote HImode unsigned if TARGET_SHORT_BY_BYTES.
+ (SECONDARY_INPUT_RELOAD_CLASS): Need a scratch for reloading HImode if
+ TARGET_SHORT_BY_BYTES.
+ * arm.c (arm_reload_in_hi): New function.
+ * arm.md (zero_extendhisi2, extendhisi2): Expand to suitable byte
+ sequence when TARGET_SHORT_BYTES and loading a mem.
+ (movhi_bytes, extendhisi2_mem): New expands.
+ (movhi): Call movhi_bytes to load a short from memory if
+ TARGET_SHORT_BY_BYTES.
+ (all matchers loading a short from memory): Don't match if
+ TARGET_SHORT_BY_BYTES.
+ (matcher for movhi when TARGET_SHORT_BY_BYTES): New pattern to cover
+ remaining valid cases.
+
+Sun Oct 2 08:54:30 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reg-stack.c (subst_stack_regs): Check for NOTE to see if insn was
+ deleted.
+
+ * reorg.c (fill_slots_from_thread): Update THREAD if deleting
+ its first insn.
+
+ * reg-stack.c (delete_insn_for_stacker): Don't set INSN_DELETED_P
+ on NOTE_INSN_DELETED.
+
+Sat Oct 1 20:42:33 1994 Chip Salzenberg <chip@fin.uucp>
+
+ * sco4.h (CPP_PREDEFINES): Remove i386, unix.
+ (CPP_SPEC): Add them here, so that they're undefined if -ansi.
+ Also add _i386 and _unix, which are always defined.
+ * x-sco (CLIB): Add "-lmalloc".
+ (ALLOCA): Define as "-lPW".
+ * x-sco4 (CC, OLDCC, RCCFLAGS, CCLIBFLAGS, CLIB, ALLOCA): From x-sco.
+ (X_CFLAGS): Remove.
+
+Sat Oct 1 14:27:45 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.md (movsf_push386): Rename to movsf_push_nomove.
+ (movdf_normal): Prefer to use float registers rather than general
+ purpose registers.
+
+Sat Oct 1 07:01:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * c-decl.c (shadow_label): Emit an error if the label is already
+ declared at this label scope.
+
+Sat Oct 1 06:44:58 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (add_insn_{before,after}): Abort if insertion point is
+ a deleted insn.
+ * jump.c (jump_optimize): When deleting a jump, properly set NEXT.
+ (duplicate_loop_exit_test): Don't insert NOTE_INSN_LOOP_VTOP
+ before deleted insn; insert first, then delete.
+
+ * gcc.c: Install omitted hunk from last diff.
+
+Fri Sep 30 18:26:11 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (add_insn_after): Abort if can't find AFTER and it
+ has no NEXT_INSN.
+ (add_insn_before): New function.
+ (emit_{insn,insns,jump_insn,call_insn,barrier,note}_before): Call it.
+
+Fri Sep 30 17:33:41 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * config.sub (windowsnt): Alias for winnt.
+ (winnt): New OS name.
+ * configure (extra_programs): New, like extra_parts.
+ (i[34]86-*-winnt3.1): New configuration.
+ * genattr.c (atoi): Remove declaration.
+ * getpwd.c: #ifdef WINNT, include direct.h.
+ * sdbout.c: Don't include syms.h for winnt.
+ * toplev.c: Don't include times.h for winnt.
+ (get_run_time): Just return zero for winnt.
+ (main): Don't print memory usage for OS/2 or winnt.
+ * cccp.c (main): Use DIR_SEPARATOR if defined.
+ Use "Include" environment variable instead of CPATH for winnt.
+ * gcc.c: Don't include sys/file.h for winnt; use process.h instead.
+ (concat): Now just concats two things; all callers changed.
+ (concat[346]): New functions.
+ (dir_separator_str): New variable.
+ (exec_prefixes, startfile_prefixes, include_prefixes): Renamed
+ from same names without plural; all users changed.
+ (find_a_file, process_command, do_spec_1): Use DIR_SEPARATOR.
+ (find_file, is_directory, main): Likewise.
+ (lookup_compiler): If OS/2, do case-independent search.
+ (fix_argv): New function on winnt.
+ (FIX_ARGV): New macro for some systems; use instead of argv.
+ * i386/unix.h: Treat ALMOST_STDC like __STDC__.
+ (AS2C): New macro.
+ * i386.c (output_387_binary_op): Use AS2C instead of AS2 with
+ null first arg.
+ * config/winnt/config-nt.bat, config/winnt/ld.c: New files.
+ * config/winnt/{[tx]-winnt, config/winnt/top.sed: New files.
+ * config/winnt/winnt.h, config/winnt/xm-winnt: New files.
+ * i386/winnt.h, i386/xm-winnt.h: New files.
+
+Thu Sep 29 19:53:14 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.md (movdf+3): Handle overlapping registers in define_split.
+
+ * gcc.c (default_compilers): Add %Z to all cpp specs.
+ (n_preprocessor_options, preprocessor_options): New variables.
+ (process_command): Handle -Wp option.
+ (do_spec_1): Handle %Z spec.
+
+ * i960/i960-coff.h: New file.
+ * t-960bare: New file.
+ * config.sub (os): Accept coff as an OS.
+ * configure (i960-*-coff): New configuration.
+
+ * expr.c (result_vector): Use INCOMING_REGNO when !savep instead
+ of when savep.
+ * sparc.md (call): Use struct value pattern is struct size is not
+ equal to zero instead of greater than zero.
+ (call+7, call+8): New patterns for untyped calls.
+ (untyped_call): Revise to emit explicit rtl for all operation.
+ Delete four old patterns that matched the unexpanded untyped_call
+ pattern.
+ (blockage): New pattern.
+ (flush_register_windows): Modify from 0 to 1.
+ (goto_handler_and_restore): Modify from 1 to 2.
+ (flush): Modify from 2 to 3.
+ * sparc.c (sparc_initialize_trampoline): FLUSH is now 3 not 2.
+
+ * calls.c (emit_library_call): For FUNCTION_ARG_PASS_BY_REFERENCE,
+ pass address through force_operand before using it.
+
+ * i960.c (i960_setup_incoming_varargs): Store parameter registers
+ at proper offset in argument block.
+
+Thu Sep 29 16:39:32 1994 Mike Stump <mrs@cygnus.com>
+
+ * stmt.c (expand_return): We have to be careful of cleanups that can
+ be generated when expanding the return value, as they might otherwise
+ wipe out the return value.
+
+Thu Sep 29 13:35:24 1994 Mike Stump <mrs@cygnus.com>
+
+ * expr.c (do_jump): Handle cleanups in TRUTH_ANDIF_EXPR and
+ TRUTH_ORIF_EXPR.
+
+Thu Sep 29 13:23:56 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c (struct option_map): Sort in alphabetical order.
+ (translate_options): Ignore option once an error occurs.
+ Fix error with reversed 'a' and 'o'.
+ Give error if specified abbreviation is unambiguous.
+
+ * c-typeck.c (convert_for_assignment): When converting object
+ to union, allow converting the constant zero into a pointer
+ member of the union.
+
+Wed Sep 28 19:33:01 1994 Alex T Ramos (ramos@engr.latech.edu)
+
+ * machmode.def (PSImode): Widens to PDImode.
+ * expr.c (convert_move): Added handling of PDImode conversions.
+
+Wed Sep 28 19:24:17 1994 H.J. Lu (hjl@nynexst.com)
+
+ * configure: Don't make objc-runtime if cross-compiling gcc.
+ * build-make (FIXINCLUDES): Set to Makefile.in.
+
+Wed Sep 28 19:18:19 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (trampoline_address): Add missing call to
+ round_trampoline.
+
+Wed Sep 28 18:34:13 1994 Michael Meissner (meissner@osf.org)
+
+ * config/svr4.h (ESCAPES): Print \v in octal rather than as '\v',
+ since some older versions of gas didn't accept it.
+
+Wed Sep 28 14:29:20 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Comment out loop which handles symbolic links to
+ files. It appears to not work, and to be unnecessary.
+
+Tue Sep 27 19:27:56 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.h (ENCODE_SECTION_INFO): Only calls may go through the
+ PLT. All address loads, even function address loads, have to
+ go through the GOT or function addresses will not be unique.
+
+Tue Sep 27 19:20:12 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (newline_fix, name_newline_fix): Don't treat \r
+ specially here; it only causes bugs. This undoes the
+ May 14 16:01:13 1990 change to newline_fix and name_newline_fix.
+
+Tue Sep 27 19:02:55 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * m88k.h (ASM_OUTPUT_SOURCE_LINE): Add missing #undef.
+
+Tue Sep 27 18:32:17 1994 William J. Eaton (wje@hoffman.rstnu.bcm.tmc.edu)
+
+ * function.c (optimize_bit_field): Put any insns made by
+ change_address in front of INSN.
+ (expand_function_end): Don't pass DECL_INITIAL to setjmp_protect
+ if it is error_mark_node.
+
+ * genoutput.c, reload.c (n_occurrences): Make arg int, not char.
+ * objc-act.c (warn_with_method): Likewise.
+
+ * optabs.c (expand_fix): Call emit_library_call_value.
+
+Tue Sep 27 12:39:10 1994 Mike Stump (mrs@cygnus.com)
+
+ * Makefile.in, libgcc2.c (L_eh): some support routines for C++.
+
+Mon Sep 26 06:45:20 1994 Michael Meissner (meissner@osf.org)
+
+ * 386/i386.md (adddi3, subdi3): Rewrite to add a clobber of a
+ scratch variable, so that memory/memoroy adds and subtracts can be
+ done using just one scratch register. Also, don't require op1 to
+ be the same as op0.
+
+Fri Sep 23 19:03:09 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/i386/gnu.h (LIB_SPEC): Remove macro.
+
+Fri Sep 23 16:11:26 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/lynx-ng.h (CALL_USED_REGISTERS): Copy definition from
+ i386/lynx.h that makes ebx be a call clobbered register, since
+ some system calls evidently trash it.
+
+Fri Sep 23 15:54:53 1994 Jim Wilson (wilson@cygnus.com)
+
+ * configure (mips-*riscos*): Changed to mips-*-riscos*.
+ (mips-*-riscos*-*): Deleted.
+
+ * cse.c (invalidate): New parameter FULL_MODE. All callers
+ changed.
+ (set_nonvarying_address_components): Modify initial comment.
+ (cse_insn): When call invalidate for dest, use the actual dest not
+ inner_dest.
+
+Thu Sep 22 18:56:19 1994 Torbjorn Granlund (tege@cygnus.com)
+
+ * expmed.c (expand_divmod): Special case for signed CEIL_DIV_EXPR
+ when divisor is power of 2.
+
+Thu Sep 22 12:28:53 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fixinc.svr4: Fix size_t, ptrdiff_t and wchar_t like fixincludes
+ does. Use extern inline rather than static inline in byteorder.h.
+
+Thu Sep 22 12:22:03 1994 Steve Dum (steve_dum@mentorg.com)
+
+ * collect2.c (main): Discard the first executable once we've
+ exploited it.
+
+Thu Sep 22 11:38:34 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Tweaks for LynxOS 2.2.2: accept spaces after # when
+ removing #define void int in curses.h; change prototype of fnctl
+ in fcntl.h to match POSIX.1.
+
+Thu Sep 22 07:18:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure: Consistently put specified manufacturer names ahead
+ of entries with wildcard manufacturers.
+
+ * calls.c (emit_call_1): Fix typo in last change.
+
+Wed Sep 21 21:32:56 1994 Chris Smith (csmith@convex.com)
+
+ * config.guess: Add convex c3* and c4* guesses.
+ * configure: Don't run fixincludes on convex.
+
+Wed Sep 21 15:59:12 1994 Ashley Saulsbury (ans@sics.se)
+
+ * alpha.h (ASM_FILE_START): Write .set volatile.
+
+Wed Sep 21 14:45:45 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (emit_call_1): Properly add a CLOBBER for sp
+ to CALL_INSN_FUNCTION_USAGE.
+
+ * c-typeck.c (mark_addressable): Give different error if trying
+ to put object with volatile fields into register; don't use DECL_NAME.
+
+Wed Sep 21 14:02:10 1994 Jim Wilson (wilson@cygnus.com)
+
+ * reload1.c (eliminate_regs): Make test in LOAD_EXTEND_OP case
+ more precise.
+
+Wed Sep 21 11:34:12 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Don't try to remove empty directories until after
+ removing DONE files.
+
+Wed Sep 21 05:52:49 1994 Uwe Seimet (seimet@chemie.uni-kl.de)
+
+ * m68k/atari.h (NO_{DOLLAR,DOT}_IN_LABEL): Define.
+
+Tue Sep 20 20:06:08 1994 Doug Evans (dje@cygnus.com)
+
+ * final.c (asm_insn_count): Handle ASM_INPUTs too.
+
+Tue Sep 20 19:32:10 1994 Oliver Kellogg (okellogg@salyko.cube.net)
+
+ * 1750a.h, 1750a.c, 1750a.md: New files, to use as1750.
+ * 1750a/m1750.inc: File deleted.
+ * 1750a/ms1750.inc: New file.
+
+Tue Sep 20 17:55:50 1994 Hallvard B Furuseth (hbf@durin.uio.no)
+
+ * cccp.c (make_definition): Enable `-D' with macro arguments.
+
+Tue Sep 20 17:49:47 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cexp.y (HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT): New macros.
+ (expression_value): Now HOST_WIDE_INT.
+ (parse_c_expression): Now returns HOST_WIDE_INT.
+ * cccp.c (eval_if_expression): Likewise.
+ (do_if, do_elif): Reflect new return value of functions.
+
+ * alpha.c (mode_mask_operand): Always return a value.
+
+ * function.c (pop_function_context): Clear reg_renumber.
+
+ * gcc.c (process_command): Add new switch, -dumpmachine.
+
+Tue Sep 20 15:57:40 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sched.c (sched_analyze_insn): Parameter loop_note type changed
+ to rtx, and name changed to loop_notes. Code adding it to
+ REG_NOTES modified to account for type change.
+ (sched_analyze): Variable loop_note type changed to rtx, and name
+ changed to loop_notes. Store LOOP_* REG_DEAD notes in it instead
+ of LOOP_* NOTE_LINE_NUMBER.
+ (schedule_block): Pass last not insn to emit_note_before call.
+
+ * iris5.h (ASM_OUTPUT_UNDEF_FUNCTION): Define.
+ (ASM_OUTPUT_EXTERNAL_LIBCALL): Define.
+ (ASM_DECLARE_FUNCTION_SIZE): Define.
+ * mips.c (mips_output_external): Use ASM_OUTPUT_UNDEF_FUNCTION.
+ (mips_output_external_libcall): New function.
+ (mips_asm_file_end): Handle ASM_OUTPUT_UNDEF_FUNCTION.
+ * README.IRIX5: Update.
+
+Tue Sep 20 14:39:37 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.h (output_move_memory): Add declaration.
+ (output_move_pushmem): Ditto.
+
+ * i386/i386.c (output_move_pushmem): New function to handle
+ pushing bytes from memory onto the stack, possibily using
+ temporary registers.
+ (output_move_memory): New function to handle moving bytes from
+ memory to memory via temporary registers.
+
+ * i386/i386.md (movsi insn): If -fpic and the value we are moving
+ is a constant pool address, emit a leal instruction instead of
+ movl.
+ (movsf_push): Allow pushes from memory.
+ (SF, DF, XF, DI pushes): Move most of the code to the common
+ function output_move_pushmem.
+ (SF, DF, XF, DI memory->memory moves): Move most of the code to
+ the common function output_move_memory.
+ (DI move patterns): Combine DI patterns into two, one for pushes,
+ and one for everything else, so that the combiner will combine a
+ load with a store into a memory->memory move.
+ (untyped_call): Replace non-working code with m68k version that
+ emits a regular call, then breaks the parallel moves into separate
+ moves, and then issue a blockage instruction.
+ (blockage): New unspec_volatile insn to block insns from being
+ moved across this point.
+ (untyped_return): Delete.
+ (update_return): Delete.
+
+ * objc/sendmsg.c (get_imp): Allow __inline__ on x86 platforms.
+
+Tue Sep 20 12:21:12 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Handle the case of a symlink to root/* from a
+ subdirectory of another symlink to root/*.
+
+Mon Sep 19 20:30:21 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fold-const.c (fold): Handle COMPONENT_REFs involving CONSTRUCTORs.
+
+Mon Sep 19 20:25:38 1994 Will Athanasiou (will@westford.ccur.com)
+
+ * rs6000.md (load sf with update): Fix RTL typo.
+
+Mon Sep 19 08:46:46 1994 Charles M. Hannum (mycroft@duality.gnu.ai.mit.edu)
+
+ * c-common.c (check_format_info): Enable checking of format
+ specifiers using the `q' (quad) length modifier.
+ (format_char_info): Add `qlen'.
+ (print_char_table, scan_char_table): Add appropriate entries for
+ qlen.
+
+Sat Sep 17 12:48:57 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * stmt.c (mark_seen_cases): Don't call fatal (or do anything
+ else) if case index out of range. Warning is given later.
+
+Fri Sep 16 19:22:46 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * global.c (global_alloc): Mark regs assigned to SCRATCH as used by
+ more than just local alloc.
+
+Thu Sep 15 14:36:59 1994 Michael Meissner <meissner@pasta.osf.org>
+
+ * i386/i386.c (order_regs_for_local_alloc): Instead of using
+ flag_cse_follow_jumps and not leaf_function_p to determine whether
+ to allocate EDX, and ECX before EAX, use whether or not a DImode
+ variable was used in the compilation. DImode variables seem to
+ cause spill failures if EAX is allocated first, while smaller code
+ is generated if EAX is allocated first, assuming no spill failure.
+
+ * i386/i386.md (SF, DF, XF, and DI moves and pushes): Eliminate
+ special patterns for TARGET_386 that allow direct pushes from
+ memory, and instead allow direct pushes from memory as the last
+ alternative in case no scratch registers could be allocated.
+ (movxf_mem): Remove inadvertent !TARGET_386 condition.
+ (addsi3): Allow generation of lea on 486, since the single
+ instruction lea is at least as fast as the mov and add it
+ replaces.
+ (zero extend patterns): Replace !TARGET_486 with TARGET_386.
+ (bit extracts): Ditto.
+
+ * i386/osfrose.h (LONG_DOUBLE_TYPE_SIZE): Don't redefine to be 64
+ unless NO_LONG_DOUBLE is defined.
+
+Thu Sep 15 13:46:05 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expmed.c (store_split_bit_field): Use number of bits in arg not
+ BITS_PER_WORD to adjust arg in BYTES_BIG_ENDIAN case.
+
+Thu Sep 15 09:19:12 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * optabs.c (expand_binop, multi-word shifts): Generate rtl
+ free of conflicts for shifts less than one word.
+
+Thu Sep 15 05:29:58 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * gcc.c: Rework last change so it's done like collect2.c.
+
+ * cse.c (cse_around_loop): Don't invalidate SUBREG unless
+ it's a SUBREG of a REG.
+
+ * sched.c (sched_analyze_insn): Don't set SCHED_GROUP_P for previous
+ INSN a USE unless it's a USE of a REG.
+
+Wed Sep 14 10:08:58 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu>
+
+ * gcc.c: Include <sys/errno.h> in case `errno' is really a macro
+ as permitted by ANSI C.
+
+ * getpwd.c (GUESSPATHLEN): If there is no definition of
+ MAXPATHLEN, then set GUESSPATHLEN to be 100. (It's used
+ as a starting point, not a limit, so this is harmless.)
+
+Tue Sep 13 15:02:19 1994 Michael Meissner <meissner@pasta.osf.org>
+
+ * i386/i386.md (movxf_mem): Fix typo with memory/memory moves
+ of XFmode variables, where the store actually did a load, ie, the
+ source and destination operands were fixed.
+ (fixuns_trunc patterns): Revert to the old code.
+ (movdf_push486, movxf_push486, movdi_push486): If an address is
+ based on the stack pointer, account for the stack pointer changing
+ due to the intermediate pushes generated.
+
+Tue Sep 13 14:11:16 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * collect2.c (fatal_perror, fatal, error): Declare all args as char *.
+
+Tue Sep 13 12:40:39 1994 Jeffrey A. Law (snake.cs.utah.edu)
+
+ * pa.c (emit_move_sequence): Handle secondary FP load/store
+ reloads of the form (subreg (mem (plus (reg) (disp)))).
+ (secondary_reload_class): A secondary register is needed to handle
+ out-of-range FP loads and stores.
+ * pa.md (reload_indf, reload_outdf): New expanders.
+ (reload_insf, reload_outsf): Likewise.
+
+Mon Sep 12 18:15:48 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * t-pa (ADA_CFLAGS): New override.
+ * pa/t-pa-hpux: New file.
+ * configure (hppa*-*-hpux*): Use t-pa-hpux instead of t-libc-ok.
+
+Mon Sep 12 14:52:17 1994 Jim Wilson (wilson@cygnus.com)
+
+ * function.c (assign_parms): Set RTX_UNCHANGING_P on stack_parm
+ for const parameter before calling move_block_from_reg.
+
+Mon Sep 12 14:27:58 1994 Doug Evans (dje@cygnus.com)
+
+ * config/fp-bit.c (FLO_union_type): Add packed attribute to `bits'.
+
+Sat Sep 10 09:50:41 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (invalidate_for_call): Properly set IN_TABLE.
+
+Sat Sep 10 06:46:24 1994 Bill Burton (billb@progress.com)
+
+ * Added improved support for Sequent DYNIX/ptx 1.x and 2.x:
+ * fixinc.ptx: New file.
+ * i386/seq-sysv3.h (HAVE_ATEXIT): No longer defined.
+ * i386/seq2-sysv3.h: New file.
+ * configure (i[34]86-sequent-ptx[12]*): New configurations.
+ (i[34]86-sequent-sysv*, i[34]84-sequent-ptx): Deleted configurations.
+ * config.sub (ptx): New OS; use for Sequent.
+
+Fri Sep 9 21:48:48 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (rescan, handle_directive): Backslash no longer suppresses the
+ specialness of the following char unless -traditional.
+ (rescan): Remove backslash-newline only if at top level, since
+ backslash-newline-space can be encountered during macro processing.
+ (collect_expansion): Remove special hack for \# inside a #define;
+ it's not compatible with the C Standard.
+
+Thu Sep 9 17:36:03 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Utilize OSF/1's limited .init support.
+ * alpha/alpha.h (HAS_INIT_SECTION): Define.
+ (LINK_SPEC): Add '-init __main'.
+ * alpha/osf12.h (LINK_SPEC): Ditto.
+
+ * function.c (expand_main_function): Don't call __main if
+ HAS_INIT_SECTION is defined.
+
+Fri Sep 9 16:36:46 1994 Mike Stump (mrs@cygnus.com)
+
+ * tree.c (decl_function_context): Don't treat C++ member
+ functions of classes declared in a function, as nested functions.
+
+Fri Sep 9 16:10:25 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * sh/sh.c (prepare_move_operands): Generate better DI constant
+ code.
+ (fake_shift): New function.
+ * sh/sh.md (ashlsi3_n, lshrsi3_n): Only recognise if fake_shift
+ enabled.
+ * sh/{lib1funcs.asm, ashlsi3.c, lshrsi3.c, ashrsi3.c} : New files.
+ * sh/t-sh : Build new files.
+
+Fri Sep 9 15:52:54 1994 Hallvard B Furuseth (h.b.furuseth@usit.uio.no)
+
+ * cccp.c: Correct unprototyped pointer args from `0' to `NULL_PTR'
+
+Fri Sep 9 15:17:52 1994 Matthew Green (mrg@splode.mame.mu.oz.au)
+
+ * configure (sparc-*-netbsd): New configuration.
+ * sparc/netbsd.h: New file.
+
+Fri Sep 9 15:15:48 1994 Jim Wilson (wilson@cygnus.com)
+
+ * mips.md (truncdisi2): Change from define_expand to define_insn.
+ (truncdihi2, truncdiqi2): Likewise.
+
+ * sparc.h (SQRTTF2_LIBCALL): Delete.
+ (INIT_TARGET_OPTABS): Define.
+ (INIT_SUBTARGET_OPTABS): Define.
+
+ * stmt.c (check_for_full_enumeration_handling): Cast malloc result
+ to `unsigned char *' not `char *'.
+
+ * dbxout.c (dbxout_symbol_location): Handle error_mark_node in
+ DECL_INITIAL for C++.
+
+ * mips.md (memory): Add missing !r4600 to first define_function_unit.
+
+ * sparc.md (negsi2): Use register_operand not general_operand for
+ output.
+
+Fri Sep 9 14:52:58 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * config/netbsd.h: Add #undef for everything we define; a few were
+ missing.
+
+ * reload.c (find_reloads, case 'p'): Operand is BASE_REG_CLASS.
+
+Fri Sep 9 14:00:28 1994 Mike Collison (collison@world.std.com)
+
+ * configure (dsp16xx-*): New configuration.
+ * config.sub (dsp16xx): New basic machine.
+ * dsp16xx.c, dsp16xx.md, dsp16xx.h, xm-dsp16xx.h: New files.
+
+Fri Sep 9 12:47:00 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.md (All SF, DF, XF, DI 486 push patterns): Merge the
+ memory and nonmemory push patterns together.
+
+Fri Sep 9 00:53:36 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * config.sub: Accept i586 like i386.
+ Do not use SCO as a default for i386-*.
+
+Thu Sep 8 18:49:35 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * config/fp-bit.c (_fpmul_parts): Perform optimized
+ 64bit*64bit multiply correctly.
+ * sh/sh.c (synth_constant): Ensure DI mode constants get their
+ high part zeroed.
+ (add_constant): Entabled constants are only identical if their
+ sizes are the same.
+
+Thu Sep 8 14:40:31 1994 Jim Wilson (wilson@cygnus.com)
+
+ * flow.c (mark_used_regs, case REG): Correct typo, use GET_MODE
+ not GET_CODE.
+ * sched.c (attach_deaths): Likewise.
+
+Tue Sep 6 23:33:41 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * tree.c (get_set_constructor_bits, get_set_constructor_words):
+ New functions. Extract bits or words from SET_TYPE CONSTRUCTOR.
+ * tree.h: Declare above new functions.
+
+Thu Sep 8 14:02:05 1994 Michael Meissner (meissner@osf.org)
+
+ * 386/i386.h (TARGET_OPTIONS): New macro to define -mreg-alloc=
+ switch to allow users to override the register allocation order.
+ (OVERRIDE_OPTIONS): Call the function override_options.
+ (REG_ALLOC_ORDER): Define to allocate in the natural order, this
+ is needed for ORDER_REGS_FOR_LOCAL_ALLOC to work.
+ (ORDER_REGS_FOR_LOCAL_ALLOC): Define to call the function
+ order_regs_for_local_alloc.
+ (regclass_map): Move declaration to end of file.
+ (i386_compare_op0, i386_compare_op1): Ditto.
+ (CLASS_LIKELY_SPILLED_P): Define, return 1 for AD_REGS in addition
+ to all of the single register classes, since AD_REGS is only used
+ to allocate EAX:EDX.
+ (override_options, order_regs_for_local_alloc): Add declarations.
+ (hi_reg_name): Add declaration.
+ (qi_reg_name): Ditto.
+ (qi_high_reg_name): Ditto.
+ (i386_reg_alloc_order): Add declaration for TARGET_OPTIONS to use.
+
+ * i386/i386.c (i386_compare_op0, i386_compare_op1): Initialize
+ with NULL_RTX.
+ (i386_reg_alloc_order): Provide global variable definition.
+ (regs_allocated): Static array to note whether a register is noted
+ via -mreg-alloc=<xxx>.
+ (override_options): Provide checking for registers declared with
+ -mreg-alloc=<xxx>.
+ (order_regs_for_local_alloc): If -mreg-alloc=<xxx> was used,
+ allocate registers mentioned in order, and then allocate all other
+ registers in the normal register order. If -mreg-alloc=<xxx> was
+ not used, allocate registers in natural order except for non-leaf
+ functions with CSE following jumps, allocate EAX after EDX and
+ ECX, to allow the function return to be CSE'd, and perl 4.036's
+ perly.y to be compiled without aborting due to not being able to
+ find a spill register.
+ (movsf, movdf, movdi): Rewrite all patterns to provide effecient
+ memory to memory moves, including pushes for i386 and i486. Fixes
+ problems in compiling motif+ without optimization.
+ (swapsf): Add, like swapdf and swapxf.
+ (fixuns_truncsfsi2, fixuns_truncdfsi2): Use general_operand
+ instead of register_operand for define_expand, since the operand
+ is copied to a new pseudo register as part of the expansion.
+ (fix_truncxfdi2, fix_truncdfdi2, fix_truncsfdi2): Rewrite to call
+ the more primitive generator functions instead of knowing how many
+ clobbers of match_scratchs they do.
+
+ * Makefile.in (aux_output.o): Define TARGET_CPU_DEFAULT if
+ specified when compiling aux_output.o to allow the machine C file
+ access to this if it wants it.
+
+Thu Sep 8 07:15:29 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (movsi matcher): Merge TARGET_POWER and !TARGET_POWER
+ cases. Rationalize mnemonics.
+ (movhi and movqi matchers): Likewise.
+ (movsf matcher): Correct length attribute for stfs which no longer
+ includes frsp.
+
+Thu Sep 8 07:06:31 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (REGISTER_MOVE_COST): Fix typo in last change.
+
+Wed Sep 7 19:31:52 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (handle_directive): In `#include <xxx>' directives,
+ remove backslash-newline properly. Don't allow any other newlines.
+
+Wed Sep 7 18:11:29 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (REGISTER_MOVE_COST): Moving between special registers
+ is expensive.
+
+ * combine.c (simplify_comparison): Convert comparison to unsigned
+ when stripping off a ZERO_EXTEND.
+
+ * combine.c (simplify_set): Only convert IF_THEN_ELSE to logical
+ expression if mode of object being compared is result mode.
+
+Wed Sep 7 18:09:17 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu)
+
+ * configure: Ignore --help, --version, --program-prefix,
+ --program-suffix, --cache-file, --quiet, --silent.
+
+Wed Sep 7 13:29:50 1994 Doug Evans (dje@cygnus.com)
+
+ * stmt.c (expand_asm_operands): Move test for misspelled registers
+ higher so all cases caught.
+
+Wed Sep 7 09:54:14 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * configure: Touch Makefile.ll before appending subdir stuff.
+ (Needed if there are no subdirs.)
+
+Wed Sep 7 11:19:18 1994 Kresten Krab Thorup (krab@akvavit.next.com)
+
+ * objc/init.c (__objc_init_protocols): Remove assertion.
+ * objc/Object.m (conformsTo:): Make lookup allways happen in
+ the class object.
+
+Tue Sep 6 17:47:39 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * configure: Rename *-next-ns[23] to *-next-nextstep[23].
+ * config.sub: Cleanup NeXT support to emit nextstep*.
+
+Tue Sep 6 18:38:02 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads_address): Don't reorder the operands of a
+ PLUS when fixing up index.
+
+Tue Sep 6 18:24:50 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.md (stackadjust/push peepholes): For the adjust/push/push
+ pattern one offset was wrong.
+ Don't use addr for register and and MEM refs.
+
+Tue Sep 6 11:24:06 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * sh/sh.c (push, pop): Generate REG_NOTES.
+ (synth_constant): Correct one of the patterns.
+ (output_file_start): Bump version number.
+ * sh/sh.h (EXIT_IGNORE_STACK): Now 1.
+ * sh/sh.md (adddi3, subdi3): Simplify.
+ (casesi_worker): Use TARGET_BIGTABLE.
+
+Mon Sep 5 12:29:15 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * ginclude/math-68881.h: Change inline functions from static to
+ extern.
+
+ * configure (i[34]86-*-sysv4*): If --with-stabs, set tm_file to
+ i386/sysv4gdb.h.
+ * config/i386/sysv4gdb.h: New file; sets PREFERRED_DEBUGGING_TYPE.
+
+Sun Sep 4 08:40:02 1994 Chris Smith (csmith@convex.com)
+
+ * convex.h (VTABLE_USES_MASK, VINDEX_MAX, SET_DECL_VINDEX):
+ delete, no longer used.
+ (target_flags): delete cexp.c hack, no longer needed.
+ * convex.md (decr-and-set-cc0): fix HImode to use halfword
+ insns.
+ (cmpqi patterns): fix constraints not to use A regs
+
+Sat Sep 3 14:12:11 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.md (DImode move and push insns): Eliminate movdi
+ wrapper that made a DI temp register to do a memory to memory
+ move because it creates too much register pressure, especially
+ when not optimizing. On the 486, allocate and use 1-2 scratch
+ registers to push a DImode value.
+
+Fri Sep 2 15:11:59 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * c-decl.c (min_precision): Move from here.
+ * c-common.c: To here.
+
+Fri Sep 2 13:16:38 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * tree.h (maximum_field_alignment, set_alignment): New declarations.
+
+Fri Sep 2 14:25:36 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/svr4.h (DBX_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE,
+ DBX_BLOCKS_FUNCTION_RELATIVE, ASM_IDENTIFY_GCC,
+ ASM_IDENTIFY_GCC_AFTER_SOURCE, ASM_OUTPUT_SOURCE_LINE,
+ DBX_FUNCTION_FIRST): Define. This adds support for -gstabs for
+ SVR4 configurations. -gstabs requires gas and gdb.
+ * config/sparc/sol2.h (DBX_DEBUGGING_INFO,
+ DBX_BLOCKS_FUNCTION_RELATIVE, ASM_IDENTIFY_GCC,
+ ASM_IDENTIFY_GCC_AFTER_SOURCE, ASM_OUTPUT_SOURCE_LINE,
+ DBX_FUNCTION_FIRST): Don't define. Now defined by config/svr4.h.
+ (PREFERRED_DEBUGGING_TYPE): Undefine before defining.
+ * config/sparc/sysv4.h (DBX_DEBUGGING_INFO): Don't bother to
+ undefine before including svr4.h.
+ (ASM_OUTPUT_SOURCE_LINE): Undefine before including svr4.h.
+
+Thu Sep 1 22:02:02 1994 Michael Meissner (meissner@osf.org)
+
+ * toplev.c (fatal_insn): Move most of the code from
+ fatal_insns_not_found here, and add an argument to give the error
+ message.
+ (fatal_insn_not_found): Call fatal_insn.
+ * rtl.h (fatal_insn, fatal_insn_not_found): Add prototypes.
+ * genextra.c (main): Don't declare fatal_insn_not_found in
+ insn-extract.c.
+ * reload1.c (reload): Call fatal_insn where appropriate to print
+ an error message instead of calling abort.
+ (spill_failure): Ditto.
+ (reload_as_needed): Ditto.
+ (allocate_reload_reg): Ditto.
+ (emit_reload_insns): Ditto.
+
+Thu Sep 1 19:34:26 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * tree.c (type_list_equal): If the types of the default arguments
+ differ, the lists do not match.
+
+Thu Sep 1 19:29:58 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.md (stack-adjust/push peepholes): Addresses are
+ moved with "addr", not with "movd".
+
+Thu Sep 1 19:17:55 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (make_definition): Don't dump core when given an
+ unterminated string in a -D option.
+
+Thu Sep 1 19:13:35 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-typeck.c (convert_arguments): Give proper warnings when
+ converting COMPLEX_TYPE; widen check to include all integral types.
+
+Wed Aug 31 20:38:53 1994 Per Bothner (bothner@spiff.gnu.ai.mit.edu)
+
+ * fixproto: Define FIX_HEADER (needed by Aug 19 change).
+ Use FIX_HEADER instead of $original_dir/fix-header (twice).
+
+Wed Aug 31 16:56:15 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * stmt.c (warn_if_unused_value): Extend special case for casted
+ MODIFY_EXPRs to apply to INIT_EXPRs as well.
+
+Wed Aug 31 16:30:09 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * stor-layout.c (set_alignment): New global.
+ (layout-type): Add support for SET_TYPE.
+
+ * expmed.c (store_bit_field): Semi-revert Aug 25 change:
+ Make it apply only for BLKmode, not integral modes.
+
+ * stmt.c (all_cases_count, mark_seen_cases): New functions.
+ (BITARRAY_TEST, BITARRAY_SET): New macros. Used (mainly by
+ Chill) to check all cases are covered (for enums and ranges).
+ (check_for_full_enumeration_handling): Re-write to use the
+ new functions, now that we have them.
+
+Wed Aug 31 19:19:29 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * combine.c (nonzero_bits, cases DIV, MOD, UDIV, UMOD): Declare
+ op0_maybe_minusp and op1_maybe_minusp as HOST_WIDE_INT.
+
+Wed Aug 31 18:54:54 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (store_split_bit_field): Always adjust arg to
+ extract_fixed_bit_field in BYTES_BIG_ENDIAN case.
+
+Wed Aug 31 02:49:34 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/i386/gnu.h (LIB_SPEC): New macro.
+
+Tue Aug 30 16:35:23 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (lang_options): Add -W{no-,}reorder.
+
+Tue Aug 30 13:55:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * combine.c (simplify_comparison, case GEU): Add missing break.
+
+Mon Aug 29 17:50:55 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * vax.md (extv, extzv): Don't use ROTL when field is outside
+ boundaries of a word.
+
+Mon Aug 29 11:43:18 1994 Kresten Krab Thorup (krab@akvavit.next.com)
+
+ * objc/sendmsg.c (get_imp): Don't inline on 386.
+
+Sun Aug 28 18:56:03 1994 Andrew McCallum (mccallum@cs.rochester.edu)
+
+ * objc/class.c (objc_get_meta_class): New function.
+
+Sat Aug 27 23:13:53 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.c (legitimate_address_p): If index register is either
+ the arg pointer or the stack pointer, and there is no scale
+ factor, swap with the base register.
+
+ * i386/i386.h (REG_CLASS_CONTENTS): Don't allow the arg pointer
+ register as an index register, since the frame could be omitted,
+ and the stack pointer is not valid as an index.
+
+ * i386/i386.md (mov*, movstrict*): Don't create pushes of memory
+ values when creating insns, let the combiner create a push of a
+ memory value if -m386. In particular, pushes of byte values was
+ broken because there is no pattern to recognize such a push.
+
+Fri Aug 26 16:03:09 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.h (MASK_*): Add masks for all of the switches.
+ (TARGET_*): Use appropriate MASK_* instead of a number. Add
+ -mdebug-addr switch to debug GO_IF_LEGITIMATE_ADDRESS,
+ -mno-wide-multiply to turn off widening multiplies, and -mno-move
+ to allow integer move insns to generate direct memory to memory
+ copies, which reload will fix up. Add TARGET_386 which is not of
+ TARGET_486.
+ (REG_ALLOC_ORDER): Go to the order used in 2.5.8, eax, edx, ecx, ...
+ Add a comment describing the tradeoffs.
+ (REG_OK*): Add strict and non-strict versions of the macros that
+ are always present, and REG_OK_STRICT chooses between the two
+ inner macros.
+ (GO_IF_LEGIMATE_ADDRESS): Move processing to legitimate_address_p
+ function.
+ (LEGITIMIZE_ADDRESS): Move processing to legitimize_address
+ function.
+ (function declarations): Add function declarations for all extern
+ functions in i386.c.
+
+ * i386/i386.c (asm_add): Add support in case adding by 1 or -1 to
+ use inc/dec.
+ (various): Change TARGET_486 -> !TARGET_386.
+ (legitimate_address_p): Move GO_IF_LEGITIMATE_ADDRESS processing
+ here from i386.h. Combine OSF/rose support from osfrose.h through
+ the use of conditional macros. Only recognize addresses in
+ canonical formats, code adapted from the i960 port. Add tracing
+ if -mdebug-addr.
+ (legitimize_address): Move LEGITIMIZE_ADDRESS here from i386.h,
+ and add adaptations from the i960 port.
+ (convert_387_op): Remove unused function.
+
+ * i386/i386.md (various): Remove cast to char * of output
+ functions, since i386.h now declares them all properly. Change
+ TARGET_486 tests to !TARGET_386 and !TARGET_486 to TARGET_386.
+ (movsi, movstricthi, movhi, movstrictqi, movqi, movdi): Add
+ define_expand wrappers to prevent memory<->memory moves from being
+ generated unless -mno-move is used. On 486's do not allow push of
+ memory insns to be generated unless -mno-move.
+ (movdi): For movdi patterns, add 2 (clobber (match_scratch...))
+ declarations to allow memory<->memory moves with non-contigous
+ registers, so that reload don't abort if it can't make a DI
+ register.
+ (umulsidi3, mulsidi3): Don't allow pattern if -mno-wide-multiply.
+ (smultsi3_highpart, umultsi3_highpart): Add patterns to make
+ division by constants generate better code.
+
+ * i386/osfrose.h (MASK_*): Use octal to define bitmasks, not hex,
+ for compatibility with i386.h.
+ (NO_IMPLICIT_EXTERN_C): Define.
+ (LONG_DOUBLE_TYPE_SIZE): Explicitly define to be 64 instead of
+ just #undef'ing it.
+ (GO_IF_LEGITIMATE_ADDRESS): Delete, merged with common i386 code.
+ (ASM_FILE_END): Print -fschedule-insns and -fschedule-insns2 in
+ ident string if those options are used.
+ (REAL_LD_FILE_NAME): Delete.
+ (ASM_OUTPUT_DOUBLE): Delete, use the common macros.
+ (ASM_OUTPUT_FLOAT): Ditto.
+ (ASM_OUTPUT_LONG_DOUBLE): Ditto.
+
+Thu Aug 25 17:15:18 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * expmed.c (store_bit_field): Always store into multi-word
+ bitfields starting with low addresses. (Old code was
+ incompatible with operand_subword_force on big-endian targets.)
+
+Thu Aug 25 18:31:20 1994 Antti Miettinen (amiettin@ntc.nokia.com)
+
+ * m68k/lynx.h (CALL_USED_REGS): Add d2 and d3 as call-used.
+
+Thu Aug 25 11:30:44 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (record_jump_cond): Don't do anything if OP0 and OP1
+ are already equivalent.
+
+ * rtlanal.c (may_trap_p, case EXPR_LIST): New case.
+
+ * c-common.c (shorten_compare): Don't issue warning if both
+ operands constants and the signedness doesn't affect the
+ comparison results.
+
+ * configure: Refine handling and error-checking of positional args.
+
+ * print-tree.c (print_node): Print more flags for types and decls.
+
+ * c-typeck.c (type_lists_compatible_p): Treat transparent unions
+ just like unnamed ones.
+
+Wed Aug 24 19:34:52 1994 Charles Hannum (mycroft@duality.gnu.ai.mit.edu)
+
+ * configure: Rearrange handling of NetBSD ports to use the standard
+ `cpu-vendor-os' format.
+ * config.sub: Recognize names of NetBSD ports that do not correspond
+ to a CPU name.
+
+Wed Aug 24 18:43:30 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * print-tree.c (print_node_brief, print_node): Use assignment instead
+ of initialization for aggregate local variable REAL_VALUE_TYPE d.
+
+Wed Aug 24 18:28:52 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Define.
+ * config/sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Output #alloc to
+ set SHF_ALLOC in section flags.
+
+Wed Aug 24 17:45:19 1994 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * c-parse.in (parmlist_2): Give error for function with only
+ ELLIPSIS as an argument.
+
+Wed Aug 24 17:36:22 1994 H.J. Lu (hjl@nynexst.com)
+
+ * i386/linux.h (STARTFILE_SPEC): Add %{static:-static}.
+
+Wed Aug 24 14:34:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (expand_call): Check for variable-sized return value
+ in proper place.
+
+ * c-typeck.c (default_conversion): Don't substitute constant
+ value if array since will return address.
+
+ * configure (LANG_MAKEFILE): Include lang/Makefile.in in list.
+
+ * alpha.h (EXTRA_CONSTRAINT): Add new letter, `R'.
+ (ENCODE_SECTION_INFO): Don't check TREE_ASM_WRITTEN.
+ (PREDICATE_COSTS): Add call_operand.
+ * alpha.c (call_operand): New function.
+ (output_epilog): Don't set SYMBOL_REF_FLAG of current function.
+ * alpha.md (call): Rework to use macro version of jsr.
+ * osf2.h (LINK_SPEC): Don't define; should never have been.
+
+ * c-typeck.c (push_init_level): Don't blow up if construct_type
+ is null (can happen with missing brace).
+
+Wed Aug 24 10:49:35 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.h (REG_ALLOC_ORDER): Restore previous version which
+ allocates edx first, then ecx, eax, ... This is because perl
+ doesn't build when the order is eax, ecx, edx...
+
+Tue Aug 23 09:20:16 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure: Restore old behavior of positional arguments.
+ Add new argument, --noguess.
+ config.guess now guesses BUILD, not HOST; HOST defaults from BUILD.
+ Always compare canonical names, not user-specified names.
+ Numerous minor changes in the messages output to make the
+ configuration chosen clearer.
+
+Tue Aug 23 02:01:42 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * config.sub: Move m68k-ccur handling to proper part of file.
+ Canonicalize cpu type pentium into i486. (Change it to i586 later.)
+
+Mon Aug 22 18:41:59 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * sh/sh.c (find_barrier): Calculate the size of larger than
+ SI moves correctly.
+ (general_movsrc_operand): Allow label_refs plus const.
+ (sh_function_arg_partial_nregs, sh_function_arg): Pass BLKmode
+ objects in partial regs.
+ * sh.h (TARGET_DEFAULT): Turn off BIGTABLE_BIT.
+ (EXTRA_CONSTRAINT_Q): Allow label_refs plus const.
+ (READONLY_DATA_SECTION_ASM_OP, EXTRA_SECTIONS, rdata_section):
+ Delete rdata section and refs.
+ * sh.md (dimode split): Don't allow a Q constraint source.
+
+Sun Aug 21 23:15:35 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (FUNCTION_ARG): Use indirect calling conventions when
+ TARGET_LONG_CALLS is in effect.
+
+Sat Aug 20 13:31:34 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sched.c (sched_analyze_insn): Add new parameter loop_note.
+ If loop_note set, then serialize on this insn.
+ (sched_analyze): New variable loop_note. Pass to
+ sched_analyze_insn. Set it if we pass a NOTE_INSN_LOOP_BEG or
+ NOTE_INSN_LOOP_END.
+ (unlink_notes): Don't save away NOTE_INSN_LOOP_BEG or
+ NOTE_INSN_LOOP_END notes.
+ (schedule_block): Generalize code that looks for magic REG_DEAD
+ notes and converts them to notes.
+
+Sat Aug 20 12:47:21 1994 Michael Meissner (meissner@osf.org)
+
+ * i386.h (REG_ALLOC_ORDER): Allocate eax first, then ecx, edx, and
+ then do the nromal allocation order for the remaining registers.
+
+Fri Aug 19 20:14:35 1994 Jim Wilson (wilson@cygnus.com)
+
+ * tree.c (build_type_variant): Only return existing type if it
+ also has the same TYPE_NAME.
+
+ * irix5.h (NO_IMPLICIT_EXTERN_C): Comment out.
+
+Fri Aug 19 16:41:43 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * fixproto: Use $FIX_HEADER macro instead of calling
+ fix-header directly in 2nd location.
+
+Fri Aug 19 17:34:19 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (emit_move_insn_1): Never make a no-conflict block.
+
+ * tree.h (struct tree_type): New field transparent_union_flag.
+ (struct tree_decl): New field transparent_union.
+ ({DECL,TYPE}_TRANSPARENT_UNION): New macros.
+ * c-common.c (decl_attribute): Handle "transparent_union" attribute.
+ * function.c (assign_parms): If parm is transparent union, use
+ type of first field.
+ * calls.c (expand_call): Likewise.
+ * integrate.c (function_cannot_inline): Don't inline if any
+ parm is a transparent union.
+
+Fri Aug 19 12:01:11 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Canonicalize ${INPUT} to avoid automounter
+ problems.
+
+Fri Aug 19 11:31:24 1994 Kresten Krab Thorup (krab@akvavit.next.com)
+
+ * objc-act.c (build_selector_translation_table): Reset
+ current_function_decl after hack_function_prototype build it.
+ (build_module_descriptor): Return constructor name from functions
+ decl_rtl.
+
+Thu Aug 18 17:23:18 1994 Per Bothner (bothner@spiff.gnu.ai.mit.edu)
+
+ * README.FRESCO: New file. Notes about compiling the Fresco
+ toolkit with g++.
+
+Thu Aug 18 14:10:22 1994 Jim Wilson (wilson@cygnus.com)
+
+ * combine.c (distribute_notes, case REG_UNUSED): Ignore notes when
+ from_insn != i3 only if the notes would remain as REG_UNUSED notes.
+
+Wed Aug 17 18:31:43 1994 Holger Teutsch (holger@hotbso.rhein-main.de)
+
+ * clipper.h (CLIPPER_ARG_SIZE): Return size in bytes.
+ (FUNCTION_ARG_ADVANCE): Fix argument alignment processing.
+
+Wed Aug 17 18:03:54 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fx80.md (casesi_2): Operand 0 is HImode; add SIGN_EXTEND
+ when adding to pc.
+ (casesi): Operand 0 is HImode.
+ (unnamed PC addition pattern): Add SIGN_EXTEND to add HImode
+ offset to SImode PC.
+ * m68k.md (tablejump): Add SIGN_EXTEND to HImode offset
+ so can add to SImode PC.
+ Likewise for matching pattern.
+ * cse.c (fold_rtx): When folding tablejump, allow LABEL_REF
+ to be in arg0; also allow other arg to be MINUS, not just be
+ equivalent to it.
+
+Mon Aug 15 19:19:11 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (index0): New function.
+ (trigraph_pcp): Use index0 instead of index, so that a null
+ byte doesn't suppress further trigraph preprocessing.
+
+ * cccp.c (rescan, do_ident): Pass more accurate size request
+ to check_expand.
+
+ * cccp.c (main): Don't dump core if given -pcp, -MD, or -MMD
+ without following arg.
+
+Mon Aug 15 17:56:38 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stmt.c (expand_elseif): New function.
+
+Mon Aug 15 14:16:18 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure: If the host is guessed, and the target name is a
+ prefix of the host name, then use the target name as the host
+ name.
+
+Mon Aug 15 13:35:24 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * m68k/m68k-coff.h: New file.
+
+Sun Aug 14 00:28:15 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu)
+
+ * objc/encoding.c (objc_sizeof_type): Assign from ROUND,
+ don't increment. Remove ; after while to fix infinite loop.
+ Add float and double cases.
+ (objc_alignof_type): Add float and double cases.
+ * objc/selector.c (): Use __objc_selector_names, not
+ __objc_selector_array.
+ (sel_types_match): New function.
+ (sel_get_typed_uid): Use sel_types_match. Change strcmp to !strcmp.
+
+Sun Aug 14 21:54:29 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL):
+ Define.
+ (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Delete.
+
+ * pa.c (hppa_expand_prologue): Avoid writing outside the current
+ stack boundary in code to handle large stack frames.
+
+Sun Aug 14 18:55:51 1994 Jim Wilson (wilson@cygnus.com)
+
+ * unroll.c (loop_iterations): Use PREV_INSN not prev_nonnote_insn.
+
+ * bsd-5.h (ASM_OUTPUT_NEWLINE): Delete.
+ (ASM_OUTPUT_ASCII): Define.
+ * mips-5.h, svr3-5.h, svr4-5.h: Likewise.
+ * mips.h (ASM_OUTPUT_NEWLINE): Delete.
+ (ASM_OUTPUT_ASCII): Don't use ASM_OUTPUT_NEWLINE.
+
+ * va-mips.h (va_start): Add cast to __gnuc_va_list type.
+
+ * flow.c (mark_used_regs): When adding REG_DEAD notes, check for
+ the case where a multiple register hard reg overlaps a register
+ set by the insn.
+ * sched.c (attach_deaths): Likewise.
+ * combine.c (distribute_notes, case REG_DEAD): Add another
+ find_reg_fusage call.
+
+ * unroll.c (calculate_giv_inc): Handle constants loaded with IOR.
+
+Sun Aug 14 16:40:04 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * cccp.c (skip_if_group): New arg op. All callers changed.
+ If output_conditionals is true, output text of failed conditionals.
+ (conditional_skip): New arg op. All callers changed.
+ (main): Handle -ifoutput option.
+
+Sun Aug 14 05:49:29 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * print-tree.c (print_node{,_brief}): Use REAL_VALUE_TO_DECIMAL
+ to print REAL_CST ifdef REAL_ARITHMETIC.
+
+ * reload1.c (count_possible_groups) Pass CLASS as arg and only
+ try to find groups of that class.
+
+ * configure: If config.guess fails and target specified, use as host.
+ Print a message when making a cross-compiler.
+
+Sat Aug 13 17:12:30 1994 Jim Wilson (wilson@cygnus.com)
+
+ * configure (sparc-*-sunos4.0*): New configuration.
+ * t-sunos4: Rename file to t-sunos41.
+ * t-sunos40: New file.
+
+Sat Aug 13 13:50:22 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reload1.c (emit_reload_insns): Handle a secondary input reload
+ which needs to use secondary memory too.
+
+Fri Aug 12 18:53:24 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips/mips.c (override_options): If neither -mcpu= nor -mipsN was
+ used, and MIPS_CPU_DEFAULT is defined, set mips_cpu to
+ MIPS_CPU_DEFAULT and set mips_cpu_string to
+ MIPS_CPU_STRING_DEFAULT.
+
+Fri Aug 12 10:54:35 1994 Stan Cox (coxs@dg-rtp.dg.com)
+
+ * m88k/dgux.h, m88k/dguxbcs.h (ASM_SPEC,CPP_SPEC):
+ Made -pipe work for -msvr4. Added -D*_TARGET definitions.
+
+ * m88k.c (emit_bcnd): Improved code generated by changing cmp/bbx
+ instruction pair to single bcnd instruction
+
+Fri Aug 12 07:52:20 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (set_nonvarying_address_components): If BASE is CONST_INT,
+ add value to start and set BASE to const0_rtx.
+ (refers_to_mem_p): Don't do it here.
+
+ * function.c (expand_function_start): Add redundant copy to
+ static_chain_incoming_rtx if SMALL_REGISTER_CLASS so inlining
+ works properly.
+ * integrate.c (expand_inline_function): Use single_set when
+ appropriate.
+ Delete insn that sets static_chain_incoming_rtx before its use.
+ (subst_constants): Treat virtual reg as constant.
+
+ * flow.c (mark_used_regs): Only show changes size if one mode is
+ integral.
+ * stupid.c (stupid_mark_refs): Likewise.
+ * combine.c (simplify_rtx, case FLOAT_TRUNCATE): Remove
+ redundant float_truncate.
+ * rs6000.md (movsf): Don't truncate if not register; clean up.
+
+ * c-decl.c (duplicate_decls): Suppress -Wredundant-decls warning
+ if we have already given an error.
+
+Thu Aug 11 18:44:25 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * stmt.c (expand_anon_union_decl): Fix up the alignment and mode
+ of the member VAR_DECLs.
+
+Thu Aug 11 13:36:14 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * tree.c (stabilize_reference): Handle COMPOUND_EXPR.
+
+ * fix-header.c (write_rbrac): If NO_IMPLICIT_EXTERN_C is defined,
+ add extern "C" { ... } to added prototypes. (Needed for hpux.)
+
+Thu Aug 11 14:23:59 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (rescan): Fix botches with `-lint': the output buffer
+ pointer was not recached properly, leading to lost output.
+ Also, buffer overrun was possible.
+
+ * cccp.c (dump_defn_1): Skip newlines and strings correctly.
+
+Thu Aug 11 14:13:17 1994 Niklas Hallqvist (niklas@appli.se)
+
+ * configure (m68k-*-netbsd*): New target, like others.
+
+Thu Aug 11 14:09:23 1994 David Mosberger-Tang (davidm@piston.cs.arizona.edu)
+
+ * alpha.h (FUNCTION_PROFILER): Load global pointer from $27, not $26. e
+
+Thu Aug 11 13:52:15 1994 Walter Misar (misar@rbg.informatik.th-darmstadt.de)
+
+ * m68k/hp320.h (NO_DOT_IN_LABEL): Define if HPUX_ASM.
+
+Thu Aug 11 13:12:12 1994 David Mosberger-Tang (davidm@cs.arizona.edu)
+
+ * alpha.h (BLOCK_PROFILER): Use $26 and $27 instead of $0 and $1.
+
+Thu Aug 11 13:09:36 1994 Antti Miettinen (amiettin@trshp.trs.ntc.nokia.com)
+
+ * config/lynx.h (ASM_OUTPUT_SOURCE_LINE): Call assemble_name.
+
+Thu Aug 11 12:57:22 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * expr.c (expand_builtin): Relegate sin and cos to ffast-math.
+
+Thu Aug 11 12:45:20 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * flow.c (find_auto_inc): Ensure that all proposed changes to
+ insns are valid before commiting to the auto-inc.
+
+ * calls.c (expand_call): Ensure we call force_operand on
+ structure_value_addr.
+
+ * configure: Use config.guess to get default value for host,
+ not target.
+
+Thu Aug 11 12:43:24 1994 Robert Wilhelm (Robert.Wilhelm@physik.tu-muenchen.de)
+
+ * Makefile.in (mostlyclean): Add missing -f.
+
+Tue Aug 9 02:02:07 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (default set high): Do not accept function label arithmetic
+ as a valid operand.
+ (default lo_sum): Likewise.
+ * pa.c (hppa_legitimize_address): Do nothing with function label
+ arithmetic.
+ (emit_move_sequence): Split up function label arithmetic so that
+ function's address is loaded first, then constant part is added to
+ the function's address.
+ (is_function_label_plus_const): New function.
+
+Mon Aug 8 19:57:05 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.md (all patterns that use ins/inss and ext/exts):
+ Disallow use of these instructions when -mnobitfield is
+ specified.
+ * ns32k.h (TARGET_BITFIELD): New macro.
+ (TARGET_SWITCHES): Support for TARGET_BITFIELD.
+ * ns32k/netbsd.h (TARGET_DEFAULT): Added -mnobitfield.
+ (CPP_PREDEFINES): Added -Dpc532.
+ (WCHAR_{TYPE, UNSIGNED, TYPE_SIZE}): Changed to match new definition
+ in NetBSD 1.0.
+ * ns32k.c (print_operand_address): A patch for 2.5.8 ended up at the
+ wrong place. Moved.
+
+Mon Aug 8 19:42:09 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.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)'.
+
+Mon Aug 8 16:32:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fix-header.c (write_rbrac): Set up to use fixed headers
+ if __USE_FIXED_HEADERS__ is defined.
+
+ * reload1.c (emit_reload_insns): Always clear new_spill_reg_store.
+
+ * reload.c (find_reloads): Force reload for paradoxical SUBREG
+ of MEM if BYTES_BIG_ENDIAN.
+
+ * m68k/hp320.h (READONLY_DATA_SECTION): Remove definition.
+
+ * function.c (expand_function_start): Only use
+ static_chain_incoming_rtx once if it is a REG and we
+ have SMALL_REGISTER_CLASSES.
+
+ * local-alloc.c (find_free_reg): Fix typo in last change.
+ * rs6000.h (CLASS_CANNOT_CHANGE_SIZE): New macro.
+
+Sun Aug 7 08:54:42 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * regs.h (reg_changes_size): Add declaration.
+ * flow.c (reg_changes_size): New variable.
+ (allocate_for_life_analysis): Allocate and initialize it.
+ (mark_used_regs, case SUBREG): Set it.
+ * local-alloc.c (qty_changes_size): New variable.
+ (alloc_qty{,_for_scratch}, update_qty_class): Set it.
+ (local_alloc): Allocate it.
+ (find_free_reg): If CLASS_CANNOT_CHANGE_SIZE, avoid its registers
+ if qty_changes_size.
+ * global.c (find_reg) If CLASS_CANNOT_CHANGE_SIZE, avoid its
+ registers if reg_changes_size.
+ * stupid.c (regs_change_size): New variable.
+ (stupid_life_analysis): Alloc, init and pass it to stupid_free_reg.
+ (stupid_mark_regs): Set it.
+ (stupid_find_reg): New arg, CHANGES_SIZE; avoid regs
+ in CLASS_CANNOT_CHANGE_SIZE if defined and CHANGES_SIZE nonzero.
+ * reload.c (push_reload): Make test in LOAD_EXTEND_OP case more
+ precise; handle CLASS_CANNOT_CHANGE_SIZE.
+ (find_relods): When setting force_reloads, make LOAD_EXTEND_OP
+ case more precise.
+ * alpha.h (CLASS_CANNOT_CHANGE_SIZE): New macro.
+
+ * reload1.c (eliminate_regs, case SUBREG): Add USE of pseudo
+ so we don't improperly delete an output reload.
+
+Fri Aug 5 15:08:39 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * expr.c (expand_expr, COND_EXPR case): Use truthvalue_conversion
+ to make the condition for running cleanups acceptable to
+ invert_truthvalue.
+
+Fri Aug 5 12:29:42 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expmed.c (expand_mult): Accept DImode for synth_mult only if
+ CONST_DOUBLE_HIGH is zero. Reject negative values for synth_mult
+ if the mode is larger than HOST_BITS_PER_INT. Don't do the
+ negate_variant if the mode is larger than HOST_BITS_PER_INT.
+
+Fri Aug 5 12:23:17 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use long instead of
+ HOST_WIDE_INT.
+
+Fri Aug 5 12:18:18 1994 Kaveh R. Ghazi (ghazi@caip.rutgers.edu)
+
+ * configure: In subdirectories, make link to include directory.
+ * Makefile.in (distclean): Delete it.
+
+Thu Aug 4 17:21:02 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * expr.c (defer_cleanups_to): Put back line which was mistakenly
+ removed.
+
+Wed Aug 3 21:37:31 1994 Doug Evans (dje@cygnus.com)
+
+ * sparc.c (v9 sparc_builtin_saveregs): Save quadword fp regs on
+ 16 byte boundaries. Handle non-zero number of named fp args.
+ * va-sparc.h (v9 va_start): Pass an arg to __builtin_next_arg.
+ (v9 va_arg): Advance over float's.
+
+Wed Aug 3 11:10:32 1994 Ian Lance Taylor (ian@mole.gnu.ai.mit.edu)
+
+ * fixincludes: Changes for glibc. In the main loop, don't fix
+ files which contain the string ``This file is part of the GNU C
+ Library''. Don't include <stdarg.h> in <stdio.h> if <stdio.h>
+ contains the string ``__need___va_list''. In <stdio.h>, don't
+ change GNUC_VA_LIST to GNUC_DUMMY_VA_LIST. Don't add extern "C"
+ to <assert.h> if it contains the string ``__BEGIN_DECLS''. Don't
+ add multiple inclusion protection to <time.h> or <sys/time.h> if
+ they contain the string ``#ifndef''.
+
+Tue Aug 2 18:38:46 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_unary_operation): Clean up some mode and
+ size checks with CONST_DOUBLEs; TRUNCATE should do nothing.
+
+ * combine.c (subst_prev_insn): Remove variable and all uses.
+
+Tue Aug 2 14:42:29 1994 Doug Evans (dje@canuck.cygnus.com)
+
+ * sparc.h (V9_SWITCHES): Add -mmedlow, -mmedany.
+ (TARGET_OPTIONS): Delete.
+ (CONDITIONAL_REGISTER_USAGE): Don't unfix %g4 if -mmedany.
+ * sparc.c (sparc_code_model): Delete.
+ (sparc_override_options): Code model flags only useable with v9.
+
+ * sparc.h (enum reg_class): New values EXTRA_FP_REGS,
+ GENERAL_OR_EXTRA_FP_REGS for the v9 case.
+ (REG_CLASS_NAMES): Likewise.
+ (REG_CLASS_CONTENTS): Likewise.
+ (REGNO_REG_CLASS): Handle EXTRA_FP_REGS.
+ (REG_CLASS_FROM_LETTER): Likewise, as `e'.
+ Treat `e' like `f' in v8 case.
+ (FP_REG_CLASS_P): New macro.
+ (PREFERRED_RELOAD_CLASS): Use it.
+ (SECONDARY_INPUT_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
+ SECONDARY_MEMORY_NEEDED, CLASS_MAX_NREGS, REGISTER_MOVE_COST):
+ Likewise.
+ * sparc.md (all DF/TFmode patterns): Use `e' in contraint field
+ instead of `f'.
+
+Mon Aug 1 20:05:51 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * config/i386/gnu.h: New file.
+ * configure (i[34]86-*-gnu*): Deal with this on its own, not like
+ i[34]86-*-mach*. Use i386/gnu.h and t-libc-ok; set gnu_ld and
+ gas, and disable fixincludes.
+
+Mon Aug 1 19:27:44 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.c (permanent_allocation): When freeing to
+ momentary_function_firstobj, set momentary_firstobj to be
+ the next available location (i.e., momentary_function_firstobj).
+
+Mon Aug 1 18:52:40 1994 Chris Arthur (csa@gnu.ai.mit.edu)
+
+ * stddef.h: Handle _BSD_WCHAR_T_ like _WCHAR_T_, since
+ at least BSD/386 1.1 uses the former instead of the latter.
+ If _BSD_RUNE_T_ is defined, then define rune_t when we define
+ wchar_t. Test definedness of _GCC_SIZE_T as well as
+ _GCC_SIZE_T_; likewise for _GCC_PTRDIFF_T and _GCC_WCHAR_T.
+
+Mon Aug 1 05:20:44 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa-ghpux.h, pa-hpux.h (LINK_SPEC): Any -g argument implies
+ static linking.
+
+Sun Jul 31 17:19:37 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * integrate.c (expand_inline_function): Don't fall down trying to
+ pass things by invisible reference.
+
+Sun Jul 31 06:56:46 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * cccp.c (my_strerror): New function.
+ (error_from_errno, perror_with_name): Use it.
+
+Sat Jul 30 12:59:01 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold_truthop): Apply masks to constants.
+
+ * print-tree.c (print_node{,_brief}): Use correct printf code to
+ print INTEGER_CST if HOST_WIDE_INT is wider than int.
+
+ * expmed.c ({store,extract}_bit_field): Don't use bitfield insn
+ if OP0 is register and bitfield spans it.
+
+ * m88k.c (arith64_operand): Integer CONST_DOUBLE is not DImode.
+ * sparc.c (reg_or_0_operand): Likewise.
+ * ns32k.c, pa.c (print_operand): Likewise.
+ * fx80.h, gmicro.h, ns32/{genix,merlin}.h (PRINT_OPERAND): Likewise.
+ * m68k/crds.h, m68k/news.h, pyr.h (PRINT_OPERAND): Likewise.
+
+ * alpha.h (CASE_VECTOR_PC_RELATIVE): Define.
+ (ASM_OUTPUT_ADDR_VEC_ELT): Abort.
+ (ASM_OUTPUT_ADDR_DIFF_ELT): Now what used to be previous definition.
+ * alpha.md (tablejump): Rework to look like normal add but verify
+ that label is for next insn and is tablejump; look for ADDR_DIFF_ELT.
+ * cse.c (fold_rtx, case MEM): Surround TRUNCATE for jump table
+ entry with a CONST.
+ (fold_rtx, case '1'): Handle operand 0 of a CONST.
+ (fold_rtx, case PLUS): Handle (const (minus (label_ref) (label_ref))).
+
+Fri Jul 29 19:27:17 1994 Lee Iverson (leei@ai.sri.com)
+
+ * c-decl.c (finish_decl): Preserve initialializer if iterator.
+
+Fri Jul 29 19:07:23 1994 Hallvard B Furuseth (h.b.furuseth@usit.uio.no)
+
+ * libgcc2.c: Add declaration of ctime.
+ * bc-emit.c (bc_sym_write): Change %d to %lu in printf calls.
+ * fix-header.c (write_{l,r}brac): Specify return type of int.
+ * tree.c (change_main_variant): Return type now void.
+ * varasm.c (bc_output_constructor): Return type now rtx.
+
+Fri Jul 29 18:33:48 1994 Ken Duda (kjd@cache.crc.ricoh.com)
+
+ * c-typeck.c (build_unary_op, case *INCREMENT_EXPR):
+ Add size in bytes, not value of sizeof.
+
+Fri Jul 29 17:36:38 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (expand_function_start): Initialize VALUE_ADDRESS.
+
+ * romp.md (tst?f): Use CONST0_RTX instead of incorrect call
+ to immed_real_const_1.
+
+ * expr.c (move_block_to_reg): Do nothing if NREGS == 0.
+
+Fri Jul 29 17:17:18 1994 Tom Tromey (tromey@busco.lanl.gov)
+
+ * cccp.c (special_symbol, do_xifdef): Don't access value.defn
+ of a T_CONST.
+
+Thu Jul 28 17:19:32 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Reverse order of execution
+ of constuctor lists.
+ * config/svr3.h (DO_GLOBAL_CTORS_BODY): Ditto.
+
+ * libgcc2.c (__do_global_dtors): Reverse order of execution of
+ destructor lists.
+
+Thu Jul 28 19:56:30 1994 Jim Pendergraft (jimp@dg-rtp.dg.com)
+
+ * dwarfout.c (output_decl, case FUNCTION_DECL): Corrected
+ and simplified code that determined when to generate
+ varargs or ANSI stdargs variable length parameter list
+ DWARF information.
+
+Thu Jul 28 19:38:57 1994 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de)
+
+ * m68k.md (extv, extzv): In patterns that will use movb and
+ movw, ensure size is 8 or 16.
+
+Thu Jul 28 19:28:31 1994 David Robinson (drtr@mail.ast.cam.ac.uk)
+
+ * expr.c (expand_expr, case CONJ_EXPR): Use correct mode for
+ parts of a complex expression.
+
+ * optabs.c (expand_binop, case MULT [complex]) Fix typo.
+
+Thu Jul 28 19:21:38 1994 Uwe Seimet (seimet@chemie.uni-kl.de)
+
+ * am68k/atari.h (FUNCTION_VALUE): New override.
+
+Thu Jul 28 17:27:38 1994 Paul Eggert (eggert@twinsun.com)
+
+ * Makefile.in (c-lex.o, distdir-start):
+ Depend on $(srcdir)/c-gperf.h, not c-gperf.h.
+
+Thu Jul 28 15:14:33 1994 Oliver Kellogg (okellogg@salyko.cube.net)
+
+ * m1750.inc (DNR.M): Add missing macro.
+
+Thu Jul 28 13:02:56 1994 Kresten Krab Thorup (krab@akvavit)
+
+ * objc/misc.c (__objc_xcalloc): Remove declaration of bzero.
+
+Thu Jul 28 07:29:52 1994 Markus Wild (mw@eunet.ch)
+
+ * c-common.c (decl_attributes): Correct string check for "format"
+ to include unsigned and signed char.
+
+Thu Jul 28 07:11:36 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (compare_spill_regs): Simplify and return zero if
+ registers are the same.
+
+ * c-decl.c (finish_struct): Don't look at alignment of error_mark_node.
+
+ * combine.c (try_combine): Don't make a MULT if none of the insns
+ in our input had one.
+
+Wed Jul 27 19:06:53 1994 R Bowler (rbowler@cix.compulink.co.uk)
+
+ * i370/mvs.h (ASM_OUTPUT_ASCII): Fix bug when first character
+ of string constant is single quote.
+
+Wed Jul 27 22:44:32 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * m68k/next.h: #undef PCC_STATIC_STRUCT_RETURN.
+
+ * alpha/alpha.h: #define NO_IMPLICIT_EXTERN_C.
+
+Wed Jul 27 14:06:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (expand_mult): Properly set ADD_TARGET for add_variant.
+
+ * alpha.h (INITIAL_ELIMINATION_OFFSET): Properly compute offset
+ between AP and SP when get_frame_size and
+ current_function_pretend_args_size are not a multiple of 16 bytes.
+
+ * expmed.c (expand_divmod): Don't make REG_NOTE if last insn's
+ destination isn't QUOTIENT.
+
+Tue Jul 26 19:45:54 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.c (expand_expr, case ARRAY_REF): Don't fold L"foo"[2].
+
+Tue Jul 26 14:10:52 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * config.sub: Refer to NeXT's operating system as nextstep.
+
+Tue Jul 26 13:50:37 1994 Jim Wilson (wilson@cygnus.com)
+
+ * c-typeck.c (process_init_element): Do not call push_init_level
+ if the value is error_mark_node.
+
+ * iris5.h (NO_IMPLICIT_EXTERN_C): Define.
+
+Mon Jul 25 00:20:36 1994 Chris Arthur (csa@gnu.ai.mit.edu)
+
+ * configure (canon_target): add cases to recognize BSD/386
+ specifically, so we can use a tm_file that will cause __bsdi__
+ to get defined (since emacs, among other things, needs it).
+
+ * config/i386/bsd386.h: New. Use 386bsd.h, and just override
+ CPP_PREDEFINES (add -Dbsdi) and WCHAR stuff.
+
+Sat Jul 23 16:30:12 1994 Kaveh R. Ghazi (ghazi@caip.rutgers.edu)
+
+ * fixinc.svr4: Change i860 in #if to __i860__, as with other CPUs.
+
+Fri Jul 22 14:33:59 1994 Doug Evans (dje@cygnus.com)
+
+ * h8300.md (andhi3, iorhi3, xorhi3): Change constraint on
+ operand 2 from `i' to `n'.
+
+Fri Jul 22 09:30:39 1994 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: move code to config/msdos/* (simplification)
+
+ * config/msdos/configure.bat [new file]: moved most processing
+ here so that as things get more complicated with the language
+ breakouts, the top directory won't get too messy. Sed script
+ broken out to simplify processing and avoid quoting errors.
+ * config/msdos/top.sed [new file]: sed script to change Makefile.in
+ to Makefile in top directory (currently used for cp directory also)
+ sed commands changed to handle language breakout
+
+ * gcc.c (pexecute): use spawn*() for djgpp to ensure that quotes
+ are properly preserved. Response file code left for 16-bit
+ compilers, which can't handle the long command lines that gcc
+ may generate.
+
+ * config/i386/go32.h: define NO_IMPLICIT_EXTERN_C.
+
+Thu Jul 21 23:19:03 1994 Steve Chamberlain (sac@wombat.gnu.ai.mit.edu)
+
+ * sh/sh.h (TARGET_SWITCHES, PACKSTRUCT_BIT, STRUCTURE_SIZE_BOUNDARY):
+ parse and handle new option.
+ (LEGITIMATE_CONSTANT_P): LABEL_REFs are no longer illegal.
+ (WCHAR_TYPE, WCHAR_TYPE_SIZE): New definitions.
+ (HANDLE_PRAGMA): Has return.
+
+ * sh/sh.c (add_function, seen_function): Experimental code to
+ generate bsrs.
+ (handle_pragma): Return final char.
+ (expand_acall): Handle TARGET_BSR.
+ (general_movdst_operand, general_movsrc_operand): Allow ok
+ autoinc/dec.
+ (bsr_operand): New function.
+ (fixit): Need to fix LABEL_REFs.
+
+ * sh/sh.md (addc): Simplify.
+ (adddi3, subdi3, negdi3): Use operand_subword.
+ (subc, negc): New pattern.
+ (shifts): Fix constraints.
+
+Thu Jul 21 17:59:43 1994 Jim Wilson (wilson@cygnus.com)
+
+ * objc-act.c (build_module_descriptor): Don't set DECL_EXTERNAL on
+ current_function_decl.
+
+ * combine.c (simplify_rtx): For (not (xor X C)) generate new rtx
+ instead of modifying old rtx.
+
+ * c-decl.c (start_function): If old_decl is NULL, then set it to
+ the implicit decl if any. Delete superfluous test from warn missing
+ prototypes code. For warn missing declarations code, only warn if
+ previous decl is implicit.
+
+Thu Jul 21 17:47:05 1994 Paul Eggert (eggert@twinsun.com)
+
+ * fold-const.c (fold): Don't fold X-X to 0 if X is floating point
+ and !flag_fast_math.
+
+Thu Jul 21 02:07:45 1994 Charles Levert (charles@comm.polymtl.ca)
+
+ * Makefile.in (stmp-multilib): Rework to handle make -n.
+ (stmp-multilib-sub): New target.
+
+Tue Jul 19 23:14:42 1994 Larry Jones (larry.jones@sdrc.com)
+
+ * configure (i[34]86-*-isc*): Treat isc4 like isc3.
+ Remove references to nonexistant files and add extra_parts
+ when needed.
+ (i[34]86-*-solaris2*): Remove reference to nonexistant
+ t-sco and use extra_parts instead.
+ (i[34]86-*-sysv*, i860-*-sysv3*, m68k-*-sysv3*, m68k-ncr-sysv*):
+ Replace t-svr3 with extra_parts.
+
+Tue Jul 19 20:31:34 1994 Doug Evans (dje@cygnus.com)
+
+ * configure (find lang subdirs loop): Try to work around an
+ apparent bug in bash 1.12 on linux.
+
+ * Makefile.in (clean): Remove multilib build dirs.
+
+ * h8300.c (print_operand, default case): Handle SFmode regs.
+
+Mon Jul 18 22:02:53 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.c (call_operand): Use symbolic_operand not CONSTANT_P.
+ (call_operand_address): Likewise.
+ * sparc.md (call*): Use symbolic_operand not immediate_operand.
+ Use 's' constraint not 'i' constraint.
+
+ * toplev.c (rest_of_compilation): Clear DECL_ABSTRACT_ORIGIN if
+ clear DECL_INLINE.
+
+ * global.c (find_reg): Store divide results in temporary variables.
+
+ * gcc.c (process_command): When have -BstageN option, pass include
+ not stageN/../include to preprocessor.
+
+Mon Jul 18 21:58:27 1994 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * loop.c (move_movables): Aviod lossage when CALL_INSN_FUNCTION_USAGE
+ is NULL.
+
+Mon Jul 18 20:53:54 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Rework required loop to avoid crash on decstation.
+
+Thu Jul 14 09:42:23 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Version 2.6.0 released.
+
+ * explow.c (force_reg): Don't make a REG_EQUAL note for an insn
+ that doesn't set TEMP.
+
+Wed Jul 13 17:00:35 1994 Torbjorn Granlund (tege@rtl.cygnus.com)
+
+ * expmed.c (expand_divmod, case CEIL_DIV_EXPR):
+ Handle emit_store_flag returning 0.
+
+Wed Jul 13 16:35:57 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expr.c (store_field): Set MEM_IN_STRUCT_P on object and
+ blk_object.
+
+Wed Jul 13 08:40:11 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * Makefile.in (distdir-start): Make tmp/ginclude and copy its files.
+ (distdir-finish): Don't use -f Makefile.in.
+ (gcc.xtar.gz): Add --best.
+
+ * fold-const.c (decode_field_reference): Merge operand of
+ a BIT_AND_EXPR with the mask made from the description of the field.
+
+ * fold-const.c (fold, case MULT_EXPR): Remove last change.
+
+Wed Jul 13 07:12:32 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * xm-pa.h, xm-pahpux.h, xm-pahiux.h (USE_C_ALLOCA): Define.
+
+Wed Jul 13 03:30:36 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * tree.h (TYPE_NEEDS_CONSTRUCTING): New macro.
+ (tree_type): Add needs_constructing_flag.
+ * function.c (assign_parms): If TYPE_NEEDS_CONSTRUCTING, pass by
+ invisible reference.
+ * calls.c (expand_call): Ditto.
+
+Wed Jul 13 06:49:05 1994 Simon Cooper (scooper@hardees.rutgers.edu)
+
+ * objc/Object.m: Include stdarg.h before stdio.h.
+
+Tue Jul 12 21:31:59 1994 Jim Wilson (wilson@cygnus.com)
+
+ * c-decl.c (pushdecl): Don't call lookup_name_current_level_global
+ when traditional. When doing checks against
+ IDENTIFIER_LIMBO_VALUE, also do check against
+ INDENTIFIER_GLOBAL_VALUE when traditional.
+
+ * final.c (getpwd): Declare.
+
+Tue Jul 12 16:24:10 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (GO_IF_LEGITIMATE_ADDRESS): Only allow immediate addressing
+ using 5 bits to avoid losing with FP loads and stores on page zero.
+
+Tue Jul 12 16:20:09 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (ashlsi3, lshrsi3, ashrsi3): Only output low-order five
+ bits for !TARGET_POWER case.
+
+Tue Jul 12 13:06:14 1994 Jim Wilson (wilson@cygnus.com)
+
+ * combine.c (record_dead_and_set_regs_1): Can only handle SUBREG
+ if the register is smaller or equal to BITS_PER_WORD.
+
+ * sparc/sysv4.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Define.
+
+ * final.c (end_final): Store full path name in .d file not just
+ the filename.
+
+ * README.IRIX5: New file.
+
+Tue Jul 12 10:55:14 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (CC1_SPEC): If both -pic-extern/-pic-lib and
+ -pic-none, use -pic-extern win, instead of -pic-none.
+
+ * i386/osfelf.h (CC1_SPEC): Ditto.
+
+Tue Jul 12 09:08:06 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Don't try to call force_const_mem on
+ a HIGH.
+
+ * fold-const.c (fold, case MULT_EXPR): If arg is an unsigned
+ CEIL_DIV_EXPR, convert to TRUNC_DIV_EXPR of a PLUS_EXPR in some cases.
+
+ * alpha.md (ashldi3): Update pattern for (sign_extend (ashift ..))
+ to match the current canonicalization.
+
+ * explow.c (round_push, allocate_dynamic_stack_space): Avoid
+ using CEIL_DIV_EXPR; add adjustment and use TRUNC_DIV_EXPR instead.
+
+Tue Jul 12 08:12:04 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * dbxout.c (dbxout_source_file): Increment source_label_number outside
+ of macro expansion.
+
+ * arm.c (reversible_cc_register): New function.
+ (final_prescan_insn): Don't try to conditionalize jumps with JUMP_CLOB
+ attribute.
+ * arm.h (PREDICATE_CODES): Add reversible_cc_register.
+ * arm.md (matcher for SFmode inequality comparison): Use cmfe, not cfm.
+ (matchers for {store-flag, not-store-flag, neg-store-flag}): Output
+ if-false instruction first before if-true instruction.
+ (matcher for (AND store-flag x)): Only match if reversible_cc_register.
+ (matcher for (IF-THEN-ELSE reg (NOT reg))): Likewise.
+
+ * arm.h (FRAME_POINTER_REQUIRED): Always true if the function has
+ nonlocal labels.
+ * arm.md ({save,restore}_stack_nonlocal): Delete.
+
+Mon Jul 11 19:29:15 1994 Oliver Kellogg (okellogg@salyko.cube.net)
+
+ * machmode.def (TQFmode): New mode.
+ * expr.c (convert_move): Add some conversions for TQFmode.
+ * varasm.c (assemble_real): Handle TQFmode output.
+ * config.sub (basic_machine): Add 1750a.
+ * configure (1750a-*-*): New configuration.
+ * 1750a.c, 1750a.h, 1750a.md, m1750a.inc: New files.
+
+Mon Jul 11 18:38:42 1994 Doug Evans (dje@cygnus.com)
+
+ Add support for the h8/300h cpu.
+ * config/h8300/lib1funcs.asm: New file.
+ * h8300/t-h8300 (CROSS_LIBGCC1): Use libgcc1-asm.a.
+ (LIB1ASMSRC, LIB1ASMFUNCS, LIB2FUNCS_EXTRA, MULTILIB_OPTIONS,
+ MULTILIB_DIRNAMES, LIBGCC, INSTALL_LIBGCC): Define.
+ (fp-bit.c): Build it.
+ * h8300/h8300.h (CPP_PREDEFINES, CPP_SPEC, LIB_SPEC, TARGET_SWITCHES,
+ BITS_PER_WORD, MAX_BITS_PER_WORD, UNITS_PER_WORD, MAX_UNITS_PER_WORD,
+ POINTER_SIZE, PARM_BOUNDARY, BIGGEST_ALIGNMENT,
+ BIGGEST_FIELD_ALIGNMENT, STACK_BOUNDARY, HARD_REGNO_NREGS,
+ HARD_REGNO_MODE_OK, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
+ REGNO_REG_CLASS, PUSH_ROUNDING, FUNCTION_ARG_ADVANCE,
+ TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE,
+ CONSTANT_ADDRESS, MOVE_MAX, Pmode, SIZE_TYPE, PTRDIFF_TYPE):
+ Add h8/300h support.
+ (LINK_SPEC, TARGET_RTL_DUMP, TARGET_H8300, TARGET_H8300H,
+ REAL_ARITHMETIC, SETUP_INCOMING_VARARGS, HAVE_POST_INCREMENT,
+ HAVE_PRE_DECREMENT, MAX_MOVE_MAX, NO_BUILTIN_SIZE_TYPE,
+ NO_BUILTIN_PTRDIFF_TYPE, WCHAR_TYPE, WCHAR_TYPE_SIZE,
+ MAX_WCHAR_TYPE_SIZE, ASM_WORD_OP, INIT_SECTION_ASM_OP,
+ CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, EXTRA_SECTIONS,
+ EXTRA_SECTION_FUNCTIONS, ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR,
+ DO_GLOBAL_CTORS_BODY, DO_GLOBAL_DTORS_BODY, INIT_TARGET_OPTABS):
+ Define.
+ (CAN_DEBUG_WITHOUT_FP, PCC_STATIC_STRUCT_RETURN, STRUCT_VALUE_REGNUM,
+ STRUCT_VALUE_INCOMING, STRUCTURE_SIZE_BOUNDARY): Undefine.
+ (enum reg_class): Add h8/300h support.
+ (emit_a_shift): Declare.
+ (TARGET_DEFAULT): Set default to -mquickcall.
+ (DOUBLE_TYPE_SIZE): Fix at 32. DFmode support doesn't exist.
+ (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Swap registers 2,3 with 4,5.
+ Registers 0,1 contain function result, allocate after 2,3.
+ (STATIC_CHAIN_REGNUM): Use reg 4.
+ (CONST_OK_FOR_LETTER_P): 'O' is ok_for_bclr, 'P' is small_power_of_two.
+ (FUNCTION_PROFILER, FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): First
+ attempt at an implementation.
+ (CONST_COSTS): Move code into function const_costs.
+ (BRANCH_COST): Set to 0.
+ (NOTICE_UPDATE_CC): Move code into function notice_update_cc.
+ (ASM_FILE_START): Move code into function asm_file_start.
+ (ASM_FILE_END): Move code into function asm_file_end.
+ (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Use REAL_VALUE_TO_DECIMAL.
+ * h8300/h8300.c (cpu_type, names_extended, names_upper_extended,
+ h8_reg_names, h8_push_ops, h8_pop_ops, h8_mov_ops, h8_push_op,
+ h8_pop_op, h8_mov_op, current_function_anonymous_args, extra_pop,
+ hand_list): New variables.
+ (h8300_init_once, asm_file_start, asm_file_end, ok_for_bclr, o_operand,
+ p_operand, call_insn_operand, jump_address_operand, bit_operand,
+ eq_operator, const_costs, notice_update_cc, bit_operator,
+ nshift_operator, expand_a_shift, get_shift_alg, emit_a_shift,
+ fix_bit_operand): New functions.
+ (shift_alg, shift_type, shift_mode): New enums.
+ (shift_insn): New struct.
+ (shift_n_bits, can_shift): Deleted.
+ (shift_one, rotate_one): New variables.
+ (WORD_REG_USED): New macro (was function word_reg_used).
+ (dosize, function_prologue, function_epilogue, print_operand_address):
+ Add h8/300h support.
+ (small_power_of_two): Renamed from potl8.
+ (potg8): Deleted.
+ (general_operand_src): Fix POST_INC case.
+ (general_operand_dst): Fix PRE_DEC case.
+ (function_arg): 3 regs of args are passed if -mquickcall.
+ 4 regs of args are passed to handwritten assembler routines.
+ (print_operand): New cases 'A', 'P', 'S', 'U', 'W', 'b', 'c', 'd', 'g'.
+ Delete case 'O'. Sort cases. Add h8/300h support.
+ (do_movsi): Renamed from domovsi.
+ Handle reload_in_progress and reload_completed.
+ (initial_offset): Renamed from io. Add h8/300h support.
+ * h8300/h8300.md (cpu): New attribute.
+ (attribute length): Add h8/300h support.
+ (attribute cc): New value `cbit'.
+ (all anonymous insns): Give them names.
+ (move insns): Add h8/300h support.
+ (tstqi, tsthi): Use btst insn if able.
+ (arithmetic insns): Add h8/300h support.
+ (boolean insns): Likewise.
+ (negate insns): Likewise.
+ (branch insns): Likewise.
+ (call_value): Use call_insn_operand for operand 1.
+ (shift insns): Completely rewritten. Add h8/300h support.
+ (zero/sign extension insns): Add h8/300h support.
+ (extv): Deleted.
+ (insv, extzv): Only use for h8/300.
+ (bitfield insns): Completely rewritten.
+ (fancyb*): New insns for speeding up bit accesses.
+
+ * optabs.c (init_optabs): Allow target specific libcalls
+ with INIT_TARGET_OPTABS.
+
+Mon Jul 11 18:32:42 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * config/fp-bit.c: New file. Provides simple fp emulation library.
+
+Mon Jul 11 18:27:42 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (libgcc1-asm.a): New target for building libgcc1.a
+ in cross compilers.
+
+Mon Jul 11 17:00:45 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (movsi matcher): Add nop for moving special register
+ to itself for !TARGET_POWER.
+ (movhi and movqi matcher): Likewise and add mtjmpr attribute.
+ Separate MQ from CTR and LR target registers for TARGET_POWER.
+
+ * powerpc.h (CPP_SPEC): Fix typo.
+
+Mon Jul 11 16:50:29 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-parse.in (stmt): Don't give more than one error message if a
+ nested `if' has an empty body.
+
+ * a29k.md (movqi): Call loadhi, not loadqi.
+
+Mon Jul 11 16:46:09 1994 Jeffrey A. Law (law@mole.gnu.ai.mit.edu)
+
+ * pa.h (DEBUGGER_ARG_OFFSET): Define. If no frame pointer
+ is available, then adjust the offset by the size of the
+ current frame.
+
+Mon Jul 11 16:34:14 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * configure (*-*-lynxos*): Always run fixincludes, and if not using
+ gas, set tm_file to lynx-ng.h.
+ * config/x-lynx: Always run fixproto.
+ * config/lynx.h, i386/lynx.h, m68k/lynx.h, sparc/lynx.h: Rewrite
+ to work with gas producing coff files.
+ * config/lynx-ng.h, i386/lynx-ng.h, m68k/lynx-ng.h,
+ sparc/lynx-ng.h: New files.
+
+Mon Jul 11 15:16:28 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * make-cc1.com: Compile most of cc1plus in the `cp' subdirectory.
+ * vmsconfig.com: When setting up tm.h, convert "vax/vax.h" into
+ "config-vax.h" rather than "[.config.vax]vax.h" for #include so
+ it will work from [.cp] subdirectory; copy vax.h to config-vax.h
+ as part of configuration setup. Also, manually include cc1plus
+ in the list of buildable compilers (a temporary measure; it
+ should process cp/Makefile.in like it does for primary makefile).
+
+ * make-cc1.com: Use `=' rather than `:=' when setting up CC,
+ so that `gcc' can be defined as a foreign command if necessary;
+ eliminate `set symbol/scope=noGlobal' for same reason; use `='
+ with all other symbols, for consistency; add explicit .obj
+ extension to some lists of object files passed to the linker;
+ general cleanup of the command text echoed during execution.
+ * make-cccp.com: Revise to be more consistent with make-cc1.com
+ for symbol setup & usage and for echoing command execution.
+
+Mon Jul 11 15:03:23 1994 Charles Hannum (mycroft@duality.gnu.ai.mit.edu)
+
+ * configure: Recognize m68k-*-netbsd* and i[345]86-*-netbsd*.
+ * cccp.c, collect2.c, gcc.c, protoize.c, cp/g++.c (sys_errlist)
+ [bsd4_4]: Do this for __NetBSD__ also.
+
+Mon Jul 11 14:16:28 1994 Kresten Krab Thorup (krab@spiff.gnu.ai.mit.edu)
+
+ * mips/mips.h (STRUCT_VALUE): Change definition from `(rtx)0' to
+ just `0' so it is a valid expression for the pre-processor.
+
+Mon Jul 11 10:54:35 1994 Stan Cox (coxs@dg-rtp.dg.com)
+
+ * configure (m88k-dg-dguxbcs): New configuration. m88k-dg-dgux
+ Now builds an elf compiler. Both targets will create bcs or elf.
+
+ * m88k/dgux.h (ASM_SPEC,STARTFILE_SPEC,LIB_SPEC): svr4 default.
+
+ * m88k/dguxbcs.h (ASM_SPEC,STARTFILE_SPEC,LIB_SPEC):
+ New target for svr3.
+
+ * m88k/x-dgux, m88k/t-dgux, m88k/x-dguxbcs:
+ Changed for svr4/svr4/svr3 respectively.
+
+ * m88k/m88k.h (TARGET_SVR3): New target switch.
+
+Wed Jun 29 19:23:27 1994 David Mosberger-Tang (davidm@piston.cs.arizona.edu)
+
+ * alpha.h (LIB_SPEC): If -pg, add -lprof2.
+
+Mon Jul 11 13:17:38 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * combine.c (simplify_set): Only turn IF_THEN_ELSE into AND if
+ MODE_INT.
+
+Sun Jul 10 06:03:12 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (eliminate_regs_in_insn): Handle special case of
+ assignment from hard frame pointer to frame pointer (for
+ nonlocal goto).
+ * function.c (instantiate_virtual_regs_1): Remove last change.
+ * stmt.c (expand_end_bindings): When adjusting FP, set it
+ from hard_frame_pointer_rtx.
+
+ * expr.c (expand_builtin, case BUILT_IN_FSQRT): Don't use
+ asterisk in name of `errno'.
+
+Fri Jul 8 22:07:32 1994 Jim Wilson (wilson@cygnus.com)
+
+ * stdarg.h: Delete include of <stdarg.h> when not gcc.
+ * varargs.h: Delete include of <varargs.h> when not gcc.
+
+Fri Jul 8 18:45:56 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k/mot3300.h (FUNCTION_EXTRA_EPILOGUE): Copy a0 to d0, not
+ the other way.
+
+Fri Jul 8 17:41:39 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expr.c (get_inner_unaligned_p): New function.
+ (expand_assignment, expand_expr): Use it.
+
+Fri Jul 8 17:16:25 1994 Doug Evans (dje@cygnus.com)
+
+ * expmed.c (extract_split_bit_field): Set UNIT to BITS_PER_WORD for
+ register values.
+ (store_split_bit_field): Likewise. Call operand_subword_force.
+
+Fri Jul 8 13:48:23 1994 Mike Stump (mrs@cygnus.com)
+
+ * expr.c (target_temp_slot_level): New variable to keep track of
+ the current stack level for temporaries created by TARGET_EXPRs.
+ * expr.h (target_temp_slot_level): Declare it.
+ * expr.c (expand_expr): Add code to maintain the new temporary
+ stack for TARGET_EXPRs to the CLEANUP_POINT_EXPR code and change
+ the allocation of temporaries for TARGET_EXPRs to be from the new
+ stack, so that they may live longer, and only be reused after they
+ are no longer in use.
+ * function.c (assign_stack_temp): KEEP can now also be 2, to
+ indicate allocation from the longer term frontend controlled
+ temporary stack.
+ * function.c (init_function_start): Initialize
+ target_temp_slot_level to zero.
+
+Fri Jul 8 16:52:38 1994 Jim Wilson (wilson@cygnus.com)
+
+ * combine.c (distribute_notes, REG_DEAD case): When check to see
+ if insn uses register, also call find_regno_fusage.
+
+ * sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Call assign_stack_local
+ if the frame has zero size.
+
+Fri Jul 8 11:46:50 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * varasm.c (record_constant_rtx, force_const_mem): Ensure everything
+ is in saveable_obstack, not current_obstack.
+
+ * combine.c (force_to_mode): OP_MODE must be MODE if MODE and
+ mode of X are of different classes.
+ (nonzero_bits, num_sign_bit_copies): Say nothing known for
+ floating-point modes.
+
+ * function.c (instantiate_virtual_regs_1, case SET):
+ If DEST is virtual_stack_vars_rtx, replace with hardware
+ frame pointer.
+
+ * expr.c (expand_expr, case CONVERT_EXPR): If changing signedness
+ and we have a promoted SUBREG, clear the promotion flag.
+
+ * c-decl.c (finish_decl): Put RTL and other stuff in
+ permanent_obstack if DECL is.
+
+ * combine.c (gen_unary): Add new arg, OP0_MODE.
+ All callers changed.
+
+Thu Jul 7 19:58:35 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * varasm.c (assemble_variable): Do set TREE_ASM_WRITTEN on
+ erroneous incomplete decls.
+
+Thu Jul 7 17:59:46 1994 Joseph Arceneaux (jla@gnu.ai.mit.edu)
+
+ * configure (m68k-motorola-sysv*): Use mot3300g.h for gas.
+ * m68k/mot3300g.h: New file.
+
+Thu Jul 7 17:42:21 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k/mot3300.h (FUNCTION_EXTRA_EPILOGUE): Fix typo in last change.
+
+Thu Jul 7 17:36:26 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (expand_mult_highpart): Build constant forms of CNST1
+ in MODE or WIDE_MODE, as appropriate.
+
+ * optabs.c (expand_binop, case DIV [complex]): Fix typo in last change.
+
+ * alpha.md (reload_inqi): Make operand[2] be TImode and
+ pass register number that differs to unaligned_loadqi.
+ (reload_outqi): Change overlap in temps to unaligned_storeqi.
+ * alpha.c ({un,}aligned_memory_operand): Check against
+ hard_frame_pointer_rtx, not frame_pointer_rtx.
+
+Thu Jul 7 01:39:33 1994 Doug Evans (dje@cygnus.com)
+
+ * combine.c (make_compound_operation, AND case): Do extraction in
+ desired result mode.
+
+ * flow.c (mark_set_1): Record explicit hard registers in their
+ raw mode.
+ (mark_used_regs): Likewise.
+ * combine.c (distribute_notes): Likewise.
+
+Wed Jul 6 14:45:08 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * longlong.h (vax sdiv_qrnnd): Fix typo.
+
+Wed Jul 6 19:59:12 1994 Mike Stump (mrs@cygnus.com)
+
+ * expr.c (expand_expr, defer_cleanups_to, expand_cleanups_to): All
+ cleanups have to be protected by interim exception handling code.
+ * stmt.c (expand_decl_cleanup, expand_cleanups): Ditto.
+ * toplev.c (interim_eh_hook): Hook for interim exception handling.
+ * toplev.c (interim_eh): Default implementation for exception
+ handling that does nothing.
+ * toplev.c (main): Set default for interim_eh_hook.
+
+Wed Jul 6 17:56:37 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (output_prolog): Start memory probing with $2.
+
+Wed Jul 6 14:21:14 1994 Jim Wilson (wilson@cygnus.com)
+
+ * stmt.c (struct nesting): Add new field alt_end_label.
+ (expand_start_loop): Initialize it to zero.
+ (expand_end_loop): Reorder loop if find either a jump to end_label
+ or a jump to alt_end_label.
+ (expand_exit_loop_if_false): Set alt_end_label.
+
+Wed Jul 6 05:07:31 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * c-common.c (decl_attributes): If TREE_TYPE for the DECL is updated,
+ then update TYPE as well.
+
+ * longlong.h (arm umul_ppmm): Fix use of uninitialized register.
+ Eliminate clobbers of hard registers.
+
+Wed Jul 6 03:22:04 1994 Torbjorn Granlund (tege@rtl.cygnus.com)
+
+ * expmed.c (expand_divmod): Clear out TARGET also if OP1 is a
+ constant, when TARGET == OP0.
+
+Tue Jul 5 18:58:28 1994 Torbjorn Granlund (tege@rtl.cygnus.com)
+
+ * Makefile.in (c-parse.y): Redirect through tmp file.
+ (objc-parse.y): Likewise.
+ (c-gperf.h): Likewise.
+ (mostlyclean): Delete the new tmp files.
+
+ * expmed.c (expand_divmod): Fix typo setting op1_is_pow2.
+ (expand_divmod): Handle powers-of-two specifically for unsigned
+ CEIL_*_EXPR.
+
+ * longlong.h: Really fix the test for _IBMR2. Change test of
+ __powerpc__ to _ARCH_PPC.
+
+Tue Jul 5 17:00:19 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (try_combine): Don't check for replacing
+ arg of function here.
+ (can_combine_p): Do it here.
+
+ * expr.c (expand_increment): If pre-incrementing a promoted
+ variable, don't adjust OP0 since the result won't be used.
+
+ * jump.c (duplicate_loop_exit_test): Handle SUBREG in SET_DEST
+ of loop exit test statements.
+
+ * combine.c (try_combine): If I2DEST was used in I2SRC, it isn't
+ unused just because there is no SET for I2 anymore.
+
+Mon Jul 4 11:15:13 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (RS6000_OUTPUT_BASENAME): Always call assembler_name
+ and pass the actual symbol name.
+
+ * varasm.c (assemble_name): Call STRIP_NAME_ENCODING.
+
+ * cse.c (canon_hash, exp_equiv_p): Refer to string in SYMBOL_REF
+ with XSTR, not XEXP.
+
+Sat Jul 2 18:53:19 1994 Jim Wilson (wilson@cygnus.com)
+
+ * mips.md (smuldi3_highpart, smuldi3_highpart_internal,
+ umuldi3_highpart, umuldi3_highpart_internal): New patterns.
+
+ * unroll.c (loop_iterations): Only use REG_EQUAL note value if it
+ is constant.
+
+ * dbxout.c (dbxout_type_methods): Enable debugging info for
+ template classes.
+
+ * c-lex.c (yylex): Reject imaginary numbers when pedantic.
+
+ * c-decl.c (duplicate_decls): When make void* match char*, set
+ DECL_IN_SYSTEM_HEADER.
+
+ * Makefile.in (clean): Delete LIB2FUNCS_EXTRA.
+
+ * alpha.h (FUNCTION_PROFILER, FUNCTION_BLOCK_PROFILER,
+ BLOCK_PROFILER): Use multiple fputs/fprintf calls instead of ANSI
+ C concatenated strings.
+ (PREDICATE_CODES): Add cint8_operand.
+
+ * gcc.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -isystem.
+
+Sat Jul 2 09:34:20 1994 Torbjorn Granlund (tege@rtl.cygnus.com)
+
+ * expmed.c (expand_divmod): Always return gen_lowpart (mode, ...).
+
+Fri Jul 1 19:28:39 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (make_return_insns): Make sure redirecting a jump to
+ a RETURN insn does not invalidate the delay slots of the jump.
+
+Fri Jul 1 16:32:58 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * longlong.h: (arm umul_ppmm): Fix typos in last change. Mark
+ hard-coded registers with "%|".
+
+Fri Jul 1 10:08:47 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (compile_file): Pass through static consts and inlines
+ multiple times in case they reference each other.
+
+Fri Jul 1 07:41:19 1994 Torbjorn Granlund (tege@tiny.cygnus.com)
+
+ * longlong.h: Test for _AM29K and _IBMR2, not ___AM29K__
+ and ___IBMR2__.
+ (arm umul_ppmm): New definition.
+ (clipper umul_ppmm, smul_ppmm, __umulsidi3): New definitions.
+ (hppa count_leading_zeros): New definition.
+ (i960 umul_ppmm, __umulsidi3): New definitions.
+ (mc68000 umul_ppmm): Use %. before size suffixes.
+ (mc88110 umul_ppmm, udiv_qrnnd): Rewrite,
+ (mc88000): Get UMUL_TIME and UDIV_TIME right.
+ (mips): Get UMUL_TIME right.
+ (ns32000 umul_ppmm): New definition.
+ (ns32000 udiv_qrnnd): Rename from bogus div_qrnnd, rewrite.
+ (powerpc umul_ppmm, smul_ppmm): New definitions.
+ (_IBMR2/powerpc add_ssaaaa, sub_ddmmss): Improve.
+ (pyr umul_ppmm): Fix typo.
+ (sparc add_ssaaaa, sub_ddmmss): Match constant 0 for all inputs.
+ (vax sdiv_qrnnd): New definition.
+
+ * expmed.c (expand_divmod): Put OP0 in a register when computing
+ remainder, or when OP1 is constant.
+
+Fri Jul 1 06:46:09 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): Don't convert if (foo) x++ into an
+ add of an scc unless X has no side effects and can't trap.
+
+ * c-parse.in (initelt): The equal sign is optional when
+ positioning to a single element of an array.
+
+ * c-typeck.c (push_init_level): If not at "unfilled" position,
+ set constructor_incremental to 0; likewise for range.
+
+ * xm-alpha.h: If GNUC, include alloca.h, else declare alloca.
+
+ * m68k/mot3300.h (FUNCTION_EXTRA_EPILOGUE): New macro.
+
+ * expmed.c (expand_divmod): Don't set REG_NOTES unless we generated
+ a quotient.
+
+Thu Jun 30 18:25:52 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * gcc.c (do_spec_1, case 'P'): Don't add underscores to macros
+ starting with '_[A-Z]'.
+
+Thu Jun 30 18:16:36 1994 Will Athanasiou (will@guardian.westford.ccur.com)
+
+ * m68k.md (umulsi3_highpart, smulsi3_highpart): Fix constraint
+ for operand 0 in define_insn.
+
+Thu Jun 30 16:07:33 1994 Kaveh R. Ghazi (ghazi@noc.rutgers.edu)
+
+ * fixincludes: Put wrappers around <time.h> and <sys/time.h> to
+ avoid multiple inclusion errors on m88k-tektronix-sysv3.
+
+Thu Jun 30 12:08:48 1994 Kresten Krab Thorup (krab@spiff.gnu.ai.mit.edu)
+
+ * objc-act.c, objc/init.c (OBJC_VERSION): Incremented to 6.
+
+ * objc/sendmsg.c (INVISIBLE_STRUCT_RETURN): New macro.
+ (__objc_block_forward): Declare depending on the above.
+
+ * objc/class.c (objc_next_class): New function.
+ * objc/objc-api.h (objc_next_class): New function.
+
+ * objc-act.c (get_proto_encoding, build_typed_selector_reference):
+ New fucnctions. (UTAG_PROTOCOL): New define.
+ (objc_selector_template, flag_typed_selectors): New variables.
+ (objc_init): set flag_typed_selectors if -fgnu-runtime.
+ (synth_module_prologue): Change declaration of
+ _OBJC_SELECTOR_TABLE when flag_typed_selectors is non-null.
+ (build_module_descriptor): Make sure the generated constructor
+ function is declared public.
+ (build_selector): Only cast to SEL when not doing typed selectors.
+ (build_selector_translation_table): Rewrite initialization.
+ (build_tmp_function_decl): Make up new name when called, since it
+ may now be called multiple times.
+ (hack_method_prototype): Use init_function_start to reinit args
+ machinery. Also set current_function_decl before calling
+ assign_parms.
+ (generate_protocols): Don't generate encoding twice.
+ (build_selector_template): New function.
+ (build_method_list_template): Generate (void*)0 as first element,
+ not (int)0.
+ (build_message_expr): move the call to build_selector_reference
+ towards the end, where we have determined the function prototype.
+
+ * objc/Object.h, objc/Object.m (read:, write:, streamVersion:):
+ Un-disable for alpha. (forward::, performv::): Declare and fix to
+ return retval_t.
+ * objc/archive.c: Completely rewritten to handle 64 bit longs and
+ pointers.
+ * objc/class.c (class_pose_as): Rewritten.
+ * objc/encoding.c: use new ROUND macro for alignment rounding.
+ * objc/init.c, objc/selector.c, objc/sendmsg.c: Rewritten to
+ handle new selectors.
+
+Thu Jun 30 07:49:50 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.h (INITIAL_ELIMINATION_OFFSET): Check frame_pointer_needed when
+ eliminating the arg pointer into the stack pointer.
+
+Thu Jun 30 06:25:50 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-common.c (c_build_type_variant): Remove last change; instead,
+ copy TYPE if not in old obstack.
+
+Wed Jun 29 21:51:52 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (lang_options): Add -W{no-,}non-virtual-dtor.
+
+Wed Jun 29 19:23:27 1994 David Mosberger-Tang (davidm@piston.cs.arizona.edu)
+
+ * final.c (end_final,profile_function): Profiling variables are
+ size of pointer, not int.
+ * alpha.h (LIB_SPEC): If -pg, add -lprof2.
+ (STARTFILE_SPEC, {FUNCTION,BLOCK,FUNCTION_BLOCK}_PROFILER): New macros.
+
+Wed Jun 29 15:52:45 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * loop.c (basic_induction_var, case REG): Allow previous
+ insn to set a SUBREG of X.
+
+ * alpha.c (alpha_sa_size): Round size to 16-byte boundary.
+ (add_long_const): Add new arg, TEMP_REG.
+ (output_{pro,epi}log): Rework to put save area between outgoing
+ args and local variables.
+ * alpha.h (FRAME_POINTER_REGNUM): Now register 63.
+ (HARD_FRAME_POINTER_REGNUM): New macro.
+ (CONDITIONAL_REGISTER_USAGE, REG_CLASS_CONTENTS, REGNO_REG_CLASS):
+ Show register 63 is not an FP register.
+ (REGHNO_OK_FOR_BASE_P, REG_OK_FOR_BASE_P, REGISTER_NAMES): Likewise.
+ (ALPHA_ROUND): New macro.
+ (STARTING_FRAME_OFFSET, ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET):
+ Modify to reflect save area between outgoing args and local vars.
+ * alpha.md: Add new pattern for double-add when have
+ reg + frame pointer.
+ Slight changes to all such patterns and add define_splits for them.
+
+ * global.c (global_alloc): Make a more accurate attempt to see
+ if the frame pointer will be used.
+ If it is, show HARD_FRAME_POINTER_REGNUM used if its not
+ the same as FRAME_POINTER_REGNUM.
+ * reload1.c (reload): Can't eliminate if frame pointer needed
+ and TO is stack pointer.
+ Spill HARD_FRAME_POINTER_REGNUM if not FRAME_POINTER_REGNUM
+ and frame pointer is needed.
+ (spill_hard_reg): If CANT_ELIMINATE, set regs_ever_live;
+ no longer done by callers.
+
+ * a29k.md (movqi): Add missing `DONE'.
+
+Wed Jun 29 15:44:18 1994 Doug Evans (dje@canuck.cygnus.com)
+
+ * sparc/sparc.h (CPP_SPEC): Split up v9/non-v9 stuff.
+ Move -Acpu and -Amachine from here.
+ (CPP_PREDEFINES): To here.
+ (NO_BUILTIN_PTRDIFF_TYPE): Undefine.
+ (NO_BUILTIN_SIZE_TYPE): Likewise.
+ (PTRDIFF_TYPE): Split up v9/non-v9 definitions.
+ (SIZE_TYPE): Likewise.
+ * sparc/sp64-elf: (PTRDIFF_TYPE): Remove dependence on POINTER_SIZE.
+ (SIZE_TYPE): Likewise.
+
+Wed Jun 29 15:28:17 1994 Michael Meissner (meissner@osf.org)
+
+ * cccp.c (collect_expansion): Always put 1 space after the macro
+ expansion in ANSI mode to fix regression from June 24th.
+
+Tue Jun 28 22:41:52 1994 Doug Evans (dje@cygnus.com)
+
+ * combine.c (simplify_set): Evaluate HAVE_conditional_move at runtime.
+
+Tue Jun 28 20:27:08 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * optab.c (expand_binop): Convert OP0 to mode for library calls.
+
+ Changes to optimize division-by-constants, and make ceil and floor
+ rounding work correctly:
+ * expmed.c (expand_mult): Generalize to call synth_mult also
+ for OP1 - 1.
+ (ceil_log2): New function.
+ (choose_multiplier): New function.
+ (invert_mod2n): New function.
+ (expand_mult_highpart_adjust): New function.
+ (expand_mult_highpart): New function.
+ (EXACT_POWER_OF_2_OR_ZERO_P): New macro.
+ (expand_divmod): Almost completely rewritten.
+ (expand_shift): Don't truncate immediate shift count, it doesn't work
+ for types smaller than int.
+ * expr.h (smul_highpart_optab, umul_highpart_optab): New variables.
+ * genopinit.c (optabs): Add [us]mul_highpart_optab.
+ * optabs.c (smul_highpart_optab, umul_highpart_optab): New variables.
+ (expand_binop): Handle [us]mul_highpart_optab as commutative.
+ (init_optabs): Initialize [us]mul_highpart_optab.
+ * fold-const.c (div_and_round_double): Make it globally accessible.
+ * a29k.md (smulsi3_highpart, umulsi3_highpart): New patterns.
+ * alpha.md (umuldi3_highpart): New expander and matcher.
+ * alpha.c (cint8_operand): New predicate.
+ * m68k.md (umulsi3_highpart, const_umulsi3_highpart):
+ New expander and matcher.
+ (smulsi3_highpart, const_smulsi3_highpart): Likewise.
+
+Tue Jun 28 13:42:10 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sol2.h (CPP_SPEC): Handle -msupersparc.
+ * sparc.c (cpu_type, sparc_cpu_type): Rename to arch_type and
+ sparc_arch_type. Fix all users.
+ (supersparc_adjust_cost): New function.
+ * sparc.h (cpu_type, sparc_cpu_type): Rename to arch_type and
+ sparc_arch_type.
+ (CPP_SPEC): Handle -msupersparc.
+ (MASK_SUPERSPARC, TARGET_SUPERSPARC): New macros.
+ (TARGET_SWITCHES): Add -msupersparc and -mcypress.
+ (ADJUST_COST): New macro.
+ * sparc.md (cpu attribute): Rename to arch attribute. Add a new
+ cpu attribute. Fix all users.
+ (type attribute): Add ialu, shift, imul, fpdivs, and fpdivd.
+ Delete fpdiv.
+ (function units): Add Cypress and Supersparc versions of each.
+ (addsi3, subsi3, andsi3, iorsi3, xorsi3): Add ialu type attribute.
+ (mulsi3): Add imul type attribute.
+ (divtf3, divdf3): Use fpdivd not fpdiv type attribute.
+ (divsf3); Use fpdivs not fpdiv type attribute.
+ (ashlsi3, ashrsi3, lshrsi3): Add shift type attribute.
+
+ * i960.md (andsi3+6): Replace bad clrbit pattern with two working
+ ones.
+
+Tue Jun 28 13:31:31 1994 Uwe Seimet (seimet@iris1.chemie.uni-kl.de)
+
+ * configure (m68k-atari-sysv4*): New configuration.
+ * m68k/atari.h, m68k/xm-atari.h: New files.
+
+Tue Jun 28 12:41:32 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.md (define_split for (plus (reg) (large_constant))): Treat
+ large_constant as signed.
+
+Tue Jun 28 05:46:55 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (eliminate_regs_in_insn): When checking for moves
+ and adds, use single_set.
+
+ * reload1.c (reloads_conflict): Handle R1_TYPE of RELOAD_OTHER.
+
+ * expr.c (do_jump, case BIT_AND_EXPR): Only narrow to a type
+ that corresponds to a mode.
+
+Tue Jun 28 05:41:29 1994 Will R. Athanasiou (will@westford.ccur.com)
+
+ * rs6000.h (MEMORY_MOVE_COST): Make processor-dependent.
+ * rs6000.md (movsf): Emit frsp if storing to memory and not PowerPC.
+ (movsf matcher): Remove explicit frsp.
+ (store sf with update): Likewise.
+ * rs6000.c: Include ctype.h.
+
+Tue Jun 28 05:40:44 1994 Mike Collison (collison@chianti.sw.stratus.com)
+
+ * real.c: Treat HFmode like SFmode, for now.
+
+Mon Jun 27 19:16:49 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * optabs.c (expand_binop, multi-words shifts and rotates):
+ Fix errors in last change.
+
+Mon Jun 27 11:29:18 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c: Include "expr.h".
+ (arm_fpu): New variable.
+ (arm_gen_movstrqi): Fix typo.
+ * arm.h: (enum floating_point_type): New enumeration type.
+ (arm_fpu): New declaration.
+ * arm.md: (function_unit fpa): Add more accurate scheduling
+ information.
+ (all floating point patterns): Add more detailed instruction type
+ information to attributes.
+ * riscix.h: (STARTFILE_SPEC,SIZE_TYPE,PTRDIFF_TYPE): Fix typos.
+ (ASM_FINAL_SPEC): Only reject -mbsd and -mxopen when -pedantic.
+
+Sun Jun 26 05:37:26 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * toplev.c (v_message_with_decl): Avoid fwrite for stderr; mixing
+ it with fprintf and fputs can cause strange results under VMS.
+
+Sat Jun 25 06:07:56 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * combine.c (distribute_notes, case REG_DEAD): If a call uses a
+ hard reg, then this is where it dies.
+
+Fri Jun 24 19:09:33 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * cccp.c (create_definition): Eliminate whitespace before and
+ after macro definitions.
+
+Fri Jun 24 16:19:27 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * c-decl.c (lang_decode_option): Set warn_bad_function_cast
+ for -Wbad-function-cast.
+ * c-typeck.c (build_c_cast): Issue a warning for non-matching cast
+ from a function call (like malloc without proto).
+ * c-tree.h: Declare warn_bad_function_cast.
+ * toplev.c (lang_options): Add -W[no]-bad-function-cast.
+
+Fri Jun 24 16:09:12 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vax.h (ASM_IDENTIFY_LANGUAGE): New macro.
+
+Fri Jun 24 15:36:37 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * jump.c (jump_optimize): If we reverse "if (foo) bar else break;"
+ and there follows a NOTE_INSN_LOOP_END, move the note before "bar".
+
+ * arm.md (movstrsi): Delete.
+ (movstrqi): New expand.
+ * arm.h (arm_gen_movstrqi): New function.
+
+Fri Jun 24 14:43:46 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.c (alpha_builtin_saveregs): Fix typo in computing value
+ for __base.
+
+ * vax.md (zero_extract patterns): Don't allow constants in
+ the first operand of ZERO_EXTRACT since the recognizer
+ function forces them to match the mode of the match_operand.
+
+ * c-typeck.c (decl_constant_value): Test for const and
+ not iterator.
+ (default_conversion, digest_init): Remove redundant checks
+ before calling decl_constant_value.
+ (convert_for_assignment): See if RHS has a constant value.
+
+ * m68k.md (ashrsi3, lshrsh3): Remove patterns using bfext[su].
+
+ * reg-stack.c (goto_block_pat): Ignore undefined label.
+
+Thu Jun 23 22:07:42 1994 Doug Evans (dje@cygnus.com)
+
+ * sparc/sp64-elf.h (LINK_SPEC): Fix typo.
+ (PTRDIFF_TYPE): Likewise.
+
+Thu Jun 23 19:15:36 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * tree.h (TREE_SYMBOL_REFERENCED): New macro.
+ * varasm.c (assemble_name): Set TREE_SYMBOL_REFERENCED on the
+ identifier for `name'.
+ * toplev.c (compile_file): Use TREE_SYMBOL_REFERENCED instead of
+ TREE_USED and TREE_ADDRESSABLE where appropriate.
+
+Thu Jun 23 19:06:05 1994 Randy Wright (rwright@dhostwo.convex.com)
+
+ * cse.c (simplify_unary_operation, case UNSIGNED_FLOAT): Add
+ missing cast to unsigned.
+
+Thu Jun 23 19:00:18 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (fix_truncdfsi2, movsf, movdi): Use assign_stack_temp.
+ (mulsidi3): Add earlyclobber constraint modifier to PowerPC
+ version and !TARGET_POWERPC64 to final condition.
+
+ * rs6000.h (CPP_PREDEFINES): Define _POWER (alias for _IBMR2).
+ (CPP_SPEC): New macro.
+ * powerpc.h (ASM_SPEC): Use PowerPC mode, not 601 mode.
+ (CPP_SPEC): New macro.
+ (TARGET_DEFAULT): Generate pure PowerPC code, not 601-specific.
+
+Thu Jun 23 18:09:23 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vax.h (CPP_PREDEFINES): Add `__vax__'.
+ * vax/vms.h (CPP_PREDEFINES): Add `__vax__', `__vms__', and `__VMS__';
+ update __GNUC_MINOR__ to 6.
+
+Thu Jun 23 17:59:41 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * toplev.c (compile_file): Don't try to write function if we
+ didn't save insns for it.
+
+ * reload.c (find_reloads): Don't rejecting non-const due to value
+ of PREFERRED_RELOAD_CLASS if no regs were valid for alternative.
+
+Thu Jun 23 17:45:55 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.c (output_move_double): If the dest is register pair and both
+ regs are used in src address, use ADDR to compute src address, not
+ ADDD, which throws away scaled index.
+
+Thu Jun 23 17:40:06 1994 Craig Burley (burley@gnu.ai.mit.edu)
+
+ * c-decl.c (clear_binding_level): Add missing fields in initializer.
+ (c_decode_option): Correct misspelling of -fno-dollars-in-identifiers.
+
+Thu Jun 23 13:47:23 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Fix return type of sbrk in <unistd.h> on Alpha
+ OSF/1 V2.0. Also, redirect grep errors to /dev/null in <assert.h>
+ fix.
+
+Thu Jun 23 12:08:23 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c: Include tree.h.
+ (const_ok_for_arm): Add fast return for 0 or just one non-zero bit.
+ (const_ok_for_op, arm_split_constant): New functions.
+ (arm_rtx_costs, reg_or_int_operand): New functions.
+ (shift_operator): Accept ROTATERT.
+ (multi_register_push): New function.
+ (shift_op): Don't abort if a constant is outside the acceptable range,
+ but convert the whole shift expression into something legal. If the
+ shift is zero, then return NULL.
+ (output_return_instruction): Output a call to abort if the function is
+ volatile.
+ (arm_volatile_func): New function.
+ (get_prologue_size): Remove all adjustments for insns that are now
+ output as rtx.
+ (output_func_prologue): Remove all code that outputs instructions,
+ just print a few comments.
+ (output_func_epilogue): Output a call to abort if a volatile function
+ tries to return.
+ (emit_multi_reg_push): New function.
+ (arm_expand_prologue): New function. Don't bother to push call-saved
+ regs if we will never return.
+ (arm_print_operand, case 'S'): If shift_op returns NULL, then no shift
+ is required.
+ * arm.h (TARGET_WHEN_DEBUGGING): Delete.
+ (MODES_TIEABLE_P): All modes of the same class are tieable.
+ (CONST_OK_FOR_LETTER_P): Add 'M' for constants valid in a shift.
+ (FUNCTION_PROFILER): Don't call arm_increase_location.
+ (INITIAL_ELIMINATION_OFFSET): Call saved regs are no-longer pushed for
+ functions that don't return.
+ (LEGITIMIZE_ADDRESS): Push constants that will never be legitimate --
+ symbols and labels -- into registers. Handle DImode better.
+ (DEFAULT_SIGNED_CHAR): Use unsigned unless already defined.
+ (RTX_COSTS): Call arm_rtx_costs.
+ (ADDRESS_COST): Since most operations have the same rtx cost, make the
+ more complex addresses cheaper.
+ (PREDICATE_CODES): Add ROTATERT to shift_operator; and new predicates
+ for reg_or_int_operand and multi_register_push.
+ (DBX_CONTIN_LENGTH): Only define if not already done.
+ (PRINT_OPERAND_ADDRESS): Let arm_print operand output the ", " for
+ shifts.
+ * arm.md (addsi3, subsi3, andsi3, iorsi3, ashlsi3, ashrsi3, lshrsi3,
+ rotrsi3): Rewrite as expand patterns.
+ (rotlsi3): New expand.
+ (matchers, and split patterns for above): New.
+ (all patterns with shifts): Let arm_print_operand output the ", "
+ before a shift if it is needed.
+ (zero_extendqihi2): Delete.
+ (zero_extendqisi2): Expand to (and ...) if not memory.
+ (movsi): Call arm_split_constant to generate a constant.
+ (movqi): Only force a MEM into a register if not reloading.
+ (movsf, movdf): If loading a non-immediate floating point value, or
+ loading and floating point immediate into integer regs, push the
+ constant straight into the pool.
+ (movdf): Get rid of the scratch register.
+ (reload_outdf): Rewrite to expand to the two required insns.
+ (matcher for movdf): Remove alternative that used scratch register for
+ storing.
+ (movxf): rewrite as expand.
+ (matcher for movxf): Recognize even when XFmode code is disabled, so
+ that prologue insns can be generated.
+ (Matcher for reversed conditional jump): Don't match if the mode of the
+ CC register is not reversible.
+ (prologue): New expand.
+ (matcher for multi_register_push insn): New.
+ * riscix.h: Delete some dead code.
+ (STARTFILE_SPEC): Look in the correct places for start files.
+ (LIB_SPEC): Define.
+ (LINK_SPEC): Define.
+ (TARGET_WHEN_DEBUGGING): Delete.
+ (DEFAULT_SIGNED_CHAR): Set to unsigned.
+ (SIZE_TYPE, PTRDIFF_TYPE, TARGET_EDOM): Define.
+ * rix-gas.h (DBX_CONTIN_LENGTH): Set to 80.
+ (DEFAULT_GDB_EXTENSIONS, DBX_NO_XREFS): Don't try to pander to dbx, it
+ is just to broken to use.
+
+Wed Jun 22 20:13:03 1994 Will Athanasiou (will@westford.ccur.com)
+
+ * configure (m68k-ccur-rtu): New configuration.
+ * config.sub (m68k-ccur): New system.
+ * protoize.c: Include <dirent.h>, not <sys/dir.h> on Concurrent.
+ * ccur-GAS.h, x-ccur: New files.
+
+Wed Jun 22 18:49:17 1994 Walter Misar (misar@rbg.informatik.th-darmstadt.de)
+
+ * m68k/hp320.h (LINK_SPEC): New macro.
+
+Wed Jun 22 18:43:51 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure: For target alpha-*-*, if using gas, set
+ target_cpu_default to 4.
+ * config/alpha/alpha.h (TARGET_SWITCHES): Include
+ TARGET_CPU_DEFAULT in default value.
+ (TARGET_CPU_DEFAULT): Define as 0 if not already defined.
+ (ASM_FINAL_SPEC): Include TARGET_CPU_DEFAULT in test for which
+ version to define.
+
+Wed Jun 22 18:15:41 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * loop.c (strength_reduce): When replacing DEST_ADDR givs, make
+ sure resulting insn is valid.
+
+ * optabs.c (expand_binop): New variable next_methods; pass to
+ most recursive calls when trying to avoid libcalls.
+ Always check for a return value of zero in recursive calls.
+ (expand_float): Ensure TARGET has proper mode.
+ Pass OPTAB_LIB_WIDEN to expand_binop calls.
+
+Tue Jun 21 14:35:38 1994 Doug Evans (dje@cygnus.com)
+
+ * cccp.c (skip_to_end_of_comment): Catch unterminated comments.
+
+Sat Jun 18 17:49:41 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fixproto: Move hacking of assert.h from here.
+ * fixincludes: To here.
+
+Sat Jun 18 16:42:31 1994 Jim Wilson (wilson@cygnus.com)
+
+ * c-typeck.c (process_init_element): For fieldtype, don't access
+ TYPE_MAIN_VARIANT field if the type is error_mark_node.
+
+ * jump.c (duplicate_loop_exit_test): Initialize copy to zero.
+ Emit jump to end lable if copy is still zero.
+
+ * mips.md (truncdisi2): Change from define_insn to define_expand.
+ (truncdihi2, truncdiqi2, extendsidi2): Likewise.
+ (extendsidi2_internal): New pattern.
+
+ * loop.c (move_movables): Copy CALL_INSN_FUNCTION_USAGE field.
+
+ * sdbout.c (sdbout_one_type): Use DECL_ASSEMBLER_NAME if
+ DECL_LANG_SPECIFIC is set. Use DECL_ASSEMBLER_NAME not
+ DECL_NAME for child_type that is a template type.
+ (sdbout_symbol): Use DECL_ASSEMBLER_NAME if DECL_LANG_SPECIFIC
+ is set.
+
+Sat Jun 18 16:39:03 1994 Kung Hsu (kung@mexican.cygnus.com)
+
+ * dbxout.c (dbxout_symbol): Replace DECL_IGNORED_P with
+ TYPE_DECL_SUPPRESS_DEBUG.
+
+Sat Jun 18 10:21:44 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expmed.c (expand_shift): Don't try extzv for lshr.
+
+ * vax.md (lshrsi3): New define_expand.
+
+ * optabs.c: Pass NULL_RTX for TARGET in calls to expand_{un,bin}op.
+ (expand_float): Use expand_shift instead of expand_binop.
+
+Fri Jun 17 15:05:58 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Correct math.h on Lynx handling again.
+
+Fri Jun 17 10:52:41 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * cse.c (simplify_binary_operation, case MINUS): Check mode of op0,
+ instead of op1, before calling plus_constant.
+
+Fri Jun 17 01:42:37 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (DEBUGGER_AUTO_OFFSET): Define. If no frame pointer
+ is available, then adjust the offset by the size of the current
+ frame.
+
+Thu Jun 16 16:35:12 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * tree.h (DECL_DEFER_OUTPUT): New macro.
+ * toplev.c (compile_file): Unset DECL_DEFER_OUTPUT on decls
+ considered at end of file.
+ * integrate.c (output_inline_function): Unset DECL_DEFER_OUTPUT on
+ fndecl.
+ * toplev.c (rest_of_compilation): Also postpone compilation of
+ inlines with DECL_DEFER_OUTPUT set.
+ (compile_file): Always emit postponed inlines if
+ -fkeep-inline-functions.
+
+Thu Jun 16 11:00:14 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Fix argument type for ffs in <string.h> on Alpha
+ OSF/1 V2.0.
+
+Thu Jun 16 06:49:03 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload_reg_free_p, case RELOAD_OTHER): Allowed
+ to conflict with RELOAD_FOR_OTHER_ADDRESS.
+
+ * cse.c (set_nonvarying_address_components): Rework and also
+ handle an AND used for non-aligned accesses.
+
+Thu Jun 16 06:36:49 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * i386.h (REG_ALLOC_ORDER): Prefer registers listed in
+ CALL_USED_REGISTERS.
+
+Wed Jun 15 20:45:14 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * tree.h (TREE_NO_UNUSED_WARNING): Note that this can be applied
+ to COMPOUND_EXPRs, too.
+
+ * stmt.c (warn_if_unused_value): Handle TREE_NO_UNUSED_WARNING for
+ COMPOUND_EXPRs, too.
+
+Wed Jun 15 20:35:21 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (divsi3): Fix divide by 2^N with compare RTL.
+
+ * rs6000.md (maxsf3, minsf3, maxdf3, mindf3): Fix predicate of
+ define_split.
+ (muldi3): Fix predicate.
+ (movdf matcher): Allow update and indexed for lfd instruction.
+
+Wed Jun 15 19:24:23 1994 Doug Evans (dje@cygnus.com)
+
+ * dbxout.c (dbxout_type): Fix call to bzero.
+
+Wed Jun 15 19:20:34 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (simplify_unary_operation): Fix typo in last change.
+
+Wed Jun 15 15:20:54 1994 Per Bothner (bothner@cygnus.com)
+
+ * dbxout.c (dbxout_range_type): Handle the case that an array
+ range is neither an integer nor a sub-range. (In Pascal or
+ Chill it could be a Boolean, character, or enumeral type.)
+
+Wed Jun 15 04:00:42 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * genmultilib: New shell script to generate multiple library
+ information.
+ * Makefile.in (multilib.h, stmp-multilib, install-multilib): New
+ targets.
+ (gcc.o): Depend on multilib.h.
+ (clean): Remove multilib.h and tmpmultilib*.
+ * gcc.c: Include multilib.h.
+ (print_multi_lib, print_multi_directory, multilib_select,
+ multilib_dir): New static variables.
+ (option_map): Added --print-multi-lib and --print-multi-directory.
+ (set_spec): Get multilib_select from specs file.
+ (process_command): Dump multilib_select into specs file. Handle
+ -print-multi-lib and -print-multi-directory.
+ (do_spec_1): Try multilib_dir for %D case.
+ (find_file): Try multilib_dir.
+ (main): Call set_multilib_dir. Handle print_multi_lib and
+ print_multi_directory.
+ (used_arg, set_multilib_dir, print_multilib_info): New functions.
+ * configure (sparc-*-sunos4*): Use target fragment sparc/t-sunos4.
+ * sparc/t-sunos4: New file.
+
+Wed Jun 15 03:54:32 1994 Doug Evans (dje@cygnus.com)
+
+ Add support for the SPARC V9 cpu.
+ * configure (sparc64-*-aout): New target.
+ (sparc64-*-elf): New target.
+ * config.sub (sparc64): New cpu.
+ (aout, elf): New os's.
+ * genconfig.c (main): Allow targets to override HAVE_conditional_move.
+ * jump.c (jump_optimize): Use it at run-time.
+ * sparc/t-sp64: New file.
+ * sparc/sp64-aout.h: New file.
+ * sparc/sp64-elf.h: New file.
+ * sparc/sysv4.h (ASM_OUTPUT_CASE_LABEL): Handle 64 bit pointers.
+ * sparc/sparc.h (cpu_type): New enum.
+ (CPP_PREDEFINES,CPP_SPEC): Add v9 support.
+ (NO_BUILTIN_PTRDIFF_TYPE, NO_BUILTIN_SIZE_TYPE, MAX_WCHAR_TYPE_SIZE,
+ SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE,
+ FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE, MAX_INT_TYPE_SIZE,
+ MAX_LONG_TYPE_SIZE): Define.
+ (PTRDIFF_TYPE, SIZE_TYPE, BITS_PER_WORD, MAX_BITS_PER_WORD,
+ UNITS_PER_WORD, MAX_UNITS_PER_WORD, LONG_DOUBLE_TYPE_SIZE,
+ POINTER_SIZE, PARM_BOUNDARY, STACK_BOUNDARY, SPARC_STACK_ALIGN,
+ EMPTY_FIELD_BOUNDARY, BIGGEST_ALIGNMENT, FIRST_PSEUDO_REGISTER,
+ FIXED_REGISTERS, CALL_USED_REGISTERS, CONDITIONAL_REGISTER_USAGE):
+ Add v9 support.
+ (sparc_override_options, sparc_code_model): Declare.
+ (OVERRIDE_OPTIONS): Call it.
+ (MASK_*): Define bits set by target flags.
+ (TARGET_*): Use them.
+ ({MASK,TARGET}_{V9,INT64,LONG64,PTR64,ENV32,STACK_BIAS,
+ MEDLOW,MEDANY,FULLANY}): Define.
+ (MEDANY_BASE_REG): Define.
+ (V9_SWITCHES, TARGET_OPTIONS): Define.
+ (TARGET_SWITCHES, TARGET_DEFAULT): Use MASK_*.
+ (SPARC_STACK_BIAS, SECONDARY_MEMORY_NEEDED_MODE): Define.
+ (SECONDARY_MEMORY_NEEDED): Simplify.
+ (hard_regno_mode_class, sparc_mode_class, sparc_cpu_type): Declare.
+ (REG_PARM_STACK_SPACE): Do not define if v9.
+ (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, MODES_TIEABLE_P,
+ RETURN_IN_MEMORY, STRUCT_VALUE, STRUCT_VALUE_INCOMING, reg_class,
+ REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS, REG_ALLOC_ORDER,
+ REG_LEAF_ALLOC_ORDER, LEAF_REGISTERS, REG_CLASS_FROM_LETTER,
+ CLASS_MAX_NREGS, STARTING_FRAME_OFFSET, FIRST_PARM_OFFSET,
+ BASE_RETURN_VALUE_REG, BASE_OUTGOING_VALUE_REG, BASE_PASSING_ARG_REG,
+ BASE_INCOMING_ARG_REG, FUNCTION_ARG_REGNO_P): Add v9 support.
+ (sparc_arg_class): New enum (v9 only).
+ (sparc_args): New struct to record v9 arguments.
+ (CUMULATIVE_ARGS): Use it (v9 only).
+ (GET_SPARC_ARG_CLASS): Define.
+ (sparc_arg_count, sparc_n_named_args): Declare.
+ (PASS_IN_REG_P): Define.
+ (ROUND_REG, ROUND_ADVANCE, INIT_CUMULATIVE_ARGS, FUNCTION_ARG_ADVANCE,
+ FUNCTION_ARG, FUNCTION_INCOMING_ARG, FUNCTION_ARG_PARTIAL_NREGS,
+ FUNCTION_ARG_PASS_BY_REFERENCE, FUNCTION_ARG_CALLEE_COPIES):
+ Add v9 support.
+ (sparc64_init_expanders, sparc64_fpconv_stack_temp): Declare.
+ (INIT_EXPANDERS): Define (v9 only).
+ (gen_v9_scc, output_v9branch): Declare.
+ (HAVE_conditional_move): Define.
+ (FUNCTION_PROFILER, FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
+ DYNAMIC_CHAIN_ADDRESS, RETURN_ADDR_RTX, REGNO_OK_FOR_FP_P,
+ REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P, EXTRA_CONSTRAINT,
+ CASE_VECTOR_MODE, Pmode, EXTRA_CC_MODES, EXTRA_CC_NAMES,
+ SELECT_CC_MODE, REGISTER_NAMES): Add v9 support.
+ (REGNO_OK_FOR_CCFP_P): Define.
+ (sparc_initialize_trampoline, sparc64_initialize_trampoline): Declare.
+ (INITIALIZE_TRAMPOLINE): Call them.
+ (ENCODE_SECTION_INFO): Mark functions in v9.
+ (RTX_COSTS): Assume MULT costs the same for v9 as v8.
+ (ASM_LONGLONG, ASM_FLOAT): Define.
+ (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Add v9 support.
+ * sparc/sparc.c (SKIP_CALLERS_UNIMP_P): Define.
+ (sparc_cpu_type, sparc_arg_count, sparc_n_named_args,
+ frame_base_offset, fpconv_stack_temp): New globals.
+ (leaf_reg_remap): Add additional registers for v9.
+ (sparc_override_options, sparc64_init_expanders,
+ sparc64_fpconv_stack_temp, intreg_operand, ccfp_reg_operand,
+ data_segment_operand, text_segment_operand, v9_regcmp_op,
+ arith11_operand, arith10_operand, arith11_double_operand,
+ arith10_double_operand, gen_v9_scc, emit_v9_brxx_insn,
+ sparc_init_modes, build_big_number, output_v9branch,
+ sparc_initialize_trampoline, sparc64_initialize_trampoline):
+ New functions.
+ (arith_double_operand, gen_compare_reg, finalize_pic,
+ emit_move_sequence, mem_aligned_8, output_move_double,
+ output_move_quad, output_fp_move_double, output_fp_move_quad,
+ output_block_move, save_regs, restore_regs): Add v9 support.
+ (sparc_mode_class): New enum.
+ (*_MODES): Redefine to use it.
+ (hard_32bit_mode_classes): Renamed from hard_regno_mode_ok.
+ (hard_regno_mode_classes, hard_64bit_mode_classes,
+ sparc_mode_class): New globals.
+ (num_gfregs): Renamed from num_fregs.
+ (compute_frame_size): Add v9 support. Simplify calculations.
+ (output_function_prologue): Call build_big_number to compute stack
+ size in %g1, then adjust %sp.
+ Fix saving of call saved registers. Handle new v9 registers.
+ (output_function_epilogue): Fix restoration of call saved registers.
+ Handle new v9 registers.
+ Use SKIP_CALLERS_UNIMP_P to see if unimp insn is at return address.
+ (sparc_builtin_saveregs): Define v9 version.
+ (output_cbranch): New argument fp_cond_reg. All callers changed.
+ Add v9 support.
+ (output_return): Use SKIP_CALLERS_UNIMP_P.
+ (print_operand): New codes '_', '@', 'C', 'D'.
+ (output_double_int): Handle LABEL_REF and MINUS for v9.
+ Use ASM_LONGLONG if assembler can handle it.
+ * sparc/sparc.md (cpu): New attribute.
+ (type attribute): New value cmove (conditional moves).
+ (cmpdi): New pattern for v9.
+ (seq*, sne*): Add v9 support.
+ (sgt,slt,sge,sle): Explicitly restrict operand 0 to the integer
+ registers. Try emitting a conditional move for v9.
+ (sgtu,sltu,sgeu,sleu): Likewise.
+ (comparison insns): Add v9 versions.
+ (scc insns): Add DImode versions for v9.
+ (beq, bne, bgt, blt, bge, ble): If comparing DImode with 0 on v9,
+ use brxx insns. Use emit_jump_insn, not emit_insn, as the latter
+ mishandles brxx insns.
+ (branch insns): Update calls to output_cbranch.
+ Add v9 versions to support multiple floating point condition code regs.
+ Add v9 versions to support brxx insns.
+ (lo_sum, high, pic): Add v9 support.
+ (symbolic move patterns): Disable for v9.
+ (DImode, DFmode, TFmode moves): Add v9 support.
+ (conditional move insns): Define for v9.
+ (zero_extendqidi2, extendqidi2, zero_extendhidi2, extendhidi2,
+ zero_extendsidi2, extendsidi2, floatdisf2, floatdidf2, floatditf2,
+ fix_truncsfdi2, fix_truncdfdi2, fix_trunctfdi2, muldi3, divdi3,
+ udivdi3, ashldi3, ashrdi3, lshrdi3, ffsdi2): New patterns for v9.
+ (bitfield compare insn): Add DImode version for v9.
+ (adddi3, subdi3, negdi2, anddi3, iordi3, xordi3, one_cmpldi2,
+ mixed mode fp mult insns, negdf2, negtf2, absdf2, abstf2, tablejump,
+ call, call_value, untyped_call, untyped_return, indirect_jump,
+ flush_register_windows, flush): Add v9 support.
+ (ldd peep holes): Disable for v9.
+ (set/compare peep hole): Define DImode version for v9.
+ (sign extend/compare peep hole): Likewise.
+ (return peep holes): Add v9 support.
+ (call/jump peep holes): Add v9 support.
+ * ginclude/va-sparc.h: Add v9 support.
+
+Tue Jun 14 22:44:52 1994 Michael Meissner (meissner@osf.org)
+
+ * config/i386/i386.h (reg_class): Add AD_REGS that match %eax and
+ %edx to allow %eax:%edx to be specified as one DI register.
+ (REG_CLASS_NAMES): Ditto.
+ (REG_CLASS_CONTENTS): Ditto.
+ (REG_CLASS_FROM_LETTER): 'A' specifies AD_REGS.
+
+ * config/i386/i386.md (umulqihi3): Name the insn with the standard
+ name.
+ (mulqihi3, umulsidi3, mulsidi3): Add new widening multiply
+ patterns.
+
+Tue Jun 14 22:25:16 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * fold-const.c (encode, decode): Use 4 HOST_WIDE_INTs for encoded
+ value with HOST_BITS_PER_WIDE_INT/2 bits in each.
+ (LOWPART, HIGHPART): New macros.
+ (BASE): Move definition outside of div_and_round_double.
+ (add_double, mul_double, lshift_double, rshift_double): Rewrite.
+ (lrotate_double): Use LOWPART, HIGHPART, and BASE.
+ (rrotate_double): Likewise.
+ (div_and_round_double): Major changes to code for general case.
+ Now it actually produces non-garbage results for large operands.
+ (div_and_round_double): Simplify condition for special code used when
+ divisor < BASE.
+ (const_binop): Delete special cases for multiplying by 0, 1, 2, 4, 8.
+ (fold, case *_DIV_EXPR): Don't try to optimize for overflow.
+ * machmode.h (MAX_SHORTS): Deleted.
+
+ * m68k.md: Trivial simplification of many patterns.
+ (subsi3): Don't handle CONST_INT for operand 2.
+ (ashiftrt, op2 > 8): New pattern.
+ (lshiftrt, op2 > 8): New pattern.
+
+ * a29k.md (logical patterns): Tune to give better code for immediate
+ values.
+ * a29k.c (cmplsrcb_operand): New predicate.
+ * a29k.h (PREDICATE_CODES): Add cmplsrcb_operand.
+
+Tue Jun 14 17:52:10 1994 Tor Egge (tegge@flipper.pvv.unit.no)
+
+ * m88k/sysv3.h (DO_GLOBAL_CTORS_BODY): Call __builtin_alloca
+ with a non-zero argument, forcing a frame pointer to be needed.
+
+Tue Jun 14 17:37:41 1994 Mike Collison (collison@sw.stratus.com)
+
+ * reload.h (RELOAD_FOR_OPADDR_ADDR): New reload class.
+ * reload.c (find_reloads): Change secondary reloads of class
+ RELOAD_FOR_OPERAND_ADDRESS to RELOAD_FOR_OPADDR_ADDR.
+ * reload1.c (reload): Process and accumulate needs for
+ RELOAD_FOR_OPADDR_ADDR reloads.
+ When determining if needs are nongroup needs, ignore
+ inactive or optional reloads.
+ (reload_reg_used_in_op_addr_reload): New variable to indicate
+ when reloads of class RELOAD_FOR_OPADDR_ADDR are in use.
+ (mark_reload_reg_in_use, clear_reload_reg_in_use):
+ Process reloads of class RELOAD_FOR_OPADDR_ADDR.
+ (reload_reg_free_p, reload_reg_free_before_p, reloads_conflict):
+ Likewise.
+ (choose_reload_regs): Support RELOAD_FOR_OPADDR_ADDR reloads.
+ (emit_reload_insns): Output RELOAD_FOR_OPADDR_ADDR reloads.
+
+Tue Jun 14 17:29:53 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cccp.c, toplev.c, tree.c, print-tree.c, fold-const.c:
+ Cast pointer operands to bzero, bcopy, and bcmp to (char *).
+ * function.c, stmt.c, expmed.c, varasm.c, emit-rtl.c: Likewise.
+ * dbxout.c, integrate.c, jump.c, real.h, calls.c, cse.c: Likewise.
+ * loop.c, unroll.c, flow.c, stupid.c, combine.c, regclass.c: Likewise.
+ * local-alloc.c, global.c, reload.c, reload1.c, sched.c: Likewise.
+ * genattrtab.c, bc-emit.c, gcc.c, collect2.c: Likewise.
+
+ * c-decl.c (min_precision): New function.
+ (finish_enum): Rewrite code to determine precision required
+ for enumeral type.
+
+ * cse.c (simplify_unary_operation): Correctly and consistently
+ handle CONST_INT cases for FLOAT and UNSIGNED_FLOAT.
+
+ * xm-alpha.h (sbrk): Don't declare here.
+
+ * alpha.h (CONST_COSTS, case CONST_INT): Fix typo.
+
+ * tree.c (staticp, case FUNCTION_DECL): A nested function isn't static.
+
+ * i386/linux.h (STARTFILE_SPEC): Don't force -static for -g.
+
+ * gcc.c (find_a_file): Try EXECUTABLE_SUFFIX first, then file
+ without the suffix.
+
+ * jump.c (jump_optimize): Don't delete dead insn if it has a
+ REG_RETVAL note.
+
+ * fix-header.c (xstrdup): Renamed from strdup.
+ (check_protection): Call xstrdup, not strdup.
+
+Tue Jun 14 17:26:08 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h (TARGET_SWITCHES): Remove -mpowerpc64 and -mno-powerpc64.
+ * rs6000.c (rs6000_override_options): Remove MPC620 cpu variants.
+
+ * rs6000.c (output_prolog): Fix error in loading size of large
+ stack frames.
+
+Tue Jun 14 17:24:09 1994 Chip Salzenberg (chip@fin.uucp)
+
+ * reload1.c (reload_as_needed): Clear spill_reg_store at start.
+ (emit_reload_insns): Omit erroneous predicate of reload
+ deletion -- reload_spill_index is not indexed by regno.
+
+Tue Jun 14 15:59:55 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Wrap assert.h in extern "C" { } to avoid problem on
+ HP/UX, which uses NO_IMPLICIT_EXTERN_C. Also fix 12 May 94
+ change.
+
+Tue Jun 14 15:12:50 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * jump.c (condjump_in_parallel_p): New function to detect
+ conditional jumps within PARALLEL insns.
+ (jump_optimize): Allow for some simple optimizations involving
+ conditional jumps within PARALLEL insns.
+ * reorg.c (get_jump_flags): Handle conditional jumps in PARALLEL
+ insns.
+ (get_branch_condition, fill_simple_delay_slots): Likewise.
+ (fill_eager_delay_slots, relax_delay_slots, dbr_schedule): Likewise.
+
+ * pa-osf.h (SIZE_TYPE): Define as "long unsigned int" to be
+ compatable with system include files.
+ * pa1-osf.h (SIZE_TYPE): Likewise.
+
+ * pa1-osf.h (WCHAR_TYPE): Define as "short unsigned int".
+ (WCHAR_TYPE_SIZE): Define as 16 bits.
+
+ * pa.c (output_arg_descriptor): Restore old behavior for SImode
+ USE insns of FP registers (used by untyped call support).
+
+Mon Jun 6 09:15:43 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c (arm_reload_out_hi): Rewrite. Add support for processors
+ running in big-endian mode.
+ (fp_immediate_constant): Fix typo in argument declaration.
+ * arm.h (PROMOTE_MODE): Promote HImode integers as signed.
+ (BYTES_BIG_ENDIAN): Allow OS description to override default.
+ (LOAD_EXTEND_OP): When big-endian, HImode loads are sign extended.
+ * arm.md (storehi_bigend): New expansion pattern.
+ (storeinthi): Rework to generate better code, add big-endian support.
+ (movhi): Add support for processors running in big-endian mode.
+ (movhi_bigend): New expansion pattern.
+ (matcher for movhi): Remove incorrect alternative for storing HImode to
+ memory. Only match when little endian.
+ (matcher for big-endian movhi): New pattern.
+ (matchers/peepholes for extended pre/post increment HImode loads): Only
+ match when little-endian.
+ (matcher for operating on adjacent memory locations): Load operation
+ into arith operands.
+ (peepholes for extended pre-increment byte loads): New patterns.
+
+Sat Jun 4 21:06:29 1994 Kaveh R. Ghazi (ghazi@noc.rutgers.edu)
+
+ * sys-types.h (__gnuc_va_list): Use instead of va_list.
+ * sys-protos.h (*): Use __gnuc_va_list, not va_list.
+
+Sat Jun 4 07:19:39 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c (print_multi_reg, output_call, output_call_mem,
+ output_mov_long_double_fpu_from_arm,
+ output_mov_long_double_arm_from_fpu,
+ output_mov_double_fpu_from_arm, output_mov_double_arm_from_fpu,
+ output_return_instruction, output_func_{prologue,epilogue},
+ arm_print_operand, output_load_symbol): Print the register prefix
+ before each register name.
+ (output_func_prologue, output_lcomm_directive): Output the target
+ dependent comment char for asm comments.
+ * arm.h (FUNCTION_PROFILER): Delete duplicate definition.
+ (FUNCTION_PROFILER, TRAMPOLINE_TEMPLATE, ASM_FILE_START,
+ ASM_OUTPUT_REG_{PUSH,POP}, PRINT_OPERAND_ADDRESS): Output register
+ prefix before any explicit register name.
+ (ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
+ ASM_OUTPUT_COMMON): Output the target dependent comment char.
+ (ASM_FILE_START): Output register alias for r10.
+ (REGISTER_NAMES): Output "r9" now for r9, not "rfp".
+ (ADDITIONAL_REGISTER_NAMES): New macro.
+ * arm.md (all patterns explicitly mentioning register names): Output
+ the target dependent prefix before the register name.
+ (all patterns with asm comments): Output the target dependent comment
+ character.
+
+Fri Jun 3 18:14:07 1994 Doug Evans (dje@cygnus.com)
+
+ * c-common.c (decl_attributes): Fix section attributes.
+ * varasm.c (make_decl_rtl): If section attribute is being ignored,
+ really ignore it.
+
+Fri Jun 3 15:53:57 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.h (FP_REGNO_P): New macro for intra file usage.
+ (REGNO_OK_FOR_FP_P): Use FP_REGNO_P.
+ (FUNCTION_VALUE_REGNO_P): Revert last change.
+ * pa.md (mulsi3): Use MATCH_DUP for op3, not MATCH_OPERAND.
+
+ * pa.h (CONDITIONAL_REGISTER_USAGE): Partially revert last changes;
+ Make non-existing 1.0 fp regs fixed, including odd-numbered regs.
+ (enum reg_class): Get rid of SNAKE_FP_REGS, GENERAL_OR_SNAKE_FP_REGS,
+ and NON_SHIFT_REGS.
+ (REG_CLASS_NAMES): Likewise.
+ (REG_CLASS_CONTENTS): Likewise.
+ (REGNO_REG_CLASS): Likewise.
+ (HARD_REGNO_MODE_OK): Corresponding changes. Don't force 1.0 fpregs
+ to even regno here; fixed_regs does the job better.
+ (FP_REG_CLASS_P): Get rid of SNAKE_FP_REGS.
+ (REG_CLASS_FROM_LETTER, case 'z'): Deleted.
+ (HARD_REGNO_NREGS): Partially revert last change.
+ (CLASS_MAX_NREGS): Partially revert last change.
+ * pa.md (globally): Delete 'x' constraint or change it to 'f',
+ as apropriate.
+
+Fri Jun 3 09:18:55 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.h (CONST_OK_FOR_LETTER_P): Only allow constants that are valid
+ when inverted for 'K'. Only allow constants that are valid when
+ negated for 'L'.
+ * arm.md (all patterns): Update instruction generation to reflect new
+ meanings of constraints 'K' and 'L'. Use output type 'B' to
+ generate an inverted constant. Use output type 'N' to generate a
+ negated floating point constant.
+
+Thu Jun 2 22:43:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (TARGET_SWITCHES): Enable TARGET_LONG_CALLS when
+ TARGET_PORTABLE_RUNTIME is enabled.
+ * pa.c (output_call): If TARGET_LONG_CALLS is enabled, then emit
+ an inline long-call sequence.
+ * pa.md (millicode define_delay): Disable delay slots if
+ TARGET_LONG_CALLS.
+ (call_internal_reg, call_value_internal_reg): If TARGET_LONG_CALLS
+ is enabled, then emit an inline long-call sequence. Fix length
+ computation for TARGET_LONG_CALLS.
+ (millicode calls): Fix length computation for TARGET_LONG_CALLS.
+
+ * pa.h (ASM_DECLARE_FUNCTION_NAME): Fix typo.
+
+Thu Jun 2 18:28:07 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * stmt.c (expand_end_bindings): Don't bother emitting cleanups
+ after a barrier.
+
+Thu Jun 2 18:10:36 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * libgcc2.c (__floatdisf): Protect against double-rounding error.
+
+Thu Jun 2 17:47:54 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h (MASK_PPCFPX): Delete.
+ (MASK_PPC_GPOPT, MASK_PPC_GFXOPT, TARGET_PPC_GPOPT, TARGET_PPC_GFXOPT):
+ New Macros.
+ (TARGET_SWITCHES): Remove -mpowerpc-fpx; add -mpowerpc-gpopt
+ and -mpowerpc-gfxopt.
+ * rs6000.c (processor_target_table): Use new macros.
+ * rs6000.md (define_function_unit): Remove ppc604 from sqrt list.
+ (divsi3, udivsi3): Remove spaces from PowerPC output templates.
+ (sqrtsf2, maxsf3, minsf3, sqrtdf2, maxdf3, mindf3): Use new macros.
+ (floatdidf2, fix_truncdfdi2, ffsdi2, muldi3): New patterns.
+ ({s,u}muldi3_highpart, divdi3, udivdi3, rotldi3): Likewise.
+ (movdi): Handle moves between FPRs and GPRs.
+ (scc insn): Correct swapped compare and delayed_compare attributes.
+
+Thu Jun 2 14:45:04 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c (arm_condition_code): Move to start of file.
+ (const_pool_offset): Correct typo.
+ (fp_const_from_val): New function.
+ (all instruction generators): mark position where conditionalization
+ should be with '%?'.
+ (output_move_double): Use new '%m' output type to simplify load/store
+ multiple generation.
+ (shift_instr): Delete.
+ (shift_op): New function.
+ (output_arithmetic): Delete.
+ (output_arithmetic_with_shift): Delete.
+ (output_arithmetic_with_immediate_multiply): Delete.
+ (output_shifted_move): Delete.
+ (output_shift_compare): Delete.
+ (arm_print_operand): New function.
+ * arm.h (output_func_{prologue,epilogue}): Change declarations from
+ output_{prologue,epilogue}.
+ (arm_output_llc, arithmetic_instr,
+ output_arithmetic_with_immediate_mulitply,
+ output_arithmetic_with_shift, shift_instr): Delete function
+ definitions.
+ (ASM_OUTPUT_OPCODE): Delete.
+ (PRINT_OPERAND): Call arm_print_operand, instead of doing it directly.
+ (ARM_COMMENT_CHAR): New macro.
+ (ARM_REG_PREFIX): New macro.
+ (ARM_SIGN_EXTEND): New macro.
+ (PRINT_OPERAND_ADDRESS): Delete variable 'shift'. Change type of
+ variable 'offset' to HOST_WIDE_INT. Use arm_print_operand to handle
+ shifts in addresses.
+ * arm.md (all output patterns): Use new capabilities of
+ arm_print_operand to simplify output sequences. Mark position of
+ condition code with '%?'.
+
+ * riscix.h (ASM_FINAL_SPEC [CROSS_COMPILE]): Correct typo.
+
+Thu Jun 2 08:14:00 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-common.c (c_build_type_variant): Don't change TYPE_MAIN_VARIANT
+ of new type.
+
+ * expr.c (expand_expr, case ADDR_EXPR): If result is ignored,
+ just return const0_rtx.
+
+Wed Jun 1 13:52:01 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * i386/sco4.h: #define NO_IMPLICIT_EXTERN_C.
+
+Wed Jun 1 04:55:06 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * arm.c: General tidy up.
+ #include <string.h>.
+ Declare some prototypes.
+ (output_memory_reference_mode): Change type to enum machine_mode.
+ (arm_const_nmoves): Delete.
+ (adjacent_mem_locations, {load,store}_multiple_operation): Explicitly
+ declare to return int.
+ ({load,store}_multiple_operation): Change type of 'count', 'base' and
+ 'i' to HOST_WIDE_INT.
+ (output_add_immediate): Change type of 'n' to HOST_WIDE_INT.
+ (output_multi_immediate): Change type of Argument 'n' to
+ HOST_WIDE_INT, if wider than 32 bits, mask out the high bits.
+ (output_arithmetic_with_immediate_multiply): Change type of 'shift'
+ to HOST_WIDE_INT.
+ (output_func_{prologue,epilogue}): Renamed from
+ output_{prologue,epilogue}. Check all registers to see if they are
+ live, but only push/pop them if they are not in call_used_regs.
+ * arm.h: Delete some dead code.
+ (FUNCTION_{PROLOGUE,EPILOGUE}): Call output_func_{prologue,epilogue}.
+ (INITIAL_ELIMINATION_OFFSET): Inspect all registers, but only add
+ those that are not in call_used_regs.
+ (GO_IF_LEGITIMATE_INDEX): Change type of variable 'range' to
+ HOST_WIDE_INT; change type of variable 'code' to enum rtx_code.
+ (REVERSIBLE_CC_MODE): New macro.
+
+ * arm.c (const_pool_offset): New function.
+ (get_prologue_size): New function.
+ (output_func_prologue): Eliminate variable code_size.
+ (output_func_epilogue): Only call arm_increase_location when
+ optimizing; also add the size of the function just compiled, and the
+ size of the prologue.
+ (arm_output_asm_insn): Delete. All callers changed to use
+ output_asm_insn.
+ (arm_output_llc): Delete.
+ (output_load_symbol): New first parameter 'insn'. Rewrite so that
+ assembler can detect whether we made a mistake.
+ * arm.h (arm_output_asm_insn): Delete declaration.
+ (EXTRA_CONSTAINT): New constraint 'R' to match a constant pool label.
+ Make constraint 'S' never match when not optimizing.
+ (CONSTANT_ADDRESS_P): Only accept symbols marked with SYMBOL_REF_FLAG
+ when optimizing.
+ (ENCODE_SECTION_INFO): Don't mark any symbols when not optimizing.
+ (ASM_OUTPUT_REG_{PUSH,POP}: Don't call arm_increase_location.
+ (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
+ * arm.md (all insn and peephole patterns): Rewrite without using
+ arm_output_asm_insn.
+ (matcher for movsi): New alternative to load symbol directly into a
+ register. Add new parameter in call to output_load_symbol.
+
+ * arm.md (all patterns): Length attribute now describes length in
+ bytes.
+ * arm.c (short_branch): Convert length calculations to bytes.
+
+Tue May 31 20:35:39 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.c (emit_move_sequence): Add missing argument to symbolic_operand.
+ (output_block_move): Prefer addl to add.
+ (print_operand): Print fp regs with L suffix when appropriate.
+ (output_arg_descriptor): Rewrite to accomodate new convention for
+ USE information.
+
+ * pa.h (SECONDARY_MEMORY_NEEDED): Simplify.
+ (ADDITIONAL_REGISTER_NAMES): Define.
+ (CONDITIONAL_REGISTER_USAGE): Make PIC_OFFSET_TABLE_REGNUM fixed
+ again.
+
+ Changes to combine fp registers for 1.0 and 1.1 architectures.
+ (Make explicit clobbers of fp registers work.)
+ * pa.h (FIRST_PSEUDO_REGISTER): Now 89.
+ (FIXED_REGISTERS): Delete 1.0 fp registers,
+ (CALL_USED_REGISTERS): Likewise.
+ (CONDITIONAL_REGISTER_USAGE): Almost deleted.
+ (REG_ALLOC_ORDER): Update register numbers.
+ (HARD_REGNO_NREGS): Delete special case for 1.0 fp registers.
+ (HARD_REGNO_MODE_OK): Rewrite. Don't allow use of odd fp registers
+ (enum reg_class): Delete HI_SNAKE_FP_REGS and FP_OR_SNAKE_FP_REGS.
+ (REG_CLASS_NAMES): Corresponding change.
+ (REG_CLASS_CONTENTS): Delete HI_SNAKE_FP_REGS and
+ FP_OR_SNAKE_FP_REGS. Make SNAKE_FP_REGS class contain all fp
+ registers. Update all values for changed register numbering.
+ (REGNO_REG_CLASS): Corresponding changes.
+ (REG_CLASS_FROM_LETTER): Delete 'y'.
+ (FP_REG_CLASS_P): No longer test HI_SNAKE_FP_REGS.
+ (CLASS_MAX_NREGS): Delete special case for 1.1 fp registers.
+ (FUNCTION_VALUE): Remove TARGET_SNAKE conditionals.
+ (LIBCALL_VALUE): Likewise.
+ (FUNCTION_ARG_REGNO_P): Likewise.
+ (FUNCTION_VALUE_REGNO_P): Likewise. Add registers 29 and 33.
+ (FUNCTION_ARG): Remove TARGET_SNAKE conditionals. Update register
+ numbers.
+ (REGNO_OK_FOR_FP_P): Update register number.
+ (REGISTER_NAMES): Delete special entries for 1.0 fp registers.
+ (DBX_REGISTER_NUMBER): Likewise.
+ * pa.c (compute_frame_size): Update for changed register numbers.
+ Simplify loops over general registers to stop at register 4.
+ (hppa_expand_prologue): Likewise.
+ (hppa_expand_epilogue): Likewise.
+
+Tue May 31 19:32:18 1994 Jim Wilson (wilson@cygnus.com)
+
+ * mips.md (movesi_unaligned, movsi_ulw, movsi_usw): Delete.
+ (extv, extzv, insv, movsi_ulw, movsi_usw): New patterns.
+
+ * dbxout.c (dbxout_type): Always emit cross-references if
+ use_gnu_debug_info_extensions set.
+
+ * final.c (output_source_line): Call xcoffout_source_line.
+ * xcoffout.c (xcoff_lastfile): New variable.
+ (ABS_OR_RELATIVE_LINENO, ASM_OUTPUT_SOURCE_LINE): Define here.
+ (xcoffout_source_file, xcoffout_source_line): New functions.
+ (xcoffout_declare_function): Use xcoffout_source_file.
+ * xcoffout.h (xcoff_lastfile): Declare.
+ (DBX_OUTPUT_MAIN_SOURCE_FILENAME): Clean up. Set xcoff_lastfile.
+ (ABS_OR_RELATIVE_LINENO, ASM_OUTPUT_SOURCE_LINE): Delete here.
+ (DBX_OUTPUT_SOURCE_FILENAME): Delete.
+
+ * unroll.c (copy_loop_body): Copy CALL_INSN_FUNCTION_USAGE field.
+
+ * sparc.h (ASM_SPEC): Don't pass -k when -pg or -p given.
+ (OVERRIDE_OPTIONS): Warn when disabling -fpic.
+
+ * mips-tdump.c (print_global_hdr): Remove "l" from printf format
+ for flags.
+ (print_sym_hdr): Add missing "l" to printf formats.
+ (print_symbol, print_file_desc): Likewise.
+
+ * i960.h (PUT_SDB_TYPE): Adjust value for compatibility with GNU960
+ toolchain.
+
+ * sparc.h (LIB_SPEC): Don't link in /usr/lib/bb_link.o with -a.
+ (CONDITIONAL_REGISTER_USAGE): When -a, make %g1 and %g2 fixed.
+
+ * mips/iris5gas.h, mips/iris5gdb.h: New files.
+ * configure (mips-sgi-irix5): Use iris5gas.h and iris5gdb.h.
+
+Tue May 31 19:21:44 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.md (movsi matcher): Use ldi for moving of 0 to a reg.
+ (movhi matcher): Likewise.
+ (movqi matcher): Likewise.
+ (many patterns): Prefer addl to add, and shNaddl to shNadd.
+ (define_split for (plus (reg) (large_constant))): Cleanup.
+ (divsi3): Use match_dup for operand 3, not match_operand.
+ (udivsi3): Likewise.
+ (modsi3): Likewise.
+ (umodsi3): Likewise.
+
+Tue May 31 19:15:31 1994 Doug Evans (dje@cygnus.com)
+
+ * toplev.c (v_pedwarn_with_decl): Don't even issue warnings from
+ pedantic errors in system header files.
+
+Tue May 31 17:16:41 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (extendqidi2, extendqisi2, extendqihi2): Remove
+ non-existent lba instruction.
+ (ashrdi3): Undo previous change.
+
+Tue May 31 12:30:00 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * toplev.c (lang_options): Add -f{no-,}implicit-templates.
+ (compile_file): Don't output SDB debugging info for
+ externals.
+
+Tue May 31 07:20:18 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stmt.c (expand_asm_operands): Make MEM with BLKmode for clobber
+ of "memory".
+ * loop.c (note_addr_stored): A SET or CLOBBER of a BLKmode MEM means
+ that all memory is clobbered.
+
+Mon May 30 14:01:48 1994 Doug Evans (dje@cygnus.com)
+
+ * gcc.c (default_compilers): Pass -MG to cpp if present.
+ (option_map): New option --print-missing-file-dependencies/-MG.
+ * cccp.c (print_deps_missing_files): New global.
+ (main): New argument -MG. Treat missing include files as
+ generated files and output dependencies for them.
+
+Mon May 30 10:42:14 1994 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * m68k/dpx2cdbx.h (PREFERRED_DEBUGGING_TYPE): Define as SDB_DEBUG.
+ * m68k/dpx2g.h: Disable code that manages gcc.ifile.
+
+Mon May 30 10:35:49 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * optabs.c (expand_float): Avoid double-rounding when float is
+ is narrower than int.
+ * real.c (significand_size): New function.
+ * real.h (significand_size): Declare.
+
+Sun May 29 15:58:21 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): When deleting unneeded stack adjusts
+ or mem-mem copies, use delete_computation.
+
+ * combine.c (force_to_mode): NEXT_SELECT is true for NEG.
+ Only exit quickly if X is narrower than MODE and MASK has all
+ bits in X's mode set.
+ (force_to_mode, case SUBREG): Don't check for WORD_REGISTER_OPERATIONS.
+ (force_to_mode, case NEG): Special-case test for low-order bit.
+
+ * rtlanal.c (volatile_insn_p): Call ourselves in recursive scan.
+
+Sat May 28 19:03:23 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-parse.in (init, compstmt, stmt, all_iter_stmt_with_decl):
+ If the lookahead token is a constant and we need to pop the
+ momentary obstack, don't free it.
+
+ * stmt.c (expand_end_case): Have INDEX_TYPE track conversions done
+ to INDEX_EXPR.
+
+Sat May 28 06:25:40 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * pa.md (call): Force address into register in non-symbol case.
+ (call_value): Likewise.
+
+Fri May 27 19:29:30 1994 Doug Evans (dje@cygnus.com)
+
+ * toplev.c (compile_file): Call init_regs after `word_mode' is valid.
+ * regclass.c (init_reg_modes): If choose_hard_reg_mode can't find a
+ valid mode, fall back to word_mode.
+
+ * expr.c (use_reg): Fix recording of USE information.
+ (use_regs): Likewise.
+ Delete argument `reg'. All callers changed.
+ * expr.h (use_regs): Update prototype.
+ * calls.c (expand_call): Update call to use_regs. Call use_reg
+ if parm is wholly in registers.
+
+ * configure: If compiling in separate dir, add subdirs to .gdbinit.
+
+Fri May 27 18:18:23 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (zero_extendqidi2, zero_extendhidi2): Use rldicl
+ instruction.
+ * rs6000.h (RTX_COSTS): Update PPC603 and PPC604 values.
+
+Fri May 27 17:56:07 1994 Douglas Rupp (drupp@cs.washington.edu)
+
+ * i386/xm-dos.h (DIR_SEPARATOR): New macro.
+
+Fri May 27 17:45:08 1994 Holger Teutsch (teutsch@ffm-iw.Degussa.DE)
+
+ * clipper.h (PCC_STATIC_STRUCT_RETURN): No longer defined.
+
+Fri May 27 17:36:53 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * make-l2.com: Update to handle `ginclude' subdirectory
+ when compiling libgcc2.
+
+Fri May 27 17:30:37 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.c (print_operand_address): print_operand_address
+ creates PLUS-rtls for internal use, so it has to handle them.
+
+Fri May 27 16:13:53 1994 Chris Torek (torek@elf.bsdi.com)
+
+ * function.c (assign_parms): Set REG_USERVAR_P when parm
+ is passed by invisible reference but can live in register.
+
+Fri May 27 06:03:11 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Revert to old code and change secondary
+ reloads to RELOAD_FOR_OPERAND_ADDRESS too.
+
+ * combine.c (try_combine): Don't make complemented XOR for
+ constant out of range.
+
+ * alpha.c (or_operand): Renamed from ior_operand.
+ * alpha.h (PREDICATE_CODES): Likewise.
+ * alpha.md (iordi3): Likewise.
+ (xordi3): Use or_operand and add second alternative.
+ (eqv): Only accept registers.
+
+ * expr.c (expand_expr, case CONSTRUCTOR): If constant and large
+ enough for memcpy to be used, build constructor into static memory.
+
+ * alpha.md: Add define_split for sign-extended PLUS of a MULT
+ of an SImode comparison.
+
+ * combine.c (simplify_comparison): Narrow comparison for AND's
+ that are ZERO_EXTENDs.
+ Can widen for all comparisons if inputs are both sign extended.
+
+ * reload1.c (reload_as_needed): Update spill_reg_order once we sort
+ spill_regs.
+
+ * alpha.md: Add define_split for sign-extended PLUS of an SImode
+ comparison; change comparison to DImode.
+
+ * stmt.c (expand_end_case): Use old type of INDEX_EXPR when making
+ a constant.
+
+ * local-alloc.c (requires_inout): Renamed from requires_inout_p and
+ returns number of alternatives that require a match.
+ (block_alloc): Use new function and handle case where all
+ alternatives have some operand that must match operand 0.
+
+ * local-alloc.c (qty_phys_num{,_copy}_sugg): New variables.
+ (qty_phys_has{,_copy}_sugg): Deleted.
+ (qty_sugg_compare{,_1}): New functions.
+ (local_alloc): Allocate and init new vars instead of deleted ones.
+ (block_alloc): Update and use new vars.
+ Order quantities using new functions when allocating quantities
+ with suggested registers.
+ (combine_regs, find_free_reg): Use new vars to count number
+ of suggestions.
+
+Thu May 26 11:55:44 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * jump.c (jump_optimize): When looking for an `if' statement
+ that takes two insns to compute a result using a temporary,
+ allow the temporary to be a SUBREG.
+
+ * combine.c (simplify_comparison): Call CANONICALIZE_COMPARISON,
+ if defined.
+ * alpha.h (CANONICALIZE_COMPARISON): New macro.
+
+ * combine.c (simplify_if_then_else): Don't make (mult (cond))
+ in simple case; leave as IF_THEN_ELSE instead.
+
+ * expmed.c (expand_divmod): Correctly set CAN_CLOBBER_OP0 when we've
+ converted OP0 to COMPUTE_MODE.
+
+Thu May 26 11:41:58 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Protect bool in curses.h with #ifndef __cplusplus,
+ since g++ now defines bool as a basic type.
+
+ * fixinc.svr4: Protect definition of __P used in Solaris math.h
+ and floatingpoint.h to avoid future fixproto conflicts.
+
+ * Makefile.in (stmp-fixinc): Don't pass ${srcdir} argument to
+ $(FIXINCLUDES); no longer needed, and always problematical for
+ binary only installations.
+ * fixincludes: Remove initialization of ${SRCDIR}. Don't
+ explicitly copy over multimedia/audio_errno.h; should be handled
+ by Oct 11, 1993 change.
+ * fixinc.svr4: Remove initialization of ${SRCDIR}.
+ * fixinc.sco, fixinc.dgux: Likewise.
+
+Fri May 20 12:48:24 1994 Jim Wilson (wilson@cygnus.com)
+
+ * stmt.c (expand_exit_loop_if_false): Emit conditional jump around
+ unconditional loop exit instead of conditional loop exit.
+
+ * rs6000.c (output_prolog): Use multiple fputs calls instead of
+ one call with multiple strings.
+
+ * iris4.h (STARTFILE_SPEC, LIB_SPEC): Define.
+
+ * xcoffout.c (MAKE_LINE_SAFE): Delete.
+ (ASM_OUTPUT_LBB, ASM_OUTPUT_LBE): Don't use MAKE_LINE_SAFE.
+
+Fri May 20 01:18:30 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub (basic_machine): Accept cxux*.
+
+Thu May 19 19:12:41 1994 Mike Stump (mrs@cygnus.com)
+
+ * calls.c (expand_call): Only destroy temps here, if -fshort-temps
+ is given.
+
+Thu May 19 19:07:59 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Fix unrecognized os error message.
+
+Thu May 19 17:46:55 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (emit_reload_insns): When seeing if an equivalent
+ register can have it's output reload deleted, check for REG_DEAD
+ notes for reload_in instead of calling dead_or_set_p.
+
+Thu May 19 16:38:32 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * emit-rtl.c (operand_subword): Fix arg of REAL_VALUE_TO_TARGET_SINGLE
+ and .._DOUBLE. Permit float subword extraction when host's word
+ width is wider than target's.
+
+Thu May 19 15:09:21 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Make OSF/1 getopt.h fix work on AIX also.
+
+Wed May 18 15:34:10 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fixincludes: Add forward declaration of struct exception to
+ SunOS 4 math.h.
+
+Wed May 18 12:46:46 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * stor-layout.c (layout_decl): Allow any integral types
+ for bit fields. (Specifically, C++ now has a 'bool' type.)
+
+Wed May 18 16:32:40 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (compare_spill_regs): Fix typo in declaration.
+
+Wed May 18 10:39:00 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * fixinc.svr4: Avoid the SVR4 typedef of bool in curses.h when
+ compiling for C++, since g++ now supports it as an official typename.
+
+Tue May 17 18:06:32 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.md: Don't use the extsd/extd instructions on the ns32532.
+
+Tue May 17 17:44:38 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * make-cc1.com (CFLAGS): Separate include file handling; for
+ stage 1, CFLAGS1 is appended to CFLAGS, otherwise CFLAGS2.
+
+Tue May 17 16:35:22 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * convert.c (convert_to_real): Accept boolean values.
+
+ * config/m68k/hp320.h: #define NO_IMPLICIT_EXTERN_C
+
+Tue May 17 15:52:05 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * libgcc2.c (__umoddi3): Correct type of variable `w'.
+
+ * combine.c (simplify_set): Move call to make_field_assignment
+ to end; if SRC or DEST is a (clobber (const_int 0)), return it.
+ (force_to_mode): If X is a CALL, just return it.
+
+ * reload.c (find_reloads): Properly account for cost when
+ constant is forced to memory to ensure same alternative chosen later.
+
+Tue May 17 11:30:19 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * combine.c (simplify_set): Use rtx_equal_p to compare cc_use and its
+ setter.
+ (make_extraction): Don't put a subreg around a register if it is
+ already in the correct mode.
+
+ * reload1.c (compare_spill_regs): New function.
+ (reload_as_needed): Sort the spilled regs.
+ (allocate_reload_reg): If we have group needs and failure would be
+ fatal, do not try to do round-robin allocation of the spill regs.
+
+Mon May 16 18:58:10 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (zero_extendqidi2): Fix omission of TARGET_POWERPC64
+ test in previous change.
+
+Mon May 16 14:59:25 1994 Per Bothner (bothner@cygnus.com)
+
+ * dbxout.c (dbxout_type): When emitting an ENUMERAL_TYPE, if
+ the precision is different from the default precision (perhaps
+ because of -fshort-enums), write out the precision.
+
+Mon May 16 17:44:49 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * real.c (ereal_from_int, ereal_to_int, etarsingle): Correct
+ signed/unsigned discrepancies.
+ (ereal_from_double): Avoid "right shift count too big" warning
+ in previous change.
+ * final.c (split_double): Fix arg of REAL_VALUE_TO_TARGET_DOUBLE.
+
+ * real.h (REAL_VALUE_FROM_TARGET_SINGLE, .._DOUBLE): Change
+ arg from long to HOST_WIDE_INT.
+ * real.c (ereal_from_float, .._double): Likewise, and unpack
+ the HOST_WIDE_INTs.
+
+Mon May 16 16:16:32 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * flow.c (try_pre_increment_1): Don't try to create a pre-increment
+ expression if the register dies in the succeeding insn.
+
+ * expr.c: Use #ifdef TARGET_EDOM, not #if.
+
+ * expr.c (convert_move): When {zero,sign}_extending, allow a wider
+ intermediate than to_mode if truncation is a no-op.
+
+Mon May 16 11:49:28 1994 Doug Evans (dje@cygnus.com)
+
+ * m68k/apollo68.h (REGISTER_PREFIX_MD): Delete.
+
+Mon May 16 08:11:57 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.c (rs6000_convert_preincs): Delete.
+ * rs6000.h (FINAL_PRESCAN_INSN): Delete.
+
+ * c-typeck.c (initializer_constant_valid_p): Rework to use
+ precision, not size.
+ Allow conversions from integer to pointer if int is wide enough.
+
+ * c-decl.c (finish_enum): Handle VALUES being an ERROR_MARK.
+
+ * rs6000.md: Replace bogus "andil" opcode with rlinm.
+
+Sat May 14 21:26:05 1994 Doug Evans (dje@cygnus.com)
+
+ * hard-reg-set.h (GO_IF_HARD_REG_EQUAL): Fix typo.
+
+ * jump.c (find_cross_jump): Two CALL_INSNs only compare equal if
+ their CALL_INSN_FUNCTION_USAGEs are the same as well.
+
+ * stupid.c (stupid_life_analysis): Make sure a function result reg
+ is still live if it contains an argument.
+
+Fri May 13 22:17:48 1994 Doug Evans (dje@cygnus.com)
+
+ * reorg.c (mark_referenced_resources): Fix typo.
+
+Fri May 13 18:54:38 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * integrate.c (integrate_decl_tree): Use copy_node to make a copy
+ of the decl. Also call copy_lang_decl to copy the
+ language-specific bits.
+ * tree.h: Declare copy_lang_decl.
+ * c-decl.c (copy_lang_decl): No-op function that will never
+ actually be called.
+
+Fri May 13 15:12:20 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cse.c (cse_insn): Correctly check for two modes being the
+ same number of words.
+
+Fri May 13 05:03:51 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in (enumlist): Add error alternative.
+
+Thu May 12 23:25:38 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * c-common.c (truthvalue_conversion): If expr is a BIT_AND_EXPR
+ where one of the operands is integer_onep, just return expr.
+
+Thu May 12 20:08:49 1994 Mike Stump (mrs@cygnus.com)
+
+ Fixup lifetime of temporaries.
+
+ * calls.c (expand_call): Only destroy temporaries at the end
+ of function calls, if flag_short_temps is set.
+ * expr.c (safe_from_p, expand_expr): Handle CLEANUP_POINT_EXPRs.
+ * expr.c (expand_expr): Improve handling of temporaries inside
+ COND_EXPRs, cures call to sorry.
+ * expr.c (defer_cleanups_to): New routine to handle the deferral
+ of cleanups.
+ * flags.h (flag_short_temps): New flag, to allow better control
+ over the lifetime of temporaries.
+ * toplev.c (flag_short_temps, lang_options): Ditto.
+ * tree.def (CLEANUP_POINT_EXPR): Add, to allow better control over
+ the lifetime of temporaries.
+
+Thu May 12 19:33:54 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (function units): Numerous cycle count change.
+ (zero_extendqidi2, extendqidi2, zero_extendhidi2): New patterns.
+ (extendhidi2, zero_extendsidi2, extendsidi2): Likewise.
+ (zero_extendqisi2, zero_extendqihi2, zero_extendhisi2): Use
+ andil/andi instead of rlinm/rlwinm.
+ (zero_extendqihi2): Add condition register variants.
+ (extendqisi2, extendqihi2): Use extsb for PowerPC.
+ (adddi3, subdi3, negdi2, ashrdi3): Emulate only if !TARGET_POWERPC64.
+ (movdf, movdi, movti): New PowerPC64 versions.
+ (load/store with update): New PowerPC64 patterns.
+
+Thu May 12 18:50:55 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * real.c (m16m): Change first arg to int; all callers changed.
+
+Thu May 12 18:46:26 1994 Bill Cox (bill@cygnus.com)
+
+ * fixincludes: Add definition of DBL_MAX to math.h for Lynx math.h.
+ Correct return type of strlen in Lynx string.h.
+ Delete definition of 'void' as 'int' from Lynx curses.h.
+
+Thu May 12 18:11:33 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Don't change a secondary reload
+ to RELOAD_FOR_OPERAND_ADDRESS.
+
+ * function.c (assign_parms): Fix typo in previous change.
+
+Thu May 12 15:48:54 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * c-common.c (decl_attributes): Revert to identifiers for
+ mode attributes.
+ * libgcc2.c: Likewise.
+
+Thu May 12 15:41:38 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vax/xm-vms.h (lookup_name_current_level_global): New macro.
+
+Wed May 11 17:44:47 1994 Jim Wilson (wilson@cygnus.com)
+
+ * cse.c (cse_insn): Set src_eqv if the dest is a STRICT_LOW_PART.
+
+ * expmed.c (store_fixed_bit_field): Delete code to handle
+ MODE_FLOAT values here.
+ (store_bit_field): Put it here instead.
+
+Wed May 11 16:18:21 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * a29k.c (a29k_clobbers_to): New function.
+ * a29k.md (clobbers_to): Deleted.
+ (call_internal, call_value_internal): New patterns.
+ (call, call_value): Just call new patterns and a29k_clobbers_to.
+
+ * stor-layout.c (layout_type): Use POINTER_SIZE, instead of width
+ of Pmode, when appropriate.
+
+ * calls.c (emit_call_1): Put new function usage data at end of
+ any data already there.
+ * expr.c (expand_builtin_apply): Likewise.
+
+ * sched.c (sched_analyze_insn): Fix typo in last change.
+
+Wed May 11 14:45:12 1994 Doug Evans (dje@cygnus.com)
+
+ * configure: Fix handing case of no language subdirs.
+
+Wed May 11 12:11:40 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixincludes: Don't recursively search symlinks to `.'.
+
+Tue May 10 17:49:57 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * configure: Include stage4 in the list.
+
+ * gcc.c (process_command): Kludge in stageN/../include instead of
+ include.
+
+Mon May 9 21:04:19 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.h (*TF*_LIBCALL): Delete `*' from libcall name.
+
+Mon May 9 18:42:10 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.c (output_move_dconst): Fix errors on ranges.
+
+Mon May 9 18:33:16 1994 Chris Torek (torek@bsdi.com)
+
+ * gcc.c (delete_if_ordinary): New function.
+ (delete_temp_files, delete_failure_queue): Call it.
+
+Sat May 7 12:12:58 1994 Andreas Neubacher (aneubach@risc.uni-linz.ac.at)
+
+ * i386/seq-sysv3.h (LIB_SPEC): Support -fshared-data.
+ (CPP_SPEC): Set _SEQUENT_ to 1.
+ (SHARED_SECTION_ASM_OP, ASM_OUTPUT_SHARED_COMMON): Supply new macros.
+ (SHARED_BSS_SECTION_ASM_OP, BSS_SECTION_FUNCTION): Likewise.
+
+Sat May 7 10:09:49 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c (mark_{referenced,set}_resources): Fix typos in last change.
+
+ * reload1.c (emit_reload_insns): Don't try to delete output reload
+ if there isn't one.
+
+ * i386.h (REG_ALLOC_ORDER): New macro.
+
+ * sched.c (sched_analyze_insn, attach_deaths_insn): Look at
+ CALL_INSN_FUNCTION_USAGE.
+
+ * reload1.c (choose_reload_regs): Remove previous change.
+
+Fri May 6 20:32:22 1994 Doug Evans (dje@canuck.cygnus.com)
+
+ * sparc.c (leaf_reg_backmap): Delete.
+ (sparc_flat_compute_frame_size): Renamed from
+ sparc_frw_compute_frame_size. All callers changed.
+ (sparc_flat_save_restore): Likewise.
+ (sparc_flat_output_function_prologue): Likewise.
+ Delete decl of call_used_regs.
+ Delete reference to frame_base_name, use frame pointer explicitly.
+ Print prologue end marker.
+ (sparc_flat_output_function_epilogue): Likewise (renaming).
+ Delete decls of asm_out_data_file, asm_out_file, call_used_regs.
+ Print epilogue start marker.
+ (sparc_flat_epilogue_delay_slots): Likewise (renaming).
+ (sparc_flat_eligible_for_epilogue_delay): Likewise.
+ * sparc.h (TARGET_FRW): Add note saying this option is deprecated.
+ (TARGET_FLAT): Renamed from TARGET_FRW_COMPAT.
+ (TARGET_SWITCHES): Delete references to -mfrw, -mfrw-compat.
+ Add -mflat.
+ (CONDITIONAL_REGISTER_USAGE): If -mflat, fix %i7, rename "%fp"
+ to "%i7", and make %g7 a global_reg.
+ (FRAME_POINTER_REQUIRED): Handle -mflat.
+ (INITIAL_FRAME_POINTER_OFFSET): Likewise.
+ (ARG_POINTER_REGNUM): Explicitly say it's the frame pointer.
+ (LEAF_REGISTERS): Make %g7 not a leaf register.
+ (leaf_reg_backmap): Delete.
+ (LEAF_REG_BACKMAP): Likewise.
+ (FUNCTION_PROLOGUE): Handle -mflat.
+ (FUNCTION_EPILOGUE): Likewise.
+ (DELAY_SLOTS_FOR_EPILOGUE): Likewise.
+ (ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise.
+
+Fri May 6 14:05:00 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * tree.h (TYPE_ATTRIBUTES): New macro.
+ (struct tree_type): attributes, new field.
+ (precision): Move this field up for better alignment.
+ (attribute_list_{equal,contained}): Prototype for new functions.
+ (build_type_attribute_variant): Prototype for new function.
+ * c-parse.in: Rewrite attribute parsing; update the expected
+ conflicts and state numbers.
+ * tree.c (TYPE_HASH): Move definition to top of file.
+ (make_node): Add support for SET_DEFAULT_TYPE_ATTRIBUTES.
+ (build_type_attribute_variant): New function.
+ (type_hash_lookup): Check if the attributes match.
+ (attribute_list_{equal,contained}): New functions.
+ * c-typeck.c (common_type): Add attribute merging.
+ (comp_types): Use COMP_TYPE_ATTRIBUTES macro.
+ * print-tree.c (print_node): Print attributes.
+ * c-common.c (decl_attributes): Move the attribute
+ recognition and rejection here from c-parse.in.
+ (decl_attributes): Use VALID_MACHINE_ATTRIBUTE macro.
+
+ * regclass.c (init_reg_sets_1): Eliminate several permanent
+ call_fixed_regs.
+
+ * rtl.def (CALL_INSN): Define new CALL_INSN_FUNCTION_USAGE field.
+ * rtl.h (CALL_INSN_FUNCTION_USAGE): New macro.
+ (find_reg{,no}_fusage): Prototype for new function.
+ * rtlanal.c (reg_used_between_p): Check usage exprs on CALL_INSNs.
+ (reg_referenced_between_p, reg_set_p, dead_or_set_regno_p): Likewise.
+ (find_reg{,no}_fusage): New functions.
+ * combine.c (try_combine): Restrict combining on CALL_INSNs.
+ (distribute_{notes,links}): Look at CALL_INSN_FUNCTION_USAGE.
+ * cse.c (cse_insn): Invalidate CLOBBERed registers.
+ (count_reg_usage): Count registers in USE rtls on CALL_INSNs.
+ * emit-rtl.c (make_call_insn_raw): New function.
+ (emit_call_insn{,_before}): Use make_call_insn_raw.
+ * calls.c (prepare_call_address, emit_call_1, expand_call): Change
+ from USE and CLOBBER insns to using CALL_INSN_FUNCTION_USAGE.
+ (emit_library_call{,_value}): Likewise.
+ * expr.c (use_regs, expand_builtin_apply): Likewise.
+ * expr.h (use_regs): Likewise.
+ * flow.c (flow_analysis, find_basic_blocks): Likewise.
+ * caller-save.c (insert_save_restore): Likewise.
+ * function.c (fixup_var_refs_insns): Likewise.
+ * jump.c (find_cross_jump, get_label_{before,after}): Likewise.
+ * reload1.c (emit_reload_insns): Likewise.
+ * reorg.c (mark_referenced_resources, mark_set_resources): Likewise.
+ * integrate.c (save_for_inline_copying, expand_inline_function):
+ Copy CALL_INSN_FUNCTION_USAGE field.
+ * reload1.c (choose_reload_regs): Ban filled argument registers.
+ * caller-save.c (save_call_clobbered_regs): CALL_INSN_FUNCTION_USAGE
+ requires a sharper liveliness check.
+ * flow.c (propagate_block): Mark all registers mentioned in USE
+ usage expressions on a CALL_INSN as used.
+ * jump.c (find_cross_jump): If STACK_REGS is defined two
+ CALL_INSNs only compare equal if their USE usage rtls are
+ the same as well.
+ * stupid.c (stupid_life_analysis): Check the usage information
+ on CALL_INSNs.
+
+ * function.c (assign_parms): Spread out the REG_EQUIV notes
+ on CONCATs.
+
+Fri May 6 12:43:10 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload.c (find_reloads): Ignore alternatives that will
+ not be reloadable due to PREFERRED_RELOAD_CLASS.
+
+ * explow.c (allocate_dynamic_stack_space): Just return
+ virtual_stack_dynamic_rtx if asking for zero bytes.
+ Set current_function_calls_alloca here and also record new
+ stack level for nonlocal gotos.
+ * expr.c (expand_builtin, case BUILT_IN_ALLOCA): Don't
+ set current_function_calls_alloca here nor record new
+ stack level for nonlocal gotos.
+ * stmt.c (expand_decl): Likewise.
+
+ * function.c (assign_parms): Use expr_size when appropriate.
+
+ * c-typeck.c (comptypes): An enum type is compatible with type of
+ same signedness as well as precision.
+
+ * alpha.h (CONST_COSTS): Revise all costs.
+ * alpha.md (addsi3, subsi3): Add define_expand to make
+ adddi3/subdi3; old pattern is now anonymous.
+
+ * combine.c (simplify_rtx, case MULT): Don't convert MULT to
+ shift here.
+ (simplify_logical, case IOR): Convert back to PLUS if valid and
+ it will combine with another PLUS.
+ (extract_left_shift): New function.
+ (make_compound_operation, case ASHIFTRT): Simplify by calling it.
+ (force_to_mode): Don't ignore if X is a SUBREG.
+ (force_to_mode, case AND): Try to turn unchecked bits on
+ instead of just off and see which is cheaper.
+
+Fri May 6 11:22:23 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (libgcc1.a, libgcc2.a): Don't ignore errors in for
+ loops over $(LIB[12]FUNCS_EXTRA).
+
+Fri May 6 06:14:56 1994 Mike Stump (mrs@cygnus.com)
+
+ * expr.c (expand_cleanups_to): Tell expand_expr that we are going
+ to ignore the result of the cleanup.
+
+Thu May 5 17:45:02 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * gcc.c (do_spec_1): If -save-temps, always clear the deletion flag.
+
+Thu May 5 13:39:35 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * combine.c (simplify_rtx, case SUBREG): Don't call force_to_mode.
+ (simplify_set): Call force_to_mode here.
+
+ * m68k.md (movhi): Simplify code involving jump-table
+ reference.
+ (load_address): Handle case of jump-table reference; output
+ required label.
+
+Thu May 5 12:28:16 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * cccp.c (main): Include source file name in dependency output.
+
+Wed May 4 18:45:07 1994 Doug Evans (dje@cygnus.com)
+
+ * config.sub: Remove duplicate -freebsd* entry.
+
+Wed May 4 18:03:34 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * cccp.c (special_symbol): Don't copy simple strings, use wchar_type.
+ (main): Setup wchar_type for C++ if needed.
+ (initialize_builtins): Use wchar_type.
+
+Wed May 4 17:19:34 1994 Mike Collison (collison@sw.stratus.com)
+
+ * reload.c (push_secondary_reload): Use TYPE for secondary type
+ if it is RELOAD_FOR_{INPUT,OUTPUT}_ADDRESS.
+
+Wed May 4 16:35:49 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure (i386-gnu): New, same as i386-mach.
+
+ * global.c (find_reg): When looking for locally-allocated hard
+ regs to reclaim, use REG_ALLOC_ORDER to find least used.
+
+ * reload1.c (emit_reload_insns): Add another way to delete an
+ output reload.
+
+ * reload1.c (reload, reload_as_needed): Check for use of return
+ register with reg_referenced_p, not reg_mentioned_p.
+
+Wed May 4 14:23:51 1994 Jim Wilson (wilson@cygnus.com)
+
+ * mips.c (override_options): Delete TARGET_LLONG128 references.
+ * mips.h (MASK_LLONG128, TARGET_LLONG128): Delete.
+ (TARGET_SWITCHES): Delete -mlonglong128 option.
+ (LONG_LONG_TYPE_SIZE): Delete TARGET_LLONG128 reference.
+
+ * mips/bsd-4.h, mips/bsd-5.h, mips/news4.h, mips/news5.h,
+ mips/nws3250v4.h, mips/svr3-4.h, mips/svr3-5.h, mips/svr4-4.h,
+ mips/svr4-5.h (CPP_SPEC): Delete.
+ * mips/dec-bsd.h (CPP_SPEC): Define __SIZE_TYPE__,
+ __PTRDIFF_TYPE__, and __mips.
+ (SIZE_TYPE): Delete.
+ * mips/dec-osf1.h (PTRDIFF_TYPE): Delete.
+ (CPP_SPEC): Define, overriding ultrix.h version.
+ * mips/iris5.h (CPP_SPEC): Define __SIZE_TYPE__, __PTRDIFF_TYPE__,
+ and __mips.
+ * mips/osfrose.h (CPP_SPEC): Define __PTRDIFF_TYPE__ and __mips.
+ (PTRDIFF_TYPE): Delete.
+ (SIZE_TYPE): Define.
+ (SET_ASM_OP): Define.
+ * config/mips/ultrix.h (CPP_SPEC): Delete.
+ (SIZE_TYPE): Delete.
+
+Tue May 3 19:04:43 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (stamp-objlist): Depend on OBJS and BC_OBJS so that
+ subdir makes will know to re-link.
+
+Mon May 2 16:05:05 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * toplev.c (compile_file): If static consts haven't been written
+ out yet, don't do it just because TREE_USED is set (if we're
+ optimizing). (This wins for C++, which uses static consts a lot.)
+
+Mon May 2 16:42:59 1994 Jim Wilson (wilson@cygnus.com)
+
+ * stmt.c (expand_end_case): Make sure gen_casesi operands are
+ valid by passing them through copy_to_mode_reg if necessary.
+ * mips.md (casesi): Delete force_reg calls.
+
+ * ns32k.c (output_move_double): Always use split_double for the
+ CNSTOP case.
+
+ * gcc.c (translate_options): For options that take an argument,
+ don't skip the argument if it doesn't exist.
+
+ * c-decl.c (pushdecl): Use lookup_name_current_level_global instead
+ of lookup_name for extern references. Don't return duplicate decl
+ if it came from the global binding level, and there exists a
+ conflicting decl in an intervening block.
+ (lookup_name_current_level_global); New function.
+ * c-tree.h (lookup_name_current_level_global): Declare.
+
+ * sys-protos.h (read, write): Last parm is size_t not unsigned int.
+
+ * unroll.c (remap_split_bivs): New function.
+ (unroll_loop): When remapping split bivs in the last instruction,
+ handle JUMP_INSNs in addition to INSNs.
+
+Mon May 2 12:53:57 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * config/nextstep.h (INCLUDE_DEFAULTS): Add cxx_aware field.
+ * config/vax/xm-vms.h (INCLUDE_DEFAULTS): Ditto.
+
+Fri Apr 29 18:30:38 1994 Kung Hsu (kung@cygnus.com)
+
+ * tree.h (TYPE_DECL_SUPPRESS_DEBUG): new macro to support
+ suppressing of detail type infos into stabs.
+ * dbxout.c (dbxout_type): check the above flag to generate cross
+ reference in stabs.
+
+Fri Apr 29 01:01:45 1994 Doug Evans (dje@cygnus.com)
+
+ * Makefile.in (stamp-objlist): New target.
+
+Thu Apr 28 22:17:15 1994 Doug Evans (dje@cygnus.com)
+
+ * Makefile.in (USE_ALLOCA): Rearrange "'s.
+ (FLAGS_TO_PASS): Delete CLIB, MALLOC, OBSTACK.
+
+Thu Apr 28 19:04:17 1994 Jim Wilson (wilson@cygnus.com)
+
+ * stmt.c (expand_end_case): Correct test for sign extending
+ unsigned constant index when creating index_expr.
+
+ * cccp.c (macroexpand): Use start_line for line number of the new
+ instack level pushed at the end.
+
+Thu Apr 28 18:59:17 1994 Mike Stump (mrs@cygnus.com)
+
+ * stmt.c: Remove old exception handling support from the backend.
+
+Thu Apr 28 18:59:53 1994 Torbjorn Granlund (tege@adder.cygnus.com)
+
+ * sparc.c (arith_double_operand): Modify to accept all possible constants.
+ * sparc.md (adddi3, subdi3, anddi3, iordi3, xordi3): Corresponding changes.
+ (one_cmpldi3): Don't allow constants for operand 1.
+
+Thu Apr 28 18:10:18 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (addsi3): Prefer add without carry instructions and
+ flag input operands as commutative for condition register variant.
+ (subsi3): Define PowerPC patterns using subtract without carry.
+ (numerous): Flag input operands as commutative for condition
+ register variant.
+ (mov* matchers): Use mr instruction in ! TARGET_POWERPC case as
+ well and mr. in condition register variant.
+ * rs6000.c (output_prolog): Use mr, lis, and li instructions.
+ Use subf instruction if TARGET_POWERPC.
+ (output_epilog): Use cal/addi instruction.
+
+Thu Apr 28 12:48:59 1994 Andreas Neubacher (aneubach@risc.uni-linz.ac.at)
+
+ * i386/seq-sysv3.h (SHARED_SECTION_ASM_OP): Defined.
+
+Thu Apr 28 12:40:28 1994 Doug Evans (dje@cygnus.com)
+
+ * expr.c (expand_builtin): Fix typo in previous patch
+ (allow __builtin_next_arg in varargs functions).
+
+Tue Apr 26 16:31:44 1994 Per Bothner (bothner@cygnus.com)
+
+ * tree.h (AGGREGATE_TYPE_P): New macro.
+ * calls.c, expr.c, function.c, stmt.c, varasm.c: Use
+ new macro AGGREGATE_TYPE_P.
+
+Mon Apr 25 18:45:28 1994 John Hassey (hassey@dg-rtp.dg.com)
+
+ * varasm.c (copy_constant, case CONSTRUCTOR): Fix typo; copied list
+ was placed on old CONSTRUCTOR, not new one.
+
+Mon Apr 25 15:04:53 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-decl.c (grokdeclarator): Never warn about `long long' in
+ system header.
+
+ * c-decl.c (finish_decl): Redo last change.
+
+ * Makefile.in (*compare*): Add missing semicolons.
+
+Mon Apr 25 15:02:31 1994 Doug Evans (dje@cygnus.com)
+
+ * configure (m68k-hp-hpux): t-hp320g no longer needed as of gas 2.1.
+ * m68k/t-hp320g: Deleted.
+
+Mon Apr 25 14:23:18 1994 Poul-Henning Kamp (phk@login.dkuug.dk)
+
+ * config.sub, configure: Recognize FreeBSD.
+ * i386/freebsd.h, x-freebsd: New files.
+ * i386/x-freebsd: New file.
+ * i386.h (TARGET_NO_FANCY_MATH_387): New option.
+ * i386.md (TARGET_NO_FANCY_MATH_387): Implement new option.
+ * ginclude/stdarg.h, ginclude/stddef.h, ginclude/varargs.h:
+ Recognize __FreeBSD__.
+ * gcc.c (link_command_spec): Add -Z argument for ZMAGIC's on FreeBSD.
+
+Mon Apr 25 14:08:26 1994 Doug Evans (dje@cygnus.com)
+
+ * configure (language search loop): Correct test for no languages.
+ (CC): Use single quotes to avoid shell expansion of $(CC).
+
+Mon Apr 25 13:10:07 1994 Andreas Stolcke (stolcke@icsi.berkeley.edu)
+
+ * Makefile.in (install-common): Install EXTRA_PARTS with
+ INSTALL_DATA, not INSTALL_PROGRAM.
+
+Mon Apr 25 06:34:00 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * fold-const.c (fold-convert): Use assignment, instead of
+ initializing, aggregate local variable REAL_VALUE_TYPE.
+
+Sun Apr 24 11:17:20 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reorg.c (redirect_with_delay_list_safe_p): Fix off-by-one error.
+
+ * real.c (etoe53, etoe24): Make all occurrences static.
+
+ * emit-rtl.c (try_split): Don't try to recursively split deleted insn.
+
+ * rs6000.md (movti): Adjust constraints to avoid impossible reload.
+
+ * expr.c (expand_expr, case SAVE_EXPR): Fix error in last change.
+
+Sat Apr 23 06:45:50 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reloads_conflict, case RELOAD_FOR_OUTPUT): Fix typo.
+
+Fri Apr 22 18:43:08 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * configure (alpha-dec-osf): Fix typo.
+
+Fri Apr 22 15:02:22 1994 Hallvard B Furuseth (h.b.furuseth@usit.uio.no)
+
+ * gcc.c (handle_braces, check_live_switch): Refine previous change.
+
+Fri Apr 22 03:27:26 1994 Doug Evans (dje@cygnus.com)
+
+ * configure: Sort machines.
+
+ * Language directory reorganization.
+ * configure: Auto-configure each language subdirectory by looking
+ for */config-lang.in.
+ Add language makefile fragments (Make-lang.in) to top level makefile,
+ and hook them in via lang.* targets.
+ Configure each language subdirectory. On hosts that support them,
+ create stage[123] symlinks in each subdirectory.
+ If there is a configure script in the subdirectory, run it.
+ * Makefile.in (LANGUAGES): Remove c++.
+ (SUBDIRS): New variable.
+ (LEX, LEXFLAGS): Ditto.
+ (MAKEOVERRIDES): Ditto.
+ (COMPILERS): Remove cc1plus.
+ (LANG_MAKEFILES, LANG_STAGESTUFF, LANG_DIFF_EXCLUDES, FLAGS_TO_PASS):
+ New variables.
+ (CPLUS_OBJS, CPLUS_TREE_H, C++, c++, g++, g++-cross, cc1plus,
+ cp-*.o, g++.o, gplus.info): Deleted.
+ (STAGESTUFF): Remove g++, g++-cross, cc1plus. Add $(LANG_STAGESTUFF).
+ (Makefile): Depend on $(LANG_MAKEFILES).
+ (####language hooks, ####language fragments): New spots for sed
+ to insert things.
+ (all.cross, all.build, start.encap, rest.encap, info, dvi,
+ install-normal, install-common, install-info, install-man,
+ uninstall, distdir, mostlyclean, clean, distclean, extraclean,
+ realclean, stage1, stage2, stage3, stage4): Depend on lang.foo.
+ (mostlyclean, clean, distclean, extraclean, realclean): Clean as
+ much of the language subdirectories as we can.
+ (install-common): Remove g++ installation.
+ (install-man): Remove g++.1 installation.
+ (uninstall): Remove g++ reference.
+ (TAGS): Remove cp-parse.? reference.
+ (distdir): Ditto.
+ (distdir-start, distdir-finish): New targets.
+ (diff): Remove cp-parse.? reference. Add $(LANG_DIFF_EXCLUDES).
+ (compare, compare3, gnucompare, gnucompare3): Compare language
+ subdirectories too.
+ (stage1-start, stage2-start, stage3-start, stage4-start): New targets.
+ Ensure stage subdirectory exists before processing language
+ dependent part.
+ * cp/Makefile.in: New file, makefile for c++ subdirectory.
+ * cp/Make-lang.in: New file, c++ language makefile fragment.
+ This file provides c++ specific support to the top level makefile via
+ several well defined targets: c++.all.build, c++.all.cross,
+ c++.start.encap, c++.rest.encap, c++.info, c++.dvi,
+ c++.install-normal, c++.install-common, c++.install-info,
+ c++.install-man, c++.uninstall, c++.distdir, c++.mostlyclean,
+ c++.clean, c++.distclean, c++.extraclean, c++.realclean,
+ c++.stage1, c++.stage2, c++.stage3, c++.stage4.
+ * cp/config-lang.in: New file, defines language name and other
+ configuration parameters for the c++ language: compilers, stagestuff,
+ and diff_excludes.
+ * g++.c: Move into cp subdirectory.
+ * g++.1: Ditto.
+ * g++int.texi: Ditto.
+ * cp-*: Ditto, remove "cp-" prefix except for cp-tree.h.
+
+Thu Apr 21 15:47:01 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.c (mem_aligned_8): Don't assume addresses with
+ MEM_IN_STRUCT_P set are 8 byte aligned.
+
+ * iris5.h (CPP_SPEC): Define _LANGUAGE_C for Objective C also.
+
+ * unroll.c (find_splittable_givs): Share dest_reg for multiple
+ address givs within a single instruction.
+ (copy_loop_body): Only update psuedo-reg for shared giv once.
+
+ * sparc.c (sparc_type_code): Don't put more than 30 bits of info
+ into the variable qualifiers.
+
+ * expr.c (store_expr): Don't check the TYPE_MODE of an ERROR_MARK.
+
+Thu Apr 21 15:34:11 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * calls.c (calls_function_1): A language-specific code must
+ be assumed to call a function and also call alloca.
+ Check for inlined functions that call alloca.
+
+ * reload1.c (reload): Clear forbidden_regs earlier.
+ (new_spill_reg): Mention in error message that asm clauses can also
+ cause the compiler to run out of spill regs.
+ (scan_paradoxical_regs): If SMALL_REGISTER_CLASSES, forbid
+ hard regs used in explicit user variables.
+
+ * combine.c (can_combine_p, combinable_i3pat, try_combine): Allow
+ combination involving hard regs if the hard reg is a user variable.
+
+ * gcc.c (default_compilers): If -E and the file is (e.g.) x.s,
+ don't run the assembler; similarly for .i, .ii, .adb, etc.
+
+ * Cleanups related to adding prototypes to many declarations.
+ * rtl.h: If TREE_CODE undefined, make an incomplete union for tree.
+ (STDIO_PROTO): Define here if not already defined.
+ (read_rtx): Use STDIO_PROTO.
+ (output_constant_def, immed_real_const): Use "union tree_node *".
+ (immed_real_const_1): Move declaration to real.h.
+ (rtx_to_tree_code): Supply prototype.
+ * tree.h: If RTX_CODE undefined, make an incomplete struct for rtx.
+ Add some missing declarations of functions in stmt.c.
+ (STDIO_PROTO): Define here if not already defined.
+ * real.h: Add prototypes to declarations of functions in real.c.
+ (immed_real_const_1): Move declaration from rtl.h.
+ * output.h: Add missing declarations of functions in final.c.
+ (STDIO_PROTO): Don't define here.
+ * c-tree.h (STDIO_PROTO): Likewise.
+ * reload.h (PROTO, STDIO_PROTO): Likewise.
+ * bi-opcode.c (main): Don't write overly-long line.
+ * cse.c, emit-rtl.c: Use CONST_DOUBLE_FROM_REAL_VALUE macro for immed
+ real_const_1.
+ * expmed.c: Add prototypes for static functions.
+ * expr.c (bc_expand_expr): Call expand_decl and expand_decl_init,
+ not the bc_ versions.
+ * final.c: Include stdio.h and ctype.h early.
+ Add prototypes for static functions.
+ * function.c: Add prototypes for static functions.
+ (bc_expand_function_end, expand_function_end): Call new
+ expand_fixups instead of old fixup_gotos.
+ * global.c, local-alloc.c: Add prototypes for static functions.
+ * integrate.c: Likewise.
+ Use CONST_DOUBLE_FROM_REAL_VALUE macro for immed_real_const_1.
+ * optabs.c: Likewise.
+ * real.c: Make most functions static and add prototypes for
+ all static functions.
+ (GET_REAL, PUT_REAL): Cast parameter to proper pointer type in
+ some cases; use unsigned array.
+ * stmt.c: Add prototypes for static functions.
+ (expand_fixups): New function.
+ (fixup_gotos): Now static.
+ Don't call bc_fixup_gotos with wrong type (but now probably wrong
+ value).
+ (bc_*): Now static.
+ (expand_exit_loop_if_false): Call bc_expand_goto_internal with
+ proper null pointer.
+ (expand_decl_init): Call bc_expand_decl_init if writing bytecode.
+
+Thu Apr 21 14:21:56 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ Support taking the address of a text segment symbol when using
+ MIPS -membedded-pic.
+ * mips.h (embedded_pic_fnaddr_rtx): Declare.
+ (embedded_pic_offset): Declare.
+ (mips_finalize_pic): Declare.
+ (FINALIZE_PIC): Define.
+ (GO_IF_LEGITIMATE_ADDRESS): When using -membedded-pic, reject
+ combining an embedded PIC text reference with a register.
+ (ENCODE_SECTION_INFO): Under -membedded-pic set SYMBOL_REF_FLAG to
+ 0 for text segment symbols, 1 for data segment symbols.
+ * mips.c (embedded_pic_fnaddr_rtx): New variable.
+ (embedded_pic_offset): New function.
+ (mips_finalize_pic): New function.
+ (mips_select_section): When using -membedded-pic and not using
+ -fwritable-strings, put strings in the text section, not the read
+ only data section.
+ * mips.md (movsi): When using -membedded-pic, add special code
+ when loading a symbol directly to use an offset from the start of
+ the current function.
+ (get_fnaddr): New insn to get address of current function.
+
+Wed Apr 20 19:38:38 1994 Doug Evans (dje@cygnus.com)
+
+ * regclass.c (init_reg_sets_1): Make static.
+ (init_reg_modes): New function.
+ (init_regs): Likewise.
+ * toplev.c (compile_file): Call init_regs after init_rtl.
+ (main): Delete call to init_reg_sets_1.
+
+Wed Apr 20 15:06:35 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * sh.c (REG_ODD): Allow DIs and DFs into odd registers.
+ (print_operand): New command char '@', change nop insn.
+ (synth_constant): Don't allocate temp reg during reload.
+ (expand_block_move): Don't expand if TARGET_SMALLCODE.
+ (prepare_split_double_ops): Deleted.
+ (howshift, multcosts): Work out costs exactly.
+ (dump_table): Emit a label before the align.
+ (hi_const): TARGET_SHORTADDR makes more things HI consts.
+ (machine_dependent_reorg): Look through SUBREGS.
+ (from_compare): Get better code when relational args are loaded
+ into regs now.
+ (expand_acall): Cope with TARGET_BSR.
+ (general_movdst_operand): Don't allow illegal autoincs.
+ (mac_operand): New function.
+ (sh_function_arg, sh_function_partial_nregs): From sh.h
+ * sh.h (PARANOID_BIT, RETR2_BIT, CONSTLEN0_BIT, BSR_BIT,
+ SHORTADDR_BIT, TARGET_PARANOID, TARGET_RETR2, TARGET_CONSTLEN0,
+ TARGET_BSR, TARGET_SHORTADDR, TARGET_SWITCHES): New options.
+ (OVERRIDE_OPTIONS): No function_cse when TARGET_BSR.
+ (FIRST_RET_REG): Depends on TARGET_RETR2.
+ (FUNCTION_ARG, FUNCTION_ARG_PARTIAL_NREGS): Moved to sh.c
+ (HAVE_POST_INCREMENT, HAVE_PRE_DECREMENT): Define.
+ (MODE_DISP_OK_8): Define.
+ (REG_OK_FOR_PRE_POST_P): Allow a pseudoreg.
+ (GO_IF_LEGITIMATE_ADDRESS): Allow DI addressing modes.
+ (MOVE_RATIO): Depends on TARGET_SMALLCODE.
+ * sh.md (interrupt_function): New attr.
+ (define_delay): Account for interrupt functions.
+ (addc): Describe pattern better.
+ (adddi3): Expanded better.
+ (peepholes): Deleted many obsolete patterns.
+
+Wed Apr 20 13:37:58 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * expr.c (expand_expr): Don't force ignore when expanding the
+ subexpression of a WITH_CLEANUP_EXPR. Don't check ignore when
+ deciding whether or not to expand the cleanup for a TARGET_EXPR.
+
+Wed Apr 20 12:20:16 1994 Doug Evans (dje@cygnus.com)
+
+ * h8300/h8300.h (RTX_COSTS): Remove LSHIFT.
+ * h8300/h8300.md (lshrhi3_eight): Fix name.
+ (lshrhi3): Use it.
+ * i860/i860.c (safe_insn_src_p): Remove LSHIFT.
+ (single_insn_src_p): Likewise.
+ * i960/i960.c (i960_expr_alignment): Remove LSHIFT.
+ * sh/sh.c (output_shift, ASHIFTRT case): Do opposite shift as ASHIFT.
+ Delete LSHIFT case.
+ * sh/sh.h (RTX_COSTS): Remove LSHIFT, add LSHIFTRT.
+ * spur/spur.md (lshlsi3): Delete.
+
+Wed Apr 20 06:40:15 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * c-lex.c (check_newline): Avoid unreachable statement when
+ HANDLE_SYSV_PRAGMA defined.
+
+Wed Apr 20 01:52:24 1994 Steve Chamberlain (sac@mole.gnu.ai.mit.edu)
+
+ * flow.c (find_auto_inc, try_pre_increment): Make sure
+ that insertion of autoinc addressing mode would yield a valid
+ instructon.
+
+Tue Apr 19 23:41:14 1994 Doug Evans (dje@cygnus.com)
+
+ * Makefile.in (expr.o): Depend on regs.h.
+ * rtl.h (choose_hard_reg_mode): Declare.
+ * regs.h (reg_raw_mode): Declare.
+ * caller-save.c (choose_hard_reg_mode): Delete from here.
+ * regclass.c (choose_hard_reg_mode): Define here.
+ (reg_raw_mode): Define.
+ (init_reg_sets_1): Initialize reg_raw_mode.
+ * expr.c: #include regs.h.
+ (use_regs): Use reg_raw_mode.
+ * reload1.c (emit_reload_insns): Record additional spill registers
+ in their intrinsic mode.
+ * combine.c (move_deaths): Record death information of remaining
+ registers in their intrinsic mode.
+ * sched.c (attach_deaths): Create partial register dead notes using
+ register's intrinsic mode.
+
+Tue Apr 19 21:40:57 1994 Mike Stump (mrs@cygnus.com)
+
+ * toplev.c (lang_options): Add -fhandle-signatures for C++
+ frontend.
+
+Tue Apr 19 19:00:30 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cccp.c (do_error): Don't terminate.
+
+Tue Apr 19 17:48:41 1994 Hallvard B Furuseth (hbf@durin.uio.no)
+
+ * gcc.c: Add new options -print-file-name= and -print-prog-name=.
+
+ * gcc.c (struct switchstr): New field LIVE_COND.
+ (process_command): Initialize it.
+ (check_live_switch): New function.
+ (handle_braces): Call it.
+
+Mon Apr 18 19:22:25 1994 Lee Iverson (leei@ai.sri.com)
+
+ * mips.h (RTX_COSTS): Remove LSHIFT.
+
+Mon Apr 18 17:56:22 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * c-decl.c (duplicate_decls): Always warn when const declaration
+ follows non-const one for variables.
+
+Mon Apr 18 16:38:30 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * calls.c (prepare_call_address): New arg REG_PARM_SEEN.
+ All callers changed.
+ (expand_call): Pre-load args if small reg classes and reg parms.
+ * expr.h (prepare_call_address): Extend prototype.
+ * expr.c (expand_builtin_apply): Pass new arg to prepare_call_address.
+
+Mon Apr 18 14:53:14 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (const_binop): If arg is NaN, just return it
+ (fold_convert): Handle NaN in real->int and real->real cases.
+
+ * c-lex.c (yylex): If FP value is NaN, use value of zero.
+
+ * expr.h (PROMOTE_MODE): Don't supply default here.
+ (promote_mode): Add declaration.
+ * explow.c (promote_mode): New function.
+ * calls.c (expand_call): Use it.
+ * function.c (assign_parms, promoted_input_arg, expand_function_start):
+ Likewise.
+ * expr.c (expand_expr, case VAR_DECL, SAVE_EXPR): Likewise.
+ * stmt.c (expand_value_return, expand_decl): Likewise.
+
+Mon Apr 18 11:36:04 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (LIB2FUNCS): Change _op_vec_delete to _op_vec_del.
+ * libgcc2.c: Ditto.
+
+Mon Apr 18 11:19:07 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * reorg.c (redirect_with_delay_list_safe_p): New function,
+ similar to redirect_with_delay_slots_safe_p.
+ (fill_slots_from_thread): Do not redirect a jump if doing
+ so would invalidate the delay list for the jump.
+
+Mon Apr 18 03:09:30 1994 Doug Evans (dje@cygnus.com)
+
+ * scan-types.sh: Fix program's name in error message.
+ Rename dummy.c to avoid collisions in parallel makes.
+
+Sun Apr 17 18:29:00 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.h (PROCESSOR_COMMON, PROCESSOR_POWER, PROCESSOR_POWERPC):
+ New macros.
+ * rs6000.c (processor_target_table): Change "all" to "common".
+ Add "power" and "powerpc" generic processors. Explicitly turn off
+ new mnemonics for all members of the POWER architecture family.
+
+Sun Apr 17 10:04:18 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * tree.h (DECL_PRINT_NAME): Deleted.
+ (struct tree_decl): Field print_name deleted.
+
+Sun Apr 17 06:59:58 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * vax.h (RTX_COSTS), vax.c (vax_rtx_cost): Remove LSHIFT case.
+
+Sun Apr 17 01:15:27 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * function.c (locate_and_pad_parm): For ARGS_GROW_DOWNWARD,
+ Round sizetree for both upward and downward padding, nuke
+ the (now unnecessary) call to pad_below for arg_size_ptr.
+
+Sat Apr 16 21:05:40 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (one_cmplsi2): Always use nor instruction;
+ remove extraneous minus sign from condition register set constraint.
+
+Sat Apr 16 17:12:40 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k.c (print_operand): 'x' and 'y' mode letters only
+ if SUPPORT_SUN_FPA.
+ (print_operand_address): If (new) ASM_OUTPUT_CASE_FETCH defined,
+ use it to emit the address for the insn before a tablejump.
+ * m68k/mot3300.h (FUNCTION_ARG_PADDING, FUNCTION_PROLOGUE): Deleted.
+ (FUNCTION_EPILOGUE, PRINT_OPERAND, PRINT_OPERAND_ADDRESS): Deleted.
+ (SGS_SWITCH_TABLES, ASM_OUTPUT_CASE_END): Deleted.
+ (ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND): Deleted.
+ (SGS_NO_LI, ASM_OUTPUT_CASE_FETCH, ASM_RETURN_CASE_JUMP): Defined.
+
+ * configure (header_files): Use ${srcdir} instead of $(srcdir).
+
+Sat Apr 16 16:51:15 1994 DJ Delorie (dj@ctron.com)
+
+ * objc/makefile.dos (OBJC_O): Add encoding.o.
+
+Sat Apr 16 16:38:32 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-lex.c (yylex): Turn off overflow flag when fixing up large
+ traditional hex constants.
+
+ * c-decl.c (finish_decl): If asmspec_tree, clear DECL_BUILT_IN
+ for function and DECL_RTL always.
+
+Wed Apr 13 13:08:10 1994 Per Bothner (bothner@cygnus.com)
+
+ * toplev.c (compile_file): Never warn about unused static consts,
+ since it is reasonable to have those in header files.
+
+Wed Apr 13 12:25:21 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * varasm.c (contains_pointers_p): When examining a RECORD_TYPE,
+ only look at the FIELD_DECLs.
+
+Tue Apr 12 18:14:42 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (LIB2FUNCS): Add _op_vec_{delete,new}.
+
+ * libgcc2.c (__builtin_vec_{delete,new}): New functions per the
+ latest C++ working paper.
+ (__default_new_handler): No longer static.
+ (__set_new_handler): Lose.
+
+ * cccp.c: Don't implicitly wrap LOCAL_INCLUDE_DIR.
+ (struct default_include): Add cxx_aware field.
+ (include_defaults_array): Ditto.
+ (main): Use cxx_aware field.
+
+Tue Apr 12 16:13:10 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub (next): Fix typo in m68k-next-ns3 alternative.
+
+Tue Apr 12 07:41:17 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/i386.c (notice_update_cc): Remove LSHIFT case, since there
+ is no LSHIFT rtl code any more.
+
+ * halfpic.h (NO_STDIO_H): Do not include stdio.h if this is defined.
+
+Mon Apr 11 17:24:46 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * scan.c (get_token): Correctly increment lineno after
+ encountering #ident (or other #-directive).
+
+Mon Apr 11 13:22:51 1994 Jim Wilson (wilson@cygnus.com)
+
+ * reorg.c (try_merge_delay_insns): Account for resources set/used
+ by a filled insn before trying to simplify insns in delay slots.
+
+ * x-iris, x-iris3, x-mips, x-sony, x-sysv (OLDCC): Change -XNh1500
+ to -XNh2000.
+
+ * c-decl.c (finish_decl): Don't preserve initializer if it is
+ error_mark_node.
+
+ * reorg.c (try_merge_delay_insns): Move next_trial update
+ immediately after the try_split call.
+
+ * mips.c (mips_select_rtx_section, mips_select_section): New
+ functions. Prefer rdata when TARGET_EMBEDDED_DATA, and prefer
+ sdata otherwise.
+ * mips.h (MASK_EMBEDDED_DATA, TARGET_EMBEDDED_DATA): New macros.
+ (TARGET_SWITCHED): Add new option -membedded-data.
+ (SELECT_RTX_SECTION, SELECT_SECTION): Call function in mips.c.
+
+ * Makefile.in (all.cross, rest.encap): Delete objc-runtime and
+ SYSCALLS.c.X.
+ (OBJC, OBJECTIVE-C): Add objc-runtime.
+ (proto): Add SYSCALLS.c.X.
+ (libgcc2.ready, libobjc.a, sublibobjc.a, SYSCALLS.c.X): Add
+ dependence on stmp-int-hdrs.
+
+ * cccp.c (rescan): Don't look for C++ // comment before directive.
+ Handle \-newline inside a C++ // comment.
+ (skip_if_group): Likewise.
+ (handle_directive): Also handle C++ // comment after #. Point
+ ip->bufp after the comment start before calling
+ skip_to_end_of_comment.
+ (validate_else): Handle \-newline inside a C++ // comment.
+ (skip_to_end_of_comment, macarg1, discard_comments): Likewise.
+
+ * varasm.c (immed_double_const): Sign-extend constants when they
+ have the most significant bit set for the target.
+
+Mon Apr 11 06:20:56 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): When accumulating needs, use nested
+ structures to simplify and speed up the code.
+
+ * alpha.md (compare define_split): Fix bugs in last addition.
+
+ * calls.c (expand_call, emit_library_call{,_value}, store_one_arg):
+ Use convert_modes instead of convert_to_mode.
+
+ * tree.h (frame_size): Now a union.
+ (DECL_ALIGN, DECL_FRAME_SIZE, DECL_FUNCTION_CODE): Access proper
+ field of frame_size union.
+ (DECL_SET_FUNCTION_CODE): Simplified; retained for compatibility.
+ * c-decl.c (duplicate_decls, pushdecl, builtin_function):
+ Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
+
+Mon Apr 11 05:50:26 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * mips-tfile.c (update_headers): Do not copy stStatic symbols that
+ result from internal labels.
+
+Sun Apr 10 07:13:24 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rtl.def (LSHIFT): Deleted.
+ * combine.c, cse.c, function.c: No longer handle LSHIFT.
+ * genattrtab.c, loop.c, reload1.c: Likewise.
+ * expr.h (lshl_optab): Deleted.
+ * optabs.c (lshl_optab): Deleted.
+ (expand_binop, init_optabs): No longer reference it.
+ * genopinit.c, expmed.c (expand_shift): Likewise.
+
+ * arm.c, arm.h, arm.md: Remove references to LSHIFT and lshlsi3.
+ * clipper.h, clipper.md, convex.h, convex.md, elxsi.md: Likewise.
+ * fx80.h, fx80.md, gmicro.md, i370.md: Likewise.
+ * m68k.c, m68k.h, m68k.md, m88k.c, m88k.md, ns32k.md: Likewise.
+ * rs6000.md, tahoe.md: Likewise.
+
+ * combine.c (simplify_shift_count, case EQ): LSHIFT should be
+ LSHIFTRT.
+
+Sun Apr 10 04:48:37 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa-ghiux.h (LIB_SPEC): Remove last change until we've got the
+ go ahead from HP to distribute /usr/lib/end.o.
+ * pa-ghpux.h, pa-hiux.h, pa-ghiux.h: Likewise.
+
+Sat Apr 9 15:06:22 1994 Christian Kranz (kranz@sent5.uni-duisburg.de)
+
+ * config.sub: Add ns* as operating systems; default to ns2 for NeXT.
+ * configure (m68k-next-ns2*): New configuration.
+ * libgcc2.c: Include <mach.h>, not <mach/mach.h> for NeXTStep 2.1.
+ * config/nextstep21.h, m68k/next21.h: New files.
+
+Sat Apr 9 10:56:06 1994 Randy Wright (rwright@convex.com)
+
+ * combine.c (force_to_mode, case ROTATE): Don't assume
+ simplify_binary_operation always returns CONST_INT.
+ (simplify_shift_const, case IOR, PLUS): Likewise.
+
+Sat Apr 9 09:13:10 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * i386/sequent.h (STRUCT_VALUE{,_INCOMING,_REGNUM}):
+ Redefine for calling conventions of native cc.
+
+Sat Apr 9 08:25:43 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * rs6000.h (FINAL_PRESCAN_INSN): Define.
+ * rs6000.c (rs6000_convert_preincs): New function.
+
+ * i386.md (mulhi3): Use SImode for MULT RTL.
+
+ * fold-const.c (fold): Avoid exponential work when simplifying
+ conditional expressions; don't recurse twice if ARG1 is constant.
+
+ * function.c (unitialized_vars_warning, setjmp_args_warning):
+ Reword warning to be less ambiguous.
+
+ * c-typeck.c (convert_arguments): Truncate and reextend
+ for PROMOTE_PROTOTYPES so we can give error on overflow.
+
+ * reload1.c (reload_conflicts): Rewrite to clean up and fix
+ numerous bugs; move to later in file.
+
+ * c-decl.c (duplicate_decls): Put new type in same obstack as
+ old ones, or permanent if old ones in different obstacks.
+
+Fri Apr 8 18:18:18 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * fold-const.c (fold, case GT_EXPR): Simplify X < (1 << Y)
+ into X >> Y == 0.
+
+Fri Apr 8 11:23:51 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ Add support for -membedded-pic to MIPS backend, to create
+ genuinely position independent code without using a global offset
+ table. Requires GNU as and ld.
+ * mips.h (MASK_EMBEDDED_PIC): Define.
+ (TARGET_EMBEDDED_PIC): Define.
+ (TARGET_SWITCHES): Add embedded-pic and no-embedded-pic.
+ (ASM_SPEC): Pass -membedded-pic to assembler.
+ (ASM_OUTPUT_ADDR_DIFF_ELT): If TARGET_EMBEDDED_PIC output a
+ difference, rather than using .gpword.
+ (ASM_OUTPUT_CASE_LABEL): Define.
+ * mips.md (casesi, casesi_internal): New instructions, used only
+ for TARGET_EMBEDDED_PIC.
+ * mips.c (override_options): For TARGET_EMBEDDED_PIC warn
+ if -mabicalls or -G were used, and set flag_pic and
+ mips_section_threshold.
+ (print_operand): Handle 'S' by printing a label with a leading LS.
+
+Thu Apr 7 22:20:09 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * calls.c (emit_library_call_value): Move is_const set after ifdef.
+
+Wed Apr 6 21:34:17 1994 Pat Rankin (rankin@eql.caltech.edu)
+
+ * expr.c (expand_builtin, case BUILT_IN_NEXT_ARG): Test whether
+ an argunment has been passed to __builtin_next_arg; warn if not.
+
+Wed Apr 6 17:28:44 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * toplev.c (lang_options): Add -f[no-]vtable-thunks (for C++).
+
+Wed Apr 6 15:35:42 1994 Jim Wilson (wilson@cygnus.com)
+
+ * cccp.c (discard_comments): Replace comments with a single space.
+
+ * Makefile.in (USER_H): Add $(srcdir)/ before every ginclude use.
+
+ * calls.c (emit_library_call_value): New variable is_const. Clear
+ it for functions that return an aggregate in memory.
+
+ * configure (header_files): Prepend $(srcdir)/ginclude/ to each
+ element before substituting into the Makefile. Delete ginclude/
+ at each point where we set header_files.
+
+ * c-decl.c (finish_decl): Correct typo in use of tree_int_cst_sgn.
+
+Wed Apr 6 07:39:47 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md: Add define_split to simplify "(unsigned) x > 0xffffff".
+
+ * toplev.c (lang_options): Group and alphabetize some options.
+
+Wed Apr 6 07:03:13 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * function.c (push_function_context): Use current_function_varargs.
+ (pop_function_context): Likewise.
+ (assign_parms): Respect current_function_varargs.
+ Save args_so_far in any case.
+ * expr.c (expand_builtin): Allow builtin_next_arg for varargs
+ functions as well.
+ * function.h (struct function): New field for current_function_varargs.
+ * integrate.c (function_cannot_inline_p): Use current_function_varargs.
+ * va-alpha.h, va-m88k.h, va-sparc.h (va_dcl): Add ... to
+ set current_function_varargs.
+
+ * c-decl.c (warn_missing_declarations): New variable.
+ (c_decode_option): -Wmissing-declarations.
+ (start_function): Actually do the checking.
+ * toplev.c (lang_options): Add -Wmissing-declarations.
+
+ * function.c (expand_function_start): Delay copying static chain.
+
+ * calls.c (emit_library_call): Move the invocation of
+ prepare_call_address before the assignments of the function arguments.
+ (emit_library_call_value): Likewise.
+
+ * i386.h (DEBUG_PRINT_REG): Fix printing of coprocessor regs in QImode.
+
+Wed Apr 6 06:42:50 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * mips-tfile.c (update_headers): Copy stStatic symbols from the old
+ local symbol table to the new local symbol table if they did not get
+ added via debugging psuedo ops.
+
+Wed Apr 6 06:36:05 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * stdarg.h, varargs.h (__va_rounded_size): Round to multiple
+ of sizeof (short) on sysV68.
+
+ * m68k.c (output_function_prologue): pea/move: Fix typos.
+ asm_fprintf("add%.[wl] ...): Undo previous change.
+
+Tue Apr 5 20:05:10 1994 Doug Evans (dje@cygnus.com)
+
+ * gcc.c (process_command): Add "include" prefix for [foo/]stageN.
+
+Tue Apr 5 01:22:08 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa-ghiux.h (LIB_SPEC): Link in /usr/lib/end.o
+ * pa-ghpux.h, pa-hiux.h, pa-hpux.h (LIB_SPEC): Likewise.
+
+Mon Apr 4 17:36:55 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * final.c (final_scan_insn): Pass new arg, block num, to
+ sdbout_end_block.
+ * sdbout.c (sdbout_begin_block): Don't output block for function
+ level scope unless MIPS_DEBUGGING_INFO is defined.
+ (sdbout_end_block): Likewise. Add new parameter n for the block
+ number.
+
+ * calls.c (expand_call): If PCC_STATIC_STRUCT_RETURN defined, mark
+ function as addressable same time as we clear is_integrable.
+
+Mon Apr 4 17:11:17 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (xsys-protos.h): Undefine __*_TYPE when
+ preprocessing fixtmp.c.
+ * fixincludes: Fix ptrdiff_t and wchar_t in system headers like we
+ do size_t.
+ * scan-types.sh: Use __WCHAR_TYPE__, __PTRDIFF_TYPE__, and
+ __SIZE_TYPE__. Still deduce size_t so that it can be used for
+ ssize_t if necessary.
+ * stddef.h (wchar_t): Always define as __WCHAR_TYPE__.
+ * cccp.c (special_symbol, case T_WCHAR_TYPE): Output "__wchar_t"
+ for C++.
+
+Sat Apr 2 08:14:02 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (FUNCTION_PROLOGUE, FUNCTION_PROFILER): Correct
+ code for -fpic ELF case.
+
+Fri Apr 1 17:33:35 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * fixproto: Add strncpy, strpbrk, strrchr, strspn, strstr, strtok
+ and strxfrm to the required list for string.h.
+
+Fri Apr 1 01:05:53 1994 Jim Wilson (wilson@cygnus.com)
+
+ * configure: Change math-68881.h to ginclude/math-68881.h.
+ (EXTRA_HEADERS): Use | not / in sed command.
+ * math-68881.h, math-3300.h: Move to ginclude directory.
+
+ * libgcc2.c: Modify all uses of __attribute__ mode to use new
+ syntax.
+
+ * Makefile.in (USER_H): Files in ginclude now. Add stdarg.h,
+ stddef.h, varargs.h.
+ (all.cross, rest.encap): Move LIBGCC after stmp-headers. Add
+ objc-runtime, and SYSCALLS.c.X.
+ (for-bootstrap): Delete.
+ (OBJC, OBJECTIVE-C): Delete objc-runtime.
+ (proto): Delete SYSCALLS.c.X.
+ (*.o): Delete gvarargs.h dependencies.
+ (stmp-int-hdrs): Delete gvarargs.h, gstdarg.h, gstddef.h deps, and
+ code to copy them.
+
+ * bc-emit.c: Change <gvarargs.h> to <varargs.h>.
+ * enquire.c, libgcc2.c, sys-types.h: Change "gstddef.h" to <stddef.h>.
+ * gcc.c: Change "gstdarg.h" to <stdarg.h> and "gvarargs.h" to
+ <varargs.h>.
+ * objc/Object.m: Change "gstdarg.h" to <stdarg.h>.
+ * objc/runtime.h, scan-types.sh: Change "gstddef.h" to <stddef.h>.
+ Change "gstdarg.h" to <stdarg.h>.
+ * objc/hash.h, objc/objc.h, objc/sarry.h: Delete use of IN_GCC to
+ control stddef.h/gstddef.h include.
+ * cccp.c (pcfinclude): Modify comment referring to gstddef.h.
+ * sparc/sparc.h (CPP_PREDEFINES): Update GCC_NEW_VARARGS comment.
+ * i386/x-next, m68k/x-next (libgcc2.a, stdarg.h): Delete rules.
+ * fixincludes: Modify comment referring to gvarargs.h.
+ * cp/Makefile.in: Modify comments that refer to gvarargs.h and
+ gstddef.h.
+
+ * gstdarg.h, gstddef.h, gvarargs.h: Move to ginclude directory
+ and strip off initial `g'.
+ * va-*.h, proto.h: Move to ginclude directory.
+
+Thu Mar 31 19:49:17 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sparc.h (SPARC_STACK_ALIGN): Use ~7 not 0xfffffff8 for portability.
+
+ * xcoffout.h (DBX_OUTPUT_MAIN_SOURCE_FILENAME): Disable.
+
+ * sol2.h: Delete ifdefed out section defining *_SECTION_ASM_OP
+ macros.
+ ({CTORS,DTORS}_SECTION_ASM_OP) Delete definitions.
+ * sysv4.h (INIT_SECTION_ASM_OP): Don't set the alloc flag.
+ ({CTORS,DTORS}_SECTION_ASM_OP): Set execinstr flag.
+
+ * dbxout.c (dbxout_type): Re-enable debugging output for anonymous
+ structures. Change all three places that refer to xrefs to use
+ exactly the same condition.
+
+ * c-typeck.c (pop_init_level): Correct typo in use of
+ tree_int_cst_sgn.
+
+ * mips.c (mips_rtx_classify, md_register_operand,
+ fpsw_register_operand, cmp2_op, uns_cmp_op, fcmp_op): Delete.
+ (mips_const_double_ok, mips_fill_delay_slot, output_block_move,
+ print_operand, function_epilogue): Don't treat gas differently
+ than native assembler.
+ (equality_op, cmp_op): Delete use of classify_op.
+ (override_options): Delete uses of mips_rtx_classify.
+ (final_prescan_insn): Simplify based on other changes.
+ * mips.h (mips_rtx_classify, cmp2_op, fcmp_op,
+ fpsw_register_operand, md_register_operand, uns_cmp_op,
+ classify_op, additive_op, divmod_op, unsigned_op, CLASS_*_OP,
+ NOTICE_UPDATE_CC): Delete.
+ (RTX_COSTS): Use different numbers for R3000/R6000/R4000.
+ (REGISTER_MOVE_COST): Use cost of 2 within same register class, 4
+ for FP to GR copy, 6 otherwise.
+ (ADJUST_COST): Give anti and output dependencies zero cost.
+ (PREDICATE_CODES): Delete obsolete functions from list.
+ * mips.md (addsi3_internal): Don't output subtract.
+ (subsi3_internal): Don't output add.
+ (smulsi3_highpart, umulsi3_highpart): Add missing third operand to
+ mips_move_1word call.
+
+Thu Mar 31 12:09:42 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * longlong.h: Change RS/6000 macros to use PowerPC mnemonics when
+ using -mnew-mnemonics.
+
+Wed Mar 30 17:37:16 1994 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * m68k/dpx2.h (NO_ASM_FMOVECR): Defined.
+ * m68k.c (standard_68881_constant_p): Return 0 if NO_ASM_FMOVECR
+ defined.
+
+ * configure: Add case for rs6000-bull-bosx.
+
+Wed Mar 30 17:31:24 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.c (global_symbolic_reference_mentioned_p): New parameter F.
+ (print_operand_address): When generating pic baseregisters are
+ only allowed if offset is CONST_INT. For {SYMBOL,LABEL}_REF
+ a indexregister has to be used instead. (sb) is no longer
+ emitted for constant absolute addresses.
+ (output_move_double): Use CONSTANT_P instead of CONSTANT_ADDRESS_P.
+ * ns32k.h (FUNCTION_PROLOGUE): use __GLOBAL_OFFSET_TABLE_,
+ not _GLOBAL_OFFSET_TABLE_.
+ (LEGITIMATE_CONSTANT_P, LEGITIMATE_PIC_OPERAND_P): Use
+ LEGITIMATE_PIC_OPERAND_P, not LEGITIMATE_CONSTANT_P,
+ to set current_function_uses_pic_offset_table.
+ (INDIRECTABLE_1_ADDRESS_P): Baseregisters are not legal
+ for {LABEL,SYMBOL}_REFS when emitting pic.
+ (GO_IF_INDEXABLE_ADDRESS): INDIRECTABLE_1_ADDRESSes are indexable too.
+ * ns32k/netbsd.h, ns32k/xm-netbsd.h: New files.
+ * configure (ns32k-pc532-netbsd*): New case, to use new files.
+
+Wed Mar 30 16:39:24 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): Fix typo in previous change.
+
+ * gcc.c (process_command, case 'B'): If name is "stageN/",
+ add "include" to system include prefix.
+
+ * bc-emit.c, calls.c, combine.c, emit-rtl.c, final.c, g++.c:
+ Include <stdarg.h> instead of "gstdarg.h"; similarly for varargs.
+ * genattrtab.c, mips-tfile.c, protoize.c, toplev.c, tree.c: Likewise.
+
+ * fold-const.c (strip_compound_expr): New function.
+ (fold): Call it; avoid exponential work when simplifying
+ binary op over a COND_EXPR.
+
+ * cse.c (cse_insn): Add missing definition of var TEM; clean up
+ shadowed uses.
+
+ * sparc.c (sparc_type_code): Revise so it supports non-C types.
+
+Wed Mar 30 14:52:26 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
+
+ * xm-alpha.h (string.h): Don't include when inhibit_libc is defined.
+
+Wed Mar 30 10:37:51 1994 Stan Coxs (coxs@dg-rtp.dg.com)
+
+ * m88k.md (movdf): Do not consider extended registers when doing
+ define_split.
+
+Wed Mar 30 01:49:06 1994 Torbjorn Granlund (tege@cygnus.com)
+
+ * config/m68k/m68k.c (output_move_double): Use `%.' where appropriate.
+
+Tue Mar 29 10:46:18 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (ASM_OUTPUT_LABEL): TARGET_GAS no longer needs trailing colons.
+ (ASM_OUTPUT_INTERNAL_LABEL, ASM_OUTPUT_COMMON): Likewise.
+
+ * pa.h (TARGET_PORTABLE_RUNTIME): Define.
+ (TARGET_SWITCHES): Add -mportable-runtime and -mno-portable-runtime.
+ (CUMULATIVE_ARGS): Now a "struct hppa_args" rathern than an int.
+ All references changed.
+ (INIT_CUMULATIVE_ARGS): Also initialize nargs_prototype.
+ (INIT_CUMULATIVE_INCOMING_ARGS): Define.
+ (FUNCTION_ARG_ADVANCE): Decrement nargs_prototype for each arg seen.
+ (FUNCTION_ARG): Handle TARGET_PORTABLE_RUNTIME.
+ (ASM_DECLARE_FUNCTION_NAME): Explicitly disallow argument relocations
+ for TARGET_PORTABLE_RUNTIME.
+ (ASM_OUTPUT_INT): Do not use a P% prefix for function references
+ if TARGET_PORTABLE_RUNTIME.
+
+ * pa.md (high and lo_sum for function addresses): Provide alternate
+ definitions for TARGET_PORTABLE_RUNTIME.
+
+ * pa.c (output_arg_descriptor): Explicitly disallow argument
+ relocations for TARGET_PORTABLE_RUNTIME.
+
+Tue Mar 29 07:45:44 1994 Chris Smith (csmith@convex.com)
+
+ * convex.h (check_float_value): fix return type in extern.
+
+Mon Mar 28 18:36:56 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k/mot3300.h (ASM_IDENTIFY_GCC): Define to be non-null.
+
+Sun Mar 27 20:26:36 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * c-parse.in (attrib): Handle string args as expressions,
+ merging the two rules. `mode' attribute now takes a string arg.
+ Delete the rule for an identifier as arg.
+ * c-common.c (decl_attributes): `mode' attribute now takes string arg.
+
+Sun Mar 27 14:42:39 1994 Doug Evans (dje@cygnus.com)
+
+ * c-parse.in (attrib): Back out last patch.
+
+Fri Mar 25 17:52:44 1994 Walter Misar (misar@rbg.informatik.th-darmstadt.de)
+
+ * m68k.md (movsi): New strategy for moving small constants into dregs,
+ if it can't be done with moveq.
+ * m68k.h (CONST_COSTS): Reflect the change in m68k.md.
+
+Fri Mar 25 14:30:47 1994 Philippe De Muyter (phdm@info.ucl.ac.be)
+
+ * m68k.md (call): If (new) MOTOROLA_BSR defined, try to emit 'bsr'.
+ * m68k/mot3300.h (MOTOROLA_BSR): Defined.
+
+ * m68k.c (output_function_prologue): Use link.w on 68040;
+ emit pea fp + movl sp,fp instead of linkw 0 for 68040.
+
+Fri Mar 25 14:21:06 1994 Jim Meyering (meyering@idefix.comco.com)
+
+ * bc-emit.c (bc_emit_bytecode): Remove decl of unused variable NPUSHES.
+ (bc_emit_instruction): Remove decl of unused variable LITERAL.
+ * c-aux-info.c (gen_decl): Remove decl of unused variable.
+ * c-common.c (truthvalue_conversion): Remove decl of unused CODE.
+ * c-decl.c (push_parm_decl): Move decl of unused variable OLDDECL
+ into #if 0 block.
+ (finish_enum): Remove decls of unused variables I and TEMPORARY.
+ * c-parse.in (primary): Remove decl of unused variable CONTEXT.
+ * c-typeck.c (convert_arguments): Remove decls of unused variables.
+ * collect2.c (putenv): Remove decl of unused variable STR_LEN.
+ (main): Remove decls of unused variables LEN and CLEN.
+ * combine.c (try_combine): Remove decls of unused variables.
+ (subst): Remove decls of unused variables ORIG_CODE.
+ (simplify_if_then_else): Remove decl of unused variable C2.
+ (make_compound_operation): Remove decl of unused variable COUNT.
+ (known_cond): Remove decl of unused variable NEW.
+ (make_field_assignment): Remove decl of unused variable OURDEST.
+ (simplify_and_const_int): Remove decls of unused variables.
+ (simplify_shift_const): Remove decl of unused variable INNER.
+ * cse.c (cse_insn): Remove decl of unused variable TEM.
+ * dbxout.c (dbxout_symbol): Remove decls of unused variables.
+ * emit-rtl.c (reset_used_flags): Remove decl of unused variable.
+ (gen_sequence): Remove decl of unused variable NEWVEC.
+ * enquire.c (f_rep): Remove decl of unused variable F1.
+ * final.c (output_source_line): Remove decl of unused variable.
+ * fix-header.c (read_scan_file): Remove decl of unused variable RPTR.
+ (write_rbrac): Remove decl of unused variable PARTIAL.
+ (main): Likewise.
+ * g++.c (main): Remove decl of unused variable FN.
+ * genattr.c (main): Remove decl of unused variable MAX_ISSUE_TIME.
+ * genattrtab.c (expand_units): Remove decl of unused variable.
+ * genrecog.c (break_out_subroutines): Remove decl of unused variable.
+ * global.c (global_conflicts): Move decl of unused variable I into
+ #if 0 block.
+ * integrate.c (save_for_inline_nocopy): Remove decls of unused vars.
+ (expand_inline_function): Remove two block-scope decls of unused
+ variable COPY.
+ * jump.c (invert_jump): Remove decl of unused variable OLABEL.
+ * loop.c (init_loop): Remove decls of unused variables.
+ (loop_optimize): Remove decl of unused variable END.
+ (combine_movables): Remove decls of unused variables.
+ (check_final_value): Remove decl of unused variable TEM.
+ (check_dbra_loop): Remove decls of unused variables.
+ (maybe_eliminate_biv): Remove decls of unused variables SET and V.
+ * reload.c (find_reloads_address): Remove two block-scope decls of
+ unused variable OLDREF.
+ * rtl.c (read_rtx): Remove decl of unused variable STRINGBUFSIZE.
+ * scan.c (get_token): Remove decl of unused variable QUOTE.
+ (get_token): Remove unused label AGAIN.
+ * sched.c (clear_units): Remove decl of unused variable UNIT.
+ (actual_hazard_this_instance): Remove decl of unused variable I.
+ (actual_hazard): Remove two block-scope decls of unused variable BEST.
+ (sched_analyze_1): Remove decls of unused variables OFFSET and BIT.
+ (sched_analyze): Remove decl of unused variable DEST.
+ (sched_note_set): Remove decl of unused variable J.
+ (create_reg_dead_note): Remove decl of unused variable BACKLINK.
+ (new_sometimes_live): Remove decl of unused variable I.
+ (schedule_block): Remove decls of unused variables LAST_NOTE and REGNO.
+ (schedule_insns): Remove decls of unused variables I and INSNS.
+ * sdbout.c (sdbout_symbol): Remove decl of unused variable LETTER.
+ (sdbout_type): Remove decl of unused variable TEM.
+ * toplev.c (compile_file): Remove unused label.
+ * tree.c (stabilize_reference_1): Remove decl of unused variable.
+ * unroll.c (unroll_loop): Remove decl of unused variable V.
+ (precondition_loop_p): Remove decls of unused variables.
+ (final_giv_value): Remove decl of unused variable CODE.
+
+Fri Mar 25 13:40:05 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (DBX_REGISTER_NUMBER): Fix numerous bugs in handling
+ of FP registers and the SAR register.
+
+Fri Mar 25 12:46:56 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * i386.md (movhi, movqi): Properly recognize unsigned forms of -1
+ for dec[bw] insns.
+
+ * expr.c (expand_expr, case ADDR_EXPR): Return const0_rtx if
+ taking address of an ERROR_MARK; also do some minor cleanup.
+
+ * calls.c (expand_call): Don't require both -W and -Winline to say
+ that call can't be inlined.
+ Warn if inlining is tried but fails.
+
+ * cccp.c (for_lint): Variable renamed from `lint'.
+
+ * expr.c (expand_expr, case ABS_EXPR): Compare with 0 of proper mode.
+
+ * fold-const.c (fold, case *_DIV_EXPR): Correct result when
+ product of constants overflows.
+
+ * alpha.c (output_prolog): Correctly compute floating-reg save
+ area offset.
+
+ * stmt.c (init_stmt_for_function): Clear stack_block_stack.
+
+ * reload1.c (reload): Fix error in last change; only check
+ against group reloads and check all reloads.
+
+Thu Mar 24 13:19:43 1994 Doug Evans (dje@cygnus.com)
+
+ * toplev.c (v_pedwarn_with_decl): Don't cause compilation to fail
+ from pedantic errors in system header files.
+
+Thu Mar 24 03:01:05 1994 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * config.sub: Add case for Bull dpx20.
+
+ * config/m68k/dpx2.h (CPP_PREDEFINES): Fix typo.
+
+Wed Mar 23 17:29:56 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * reload1.c (reload): Fix error in last change; compute MODE before
+ it's used.
+
+ * loop.c (get_condition): Exit if we don't recognize SET_SRC of
+ a SET that modifies OP0.
+
+ * combine.c (simplify_rtx, case FLOAT_TRUNCATE): Simplify
+ case of (float_truncate (abs (float_extend X))).
+
+Wed Mar 23 17:20:54 1994 Jim Wilson (wilson@cygnus.com)
+
+ * dbxout.c (dbxout_parms): For parameter living in psuedo-reg that
+ was optimized away, use declared type instead of passed type.
+
+ * mips.c (mips_asm_file_start): Add comment on TARGET_GP_OPT code.
+
+ * c-decl.c (init_decl_processing): Change builtin_next_arg type so
+ that it accepts any parameter instead of none.
+ * cp/decl.c (init_decl_processing): Likewise.
+ * expr.c (expand_builtin, BUILT_IN_NEXT_ARG case): Verify that
+ parameter is last named argument.
+ * gstdarg.h (va_start): Pass LASTARG as a parameter to
+ builtin_next_arg.
+ * va-h8300.h, va-i860.h, va-i960.h, va-mips.h, va-sparc.h
+ (va_start): Likewise.
+ * va-alpha.h (va_start): Add call to builtin_next_arg.
+ * va-clipper.h, va-m88k.h, va-pa.h, va-sparc.h (va_start):
+ Likewise.
+
+Tue Mar 22 18:57:54 1994 Jim Wilson (wilson@cygnus.com)
+
+ * iris5.h (MIPS_DEFAULT_GVALUE): Define to zero.
+ * mips.c (pic_address_needs_scratch): New function.
+ (override_options): Set flag_pic when TARGET_ABICALLS.
+ * mips.h (GO_IF_LEGITIMATE_ADDRESS): Also pretend that we have REG
+ plus CONST_INT addresses by deleting an else.
+ (CONSTANT_ADDRESS_P): When pic, don't accept addresses which are
+ symbol_ref plus a large integer.
+ (LEGITIMATE_PIC_OPERAND_P): Likewise.
+ (LEGITIMIZE_ADDRESS): When pic, convert addresses which are
+ symbol_reg plus a large integer, to reg plus a large integer.
+ (ASM_OUTPUT_ADDR_DIFF_ELT): Use .gpword instead of subtracting
+ labels.
+ * mips.md (movsi): Add special handling for constants which are
+ illegal addresses when pic.
+ (tablejump_internal1, tablejump_internal2): Emit .cpadd when
+ TARGET_ABICALLS. Adjust length to include .cpadd.
+
+ * mips.h (TRAMPOLINE_TEMPLATE): Add `move $25,$3' for when
+ TARGET_ABICALLS. Delete padding for 64 bit case. Adjust offsets.
+ (TRAMPOLINE_SIZE): Increase from 9 to 10 words for 32 bit case.
+ (INITIALIZE_TRAMPOLINE): Increase offsets by 4 bytes for 32 bit case.
+
+Tue Mar 22 15:46:42 1994 Michael Meissner (meissner@osf.org)
+
+ * i386/osfrose.h (HANDLE_PRAGMA_WEAK): Define in terms of
+ TARGET_ELF.
+ (ASM_OUTPUT_DEF): Provide a definition.
+
+Mon Mar 21 15:56:58 1994 Per Bothner (bothner@cygnus.com)
+
+ * fix-header.c: Make sstring buf extern (rather than "common").
+
+Mon Mar 21 17:45:56 1994 Doug Evans (dje@cygnus.com)
+
+ * configure: Accept and ignore --without-*.
+
+Mon Mar 21 17:05:25 1994 Jim Wilson (wilson@cygnus.com)
+
+ * dbxout.c (source_label_number): New variable.
+ (dbxout_source_file): Use it. Output an Ltext label.
+
+ * c-decl.c (duplicate_decls): When pedantic, warn when any static
+ declaraction follows a non-static.
+
+ * sparc.md (seq, sne, sgt, slt, sge, sle): Add support
+ for !TARGET_HARD_QUAD.
+
+Mon Mar 21 16:59:02 1994 Mike Collison (collison@chianti.sw.stratus.com)
+
+ * reload1.c (reload): More accurately compute nongroup needs.
+ (reloads_conflict): New function.
+
+Mon Mar 21 16:21:07 1994 Doug Evans (dje@cygnus.com)
+
+ * libgcc2.c (__builtin_saveregs): Fix return type.
+
+Mon Mar 21 07:37:13 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (preserve_temp_slots): If argument is REG, see if it
+ is address of a temp slot we know about.
+ * expr.c (expand_expr, case ADDR_EXPR): Update temp slot address
+ if we put it in a register; mark result as pointer.
+
+ * cse.c (FIXED_REGNO_P): Treate global regs as fixed.
+ (CHEAP_REGNO): Renamed from CHEAP_REG.
+ (CHEAP_REG): New macro; user var in hard reg is cheap.
+ (COST): Pass RTL to CHEAP_REG, not regno.
+ (rtx_cost, case REG): Likewise.
+
+Sun Mar 20 19:38:44 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * m68k/news.h (PRINT_OPERAND): Print float infinity
+ and NaN's as +/-99e999.
+
+Sun Mar 20 17:42:09 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * mips-tfile.c (update_headers): Align symbol table sections,
+ using ALIGN_SYMTABLE_OFFSET. Provide a default definition which
+ does no alignment.
+ * alpha.h (ALIGN_SYMTABLE_OFFSET): New macro.
+
+Sun Mar 20 06:38:41 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * emit_rtl.c (try_split): Rename third parameter as LAST.
+ Recursively call try_split for each new insn created.
+
+ * combine.c (mark_used_regs_combine): Correct typo.
+
+Sun Mar 20 06:28:23 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * vax.h (CHECK_FLOAT_VALUE): Add missing continuation character.
+ * tree.c (build_real): Add `overflow' var; pass to CHECK_FLOAT_VALUE.
+
+Sat Mar 19 17:44:14 1994 Jim Wilson (wilson@cygnus.com)
+
+ * expr.c (expand_expr, case ABS_EXPR): Fix typo in last change.
+
+Sat Mar 19 17:13:47 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * combine.c (newpat_used_regs): New variable.
+ (mark_used_regs_combine): New function.
+ (try_combine): Use them.
+ (reg_dead_at_p): Registers marked in newpat_used_regs must always be
+ considered to be live.
+
+Sat Mar 19 06:29:38 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * c-parse.in (attrib): Use `identifier' instead of `IDENTIFIER'
+ since names that are (e.g.) typedef names are still OK.
+
+ * m68k/next.h (GO_IF_INDEXABLE_BASE): Make compatible with m68k.h.
+
+ * genoutput.c (output_epilogue, insn_names): Write correct names
+ for patterns before first named pattern.
+
+ * nextstep.h (SELECT_SECTION): Fix typo (arg names) in last change.
+
+ * c-decl.c (grokdeclarator): Use signed version of `sizetype' for
+ type of array index.
+
+Sat Mar 19 06:25:39 1994 Stephen L Moshier (moshier@world.std.com)
+
+ * fold-const.c (const_binop): Avoid initialized aggregate
+ local variables, for antique compilers.
+
+Fri Mar 18 18:43:28 1994 Jim Wilson (wilson@cygnus.com)
+
+ * i386/osfrose.h (SELECT_SECTION): Variables go in readonly data
+ only if the initializer is constant.
+ * i386/svr3gas.h, m88k/m88k.h, mips/mips.h, nexstep.h,
+ rs6000/rs6000.h, sparc/sparc.h, svr3.h, svr4.h, vax/vms.h
+ (SELECT_SECTION): Likewise.
+ * varasm.c (assemble_variable): Likewise.
+
+Fri Mar 18 17:54:12 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * rs6000.md (divmodsi4, udivsi3, divsi3, udivmodsi4): Add AIX
+ common-mode cases.
+ (mulh_call, mull_call, divss_call, divus_call, quoss_call, quous_call):
+ AIX common-mode call patterns.
+ (ashlsi3): More TARGET_POWERPC to ! TARGET_POWER changes.
+ (addsf3, subsf3, mulsf3, divsf3, etc.): Change TARGET_POWER
+ to ! TARGET_POWERPC.
+ (fix_truncdfsi2): Use POWER/2 and PowerPC FP convert instruction.
+ (fpcvtsi): New pattern.
+ (mulsidi3): Add AIX common-mode case, add imul attribute to POWER
+ pattern, add PowerPC pattern, flag input operands as commutative.
+ (smulsi3_highpart): Add AIX common-mode case.
+ (movsi matcher): Add mtjmpr attribute to ! TARGET_POWER case.
+ (movsf): Clean up load from memory or integer register test.
+ (movdi matcher): Add FP register support.
+
+ * rs6000.c (common_mode_defined): New variable.
+ (output_prolog): Define external common-mode calls.
+
+ * rs6000.h (HARD_REGNO_MODE_OK): Allow DImode in FP registers.
+ (CONDITIONAL_REGISTER_USAGE): Delete ppcas mention from comment.
+ (RTX_COSTS): Costs based upon processor_type enum.
+
+Fri Mar 18 17:53:35 1994 Torbjorn Granlund (tege@cygnus.com)
+
+ * rs6000.md (smulsi3_highpart): New patterns.
+ (umulsi3_highpart_power): New pattern.
+
+Fri Mar 18 15:26:56 1994 Jim Wilson (wilson@cygnus.com)
+
+ * sol2.h (SELECT_RTX_SECTION): Delete.
+ * sysv4.h (SELECT_RTX_SECTION): Add.
+ (ASM_SPEC): Pass -K to assembler when PIC.
+
+ * cccp.c (before_system, last_before_system): New variables.
+ (main): Handle -isystem option. Insert -isystem directories in
+ search chain at first_system_include.
+ * gcc.c (include_prefix): New variable.
+ (process_command): Add path/include to include_prefix when see a
+ -Bpath option.
+ (do_spec_1, case 'I'): Pass include_prefix directories to cpp with
+ the -isystem option.
+
+ * loop.c (scan_loop): New variable loop_depth. Increment and
+ decrement on LOOP_BEG and LOOP_END notes. Only use LOOP_VTOP note
+ if loop_depth is zero.
+ (strength_reduce): Likewise.
+
+ * sparc/sparc.h (FIXUNS_TRUNCTFSI2_LIBCALL): Define.
+ * optabs.c (init_optabs): Use FIXUNS_TRUNCTFSI2_LIBCALL macro.
+
+Thu Mar 17 13:13:46 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * stor-layout.c (layout_type, case BOOLEAN_TYPE):
+ Set TREE_UNSIGNED unless TYPE_MIN_VALUE is negative.
+
+Thu Mar 17 18:36:34 1994 Jim Wilson (wilson@cygnus.com)
+
+ * c-common.c (shorten_compare): When simplify compare against
+ zero, check for restype_ptr unsigned instead of primop0 unsigned.
+
+ * calls.c (expand_call): Undo Feb 27 change. Set nregs to -1 for
+ normal case.
+
+Thu Mar 17 17:43:28 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.svr4: Define BYTE_ORDER in <sys/byteorder.h> as on
+ UnixWare 1.1.
+
+Thu Mar 17 06:02:24 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stor-layout.c (layout_type, case INTEGER_TYPE): Properly test for
+ nonnegative lower bound.
+
+Wed Mar 16 12:41:19 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * tree.c (build_nt, build_parse_node): Don't declare last
+ parameter to be register, since it is used in VA_START, which
+ may take its address.
+ * genattrtab.c (attr_printf): Likewise.
+
+Wed Mar 16 12:00:40 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * pa.h (INITIALIZE_TRAMPOLINE): Do not mask off high
+ bits of address passed to icacheflush.
+
+ * pa.h (WCHAR_TYPE): Use "unsigned int" by default.
+ (WCHAR_TYPE_SIZE): Change appropriately.
+ * pa-ghiux.h, pa-ghpux.h, pa-gux7.h, pa-hiux.h, pa-hpux.h,
+ pa-hpux7.h (WCHAR_TYPE): Delete definition.
+ (WCHAR_TYPE_SIZE): Likewise.
+ * pa-osf.h (WCHAR_TYPE): Override appropriately for OSF1.
+ (WCHAR_TYPE_SIZE): Likewise.
+
+ * pa.md (DImode lo_sum): Add earlyclobber for alternative one.
+
+ * pa.h (ASM_OUTPUT_ADDR_DIFF_ELT): Rewrite to match
+ ASM_OUTPUT_ADDR_VEC_ELT which is PIC-safe.
+
+Wed Mar 16 09:07:34 1994 Matthias Pfaller (leo@marco.de)
+
+ * ns32k.c (global_symbolic_reference_mentioned_p): Recurse only
+ if GET_CODE (op) == CONST.
+
+ * ns32k.h (FUNCTION_PROLOGUE): Load sb through r0 if TARGET_REGPARM
+ is false.
+
+Wed Mar 16 06:57:45 1994 Richard Kenner (kenner@vlsi1.ultra.nyu)
+
+ * emit-rtl.c (gen_lowpart_common, gen_highpart, operand_subword):
+ Test input against RTX for FP, AP, and SP, not same register number.
+
+ * expr.c (expand_expr): Update comments and fix formatting.
+ (expand_expr, case VAR_DECL, STRING_CST, CONSTRUCTOR): If
+ flag_force_addr, put address in register unless REG.
+ (expand_expr, case CONSTRUCTOR, CONVERT_EXPR): Make TARGET with
+ TMODE, if specified.
+ (expand_expr, case IN_EXPR): Clean up. Allow INDEX to be an
+ unsigned type. Always evaluate SET and INDEX in case of side effects.
+ (expand_expr, case CONVERT_EXPR): Use convert_modes to handle consts.
+ (expand_expr, case ABS_EXPR): Simplify processing of COMPLEX.
+ Compare with zero word-by-word if required.
+ (expand_expr, case ABS_EXPR, MIN_EXPR, COND_EXPR): Don't use TARGET
+ if not MODE.
+ (expand_expr, case TRUTH_*_EXPR): Modes of input and output must agree.
+ (expand_expr, case CONJ_EXPR): Remove redundant def of MODE.
+
+ * stor-layout.c (layout_record): If the place where we were going
+ to put a field changed, lay it out again.
+
+Tue Mar 15 07:53:36 1994 Paul A Vixie (paul@vix.com)
+
+ * Makefile.in (stmp-fixproto): Add missing "-" in front of "if".
+ (install-headers-tar, gcc.xtar): Use "-" in front of tar options.
+
+Mon Mar 14 16:28:16 1994 Paul Eggert (eggert@twinsun.com)
+
+ * fixincludes: Insert newlines just before the end of 'sed'
+ command strings if the last 'sed' command is 'a' or 'i';
+ BSDI 1.1 'sed' needs this.
+
+Mon Mar 14 15:46:29 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * fixinc.svr4: Don't name variables in mmap prototype.
+
+Mon Mar 14 15:16:38 1994 Doug Evans (dje@cygnus.com)
+
+ * objc/Makefile (*.o): Add explicit dependencies for Sun's VPATH.
+
+Mon Mar 14 05:11:42 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * function.c (assign_parms, expand_function_start): Properly
+ set MEM_IN_STRUCT_P for DECL_RTL of function result.
+
+ * c-decl.c (grokdeclarator): Convert to sizetype when manipulating
+ size of array and use care to avoid mixed-type operations.
+
+ * expr.c (expand_expr): Don't call bc_expand_expr
+ if EXPAND_INITIALIZER.
+ * bc-optab.c (bc_expand_{binary,unary}_operation): Add missing
+ args to call to expand_expr.
+ * stmt.c (bc_expand_start_cond): Set exit_label if not EXITFLAG.
+ (bc_expand_end_bindings): Only define exit_label if set.
+ Don't pop nesting_stack.
+ * varasm.c (output_constant_def): Do hashing and make label
+ even if bytecode.
+ * bc-emit.c (bc_seg_write): Don't make unaligned reference to
+ seg->data.
+ * toplev.c (compile_file): Call bc_write_file here and pass
+ asm_out_file, not stdout.
+ (main): Don't call bc_write_file here.
+ Fix wording on error if -fbytecode specified on unsupported target.
+
+ * fold-const.c (fold, associate): If -ffast-math, associate FP mults.
+ (fold, case RDIV_EXPR): Split case; ignore division by 1.
+ If -ffast-math, convert to multply by reciprocal.
+ (fold, case *_DIV_EXPR): Simplify A/C1/C2.
+
+ * tree.h (tree_int_cst_sgn): New declaration.
+ * tree.c (tree_int_cst_sgn): New function.
+ * c-decl.c (finish_{decl,struct,enum}): Call it.
+ * c-typeck.c (build_binary_op, pop_init_level): Likewise.
+ (output_pending_init_elements): Likewise.
+ * expr.c (expand_builtin, case BUILT_IN_RETURN_ADDRESS): Likewise.
+ * fold-const.c (fold): Likewise.
+ (fold, case *_DIV_EXPR): Add missing conversion.
+ * convert.c (convert_to_integer): Convert integer_one_node to
+ proper type before tree_int_cst_lt call.
+
+Sun Mar 13 06:46:13 1994 Wolfgang Stukenbrock (wgstuken@immd4.informatik.uni-erlangen.de)
+
+ * gcc.c (do_spec_1): Don't duplicate a macro starting with '__'.
+
+Sun Mar 13 05:54:00 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * convert.c (convert_to_integer): When changing type of truthvalue
+ operation, change types of inputs too.
+ * c-common.c (TRUTH_*_EXPR): Convert to integer_type_node.
+
+ * tree.c: Include setjmp.h.
+ (build_real_from_int_cst): Propagate overflow flags and
+ establish float handler.
+ (build_complex): Propagate overflow flags.
+ * cse.c (simplify_binary_operation): Protect real_value_truncate
+ inside handler.
+ * fold-const.c (force_fit_value): Operate on REAL_CST as well.
+ (real_value_truncate): Don't use its own handler.
+ (const_binop): Set overflow on FP error and call force_fit_type.
+ (fold_convert): Likewise.
+ * c-common.c (constant_expression_warning, overflow_warning):
+ Handle REAL_CST and COMPLEX_CST.
+ * convex.h, convex.c, fx80.h, tahoe.h, vax.h, vax.c: Add OVERFLOW
+ operand to CHECK_FLOAT_VALUE.
+
+ * jump.c (rtx_equal_for_thread_p): Correct error in previous
+ change; add missing arg in recursive call.
+
+Sat Mar 12 19:42:03 1994 H.J. Lu (hjl@nynexst.com)
+
+ * configure (gxx-include-dir): Replacement for gxx-prefix.
+ * Makefile.in (gxx_include_dir): Likewise, for gxx_prefix.
+
+ * i386/linux.h (NO_IMPLICIT_EXTERN_C): Defined.
+
+Sat Mar 12 07:42:12 1994 Paul Eggert (eggert@twinsun.com)
+
+ * Makefile.in (stmp-fixproto): Work around a `make' bug in BSDI 1.1.
+
+Sat Mar 12 07:38:08 1994 Klaus Kaempf (kkaempf@didymus.rmi.de)
+
+ * bi-run.h: Properly test BYTES_BIG_ENDIAN.
+ * bytecode.h: Likewise for WORDS_BIG_ENDIAN.
+
+ * cccp.c (do_include, hack-vms_include_specification): Change handling
+ of '#include filename' to be compatible with VAX-C.
+
+ * genemit.c (gen_exp): Added \n to printf to shorten line for VAX-C.
+
+Sat Mar 12 06:42:38 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * expr.h (emit_float_lib_cmp): Add declaration here.
+ * optabs.c: Don't define emit_float_lib_cmp now that no longer static.
+
+ * jump.c: Add prototypes for static functions.
+ (jump_optimize, delete_insn): Use GET_RTX_CLASS to test for insns.
+ (mark_jump_label): Delete dead code.
+ (delete_computation, redirect_tablejump): No longer static.
+
+Fri Mar 11 14:40:40 1994 Jim Wilson (wilson@cygnus.com)
+
+ * lite.h (TARGET_DEFAULT): Use parentheses.
+ * sparc.h (TARGET_HARD_QUAD): New macro.
+ (TARGET_SWITCHES): Add hard-quad-float, soft-quad-float.
+ (TARGET_DEFAULT): Use parentheses.
+ ({ADDTF3,SUBTF3,MULTF3,DIVTF3,SQRTTF2,FLOATSITF2,FIX_TRUNCTFSI2,
+ EXTENDSFTF2,TRUNCTFSF2,EXTENDDFTF2,TRUNCTFDF2,EQTF2,NETF2,GTTF2,
+ GETF2,LTTF2,LETF2}_LIBCALL): New macros.
+ * sparc.md (sleu+4, sleu+7, extendsftf2, extenddftf2, trunctfsf2,
+ trunctfdf2, floatsitf2, fix_trunctfsi2, addtf3, subtf3, multf3,
+ divtf3, sqrttf2): Disable when -msoft-quad-float.
+ (beq, bne, bgt, blt, bge, ble): When -msoft-quad-float, account
+ for return value of SPARC ABI routines that differs from libgcc.
+ * flow.c (libcall_dead_p): Fail not abort for libcall that returns
+ value via invisible pointer.
+ * optabs.c (emit_float_lib_cmp): Make non static.
+ (init_optabs): Use {ADDTF3,SUBTF3,MULTF3,DIVTF3,SQRTTF2,FLOATSITF2,
+ FIX_TRUNCTFSI2,EXTENDSFTF2,TRUNCTFSF2,EXTENDDFTF2,TRUNCTFDF2,EQTF2,
+ NETF2,GTTF2,GETF2,LTTF2,LETF2}_LIBCALL macros.
+
+ * sparc/sparc.h (STARTING_FRAME_OFFSET): Depend on
+ LONG_DOUBLE_TYPE_SIZE.
+
+Fri Mar 11 08:01:54 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * rtl.h, tree.h, g++.c, gcc.c (PVPROTO): New macro.
+ * combine.c, expr.h, rtl.h, tree.h, gcc.c: Use it for varargs protos..
+ * genattrtab.c, mips-tfile.c, output.h, toplev.c: Likewise.
+
+Fri Mar 11 07:21:36 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * emit-rtl.c (copy_rtx_if_shared, case LABEL_REF): Can't share.
+ * jump.c (jump_optimize): Delete REG_LABEL note if label no
+ longer in insn.
+
+ * c-decl.c (finish_decl): When preserving an initializer, ensure
+ its type is on a good obstack.
+
+Thu Mar 10 15:32:42 1994 Mike Collison (collison@sw.stratus.com)
+
+ * reload1.c (emit_reload_insns): When clearing reg_last_reload_reg,
+ clear all hard regs in reload_out.
+
+Thu Mar 10 15:23:10 1994 Hallvard B Furuseth (hbf@durin.uio.no)
+
+ * collect2.c (dup2): Catch `dup' failure. Return correct value.
+
+Thu Mar 10 15:18:08 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * gcc.c ([__MSDOS__]): Use #ifdef, not #if.
+ * collect2.c ([__MSDOS__]): Likewise.
+
+Thu Mar 10 15:03:01 1994 Paul Eggert (eggert@twinsun.com)
+
+ * cccp.c (main, finclude, check_precompiled): When safe_read
+ returns a partial buffer, this means EOF has been reached;
+ don't try to read any more.
+
+Wed Mar 9 18:47:29 1994 Paul Eggert (eggert@twinsun.com)
+
+ * real.c (target_negative): -0 counts as negative.
+
+Wed Mar 9 15:32:01 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * m68k.md (movqi): Disable special-case of stack push if operand
+ one is an address register.
+
+ * c-typeck.c (pointer_int_sum): Multiplication should be
+ done signed.
+ (pointer_diff): Likewise the division.
+ * fold-const.c (fold, case MULT_EXPR): Simplify MULT_EXPR of an
+ EXACT_DIV_EXPR with the same divisor as our multiplicand.
+
+ * jump.c (rtx_equal_for_thread_p): Commutative operations
+ are identical if the operands match in the opposite order.
+ * sched.c (rtx_equal_for_memref_p): Likewise.
+
+Wed Mar 9 12:07:29 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
+
+ * cse.c (simplify_relational_operation): Fix typos; use
+ ARG_POINTER_REGNUM and FRAME_POINTER_REGNUM in condtionals.
+
+Tue Mar 8 16:12:07 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * explow.c (break_out_memory_refs): Don't call mark_reg_pointer
+ here.
+ (memory_address): Call it here if X changed and is now a REG
+ or REG + CONST_INT.
+
+Tue Mar 8 15:57:29 1994 Jim Wilson (wilson@cygnus.com)
+
+ * c-decl.c (finish_decl): When saving/discarding initializers,
+ don't check TREE_PERMANENT and TREE_STATIC.
+ (finish_decl, finish_function): Pass new argument to
+ permanent_allocation.
+ * cp/decl.c (finish_function): Likewise.
+ * cp/decl2.c (write_vtable_entries, finish_file): Likewise.
+ * toplev.c (compile_file): Likewise.
+ * function.h (struct function): Add momentary_function_firstobj
+ field.
+ * tree.c (momentary_function_firstobj): New variable.
+ (init_obstack): Set it.
+ (save_tree_status): Save it and set it.
+ (restore_tree_status): Use it and restore it.
+ (permanent_allocation): New parameter function_end. Clear
+ momentary_obstack to momentary_function_firstobj if true.
+ (preserve_initializer): Set base field of every momentary
+ level on the momentary stack to new momentary_firstobj.
+ (pop_momentary): Only free back to previous base.
+ * tree.h (permanent_allocation): Add prototype.
+
+Mon Mar 7 20:10:56 1994 Jim Wilson (wilson@cygnus.com)
+
+ * iris4gl.h: Rewrite. Include iris4loser.h not iris4-gdb.h.
+ Define PREFERRED_DEBUGGING_TYPE not ASM_SPEC.
+
+ * bsd-4.h (LINK_SPEC): Do not depend on gas. Don't interpret -EB
+ and -EL options, but do pass them.
+ * bsd-5.h (LINK_SPEC): Likewise.
+ * decl-osf1.h (LINK_SPEC): Likewise.
+ * iris5.h (LINK_SPEC): Likewise.
+ * mips-5.h (LINK_SPEC): Likewise.
+ * mips.h (LINK_SPEC): Likewise.
+ * svr3-4.h (LINK_SPEC): Likewise.
+ * svr3-5.h (LINK_SPEC): Likewise.
+ * svr4-4.h (LINK_SPEC): Likewise.
+ * svr4-5.h (LINK_SPEC): Likewise.
+
+ * dec-bsd.h (LINK_SPEC): Pass all normal linker options to gld.
+ (ASM_SPEC): Pass all normal assembler options to gas.
+ * osfrose.h (LINK_SPEC): Likewise.
+ (ASM_SPEC): Likewise.
+
+ * mips.h (ASM_SPEC): Make definition depend on whether or
+ not the default assembler is gas. Pass all normal assembler
+ options to gas.
+ * iris4loser.h (ASM_SPEC): Likewise. Pass -O0 if the assembler is
+ not gas.
+
+ * iris3.h (ASM_SPEC, LINK_SPEC): Delete.
+ * news4.h (ASM_SPEC, LINK_SPEC): Delete.
+ * news5.h (LINK_SPEC): Delete.
+ * nws3250v4.h (ASM_SPEC, LINK_SPEC): Delete.
+ * ultrix.h (ASM_SPEC, LINK_SPEC): Delete.
+
+ * mips.h (ASM_FINAL_SPEC): Cross compiling does not presume gas.
+
+ * osfrose.h (SIZE_TYPE): Delete.
+ (MAX_WCHAR_TYPE_SIZE): Define.
+
+ * calls.c (expand_call): For pcc_struct_value case, set
+ MEM_IN_STRUCT_P correctly on target.
+
+ * Makefile.in (mostlyclean): Don't explicitly delete ld.
+
+Mon Mar 7 20:06:38 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips-tdump.c (print_symbol): The index field of a global symbol
+ is the symbol table index of the corresponding local symbol, not
+ an index into the aux table.
+ (print_file_desc): Print out size of line number information
+ rather than repeating line number count. The cbLineOffset field
+ of a PDR is relative to the cbLineOffset field of the FDR. Also,
+ when computing line_end of the last PDR, use cbLineOffset, not
+ ilineBase.
+
+Mon Mar 7 17:42:35 1994 H.J. Lu (hjl@nynexst.com)
+
+ * Makefile.in (gxx_prefix): New; default to $(libdir).
+ (GPLUSPLUS_INCLUDE_DIR): Change to $(gxx_prefix)/g++-include.
+ * configure (gxx_prefix): New; default to $(libdir).
+
+ * i386/linux.h (GPLUSPLUS_INCLUDE_DIR): Deleted.
+ (STARTFILE_SPEC): Remove "-nojump".
+
+Mon Mar 7 17:06:08 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
+
+ * i386/xm-linux.h (malloc): Remove disabled code.
+
+Mon Mar 7 13:27:09 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * cccp.c (no_record_file): New variable.
+ (main): Set it for -imacros and -include files.
+ (do_endif): Don't call record_control_macro for -include or -imacros
+ files or files included from -imacros.
+
+Sun Mar 6 21:48:51 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * config.sub: Accept freebsd as OS.
+
+Sun Mar 6 14:40:00 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * stupid.c: Add prototypes for static functions.
+ (last_{jump,label}_suid): Deleted; all uses deleted.
+ (reg_crosses_blocks): Likewise.
+ (stupid_life_analysis): Only allocate MAX_SUID entries
+ of after_insn_hard_regs.
+ Use GET_RTX_CLASS when possible.
+ Initialize all of reg_renumber.
+ Use reg_alternate_class when reg not available in preferred class.
+ (stupid_find_reg): Delete argument CROSSES_BLOCKS.
+
+ * stupid.c (stupid_mark_refs): If setting reg_where_dead, set
+ regs_live so we don't later clobber it.
+
+ * recog.c (constrain_operands): Properly handle '#' in constraint.
+
+ * combine.c (subst): Split into five functions.
+ (simplify_{rtx,if_then_else,set,logical}): New functions.
+
+Sun Mar 6 13:12:48 1994 James Van Artsdalen (james at bigtex.cactus.org)
+
+ * reg-stack.c (find_blocks): Undo previous change to block
+ delineation algorithm.
+ (reg_to_stack): Make algorithm identical to that in find_blocks.
+
+Sat Mar 5 16:27:58 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * genattrtab.c (attr_printf): Remove `register' from decl of FMT.
+ * tree.c (build_nt, build_parse_node): Remove `register' from decl
+ of CODE.
+
+ * reload.c (get_secondary_mem): Call SECONDARY_MEMORY_NEEDED_MODE
+ if it is defined.
+ * alpha.h (SECONDARY_MEMORY_NEEDED_MODE): New macro.
+ * alpha.c (output_{pro,epi}log): Round var size to quadword boundary.
+
+ * alpha.md (unaligned_{load,store}hi): Clear low bit of
+ address before using as operand to extwl, mskwl, and inswl.
+ (movhi, reload_inhi, reload_outhi): Pass extra scratch value.
+
+Fri Mar 4 17:16:23 1994 Leonard Norrgard (vinsci@nic.funet.fi)
+
+ * c-lex.c: Delete gperf-generated source from here.
+ * c-gperf.h: New file; contains just gperf output.
+ * Makefile.in (c-gperf.h): New rule.
+ (c-lex.o): Depends on c-gperf.h.
+ (realclean): Delete c-gperf.h.
+ (distdir): Build c-gperf.h.
+ (diff): Omit differences in c-gperf.h.
+
+Fri Mar 4 06:35:26 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * svr4.h, m88k.h (ASM_FINISH_DECLARE_OBJECT): Set
+ size_directive_output to 1.
+
+ * reload1.c (emit_reload_insns): Don't call gen_input_reload if
+ src and dest are identical.
+
+Thu Mar 3 15:32:55 1994 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ * alpha.md (mskXl): Add missing NOT in patterns.
+
+ * t-m88k: Remove added realclean rule.
+
+See ChangeLog.8 for earlier changes.
diff --git a/gcc/INSTALL b/gcc/INSTALL
new file mode 100644
index 00000000000..d4ac7c5a2ea
--- /dev/null
+++ b/gcc/INSTALL
@@ -0,0 +1,1906 @@
+This file documents the installation of the GNU compiler. Copyright
+(C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc. You
+may copy, distribute, and modify it freely as long as you preserve this
+copyright notice and permission notice.
+
+Installing GNU CC
+*****************
+
+ Here is the procedure for installing GNU CC on a Unix system. See
+*Note VMS Install::, for VMS systems. In this section we assume you
+compile in the same directory that contains the source files; see *Note
+Other Dir::, to find out how to compile in a separate directory on Unix
+systems.
+
+ You cannot install GNU C by itself on MSDOS; it will not compile
+under any MSDOS compiler except itself. You need to get the complete
+compilation package DJGPP, which includes binaries as well as sources,
+and includes all the necessary compilation tools and libraries.
+
+ 1. If you have built GNU CC previously in the same directory for a
+ different target machine, do `make distclean' to delete all files
+ that might be invalid. One of the files this deletes is
+ `Makefile'; if `make distclean' complains that `Makefile' does not
+ exist, it probably means that the directory is already suitably
+ clean.
+
+ 2. On a System V release 4 system, make sure `/usr/bin' precedes
+ `/usr/ucb' in `PATH'. The `cc' command in `/usr/ucb' uses
+ libraries which have bugs.
+
+ 3. Specify the host, build and target machine configurations. You do
+ this by running the file `configure'.
+
+ The "build" machine is the system which you are using, the "host"
+ machine is the system where you want to run the resulting compiler
+ (normally the build machine), and the "target" machine is the
+ system for which you want the compiler to generate code.
+
+ If you are building a compiler to produce code for the machine it
+ runs on (a native compiler), you normally do not need to specify
+ any operands to `configure'; it will try to guess the type of
+ machine you are on and use that as the build, host and target
+ machines. So you don't need to specify a configuration when
+ building a native compiler unless `configure' cannot figure out
+ what your configuration is or guesses wrong.
+
+ In those cases, specify the build machine's "configuration name"
+ with the `--build' option; the host and target will default to be
+ the same as the build machine. (If you are building a
+ cross-compiler, see *Note Cross-Compiler::.)
+
+ Here is an example:
+
+ ./configure --build=sparc-sun-sunos4.1
+
+ A configuration name may be canonical or it may be more or less
+ abbreviated.
+
+ A canonical configuration name has three parts, separated by
+ dashes. It looks like this: `CPU-COMPANY-SYSTEM'. (The three
+ parts may themselves contain dashes; `configure' can figure out
+ which dashes serve which purpose.) For example,
+ `m68k-sun-sunos4.1' specifies a Sun 3.
+
+ You can also replace parts of the configuration by nicknames or
+ aliases. For example, `sun3' stands for `m68k-sun', so
+ `sun3-sunos4.1' is another way to specify a Sun 3. You can also
+ use simply `sun3-sunos', since the version of SunOS is assumed by
+ default to be version 4. `sun3-bsd' also works, since `configure'
+ knows that the only BSD variant on a Sun 3 is SunOS.
+
+ You can specify a version number after any of the system types,
+ and some of the CPU types. In most cases, the version is
+ irrelevant, and will be ignored. So you might as well specify the
+ version if you know it.
+
+ See *Note Configurations::, for a list of supported configuration
+ names and notes on many of the configurations. You should check
+ the notes in that section before proceeding any further with the
+ installation of GNU CC.
+
+ There are four additional options you can specify independently to
+ describe variant hardware and software configurations. These are
+ `--with-gnu-as', `--with-gnu-ld', `--with-stabs' and `--nfp'.
+
+ `--with-gnu-as'
+ If you will use GNU CC with the GNU assembler (GAS), you
+ should declare this by using the `--with-gnu-as' option when
+ you run `configure'.
+
+ Using this option does not install GAS. It only modifies the
+ output of GNU CC to work with GAS. Building and installing
+ GAS is up to you.
+
+ Conversely, if you *do not* wish to use GAS and do not specify
+ `--with-gnu-as' when building GNU CC, it is up to you to make
+ sure that GAS is not installed. GNU CC searches for a
+ program named `as' in various directories; if the program it
+ finds is GAS, then it runs GAS. If you are not sure where
+ GNU CC finds the assembler it is using, try specifying `-v'
+ when you run it.
+
+ The systems where it makes a difference whether you use GAS
+ are
+ `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv',
+ `i386-ANY-isc',
+ `i860-ANY-bsd', `m68k-bull-sysv', `m68k-hp-hpux',
+ `m68k-sony-bsd',
+ `m68k-altos-sysv', `m68000-hp-hpux', `m68000-att-sysv',
+ `ANY-lynx-lynxos', and `mips-ANY'). On any other system,
+ `--with-gnu-as' has no effect.
+
+ On the systems listed above (except for the HP-PA, for ISC on
+ the 386, and for `mips-sgi-irix5.*'), if you use GAS, you
+ should also use the GNU linker (and specify `--with-gnu-ld').
+
+ `--with-gnu-ld'
+ Specify the option `--with-gnu-ld' if you plan to use the GNU
+ linker with GNU CC.
+
+ This option does not cause the GNU linker to be installed; it
+ just modifies the behavior of GNU CC to work with the GNU
+ linker. Specifically, it inhibits the installation of
+ `collect2', a program which otherwise serves as a front-end
+ for the system's linker on most configurations.
+
+ `--with-stabs'
+ On MIPS based systems and on Alphas, you must specify whether
+ you want GNU CC to create the normal ECOFF debugging format,
+ or to use BSD-style stabs passed through the ECOFF symbol
+ table. The normal ECOFF debug format cannot fully handle
+ languages other than C. BSD stabs format can handle other
+ languages, but it only works with the GNU debugger GDB.
+
+ Normally, GNU CC uses the ECOFF debugging format by default;
+ if you prefer BSD stabs, specify `--with-stabs' when you
+ configure GNU CC.
+
+ No matter which default you choose when you configure GNU CC,
+ the user can use the `-gcoff' and `-gstabs+' options to
+ specify explicitly the debug format for a particular
+ compilation.
+
+ `--with-stabs' is meaningful on the ISC system on the 386,
+ also, if `--with-gas' is used. It selects use of stabs
+ debugging information embedded in COFF output. This kind of
+ debugging information supports C++ well; ordinary COFF
+ debugging information does not.
+
+ `--with-stabs' is also meaningful on 386 systems running
+ SVR4. It selects use of stabs debugging information embedded
+ in ELF output. The C++ compiler currently (2.6.0) does not
+ support the DWARF debugging information normally used on 386
+ SVR4 platforms; stabs provide a workable alternative. This
+ requires gas and gdb, as the normal SVR4 tools can not
+ generate or interpret stabs.
+
+ `--nfp'
+ On certain systems, you must specify whether the machine has
+ a floating point unit. These systems include
+ `m68k-sun-sunosN' and `m68k-isi-bsd'. On any other system,
+ `--nfp' currently has no effect, though perhaps there are
+ other systems where it could usefully make a difference.
+
+ The `configure' script searches subdirectories of the source
+ directory for other compilers that are to be integrated into GNU
+ CC. The GNU compiler for C++, called G++ is in a subdirectory
+ named `cp'. `configure' inserts rules into `Makefile' to build
+ all of those compilers.
+
+ Here we spell out what files will be set up by `configure'.
+ Normally you need not be concerned with these files.
+
+ * A file named `config.h' is created that contains a `#include'
+ of the top-level config file for the machine you will run the
+ compiler on (*note The Configuration File:
+ (gcc.info)Config.). This file is responsible for defining
+ information about the host machine. It includes `tm.h'.
+
+ The top-level config file is located in the subdirectory
+ `config'. Its name is always `xm-SOMETHING.h'; usually
+ `xm-MACHINE.h', but there are some exceptions.
+
+ If your system does not support symbolic links, you might
+ want to set up `config.h' to contain a `#include' command
+ which refers to the appropriate file.
+
+ * A file named `tconfig.h' is created which includes the
+ top-level config file for your target machine. This is used
+ for compiling certain programs to run on that machine.
+
+ * A file named `tm.h' is created which includes the
+ machine-description macro file for your target machine. It
+ should be in the subdirectory `config' and its name is often
+ `MACHINE.h'.
+
+ * The command file `configure' also constructs the file
+ `Makefile' by adding some text to the template file
+ `Makefile.in'. The additional text comes from files in the
+ `config' directory, named `t-TARGET' and `x-HOST'. If these
+ files do not exist, it means nothing needs to be added for a
+ given target or host.
+
+ 4. The standard directory for installing GNU CC is `/usr/local/lib'.
+ If you want to install its files somewhere else, specify
+ `--prefix=DIR' when you run `configure'. Here DIR is a directory
+ name to use instead of `/usr/local' for all purposes with one
+ exception: the directory `/usr/local/include' is searched for
+ header files no matter where you install the compiler. To override
+ this name, use the `--local-prefix' option below.
+
+ 5. Specify `--local-prefix=DIR' if you want the compiler to search
+ directory `DIR/include' for locally installed header files
+ *instead* of `/usr/local/include'.
+
+ You should specify `--local-prefix' *only* if your site has a
+ different convention (not `/usr/local') for where to put
+ site-specific files.
+
+ *Do not* specify `/usr' as the `--local-prefix'! The directory
+ you use for `--local-prefix' *must not* contain any of the
+ system's standard header files. If it did contain them, certain
+ programs would be miscompiled (including GNU Emacs, on certain
+ targets), because this would override and nullify the header file
+ corrections made by the `fixincludes' script.
+
+ 6. Make sure the Bison parser generator is installed. (This is
+ unnecessary if the Bison output files `c-parse.c' and `cexp.c' are
+ more recent than `c-parse.y' and `cexp.y' and you do not plan to
+ change the `.y' files.)
+
+ Bison versions older than Sept 8, 1988 will produce incorrect
+ output for `c-parse.c'.
+
+ 7. If you have chosen a configuration for GNU CC which requires other
+ GNU tools (such as GAS or the GNU linker) instead of the standard
+ system tools, install the required tools in the build directory
+ under the names `as', `ld' or whatever is appropriate. This will
+ enable the compiler to find the proper tools for compilation of
+ the program `enquire'.
+
+ Alternatively, you can do subsequent compilation using a value of
+ the `PATH' environment variable such that the necessary GNU tools
+ come before the standard system tools.
+
+ 8. Build the compiler. Just type `make LANGUAGES=c' in the compiler
+ directory.
+
+ `LANGUAGES=c' specifies that only the C compiler should be
+ compiled. The makefile normally builds compilers for all the
+ supported languages; currently, C, C++ and Objective C. However,
+ C is the only language that is sure to work when you build with
+ other non-GNU C compilers. In addition, building anything but C
+ at this stage is a waste of time.
+
+ In general, you can specify the languages to build by typing the
+ argument `LANGUAGES="LIST"', where LIST is one or more words from
+ the list `c', `c++', and `objective-c'. If you have any
+ additional GNU compilers as subdirectories of the GNU CC source
+ directory, you may also specify their names in this list.
+
+ Ignore any warnings you may see about "statement not reached" in
+ `insn-emit.c'; they are normal. Also, warnings about "unknown
+ escape sequence" are normal in `genopinit.c' and perhaps some
+ other files. Likewise, you should ignore warnings about "constant
+ is so large that it is unsigned" in `insn-emit.c' and
+ `insn-recog.c' and a warning about a comparison always being zero
+ in `enquire.o'. Any other compilation errors may represent bugs in
+ the port to your machine or operating system, and should be
+ investigated and reported.
+
+ Some commercial compilers fail to compile GNU CC because they have
+ bugs or limitations. For example, the Microsoft compiler is said
+ to run out of macro space. Some Ultrix compilers run out of
+ expression space; then you need to break up the statement where
+ the problem happens.
+
+ 9. If you are building a cross-compiler, stop here. *Note
+ Cross-Compiler::.
+
+ 10. Move the first-stage object files and executables into a
+ subdirectory with this command:
+
+ make stage1
+
+ The files are moved into a subdirectory named `stage1'. Once
+ installation is complete, you may wish to delete these files with
+ `rm -r stage1'.
+
+ 11. If you have chosen a configuration for GNU CC which requires other
+ GNU tools (such as GAS or the GNU linker) instead of the standard
+ system tools, install the required tools in the `stage1'
+ subdirectory under the names `as', `ld' or whatever is
+ appropriate. This will enable the stage 1 compiler to find the
+ proper tools in the following stage.
+
+ Alternatively, you can do subsequent compilation using a value of
+ the `PATH' environment variable such that the necessary GNU tools
+ come before the standard system tools.
+
+ 12. Recompile the compiler with itself, with this command:
+
+ make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2"
+
+ This is called making the stage 2 compiler.
+
+ The command shown above builds compilers for all the supported
+ languages. If you don't want them all, you can specify the
+ languages to build by typing the argument `LANGUAGES="LIST"'. LIST
+ should contain one or more words from the list `c', `c++',
+ `objective-c', and `proto'. Separate the words with spaces.
+ `proto' stands for the programs `protoize' and `unprotoize'; they
+ are not a separate language, but you use `LANGUAGES' to enable or
+ disable their installation.
+
+ If you are going to build the stage 3 compiler, then you might
+ want to build only the C language in stage 2.
+
+ Once you have built the stage 2 compiler, if you are short of disk
+ space, you can delete the subdirectory `stage1'.
+
+ On a 68000 or 68020 system lacking floating point hardware, unless
+ you have selected a `tm.h' file that expects by default that there
+ is no such hardware, do this instead:
+
+ make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2 -msoft-float"
+
+ 13. If you wish to test the compiler by compiling it with itself one
+ more time, install any other necessary GNU tools (such as GAS or
+ the GNU linker) in the `stage2' subdirectory as you did in the
+ `stage1' subdirectory, then do this:
+
+ make stage2
+ make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2"
+
+ This is called making the stage 3 compiler. Aside from the `-B'
+ option, the compiler options should be the same as when you made
+ the stage 2 compiler. But the `LANGUAGES' option need not be the
+ same. The command shown above builds compilers for all the
+ supported languages; if you don't want them all, you can specify
+ the languages to build by typing the argument `LANGUAGES="LIST"',
+ as described above.
+
+ If you do not have to install any additional GNU tools, you may
+ use the command
+
+ make bootstrap LANGUAGES=LANGUAGE-LIST BOOT_CFLAGS=OPTION-LIST
+
+ instead of making `stage1', `stage2', and performing the two
+ compiler builds.
+
+ 14. Then compare the latest object files with the stage 2 object
+ files--they ought to be identical, aside from time stamps (if any).
+
+ On some systems, meaningful comparison of object files is
+ impossible; they always appear "different." This is currently
+ true on Solaris and some systems that use ELF object file format.
+ On some versions of Irix on SGI machines and DEC Unix (OSF/1) on
+ Alpha systems, you will not be able to compare the files without
+ specifying `-save-temps'; see the description of individual
+ systems above to see if you get comparison failures. You may have
+ similar problems on other systems.
+
+ Use this command to compare the files:
+
+ make compare
+
+ This will mention any object files that differ between stage 2 and
+ stage 3. Any difference, no matter how innocuous, indicates that
+ the stage 2 compiler has compiled GNU CC incorrectly, and is
+ therefore a potentially serious bug which you should investigate
+ and report.
+
+ If your system does not put time stamps in the object files, then
+ this is a faster way to compare them (using the Bourne shell):
+
+ for file in *.o; do
+ cmp $file stage2/$file
+ done
+
+ If you have built the compiler with the `-mno-mips-tfile' option on
+ MIPS machines, you will not be able to compare the files.
+
+ 15. Install the compiler driver, the compiler's passes and run-time
+ support with `make install'. Use the same value for `CC',
+ `CFLAGS' and `LANGUAGES' that you used when compiling the files
+ that are being installed. One reason this is necessary is that
+ some versions of Make have bugs and recompile files gratuitously
+ when you do this step. If you use the same variable values, those
+ files will be recompiled properly.
+
+ For example, if you have built the stage 2 compiler, you can use
+ the following command:
+
+ make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="LIST"
+
+ This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1',
+ `cpp' and `libgcc.a' in the directory
+ `/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the
+ compiler driver program looks for them. Here TARGET is the target
+ machine type specified when you ran `configure', and VERSION is
+ the version number of GNU CC. This naming scheme permits various
+ versions and/or cross-compilers to coexist.
+
+ This also copies the driver program `xgcc' into
+ `/usr/local/bin/gcc', so that it appears in typical execution
+ search paths.
+
+ On some systems, this command causes recompilation of some files.
+ This is usually due to bugs in `make'. You should either ignore
+ this problem, or use GNU Make.
+
+ *Warning: there is a bug in `alloca' in the Sun library. To avoid
+ this bug, be sure to install the executables of GNU CC that were
+ compiled by GNU CC. (That is, the executables from stage 2 or 3,
+ not stage 1.) They use `alloca' as a built-in function and never
+ the one in the library.*
+
+ (It is usually better to install GNU CC executables from stage 2
+ or 3, since they usually run faster than the ones compiled with
+ some other compiler.)
+
+ 16. If you're going to use C++, it's likely that you need to also
+ install the libg++ distribution. It should be available from the
+ same place where you got the GNU C distribution. Just as GNU C
+ does not distribute a C runtime library, it also does not include
+ a C++ run-time library. All I/O functionality, special class
+ libraries, etc., are available in the libg++ distribution.
+
+Configurations Supported by GNU CC
+==================================
+
+ Here are the possible CPU types:
+
+ 1750a, a29k, alpha, arm, cN, clipper, dsp16xx, elxsi, h8300,
+ hppa1.0, hppa1.1, i370, i386, i486, i586, i860, i960, m68000, m68k,
+ m88k, mips, mipsel, mips64, mips64el, ns32k, powerpc, powerpcle,
+ pyramid, romp, rs6000, sh, sparc, sparclite, sparc64, vax, we32k.
+
+ Here are the recognized company names. As you can see, customary
+abbreviations are used rather than the longer official names.
+
+ acorn, alliant, altos, apollo, att, bull, cbm, convergent, convex,
+ crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp, ibm,
+ intergraph, isi, mips, motorola, ncr, next, ns, omron, plexus,
+ sequent, sgi, sony, sun, tti, unicom, wrs.
+
+ The company name is meaningful only to disambiguate when the rest of
+the information supplied is insufficient. You can omit it, writing
+just `CPU-SYSTEM', if it is not needed. For example, `vax-ultrix4.2'
+is equivalent to `vax-dec-ultrix4.2'.
+
+ Here is a list of system types:
+
+ 386bsd, aix, acis, amigados, aos, aout, bosx, bsd, clix, coff,
+ ctix, cxux, dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms,
+ genix, gnu, gnu/linux, hiux, hpux, iris, irix, isc, luna, lynxos,
+ mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf, osfrose,
+ ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym, sysv,
+ udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks, winnt,
+ xenix.
+
+You can omit the system type; then `configure' guesses the operating
+system from the CPU and company.
+
+ You can add a version number to the system type; this may or may not
+make a difference. For example, you can write `bsd4.3' or `bsd4.4' to
+distinguish versions of BSD. In practice, the version number is most
+needed for `sysv3' and `sysv4', which are often treated differently.
+
+ If you specify an impossible combination such as `i860-dg-vms', then
+you may get an error message from `configure', or it may ignore part of
+the information and do the best it can with the rest. `configure'
+always prints the canonical name for the alternative that it used. GNU
+CC does not support all possible alternatives.
+
+ Often a particular model of machine has a name. Many machine names
+are recognized as aliases for CPU/company combinations. Thus, the
+machine name `sun3', mentioned above, is an alias for `m68k-sun'.
+Sometimes we accept a company name as a machine name, when the name is
+popularly used for a particular machine. Here is a table of the known
+machine names:
+
+ 3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300,
+ balance, convex-cN, crds, decstation-3100, decstation, delta,
+ encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, hp9k7NN,
+ hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, miniframe,
+ mmax, news-3600, news800, news, next, pbd, pc532, pmax, powerpc,
+ powerpcle, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3,
+ sun4, symmetry, tower-32, tower.
+
+Remember that a machine name specifies both the cpu type and the company
+name. If you want to install your own homemade configuration files,
+you can use `local' as the company name to access them. If you use
+configuration `CPU-local', the configuration name without the cpu prefix
+is used to form the configuration file names.
+
+ Thus, if you specify `m68k-local', configuration uses files
+`m68k.md', `local.h', `m68k.c', `xm-local.h', `t-local', and `x-local',
+all in the directory `config/m68k'.
+
+ Here is a list of configurations that have special treatment or
+special things you must know:
+
+`1750a-*-*'
+ MIL-STD-1750A processors.
+
+ Starting with GCC 2.6.1, the MIL-STD-1750A cross configuration no
+ longer supports the Tektronix Assembler, but instead produces
+ output for `as1750', an assembler/linker available under the GNU
+ Public License for the 1750A. Contact *kellogg@space.otn.dasa.de*
+ for more details on obtaining `as1750'. A similarly licensed
+ simulator for the 1750A is available from same address.
+
+ You should ignore a fatal error during the building of libgcc
+ (libgcc is not yet implemented for the 1750A.)
+
+ The `as1750' assembler requires the file `ms1750.inc', which is
+ found in the directory `config/1750a'.
+
+ GNU CC produced the same sections as the Fairchild F9450 C
+ Compiler, namely:
+
+ `Normal'
+ The program code section.
+
+ `Static'
+ The read/write (RAM) data section.
+
+ `Konst'
+ The read-only (ROM) constants section.
+
+ `Init'
+ Initialization section (code to copy KREL to SREL).
+
+ The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16).
+ This means that type `char' is represented with a 16-bit word per
+ character. The 1750A's "Load/Store Upper/Lower Byte" instructions
+ are not used by GNU CC.
+
+`alpha-*-osf1'
+ Systems using processors that implement the DEC Alpha architecture
+ and are running the DEC Unix (OSF/1) operating system, for example
+ the DEC Alpha AXP systems. (VMS on the Alpha is not currently
+ supported by GNU CC.)
+
+ GNU CC writes a `.verstamp' directive to the assembler output file
+ unless it is built as a cross-compiler. It gets the version to
+ use from the system header file `/usr/include/stamp.h'. If you
+ install a new version of DEC Unix, you should rebuild GCC to pick
+ up the new version stamp.
+
+ Note that since the Alpha is a 64-bit architecture,
+ cross-compilers from 32-bit machines will not generate code as
+ efficient as that generated when the compiler is running on a
+ 64-bit machine because many optimizations that depend on being
+ able to represent a word on the target in an integral value on the
+ host cannot be performed. Building cross-compilers on the Alpha
+ for 32-bit machines has only been tested in a few cases and may
+ not work properly.
+
+ `make compare' may fail on old versions of DEC Unix unless you add
+ `-save-temps' to `CFLAGS'. On these systems, the name of the
+ assembler input file is stored in the object file, and that makes
+ comparison fail if it differs between the `stage1' and `stage2'
+ compilations. The option `-save-temps' forces a fixed name to be
+ used for the assembler input file, instead of a randomly chosen
+ name in `/tmp'. Do not add `-save-temps' unless the comparisons
+ fail without that option. If you add `-save-temps', you will have
+ to manually delete the `.i' and `.s' files after each series of
+ compilations.
+
+ GNU CC now supports both the native (ECOFF) debugging format used
+ by DBX and GDB and an encapsulated STABS format for use only with
+ GDB. See the discussion of the `--with-stabs' option of
+ `configure' above for more information on these formats and how to
+ select them.
+
+ There is a bug in DEC's assembler that produces incorrect line
+ numbers for ECOFF format when the `.align' directive is used. To
+ work around this problem, GNU CC will not emit such alignment
+ directives while writing ECOFF format debugging information even
+ if optimization is being performed. Unfortunately, this has the
+ very undesirable side-effect that code addresses when `-O' is
+ specified are different depending on whether or not `-g' is also
+ specified.
+
+ To avoid this behavior, specify `-gstabs+' and use GDB instead of
+ DBX. DEC is now aware of this problem with the assembler and
+ hopes to provide a fix shortly.
+
+`arm'
+ Advanced RISC Machines ARM-family processors. These are often
+ used in embedded applications. There are no standard Unix
+ configurations. This configuration corresponds to the basic
+ instruction sequences and will produce a.out format object modules.
+
+ You may need to make a variant of the file `arm.h' for your
+ particular configuration.
+
+`arm-*-riscix'
+ The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD
+ Unix. If you are running a version of RISC iX prior to 1.2 then
+ you must specify the version number during configuration. Note
+ that the assembler shipped with RISC iX does not support stabs
+ debugging information; a new version of the assembler, with stabs
+ support included, is now available from Acorn.
+
+`a29k'
+ AMD Am29k-family processors. These are normally used in embedded
+ applications. There are no standard Unix configurations. This
+ configuration corresponds to AMD's standard calling sequence and
+ binary interface and is compatible with other 29k tools.
+
+ You may need to make a variant of the file `a29k.h' for your
+ particular configuration.
+
+`a29k-*-bsd'
+ AMD Am29050 used in a system running a variant of BSD Unix.
+
+`decstation-*'
+ DECstations can support three different personalities: Ultrix, DEC
+ OSF/1, and OSF/rose. To configure GCC for these platforms use the
+ following configurations:
+
+ `decstation-ultrix'
+ Ultrix configuration.
+
+ `decstation-osf1'
+ Dec's version of OSF/1.
+
+ `decstation-osfrose'
+ Open Software Foundation reference port of OSF/1 which uses
+ the OSF/rose object file format instead of ECOFF. Normally,
+ you would not select this configuration.
+
+ The MIPS C compiler needs to be told to increase its table size
+ for switch statements with the `-Wf,-XNg1500' option in order to
+ compile `cp/parse.c'. If you use the `-O2' optimization option,
+ you also need to use `-Olimit 3000'. Both of these options are
+ automatically generated in the `Makefile' that the shell script
+ `configure' builds. If you override the `CC' make variable and
+ use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
+ 3000'.
+
+`elxsi-elxsi-bsd'
+ The Elxsi's C compiler has known limitations that prevent it from
+ compiling GNU C. Please contact `mrs@cygnus.com' for more details.
+
+`dsp16xx'
+ A port to the AT&T DSP1610 family of processors.
+
+`h8300-*-*'
+ The calling convention and structure layout has changed in release
+ 2.6. All code must be recompiled. The calling convention now
+ passes the first three arguments in function calls in registers.
+ Structures are no longer a multiple of 2 bytes.
+
+`hppa*-*-*'
+ There are two variants of this CPU, called 1.0 and 1.1, which have
+ different machine descriptions. You must use the right one for
+ your machine. All 7NN machines and 8N7 machines use 1.1, while
+ all other 8NN machines use 1.0.
+
+ The easiest way to handle this problem is to use `configure hpNNN'
+ or `configure hpNNN-hpux', where NNN is the model number of the
+ machine. Then `configure' will figure out if the machine is a 1.0
+ or 1.1. Use `uname -a' to find out the model number of your
+ machine.
+
+ `-g' does not work on HP-UX, since that system uses a peculiar
+ debugging format which GNU CC does not know about. However, `-g'
+ will work if you also use GAS and GDB in conjunction with GCC. We
+ highly recommend using GAS for all HP-PA configurations.
+
+ You should be using GAS-2.3 (or later) along with GDB-4.12 (or
+ later). These can be retrieved from all the traditional GNU ftp
+ archive sites.
+
+ Build GAS and install the resulting binary as:
+
+ /usr/local/lib/gcc-lib/CONFIGURATION/GCCVERSION/as
+
+ where CONFIGURATION is the configuration name (perhaps
+ `hpNNN-hpux') and GCCVERSION is the GNU CC version number. Do
+ this *before* starting the build process, otherwise you will get
+ errors from the HPUX assembler while building `libgcc2.a'. The
+ command
+
+ make install-dir
+
+ will create the necessary directory hierarchy so you can install
+ GAS before building GCC.
+
+ To enable debugging, configure GNU CC with the `--with-gnu-as'
+ option before building.
+
+ It has been reported that GNU CC produces invalid assembly code for
+ 1.1 machines running HP-UX 8.02 when using the HP assembler.
+ Typically the errors look like this:
+ as: bug.s @line#15 [err#1060]
+ Argument 0 or 2 in FARG upper
+ - lookahead = ARGW1=FR,RTNVAL=GR
+ as: foo.s @line#28 [err#1060]
+ Argument 0 or 2 in FARG upper
+ - lookahead = ARGW1=FR
+
+ You can check the version of HP-UX you are running by executing
+ the command `uname -r'. If you are indeed running HP-UX 8.02 on
+ a PA and using the HP assembler then configure GCC with
+ "hpNNN-hpux8.02".
+
+`i370-*-*'
+ This port is very preliminary and has many known bugs. We hope to
+ have a higher-quality port for this machine soon.
+
+`i386-*-linuxoldld'
+ Use this configuration to generate a.out binaries on Linux if you
+ do not have gas/binutils version 2.5.2 or later installed. This is
+ an obsolete configuration.
+
+`i386-*-linuxaout'
+ Use this configuration to generate a.out binaries on Linux. This
+ configuration is being superseded. You must use gas/binutils
+ version 2.5.2 or later.
+
+`i386-*-linux'
+ Use this configuration to generate ELF binaries on Linux. You must
+ use gas/binutils version 2.5.2 or later.
+
+`i386-*-sco'
+ Compilation with RCC is recommended. Also, it may be a good idea
+ to link with GNU malloc instead of the malloc that comes with the
+ system.
+
+`i386-*-sco3.2v4'
+ Use this configuration for SCO release 3.2 version 4.
+
+`i386-*-isc'
+ It may be a good idea to link with GNU malloc instead of the
+ malloc that comes with the system.
+
+ In ISC version 4.1, `sed' core dumps when building `deduced.h'.
+ Use the version of `sed' from version 4.0.
+
+`i386-*-esix'
+ It may be good idea to link with GNU malloc instead of the malloc
+ that comes with the system.
+
+`i386-ibm-aix'
+ You need to use GAS version 2.1 or later, and and LD from GNU
+ binutils version 2.2 or later.
+
+`i386-sequent-bsd'
+ Go to the Berkeley universe before compiling. In addition, you
+ probably need to create a file named `string.h' containing just
+ one line: `#include <strings.h>'.
+
+`i386-sequent-ptx1*'
+ Sequent DYNIX/ptx 1.x.
+
+`i386-sequent-ptx2*'
+ Sequent DYNIX/ptx 2.x.
+
+`i386-sun-sunos4'
+ You may find that you need another version of GNU CC to begin
+ bootstrapping with, since the current version when built with the
+ system's own compiler seems to get an infinite loop compiling part
+ of `libgcc2.c'. GNU CC version 2 compiled with GNU CC (any
+ version) seems not to have this problem.
+
+ See *Note Sun Install::, for information on installing GNU CC on
+ Sun systems.
+
+`i[345]86-*-winnt3.5'
+ This version requires a GAS that has not let been released. Until
+ it is, you can get a prebuilt binary version via anonymous ftp from
+ `cs.washington.edu:pub/gnat' or `cs.nyu.edu:pub/gnat'. You must
+ also use the Microsoft header files from the Windows NT 3.5 SDK.
+ Find these on the CDROM in the `/mstools/h' directory dated
+ 9/4/94. You must use a fixed version of Microsoft linker made
+ especially for NT 3.5, which is also is available on the NT 3.5
+ SDK CDROM. If you do not have this linker, can you also use the
+ linker from Visual C/C++ 1.0 or 2.0.
+
+ Installing GNU CC for NT builds a wrapper linker, called `ld.exe',
+ which mimics the behaviour of Unix `ld' in the specification of
+ libraries (`-L' and `-l'). `ld.exe' looks for both Unix and
+ Microsoft named libraries. For example, if you specify `-lfoo',
+ `ld.exe' will look first for `libfoo.a' and then for `foo.lib'.
+
+ You may install GNU CC for Windows NT in one of two ways,
+ depending on whether or not you have a Unix-like shell and various
+ Unix-like utilities.
+
+ 1. If you do not have a Unix-like shell and few Unix-like
+ utilities, you will use a DOS style batch script called
+ `configure.bat'. Invoke it as `configure winnt' from an
+ MSDOS console window or from the program manager dialog box.
+ `configure.bat' assumes you have already installed and have
+ in your path a Unix-like `sed' program which is used to
+ create a working `Makefile' from `Makefile.in'.
+
+ `Makefile' uses the Microsoft Nmake program maintenance
+ utility and the Visual C/C++ V8.00 compiler to build GNU CC.
+ You need only have the utilities `sed' and `touch' to use
+ this installation method, which only automatically builds the
+ compiler itself. You must then examine what `fixinc.winnt'
+ does, edit the header files by hand and build `libgcc.a'
+ manually.
+
+ 2. The second type of installation assumes you are running a
+ Unix-like shell, have a complete suite of Unix-like utilities
+ in your path, and have a previous version of GNU CC already
+ installed, either through building it via the above
+ installation method or acquiring a pre-built binary. In this
+ case, use the `configure' script in the normal fashion.
+
+`i860-intel-osf1'
+ This is the Paragon. If you have version 1.0 of the operating
+ system, you need to take special steps to build GNU CC due to
+ peculiarities of the system. Newer system versions have no
+ problem. See the section `Installation Problems' in the GNU CC
+ Manual.
+
+`*-lynx-lynxos'
+ LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as
+ `/bin/gcc'. You should compile with this instead of `/bin/cc'.
+ You can tell GNU CC to use the GNU assembler and linker, by
+ specifying `--with-gnu-as --with-gnu-ld' when configuring. These
+ will produce COFF format object files and executables; otherwise
+ GNU CC will use the installed tools, which produce a.out format
+ executables.
+
+`m68000-hp-bsd'
+ HP 9000 series 200 running BSD. Note that the C compiler that
+ comes with this system cannot compile GNU CC; contact
+ `law@cs.utah.edu' to get binaries of GNU CC for bootstrapping.
+
+`m68k-altos'
+ Altos 3068. You must use the GNU assembler, linker and debugger.
+ Also, you must fix a kernel bug. Details in the file
+ `README.ALTOS'.
+
+`m68k-att-sysv'
+ AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to
+ compile GNU CC with this machine's standard C compiler, due to
+ bugs in that compiler. You can bootstrap it more easily with
+ previous versions of GNU CC if you have them.
+
+ Installing GNU CC on the 3b1 is difficult if you do not already
+ have GNU CC running, due to bugs in the installed C compiler.
+ However, the following procedure might work. We are unable to
+ test it.
+
+ 1. Comment out the `#include "config.h"' line on line 37 of
+ `cccp.c' and do `make cpp'. This makes a preliminary version
+ of GNU cpp.
+
+ 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to
+ that file name.
+
+ 3. Undo your change in `cccp.c', or reinstall the original
+ version, and do `make cpp' again.
+
+ 4. Copy this final version of GNU cpp into `/lib/cpp'.
+
+ 5. Replace every occurrence of `obstack_free' in the file
+ `tree.c' with `_obstack_free'.
+
+ 6. Run `make' to get the first-stage GNU CC.
+
+ 7. Reinstall the original version of `/lib/cpp'.
+
+ 8. Now you can compile GNU CC with itself and install it in the
+ normal fashion.
+
+`m68k-bull-sysv'
+ Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU
+ CC works either with native assembler or GNU assembler. You can use
+ GNU assembler with native coff generation by providing
+ `--with-gnu-as' to the configure script or use GNU assembler with
+ dbx-in-coff encapsulation by providing `--with-gnu-as --stabs'.
+ For any problem with native assembler or for availability of the
+ DPX/2 port of GAS, contact `F.Pierresteguy@frcl.bull.fr'.
+
+`m68k-crds-unox'
+ Use `configure unos' for building on Unos.
+
+ The Unos assembler is named `casm' instead of `as'. For some
+ strange reason linking `/bin/as' to `/bin/casm' changes the
+ behavior, and does not work. So, when installing GNU CC, you
+ should install the following script as `as' in the subdirectory
+ where the passes of GCC are installed:
+
+ #!/bin/sh
+ casm $*
+
+ The default Unos library is named `libunos.a' instead of `libc.a'.
+ To allow GNU CC to function, either change all references to
+ `-lc' in `gcc.c' to `-lunos' or link `/lib/libc.a' to
+ `/lib/libunos.a'.
+
+ When compiling GNU CC with the standard compiler, to overcome bugs
+ in the support of `alloca', do not use `-O' when making stage 2.
+ Then use the stage 2 compiler with `-O' to make the stage 3
+ compiler. This compiler will have the same characteristics as the
+ usual stage 2 compiler on other systems. Use it to make a stage 4
+ compiler and compare that with stage 3 to verify proper
+ compilation.
+
+ (Perhaps simply defining `ALLOCA' in `x-crds' as described in the
+ comments there will make the above paragraph superfluous. Please
+ inform us of whether this works.)
+
+ Unos uses memory segmentation instead of demand paging, so you
+ will need a lot of memory. 5 Mb is barely enough if no other
+ tasks are running. If linking `cc1' fails, try putting the object
+ files into a library and linking from that library.
+
+`m68k-hp-hpux'
+ HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a
+ bug in the assembler that prevents compilation of GNU CC. To fix
+ it, get patch PHCO_4484 from HP.
+
+ In addition, if you wish to use gas `--with-gnu-as' you must use
+ gas version 2.1 or later, and you must use the GNU linker version
+ 2.1 or later. Earlier versions of gas relied upon a program which
+ converted the gas output into the native HP/UX format, but that
+ program has not been kept up to date. gdb does not understand
+ that native HP/UX format, so you must use gas if you wish to use
+ gdb.
+
+`m68k-sun'
+ Sun 3. We do not provide a configuration file to use the Sun FPA
+ by default, because programs that establish signal handlers for
+ floating point traps inherently cannot work with the FPA.
+
+ See *Note Sun Install::, for information on installing GNU CC on
+ Sun systems.
+
+`m88k-*-svr3'
+ Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
+ These systems tend to use the Green Hills C, revision 1.8.5, as the
+ standard C compiler. There are apparently bugs in this compiler
+ that result in object files differences between stage 2 and stage
+ 3. If this happens, make the stage 4 compiler and compare it to
+ the stage 3 compiler. If the stage 3 and stage 4 object files are
+ identical, this suggests you encountered a problem with the
+ standard C compiler; the stage 3 and 4 compilers may be usable.
+
+ It is best, however, to use an older version of GNU CC for
+ bootstrapping if you have one.
+
+`m88k-*-dgux'
+ Motorola m88k running DG/UX. To build 88open BCS native or cross
+ compilers on DG/UX, specify the configuration name as
+ `m88k-*-dguxbcs' and build in the 88open BCS software development
+ environment. To build ELF native or cross compilers on DG/UX,
+ specify `m88k-*-dgux' and build in the DG/UX ELF development
+ environment. You set the software development environment by
+ issuing `sde-target' command and specifying either `m88kbcs' or
+ `m88kdguxelf' as the operand.
+
+ If you do not specify a configuration name, `configure' guesses the
+ configuration based on the current software development
+ environment.
+
+`m88k-tektronix-sysv3'
+ Tektronix XD88 running UTekV 3.2e. Do not turn on optimization
+ while building stage1 if you bootstrap with the buggy Green Hills
+ compiler. Also, The bundled LAI System V NFS is buggy so if you
+ build in an NFS mounted directory, start from a fresh reboot, or
+ avoid NFS all together. Otherwise you may have trouble getting
+ clean comparisons between stages.
+
+`mips-mips-bsd'
+ MIPS machines running the MIPS operating system in BSD mode. It's
+ possible that some old versions of the system lack the functions
+ `memcpy', `memcmp', and `memset'. If your system lacks these, you
+ must remove or undo the definition of `TARGET_MEM_FUNCTIONS' in
+ `mips-bsd.h'.
+
+ The MIPS C compiler needs to be told to increase its table size
+ for switch statements with the `-Wf,-XNg1500' option in order to
+ compile `cp/parse.c'. If you use the `-O2' optimization option,
+ you also need to use `-Olimit 3000'. Both of these options are
+ automatically generated in the `Makefile' that the shell script
+ `configure' builds. If you override the `CC' make variable and
+ use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
+ 3000'.
+
+`mips-mips-riscos*'
+ The MIPS C compiler needs to be told to increase its table size
+ for switch statements with the `-Wf,-XNg1500' option in order to
+ compile `cp/parse.c'. If you use the `-O2' optimization option,
+ you also need to use `-Olimit 3000'. Both of these options are
+ automatically generated in the `Makefile' that the shell script
+ `configure' builds. If you override the `CC' make variable and
+ use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
+ 3000'.
+
+ MIPS computers running RISC-OS can support four different
+ personalities: default, BSD 4.3, System V.3, and System V.4 (older
+ versions of RISC-OS don't support V.4). To configure GCC for
+ these platforms use the following configurations:
+
+ `mips-mips-riscos`rev''
+ Default configuration for RISC-OS, revision `rev'.
+
+ `mips-mips-riscos`rev'bsd'
+ BSD 4.3 configuration for RISC-OS, revision `rev'.
+
+ `mips-mips-riscos`rev'sysv4'
+ System V.4 configuration for RISC-OS, revision `rev'.
+
+ `mips-mips-riscos`rev'sysv'
+ System V.3 configuration for RISC-OS, revision `rev'.
+
+ The revision `rev' mentioned above is the revision of RISC-OS to
+ use. You must reconfigure GCC when going from a RISC-OS revision
+ 4 to RISC-OS revision 5. This has the effect of avoiding a linker
+ bug.
+
+`mips-sgi-*'
+ In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib"
+ option must be installed from the CD-ROM supplied from Silicon
+ Graphics. This is found on the 2nd CD in release 4.0.1.
+
+ In order to compile GCC on an SGI running IRIX 5, the
+ "compiler_dev.hdr" subsystem must be installed from the IDO CD-ROM
+ supplied by Silicon Graphics.
+
+ `make compare' may fail on version 5 of IRIX unless you add
+ `-save-temps' to `CFLAGS'. On these systems, the name of the
+ assembler input file is stored in the object file, and that makes
+ comparison fail if it differs between the `stage1' and `stage2'
+ compilations. The option `-save-temps' forces a fixed name to be
+ used for the assembler input file, instead of a randomly chosen
+ name in `/tmp'. Do not add `-save-temps' unless the comparisons
+ fail without that option. If you do you `-save-temps', you will
+ have to manually delete the `.i' and `.s' files after each series
+ of compilations.
+
+ The MIPS C compiler needs to be told to increase its table size
+ for switch statements with the `-Wf,-XNg1500' option in order to
+ compile `cp/parse.c'. If you use the `-O2' optimization option,
+ you also need to use `-Olimit 3000'. Both of these options are
+ automatically generated in the `Makefile' that the shell script
+ `configure' builds. If you override the `CC' make variable and
+ use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
+ 3000'.
+
+ On Irix version 4.0.5F, and perhaps on some other versions as well,
+ there is an assembler bug that reorders instructions incorrectly.
+ To work around it, specify the target configuration
+ `mips-sgi-irix4loser'. This configuration inhibits assembler
+ optimization.
+
+ In a compiler configured with target `mips-sgi-irix4', you can turn
+ off assembler optimization by using the `-noasmopt' option. This
+ compiler option passes the option `-O0' to the assembler, to
+ inhibit reordering.
+
+ The `-noasmopt' option can be useful for testing whether a problem
+ is due to erroneous assembler reordering. Even if a problem does
+ not go away with `-noasmopt', it may still be due to assembler
+ reordering--perhaps GNU CC itself was miscompiled as a result.
+
+ To enable debugging under Irix 5, you must use GNU as 2.5 or later,
+ and use the `--with-gnu-as' configure option when configuring gcc.
+ GNU as is distributed as part of the binutils package.
+
+`mips-sony-sysv'
+ Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2
+ (which uses ELF instead of COFF). Support for 5.0.2 will probably
+ be provided soon by volunteers. In particular, the linker does
+ not like the code generated by GCC when shared libraries are
+ linked in.
+
+`ns32k-encore'
+ Encore ns32000 system. Encore systems are supported only under
+ BSD.
+
+`ns32k-*-genix'
+ National Semiconductor ns32000 system. Genix has bugs in `alloca'
+ and `malloc'; you must get the compiled versions of these from GNU
+ Emacs.
+
+`ns32k-sequent'
+ Go to the Berkeley universe before compiling. In addition, you
+ probably need to create a file named `string.h' containing just
+ one line: `#include <strings.h>'.
+
+`ns32k-utek'
+ UTEK ns32000 system ("merlin"). The C compiler that comes with
+ this system cannot compile GNU CC; contact `tektronix!reed!mason'
+ to get binaries of GNU CC for bootstrapping.
+
+`romp-*-aos'
+`romp-*-mach'
+ The only operating systems supported for the IBM RT PC are AOS and
+ MACH. GNU CC does not support AIX running on the RT. We
+ recommend you compile GNU CC with an earlier version of itself; if
+ you compile GNU CC with `hc', the Metaware compiler, it will work,
+ but you will get mismatches between the stage 2 and stage 3
+ compilers in various files. These errors are minor differences in
+ some floating-point constants and can be safely ignored; the stage
+ 3 compiler is correct.
+
+`rs6000-*-aix'
+`powerpc-*-aix'
+ Various early versions of each release of the IBM XLC compiler
+ will not bootstrap GNU CC. Symptoms include differences between
+ the stage2 and stage3 object files, and errors when compiling
+ `libgcc.a' or `enquire'. Known problematic releases include:
+ xlc-1.2.1.8, xlc-1.3.0.0 (distributed with AIX 3.2.5), and
+ xlc-1.3.0.19. Both xlc-1.2.1.28 and xlc-1.3.0.24 (PTF 432238) are
+ known to produce working versions of GNU CC, but most other recent
+ releases correctly bootstrap GNU CC. Also, releases of AIX prior
+ to AIX 3.2.4 include a version of the IBM assembler which does not
+ accept debugging directives: assembler updates are available as
+ PTFs. Also, if you are using AIX 3.2.5 or greater and the GNU
+ assembler, you must have a version modified after October 16th,
+ 1995 in order for the GNU C compiler to build. See the file
+ `README.RS6000' for more details on of these problems.
+
+ GNU CC does not yet support the 64-bit PowerPC instructions.
+
+ Objective C does not work on this architecture because it makes
+ assumptions that are incompatible with the calling conventions.
+
+ AIX on the RS/6000 provides support (NLS) for environments outside
+ of the United States. Compilers and assemblers use NLS to support
+ locale-specific representations of various objects including
+ floating-point numbers ("." vs "," for separating decimal
+ fractions). There have been problems reported where the library
+ linked with GNU CC does not produce the same floating-point
+ formats that the assembler accepts. If you have this problem, set
+ the LANG environment variable to "C" or "En_US".
+
+ Due to changes in the way that GNU CC invokes the binder (linker)
+ for AIX 4.1, you may now receive warnings of duplicate symbols
+ from the link step that were not reported before. The assembly
+ files generated by GNU CC for AIX have always included multiple
+ symbol definitions for certain global variable and function
+ declarations in the original program. The warnings should not
+ prevent the linker from producing a correct library or runnable
+ executable.
+
+`powerpc-*-elf'
+`powerpc-*-sysv4'
+ PowerPC system in big endian mode, running System V.4.
+
+ This configuration is currently under development.
+
+`powerpc-*-eabiaix'
+ Embedded PowerPC system in big endian mode with -mcall-aix
+ selected as the default. This system is currently under
+ development.
+
+`powerpc-*-eabisim'
+ Embedded PowerPC system in big endian mode for use in running
+ under the PSIM simulator. This system is currently under
+ development.
+
+`powerpc-*-eabi'
+ Embedded PowerPC system in big endian mode.
+
+ This configuration is currently under development.
+
+`powerpcle-*-elf'
+`powerpcle-*-sysv4'
+ PowerPC system in little endian mode, running System V.4.
+
+ This configuration is currently under development.
+
+`powerpcle-*-sysv4'
+ Embedded PowerPC system in little endian mode.
+
+ This system is currently under development.
+
+`powerpcle-*-eabisim'
+ Embedded PowerPC system in little endian mode for use in running
+ under the PSIM simulator.
+
+ This system is currently under development.
+
+`powerpcle-*-eabi'
+ Embedded PowerPC system in little endian mode.
+
+ This configuration is currently under development.
+
+`vax-dec-ultrix'
+ Don't try compiling with Vax C (`vcc'). It produces incorrect code
+ in some cases (for example, when `alloca' is used).
+
+ Meanwhile, compiling `cp/parse.c' with pcc does not work because of
+ an internal table size limitation in that compiler. To avoid this
+ problem, compile just the GNU C compiler first, and use it to
+ recompile building all the languages that you want to run.
+
+`sparc-sun-*'
+ See *Note Sun Install::, for information on installing GNU CC on
+ Sun systems.
+
+`vax-dec-vms'
+ See *Note VMS Install::, for details on how to install GNU CC on
+ VMS.
+
+`we32k-*-*'
+ These computers are also known as the 3b2, 3b5, 3b20 and other
+ similar names. (However, the 3b1 is actually a 68000; see *Note
+ Configurations::.)
+
+ Don't use `-g' when compiling with the system's compiler. The
+ system's linker seems to be unable to handle such a large program
+ with debugging information.
+
+ The system's compiler runs out of capacity when compiling `stmt.c'
+ in GNU CC. You can work around this by building `cpp' in GNU CC
+ first, then use that instead of the system's preprocessor with the
+ system's C compiler to compile `stmt.c'. Here is how:
+
+ mv /lib/cpp /lib/cpp.att
+ cp cpp /lib/cpp.gnu
+ echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp
+ chmod +x /lib/cpp
+
+ The system's compiler produces bad code for some of the GNU CC
+ optimization files. So you must build the stage 2 compiler without
+ optimization. Then build a stage 3 compiler with optimization.
+ That executable should work. Here are the necessary commands:
+
+ make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g"
+ make stage2
+ make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
+
+ You may need to raise the ULIMIT setting to build a C++ compiler,
+ as the file `cc1plus' is larger than one megabyte.
+
+Compilation in a Separate Directory
+===================================
+
+ If you wish to build the object files and executables in a directory
+other than the one containing the source files, here is what you must
+do differently:
+
+ 1. Make sure you have a version of Make that supports the `VPATH'
+ feature. (GNU Make supports it, as do Make versions on most BSD
+ systems.)
+
+ 2. If you have ever run `configure' in the source directory, you must
+ undo the configuration. Do this by running:
+
+ make distclean
+
+ 3. Go to the directory in which you want to build the compiler before
+ running `configure':
+
+ mkdir gcc-sun3
+ cd gcc-sun3
+
+ On systems that do not support symbolic links, this directory must
+ be on the same file system as the source code directory.
+
+ 4. Specify where to find `configure' when you run it:
+
+ ../gcc/configure ...
+
+ This also tells `configure' where to find the compiler sources;
+ `configure' takes the directory from the file name that was used to
+ invoke it. But if you want to be sure, you can specify the source
+ directory with the `--srcdir' option, like this:
+
+ ../gcc/configure --srcdir=../gcc OTHER OPTIONS
+
+ The directory you specify with `--srcdir' need not be the same as
+ the one that `configure' is found in.
+
+ Now, you can run `make' in that directory. You need not repeat the
+configuration steps shown above, when ordinary source files change. You
+must, however, run `configure' again when the configuration files
+change, if your system does not support symbolic links.
+
+Building and Installing a Cross-Compiler
+========================================
+
+ GNU CC can function as a cross-compiler for many machines, but not
+all.
+
+ * Cross-compilers for the Mips as target using the Mips assembler
+ currently do not work, because the auxiliary programs
+ `mips-tdump.c' and `mips-tfile.c' can't be compiled on anything
+ but a Mips. It does work to cross compile for a Mips if you use
+ the GNU assembler and linker.
+
+ * Cross-compilers between machines with different floating point
+ formats have not all been made to work. GNU CC now has a floating
+ point emulator with which these can work, but each target machine
+ description needs to be updated to take advantage of it.
+
+ * Cross-compilation between machines of different word sizes is
+ somewhat problematic and sometimes does not work.
+
+ Since GNU CC generates assembler code, you probably need a
+cross-assembler that GNU CC can run, in order to produce object files.
+If you want to link on other than the target machine, you need a
+cross-linker as well. You also need header files and libraries suitable
+for the target machine that you can install on the host machine.
+
+Steps of Cross-Compilation
+--------------------------
+
+ To compile and run a program using a cross-compiler involves several
+steps:
+
+ * Run the cross-compiler on the host machine to produce assembler
+ files for the target machine. This requires header files for the
+ target machine.
+
+ * Assemble the files produced by the cross-compiler. You can do this
+ either with an assembler on the target machine, or with a
+ cross-assembler on the host machine.
+
+ * Link those files to make an executable. You can do this either
+ with a linker on the target machine, or with a cross-linker on the
+ host machine. Whichever machine you use, you need libraries and
+ certain startup files (typically `crt....o') for the target
+ machine.
+
+ It is most convenient to do all of these steps on the same host
+machine, since then you can do it all with a single invocation of GNU
+CC. This requires a suitable cross-assembler and cross-linker. For
+some targets, the GNU assembler and linker are available.
+
+Configuring a Cross-Compiler
+----------------------------
+
+ To build GNU CC as a cross-compiler, you start out by running
+`configure'. Use the `--target=TARGET' to specify the target type. If
+`configure' was unable to correctly identify the system you are running
+on, also specify the `--build=BUILD' option. For example, here is how
+to configure for a cross-compiler that produces code for an HP 68030
+system running BSD on a system that `configure' can correctly identify:
+
+ ./configure --target=m68k-hp-bsd4.3
+
+Tools and Libraries for a Cross-Compiler
+----------------------------------------
+
+ If you have a cross-assembler and cross-linker available, you should
+install them now. Put them in the directory `/usr/local/TARGET/bin'.
+Here is a table of the tools you should put in this directory:
+
+`as'
+ This should be the cross-assembler.
+
+`ld'
+ This should be the cross-linker.
+
+`ar'
+ This should be the cross-archiver: a program which can manipulate
+ archive files (linker libraries) in the target machine's format.
+
+`ranlib'
+ This should be a program to construct a symbol table in an archive
+ file.
+
+ The installation of GNU CC will find these programs in that
+directory, and copy or link them to the proper place to for the
+cross-compiler to find them when run later.
+
+ The easiest way to provide these files is to build the Binutils
+package and GAS. Configure them with the same `--host' and `--target'
+options that you use for configuring GNU CC, then build and install
+them. They install their executables automatically into the proper
+directory. Alas, they do not support all the targets that GNU CC
+supports.
+
+ If you want to install libraries to use with the cross-compiler,
+such as a standard C library, put them in the directory
+`/usr/local/TARGET/lib'; installation of GNU CC copies all all the
+files in that subdirectory into the proper place for GNU CC to find
+them and link with them. Here's an example of copying some libraries
+from a target machine:
+
+ ftp TARGET-MACHINE
+ lcd /usr/local/TARGET/lib
+ cd /lib
+ get libc.a
+ cd /usr/lib
+ get libg.a
+ get libm.a
+ quit
+
+The precise set of libraries you'll need, and their locations on the
+target machine, vary depending on its operating system.
+
+ Many targets require "start files" such as `crt0.o' and `crtn.o'
+which are linked into each executable; these too should be placed in
+`/usr/local/TARGET/lib'. There may be several alternatives for
+`crt0.o', for use with profiling or other compilation options. Check
+your target's definition of `STARTFILE_SPEC' to find out what start
+files it uses. Here's an example of copying these files from a target
+machine:
+
+ ftp TARGET-MACHINE
+ lcd /usr/local/TARGET/lib
+ prompt
+ cd /lib
+ mget *crt*.o
+ cd /usr/lib
+ mget *crt*.o
+ quit
+
+`libgcc.a' and Cross-Compilers
+------------------------------
+
+ Code compiled by GNU CC uses certain runtime support functions
+implicitly. Some of these functions can be compiled successfully with
+GNU CC itself, but a few cannot be. These problem functions are in the
+source file `libgcc1.c'; the library made from them is called
+`libgcc1.a'.
+
+ When you build a native compiler, these functions are compiled with
+some other compiler-the one that you use for bootstrapping GNU CC.
+Presumably it knows how to open code these operations, or else knows how
+to call the run-time emulation facilities that the machine comes with.
+But this approach doesn't work for building a cross-compiler. The
+compiler that you use for building knows about the host system, not the
+target system.
+
+ So, when you build a cross-compiler you have to supply a suitable
+library `libgcc1.a' that does the job it is expected to do.
+
+ To compile `libgcc1.c' with the cross-compiler itself does not work.
+The functions in this file are supposed to implement arithmetic
+operations that GNU CC does not know how to open code for your target
+machine. If these functions are compiled with GNU CC itself, they will
+compile into infinite recursion.
+
+ On any given target, most of these functions are not needed. If GNU
+CC can open code an arithmetic operation, it will not call these
+functions to perform the operation. It is possible that on your target
+machine, none of these functions is needed. If so, you can supply an
+empty library as `libgcc1.a'.
+
+ Many targets need library support only for multiplication and
+division. If you are linking with a library that contains functions for
+multiplication and division, you can tell GNU CC to call them directly
+by defining the macros `MULSI3_LIBCALL', and the like. These macros
+need to be defined in the target description macro file. For some
+targets, they are defined already. This may be sufficient to avoid the
+need for libgcc1.a; if so, you can supply an empty library.
+
+ Some targets do not have floating point instructions; they need other
+functions in `libgcc1.a', which do floating arithmetic. Recent
+versions of GNU CC have a file which emulates floating point. With a
+certain amount of work, you should be able to construct a floating
+point emulator that can be used as `libgcc1.a'. Perhaps future
+versions will contain code to do this automatically and conveniently.
+That depends on whether someone wants to implement it.
+
+ Some embedded targets come with all the necessary `libgcc1.a'
+routines written in C or assembler. These targets build `libgcc1.a'
+automatically and you do not need to do anything special for them.
+Other embedded targets do not need any `libgcc1.a' routines since all
+the necessary operations are supported by the hardware.
+
+ If your target system has another C compiler, you can configure GNU
+CC as a native compiler on that machine, build just `libgcc1.a' with
+`make libgcc1.a' on that machine, and use the resulting file with the
+cross-compiler. To do this, execute the following on the target
+machine:
+
+ cd TARGET-BUILD-DIR
+ ./configure --host=sparc --target=sun3
+ make libgcc1.a
+
+And then this on the host machine:
+
+ ftp TARGET-MACHINE
+ binary
+ cd TARGET-BUILD-DIR
+ get libgcc1.a
+ quit
+
+ Another way to provide the functions you need in `libgcc1.a' is to
+define the appropriate `perform_...' macros for those functions. If
+these definitions do not use the C arithmetic operators that they are
+meant to implement, you should be able to compile them with the
+cross-compiler you are building. (If these definitions already exist
+for your target file, then you are all set.)
+
+ To build `libgcc1.a' using the perform macros, use
+`LIBGCC1=libgcc1.a OLDCC=./xgcc' when building the compiler.
+Otherwise, you should place your replacement library under the name
+`libgcc1.a' in the directory in which you will build the
+cross-compiler, before you run `make'.
+
+Cross-Compilers and Header Files
+--------------------------------
+
+ If you are cross-compiling a standalone program or a program for an
+embedded system, then you may not need any header files except the few
+that are part of GNU CC (and those of your program). However, if you
+intend to link your program with a standard C library such as `libc.a',
+then you probably need to compile with the header files that go with
+the library you use.
+
+ The GNU C compiler does not come with these files, because (1) they
+are system-specific, and (2) they belong in a C library, not in a
+compiler.
+
+ If the GNU C library supports your target machine, then you can get
+the header files from there (assuming you actually use the GNU library
+when you link your program).
+
+ If your target machine comes with a C compiler, it probably comes
+with suitable header files also. If you make these files accessible
+from the host machine, the cross-compiler can use them also.
+
+ Otherwise, you're on your own in finding header files to use when
+cross-compiling.
+
+ When you have found suitable header files, put them in
+`/usr/local/TARGET/include', before building the cross compiler. Then
+installation will run fixincludes properly and install the corrected
+versions of the header files where the compiler will use them.
+
+ Provide the header files before you build the cross-compiler, because
+the build stage actually runs the cross-compiler to produce parts of
+`libgcc.a'. (These are the parts that *can* be compiled with GNU CC.)
+Some of them need suitable header files.
+
+ Here's an example showing how to copy the header files from a target
+machine. On the target machine, do this:
+
+ (cd /usr/include; tar cf - .) > tarfile
+
+ Then, on the host machine, do this:
+
+ ftp TARGET-MACHINE
+ lcd /usr/local/TARGET/include
+ get tarfile
+ quit
+ tar xf tarfile
+
+Actually Building the Cross-Compiler
+------------------------------------
+
+ Now you can proceed just as for compiling a single-machine compiler
+through the step of building stage 1. If you have not provided some
+sort of `libgcc1.a', then compilation will give up at the point where
+it needs that file, printing a suitable error message. If you do
+provide `libgcc1.a', then building the compiler will automatically
+compile and link a test program called `libgcc1-test'; if you get
+errors in the linking, it means that not all of the necessary routines
+in `libgcc1.a' are available.
+
+ You must provide the header file `float.h'. One way to do this is
+to compile `enquire' and run it on your target machine. The job of
+`enquire' is to run on the target machine and figure out by experiment
+the nature of its floating point representation. `enquire' records its
+findings in the header file `float.h'. If you can't produce this file
+by running `enquire' on the target machine, then you will need to come
+up with a suitable `float.h' in some other way (or else, avoid using it
+in your programs).
+
+ Do not try to build stage 2 for a cross-compiler. It doesn't work to
+rebuild GNU CC as a cross-compiler using the cross-compiler, because
+that would produce a program that runs on the target machine, not on the
+host. For example, if you compile a 386-to-68030 cross-compiler with
+itself, the result will not be right either for the 386 (because it was
+compiled into 68030 code) or for the 68030 (because it was configured
+for a 386 as the host). If you want to compile GNU CC into 68030 code,
+whether you compile it on a 68030 or with a cross-compiler on a 386, you
+must specify a 68030 as the host when you configure it.
+
+ To install the cross-compiler, use `make install', as usual.
+
+Installing GNU CC on the Sun
+============================
+
+ On Solaris (version 2.1), do not use the linker or other tools in
+`/usr/ucb' to build GNU CC. Use `/usr/ccs/bin'.
+
+ Make sure the environment variable `FLOAT_OPTION' is not set when
+you compile `libgcc.a'. If this option were set to `f68881' when
+`libgcc.a' is compiled, the resulting code would demand to be linked
+with a special startup file and would not link properly without special
+pains.
+
+ There is a bug in `alloca' in certain versions of the Sun library.
+To avoid this bug, install the binaries of GNU CC that were compiled by
+GNU CC. They use `alloca' as a built-in function and never the one in
+the library.
+
+ Some versions of the Sun compiler crash when compiling GNU CC. The
+problem is a segmentation fault in cpp. This problem seems to be due to
+the bulk of data in the environment variables. You may be able to avoid
+it by using the following command to compile GNU CC with Sun CC:
+
+ make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
+
+Installing GNU CC on VMS
+========================
+
+ The VMS version of GNU CC is distributed in a backup saveset
+containing both source code and precompiled binaries.
+
+ To install the `gcc' command so you can use the compiler easily, in
+the same manner as you use the VMS C compiler, you must install the VMS
+CLD file for GNU CC as follows:
+
+ 1. Define the VMS logical names `GNU_CC' and `GNU_CC_INCLUDE' to
+ point to the directories where the GNU CC executables
+ (`gcc-cpp.exe', `gcc-cc1.exe', etc.) and the C include files are
+ kept respectively. This should be done with the commands:
+
+ $ assign /system /translation=concealed -
+ disk:[gcc.] gnu_cc
+ $ assign /system /translation=concealed -
+ disk:[gcc.include.] gnu_cc_include
+
+ with the appropriate disk and directory names. These commands can
+ be placed in your system startup file so they will be executed
+ whenever the machine is rebooted. You may, if you choose, do this
+ via the `GCC_INSTALL.COM' script in the `[GCC]' directory.
+
+ 2. Install the `GCC' command with the command line:
+
+ $ set command /table=sys$common:[syslib]dcltables -
+ /output=sys$common:[syslib]dcltables gnu_cc:[000000]gcc
+ $ install replace sys$common:[syslib]dcltables
+
+ 3. To install the help file, do the following:
+
+ $ library/help sys$library:helplib.hlb gcc.hlp
+
+ Now you can invoke the compiler with a command like `gcc /verbose
+ file.c', which is equivalent to the command `gcc -v -c file.c' in
+ Unix.
+
+ If you wish to use GNU C++ you must first install GNU CC, and then
+perform the following steps:
+
+ 1. Define the VMS logical name `GNU_GXX_INCLUDE' to point to the
+ directory where the preprocessor will search for the C++ header
+ files. This can be done with the command:
+
+ $ assign /system /translation=concealed -
+ disk:[gcc.gxx_include.] gnu_gxx_include
+
+ with the appropriate disk and directory name. If you are going to
+ be using libg++, this is where the libg++ install procedure will
+ install the libg++ header files.
+
+ 2. Obtain the file `gcc-cc1plus.exe', and place this in the same
+ directory that `gcc-cc1.exe' is kept.
+
+ The GNU C++ compiler can be invoked with a command like `gcc /plus
+ /verbose file.cc', which is equivalent to the command `g++ -v -c
+ file.cc' in Unix.
+
+ We try to put corresponding binaries and sources on the VMS
+distribution tape. But sometimes the binaries will be from an older
+version than the sources, because we don't always have time to update
+them. (Use the `/version' option to determine the version number of
+the binaries and compare it with the source file `version.c' to tell
+whether this is so.) In this case, you should use the binaries you get
+to recompile the sources. If you must recompile, here is how:
+
+ 1. Execute the command procedure `vmsconfig.com' to set up the files
+ `tm.h', `config.h', `aux-output.c', and `md.', and to create files
+ `tconfig.h' and `hconfig.h'. This procedure also creates several
+ linker option files used by `make-cc1.com' and a data file used by
+ `make-l2.com'.
+
+ $ @vmsconfig.com
+
+ 2. Setup the logical names and command tables as defined above. In
+ addition, define the VMS logical name `GNU_BISON' to point at the
+ to the directories where the Bison executable is kept. This
+ should be done with the command:
+
+ $ assign /system /translation=concealed -
+ disk:[bison.] gnu_bison
+
+ You may, if you choose, use the `INSTALL_BISON.COM' script in the
+ `[BISON]' directory.
+
+ 3. Install the `BISON' command with the command line:
+
+ $ set command /table=sys$common:[syslib]dcltables -
+ /output=sys$common:[syslib]dcltables -
+ gnu_bison:[000000]bison
+ $ install replace sys$common:[syslib]dcltables
+
+ 4. Type `@make-gcc' to recompile everything (alternatively, submit
+ the file `make-gcc.com' to a batch queue). If you wish to build
+ the GNU C++ compiler as well as the GNU CC compiler, you must
+ first edit `make-gcc.com' and follow the instructions that appear
+ in the comments.
+
+ 5. In order to use GCC, you need a library of functions which GCC
+ compiled code will call to perform certain tasks, and these
+ functions are defined in the file `libgcc2.c'. To compile this
+ you should use the command procedure `make-l2.com', which will
+ generate the library `libgcc2.olb'. `libgcc2.olb' should be built
+ using the compiler built from the same distribution that
+ `libgcc2.c' came from, and `make-gcc.com' will automatically do
+ all of this for you.
+
+ To install the library, use the following commands:
+
+ $ library gnu_cc:[000000]gcclib/delete=(new,eprintf)
+ $ library gnu_cc:[000000]gcclib/delete=L_*
+ $ library libgcc2/extract=*/output=libgcc2.obj
+ $ library gnu_cc:[000000]gcclib libgcc2.obj
+
+ The first command simply removes old modules that will be replaced
+ with modules from `libgcc2' under different module names. The
+ modules `new' and `eprintf' may not actually be present in your
+ `gcclib.olb'--if the VMS librarian complains about those modules
+ not being present, simply ignore the message and continue on with
+ the next command. The second command removes the modules that
+ came from the previous version of the library `libgcc2.c'.
+
+ Whenever you update the compiler on your system, you should also
+ update the library with the above procedure.
+
+ 6. You may wish to build GCC in such a way that no files are written
+ to the directory where the source files reside. An example would
+ be the when the source files are on a read-only disk. In these
+ cases, execute the following DCL commands (substituting your
+ actual path names):
+
+ $ assign dua0:[gcc.build_dir.]/translation=concealed, -
+ dua1:[gcc.source_dir.]/translation=concealed gcc_build
+ $ set default gcc_build:[000000]
+
+ where the directory `dua1:[gcc.source_dir]' contains the source
+ code, and the directory `dua0:[gcc.build_dir]' is meant to contain
+ all of the generated object files and executables. Once you have
+ done this, you can proceed building GCC as described above. (Keep
+ in mind that `gcc_build' is a rooted logical name, and thus the
+ device names in each element of the search list must be an actual
+ physical device name rather than another rooted logical name).
+
+ 7. *If you are building GNU CC with a previous version of GNU CC, you
+ also should check to see that you have the newest version of the
+ assembler*. In particular, GNU CC version 2 treats global constant
+ variables slightly differently from GNU CC version 1, and GAS
+ version 1.38.1 does not have the patches required to work with GCC
+ version 2. If you use GAS 1.38.1, then `extern const' variables
+ will not have the read-only bit set, and the linker will generate
+ warning messages about mismatched psect attributes for these
+ variables. These warning messages are merely a nuisance, and can
+ safely be ignored.
+
+ If you are compiling with a version of GNU CC older than 1.33,
+ specify `/DEFINE=("inline=")' as an option in all the
+ compilations. This requires editing all the `gcc' commands in
+ `make-cc1.com'. (The older versions had problems supporting
+ `inline'.) Once you have a working 1.33 or newer GNU CC, you can
+ change this file back.
+
+ 8. If you want to build GNU CC with the VAX C compiler, you will need
+ to make minor changes in `make-cccp.com' and `make-cc1.com' to
+ choose alternate definitions of `CC', `CFLAGS', and `LIBS'. See
+ comments in those files. However, you must also have a working
+ version of the GNU assembler (GNU as, aka GAS) as it is used as
+ the back-end for GNU CC to produce binary object modules and is
+ not included in the GNU CC sources. GAS is also needed to compile
+ `libgcc2' in order to build `gcclib' (see above); `make-l2.com'
+ expects to be able to find it operational in
+ `gnu_cc:[000000]gnu-as.exe'.
+
+ To use GNU CC on VMS, you need the VMS driver programs `gcc.exe',
+ `gcc.com', and `gcc.cld'. They are distributed with the VMS
+ binaries (`gcc-vms') rather than the GNU CC sources. GAS is also
+ included in `gcc-vms', as is Bison.
+
+ Once you have successfully built GNU CC with VAX C, you should use
+ the resulting compiler to rebuild itself. Before doing this, be
+ sure to restore the `CC', `CFLAGS', and `LIBS' definitions in
+ `make-cccp.com' and `make-cc1.com'. The second generation
+ compiler will be able to take advantage of many optimizations that
+ must be suppressed when building with other compilers.
+
+ Under previous versions of GNU CC, the generated code would
+occasionally give strange results when linked with the sharable
+`VAXCRTL' library. Now this should work.
+
+ Even with this version, however, GNU CC itself should not be linked
+with the sharable `VAXCRTL'. The version of `qsort' in `VAXCRTL' has a
+bug (known to be present in VMS versions V4.6 through V5.5) which
+causes the compiler to fail.
+
+ The executables are generated by `make-cc1.com' and `make-cccp.com'
+use the object library version of `VAXCRTL' in order to make use of the
+`qsort' routine in `gcclib.olb'. If you wish to link the compiler
+executables with the shareable image version of `VAXCRTL', you should
+edit the file `tm.h' (created by `vmsconfig.com') to define the macro
+`QSORT_WORKAROUND'.
+
+ `QSORT_WORKAROUND' is always defined when GNU CC is compiled with
+VAX C, to avoid a problem in case `gcclib.olb' is not yet available.
+
+`collect2'
+==========
+
+ Many target systems do not have support in the assembler and linker
+for "constructors"--initialization functions to be called before the
+official "start" of `main'. On such systems, GNU CC uses a utility
+called `collect2' to arrange to call these functions at start time.
+
+ The program `collect2' works by linking the program once and looking
+through the linker output file for symbols with particular names
+indicating they are constructor functions. If it finds any, it creates
+a new temporary `.c' file containing a table of them, compiles it, and
+links the program a second time including that file.
+
+ The actual calls to the constructors are carried out by a subroutine
+called `__main', which is called (automatically) at the beginning of
+the body of `main' (provided `main' was compiled with GNU CC). Calling
+`__main' is necessary, even when compiling C code, to allow linking C
+and C++ object code together. (If you use `-nostdlib', you get an
+unresolved reference to `__main', since it's defined in the standard
+GCC library. Include `-lgcc' at the end of your compiler command line
+to resolve this reference.)
+
+ The program `collect2' is installed as `ld' in the directory where
+the passes of the compiler are installed. When `collect2' needs to
+find the *real* `ld', it tries the following file names:
+
+ * `real-ld' in the directories listed in the compiler's search
+ directories.
+
+ * `real-ld' in the directories listed in the environment variable
+ `PATH'.
+
+ * The file specified in the `REAL_LD_FILE_NAME' configuration macro,
+ if specified.
+
+ * `ld' in the compiler's search directories, except that `collect2'
+ will not execute itself recursively.
+
+ * `ld' in `PATH'.
+
+ "The compiler's search directories" means all the directories where
+`gcc' searches for passes of the compiler. This includes directories
+that you specify with `-B'.
+
+ Cross-compilers search a little differently:
+
+ * `real-ld' in the compiler's search directories.
+
+ * `TARGET-real-ld' in `PATH'.
+
+ * The file specified in the `REAL_LD_FILE_NAME' configuration macro,
+ if specified.
+
+ * `ld' in the compiler's search directories.
+
+ * `TARGET-ld' in `PATH'.
+
+ `collect2' explicitly avoids running `ld' using the file name under
+which `collect2' itself was invoked. In fact, it remembers up a list
+of such names--in case one copy of `collect2' finds another copy (or
+version) of `collect2' installed as `ld' in a second place in the
+search path.
+
+ `collect2' searches for the utilities `nm' and `strip' using the
+same algorithm as above for `ld'.
+
+Standard Header File Directories
+================================
+
+ `GCC_INCLUDE_DIR' means the same thing for native and cross. It is
+where GNU CC stores its private include files, and also where GNU CC
+stores the fixed include files. A cross compiled GNU CC runs
+`fixincludes' on the header files in `$(tooldir)/include'. (If the
+cross compilation header files need to be fixed, they must be installed
+before GNU CC is built. If the cross compilation header files are
+already suitable for ANSI C and GNU CC, nothing special need be done).
+
+ `GPLUS_INCLUDE_DIR' means the same thing for native and cross. It
+is where `g++' looks first for header files. `libg++' installs only
+target independent header files in that directory.
+
+ `LOCAL_INCLUDE_DIR' is used only for a native compiler. It is
+normally `/usr/local/include'. GNU CC searches this directory so that
+users can install header files in `/usr/local/include'.
+
+ `CROSS_INCLUDE_DIR' is used only for a cross compiler. GNU CC
+doesn't install anything there.
+
+ `TOOL_INCLUDE_DIR' is used for both native and cross compilers. It
+is the place for other packages to install header files that GNU CC will
+use. For a cross-compiler, this is the equivalent of `/usr/include'.
+When you build a cross-compiler, `fixincludes' processes any header
+files in this directory.
+
diff --git a/gcc/NEWS b/gcc/NEWS
index 04d8a7c1017..6483738327d 100644
--- a/gcc/NEWS
+++ b/gcc/NEWS
@@ -3,12 +3,17 @@ Noteworthy changes in GCC version 2.8.0:
The -specs=file switch allows you to override default specs used in invoking
programs like cc1, as, etc.
+Options -Wall and -Wimplicit now cause GCC to warn about implicit int
+in declarations (e.g. `register i;'), since the C Standard committee
+has decided to disallow this in the next revision of the standard.
+
The following new targets are supported:
Solaris 2.5 running on UltraSPARC's.
The sparclet cpu (a.out file format).
Solaris 2.51 running on PowerPC's.
Linux running on PowerPC's.
+ Embedded target m32r-elf.
New features for the Hitachi H8/300(H).
@@ -23,6 +28,17 @@ New features for SPARC-based systems:
-mtune=xxx
-mimpure-text and -mno-impure-text
+New features for all rs6000 and PowerPC systems:
+
+ -mcpu=604e
+ -mcpu=801
+ -mcpu=823
+ -mtune=xxx
+ -mupdate
+ -mno-update
+ -mfused-madd
+ -mno-fused-madd
+
New features for PowerPC-based systems running either System V, Linux, Solaris,
or embedded systems:
@@ -33,10 +49,16 @@ or embedded systems:
-mcall-sysv-eabi
-mcall-sysv-noeabi
-msdata
+ -msdata=none
+ -msdata=default
+ -msdata=sysv
+ -msdata=eabi
-memb
- -mtune=xxx
-msim
-mmvme
+ wchar_t is now of type long, not unsigned short as per ABI.
+ -p/-pg support
+ -mcpu=403 now implies -mstrict-align.
Options -mno-v8 and -mno-sparclite are no longer supported on SPARC
targets. Options -mcypress, -mv8, -msupersparc, -msparclite, -mf930,
diff --git a/gcc/ORDERS b/gcc/ORDERS
new file mode 100644
index 00000000000..ac183c9d4c6
--- /dev/null
+++ b/gcc/ORDERS
@@ -0,0 +1,4003 @@
+The actual order form follows the descriptions of media contents.
+
+Most of this file is excerpted from the January 1997 GNU's Bulletin.
+
+Please send suggestions for improvements to gnu@prep.ai.mit.edu or the postal
+address at the end of the order form. Thank You.
+
+-----------------------------------------------------------------------------
+
+
+FSF Order Form with Descriptions January, 1997
+
+
+
+Free Software Foundation, Inc. Telephone: +1-617-542-5942
+59 Temple Place - Suite 330 Fax: (including Japan) +1-617-542-2652
+Boston, MA 02111-1307 Electronic Mail: `gnu@prep.ai.mit.edu'
+USA World Wide Web: http://www.gnu.ai.mit.edu
+
+-----------------------------------------------------------------------------
+
+
+
+There are some sections (e.g. ``Forthcoming GNUs'' and ``How to Get GNU
+Software'') which are not in this Order Form file. If you wish to see them,
+ask gnu@prep.ai.mit.edu for the complete July, 1996 GNU's Bulletin.
+
+
+
+Table of Contents
+-----------------
+
+ Donations Translate Into Free Software
+ Cygnus Matches Donations!
+ Free Software Redistributors Donate
+ Help from Free Software Companies
+ Major Changes in GNU Software and Documentation
+ The Deluxe Distribution
+ GNU Documentation
+ GNU Software
+
+ Program/Package Cross Reference
+ CD-ROMs
+ Pricing of the GNU CD-ROMs
+ What Do the Different Prices Mean?
+ Why Is There an Individual Price?
+ Is There a Maximum Price?
+ January 1997 Compiler Tools Binaries CD-ROM
+ Source Code CD-ROMs
+ January 1997 Source Code CD-ROMs
+ July 1996 Source Code CD-ROMs
+ CD-ROM Subscription Service
+ FSF T-shirt
+ Free Software Foundation Order Form
+
+
+-----------------------------------------------------------------------------
+
+
+
+Donations Translate Into Free Software
+**************************************
+
+If you appreciate Emacs, GNU CC, Ghostscript, and other free software, you
+may wish to help us make sure there is more in the future--remember,
+*donations translate into more free software!*
+
+Your donation to us is tax-deductible in the United States. We gladly accept
+*any* currency, although the U.S. dollar is the most convenient.
+
+If your employer has a matching gifts program for charitable donations,
+please arrange to: add the FSF to the list of organizations for your
+employer's matching gifts program; and have your donation matched (note *Note
+Cygnus Matches Donations!::). If you do not know, please ask your personnel
+department.
+
+Circle amount you are donating, cut out this form, and send it with your
+donation to:
+
+ Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330
+ Boston, MA 02111-1307
+ USA
+
+ $500 $250 $100 $50 Other $_____ Other currency:_____
+
+You can charge a donation to any of Carte Blanche, Diner's Club, JCB,
+MasterCard, Visa, or American Express. Charges may also be faxed to
++1-617-542-2652.
+
+ Card type: __________________ Expiration Date: _____________
+
+ Account Number: _____________________________________________
+
+ Cardholder's Signature: _____________________________________
+
+ Name: _______________________________________________________
+
+ Street Address: _____________________________________________
+
+ City/State/Province: ________________________________________
+
+ Zip Code/Postal Code/Country: _______________________________
+
+ Telephone Number: ___________________________________________
+
+ Email Address: ______________________________________________
+
+
+
+Cygnus Matches Donations!
+*************************
+
+To encourage cash donations to the Free Software Foundation, Cygnus Solutions
+will continue to contribute corporate funds to the FSF to accompany gifts by
+its employees, and by its customers and their employees.
+
+Donations payable to the Free Software Foundation should be sent by eligible
+persons to Cygnus Solutions, which will add its gifts and forward the total
+to the FSF each quarter. The FSF will provide the contributor with a receipt
+to recognize the contribution (which is tax-deductible on U.S. tax returns).
+To see if your employer is a Cygnus customer, or for more information,
+please contact Cygnus:
+
+ Cygnus Solutions
+ 1325 Chesapeake Terrace
+ Sunnyvale, CA 94089
+ USA
+
+ Telephone: +1 408 542 9600
+ +1 800 Cygnus1 (-294-6871)
+ Fax: +1 408 542 9700
+ Electronic-Mail: `info@cygnus.com'
+ FTP: `ftp.cygnus.com'
+ World Wide Web: `http://www.Cygnus.com/'
+
+
+
+Free Software Redistributors Donate
+***********************************
+
+In adddition to their conference donation, Red Hat Software has agreed to
+donate $1.00 to the FSF for every copy of Red Hat Archives sold. They have
+also added a GNU logo to the back of that CD with the words "Supports the
+Free Software Foundation".
+
+The SNOW 2.1 CD producers added the words "Includes $5 donation to the FSF"
+to the front of their CD. Potential buyers will know just how much of the
+price is for the FSF & how much is for the redistributor.
+
+The Sun Users Group Deutschland has made it even clearer: their CD says,
+"Price 90 DM, + 12 DM donation to the FSF." We thank them for their
+contribution to our efforts.
+
+Kyoto Micro Computer of Japan regularly gives us 10% of their GNU-related
+sales.
+
+Mr. Hiroshi, Mr. Kojima, and the other authors of the `Linux Primer' in Japan
+have donated money from the sales of their book.
+
+Infomagic has continued to make sizeable donations to the FSF.
+
+At the request of author Arnold Robbins, Specialized Systems Consultants, Inc.
+continues to donate 3% of their profits from selling `Effective AWK
+Programming'. We would also like to acknowledge the many SSC authors who
+have donated their royalties and fees to the FSF.
+
+In the long run, the success of free software depends on how much new free
+software people develop. Free software distribution offers an opportunity to
+raise funds for such development in an ethical way. These redistributors
+have made use of the opportunity. Many others let it go to waste.
+
+You can help promote free software development by convincing for-a-fee
+redistributors to contribute--either by doing development themselves or by
+donating to development organizations (the FSF and others).
+
+The way to convince distributors to contribute is to demand and expect this
+of them. This means choosing among distributors partly by how much they give
+to free software development. Then you can show distributors they must
+compete to be the one who gives the most.
+
+To make this work, you must insist on numbers that you can compare, such as,
+"We will give ten dollars to the Foobar project for each disk sold." A vague
+commitment, such as "A portion of the profits is donated," doesn't give you a
+basis for comparison. Even a precise fraction "of the profits from this
+disk" is not very meaningful, since creative accounting and unrelated
+business decisions can greatly alter what fraction of the sales price counts
+as profit.
+
+Also, press developers for firm information about what kind of development
+they do or support. Some kinds make much more long-term difference than
+others. For example, maintaining a separate version of a GNU program
+contributes very little; maintaining a program on behalf of the GNU Project
+<contributes much. Easy new ports contribute little, since someone else
+would surely do them; difficult ports such as adding a new CPU to the GNU
+compiler or Mach contribute more; major new features & programs contribute
+the most.
+
+By establishing the idea that supporting further development is "the proper
+thing to do" when distributing free software for a fee, we can assure a
+steady flow of resources for making more free software.
+
+
+
+Help from Free Software Companies
+*********************************
+
+When choosing a free software business, ask those you are considering how
+much they do to assist free software development, e.g., by contributing money
+to free software development or by writing free software improvements
+themselves for general use. By basing your decision partially on this
+factor, you can help encourage those who profit from free software to
+contribute to its growth.
+
+Wingnut (SRA's special GNU support group) regularly donates a part of its
+income to the FSF to support the development of new GNU programs. Listing
+them here is our way of thanking them. Wingnut has made a pledge to donate
+10% of their income to the FSF, and has purchased several Deluxe Distribution
+packages in Japan. Also see *Note Cygnus Matches Donations!::.
+
+ Wingnut Project
+ Software Research Associates, Inc.
+ 1-1-1 Hirakawa-cho, Chiyoda-ku
+ Tokyo 102, Japan
+
+ Phone: (+81-3)3234-2611
+ Fax: (+81-3)3942-5174
+ E-mail: `info-wingnut@sra.co.jp'
+ WWW: `http://www.sra.co.jp/public/sra/product/wingnut/'
+
+
+
+Major Changes in GNU Software and Documentation
+***********************************************
+
+ * Hurd Progress (Also *note What Is the Hurd::.)
+
+ We have made two test releases of the Hurd, and we will make another
+ (version 0.2) in this month. Stability is improving, and we have begun
+ modifying various user-level utilities to understand new Hurd filesystem
+ features (fileutils, shellutils, tar, etc.).
+
+ One way for people to help out is to compile and run as much third-party
+ free software as they can; in this way we can find bugs and deficiencies
+ with some rapidity. Volunteers with a PC are therefore eagerly sought
+ to get the new 0.2 release and compile their favorite Unix programs and
+ games.
+
+ * GNU System Progress
+
+ Version 0.2 of the GNU system will be released in this month, to coincide
+ with the 0.2 release of the Hurd. This complete GNU system is available
+ by FTP. We are working with Ian Murdock to develop an excellent package
+ management system for GNU. This will make administering and upgrading
+ the system much easier. Because of features only the Hurd has, the GNU
+ package management system will be simpler and more featureful than
+ similar package systems for various GNU/Linux distributions.
+
+ * New Source Code CD! (See *Note January 1997 Source Code CD-ROMs::)
+
+ We are releasing the January 1997 (Edition 9) Source Code CD-ROM this
+ month. Once again, it is a two disk set. It includes several new
+ programs: `gforth', `gpc', <Meta-HTML>, `stow', `units', VRweb, `wget',
+ `windows32api', and `xinfo'. On the CD-ROMs are full distributions of
+ X11R6.3, MIT Scheme, Emacs, GCC, and current versions of all other GNU
+ Software. *Note GNU Software::, for more about these packages.
+
+ * New Compiler Tools CD-ROM
+
+ We are releasing the January 1997 (Edition 4) Compiler Tools Binaries
+ CD. Support is included for several new operating systems.
+
+ The Compiler Tools Binaries CD-ROM contains executables of the GNU
+ compiler tools for some systems that don't normally come with a
+ compiler. This allows users of those systems to compile their own
+ software without having to buy a proprietary compiler.
+
+ We hope to include more systems with each update of this CD-ROM. If you
+ can help build binaries for new systems or have one to suggest, please
+ contact us at either address on the top menu. For more information, see
+ *Note Compiler Tools Binaries CD-ROM::.
+
+ * New/Updated Manuals since Last Bulletin (See *Note Documentation::)
+
+ Since the last bulletin, we have published new editions of: `Debugging
+ with GDB', for version 4.16 with a new color cover; `Texinfo' Manual,
+ edition 2.24; & the `GNU Emacs Manual', for version 19.33 with a new
+ color cover. `Using and Porting GNU CC' has been re-printed in a
+ lay-flat bound edition with a new color cover. A new Bison Manual with
+ a new color cover is planned.
+
+ * Give to GNU the United Way!
+
+ As a 501(c)3 tax-exempt organization, the FSF is eligible to receive
+ United Way funds. When donating to United Way, one can specify that all
+ or part of the donation be directed to the FSF. On the donor form,
+ check the "Specific Requests" box and include the sentence, "Send my
+ gift to the Free Software Foundation, 59 Temple Place, Suite 330,
+ Boston, MA 02111." We especially appreciate the donations from Microsoft
+ matching the United Way donations of their employees. Also see *Note
+ Donations Translate Into Free Software:: and *Note Cygnus Matches
+ Donations!::.
+
+ * GNU Software Works on MS-DOS (Also *note GNU Software::.)
+
+ GNU Emacs 19 and many other GNU programs have been ported to MS-DOS for
+ i386/i486/Pentium machines. We ship binaries & sources on the *Note
+ Compiler Tools Binaries CD-ROM::.
+
+ * MULE Merge Almost Complete
+
+ MULE is the Multi-Lingual Emacs developed by Ken'ichi Handa at the
+ Electro-Technical Lab in Tsukuba, Japan. Handa has readied the code for
+ merging into Emacs and we expect to complete the merge soon.
+
+ * GCC (For current status on GCC and GNAT, *note GNU Software::.)
+
+ New front ends for GCC are being done for Pascal & Chill. Pascal,
+ `gpc', stagnated for some years, but should be released by the time you
+ read this. See `http://agnes.dida.physik.uni-essen.de/~gnu-pascal'.
+
+ * GUILE
+
+ GUILE is currently available as a test release. GNU's Ubiquitous
+ Intelligent Language for Extension is an SCM-based library that can make
+ any ordinary C program extensible. (For SCM info, see "JACAL" in *Note
+ GNU Software::.)
+
+ Also being developed are SCSH-compatible system call & Tk interfaces, a
+ module system, dynamic linking support, & a byte-code interpreter.
+ Support for Emacs Lisp & a more C-like language is coming.
+
+ * Texinfo (For current status, *note GNU Software::.)
+
+ Texinfo now provides macro facilities and supports multicolumn tables.
+ It comes with an `install-info' program that packages can use to update
+ the `dir' file automatically when they install their Info files.
+
+ * GNU Common Lisp (For current status, *note GNU Software::.)
+
+ Version 2.2.1 of GNU Common Lisp (GCL) was released in December '96. It
+ now includes a graphical interface to the Tk widget system. All
+ documentation is now Texinfo-based, with built-in regexp matching used
+ to access the documentation. A first pass at the Common Lisp condition
+ system is also included. Version 2.2.1 contains mainly updates to allow
+ GCL 2.2 to work correctly with current operating system levels, and to
+ fix bugs. Volunteers to help with the move to the ANSI standard are
+ most welcome; please contact `schelter@math.utexas.edu'.
+
+ * Experimental Electronic Cash
+
+ `http://www.lysator.liu.se/~nisse/NCash' is an experimental
+ implementation of anonymous electronic cash which is to be released as
+ free software.
+
+ * HTML Professional and GPL
+
+ The recent development and release of HTML Professional was made under
+ the terms of the GNU GPL. In order to facilitate distribution, the GPL
+ text was re-encoded into this more recent version of HTML, and is now
+ distributed with HTML Pro. An online copy can be retrieved at
+ `http://www.arbornet.org/~silmaril/dtds/html/gnugpl.html'.
+
+ HTML Pro is an unofficial version of the HTML DTD. HTML Pro is
+ distributed for discussion by the `www-html' mailing list. It
+ composites all other known versions, and allows World Wide Web designers
+ to use recent experimental additions in a rational and structured manner.
+ It comes with a `.ced' file for GNU Emacs/psgml-mode and can be gotten at
+ `ftp://www.ucc.ie/pub/html/htmlpro.{zip|tar.gz|zip.hqx}'.
+ Documentation is at
+ `http://www.arbornet.org/~silmaril/dtds/html/htmlpro.html'.
+
+ * Meta-HTML 5.01 Source Release
+
+ Version 5.01 of Universal Access Inc.'s <Meta-HTML> is now available.
+
+ <Meta-HTML> is a programming language specifically designed to work
+ within the environment of the World Wide Web. Although it is a genuine
+ programming language, suitable for large-scale symbolic manipulation,
+ <Meta-HTML> also provides the most commonly wanted Web functionality as
+ built-in primitives, so you don't have to write them. You can find out
+ more about the theory of implementation in this white paper
+ `http://www.metahtml.com/meta-html/manifesto.html'.
+
+ Web pages are authored using HTML and <Meta-HTML> statements freely
+ intermixed. When a page is requested by a browser, the page is passed
+ through the <Meta-HTML> engine, which dynamically processes any
+ <Meta-HTML> statements to produce a final HTML page which is delivered
+ to the browser.
+
+ The source distribution provides several different interpreter options:
+ a CGI engine which can be run by any Unix Web server; a full-featured
+ Web server (mhttpd) with the interpreter built in; a standalone
+ processor, much like Perl or Tcl; and an interactive debugger, with a
+ feel similar to GDB (mdb).
+
+ There is a user mailing list: `metahtml-users@metahtml.com'. You can
+ subscribe on the Web at `http://www.metahtml.com/E-Mail/', or by sending
+ mail to `metahtml-users-request@metahtml.com'.
+
+ Pre-compiled distribution sets for some systems are available via the
+ <Meta-HTML> Web site at `http://www.metahtml.com'.
+
+ * VRweb Browser
+
+ VRweb, a browser for 3D models on the Web written in the Virtual Reality
+ Modeling Language (VRML), is now available under the GPL. VRweb works
+ in conjunction with Web browsers on Unix & Windows platforms.
+
+ VRweb is a joint project of IICM (home of Hyper-G), NCSA (home of
+ Mosaic), & the University of Minnesota (home of Gopher). The software
+ is freely available in binary & source. VRweb 1.2 for Unix has just
+ been released, VRweb 1.2 for Windows will follow in due course. You can
+ download VRweb from `ftp://iicm.tu-graz.ac.at/pub/Hyper-G/VRweb/UNIX'
+ and numerous mirror sites. Further information on VRweb can be found at
+ `http://hyperg.iicm.tu-graz.ac.at/vrweb'.
+
+ VRML is a non-proprietary, platform-independent file format for 3D
+ graphics on the Internet. Also see `http://www.sdsc.edu/vrml/', the
+ VRML Repository.
+
+
+
+The Deluxe Distribution
+***********************
+
+The Free Software Foundation has been asked repeatedly to create a package
+that provides executables for all of our software. Normally we offer only
+sources. The Deluxe Distribution provides binaries with the source code and
+includes six T-shirts, all our CD-ROMs, printed manuals, & reference cards.
+
+The FSF Deluxe Distribution contains the binaries and sources to hundreds of
+different programs including Emacs, the GNU C/C++ Compiler, the GNU Debugger,
+the complete X Window System, and all the GNU utilities.
+
+We will make a Deluxe Distribution for most machines/operating systems. We
+may be able to send someone to your office to do the compilation, if we can't
+find a suitable machine here. However, we can only compile the programs that
+already support your chosen machine/system - porting is a separate matter.
+(To commission a port, see the GNU Service Directory; details in *Note Free
+Software Support::.) Compiling all these programs takes time; a Deluxe
+Distribution for an unusual machine will take longer to produce than one for
+a common machine. Please contact the FSF Office with any questions.
+
+We supply the software on a write-once CD-ROM (in ISO 9660 format with "Rock
+Ridge" extensions), or on one of these tapes in Unix `tar' format: 1600 or
+6250bpi 1/2in reel, Sun DC300XLP 1/4in cartridge - QIC24, IBM RS/6000 1/4in
+c.t. - QIC 150, Exabyte 8mm c.t., or DAT 4mm c.t. If your computer cannot
+read any of these, please contact us to see if we can handle your format.
+
+The manuals included are one each of `Bison', `Calc', `GAWK', `GCC', `GNU C
+Library', `GDB', `Flex', `GNU Emacs Lisp Reference', `Programming in Emacs
+Lisp: An Introduction', `Make', `Texinfo', & `Termcap' manuals; six copies of
+the `GNU Emacs' manual; and ten reference cards each for Emacs, Bison, Calc,
+Flex, & GDB.
+
+Every Deluxe Distribution also has a copy of the latest editions of our
+CD-ROMs that have sources of our software & compiler tool binaries for some
+systems. The CDs are in ISO 9660 format with Rock Ridge extensions.
+
+The price of the Deluxe Distribution is $5000 (shipping included). These
+sales provide enormous financial assistance to help the FSF develop more free
+software. To order, please fill out the "Deluxe Distribution" section on the
+*note Free Software Foundation Order Form::. and send it to:
+
+ Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330
+ Boston, MA 02111-1307
+ USA
+
+ Telephone: +1-617-542-5942
+ Fax (including Japan): +1-617-542-2652
+ Electronic Mail: gnu@prep.ai.mit.edu
+ World Wide Web: http://www.gnu.ai.mit.edu
+
+
+
+GNU Documentation
+*****************
+
+GNU is dedicated to having quality, easy-to-use online & printed
+documentation. GNU manuals are intended to explain underlying concepts,
+describe how to use all the features of each program, & give examples of
+command use. GNU manuals are distributed as Texinfo source files, which
+yield both typeset hardcopy via the TeX document formatting system and online
+hypertext display via the menu-driven Info system. Source for these manuals
+comes with our software; here are the manuals that we publish as printed
+books. See the *note Free Software Foundation Order Form::., to order them.
+
+Most GNU manuals are bound as soft cover books with "lay-flat" bindings.
+This allows you to open them so they lie flat on a table without creasing the
+binding. They have an inner cloth spine and an outer cardboard cover that
+will not break or crease as an ordinary paperback will. Currently, the
+`Using and Porting GNU CC', `GDB', `Emacs', `Emacs Lisp Reference',
+`Programming in Emacs Lisp: An Introduction', `GNU Awk User's Guide', `Make',
+& `Bison' manuals have this binding. Our other manuals also lie flat when
+opened, using a GBC binding. Our manuals are 7in by 9.25in except the 8.5in
+by 11in `Calc' manual.
+
+The edition number of the manual and version number of the program listed
+after each manual's name were current at the time this Bulletin was published.
+
+`Debugging with GDB' (for Version 4.16) tells how to run your program under
+GNU Debugger control, examine and alter data, modify a program's flow of
+control, and use GDB through GNU Emacs.
+
+The `GNU Emacs Manual' (12th Edition for Version 19.33) describes editing with
+GNU Emacs. It explains advanced features, including outline mode and regular
+expression search; how to use special programming modes to write languages
+like C++ and TeX; how to use the `tags' utility; how to compile and correct
+code; how to make your own keybindings; and other elementary customizations.
+
+`Programming in Emacs Lisp: An Introduction' (October 1995 Edition 1.04) is
+for people who are not necessarily interested in programming, but who do want
+to customize or extend their computing environment. If you read it in Emacs
+under Info mode, you can run the sample programs directly.
+
+`The GNU Emacs Lisp Reference Manual' (Edition 2.4 for Version 19.29) and
+`The GNU Emacs Lisp Reference, Japanese Edition' (Japanese Draft Revision
+1.0, from English Edition 2.4 for Version 19.29) cover this programming
+language in depth, including data types, control structures, functions,
+macros, syntax tables, searching/matching, modes, windows, keymaps, byte
+compilation, and the operating system interface.
+
+`The GNU Awk User's Guide' (Edition 1.0 for Version 3.0) tells how to use
+`gawk'. It is written for those who have never used `awk' and describes
+features of this powerful string and record manipulation language. It
+clearly delineates those features which are part of POSIX `awk' from `gawk'
+extensions, providing a comprehensive guide to `awk' program portability.
+
+`GNU Make' (Edition 0.50 for Version 3.75 Beta) describes GNU `make', a
+program used to rebuild parts of other programs. The manual tells how to
+write "makefiles", which specify how a program is to be compiled and how its
+files depend on each other. Included are an introductory chapter for novice
+users and a section about automatically generated dependencies.
+
+The `Flex' manual (Edition 1.03 for Version 2.3.7) teaches you to write a
+lexical scanner definition for the `flex' program to create a C++ or C-coded
+scanner that recognizes the patterns defined. You need no prior knowledge of
+scanners.
+
+`The Bison Manual' (November 1995 Edition for Version 1.25) teaches you how
+to write context-free grammars for the Bison program that convert into
+C-coded parsers. You need no prior knowledge of parser generators.
+
+`Using and Porting GNU CC' (November 1995 Edition for Version 2.7.2) tells
+how to run, install, and port the GNU C Compiler to new systems. It lists
+new features and incompatibilities of GCC, but people not familiar with C
+will still need a good reference on the C programming language. It also
+covers G++.
+
+The `Texinfo' manual (Edition 2.24 for Version 3) explains the markup
+language that produces our online Info documentation & typeset hardcopies.
+It tells you how to make tables, lists, chapters, nodes, accented & special
+characters, indexes, cross references, & how to catch mistakes.
+
+`The Termcap Manual' (3rd Edition for Version 1.3), often described as "twice
+as much as you ever wanted to know about termcap," details the format of the
+termcap database, the definitions of terminal capabilities, and the process
+of interrogating a terminal description. This manual is primarily for
+programmers.
+
+The `C Library Reference Manual' (Edition 0.08 for Version 2.0) describes the
+library's facilities, including both what Unix calls "library functions" &
+"system calls." We are doing small copier runs of this manual until it
+becomes more stable. Please send fixes to `bug-glibc-manual@prep.ai.mit.edu'.
+
+The `Emacs Calc Manual' (for Version 2.02) is both a tutorial and a reference
+manual. It tells how to do ordinary arithmetic, how to use Calc for algebra,
+calculus, and other forms of mathematics, and how to extend Calc.
+
+
+
+GNU Software
+************
+
+All our software is available via FTP; see *Note How to Get GNU Software::.
+We also offer *Note CD-ROMs::, and printed *Note Documentation::, which
+includes manuals and reference cards. In the articles describing the
+contents of each medium, the version number listed after each program name
+was current when we published this Bulletin. When you order a newer CD-ROM,
+some of the programs may be newer and therefore the version number higher.
+See the *note Free Software Foundation Order Form::., for ordering
+information.
+
+Some of the contents of our FTP distributions are compressed. We have
+software on our FTP sites to uncompress these files. Due to patent troubles
+with `compress', we use another compression program, `gzip'. (Such
+prohibitions on software development are fought by the League for Programming
+Freedom; *note What Is the LPF::., for details.)
+
+You may need to build GNU `make' before you build our other software. Some
+vendors supply no `make' utility at all and some native `make' programs lack
+the `VPATH' feature essential for using the GNU configure system to its full
+extent. The GNU `make' sources have a shell script to build `make' itself on
+such systems.
+
+We welcome all bug reports and enhancements sent to the appropriate
+electronic mailing list (*note Free Software Support::.).
+
+
+
+Configuring GNU Software
+------------------------
+
+We are using Autoconf, a uniform scheme for configuring GNU software packages
+in order to compile them (see "Autoconf" and "Automake" below, in this
+article). The goal is to have all GNU software support the same alternatives
+for naming machine and system types.
+
+Ultimately, it will be possible to configure and build the entire system all
+at once, eliminating the need to configure each individual package separately.
+
+You can also specify both the host and target system to build
+cross-compilation tools. Most GNU programs now use Autoconf-generated
+configure scripts.
+
+
+
+GNU Software Now Available
+--------------------------
+
+For future programs and features, see *Note Forthcoming GNUs::.
+
+Key to cross reference:
+
+ BinCD January 1997 Binaries CD-ROM
+ SrcCD January 1997 Source CD-ROMs
+
+[FSFman] shows that we sell a manual for that package. [FSFrc] shows we sell
+a reference card for that package. To order them, see the *note Free
+Software Foundation Order Form::. *Note Documentation::, for more
+information on the manuals. Source code for each manual or reference card is
+included with each package.
+
+ * `acm' (SrcCD)
+
+ `acm' is a LAN-oriented, multiplayer, aerial combat simulation that runs
+ under the X Window System. Players engage in air to air combat against
+ one another using heat seeking missiles and cannons. We are working on
+ a more accurate simulation of real airplane flight characteristics.
+
+ * Apache *Also see* `http://www.apache.org/' (SrcCD)
+
+ Apache is an HTTP server designed as a successor to the NCSA family of
+ web servers. It adds a significant amount of new functionality, has an
+ extensive API for modular enhancements, is extremely flexible without
+ compromising speed, and has an active development group and user
+ community.
+
+ * Autoconf (SrcCD)
+
+ Autoconf produces shell scripts which automatically configure source code
+ packages. These scripts adapt the packages to many kinds of Unix-like
+ systems without manual user intervention. Autoconf creates a script for
+ a package from a template file which lists the operating system features
+ which the package can use, in the form of `m4' macro calls. Autoconf
+ requires GNU `m4' to operate, but the resulting configure scripts it
+ generates do not.
+
+ * Automake (SrcCD)
+
+ Automake is a tool for generating `Makefile.in's for use with Autoconf.
+ The generated makefiles are compliant with GNU Makefile standards.
+
+ * BASH (SrcCD)
+
+ GNU's shell, BASH (Bourne Again SHell), is compatible with the Unix `sh'
+ and offers many extensions found in `csh' and `ksh'. BASH has job
+ control, `csh'-style command history, command-line editing (with Emacs
+ and `vi' modes built-in), and the ability to rebind keys via the
+ `readline' library. BASH conforms to the POSIX 1003.2-1992 standard.
+
+ * `bc' (SrcCD)
+
+ `bc' is an interactive algebraic language with arbitrary precision
+ numbers. GNU `bc' follows the POSIX 1003.2-1992 standard with several
+ extensions, including multi-character variable names, an `else'
+ statement, and full Boolean expressions. The RPN calculator `dc' is now
+ distributed as part of the same package, but GNU `bc' is not implemented
+ as a `dc' preprocessor.
+
+ * BFD (BinCD, SrcCD)
+
+ The Binary File Descriptor library allows a program which operates on
+ object files (e.g., `ld' or GDB) to support many different formats in a
+ clean way. BFD provides a portable interface, so that only BFD needs to
+ know the details of a particular format. One result is that all
+ programs using BFD will support formats such as a.out, COFF, and ELF.
+ BFD comes with Texinfo source for a manual (not yet published on paper).
+
+ At present, BFD is not distributed separately; it is included with
+ packages that use it.
+
+ * Binutils (BinCD, SrcCD)
+
+ Binutils includes these programs: `ar', `c++filt', `demangle', `gas',
+ `gprof', `ld', `nlmconv', `nm', `objcopy', `objdump', `ranlib', `size',
+ `strings', & `strip'.
+
+ Binutils version 2 uses the BFD library. The GNU assembler, `gas',
+ supports the a29k, Alpha, H8/300, H8/500, HP-PA, i386, i960, m68k, m88k,
+ MIPS, NS32K, SH, SPARC, Tahoe, Vax, and Z8000 CPUs, and attempts to be
+ compatible with many other assemblers for Unix and embedded systems. It
+ can produce mixed C and assembly listings, and includes a macro facility
+ similar to that in some other assemblers. GNU's linker, `ld', emits
+ source-line numbered error messages for multiply-defined symbols and
+ undefined references, and interprets a superset of AT&T's Linker Command
+ Language, which gives control over where segments are placed in memory.
+ `nlmconv' converts object files into Novell NetWare Loadable Modules.
+ `objdump' can disassemble code for most of the CPUs listed above, and
+ can display other data (e.g., symbols and relocations) from any file
+ format read by BFD.
+
+ * Bison *See *Note Documentation::* (BinCD, SrcCD) [FSFman, FSFrc]
+
+ Bison is an upwardly compatible replacement for the parser generator
+ `yacc'. Texinfo source for the `Bison Manual' and reference card are
+ included.
+
+ * C Library *See *Note Forthcoming GNUs::* (BinCD, SrcCD) [FSFman]
+
+ The GNU C library supports ISO C-1989, ISO C/amendment 1-1995, POSIX
+ 1003.1-1990, POSIX 1003.1b-1993, POSIX 1003.1c-1995 (when the underlying
+ system permits), & most of the functions in POSIX 1003.2-1992. It is
+ nearly compliant with the extended XPG4.2 specification which guarantees
+ upward compatibility with 4.4BSD & many System V functions.
+
+ When used with the GNU Hurd, the C Library performs many functions of the
+ Unix system calls directly. Mike Haertel has written a fast `malloc'
+ which wastes less memory than the old GNU version.
+
+ GNU `stdio' lets you define new kinds of streams, just by writing a few
+ C functions. Two methods for handling translated messages help writing
+ internationalized programs & the user can adopt the environment the
+ program runs in to conform with local conventions. Extended `getopt'
+ functions are already used to parse options, including long options, in
+ many GNU utilities. The name lookup functions now are modularized which
+ makes it easier to select the service which is needed for the specific
+ database & the document interface makes it easy to add new services.
+ Texinfo source for the `GNU C Library Reference Manual' is included
+ (*note Documentation::.).
+
+ Previous versions of the GNU C library ran on a large number of systems.
+ The architecture-dependent parts of the C library have not been updated
+ since development on version 2.0 started, so today it runs out of the
+ box only on GNU/Hurd (all platforms GNU/Hurd also runs on) & GNU/Linux
+ (ix86, Alpha, m68k, work is in progress for MIPS & Sparc). Other
+ architectures will become available again as soon as somebody does the
+ port.
+
+ * C++ Library (BinCD, SrcCD)
+
+ The GNU C++ library (libg++) contains an extensive collection of
+ container and utility classes, including Obstacks, multiple-precision
+ Integers and Rationals, Complex numbers, BitSets, and BitStrings.
+
+ The distribution also includes the libstdc++ library. This implements
+ library facilities defined by the forthcoming ANSI/ISO C++ standard,
+ including strings, the iostream library, and a port of the Standard
+ Template Library.
+
+ * Calc (SrcCD) [FSFman, FSFrc]
+
+ Calc (written by Dave Gillespie in Emacs Lisp) is an extensible, advanced
+ desk calculator & mathematical tool that runs as part of GNU Emacs. You
+ can use Calc as a simple four-function calculator, but it has many more
+ features including: choice of algebraic or RPN (stack-based) entry;
+ logarithmic, trigonometric, & financial functions; arbitrary precision;
+ complex numbers; vectors; matrices; dates; times; infinities; sets;
+ algebraic simplification; & differentiation & integration. It outputs to
+ `gnuplot', & comes with source for a manual & reference card (*note
+ Documentation::.).
+
+ * `cfengine' (SrcCD)
+
+ `cfengine' is used to maintain site-wide configuration of a
+ heterogeneous Unix network using a simple high level language. Its
+ appearance is similar to `rdist', but allows many more operations to be
+ performed automatically. See Mark Burgess, "A Site Configuration
+ Engine", `Computing Systems', Vol. 8, No. 3 (ask `office@usenix.org' how
+ to get a copy).
+
+ * Chess (SrcCD)
+
+ GNU Chess lets most modern computers play a full game of chess. It has
+ a plain terminal interface, a curses interface, & the unique X Windows
+ interface `xboard'. Best results are obtained using GNU C to compile
+ GNU Chess.
+
+ Recent improvements include "configure"-capability, correct thinking on
+ opponent's time, makefile for Windows NT, full Windows 95/NT
+ compatibility, parallel Unix & Windows 95/NT versions, major crash bug
+ fix & various other minor improvements & bug fixes.
+
+ Stuart Cracraft founded GNU Chess & is the project lead for the 10+ year
+ history of GNU Chess. Acknowledgements for this past year's work
+ include Chua Kong Sian, National Supercomputing Research Center,
+ Singapore; & Conor McCarthy, Biomolecular/Biomed Science at Griffith
+ University, Australia.
+
+ Send bugs to `bug-gnu-chess@prep.ai.mit.edu' & general comments to
+ `info-gnu-chess@prep.ai.mit.edu'. Visit the author's website at
+ `http://www.win.net/~msm/index.html'. Play GNU Chess on the web at
+ `http://www.delorie.com/game-room/chess'.
+
+ * CLISP (SrcCD)
+
+ CLISP is a Common Lisp implementation by Bruno Haible & Michael Stoll.
+ It mostly supports the Lisp described by `Common LISP: The Language (2nd
+ edition)' & the ANSI Common Lisp standard. CLISP includes an
+ interpreter, a byte-compiler, a large subset of CLOS & a foreign language
+ interface. The user interface language (English, German, French) can be
+ chosen at run time. An X11 API is available through CLX & Garnet.
+ CLISP needs only 2 MB of memory & runs on many microcomputers (including
+ MS-DOS systems, OS/2, Windows NT, Windows 95, Amiga 500-4000, & Acorn
+ RISC PC) & all kinds of Unix systems.
+
+ * Common Lisp *Also *note GNUs Flashes::.* (SrcCD)
+
+ GNU Common Lisp (GCL, formerly known as Kyoto Common Lisp) is a compiler
+ & interpreter for Common Lisp. GCL is very portable & extremely
+ efficient on a wide class of applications, & compares favorably in
+ performance with commercial Lisps on several large theorem-prover &
+ symbolic algebra systems. GCL supports the CLtL1 specification but is
+ moving towards the proposed ANSI standard.
+
+ GCL compiles to C & then uses the native optimizing C compiler (e.g.,
+ GCC). A function with a fixed number of args & one value turns into a C
+ function of the same number of args, returning one value--so GCL is
+ maximally efficient on such calls. Its conservative garbage collector
+ gives great freedom to the C compiler to put Lisp values in registers.
+ It has a source level Lisp debugger for interpreted code & displays
+ source code in an Emacs window. Its profiler (based on the C profiling
+ tools) counts function calls & the time spent in each function.
+
+ There is now a built-in interface to the Tk widget system. It runs in a
+ separate process, so users may monitor progress on Lisp computations or
+ interact with running computations via a windowing interface.
+
+ There is also an Xlib interface via C (xgcl-2). CLX runs with GCL, as
+ does PCL (see "PCL" later in this article).
+
+ GCL version 2.2.1 is released under the GNU Library General Public
+ License.
+
+ * CLX (SrcCD)
+
+ CLX is an X Window interface library for GCL. This is separate from the
+ built-in TK interface.
+
+ * `cpio' (SrcCD)
+
+ `cpio' is an archive program with all the features of SVR4 `cpio',
+ including support for the final POSIX 1003.1 `ustar' standard. `mt', a
+ program to position magnetic tapes, is included with `cpio'.
+
+ * CVS (SrcCD)
+
+ CVS is a version control system (like RCS or SCCS) which allows you to
+ keep old versions of files (usually source code), keep a log of who,
+ when, and why changes occurred, etc. It handles multiple developers,
+ multiple directories, triggers to enable/log/control various operations,
+ and can work over a wide area network. It does not handle build
+ management or bug-tracking; these are handled by `make' and GNATS,
+ respectively.
+
+ * DejaGnu (SrcCD)
+
+ DejaGnu is a framework to test programs with a single front end for all
+ tests. DejaGnu's flexibility & consistency makes it easy to write tests.
+ DejaGnu will also work with remote hosts and embedded systems.
+
+ DejaGnu comes with `expect', which runs scripts to conduct dialogs with
+ programs.
+
+ * Diffutils (SrcCD)
+
+ GNU `diff' compares files showing line-by-line changes in several
+ flexible formats. It is much faster than traditional Unix versions. The
+ Diffutils package has `diff', `diff3', `sdiff', & `cmp'. Future plans
+ include support for internationalization (e.g., error messages in
+ Chinese) & some non-Unix PC environments, & a library interface that can
+ be used by other free software.
+
+ * DJGPP *Also see "GCC" in this article* (BinCD)
+
+ DJ Delorie has ported GCC/G++ to i386s running DOS. DJGPP has a 32-bit
+ i386 DOS extender with a symbolic debugger, development libraries, &
+ ports of Bison, `flex', & Binutils. Full source code is provided. It
+ needs at least 5MB of hard disk space to install & 512K of RAM to use.
+ It supports SVGA (up to 1024x768), XMS & VDISK memory allocation,
+ `himem.sys', VCPI (e.g., QEMM, DESQview, & 386MAX), & DPMI (e.g.,
+ Windows 3.x, OS/2, QEMM, & QDPMI). Version 2 was released in Feb. 1996,
+ & needs a DPMI environment; a free DPMI server is included.
+
+ FTP from `ftp.simtel.net' in `/pub/simtelnet/gnu/djgpp/' (or a SimTel
+ mirror site).
+
+ Ask `listserv@delorie.com', to join a DJGPP users mailing list.
+
+ * `dld' (SrcCD)
+
+ `dld' is a dynamic linker written by W. Wilson Ho. Linking your program
+ with the `dld' library allows you to dynamically load object files into
+ the running binary. `dld' supports a.out object types on the following
+ platforms: Convex C-Series (BSD), i386/i486/Pentium (GNU/Linux), Sequent
+ Symmetry i386 (Dynix 3), Sun-3 (SunOS 3 & 4), Sun-4 (SunOS 4), & VAX
+ (Ultrix).
+
+ * `doschk' (SrcCD)
+
+ This program is a utility to help software developers ensure that their
+ source file names are distinguishable on System V platforms with
+ 14-character filenames and on MS-DOS systems with 8+3 character
+ filenames.
+
+ * `ed' (SrcCD)
+
+ `ed' is the standard text editor. It is line-oriented and can be used
+ interactively or in scripts.
+
+ * Elib (SrcCD)
+
+ Elib is a small library of Emacs Lisp functions, including routines for
+ using AVL trees and doubly-linked lists.
+
+ * Elisp archive (SrcCD)
+
+ This is a snapshot of Ohio State's GNU Emacs Lisp FTP Archive. FTP it
+ from `archive.cis.ohio-state.edu' in `/pub/gnu/emacs/elisp-archive'.
+
+ * Emacs *Also *note Forthcoming GNUs::.* [FSFman(s), FSFrc]
+
+ In 1975, Richard Stallman developed the first Emacs, an extensible,
+ customizable real-time display editor & computing environment. GNU Emacs
+ is his second implementation. It offers true Lisp--smoothly integrated
+ into the editor--for writing extensions & provides an interface to the X
+ Window System. It runs on Unix, MS-DOS, & Windows NT or 95. In
+ addition to its powerful native command set, Emacs can emulate the
+ editors vi & EDT (DEC's VMS editor). Emacs has many other features which
+ make it a full computing support environment. Source for the `GNU Emacs
+ Manual' & a reference card comes with the software. Sources for the
+ `GNU Emacs Lisp Reference Manual', & `Programming in Emacs Lisp: An
+ Introduction' are distributed in separate packages. *Note
+ Documentation::.
+
+ * Emacs 19 (SrcCD) [FSFman(s), FSFrc]
+
+ Emacs 19 works with character-only terminals & with the X Window System
+ (with or without an X toolkit). Features new to Emacs 19 include:
+ multiple X windows ("frames" to Emacs), with a separate X window for the
+ minibuffer or a minibuffer attached to each X window; use of the X
+ toolkit; interfacing with the X resource manager; property lists
+ associated with regions of text in a buffer; multiple fonts & colors
+ defined by those properties; simplified/improved processing of function
+ keys, mouse movement & clicks; X selection processing, including
+ clipboard selections; hooks to be run if the point or mouse moves
+ outside a certain range; menu bars & popup menus defined by keymaps;
+ scrollbars; before- & after-change hooks; a source-level debugger for
+ Emacs Lisp programs; floating point numbers; improved buffer allocation,
+ including returning storage to the system when a buffer is killed; many
+ updated libraries; Autoconf-based configuration; support for version
+ control systems (CVS, RCS, & SCCS); & European character sets.
+
+ Features added recently to Emacs 19 include the ability to open frames
+ on more than one X display from a single Emacs job, operation under
+ MS-DOS, MS Windows, and Windows NT, displaying multiple views of an
+ outline at the same time, Lisp-level timers for real time and idle time,
+ version control support for CVS and for multiple branches, text
+ properties for formatting text, commands to edit text properties and
+ save them in files, and GNU-standard long-named command line options.
+ Also see *Note Forthcoming GNUs::.
+
+ Emacs 19 works on: Acorn RISC (RISCiX); Alliant FX/2800 (BSD); Alpha
+ (OSF/1 or GNU/Linux); Apollo (DomainOS); Bull DPX/2 2nn & 3nn (SysV.3) &
+ sps7 (SysV.2); Clipper; Convex (BSD); Cubix QBx (SysV); Data General
+ Aviion (DGUX); DEC MIPS (Ultrix 4.2, OSF/1, not VMS); Elxsi 6400 (SysV);
+ Gould Power Node & NP1 (4.2 & 4.3BSD); Harris Night Hawk 1200, 3000,
+ 4000 & 5000 (cxux); Harris Night Hawk Power PC (powerunix); Honeywell
+ XPS100 (SysV); HP 9000 series 200, 300, 700, 800 (but not 500) (4.3BSD;
+ HP-UX 7, 8, 9; NextStep); Intel i386/i486/Pentium (GNU/Hurd, GNU/Linux,
+ 386BSD, AIX, BSDI/386, FreeBSD, Esix, ISC, MS-DOS, NetBSD, SCO3.2v4,
+ Solaris, SysV, Xenix, WindowsNT, Windows95); IBM RS/6000 (AIX 3.2) &
+ RT/PC (AIX, BSD); Motorola Delta 147 & 187 (SysV.3, SysV.4, m88kbcs);
+ National Semiconductor 32K (Genix); NeXT (BSD, Mach 2 w/ NeXTStep 3.0);
+ Paragon (OSF/1); Prime EXL (SysV); Pyramid (BSD); Sequent Symmetry (BSD,
+ ptx); Siemens RM400 & RM600 (SysV); SGI Iris 4D (Irix 4.x & 5.x); Sony
+ News/RISC (NewsOS); Stardent i860 (SysV); Sun 3 & 4, SPARC 1, 1+, 2, 10,
+ Classic (SunOS 4.0, 4.1, Solaris 2.0-2.3); Tadpole 68k (SysV); Tektronix
+ XD88 (SysV.3) & 4300 (BSD); & Titan P2 & P3 (SysV).
+
+ * Emacs 18 (SrcCD) [FSFrc]
+
+ Emacs 18 is several years old. We no longer maintain it, but still
+ distribute it for those using platforms which Emacs 19 does not support:
+ Alliant FX/80, Altos 3068, Amdahl (UTS), AT&T (3Bs & 7300 PC), CCI 5/32
+ & 6/32, Celerity, DEC (VAX VMS), Dual, Encore (APC, DPC, & XPC), HLH
+ Orion (original & 1/05), ISI (Optimum V, 80386), Masscomp, NCR Tower 32
+ (SVR2 & SVR3), Nixdorf Targon 31, Nu (TI & LMI), pfa50, Plexus, Prime
+ EXL, Stride (system rel. 2), Tahoe, Tandem Integrity S2, Tektronix 16000,
+ Triton 88, Ustation E30 (SS5E), Whitechapel (MG1), & Wicat.
+
+ * `es' (SrcCD)
+
+ `es' is an extensible shell (based on `rc') with first-class functions,
+ lexical scope, exceptions, and rich return values (i.e., functions can
+ return values other than just numbers). `es''s extensibility comes from
+ the ability to modify and extend the shell's built-in services, such as
+ path searching and redirection. Like `rc', it is great for both
+ interactive use and scripting, particularly since its quoting rules are
+ much less baroque than the C and Bourne shells.
+
+ * `enscript' (SrcCD)
+
+ `enscript' is an upwardly-compatible replacement for the Adobe
+ `enscript' program. It formats ASCII files (outputting in Postscript)
+ and stores generated output to a file or sends it directly to the
+ printer.
+
+ * Exim (SrcCD)
+
+ Exim is a new Internet mail transfer agent, similar in style to Smail 3.
+ It can handle relatively high volume mail systems, header rewriting,
+ control over which hosts/nets may use it as a relay, blocking of
+ unwanted mail from specified hosts/nets/senders, and multiple local
+ domains on one mail host ("virtual domains") with several options for
+ the way these are handled.
+
+ * `f2c' *Also see "Fortran" below & in *Note Forthcoming GNUs::*
+ (SrcCD)
+
+ `f2c' converts Fortran-77 source into C or C++, which can be compiled
+ with GCC or G++. Get bug fixes by FTP from site `netlib.bell-labs.com'
+ or by email from `netlib@netlib.bell-labs.com'. For a summary, see the
+ file `/netlib/f2c/readme.Z'.
+
+ * `ffcall' (SrcCD)
+
+ `ffcall' is a C library for implementing foreign function calls in
+ embedded interpreters by Bill Triggs and Bruno Haible. It allows C
+ functions with arbitrary argument lists and return types to be called or
+ emulated (callbacks).
+
+ * Fileutils (SrcCD)
+
+ The Fileutils are: `chgrp', `chmod', `chown', `cp', `dd', `df', `dir',
+ `dircolors', `du', `install', `ln', `ls', `mkdir', `mkfifo', `mknod',
+ `mv', `rm', `rmdir', `sync', `touch', & `vdir'.
+
+ * Findutils (SrcCD)
+
+ `find' is frequently used both interactively and in shell scripts to
+ find files which match certain criteria and perform arbitrary operations
+ on them. Also included are `locate', which scans a database for file
+ names that match a pattern, and `xargs', which applies a command to a
+ list of files.
+
+ * Finger (SrcCD)
+
+ GNU Finger has more features than other finger programs. For sites with
+ many hosts, a single host may be designated as the finger "server" host
+ and other hosts at that site configured as finger "clients". The server
+ host collects information about who is logged in on the clients. To
+ finger a user at a GNU Finger site, a query to any of its client hosts
+ gets useful information. GNU Finger supports many customization
+ features, including user output filters and site-programmable output for
+ special target names.
+
+ * `flex' (BinCD, SrcCD) [FSFman, FSFrc]
+
+ `flex' is a replacement for the `lex' scanner generator. `flex' was
+ written by Vern Paxson of the Lawrence Berkeley Laboratory and generates
+ far more efficient scanners than `lex' does. Sources for the `Flex
+ Manual' and reference card are included (*note Documentation::.).
+
+ * Fortran (`g77') *Also *note Forthcoming GNUs::.* (SrcCD)
+
+ GNU Fortran (`g77'), developed by Craig Burley, is available for public
+ beta testing on the Internet. For now, `g77' produces code that is
+ mostly object-compatible with `f2c' & uses the same run-time library
+ (`libf2c').
+
+ * Fontutils (SrcCD)
+
+ The Fontutils convert between font formats, create fonts for use with
+ Ghostscript or TeX (starting with a scanned type image & converting the
+ bitmaps to outlines), etc. It includes: `bpltobzr', `bzrto',
+ `charspace', `fontconvert', `gsrenderfont', `imageto', `imgrotate',
+ `limn', & `xbfe'.
+
+ * GAWK (SrcCD) [FSFman]
+
+ GAWK is upwardly compatible with the latest POSIX specification of
+ `awk'. It also provides several useful extensions not found in other
+ `awk' implementations. Texinfo source for the `The GNU Awk User's
+ Guide' comes with the software (*note Documentation::.).
+
+ * `gcal' (SrcCD)
+
+ `gcal' is a program for printing calendars. It displays different
+ styled calendar sheets, eternal holiday lists, and fixed date warning
+ lists.
+
+ * GCC *Also *note GNUs Flashes::.* (BinCD, SrcCD) [FSFman]
+
+ Version 2 of the GNU C Compiler supports the languages C, C++, and
+ Objective-C; the source file name suffix or a compiler option selects
+ the language. (Also see "GNAT" later in this article for Ada language
+ supports.) Objective-C support was donated by NeXT. The runtime support
+ needed to run Objective-C programs is now distributed with GCC (this
+ does not include any Objective-C classes aside from `object', but see
+ "GNUstep" in *Note Forthcoming GNUs::). As much as possible, G++ is
+ kept compatible with the evolving draft ANSI standard, but not with
+ `cfront' (AT&T's compiler), which has been diverging from ANSI.
+
+ GCC is a fairly portable optimizing compiler which performs many
+ optimizations. They include: automatic register allocation, common
+ sub-expression elimination (CSE) (including a certain amount of CSE
+ between basic blocks - though not all the supported machine descriptions
+ provide for scheduling or delay slots), invariant code motion from
+ loops, induction variable optimizations, constant propagation, copy
+ propagation, delayed popping of function call arguments, tail recursion
+ elimination, integration of inline functions & frame pointer elimination,
+ instruction scheduling, loop unrolling, filling of delay slots, leaf
+ function optimization, optimized multiplication by constants, the
+ ability to assign attributes to instructions, & many local optimizations
+ automatically deduced from the machine description.
+
+ GCC can open-code most arithmetic on 64-bit values (type `long long
+ int'). It supports extended floating point (type `long double') on the
+ 68k; other machines will follow. GCC supports full ANSI C, traditional
+ C, & GNU C extensions (including: nested functions support, nonlocal
+ gotos, & taking the address of a label).
+
+ GCC can generate a.out, COFF, ELF, & OSF-Rose files when used with a
+ suitable assembler. It can produce debugging information in these
+ formats: BSD stabs, COFF, ECOFF, ECOFF with stabs, & DWARF.
+
+ GCC generates code for many CPUs, including the a29k, Alpha, ARM, AT&T,
+ DSP1610, Clipper, Convex cN, Elxsi, Fujitsu Gmicro, i370, i860, i960,
+ MIL-STD-1750a, MIPS, ns32k, PDP-11, Pyramid, ROMP, RS/6000, SH, SPUR,
+ Tahoe, VAX, & we32k.
+
+ Position-independent code is generated for the Clipper, Hitachi H8/300,
+ HP-PA (1.0 & 1.1), i386/i486/Pentium, m68k, m88k, SPARC, & SPARClite.
+
+ Operating systems supported include: GNU/Hurd, GNU/Linux, ACIS, AIX, AOS,
+ BSD, Clix, Concentrix, Ctix, DG/UX, Dynix, FreeBSD, Genix, HP-UX, Irix,
+ ISC, Luna, LynxOS, Minix, NetBSD, NewsOS, NeXTStep, OS/2, OSF, OSF-Rose,
+ RISCOS, SCO, Solaris 2, SunOS 4, System/370, SysV, Ultrix, Unos, VMS, &
+ Windows/NT.
+
+ Using the configuration scheme for GCC, building a cross-compiler is as
+ easy as building a native compiler.
+
+ Version 1 of GCC, G++, & libg++ are no longer maintained.
+
+ Texinfo source for the `Using and Porting GNU CC' manual is included
+ with GCC (*note Documentation::.).
+
+ * GDB (BinCD, SrcCD) [FSFman, FSFrc]
+
+ GDB, the GNU DeBugger, is a source-level debugger for C, C++, & Fortran.
+ It provides partial support for Modula-2 & Chill.
+
+ GDB can debug both C & C++, & will work with executables made by many
+ different compilers; but, C++ debugging will have some limitations if
+ you do not use GCC.
+
+ GDB has a command line user interface, and Emacs has GDB mode as an
+ interface. Two X interfaces (not distributed or maintained by the FSF)
+ are: `gdbtk' (FTP it from `ftp.cygnus.com' in directory `/pub/gdb'); and
+ `xxgdb' (FTP it from `ftp.x.org' in directory `/contrib/utilities').
+
+ Executable files and symbol tables are read via the BFD library, which
+ allows a single copy of GDB to debug programs with multiple object file
+ formats (e.g., a.out, COFF, ELF). Other features include a rich command
+ language, remote debugging over serial lines or TCP/IP, and watchpoints
+ (breakpoints triggered when the value of an expression changes).
+
+ GDB uses a standard remote interface to a simulator library which (so
+ far) has simulators for the ARM, Hitachi H8/300, Hitachi H8/500, Hitachi
+ Super-H, PowerPC, WDC 65816, & Zilog Z8001/2.
+
+ GDB can perform cross-debugging. To say that GDB "targets" a platform
+ means it can perform native or cross-debugging for it. To say that GDB
+ can "host" a given platform means that it can be built on it, but cannot
+ necessarily debug native programs.
+
+ GDB can:
+
+ * "target" & "host": Amiga 3000 (Amix, NetBSD), DEC Alpha (OSF/1),
+ DECstation 3100 & 5000 (Ultrix), HP 9000/300 (BSD, HP-UX), HP
+ 9000/700 (HP-UX 9, 10), i386/i486/Pentium (GNU/Hurd, GNU/Linux,
+ BSD, FreeBSD, LynxOS, NetBSD, SCO, Windows NT), IBM RS/6000 (AIX
+ 3.x, AIX 4.x, LynxOS), Motorola Delta m88k (System V, CX/UX), PC532
+ (NetBSD), Motorola m68k MVME-167 (LynxOS), NCR 3000 (SVR4), PowerPC
+ (AIX 4.x, MacOS, Windows NT), SGI (Irix V3, V4, V5), SONY News
+ (NewsOS 3.x), SPARC (LynxOS, NetBSD, Solaris 2.x, & SunOS 4.1 )
+ Sun-3 (SunOS 4.1), & Ultracomputer (a29k running Sym1).
+
+ * "target", but not "host": AMD 29000 (COFF & a.out), ARM (RDP),
+ Hitachi H8/300, Hitachi SH (CMON, SH3, E7000), HP PA Pro (Winbond,
+ Oki), i386 (a.out, COFF, OS/9000), i960 (MON960, Nindy, VxWorks),
+ m68k/m68332 (a.out, COFF, CPU32BUG, EST, ROM68K, VxWorks), MIPS
+ (ELF, IDT ecoff, PMON, VxWorks), PowerPC (PPCBug), Matra Sparclet,
+ Fujitsu SPARClite (a.out, COFF), WDC 65816, & Z8000.
+
+ * "host", but not "target": IBM RT/PC (AIX), HP/Apollo 68k (BSD), &
+ m68k Apple Macintosh (MacOS). Sources for the manual,
+ `Debugging with GDB', and a reference card are included (*note
+ Documentation::.).
+
+ * `gdbm' (SrcCD)
+
+ `gdbm' is the GNU replacement for the traditional `dbm' and `ndbm'
+ libraries. It implements a database using quick lookup by hashing.
+ `gdbm' does not ordinarily make sparse files (unlike its Unix and BSD
+ counterparts).
+
+ * `gettext' *Also *note Help the GNU Translation Project::.* (SrcCD)
+
+ The GNU `gettext' tool set has everything maintainers need to
+ internationalize a package's user messages. Once a package has been
+ internationalized, `gettext''s many tools help translators localize
+ messages to their native language and automate handling the translation
+ files.
+
+ * Generic NQS (SrcCD)
+
+ Generic NQS is a network queuing system for spreading batch jobs across a
+ network of machines. It is designed to be simple to install on a
+ heterogeneous network of machines, and has optimizations for running on
+ the high end, symmetric multiprocessing servers that are currently on the
+ market. It is available for many more UNIX variants than any other
+ comparable product, and inter-operates with other NQS systems, including
+ Cray's NQE.
+
+ * `geomview' *See* `http://www.geom.umn.edu/software/geomview' (SrcCD)
+
+ `geomview' is an interactive geometry viewing program, for UNIX systems
+ with Motif, using X, GL, or OpenGL graphics. It allows multiple
+ independently controllable objects and cameras. `geomview' provides
+ interactive control for motion, appearances (including lighting,
+ shading, and materials), picking on an object, edge or vertex level, and
+ snapshots in PPM or SGI image files, Postscript, and Renderman RIB
+ format. `geomview' can be controlled through direct mouse manipulation,
+ control panels, and keyboard shortcuts. External programs can also
+ drive desired aspects of the viewer (such as continually loading
+ changing geometry or controlling the motion of certain objects) while
+ allowing interactive control of everything else.
+
+ * `gforth' (SrcCD)
+
+ `gforth' is a fast, portable implementation of the ANS Forth language.
+
+ * Ghostscript (SrcCD)
+
+ Ghostscript is an interpreter for the Postscript and PDF graphics
+ languages.
+
+ The current version of GNU Ghostscript, 3.33, includes nearly a full
+ Postscript Level 2 interpreter and a PDF 1.0 interpreter. Significant
+ new features include: support for anti-aliased characters; the ability
+ to scan a directory and register all the fonts in it; support for Type 0
+ (Japanese / Chinese / Korean) fonts; and the ability to compile all the
+ external initialization files into the executable. This version can
+ also run as a 32-bit MS Windows application.
+
+ Thanks to the generosity of URW++ (Hamburg, Germany), the low-quality
+ bitmap-derived fonts distributed with older versions have been replaced
+ with commercial-quality, hinted outline fonts.
+
+ Ghostscript executes commands in the Postscript language by writing
+ directly to a printer, drawing on an X window, or writing to files for
+ printing later or manipulating with other graphics programs.
+
+ Ghostscript includes a C-callable graphics library (for client programs
+ that do not want to deal with the Postscript language). It also supports
+ i386/i486/Pentiums running DOS with EGA, VGA or SuperVGA graphics (but
+ please do *not* ask the FSF staff any questions about this; we do not
+ use DOS).
+
+ * Ghostview (SrcCD)
+
+ Tim Theisen, `ghostview@cs.wisc.edu', created Ghostview, a previewer for
+ multi-page files with an X Window interface. Ghostview & Ghostscript
+ work together; Ghostview creates a viewing window & Ghostscript draws in
+ it.
+
+ * GIT (SrcCD)
+
+ The GNU Interactive Tools package includes: an extensible file system
+ browser, an ASCII/hex file viewer, a process viewer/killer, & other
+ related utilities & shell scripts. It can be used to increase the speed
+ & efficiency of many daily tasks, such as copying & moving files &
+ directories, invoking editors, compressing/uncompressing files, creating
+ & expanding archives, compiling programs, sending mail, etc. It looks
+ nice, has colors (if the standard ANSI color sequences are supported), &
+ is user-friendly.
+
+ * `gmp' (SrcCD)
+
+ GNU `mp' is a library for arithmetic on arbitrary precision integers,
+ rational numbers, and floating-point numbers. It has a rich set of
+ functions with a regular interface.
+
+ A major new release, version 2, came out in Spring '96. Compared to
+ previous versions, it is much faster, contains lots of new functions, &
+ has support for arbitrary precision floating-point numbers.
+
+ * Gnans (SrcCD)
+
+ Gnans is a program (and language) for the numerical study of
+ deterministic and stochastic dynamical systems. The dynamical systems
+ may evolve in continuous or discrete time. Gnans has graphical &
+ command line interfaces.
+
+ * GNAT: The GNU Ada Translator (SrcCD)
+
+ GNAT, a front end for the entire Ada 95 language, including all special
+ needs annexes, is available via anonymous FTP from `cs.nyu.edu' and
+ various mirror sites in `/pub/gnat'. SGI, DEC, and Siemens Nixdorf have
+ chosen GNU Ada 95 as the Ada compiler for their systems. GNAT is
+ maintained by Ada Core Technologies. For more information, see
+ `http://www.gnat.com'.
+
+ * GNATS (SrcCD)
+
+ GNATS, GNats: A Tracking System, is a bug-tracking system. It is based
+ upon the paradigm of a central site or organization which receives
+ problem reports and negotiates their resolution by electronic mail.
+ Although it has been used primarily as a software bug-tracking system so
+ far, it is sufficiently generalized that it could be used for handling
+ system administration issues, project management, or any number of other
+ applications.
+
+ * GNUMATH (`gnussl') (SrcCD)
+
+ GNUMATH is a library (`gnussl') that simplifies scientific programming
+ in C & C++. Its focus is on problems that can be solved by a
+ straight-forward application of numerical linear algebra. It also
+ handles plotting. It is in beta release; it is expected to grow more
+ versatile & offer a wider scope in time.
+
+ * `gnuplot' (SrcCD)
+
+ `gnuplot' is an interactive program for plotting mathematical
+ expressions and data. It plots both curves (2 dimensions) & surfaces (3
+ dimensions). It was neither written nor named for the GNU Project; the
+ name is a coincidence. Various GNU programs use `gnuplot'.
+
+ * `gnuserv' (SrcCD)
+
+ `gnuserv' is an enhanced version of Emacs' `emacsclient' program. It
+ lets the user direct a running Emacs to edit files or evaluate arbitrary
+ Emacs Lisp constructs from another process.
+
+ * GnuGo (SrcCD)
+
+ GnuGo plays the game of Go. It is not yet very sophisticated.
+
+ * `gperf' (SrcCD)
+
+ `gperf' generates perfect hash tables. The C version is in package
+ cperf. The C++ version is in libg++. Both produce hash functions in
+ either C or C++.
+
+ * Graphics (SrcCD)
+
+ GNU Graphics produces x-y plots from ASCII or binary data. It outputs
+ in Postscript, Tektronix 4010 compatible, and Unix device-independent
+ "plot" formats. It has a previewer for the X Window System. Features
+ include a `spline' interpolation program; examples of shell scripts
+ using `graph' and `plot'; a statistics toolkit; and output in TekniCAD
+ TDA and ln03 file formats. Email bugs or queries to Rich Murphey,
+ `Rich@lamprey.utmb.edu'.
+
+ * grep (SrcCD)
+
+ This package has GNU `grep', `egrep', and `fgrep', which find lines that
+ match entered patterns. They are much faster than the traditional Unix
+ versions.
+
+ * Groff (SrcCD)
+
+ Groff is a document formatting system based on a device-independent
+ version of `troff', & includes: `eqn', `nroff', `pic', `refer', `tbl',
+ `troff'; the `man', `ms', & `mm' macros; & drivers for Postscript, TeX
+ `dvi' format, the LaserJet 4 series of printers, and typewriter-like
+ devices. Groff's `mm' macro package is almost compatible with the DWB
+ `mm' macros with several extensions. Also included is a modified
+ version of the Berkeley `me' macros and an enhanced version of the X11
+ `xditview' previewer. Written in C++, these programs can be compiled
+ with GNU C++ Version 2.7.2 or later.
+
+ Groff users are encouraged to contribute enhancements. Most needed are
+ complete Texinfo documentation, a `grap' emulation (a `pic' preprocessor
+ for typesetting graphs), a page-makeup postprocessor similar to `pm'
+ (see `Computing Systems', Vol. 2, No. 2; ask `office@usenix.org' how to
+ get a copy), and an ASCII output class for `pic' to integrate `pic' with
+ Texinfo. Questions and bug reports from users who have read the
+ documentation provided with Groff can be sent to
+ `bug-groff@prep.ai.mit.edu'.
+
+ * `gzip' (SrcCD)
+
+ `gzip' can expand LZW-compressed files but uses another, unpatented
+ algorithm for compression which generally produces better results. It
+ also expands files compressed with System V's `pack' program.
+
+ * `hello' (SrcCD)
+
+ The GNU `hello' program produces a familiar, friendly greeting. It
+ allows non-programmers to use a classic computer science tool which would
+ otherwise be unavailable to them. Because it is protected by the GNU
+ General Public License, users are free to share and change it. `hello'
+ is also a good example of a program that meets the GNU coding standards.
+ Like any truly useful program, `hello' contains a built-in mail reader.
+
+ * `hp2xx' (SrcCD)
+
+ GNU `hp2xx' reads HP-GL files, decomposes all drawing commands into
+ elementary vectors, and converts them into a variety of vector and raster
+ output formats. It is also an HP-GL previewer. Currently supported
+ vector formats include encapsulated Postscript, Uniplex RGIP, Metafont,
+ various special TeX-related formats, and simplified HP-GL (line drawing
+ only) for imports. Raster formats supported include IMG, PBM, PCX, &
+ HP-PCL (including Deskjet & DJ5xxC support). Previewers work under X11
+ (Unix), OS/2 (PM & full screen), & MS-DOS (SVGA, VGA, & HGC).
+
+ * HylaFAX *Also see* `http://www.vix.com/hylafax/' (SrcCD)
+
+ HylaFAX (once named FlexFAX) is a facsimile system for Unix systems. It
+ supports sending, receiving, & polled retrieval of facsimile, as well as
+ transparent shared data use of the modem.
+
+ * Hyperbole (SrcCD)
+
+ Hyperbole, written by Bob Weiner in Emacs Lisp, is an open, efficient,
+ programmable information management, autonumbered outliner, & hypertext
+ system, intended for everyday work on any platform Emacs runs on.
+
+ * ID Utils (SrcCD)
+
+ ID Utils is a package of simple, fast, high-capacity,
+ language-independent tools that index program identifiers, literal
+ numbers, or words of human-readable text. Queries can be issued from
+ the command-line, or from within Emacs, serving as an augmented tags
+ facility.
+
+ * `indent' (SrcCD)
+
+ GNU `indent' formats C source code into the GNU, BSD, K&R, or your own
+ special indentation style. GNU `indent' is more robust & provides more
+ functionality than other such programs, including handling C++ comments.
+ It runs on Unix, DOS, VMS and ATARI systems.
+
+ The next version will also format C++ source code. A Java version may
+ be considered in the future.
+
+ * Inetutils (SrcCD)
+
+ Inetutils has common networking utilities & servers.
+
+ This release is mainly support the GNU Hurd, which is source compatible
+ with BSD in many ways, & will probably only work on systems that are
+ similarly compatible.
+
+ * Ispell (SrcCD)
+
+ Ispell is an interactive spell checker that suggests "near misses" to
+ replace unrecognized words. System & user-maintained dictionaries for
+ multiple languages can be used. Standalone & Emacs interfaces are
+ available.
+
+ * JACAL *Not available from the FSF except by FTP*
+
+ JACAL is a symbolic mathematics system for the manipulation &
+ simplification of algebraic equations & expressions. It is written in
+ Scheme using the SLIB portable Scheme Library. JACAL comes with SCM, an
+ IEEE P1178 & R4RS compliant Scheme implementation written in C. SCM runs
+ on Amiga, Atari-ST, MacOS, MS-DOS, OS/2, NOS/VE, Unicos, VMS, Unix, &
+ similar systems.
+
+ The FSF is not distributing JACAL on any physical media. You can FTP it
+ or get it from the Web site below. Documentation is at
+ `http://www-swiss.ai.mit.edu/~jaffer/JACAL.html'.
+
+ * Karma (SrcCD)
+
+ Karma is a signal and image processing library and visualization toolkit
+ that provides interprocess communications, authentication, graphics
+ display, and user interface to and manipulation of the Karma network
+ data structure. Several foreign data formats are also supported. Karma
+ comes packaged with a number of generic visualization tools and some
+ astronomy-specific tools.
+
+ * `less' (SrcCD)
+
+ `less' is a display paginator similar to `more' and `pg', but with
+ various features (such as the ability to scroll backwards) that most
+ pagers lack.
+
+ * Lynx *Also see* `http://www.cc.ukans.edu/about_lynx' (SrcCD)
+
+ Lynx is a text-only World Wide Web browser for those running
+ character-only ("cursor-addressable") terminals or terminal emulators.
+
+ * `m4' (SrcCD)
+
+ GNU `m4' is an implementation of the traditional Unix macro processor.
+ It is mostly SVR4 compatible, although it has some extensions (e.g.,
+ handling more than 9 positional parameters to macros). `m4' also has
+ built-in functions for including files, running shell commands, doing
+ arithmetic, etc.
+
+ * `make' (BinCD, SrcCD) [FSFman]
+
+ GNU `make' supports POSIX 1003.2 and has all but a few obscure features
+ of the BSD and System V versions of `make', and runs on MS-DOS,
+ AmigaDOS, VMS, & Windows NT or 95, as well as all Unix-compatible
+ systems. GNU extensions include long options, parallel compilation,
+ flexible implicit pattern rules, conditional execution, & powerful text
+ manipulation functions. Source for the `Make Manual' comes with the
+ program (*note Documentation::.).
+
+ * MandelSpawn (SrcCD)
+
+ A parallel Mandelbrot generation program for the X Window System.
+
+ * Maxima (SrcCD)
+
+ Maxima is a Common Lisp implementation of MIT's Macsyma system for
+ computer based algebra.
+
+ * Meta-HTML (SrcCD)
+
+ <Meta-HTML> is a programming language specifically designed for working
+ within the World Wide Web environment. Although it is a genuine
+ programming language, suitable for large-scale symbolic manipulation, it
+ provides the most commonly wanted Web functionality as built-in
+ primitives, so you don't have to write them.
+
+ * Midnight Commander (`mc') (SrcCD)
+
+ The Midnight Commander is a user friendly & colorful Unix file manager &
+ shell, useful to novice & guru alike. It has a built-in virtual file
+ system that manipulates files inside tar files or files on remote
+ machines using the FTP protocol. This mechanism is extendable with
+ external Unix programs.
+
+ * Miscellaneous Files Distribution (SrcCD)
+
+ The GNU Miscellaneous Files are non-crucial files that are common on
+ various systems, including word lists, airport codes, ZIP codes etc.
+
+ * `mkisofs' (SrcCD)
+
+ `mkisofs' is a pre-mastering program to generate an ISO 9660 file system.
+ It takes a snapshot of a directory tree, and makes a binary image which
+ corresponds to an ISO 9660 file system when written to a block device.
+
+ It can also generate the System Use Sharing Protocol records of the Rock
+ Ridge Interchange Protocol (used to further describe the files in an ISO
+ 9660 file system to a Unix host; it provides information such as longer
+ filenames, uid/gid, permissions, and device nodes).
+
+ The `mkisofs' program is often used with `cdwrite'. The `cdwrite'
+ program works by taking the image that `mkisofs' generates and driving a
+ cdwriter drive to actually burn the disk. `cdwrite' works under
+ GNU/Linux, and supports popular cdwriter drives. Older versions of
+ `cdwrite' were included with older versions of `mkisofs';
+ `sunsite.unc.edu' has the latest version:
+ `/pub/Linux/utils/disk-management/cdwrite-2.0.tar.gz'.
+
+ * `mtools' (SrcCD)
+
+ `mtools' is a set of public domain programs to allow Unix systems to
+ read, write, and manipulate files on an MS-DOS file system (usually a
+ diskette).
+
+ * MULE (SrcCD)
+
+ MULE is a MULtilingual Enhancement to GNU Emacs. MULE text buffers can
+ contain a mix of characters from many languages including: Japanese,
+ Chinese, Korean, Vietnamese, Thai, modern European languages (including
+ Greek & Russian), Arabic, & Hebrew. MULE also provides input methods
+ for all of them. MULE is being merged into GNU Emacs. *Note GNU &
+ Other Free Software in Japan::, for more information about MULE.
+
+ * `ncurses' (SrcCD)
+
+ `ncurses' implements the Unix `curses' API for developing screen-based
+ programs that are terminal independent. It is not merely an emulation
+ of old (BSD) curses/termcap, but is fully compatible with SVR4
+ curses/terminfo. It includes color, multiple-highlight, & xterm
+ mouse-event support.
+
+ * NetHack (SrcCD)
+
+ NetHack is a Rogue-like adventure game supporting character & X displays.
+
+ * NIH Class Library (SrcCD)
+
+ The NIH Class Library is a set of C++ classes (similar to
+ Smalltalk-80's) written in C++ by Keith Gorlen of the National Institutes
+ of Health (NIH).
+
+ * `nvi' (SrcCD)
+
+ `nvi' is an implementation of the `ex'/`vi' Unix editor. It has all the
+ functionality of the original `ex'/`vi', except `open' mode & the `lisp'
+ edit option. Enhancements include multiple buffers, command-line
+ editing & path completion, integrated Perl5 & Tcl scripting languages,
+ Cscope support & tag stacks, 8-bit data support, infinite file/line
+ lengths, infinite undo, language catalogs, incremental search, extended
+ regular expressions, and security fixes. It uses Autoconf for
+ configuration and runs on any Unix-like system.
+
+ * Oaklisp (SrcCD)
+
+ Oaklisp is a fast, portable, object-oriented Scheme with first class
+ types.
+
+ * Objective-C Library (SrcCD)
+
+ Our Objective-C Class Library (`gstep-base.tar.gz', `libgnustep-base')
+ has general-purpose, non-graphical Objective-C objects written by Andrew
+ McCallum & others. It includes collection classes for maintaining
+ groups of objects, I/O streams, coders for formatting objects & C types
+ to streams, ports for network packet transmission, distributed objects
+ (remote object messaging), string classes, invocations, notifications,
+ event loops, timers, exceptions, pseudo-random number generators, &
+ more. It has the base classes for the GNUstep project; all but a few of
+ them have already been written. Send queries & bugs to
+ `mccallum@gnu.ai.mit.edu'. See "GNUstep" in *Note Forthcoming GNUs::.
+
+ * OBST (SrcCD)
+
+ OBST is a persistent object management system with bindings to C++.
+ OBST supports incremental loading of methods. Its graphical tools
+ require the X Window System. It features a hands-on tutorial including
+ sample programs. It compiles with G++, and should install easily on
+ most Unix platforms.
+
+ * Octave *Also see* `http://www.che.wisc.edu/octave' (SrcCD)
+
+ Octave does arithmetic for real and complex scalars and matrices, solves
+ sets of nonlinear algebraic equations, integrates systems of ordinary
+ differential & differential-algebraic equations, and integrates
+ functions over finite & infinite intervals. Two- & three-dimensional
+ plotting is available using `gnuplot'.
+
+ Version 2.0 of Octave was released in December '96. It includes support
+ for dynamically linked functions, user-defined data types, many new
+ functions, & a completely revised manual. Octave works on most Unix
+ systems & OS/2. A port to Windows NT/95 is underway.
+
+ * Oleo (SrcCD)
+
+ Oleo is a spreadsheet program (better for you than the more expensive
+ spreadsheets). It supports the X Window System and character-based
+ terminals, and can output Embedded Postscript renditions of spreadsheets.
+ Keybindings should be familiar to Emacs users and are configurable.
+ Oleo supports multiple variable-width fonts when used under the X Window
+ System or outputting to Postscript devices.
+
+ * `p2c' (SrcCD)
+
+ `p2c' is Dave Gillespie's Pascal-to-C translator. It inputs many
+ dialects (HP, ISO, Turbo, VAX, etc.) & generates readable,
+ maintainable, portable C.
+
+ * `patch' (SrcCD)
+
+ `patch' is our version of Larry Wall's program to take `diff''s output
+ and apply those differences to an original file to generate the modified
+ version.
+
+ * PCL (SrcCD)
+
+ PCL is a free implementation of a large subset of CLOS, the Common Lisp
+ Object System. It runs under both GCL and CLISP, mentioned above.
+
+ * `perl' (SrcCD)
+
+ Larry Wall's `perl' combines the features & capabilities of C, `sed',
+ `awk', & `sh', and provides interfaces to the Unix system calls & many C
+ library routines.
+
+ * `pine' *Also *note Bad News and Good News about Pine::.* (SrcCD)
+
+ `pine' is a friendly menu-driven electronic mail manager and user
+ interface.
+
+ * `ptx' *Also *note Forthcoming GNUs::.* (SrcCD)
+
+ GNU `ptx' is our version of the traditional permuted index generator.
+ It handles multiple input files at once, has TeX compatible output, &
+ outputs readable "KWIC" (KeyWords In Context) indexes without using
+ `nroff'.
+
+ It does not yet handle input files that do not fit in memory all at once.
+
+ * `rc' (SrcCD)
+
+ `rc' is a shell that features a C-like syntax (much more so than `csh')
+ and far cleaner quoting rules than the C or Bourne shells. It's
+ intended to be used interactively, but is also great for writing
+ scripts. It inspired the shell `es'.
+
+ * RCS (SrcCD)
+
+ RCS, the Revision Control System, is used for version control &
+ management of software projects. Used with GNU `diff', RCS can handle
+ binary files (8-bit data, executables, object files, etc). RCS now
+ conforms to GNU configuration standards & to POSIX 1003.1b-1993. Also
+ see the CVS item above.
+
+ * `recode' *Also *note Forthcoming GNUs::.* (SrcCD)
+
+ GNU `recode' converts files between character sets and usages. When
+ exact transliterations are not possible, it may delete the offending
+ characters or fall back on approximations. This program recognizes or
+ outputs nearly 150 different character sets and is able to transliterate
+ files between almost any pair. Most RFC 1345 character sets are
+ supported.
+
+ * `regex' (SrcCD)
+
+ The GNU regular expression library supports POSIX.2, except for
+ internationalization features. It is included in many GNU programs which
+ do regular expression matching & is available separately. An alternate
+ regular expression package, `rx', is faster than `regex' in many cases;
+ we were planning to replace `regex' with `rx', but it is not certain
+ this will happen.
+
+ * Roxen (SrcCD)
+
+ Roxen is a modularized, object-oriented, non-forking World Wide Web
+ server with high performance and throughput. It was formerly named
+ Spinner, but was renamed for trademark reasons.
+
+ * `rx' (SrcCD)
+
+ Tom Lord has written `rx', a new regular expression library which is
+ faster than the older GNU `regex' library. It is being distributed with
+ `sed'. `rx' is also an installation option for `fileutils', `id-utils',
+ and `textutils', and maybe for future versions of `cpio', `m4' and `ptx'.
+
+ * SAOimage (SrcCD)
+
+ SAOimage is an X-based astronomical image viewer. It reads array data
+ images, which may be in specific formats, and displays them with a
+ pseudocolor colormap. There is full interactive control of the
+ colormap, panning and zooming, graphical annotation, and cursor tracking
+ in pixel and sky coordinates, among other features.
+
+ * Scheme (SrcCD)
+
+ Scheme is a simplified, lexically-scoped dialect of Lisp. It was
+ designed at MIT and other universities to teach students the art of
+ programming and to research new parallel programming constructs and
+ compilation techniques.
+
+ We now distribute MIT Scheme 7.3, which conforms to the "Revised^4
+ Report On the Algorithmic Language Scheme" (MIT AI Lab Memo 848b), for
+ which TeX source is included. It is written partly in C, but is
+ presently hard to bootstrap. Binaries to bootstrap it exist for: HP9000
+ series 300, 400, 700, & 800 (running HP-UX 9.0), NeXT (NeXT OS 2 or 3.2),
+ DEC Alpha (OSF/1), IBM RS/6000 (AIX), Sun-3 or Sun-4 (SunOS 4.1),
+ DECstation 3100/5100 (Ultrix 4.0), Sony NeWS-3250 (NEWS OS 5.01), &
+ Intel i386 (MS-DOS, Windows 3.1 or NT). If your system isn't on this
+ list & you don't enjoy the bootstrap challenge, see "JACAL" earlier in
+ this article.
+
+ * `screen' (SrcCD)
+
+ `screen' is a terminal multiplexer that runs several separate "screens"
+ (ttys) on a single character-based terminal. Each virtual terminal
+ emulates a DEC VT100 plus several ISO 2022 and ISO 6429 (ECMA 48, ANSI
+ X3.64) functions, including color. Arbitrary keyboard input translation
+ is also supported. `screen' sessions can be detached and resumed later
+ on a different terminal type. Output in detached sessions is saved for
+ later viewing.
+
+ * `sed' (SrcCD)
+
+ `sed' is a stream-oriented version of `ed'. It comes with the `rx'
+ library.
+
+ * Sharutils (SrcCD)
+
+ `shar' makes so-called shell archives out of many files, preparing them
+ for transmission by electronic mail services; `unshar' helps unpack
+ these shell archives after reception. `uuencode' and `uudecode' are
+ POSIX compliant implementations of a pair of programs which transform
+ files into a format that can be safely transmitted across a 7-bit ASCII
+ link.
+
+ * Shellutils (SrcCD)
+
+ The Shellutils are: `basename', `chroot', `date', `dirname', `echo',
+ `env', `expr', `factor', `false', `groups', `hostname', `id', `logname',
+ `nice', `nohup', `pathchk', `printenv', `printf', `pwd', `seq', `sleep',
+ `stty', `su', `tee', `test', `true', `tty', `uname', `uptime', `users',
+ `who', `whoami', & `yes'.
+
+ * Shogi (SrcCD)
+
+ Shogi is a Japanese game similar to Chess; a major difference is that
+ captured pieces can be returned into play.
+
+ GNU Shogi is a variant of GNU Chess; it implements the same features &
+ similar heuristics. As a new feature, sequences of partial board
+ patterns can be introduced to help the program play toward specific
+ opening patterns. It has both character and X display interfaces.
+
+ It is primarily supported by Matthias Mutz on behalf of the FSF.
+
+ * SIPP (SrcCD)
+
+ SIPP is a library for photorealisticly rendering 3D scenes. Scenes can
+ be illuminated by an arbitrary number of light sources; they are built up
+ of object hierarchies, with arbitrarily many subobjects and subsurfaces.
+ Surfaces can be rendered with either Phong, Gouraud, or flat shading.
+ The library supports programmable shaders and texture mapping.
+
+ * Smail (SrcCD)
+
+ Smail is a mail transport system, designed as a compatible drop-in
+ replacement for `sendmail'. It uses a much simpler configuration format
+ than `sendmail' and is designed to be setup with minimal effort.
+
+ * Smalltalk *Also *note Forthcoming GNUs::.* (SrcCD)
+
+ GNU Smalltalk is an interpreted object-oriented programming language
+ system written in highly portable C. It has been ported to DOS, many
+ Unix, & other OSes. Features include a binary image save capability,
+ the ability to call user-written C code with parameters, an Emacs
+ editing mode, a version of the X protocol invocable from Smalltalk,
+ optional byte-code compilation and/or execution tracing, & automatically
+ loaded per-user initialization files. It implements all of the classes
+ & protocol in the book "Smalltalk-80: The Language", except for the
+ graphic user interface (GUI) related classes.
+
+ * SNePS (SrcCD)
+
+ SNePS is the Semantic Network Processing System. It is an
+ implementation of a fully intensional theory of propositional knowledge
+ representation and reasoning. SNePS runs under CLISP or GCL.
+
+ * Superopt (SrcCD)
+
+ Superopt is a function sequence generator that uses an exhaustive
+ generate-and-test approach to find the shortest instruction sequence for
+ a given function. You provide a function as input, a CPU to generate
+ code for, and how many instructions you want. Its use in GCC is
+ described in the `ACM SIGPLAN PLDI'92 Proceedings'. It supports: SPARC,
+ m68k, m68020, m88k, IBM POWER and PowerPC, AMD 29k, Intel x86 & 960,
+ Pyramid, DEC Alpha, Hitachi SH, & HP-PA.
+
+ * `stow' (SrcCD)
+
+ `stow' manages the installation of software packages, keeping them
+ separate while making them appear to be installed in the same place.
+
+ * `tar' (SrcCD)
+
+ GNU `tar' includes multi-volume support, the ability to archive sparse
+ files, compression/decompression, remote archives, and special features
+ that allow `tar' to be used for incremental and full backups. GNU `tar'
+ uses an early draft of the POSIX 1003.1 `ustar' format which is
+ different from the final version. This will be corrected in the future.
+
+ * Termcap Library (SrcCD) [FSFman]
+
+ The GNU Termcap library is a drop-in replacement for `libtermcap.a' on
+ any system. It does not place an arbitrary limit on the size of Termcap
+ entries, unlike most other Termcap libraries. Included is source for the
+ `Termcap Manual' in Texinfo format (*note Documentation::.).
+
+ * Termutils (SrcCD)
+
+ The Termutils package contains programs for controlling terminals.
+ `tput' is a portable way for shell scripts to use special terminal
+ capabilities. `tabs' is a program to set hardware terminal tab settings.
+
+ * TeX (SrcCD)
+
+ TeX is a document formatting system that handles complicated
+ typesetting, including mathematics. It is GNU's standard text formatter.
+
+ The University of Washington maintains & supports a tape distribution of
+ TeX for Unix systems. The core material is Karl Berry's `web2c' TeX
+ package. Sources are available via anonymous FTP; retrieval
+ instructions are in `/pub/tex/unixtex.ftp' on `ftp.cs.umb.edu'. If you
+ receive any installation support from the University of Washington,
+ consider sending them a donation.
+
+ To order a full distribution written in `tar' on either a 1/4inch
+ 4-track QIC-24 cartridge or a 4mm DAT cartridge, send $210.00 to:
+
+ Pierre A. MacKay
+ Department of Classics
+ DH-10, Denny Hall 218
+ University of Washington
+ Seattle, WA 98195
+ USA
+
+ Electronic-Mail: `mackay@cs.washington.edu'
+ Telephone: +1-206-543-2268
+
+ Please make checks payable to: `University of Washington'. Do not
+ specify any other payee. That causes accounting problems. Checks must
+ be in U.S. dollars, drawn on a U.S. bank. Only prepaid orders can be
+ handled. Overseas sites: please add to the base cost $20.00 to ship via
+ air parcel post or $30.00 to ship via courier. Please check with the
+ above for current prices & formats.
+
+ * Texinfo (SrcCD) [FSFman]
+
+ Texinfo is a set of utilities (`makeinfo', `info', `install-info',
+ `texi2dvi', `texindex', & `texinfmt.el') which generate printed manuals,
+ plain ASCII text, & online hypertext documentation (called "Info"), &
+ can read online Info documents; Info files can also be read in Emacs.
+ Version 3 has both Emacs Lisp & standalone programs written in C or as
+ shell scripts. Texinfo mode for Emacs enables easy editing & updating
+ of Texinfo files. Source for the `Texinfo Manual' is included (*note
+ Documentation::.).
+
+ * Textutils (SrcCD)
+
+ The Textutils programs manipulate textual data. They include: `cat',
+ `cksum', `comm', `csplit', `cut', `expand', `fmt', `fold', `head',
+ `join', `md5sum', `nl', `od', `paste', `pr', `sort', `split', `sum',
+ `tac', `tail', `tr', `unexpand', `uniq', and `wc'.
+
+ * TIFF library (SrcCD)
+
+ The TIFF library, `libtiff', is a library for manipulating Tagged Image
+ File Format files, a commonly used bitmap graphics format.
+
+ * Tile Forth (SrcCD)
+
+ Tile Forth is a 32-bit implementation of the Forth-83 standard written
+ in C, allowing it to be easily ported to new systems & extended with any
+ C-function (graphics, windowing, etc).
+
+ Many documented Forth libraries are available, e.g. top-down parsing,
+ multi-threads, & object-oriented programming.
+
+ * `time' (SrcCD)
+
+ `time' reports (usually from a shell) the user, system, & real time used
+ by a process. On some systems it also reports memory usage, page
+ faults, etc.
+
+ * `ucblogo' (SrcCD)
+
+ `ucblogo' implements the classic teaching language, Logo.
+
+ * UUCP (SrcCD)
+
+ GNU's UUCP system (written by Ian Lance Taylor) supports the `f', `g'
+ (all window & packet sizes), `v', `G', `t', `e', Zmodem, & two new
+ bidirectional (`i' & `j') protocols. With a BSD sockets library, it can
+ make TCP connections. With TLI libraries, it can make TLI connections.
+ Source is included for a manual (not yet published by the FSF).
+
+ * viewfax (SrcCD)
+
+ Viewfax is a tool for displaying fax files on an X display. It can
+ display raw, digifax or tiff/f files, such as those received by HylaFAX.
+
+ * W3 (SrcCD)
+
+ W3 (written by William Perry in Emacs Lisp) is an extensible, advanced
+ World Wide Web browser that runs as part of Emacs. It understands many
+ protocols & file formats: FTP, gopher, HTML, SMTP, Telnet, WAIS, etc.
+
+ * `wdiff' (SrcCD)
+
+ `wdiff' is a front-end to GNU `diff'. It compares two files, finding
+ the words deleted or added to the first to make the second. It has many
+ output formats and works well with terminals and pagers. `wdiff' is
+ very useful when two texts differ only by a few words and paragraphs
+ have been refilled.
+
+ * `wget' (SrcCD)
+
+ `wget' non-interactively retrieves files from the WWW using HTTP & FTP.
+ It is suitable for use in shell scripts.
+
+ * `windows32api' (SrcCD)
+
+ `windows32' is a set of header files & import libraries that can be used
+ by GNU tools for compiling & linking programs to be run on Windows NT/95.
+
+ * WN (SrcCD)
+
+ WN is a World Wide Web server designed to be secure and flexible. It
+ offers many different capabilities in pre-parsing files before passing
+ them to the client, and has a very different design from Apache and the
+ NCSA server.
+
+ * X11 (SrcCD)
+
+ We distribute Version 11, Release 6.3 of the X Window System with the
+ latest patches & bug fixes. X11 includes all of the core software,
+ documentation, contributed clients, libraries, & toolkits, games, etc.
+
+ While supplies last, we will distribute X11R5 on the November 1993
+ Source Code CD-ROM.
+
+ * `xboard' (SrcCD)
+
+ `xboard' is a graphical chessboard for X Windows. It can serve as a
+ user interface to the Crafty or GNU chess programs, the Internet Chess
+ Servers, e-mail correspondence chess, or games saved in Portable Game
+ Notation.
+
+ * `xgrabsc' (SrcCD)
+
+ `xgrabsc' is a screen capture program similar to `xwd' but with a
+ graphical user interface, more ways of selecting the part of the screen
+ to capture, & different types of output: Postscript, color Postscript,
+ xwd, bitmap, pixmap, & puzzle.
+
+ * `xinfo' (SrcCD)
+
+ `xinfo' is an X-windows program for reading Info files. It uses a
+ special widget, which is available for use in other programs.
+
+ * `xshogi' (SrcCD)
+
+ `xshogi' is a graphical Shogi (Japanese Chess) board for the X Window
+ System. It can serve as a user interface to GNU Shogi, as a referee for
+ games between two humans, or as a client for the Internet Shogi Server.
+
+ * `Ygl' (SrcCD)
+
+ `Ygl' emulates a subset of SGI's GL (Graphics Language) library under
+ X11 on most platforms with an ANSI C compiler (including GCC). It has
+ most two-dimensional graphics routines, the queue device & query
+ routines, double buffering, RGB mode with dithering, FORTRAN bindings,
+ etc.
+
+
+
+Program/Package Cross Reference
+*******************************
+
+Here is a list of the package each GNU program or library is in. You can FTP
+the current list in the file `/pub/gnu/ProgramIndex' from a GNU FTP host
+(listed in *Note How to Get GNU Software::).
+
+ * 4dview geomview
+
+ * a2p perl
+ * a2x xopt
+ * ac bsd44
+ * accton bsd44
+ * ackpfd phttpd
+ * acl bsd44
+ * acm acm
+ * acms acm
+ * addbbox geomview
+ * addftinfo Groff
+ * adventure bsd44
+ * afm2tfm TeX
+ * aid ID Utils
+ * amd bsd44
+ * ansitape bsd44
+ * AnswerGarden xopt
+ * apply bsd44
+ * appres xreq
+ * apropos bsd44
+ * ar Binutils
+ * arithmetic bsd44
+ * arp bsd44
+ * atc bsd44
+ * authwn WN
+ * autoconf Autoconf
+ * autoheader Autoconf
+ * automake Automake
+ * autoreconf Autoconf
+ * autoscan Autoconf
+ * autoupdate Autoconf
+ * auto_box xopt
+ * auto_box xreq
+
+ * b2m Emacs
+ * backgammon bsd44
+ * bad144 bsd44
+ * badsect bsd44
+ * banner bsd44
+ * basename Shellutils
+ * bash BASH
+ * battlestar bsd44
+ * bc bc
+ * bcd bsd44
+ * bdes bsd44
+ * bdftops Ghostscript
+ * beach_ball xopt
+ * beach_ball xreq
+ * beach_ball2 xopt
+ * bibtex TeX
+ * biff bsd44
+ * bison Bison
+ * bitmap xreq
+ * boggle bsd44
+ * bpltobzr Fontutils
+ * bugfiler bsd44
+ * buildhash Ispell
+ * bzrto Fontutils
+
+ * c++ GCC
+ * c++filt Binutils
+ * c2ph perl
+ * ca100 xopt
+ * caesar bsd44
+ * cal bsd44
+ * calendar bsd44
+ * canfield bsd44
+ * cat Textutils
+ * cbars wdiff
+ * cc GCC
+ * cc1 GCC
+ * cc1obj GCC
+ * cc1plus GCC
+ * cccp GCC
+ * cdwrite mkisofs
+ * cfengine cfengine
+ * cgi Spinner
+ * charspace Fontutils
+ * checknr bsd44
+ * chess bsd44
+ * chflags bsd44
+ * chgrp Fileutils
+ * ching bsd44
+ * chmod Fileutils
+ * chown Fileutils
+ * chpass bsd44
+ * chroot bsd44
+ * ci RCS
+ * cksum Textutils
+ * cktyps g77
+ * clisp CLISP
+ * clri bsd44
+ * cmail xboard
+ * cmmf TeX
+ * cmodext xopt
+ * cmp Diffutils
+ * co RCS
+ * col bsd44
+ * colcrt bsd44
+ * colrm bsd44
+ * column bsd44
+ * comm Textutils
+ * compress bsd44
+ * comsat bsd44
+ * connectd bsd44
+ * cp Fileutils
+ * cpicker xopt
+ * cpio cpio
+ * cpp GCC
+ * cppstdin perl
+ * cribbage bsd44
+ * crock xopt
+ * csh bsd44
+ * csplit Textutils
+ * ctags Emacs
+ * ctwm xopt
+ * cu UUCP
+ * cut Textutils
+ * cvs CVS
+ * cvscheck CVS
+ * cvtmail Emacs
+ * cxterm xopt
+
+ * d Fileutils
+ * date Shellutils
+ * dc bc
+ * dd Fileutils
+ * ddd DDD
+ * defid ID Utils
+ * delatex TeX
+ * demangle Binutils
+ * descend CVS
+ * detex TeX
+ * df Fileutils
+ * dhtppd phttpd
+ * diff Diffutils
+ * diff3 Diffutils
+ * diffpp enscript
+ * digest-doc Emacs
+ * dipress bsd44
+ * dir Fileutils
+ * dircolors Fileutils
+ * dirname Shellutils
+ * dish xopt
+ * disklabel bsd44
+ * diskpart bsd44
+ * dld dld
+ * dm bsd44
+ * dmesg bsd44
+ * doschk doschk
+ * dox xopt
+ * du Fileutils
+ * dump bsd44
+ * dump mkisofs
+ * dumpfs bsd44
+ * dvi2tty TeX
+ * dvicopy TeX
+ * dvips TeX
+ * dvitype TeX
+
+ * ecc ecc
+ * echo Shellutils
+ * ed ed
+ * edit-pr GNATS
+ * editres xreq
+ * edquota bsd44
+ * eeprom bsd44
+ * egrep grep
+ * eid ID Utils
+ * emacs Emacs
+ * emacsclient Emacs
+ * emacsserver Emacs
+ * emacstool Emacs
+ * emu xopt
+ * enscript enscript
+ * env Shellutils
+ * eqn Groff
+ * error bsd44
+ * es es
+ * esdebug es
+ * etags Emacs
+ * ex nvi
+ * example geomview
+ * exicyclog Exim
+ * exigrep Exim
+ * exim Exim
+ * eximon Exim
+ * eximon Exim
+ * eximstats Exim
+ * exinext Exim
+ * exiwhat Exim
+ * expand Textutils
+ * expect DejaGnu
+ * expr Shellutils
+ * exterm xopt
+
+ * f2c f2c
+ * factor bsd44
+ * fakemail Emacs
+ * false Shellutils
+ * fastboot bsd44
+ * fax2ps HylaFAX
+ * faxalter HylaFAX
+ * faxanswer HylaFAX
+ * faxcover HylaFAX
+ * faxd HylaFAX
+ * faxd.recv HylaFAX
+ * faxmail HylaFAX
+ * faxquit HylaFAX
+ * faxrcvd HylaFAX
+ * faxrm HylaFAX
+ * faxstat HylaFAX
+ * fc f2c
+ * fdraw xopt
+ * ffe g77
+ * fgrep grep
+ * fid ID Utils
+ * file bsd44
+ * find Findutils
+ * find2perl perl
+ * finger Finger
+ * fingerd Finger
+ * fish bsd44
+ * fixfonts Texinfo
+ * fixinc.svr4 GCC
+ * fixincludes GCC
+ * flex flex
+ * flex++ flex
+ * flythrough geomview
+ * fmt bsd44
+ * fnid ID Utils
+ * fold Textutils
+ * font2c Ghostscript
+ * fontconvert Fontutils
+ * forth Tile Forth
+ * forthicon Tile Forth
+ * forthtool Tile Forth
+ * fortune bsd44
+ * fpr bsd44
+ * freq Ispell
+ * freqtbl Ispell
+ * from bsd44
+ * fsck bsd44
+ * fsplit bsd44
+ * fstat bsd44
+ * ftp bsd44
+ * ftp Inetutils
+ * ftpd bsd44
+ * ftpd Inetutils
+
+ * g++ GCC
+ * gas Binutils
+ * gawk GAWK
+ * gcal gcal
+ * gcc GCC
+ * gcore bsd44
+ * gdb GDB
+ * genclass libg++
+ * geomstuff geomview
+ * gettext gettext
+ * getty bsd44
+ * gftodvi TeX
+ * gftopk TeX
+ * gftype TeX
+ * ghostview Ghostview
+ * gid ID Utils
+ * ginsu geomview
+ * git GIT
+ * gitaction GIT
+ * gitcmp GIT
+ * gitkeys GIT
+ * gitmatch GIT
+ * gitmount GIT
+ * gitps GIT
+ * gitredir GIT
+ * gitrgrep GIT
+ * gitview GIT
+ * gitwipe GIT
+ * gn GN
+ * gnans Gnans
+ * gnanslator Gnans
+ * gnats GNATS
+ * gnuchess Chess
+ * gnuchessc Chess
+ * gnuchessn Chess
+ * gnuchessr Chess
+ * gnuchessx Chess
+ * gnuclient gnuserv
+ * gnudoit gnuserv
+ * gnupdisp Shogi
+ * gnuplot gnuplot
+ * gnuplot_x11 gnuplot
+ * gnuserv gnuserv
+ * gnushogi Shogi
+ * gnushogir Shogi
+ * gnushogix Shogi
+ * go GnuGo
+ * gpc xopt
+ * gpc xreq
+ * gperf cperf
+ * gperf libg++
+ * gprof Binutils
+ * graffiti geomview
+ * graph Graphics
+ * grep grep
+ * grodvi Groff
+ * groff Groff
+ * grops Groff
+ * grotty Groff
+ * groups Shellutils
+ * gs Ghostscript
+ * gsbj Ghostscript
+ * gsdj Ghostscript
+ * gslj Ghostscript
+ * gslp Ghostscript
+ * gsnd Ghostscript
+ * gsrenderfont Fontutils
+ * gunzip gzip
+ * gvclock geomview
+ * gwm xopt
+ * gzexe gzip
+ * gzip gzip
+
+ * h2ph perl
+ * h2pl perl
+ * hack bsd44
+ * hangman bsd44
+ * head Textutils
+ * hello hello
+ * hexdump bsd44
+ * hexl Emacs
+ * hinge geomview
+ * hostname Shellutils
+ * hp2xx hp2xx
+ * hterm xopt
+ * htmlencode phttpd
+ * httpd apache
+ * httpdecode phttpd
+
+ * i18nOlwmV2 xopt
+ * i2mif xopt
+ * ico xopt
+ * ico xreq
+ * id Shellutils
+ * ident RCS
+ * ifconfig bsd44
+ * ifnames Autoconf
+ * ImageMagick xopt
+ * imageto Fontutils
+ * iman xopt
+ * imgrotate Fontutils
+ * indent indent
+ * indxbib Groff
+ * inetd bsd44
+ * inetd Inetutils
+ * info Texinfo
+ * inimf TeX
+ * init bsd44
+ * initex TeX
+ * inn bsd44
+ * install Fileutils
+ * iostat bsd44
+ * isodiag mkisofs
+ * isodump mkisofs
+ * ispell Ispell
+ * ixterm xopt
+ * ixx xopt
+
+ * join Textutils
+ * jot bsd44
+ * jove bsd44
+
+ * kdestroy bsd44
+ * kdump bsd44
+ * kermit bsd44
+ * kgames xopt
+ * kgmon bsd44
+ * kill bsd44
+ * kinit bsd44
+ * kinput2 xopt
+ * klist bsd44
+ * kpasswdd bsd44
+ * ksrvtgt bsd44
+ * kterm xopt
+ * ktrace bsd44
+
+ * lam bsd44
+ * larn bsd44
+ * lasergnu gnuplot
+ * last bsd44
+ * lastcomm bsd44
+ * latex TeX
+ * lclock xopt
+ * ld Binutils
+ * leave bsd44
+ * less less
+ * lesskey less
+ * libavcall.a ffcall
+ * libbfd.a Binutils
+ * libbfd.a GDB
+ * libbzr.a Fontutils
+ * libc.a C Library
+ * libcompat.a bsd44
+ * libcurses.a bsd44
+ * libcurses.a ncurses
+ * libdcurses.a ncurses
+ * libedit.a bsd44
+ * libF77.a f2c
+ * libF77.a g77
+ * libg++.a libg++
+ * libgdbm.a gdbm
+ * libgf.a Fontutils
+ * libgmp.a gmp
+ * libgnanslib.a Gnans
+ * libgnussl.a gnussl
+ * libI77.a f2c
+ * libI77.a g77
+ * libkvm.a bsd44
+ * libm.a bsd44
+ * libncurses.a ncurses
+ * libnihcl.a NIHCL
+ * libnihclmi.a NIHCL
+ * libnihclvec.a NIHCL
+ * libnls.a xreq
+ * libobjects.a libobjects
+ * liboctave.a Octave
+ * liboldX.a xreq
+ * libpbm.a Fontutils
+ * libPEXt.a xopt
+ * libpk.a Fontutils
+ * libresolv.a bsd44
+ * librpc.a bsd44
+ * libsipp.a SIPP
+ * libtcl.a DejaGnu
+ * libtelnet.a bsd44
+ * libterm.a bsd44
+ * libtermcap.a Termcap
+ * libtfm.a Fontutils
+ * libtiff.a tiff
+ * libutil.a bsd44
+ * libvacall.a ffcall
+ * libWc.a xopt
+ * libwidgets.a Fontutils
+ * libX.a xreq
+ * libXau.a xreq
+ * libXaw.a xreq
+ * libXcp.a xopt
+ * libXcu.a xopt
+ * libXdmcp.a xreq
+ * libXmp.a xopt
+ * libXmu.a xreq
+ * libXO.a xopt
+ * libXop.a xopt
+ * libXp.a xopt
+ * libXpex.a xopt
+ * libXt.a xopt
+ * libXt.a xreq
+ * libXwchar.a xopt
+ * liby.a bsd44
+ * libYgl.a Ygl
+ * lid ID Utils
+ * limn Fontutils
+ * listres xopt
+ * listres xreq
+ * lkbib Groff
+ * ln Fileutils
+ * locate Findutils
+ * lock bsd44
+ * logcvt-ip2n phttpd
+ * logger bsd44
+ * login bsd44
+ * logname Shellutils
+ * logo ucblogo
+ * lookbib Groff
+ * lorder bsd44
+ * lpr bsd44
+ * ls Fileutils
+ * lynx lynx
+
+ * m4 m4
+ * mail bsd44
+ * mail-files Sharutils
+ * mailq smail
+ * mailshar Sharutils
+ * make make
+ * make-docfile Emacs
+ * make-path Emacs
+ * makeindex TeX
+ * makeinfo Texinfo
+ * MakeTeXPK TeX
+ * man bsd44
+ * man-macros Groff
+ * maniview geomview
+ * mattrib mtools
+ * maze xopt
+ * maze xreq
+ * mazewar xopt
+ * mc mc
+ * mcd mtools
+ * mcopy mtools
+ * mcserv mc
+ * md5sum Textutils
+ * mdel mtools
+ * mdir mtools
+ * me-macros Groff
+ * medit2gv geomview
+ * merge RCS
+ * mesg bsd44
+ * mf TeX
+ * mformat mtools
+ * mft TeX
+ * mgdiff xopt
+ * mh bsd44
+ * mille bsd44
+ * mkafmmap enscript
+ * mkcache GN
+ * mkdep bsd44
+ * mkdir Fileutils
+ * mkfifo Fileutils
+ * mkid ID Utils
+ * mkisofs mkisofs
+ * mklocale bsd44
+ * mkmanifest mtools
+ * mkmf bsd44
+ * mkmodules CVS
+ * mknod Fileutils
+ * mkstr bsd44
+ * mlabel mtools
+ * mm-macros Groff
+ * mmd mtools
+ * monop bsd44
+ * more bsd44
+ * morse bsd44
+ * mount bsd44
+ * mountd bsd44
+ * movemail Emacs
+ * mprof bsd44
+ * mrd mtools
+ * mread mtools
+ * mren mtools
+ * ms-macros Groff
+ * msgcmp gettext
+ * msgfmt gettext
+ * msgmerge gettext
+ * msgs bsd44
+ * msgunfmt gettext
+ * mst Smalltalk
+ * mt cpio
+ * mterm xopt
+ * mtree bsd44
+ * mtype mtools
+ * mule MULE
+ * muncher xopt
+ * mv Fileutils
+ * mvdir Fileutils
+ * mwrite mtools
+
+ * NDview geomview
+ * nethack NetHack
+ * netstat bsd44
+ * newfs bsd44
+ * nfsd bsd44
+ * nfsiod bsd44
+ * nfsstat bsd44
+ * nice Shellutils
+ * nl Textutils
+ * nlmconv Binutils
+ * nm Binutils
+ * nohup Shellutils
+ * nose geomview
+ * notify HylaFAX
+ * nroff Groff
+ * number bsd44
+
+ * objc GCC
+ * objcopy Binutils
+ * objdump Binutils
+ * objective-c GCC
+ * obst-boot OBST
+ * obst-CC OBST
+ * obst-cct OBST
+ * obst-cgc OBST
+ * obst-cmp OBST
+ * obst-cnt OBST
+ * obst-cpcnt OBST
+ * obst-csz OBST
+ * obst-dir OBST
+ * obst-dmp OBST
+ * obst-gen OBST
+ * obst-gsh OBST
+ * obst-init OBST
+ * obst-scp OBST
+ * obst-sil OBST
+ * obst-stf OBST
+ * oclock xreq
+ * octave Octave
+ * od Textutils
+ * oleo Oleo
+ * ora-examples xopt
+
+ * p2c p2c
+ * pagesize bsd44
+ * palette xopt
+ * pascal bsd44
+ * passwd bsd44
+ * paste Textutils
+ * patch patch
+ * patgen TeX
+ * pathalias bsd44
+ * pathchk Shellutils
+ * pathto smail
+ * pax bsd44
+ * pbmplus xopt
+ * perl perl
+ * pfbtops Groff
+ * phantasia bsd44
+ * phttpd phttpd
+ * pic Groff
+ * pico pine
+ * pig bsd44
+ * pine pine
+ * ping bsd44
+ * pixedit xopt
+ * pixmap xopt
+ * pktogf TeX
+ * pktype TeX
+ * plaid xopt
+ * plot2fig Graphics
+ * plot2plot Graphics
+ * plot2ps Graphics
+ * plot2tek Graphics
+ * pltotf TeX
+ * pollrcvd HylaFAX
+ * pom bsd44
+ * pooltype TeX
+ * portmap bsd44
+ * ppt bsd44
+ * pr Textutils
+ * pr-addr GNATS
+ * pr-edit GNATS
+ * primes bsd44
+ * printenv Shellutils
+ * printf Shellutils
+ * protoize GCC
+ * proxygarb Spinner
+ * ps bsd44
+ * ps2ascii Ghostscript
+ * ps2epsi Ghostscript
+ * ps2fax HylaFAX
+ * psbb Groff
+ * pstat bsd44
+ * psycho xopt
+ * ptester phttpd
+ * ptx ptx
+ * pubdic+ xopt
+ * puzzle xopt
+ * puzzle xreq
+ * pwd Shellutils
+ * pyramid xopt
+
+ * query-pr GNATS
+ * quiz bsd44
+ * quot bsd44
+ * quota bsd44
+ * quotacheck bsd44
+ * quotaon bsd44
+
+ * rain bsd44
+ * random bsd44
+ * ranlib Binutils
+ * rbootd bsd44
+ * rc rc
+ * rcp bsd44
+ * rcp Inetutils
+ * rcs RCS
+ * rcs-to-cvs CVS
+ * rcs2log Emacs
+ * rcsdiff RCS
+ * rcsfreeze RCS
+ * rcsmerge RCS
+ * rdist bsd44
+ * reboot bsd44
+ * recode recode
+ * recvstats HylaFAX
+ * red ed
+ * refer Groff
+ * remsync Sharutils
+ * renice bsd44
+ * repquota bsd44
+ * restore bsd44
+ * rev bsd44
+ * rexecd bsd44
+ * rexecd Inetutils
+ * rlog RCS
+ * rlogin bsd44
+ * rlogin Inetutils
+ * rlogind bsd44
+ * rlogind Inetutils
+ * rm Fileutils
+ * rmail bsd44
+ * rmdir Fileutils
+ * rmt cpio
+ * rmt tar
+ * robots bsd44
+ * rogue bsd44
+ * route bsd44
+ * routed bsd44
+ * rr xopt
+ * rs bsd44
+ * rsh bsd44
+ * rsh Inetutils
+ * rshd bsd44
+ * rshd Inetutils
+ * rsmtp smail
+ * runq smail
+ * runtest DejaGnu
+ * runtest.exp DejaGnu
+ * ruptime bsd44
+ * rwho bsd44
+ * rwhod bsd44
+
+ * s2p perl
+ * sail bsd44
+ * saoimage SAOimage
+ * savecore bsd44
+ * sc bsd44
+ * sccs bsd44
+ * sccs2rcs CVS
+ * scdisp xopt
+ * screen screen
+ * script bsd44
+ * scsiformat bsd44
+ * sctext xopt
+ * sdiff Diffutils
+ * sed sed
+ * send-pr GNATS
+ * sendfax HylaFAX
+ * sendmail bsd44
+ * sgi2fax HylaFAX
+ * sgn GN
+ * sh bsd44
+ * shar Sharutils
+ * shinbun xopt
+ * shogi Shogi
+ * showfont xopt
+ * showmount bsd44
+ * shutdown bsd44
+ * size Binutils
+ * sj3 xopt
+ * sjxa xopt
+ * slattach bsd44
+ * sleep Shellutils
+ * sliplogin bsd44
+ * smail smail
+ * smtpd smail
+ * snake bsd44
+ * snftobdf xopt
+ * soelim Groff
+ * sort Textutils
+ * sos2obst OBST
+ * spider xopt
+ * split Textutils
+ * startslip bsd44
+ * stereo geomview
+ * stf OBST
+ * strings Binutils
+ * strip Binutils
+ * stty Shellutils
+ * su Shellutils
+ * sum Textutils
+ * superopt Superopt
+ * swapon bsd44
+ * sweep geomview
+ * sync bsd44
+ * sysctl bsd44
+ * syslog Inetutils
+ * syslogd bsd44
+ * syslogd Inetutils
+ * systat bsd44
+
+ * tabs Termutils
+ * tac Textutils
+ * tackdown geomview
+ * tail Textutils
+ * taintperl perl
+ * talk bsd44
+ * talk Inetutils
+ * talkd bsd44
+ * talkd Inetutils
+ * tangle TeX
+ * tar tar
+ * tbl Groff
+ * tcal gcal
+ * tcl DejaGnu
+ * tclsh DejaGnu
+ * tcopy bsd44
+ * tcp Emacs
+ * tee Shellutils
+ * tek2plot Graphics
+ * telnet bsd44
+ * telnet Inetutils
+ * telnetd bsd44
+ * telnetd Inetutils
+ * test Shellutils
+ * test-g++ DejaGnu
+ * test-tool DejaGnu
+ * tetris bsd44
+ * tex TeX
+ * tex3patch Texinfo
+ * texi2dvi Texinfo
+ * texindex Texinfo
+ * texspell TeX
+ * textfmt HylaFAX
+ * tfmtodit Groff
+ * tftopl TeX
+ * tftp bsd44
+ * tftp Inetutils
+ * tftpd bsd44
+ * tftpd Inetutils
+ * tgrind TeX
+ * time time
+ * timed bsd44
+ * timer Emacs
+ * timex xopt
+ * tip bsd44
+ * tkpostage xopt
+ * tn3270 bsd44
+ * togeomview geomview
+ * touch Fileutils
+ * tput Termutils
+ * tr Textutils
+ * traceroute bsd44
+ * transcript HylaFAX
+ * transfig xopt
+ * transformer geomview
+ * trek bsd44
+ * trigrp geomview
+ * trn3 bsd44
+ * troff Groff
+ * trpt bsd44
+ * trsp bsd44
+ * true Shellutils
+ * tset bsd44
+ * tsort bsd44
+ * tty Shellutils
+ * ttygnans Gnans
+ * tunefs bsd44
+ * tupdate gettext
+ * tvtwm xopt
+ * twm xreq
+
+ * ul bsd44
+ * ulpc Spinner
+ * umount bsd44
+ * uname Shellutils
+ * uncompress gzip
+ * unexpand Textutils
+ * unifdef bsd44
+ * unify wdiff
+ * uniq Textutils
+ * unprotoize GCC
+ * unshar Sharutils
+ * unvis bsd44
+ * update bsd44
+ * updatedb Findutils
+ * users Shellutils
+ * uuchk UUCP
+ * uucico UUCP
+ * uuconv UUCP
+ * uucp UUCP
+ * uucpd bsd44
+ * uucpd Inetutils
+ * uudecode Sharutils
+ * uudir UUCP
+ * uuencode Sharutils
+ * uulog UUCP
+ * uuname UUCP
+ * uupath smail
+ * uupick UUCP
+ * uurate UUCP
+ * uusched UUCP
+ * uustat UUCP
+ * uuto UUCP
+ * uux UUCP
+ * uuxqt UUCP
+
+ * v Fileutils
+ * vacation bsd44
+ * vandal xopt
+ * vcdiff Emacs
+ * vdir Fileutils
+ * vftovp TeX
+ * vgrind bsd44
+ * vi nvi
+ * viewres xopt
+ * viewres xreq
+ * vine xopt
+ * vipw bsd44
+ * virmf TeX
+ * virtex TeX
+ * vis bsd44
+ * vmstat bsd44
+ * vptovf TeX
+
+ * w bsd44
+ * waisgn GN
+ * wakeup Emacs
+ * wall bsd44
+ * wargames bsd44
+ * wc Textutils
+ * wdiff wdiff
+ * weave TeX
+ * what bsd44
+ * whatis bsd44
+ * whereis bsd44
+ * who Shellutils
+ * whoami Shellutils
+ * whois bsd44
+ * window bsd44
+ * winterp xopt
+ * wish DejaGnu
+ * wn WN
+ * wndex WN
+ * worm bsd44
+ * worms bsd44
+ * write bsd44
+ * wump bsd44
+
+ * x11perf xreq
+ * x2p perl
+ * xalarm xopt
+ * xancur xopt
+ * xargs Findutils
+ * xauth xreq
+ * xbfe Fontutils
+ * xbiff xopt
+ * xbiff xreq
+ * xboard xboard
+ * xboing xopt
+ * xbuffy3 xopt
+ * xcalc xopt
+ * xcalc xreq
+ * xcalendar xopt
+ * xcdplayer xopt
+ * xcell xopt
+ * xclipboard xreq
+ * xclock xreq
+ * xcmdmenu xopt
+ * xcms xopt
+ * xcmsdb xreq
+ * xcmstest xreq
+ * xco xopt
+ * xcolorize xopt
+ * xcolors xopt
+ * xconsole xreq
+ * xcrtca xopt
+ * xdaliclock xopt
+ * xdiary xopt
+ * xditview Groff
+ * xditview xopt
+ * xditview xreq
+ * xdm xreq
+ * xdpyinfo xreq
+ * xdu xopt
+ * xdvi TeX
+ * xdvi xopt
+ * xdvorak xopt
+ * xearth xopt
+ * xed xopt
+ * xedit xopt
+ * xedit xreq
+ * xev xopt
+ * xev xreq
+ * xexit xopt
+ * xeyes xopt
+ * xeyes xreq
+ * xfd xreq
+ * xfed xopt
+ * xfedor xopt
+ * xfeoak xopt
+ * xferstats HylaFAX
+ * xfig xopt
+ * xfontsel xopt
+ * xfontsel xreq
+ * xforecast xopt
+ * xgas xopt
+ * xgas xreq
+ * xgc xopt
+ * xgc xreq
+ * xgettext gettext
+ * xhearts xopt
+ * xhelp xopt
+ * xhost xreq
+ * xinit xreq
+ * xkeycaps xopt
+ * xkill xreq
+ * xlax xopt
+ * xlayout xopt
+ * xlbiff xopt
+ * xless xopt
+ * xload xopt
+ * xload xreq
+ * xlogin xopt
+ * xlogo xreq
+ * xlsatoms xreq
+ * xlsclients xreq
+ * xlsfonts xreq
+ * xmag xreq
+ * xmail xopt
+ * xmailbox xopt
+ * xmailwatcher xopt
+ * xman xopt
+ * xman xreq
+ * xmandel xopt
+ * xmessage xopt
+ * xmeter xopt
+ * xmh xreq
+ * xmh-icons xopt
+ * xmh.editor xopt
+ * xmodmap xreq
+ * xmon xopt
+ * xmove xopt
+ * xmphone xopt
+ * xpd xopt
+ * xphoon xopt
+ * xpipeman xopt
+ * xplot Graphics
+ * xpostit xopt
+ * xpr xopt
+ * xpr xreq
+ * xprompt xopt
+ * xproof xopt
+ * xprop xreq
+ * xpserv xopt
+ * xrdb xreq
+ * xrefresh xreq
+ * xrsh xopt
+ * xrubik xopt
+ * xrunclient xopt
+ * xscope xopt
+ * xscreensaver xopt
+ * xsession xopt
+ * xset xreq
+ * xsetroot xreq
+ * xshogi xshogi
+ * xstdcmap xreq
+ * xstr bsd44
+ * xtalk xopt
+ * xterm xreq
+ * xterm_color xopt
+ * xtetris xopt
+ * xTeXcad.13 xopt
+ * xtiff xopt
+ * xtokid ID Utils
+ * xtree xopt
+ * xtv xopt
+ * xwd xreq
+ * xwininfo xreq
+ * xwud xreq
+
+ * yacc bsd44
+ * yes Shellutils
+ * youbin xopt
+ * yow Emacs
+
+ * zcat gzip
+ * zcmp gzip
+ * zdiff gzip
+ * zforce gzip
+ * zgrep gzip
+ * zmore gzip
+ * znew gzip
+
+ * [ Shellutils
+
+
+
+CD-ROMs
+*******
+
+We offer these CD-ROMs:
+
+ * Several editions of our *Note Source Code CD-ROMs::.
+
+ * January 1997 *Note Compiler Tools Binaries CD-ROM::.
+
+ * December 1995 Compiler Tools Binaries CD-ROM, see the *note Free
+ Software Foundation Order Form::.
+
+ * December 1994 Compiler Tools Binaries CD-ROM, see the *note Free
+ Software Foundation Order Form::.
+
+ * December 1993 Compiler Tools Binaries CD-ROM, see the *note Free
+ Software Foundation Order Form::.
+
+Our CDs are in ISO 9660 format & can be mounted as a read-only file system on
+most computers. If your driver supports it, you can mount each CD with "Rock
+Ridge" extensions & it will look like a regular Unix file system, rather than
+one full of truncated & otherwise mangled names that fit vanilla ISO 9660.
+
+You can build most of the software without copying the sources off the CD.
+You only need enough disk space for object files and intermediate build
+targets.
+
+
+
+Pricing of the GNU CD-ROMs
+--------------------------
+
+If a business or organization is ultimately paying, the January 1997 Source CD
+set costs $240. The set costs $60 if you, an individual, are paying out of
+your own pocket. The January 1997 Compiler Tools Binaries CD-ROM costs $220
+for a business or organization, and $55 for an individual.
+
+
+
+What Do the Different Prices Mean?
+..................................
+
+The software on our disks is free; anyone can copy it and anyone can run it.
+What we charge for is the physical disk and the service of distribution.
+
+We charge two different prices depending on who is buying. When a company or
+other organization buys the January 1997 Source CD-ROMs, we charge $240.
+When an individual buys the same CD-ROMs, we charge just $60. This
+distinction is not a matter of who is allowed to use the software. In either
+case, once you have a copy, you can distribute as many copies as you wish and
+there's no restriction on who can have or run them. The price distinction is
+entirely a matter of what kind of entity pays for the CDs.
+
+You, the reader, are certainly an individual, not a company. If you are
+buying a disk "in person", then you are probably doing so as an individual.
+But if you expect to be reimbursed by your employer, then the disk is really
+for the company; so please pay the company price and get reimbursed for it.
+We won't try to check up on you--we use the honor system--so please cooperate.
+
+Buying CDs at the company price is very helpful for GNU; just
+150 Source CDs at that price support an FSF programmer or tech writer for a
+year.
+
+
+
+Why Is There an Individual Price?
+.................................
+
+In the past, our distribution tapes were ordered mainly by companies. The CD
+at the price of $240 provides them with all of our software for a much lower
+price than they would previously have paid for six different tapes. To lower
+the price more would cut into the FSF's funds very badly and decrease the
+software development we can do.
+
+However, for individuals, $240 is too high a price; hardly anyone could
+afford that. So we decided to make CDs available to individuals at the lower
+price of $60.
+
+
+
+Is There a Maximum Price?
+.........................
+
+Our stated prices are minimum prices. Feel free to pay a higher price if you
+wish to support GNU development more. The sky's the limit; we will accept as
+high a price as you can offer. Or simply give a donation (tax-deductible in
+the U.S.) to the Free Software Foundation, a tax-exempt public charity.
+
+
+
+January 1997 Compiler Tools Binaries CD-ROM
+-------------------------------------------
+
+The fourth edition of our CD-ROM that has binaries and complete sources for
+GNU compiler tools for some systems which lack a compiler, will be available
+at the end of January 1997. This enables the people who use these systems to
+compile GNU and other free software without having to buy a proprietary
+compiler. You can also use these GNU tools to compile your own
+C/C++/Objective-C programs. Older editions of this CD are available while
+supplies last at a reduced price; see the *note Free Software Foundation
+Order Form::.
+
+We hope to have more systems on each update of this CD. If you can help
+build binaries for new systems (especially those that don't come with a C
+compiler), or have one to suggest, please contact us at the addresses on the
+top menu.
+
+These packages:
+
+ * DJGPP
+ * GCC/G++/Objective-C
+ * GNU C Library
+ * GDB
+ * Binutils
+ * Bison
+ * Emacs (MS-DOS only)
+ * Flex
+ * Make
+ * libg++
+
+On these platforms:
+
+ * `i386-msdos'
+ * `hppa1.1-hp-hpux9'
+ * `hppa1.1-hp-hpux10'
+ * `powerpc-ibm-aix4.2'
+ * `sparc-sun-solaris2.4'
+ * `sparc-sun-solaris2.5'
+ * `sparc-sun-sunos4.1'
+
+
+
+Source Code CD-ROMs
+-------------------
+
+We have several versions of our Source Code CD-ROMs available, including:
+
+ * *Note January 1997 Source Code CD-ROMs::, the newest release, has
+ programs, bug fixes, & improvements not on the other CDs.
+
+ * *Note July 1996 Source Code CD-ROMs::.
+
+ * December 1995 Source Code CD-ROMs, see the *note Free Software
+ Foundation Order Form::.
+
+ * June 1995 Source Code CD-ROM, see the *note Free Software Foundation
+ Order Form::.
+
+ * May 1994 Source Code CD-ROM, see the *note Free Software Foundation
+ Order Form::.
+
+ * November 1993 Source Code CD-ROM, see the *note Free Software Foundation
+ Order Form::.
+
+ * May 1993 Source Code CD-ROM, see the *note Free Software Foundation
+ Order Form::.
+
+ * October 1992 Source Code CD-ROM, see the *note Free Software Foundation
+ Order Form::.
+
+The older Source CDs are available while supplies last at a reduced price
+(please note that the December 1994 Source CD is permanently out of stock).
+All the Source CDs have Texinfo source for the GNU manuals listed in *Note
+Documentation::.
+
+MIT Scheme & much of X11 is *not* on the older Source CDs.
+
+There are no precompiled programs on these Source CDs. You will need a C
+compiler (programs which need some other interpreter or compiler normally
+provide the C source for a bootstrapping program). We ship C compiler
+binaries for some systems on the *Note Compiler Tools Binaries CD-ROM::.
+
+
+
+January 1997 Source Code CD-ROMs
+................................
+
+The 9th edition of our Source Code CD will be available at the end of January
+1997 with two CD-ROM disks. It has programs, bug fixes, & improvements not
+on the older Source CDs. It has these packages, & some manuals that are not
+part of packages. The version number of each package listed might be higher
+on the 9th edition CD due to new releases being made between now and then.
+
+
+ * acm 4.7
+ * apache 1.2b2
+ * Autoconf 2.12
+ * Automake 1.0
+ * BASH 1.14.7
+ * bc 1.03
+ * Binutils 2.7
+ * Bison 1.25
+ * C Library 2.0
+ * Calc 2.02f
+ * cfengine 1.3.17a
+ * Chess 4.0.pl77
+ * CLISP 1996.05.30
+ * Common Lisp 2.2
+ * cperf 2.1a
+ * cpio 2.4.2
+ * CVS 1.9
+ * DejaGnu 1.3
+ * Diffutils 2.7
+ * dld 3.3
+ * doschk 1.1
+ * ed 0.2
+ * Elib 1.0
+ * elisp archive
+ * Emacs 18.59
+ * Emacs 19.34
+ * enscript 1.4.0
+ * es 0.84
+ * Exim 1.59
+ * f2c 1996.09.25
+ * ffcall 1.1
+ * Fileutils 3.14
+ * Findutils 4.1
+ * Finger 1.37
+ * flex 2.5.4
+ * Fontutils 0.6
+ * g77 0.5.19
+ * GAWK 3.0.1
+ * gcal 2.10
+ * GCC/G++/Objective-C 2.7.2.1
+ * GDB 4.16
+ * gdbm 1.7.3
+ * Generic NQS 3.50.2
+ * geomview 1.6.1
+ * gettext 0.10
+ * gforth 0.2.0
+ * Ghostscript 3.33
+ * Ghostview 1.5
+ * Ghostview for Windows 1.0
+ * GIT 4.3.14
+ * gmp 2.0.2
+ * GN 2.24
+ * Gnans 1.5.1
+ * gnat 3.05
+ * GNATS 3.2
+ * GNU Emacs Lisp Reference Manual 1.03
+ * GNU Emacs Lisp Reference Manual 2.4.2
+ * GnuGo 1.2
+ * gnuplot 3.5
+ * gnuserv 2.1alpha
+ * gnussl 0.2.1
+ * Graphics 0.17
+ * grep 2.0
+ * Groff 1.10
+ * gzip 1.2.4
+ * hello 1.3
+ * hp2xx 3.1.4
+ * HylaFAX 4.0b018
+ * Hyperbole 4.01
+ * ID Utils 3.2
+ * indent 1.9.1
+ * Inetutils 1.2
+ * Ispell 3.1.20
+ * karma 1.6
+ * less 321
+ * libg++ 2.7.2
+ * libobjects 0.1.19
+ * lynx 2.6
+ * m4 1.4
+ * make 3.75
+ * MandelSpawn 0.07
+ * maxima 5.2
+ * mc 3.2.1
+ * <Meta-HTML> 5.01
+ * miscfiles 1.0
+ * mkisofs 1.05GNU
+ * mm 1.07
+ * mtools 3.0
+ * MULE 2.3
+ * ncurses 1.9.9e
+ * NetHack 3.2.1
+ * NIHCL 3.1.4
+ * nvi 1.76
+ * Oaklisp 930720
+ * OBST 3.4.3
+ * Octave 2.0
+ * Oleo 1.6
+ * p2c 1.20
+ * patch 2.1
+ * perl 4.036
+ * perl 5.003
+ * phttpd 0.99.72.1
+ * pine 3.91
+ * Programming in Emacs Lisp an Introduction 1.04
+ * ptx 0.4
+ * rc 1.4
+ * RCS 5.7
+ * readline 2.0
+ * recode 3.4
+ * regex 0.12
+ * rx 1.4
+ * SAOimage 1.19
+ * screen 3.7.2
+ * sed 2.05
+ * Sharutils 4.2
+ * Shellutils 1.14
+ * Shogi 1.2p03
+ * SIPP 3.1
+ * smail 3.2
+ * Smalltalk 1.1.5
+ * Roxen 1.0
+ * stow 1.3.2
+ * Superopt 2.5
+ * tar 1.11.8
+ * Termcap 1.3
+ * Termutils 2.0
+ * TeX 3.145
+ * Texinfo 3.9
+ * Textutils 1.20
+ * tiff 3.4b035
+ * Tile Forth 2.1
+ * time 1.7
+ * ucblogo 3.4
+ * UUCP 1.06.1
+ * W3 2.2.26
+ * wdiff 0.5
+ * wget 1.4.2
+ * windows32api 0.1.2
+ * WN 1.17.1
+ * X11R6.3
+ * xboard 3.4.pl1
+ * xgrabsc 2.41
+ * xinfo 1.01.01
+ * xshogi 1.2p03
+ * Ygl 3.1
+
+
+
+July 1996 Source Code CD-ROMs
+.............................
+
+We still have copies of the 8th edition of our Source CD with two CD-ROM
+disks. It has these packages, & some manuals that are not part of packages:
+
+
+ * acm 4.7
+ * apache 1.1
+ * Autoconf 2.10
+ * Automake 1.0
+ * BASH 1.14.6
+ * bc 1.03
+ * Binutils 2.7
+ * Bison 1.25
+ * C Library 1.93
+ * Calc 2.02d
+ * cfengine 1.3.7
+ * Chess 4.0.pl77
+ * CLISP 1996.05.30
+ * Common Lisp 2.2
+ * cperf 2.1a
+ * cpio 2.4.2
+ * CVS 1.8.1
+ * DejaGnu 1.3
+ * Diffutils 2.7
+ * dld 3.3
+ * doschk 1.1
+ * ed 0.2
+ * Elib 1.0
+ * elisp archive
+ * Emacs 18.59
+ * Emacs 19.31
+ * Emacs 19.32
+ * enscript 1.4.0
+ * es 0.84
+ * Exim 0.53
+ * f2c 1996.07.23
+ * ffcall 1.0
+ * Fileutils 3.13
+ * Findutils 4.1
+ * Finger 1.37
+ * flex 2.5.3
+ * Fontutils 0.6
+ * g77 0.5.18
+ * GAWK 3.0.0
+ * gcal 1.01
+ * GCC/G++/Objective-C 2.7.2
+ * GCC 2.7.2.1
+ * GDB 4.16
+ * gdbm 1.7.3
+ * Generic NQS 3.50.0
+ * geomview 1.5.0
+ * gettext 0.10
+ * Ghostscript 3.33
+ * Ghostview 1.5
+ * Ghostview for Windows 1.0
+ * GIT 4.3.11
+ * gmp 2.0.2
+ * GN 2.24
+ * Gnans 1.5.1
+ * gnat 3.05
+ * GNATS 3.2
+ * GNU Emacs Lisp Reference Manual 1.03
+ * GNU Emacs Lisp Reference Manual 2.4
+ * GnuGo 1.2
+ * gnuplot 3.5
+ * gnuserv 2.1alpha
+ * gnussl 0.2
+ * Graphics 0.17
+ * grep 2.0
+ * Groff 1.10
+ * gzip 1.2.4
+ * hello 1.3
+ * hp2xx 3.1.4
+ * HylaFAX 4.0b018
+ * ID Utils 3.1
+ * indent 1.9.1
+ * Inetutils 1.0
+ * Ispell 3.1.20
+ * karma 1.4
+ * less 321
+ * libg++ 2.7.2
+ * libobjects 0.1.19
+ * lynx 2.5
+ * m4 1.4
+ * make 3.75
+ * MandelSpawn 0.07
+ * maxima 5.2
+ * mc 3.2.1
+ * miscfiles 1.0
+ * mkisofs 1.05GNU
+ * mm 1.07
+ * mtools 3.0
+ * MULE 2.3
+ * ncurses 1.9.9e
+ * NetHack 3.2.1
+ * NIHCL 3.1.4
+ * nvi 1.71
+ * Oaklisp 930720
+ * OBST 3.4.3
+ * Octave 1.1.1
+ * Oleo 1.6
+ * p2c 1.20
+ * patch 2.1
+ * perl 4.036
+ * perl 5.003
+ * phttpd 0.99.72.1
+ * pine 3.91
+ * Programming in Emacs Lisp an Introduction 1.04
+ * ptx 0.4
+ * rc 1.4
+ * RCS 5.7
+ * readline 2.0
+ * regex 0.12
+ * rx 1.0
+ * SAOimage 1.18
+ * screen 3.7.1
+ * sed 2.05
+ * Sharutils 4.2
+ * Shellutils 1.12
+ * Shogi 1.2p03
+ * SIPP 3.1
+ * smail 3.2
+ * Smalltalk 1.1.1
+ * Spinner 1.0b14
+ * Superopt 2.5
+ * tar 1.11.8
+ * Termcap 1.3
+ * Termutils 2.0
+ * TeX 3.145
+ * Texinfo 3.7
+ * Textutils 1.19
+ * tiff 3.4b035
+ * Tile Forth 2.1
+ * time 1.7
+ * ucblogo 3.3
+ * UUCP 1.06.1
+ * W3 2.2.26
+ * wdiff 0.5
+ * WN 1.15.3
+ * X11R6.3
+ * xboard 3.4.pl1
+ * xgrabsc 2.41
+ * xshogi 1.2p03
+ * Ygl 3.1
+
+
+
+CD-ROM Subscription Service
+***************************
+
+Our subscription service enables you to stay current with the latest GNU
+developments. For a one-time cost equivalent to three Source CD-ROMs (plus
+shipping in some cases), we will ship you four new versions of the *Note
+Source Code CD-ROMs::. The CD-ROMs are sent as they are issued (currently
+twice a year, but we hope to make it more frequent). We do not yet know if
+we will be offering subscriptions to the Compiler Tools Binaries CD.
+
+A subscription is an easy way to keep up with the regular bug fixes to the X
+Window System. Each edition of the *Note Source Code CD-ROMs::, has updated
+sources for the X Window System.
+
+Please note: In two cases, you must pay 4 times the normal shipping required
+for a single order when you pay for each subscription. If you're in Alaska,
+Hawaii, or Puerto Rico you must add $20.00 for shipping for each
+subscription. If you're outside of the U.S., Canada, and Puerto Rico, you
+must add $80.00 for each subscription. See "CD-ROMs" and "Tax and Shipping
+Costs" on the *note Free Software Foundation Order Form::.
+
+
+
+FSF T-shirt
+***********
+
+The front of our T-shirt has the GNU Emacs Lisp code `(USE 'GNU)' with "`()'"
+being the dancing parentheses from the cover of our `GNU Emacs Lisp Reference
+Manual' (drawn by Berkeley, CA artist Etienne Suvasa). The shirt's back has
+the Preamble to the GNU General Public License.
+
+These shirts come in black, purple, red, pink, burgundy, blue, and natural
+(off-white). When you order, please give 3 choices. Black and purple are
+printed in white; the other colors are printed in black. All shirts are
+thick 100% cotton, and come in sizes S, M, L, XL, and XXL (but they run small
+so you may want a larger size than usual).
+
+GNU T-shirts often create spontaneous friendships at conferences & on
+university campuses. They also make great gifts for friends & family,
+including children!
+
+
+
+Free Software Foundation Order Form
+***********************************
+
+All items are distributed with permission to copy and to redistribute.
+Texinfo source for each manual and source for each reference card is on the
+appropriate CD-ROM; the prices for these media do not include printed
+documentation. All items are provided on an ``as is'' basis, with no
+warranty of any kind. Please allow four weeks for delivery (though it
+won't usually take that long).
+
+
+ PRICE AND CONTENTS MAY CHANGE WITHOUT NOTICE AFTER July 31, 1997.
+
+
+A possibly more current version of this order form can be found on the
+World Wide Web at `http://www.gnu.ai.mit.edu/order/order.html' or
+can be found in file `/pub/gnu/GNUinfo/ORDERS' on a GNU FTP host
+(listed in *Note How to Get GNU Software::).
+
+
+
+FSF Deluxe Distribution
+.......................
+(Please contact us with any questions. *note Deluxe Distribution::.
+for machine, operating system, and media types.)
+
+
+____ @ $5000 = $ ______ The Deluxe Distribution, with manuals, etc.
+
+Machine: _____________________________________________________________________
+
+Operating system: ____________________________________________________________
+
+Media type: __________________________________________________________________
+
+Version of X Window System to build: _________________________________________
+
+
+
+CD-ROMs, in ISO 9660 format (*note CD-ROMs::.):
+..............................................
+
+
+GNU Source Code CD-ROMs, Version 9 with X11R6.3 (*note January 1997 Source Code CD-ROMs::.):
+
+____ @ $240 = $ ______ for corporations and other organizations.
+
+____ @ $ 60 = $ ______ for individuals.
+
+
+Subscriptions, next 4 updates, of the Source Code CD-ROM, in ISO 9660 format
+(*note CD-ROM Subscription Service::.):
+
+____ @ $720 = $ ______ for corporations and other organizations.
+
+____ @ $180 = $ ______ for individuals.
+
+
+GNU Compiler Tools Binaries CD-ROM, Version 4, January 1997 Edition
+(*note Compiler Tools Binaries CD-ROM::.):
+
+____ @ $220 = $ ______ for corporations and other organizations.
+
+____ @ $55 = $ ______ for individuals.
+
+
+
+Proceedings
+-----------
+
+____ @ $ 25 = $ ______ The Proceedings of the First Conference
+ on Freely Redistributable Software - only
+ available while supplies last.
+
+
+
+Manuals
+-------
+
+These manuals (*note Documentation::.). The latest version of each manual
+will be shipped. Please contact us if you want a specific version.
+
+____ @ $ 25 = $ ______ GNU Emacs manual, with a reference card.
+
+____ @ $ 50 = $ ______ GNU Emacs Lisp Reference manual, in two volumes.
+
+____ @ $ 60 = $ ______ GNU Emacs Lisp Reference, Japanese Edition.
+
+____ @ $ 50 = $ ______ Using and Porting GNU CC.
+
+____ @ $ 50 = $ ______ GNU C Library Reference Manual.
+
+____ @ $ 50 = $ ______ GNU Emacs Calc manual, with a reference card.
+
+____ @ $ 20 = $ ______ Programming in Emacs Lisp: An Introduction.
+
+____ @ $ 20 = $ ______ Debugging with GDB, with a reference card.
+
+____ @ $ 25 = $ ______ GNU Awk User's Guide.
+
+____ @ $ 20 = $ ______ Make manual.
+
+____ @ $ 20 = $ ______ Bison manual, with a reference card.
+
+____ @ $ 20 = $ ______ Flex manual, with a reference card.
+
+____ @ $ 20 = $ ______ Texinfo manual.
+
+____ @ $ 15 = $ ______ Termcap manual.
+
+
+
+Reference Cards
+---------------
+
+The following reference cards, in packets of ten. For single copies please
+contact us.
+
+____ @ $ 10 = $ ______ GNU Emacs version 19 reference cards.
+
+____ @ $ 10 = $ ______ GNU Emacs Calc reference cards.
+
+____ @ $ 10 = $ ______ GDB reference cards.
+
+____ @ $ 10 = $ ______ Bison reference cards.
+
+____ @ $ 10 = $ ______ Flex reference cards.
+
+
+
+T-shirts
+--------
+
+GNU/FSF T-shirts, thick 100% cotton in sizes: M, L, XL, & XXL (they run
+small); and in colors: black, purple, red, pink, burgundy, blue, &
+natural (off-white); please list 1st, 2nd, and 3rd choice of color
+(*note FSF T-shirt::.):
+
+____ @ $ 15 = $ ______ Size _____
+
+ Color choice: 1st _______ 2nd _______ 3rd _______
+
+____ @ $ 15 = $ ______ Size _____
+
+ Color choice: 1st _______ 2nd _______ 3rd _______
+
+____ @ $ 15 = $ ______ Size _____
+
+ Color choice: 1st _______ 2nd _______ 3rd _______
+
+____ @ $ 15 = $ ______ Size _____
+
+ Color choice: 1st _______ 2nd _______ 3rd _______
+
+
+Older Items
+-----------
+
+Older items are only available while supplies last.
+
+____ @ $ 5 = $ ______ GNU Emacs version 18 reference cards, in packets
+ of ten.
+
+____ @ $ 15 = $ ______ GNU Emacs Manual for Emacs version 19.29.
+
+
+____ @ $ 10 = $ ______ Gawk Manual, Edition 0.16 for version 2.16.
+
+
+____ @ $ 40 = $ ______ Using and Porting GCC, 8.5 x 11 inches, with
+ plastic binding (same text as current edition)
+
+____ @ $ 15 = $ ______ Debugging with GDB for Version 4.14
+
+
+Please fill in the number of each older CD-ROM you order:
+
+ GNU Compiler Tools Binaries CD-ROMs:
+
+Version 1 (December '93) ______ Version 2 (December '94) ______
+
+Version 3 (December '95) ______
+
+ GNU Source Code CD-ROMs: (Version 5 (Dec. '94) is not available.)
+
+Version 1 (October '92) ______ Version 2 (May '93) ______
+
+Version 3 (November '93 - last edition with X11R5) ______
+
+Version 4 (May '94 - first edition with X11R6) ______
+
+Version 6 (June '95) ______ Version 7 (Dec. '95) ______
+
+Version 8 (June '96) ______
+
+Please put the total count and cost of the above older CD-ROMs here:
+
+____ @ $ 80 = $ ______ for corporations and other organizations.
+
+____ @ $ 20 = $ ______ for individuals.
+
+ ======
+
+ Subtotal $ ______
+
+
+
+Tax and Shipping Costs
+----------------------
+
+ + $ ______ For addresses in Massachusetts: add 5% sales tax
+ or give tax exempt number. There is no sales tax
+ on T-shirts.
+ + $ ______ Shipping fee for addresses in Alaska, Hawaii, or
+ Puerto Rico:
+ $ 5.00 base charge;
+ + $ 5.00 for *each* Emacs Calc or Emacs Lisp
+ Reference manual ($ 5.00 * #ofMans);
+ + $ 20.00 for *each* CD-ROM subscription
+ ($20.00 * #ofSubs);
+ + $ 1.00 for *each* item other then the above
+ (shipping for all other items =
+ $ 1.00 * #ofOtherItems).
+ + $ ______ Shipping fee for most Foreign Destinations: (Please
+ do *not* use this formula for addresses in China,
+ Guam, Indonesia, Israel, Malaysia, New Zealand,
+ Philippines, and Thailand. Please fax,
+ or contact us for an exact shipping quote.)
+ $ 20.00 base charge for orders to other
+ addresses outside of U.S., Canada, & Puerto Rico:
+ + $ 10.00 for each item ordered, ($ 10.00 * #ofItems)
+ + $ 80.00 for each CD-ROM subscription
+ ($ 80.00 * #ofSubs) (don't count as an item).
+ + $ ______ Optional (tax-deductible in the U.S.) donation.
+ ------ We suggest 5% if paying by credit card.
+
+ TOTAL $ ______ We pay for shipping via UPS ground transportation in
+ the contiguous 48 states and Canada. For very
+ large orders, ask about actual shipping costs for
+ that order.
+
+Note: The shipping fee for foreign destinations covers express courier
+ shipping. If you would like shipping via air mail, please contact
+ our distribution offfice for a quote on your order.
+
+Shipping Information
+--------------------
+
+Name: ________________________________________________________________________
+
+Mail Stop/Dept. Name: ________________________________________________________
+
+Organization: ________________________________________________________________
+
+Street Address: ______________________________________________________________
+
+City, State/Province: ________________________________________________________
+
+Zip Code/Postal Code Country: ________________________________________________
+
+Telephone number in case of a problem with your order.
+For international orders, please include a Fax number. _______________________
+
+E-mail Address: ______________________________________________________________
+
+
+------------------------------------------------------------------------------
+| |
+| Orders filled only upon receipt of check, money order, or credit card |
+| order in U.S. dollars. Unpaid orders will be returned to the sender. |
+| We do not have the staff to handle the billing of unpaid orders. Please |
+| help keep our lives simple by including your payment with your order. |
+| |
+------------------------------------------------------------------------------
+
+
+
+For orders from outside the U.S.:
+---------------------------------
+
+You are responsible for paying all duties, tariffs, and taxes. If you
+refuse to pay the charges, the shipper will return or abandon the order.
+
+
+ ---------------------------------------------------------------------------
+ | |
+ | Please make checks payable to the ``Free Software Foundation''. |
+ | |
+ | Checks must be in U.S. dollars, drawn on a U.S. bank. |
+ | |
+ ---------------------------------------------------------------------------
+
+
+
+For Credit Card Orders:
+-----------------------
+
+The Free Software Foundation takes these credit cards: Carte Blanche,
+Diner's Club, JCB, MasterCard, Visa, or American Express. Please note that
+we are charged about 5% of an order's total amount in credit card
+processing fees. Please consider paying by check instead, or adding on a 5%
+donation to make up the difference. To place a credit card order, please
+give us this information:
+
+
+Card type: ___________________________________________________________________
+
+Account Number: ______________________________________________________________
+
+Expiration Date: _____________________________________________________________
+
+Cardholder's Name: ___________________________________________________________
+
+Cardholder's Signature: ______________________________________________________
+
+
+
+------------------------------------------------------------------------------
+| |
+| If you wish to pay by wire transfer or you are a reseller, please |
+| contact us or write us for details. |
+| |
+------------------------------------------------------------------------------
+
+
+
+A possibly more current version of this order form can be found on the
+World Wide Web at `http://www.gnu.ai.mit.edu/order/order.html' or
+can be found in file `/pub/gnu/GNUinfo/ORDERS' on a GNU FTP host
+(listed in *Note How to Get GNU Software::).
+
+
+
+ Please mail orders to: Free Software Foundation
+ 59 Temple Place - Suite 330
+ Boston, MA 02111
+PRICES AND CONTENTS MAY CHANGE +1-617-542-5942
+WITHOUT NOTICE AFTER July 31, 1997 Fax (including Japan): +1-617-542-2652
+
+Version: January 1997 ASCII etc/ORDERS
+
+-----------------------------------------------------------------------------
diff --git a/gcc/README b/gcc/README
new file mode 100644
index 00000000000..43ed75d6f9f
--- /dev/null
+++ b/gcc/README
@@ -0,0 +1,26 @@
+This directory contains the version 2.7.2 release of the GNU C
+compiler. It includes all of the support for compiling C++ and
+Objective C, including a run-time library for Objective C.
+
+The GNU C compiler is free software. See the file COPYING for copying
+permission.
+
+See the file gcc.texi (together with other files that it includes) for
+installation and porting information. The file INSTALL contains a
+copy of the installation information, as plain ASCII.
+
+Installing this package will create various files in subdirectories of
+/usr/local/lib, which are passes used by the compiler and a library
+named libgcc.a. It will also create /usr/local/bin/gcc, which is
+the user-level command to do a compilation.
+
+See the Bugs chapter of the GCC Manual for how to report bugs
+usefully. An online readable version of the manual is in the files
+gcc.info*.
+
+The files pself.c and pself1.c are not part of GCC.
+They are programs that print themselves on standard output.
+They were written by Dario Dariol and Giovanni Cozzi, and are
+included for your hacking pleasure. Likewise pself2.c
+(Who is the author of that?) and pself3.c (by Vlad Taeerov and Rashit
+Fakhreyev).
diff --git a/gcc/README-bugs b/gcc/README-bugs
new file mode 100644
index 00000000000..06e15bb8af7
--- /dev/null
+++ b/gcc/README-bugs
@@ -0,0 +1,144 @@
+The purpose of GCC pretesting is to verify that the new GCC
+distribution, about to be released, works properly on your system *with
+no change whatever*, when installed following the precise
+recommendations that come with the distribution.
+
+Here are some guidelines on how to do pretesting so as to make it
+helpful. All of them follow from common sense together with the
+nature of the purpose and the situation.
+
+* It is absolutely vital that you mention even the smallest change or
+departure from the standard sources and installation procedure.
+
+Otherwise, you are not testing the same program that I wrote. Testing
+a different program is usually of no use whatever. It can even cause
+trouble if you fail to tell me that you tested some other program
+instead of what I know as GCC. I might think that GCC works, when in
+fact it has not been properly tried, and might have a glaring fault.
+
+* Even changing the compilation options counts as a change in the
+program. The GCC sources specify which compilation options to use.
+Some of them are specified in makefiles, and some in machine-specific
+configuration files.
+
+You have ways to override this--but if you do, then you are not
+testing what ordinary users will do. Therefore, when pretesting, it
+is vital to test with the default compilation options.
+
+(It is okay to test with nonstandard options as well as testing with
+the standard ones.)
+
+* The machine and system configuration files of GCC are parts of
+GCC. So when you test GCC, you need to do it with the
+configuration files that come with GCC.
+
+If GCC does not come with configuration files for a certain machine,
+and you test it with configuration files that don't come with GCC,
+this is effectively changing GCC. Because the crucial fact about
+the planned release is that, without changes, it doesn't work on that
+machine.
+
+To make GCC work on that machine, I would need to install new
+configuration files. That is not out of the question, since it is
+safe--it certainly won't break any other machines that already work.
+But you will have to rush me the legal papers to give the FSF
+permission to use a large piece of text.
+
+* Look for recommendations for your system.
+
+You can find these recommendations in the Installation node of the
+manual, and in the file INSTALL. (These two files have the same text.)
+
+These files say which configuration name to use for your machine, so
+use the ones that are recommended. If you guess, you might guess
+wrong and encounter spurious difficulties. What's more, if you don't
+follow the recommendations then you aren't helping to test that its
+recommendations are valid.
+
+These files may describe other things that you need to do to make GCC
+work on your machine. If so, you should follow these recommendations
+also, for the same reason.
+
+Also look at the Trouble chapter of the manual for items that
+pertain to your machine.
+
+* Don't delay sending information.
+
+When you find a problem, please double check it if you can do so
+quickly. But don't spend a long time double-checking. A good rule is
+always to tell me about every problem on the same day you encounter
+it, even if that means you can't find a solution before you report the
+problem.
+
+I'd much rather hear about a problem today and a solution tomorrow
+than get both of them tomorrow at the same time.
+
+* Make each bug report self-contained.
+
+If you refer back to another message, whether from you or from someone
+else, then it will be necessary for anyone who wants to investigate
+the bug to find the other message. This may be difficult, it is
+probably time-consuming.
+
+To help me save time, simply copy the relevant parts of any previous
+messages into your own bug report.
+
+In particular, if I ask you for more information because a bug report
+was incomplete, it is best to send me the *entire* collection of
+relevant information, all together. If you send just the additional
+information, that makes me do extra work. There is even a risk that
+I won't remember what question you are sending me the answer to.
+
+* Always be precise when talking about changes you have made. Show
+things rather than describing them. Use exact filenames (relative to
+the main directory of the distribution), not partial ones. For
+example, say "I changed Makefile" rather than "I changed the
+makefile". Instead of saying "I defined the MUMBLE macro", send a
+diff that shows your change.
+
+* Always use `diff -c' to make diffs. If you don't include context,
+it may be hard for me to figure out where you propose to make the
+changes. I might have to ignore your patch because I can't tell what
+it means.
+
+* When you write a fix, keep in mind that I can't install a change
+that would break other systems.
+
+People often suggest fixing a problem by changing machine-independent
+files such as toplev.c to do something special that a particular
+system needs. Sometimes it is totally obvious that such changes would
+break GCC for almost all users. I can't possibly make a change like
+that. All I can do is send it back to you and ask you to find a fix
+that is safe to install.
+
+Sometimes people send fixes that *might* be an improvement in
+general--but it is hard to be sure of this. I can install such
+changes some of the time, but not during pretest, when I am trying to
+get a new version to work reliably as quickly as possible.
+
+The safest changes for me to install are changes to the configuration
+files for a particular machine. At least I know those can't create
+bugs on other machines.
+
+* Don't try changing GCC unless it fails to work if you don't change it.
+
+* Don't even suggest changes that would only make GCC cleaner.
+Every change I install could introduce a bug, so I won't install
+a change unless I see it is necessary.
+
+* If you would like to suggest changes for purposes other than fixing
+serious bugs, don't wait till pretest time. Instead, send them just
+after I make a release. That's the best time for me to install them.
+
+* In some cases, if you don't follow these guidelines, your
+information might still be useful, but I might have to do more work to
+make use of it. Unfortunately, I am so far behind in my work that I
+just can't get the job done unless you help me to do it efficiently.
+
+
+ Thank you
+ rms
+
+Local Variables:
+mode: text
+End:
diff --git a/gcc/SERVICE b/gcc/SERVICE
new file mode 100644
index 00000000000..786d4768c68
--- /dev/null
+++ b/gcc/SERVICE
@@ -0,0 +1,1460 @@
+ -*- text -*-
+GNU Service Directory
+---------------------
+
+This is a list of people who have asked to be listed as offering
+support services for GNU software, including GNU Emacs, for a fee
+or in some cases at no charge.
+
+The information comes from the people who asked to be listed;
+we do not include any information we know to be false, but we
+cannot check out any of the information; we are transmitting it to
+you as it was given to us and do not promise it is correct.
+Also, this is not an endorsement of the people listed here.
+We have no opinions and usually no information about the abilities of
+any specific person. We provide this list to enable you to contact
+service providers and decide for yourself whether to hire one.
+
+Before FSF will list your name in the GNU Service Directory, we ask
+that you agree informally to the following terms:
+
+1. You will not restrict (except by copyleft) the use or distribution
+of any software, documentation, or other information you supply anyone
+in the course of modifying, extending, or supporting GNU software.
+This includes any information specifically designed to ameliorate the
+use of GNU software.
+
+2. You will not take advantage of contact made through the Service
+Directory to advertise an unrelated business (e.g., sales of
+non-GNU-related proprietary information). You may spontaneously
+mention your availability for general consulting, but you should not
+promote a specific unrelated business unless the client asks.
+
+Please include some indication of your rates, because otherwise users
+have nothing to go by. Please put each e-mail address inside "<>".
+Please put nothing else inside "<>". Thanks!
+
+For a current copy of this directory, or to have yourself listed, ask:
+ gnu@prep.ai.mit.edu
+
+** Please keep the entries in this file alphabetical **
+
+Altrasoft <info@altrasoft.com>
+4880 Stevens Creek Blvd., Suite 205
+San Jose, CA 95129-1034
++1 408 243 3300
+http://www.altrasoft.com
+
+Altrasoft provides corporate-quality support, development and user
+documentation for GNU Emacs, XEmacs and InfoDock. (InfoDock is a turnkey
+information management and software development toolset built atop emacs,
+written by one of our associates.) Emacs distributions for a variety of
+platforms are also available, as is support for other emacs variants, such as
+those often found on PCs.
+
+Our unique focus on emacs-related work allows us to attract expert talent in
+this area to keep you on the leading edge of productivity, especially if you
+do software development work. We do the porting, patching, coding,
+integrating, debugging, documenting and testing so that your people spend
+much more productive time on their mainline tasks.
+
+Standard support packages include help on all aspects of the packages
+supported, including all tools shipped as a standard part of the original
+package distribution. In general, we want to give you an unbelievably strong
+level of support, so where we can, we will also answer questions concerning
+any add-on Lisp code that is used at your site. Setup and customization
+help, bug fixes, and announcements of new releases are, of course, included.
+
+Support rates start at $1,500 USD, for single user support for one year.
+Discounts are available for group contracts. We also offer Golden Support
+contracts for those who need the absolute best in mission-critical support;
+contact us for details. Hourly development rates and fixed bid work are
+available.
+
+Updated: 1997-05-12
+
+Magnus Alvestad <magnus@itanalyse.no>
+
+GNU Emacs, GCC, the Unix tools, Linux, Jolt.
+
+Rates: Free, or from $50/hour.
+
+Updated: 1997-05-09
+
+AO UrbanSoft <info@usoft.spb.su>
+St. Petersburg State University Science Campus
+St. Petersburg, Russia
+www.usoft.spb.ru
+
+AO UrbanSoft packages, markets and supports
+industry standard free software products,
+including the Linux operating system and
+TeX document compiler.
+The company also provides programming services
+based on TeX, Tk, Python, HTML, Java, Perl and
+Intranet.
+
+Rates approximately 15 USD per hour.
+
+Updated: 1997-05-25
+
+Joseph Arceneaux <jla@ai.mit.edu>
+PO Box 460633 http://www.samsara.com/~jla
+San Francisco, CA 94146-0633
++1 415 648 9988
++1 415 285 9088
+
+Recently led the project making Wells Fargo Bank the first to provide
+secure customer account access over the Internet.
+
+Former FSF staffmember. Performed X11 implementation of Emacs version
+19, designed and implemented WYSIWYG Emacs. Installed and
+administered FSF network. Maintainer of GNU indent. Over 15 years
+experience with Unix and other systems, from writing ROM monitors to
+UI design and system administration.
+
+I provide installation, porting, debugging and customization or
+development of GNU and other Unix software. I also design and
+implement free software projects and consult on software engineering
+and systems design. Handholding and teaching services are also
+available as well as things like LAN and compute--infrastructure design.
+
+Time and material rates around $150 USD per hour, depending upon the
+particular job. I am also very interested in fixed-bid jobs. For
+selected non-profit organizations with worthy goals, I work for free.
+
+Updated: 1995-10-17
+
+Gerd Aschemann <Aschemann@Informatik.TH-Darmstadt.de>
+Osannstr. 49
+D-64285 Darmstadt
+Tel.: +49 6151 16 2259
+http://www.informatik.th-darmstadt.de/~ascheman/
+
+- System Administrator (UNIX) at CS Department, TU Darmstadt, Germany
+- 17 years experience with CS, System administration on different platforms
+- 10 years with UNIX/Networking/FreeWare/GNU/X11
+- 8 years organizer of Operating Systems and Distributed Systems courses
+- Lectures on System and Network Administration
+- Platforms: Solaris, SunOS, Ultrix, OSF1, HP-UX, Linux, FreeBSD, AIX, SCO
+- Distributed Platforms and Information Systems (CORBA, WWW, Java, FTP)
+- Experience with parallel environments (Connection Machine, Meiko, Parsytec)
+- Consultant
+
+Rates are at 130,-- DM (~80 US$) per hour minimum, depending on the job.
+I am willing to travel for sufficiently large jobs.
+
+Updated: 1997-05-07
+
+
+ Basis Technology Corp.
+ One Kendall Square, Bldg 200
+ Cambridge, MA 02139
+ U.S.A.
+
+ Tel: +1-617-252-5636
+ Fax: +1-617-252-9150
+ E-mail: <info@basistech.com>
+ Web: http://www.basistech.com
+
+Technical Expertise:
+ Multilingual software development
+ Internationalization and localization of software products
+ International character encodings, including Unicode, ISO-10646,
+ ISO-2022, ISO-8859-n, JIS, KSC5601, BIG5, GB2312
+ Translation of technical materials into Japanese, Korean, and Chinese
+ including HTML, SGML, RTF, MIF, etc.
+
+GNU-related Services:
+ Custom internationalization and localization of GNU software, or
+ applications developed using GNU tools (GCC, G++, Emacs Lisp, etc.)
+ Custom multilingual application development based on MULE.
+
+GNU Contributions:
+ Organized 1992, 1993, and 1994 fund-raising seminars and lecture
+ tours for FSF in Japan.
+ Negotiated book royalty agreements with Japanese publishers on
+ behalf of the FSF.
+ Negotiated hardware contributions from Japanese PC vendors to
+ the FSF.
+
+Contacts:
+ Carl Hoffman, Steve Cohen, or Karen Watts
+
+Updated: 1997-05-07
+
+Laurent Bernardin
+16, rue Dicks
+L-6944 Niederanven
+Luxemburg
+<bernardin@inf.ethz.ch>
++41 1 632 7469
+
+Support and installation of all GNU software.
+
+Expertise: C, C++, Java, Motif, X, Unix administration, network security
+
+Rates: ~60 US$ / hour (Flux 2000.-)
+
+Updated: 1997-05-07
+
+Paul Black <paulb@triode.apana.org.au>
+Sydney, Australia
+
+ I am available for general consulting on GNU software. My specific
+areas of interest are:
+ - general C, C++, ADA and APL programming
+ - Gnu/unix utilities
+ - Troff
+ - Real Time Software
+ - Linux
+ - IP Comms, SMTP, NNTP, HTTP and WWW
+ - Simulation
+
+I am happy to provide free consulting/services if the work is of the order of
+a couple of hours. If more time is required, I am happy to negotiate depending
+on the nature of the work, my indicative rate is $40 per hour.
+
+Entered: 1996-07-10
+
+Keith Bostic
+
+ I'm interested in supporting/extending the ex/vi editors,
+ which I wrote. On-site or by email, rates are based on the
+ project. <bostic@cs.berkeley.edu>
+
+Entered: 1996-07-15
+
+Philip Brown
+<phil@mitre.org>
+(703) 893-8967 (prefer email)
+Northern-VA, D.C. Area
+Rates: $40/Hr; less for educational or charitable organizations
+
+Systems Supported:
+ HP9000/7xx running HP/UX 8.07 - 10.X
+ IBM RS6000 running AIX 3.2.X
+ Also SGI/Indy and Sun/Sparcs
+
+Software Supported:
+ Most all FSF (Gnu) software
+ esp. GCC, Emacs, Binutils, GS, etc...
+
+Statement:
+ I'd be more than happy to assist anyone in my area with acquiring,
+ installing, and configuring any FSF tools/utilities on any of the
+ above systems. I'm also willing to work with other UNIX systems not
+ listed above. In addition, I'd be happy to share my many years of
+ experience with anyone having difficulty using or configuring these
+ tools. I've been installing and using them for about 5 years now
+ and I'll swear by their quality and the people/principles that made
+ them available.
+
+
+ Phil Brown
+
+Updated: 1997-05-07
+
+James Craig Burley
+97 Arrowhead Circle
+Ashland, MA 01721-1987
+508 881-6087, -4745
+(Please call only between 0900-1700 Eastern time, and only if you
+are prepared to hire me -- ask me to help you for free only
+via email, to which I might or might not respond.)
+Email: <burley@gnu.ai.mit.edu> --preferred--
+ <burley@cygnus.com>
+ <burley@world.std.com>
+
+Expertise:
+ Compiler Internals (author of GNU Fortran, for example)
+ Operating Systems Internals
+ Tools/Utilities Development and Maintenance
+ Microcode Development and Maintenance (primarily VLIW machines)
+ System Design (computers, operating systems, toolsets, &c)
+ Debugging (often asked to help debug Other People's Code)
+ Documentation (authored many books and ran a few doc projects)
+ Extensive experience with a variety of operating systems, hardware,
+ languages, and so on
+
+Rate: $100/hour -- willing to consider flat-fee arrangements
+
+Updated: 1997-05-07
+
+Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+Becket House
+66 Highland Ave. No. 8
+Somerville, MA 02143
+(617) 623-0654
+
+
+All GNU software: Installation, customization, answering simple or
+ complex questions, bug fixing, extension.
+
+Experience: I have done Unix and GNU programming for several years,
+ I am the primary author of the Hurd (which provides most
+ kernel related facilities for the GNU OS).
+
+I am easily available in the Cambridge/Boston area; work via email.
+I am willing to travel for sufficiently large jobs.
+
+Rates: $100/hr, negotiable, less for non-profit organizaions.
+
+Updated: 1997-05-07
+
+ C2V Michel Delval <mfd@ccv.fr>
+ 82 bd Haussmann Jean-Alain Le Borgne <jalb@ccv.fr>
+ 75008 Paris
+ France
+ Tel (33 1) 40.08.07.07
+ Fax (33 1) 43.87.35.99
+ Compuserve 100413,1012
+ http://c2v.com
+
+ We offer source or source+binary distribution, installation, training,
+ maintenance, technical support, consulting, specific development and
+ followup on the GNU software development environment: Emacs, gcc/g++,
+ binutils, gas, gdb.
+
+ Experience: adapted gcc, gas and binutils to work as cross-development
+ tools for the Thomson D950 DSP chip: GCC parser and typing system
+ have been augmented to allow the manipulation of variables located in
+ separated memory spaces. Porting on new platforms, and professionally
+ developing software with the GNU tools in the Unix/X11 environment
+ since they were first available.
+
+ Rates: from 2000 FF/day to 150 000 FF/year, 40% discount for
+ educational institutions, add taxes and expenses. Ask for list.
+
+Updated: 1997-05-09
+
+Bruce Dawson - <jbd@codemeta.com>
+CodeMeta, Inc.
+Epping, NH USA
+800-468-8750
+
+Specializing in GNU tools such as guile, CVS, gnats, bash, gawk, fileutils...
+
+Services:
+
+ o 800 phone support.
+
+ o Modification and development.
+
+ o Training.
+
+Rate: $75/hour or per quote.
+
+http://www.codemeta.com
+
+Updated: 1997-05-09
+
+Kevin Cosgrove <kevinc@dOink.COM>
+
+
+ I can help folks with porting & installation of many GNU
+ and X packages on a variety of Unix platforms.
+
+
+ My rates depend on the scope of each project but range
+ from $35 to $90 per hour.
+
+Updated: 1997-05-07
+
+Couvares Consulting
+211 W. Gilman St., Suite 3W
+Madison, WI 53703 USA
+Phone: (608) 256-6201
+EMail: <couvares@family.hampshire.edu>
+Contact: Peter F. Couvares
+
+Type of support: We offer phone/email support, installation, ongoing
+ administration, training, programming, and specialized consulting for
+ free software and other UNIX systems.
+
+Sample prices: USD75/hour commercial, 40/hour nonprofit, sliding scale
+for individuals.
+
+Updated: 1996-12-04
+
+Stuart Cracraft <cracraft@ai.mit.edu>
+25682 Cresta Loma
+Laguna Niguel, CA, 92677, USA
+GNUline: 714-308-7900
+Website: http://www.earthlink.net/~cracraft/index.html
+Rate: $90/hour
+Consultation topics:
+Entire GNU suite - porting, compilation, installation,
+user-training, administrator-training
+Method: telephone line support, call-in via modem to your site,
+work over the Internet, or in-person visit.
+
+Experience: supporting GNU since the mid-1980's, coordinator
+of GNU Chess (original author), GNU Shogi, GNU Go. Ported GNU Emacs
+to Solaris (System V Release 4). Expertise in C, Emacs Lisp, Perl,
+Expect, Oracle, Informix, SunOS, Solaris, NIS, NFS.
+
+Customized programming also available.
+
+Updated: 1997-05-07
+
+Noel Cragg <noel@cyclic.com>
+6244 Aberdeen Av
+Goleta CA 93117
+805-899-4695
+
+I'll do installation, debugging, and extension of GNU tools on a
+contract basis. CVS and configuration management are my current
+specialties. Rate: $75/hour or per-project negotiated fee.
+
+Updated: 1997-05-07
+
+Cygnus Solutions
+<info@cygnus.com>
+1325 Chesapeake Terrace
+Sunnyvale, CA 94089 USA
++1 408 542 9600 voice
++1 408 542 9699 fax
+Web Site: http://www.cygnus.com
+
+
+Cygnus Solutions provides supported and maintained versions of gcc, g++, gdb
+with GUI, GNU linker and GNU macro assembler. In addition, Cygnus provides
+these GNU software development tools for well over 100 host-target
+configurations. Support includes bug fixes and semi-annual releases of the
+toolset. Each release is regression tested and includes substantial
+improvements and additions to the current release. Support is available for
+groups of 5 or 25 on a wide range of standard, special and vintage
+toolchains for native and embedded applications. New target processors are
+being added regularly. Rates for support for standard products start at $7495.
+
+Cygnus Solutions contacts:
+
+ Kathy Powers
+ ph: +1-206-888-6002
+ fx: +1-206-888-6145
+ email: <kpowers@cygnus.com>
+
+
+ Erik Westcott
+ ph: +1 408 542 9637
+ fx: +1 408 542 9699
+ email: <westcott@cygnus.com>
+Updated: 1997-05-23
+
+Marcus G. Daniels <marcusd@gnu.ai.mit.edu>
+31060 S. Kaufman Rd. <marcus@tdb.com>
+Canby, OR 97013-9520 <marcus@sysc.pdx.edu>
+(503) 651-2694
+
+I can customize, extend, port, and repair many types of free software.
+I maintain the CLISP Common Lisp implementation and contribute to
+several GNU packages (e.g. Emacs). Ten years of C and Unix
+experience. Consulting rates start at $40 US/hr.
+
+Updated: 1997-05-07
+
+Edgar Der-Danieliantz (Danielyan) <edd@acm.org>
+P.O. Box 10 FAX +374 2 28 50 82
+Yerevan 375009
+ARMENIA
+
+ Support for GCC, X Window System, WWW, Tcl/Tk, logic programming,
+ Internet security, TCP/IP.
+
+ Experience:
+ OS's: 4.4BSD, SVR4.2, FreeBSD, SCO, Solaris, UnixWare.
+ Languages: C, C++, Objective C, Pascal, Tcl/Tk, Perl, Prolog
+ Platforms: Intel, SPARC, Mac, VAX, NeXT.
+
+ Rates: Depending on type of work, approx. $20/hour. Contact for more
+ information.
+ Negotiable for individuals and non-profit organizations.
+ FREE for individuals who can't pay. Your 'Thanks!' just enough! :-)
+ Payment by international wire transfer or check.
+
+Updated: 1997-05-07
+
+Echo Labs <echo@iinet.net.au>
+29 Weld St, http://www.iinet.net.au/~echo/
+Nedlands, WA 6009
+Perth, Australia
++61 (0) 41 985 9603
+
+Echo Labs is a software consultancy that also provides support and
+development skills. Specialising in GNU software, particularly Tcl/Tk
+and Linux. We can deliver systems at a fraction of the cost of those
+based on more traditional technologies. Internet/intranet and data
+communications solutions, for all platforms are undertaken. GUI
+front-ends done quickly.
+
+While typically involved in engineering and technical area, any
+GNU/freeware software will be supported.
+
+For further details see: http://www.iinet.net.au/~echo/
+
+Experience: 12+ years C/Unix, Sun, SCO, Linux, Win/NT.
+ Systems programming, device drivers, hardware interfacing.
+ GNU tools/utilities,
+ Embedded & realtime systems, software, firmware, hardware.
+ Communications protocols and implementation.
+
+Degrees: BAppSc (CS), Curtin University, Perth
+
+Rates: AUS $50-75/hr neg.
+
+Updated: 1997-05-09
+
+Free Software Association of Germany
+Michaela Merz
+Heimatring 19
+6000 Frankfurt/Main 70
+phone: (+49 69) 6312083)
+ert : (+49-172-6987246)
+email: (info@elara.fsag.de)
+
+Supporting all kinds of freeware (i.e. GNU), freeware development, consulting,
+training, installation. Special LINUX support group.
+
+RATES:
+
+Companies and for profit
+organizations : 100 US$ / hour
+Private and not-for-profit
+organizations : 40 US$ / hour
+ert (24h Emergency
+response team) : 300 US$ / hour
+
+Entered: 1994-04-14
+
+Noah Friedman <friedman@prep.ai.mit.edu>
+1111 W. El Camino Real #109-331
+Sunnyvale, CA 94087
+(permanent)
+
+Author of several Emacs Lisp packages and parts of Emacs, as well as
+numerous network and unix system utilities. Co-maintained GNU Texinfo and
+Autoconf for a couple of years. Experienced unix systems administrator.
+FSF employee Feb 1991--Sep 1994.
+
+I can perform installation, porting, and enhancement of all GNU software
+and any other free software, including the Linux kernel; system design and
+administration for unix-type systems and IP networks; and I am willing to
+provide handholding for shell programming, Emacs Lisp development, and
+version control systems such as RCS and CVS.
+
+Fees negotiable, averaging $75-$100/hour. I can work in the California bay
+area or anywhere accessible on the Internet. For larger jobs I may be
+willing to travel.
+
+Updated: 1997-05-08
+
+Ronald F. Guilmette <rfg@monkeys.com>
+RG Consulting
+1751 East Roseville Pkwy. #1828
+Roseville, CA 95661
+Tel: +1 916 786 7945
+FAX: +1 916 786 5311
+
+Services: Development & porting of GNU software development tools.
+
+GNU Contributions:
+ Invented, designed, and implemented the protoize and
+ unprotoize tools supplied with GCC2.
+
+ Designed and developed all code to support the generation
+ of Dwarf symbolic debugging information for System V Release
+ 4 in GCC2.
+
+ Performed original port of GNU compilers to SVr4 system.
+
+ Finished port of GNU compilers to Intel i860 RISC
+ processor.
+
+Experience: 13+ years UNIX systems experience, all working on compilers
+ and related tools.
+
+ 7+ years working professionally on GCC, G++, and GDB under
+ contract to various firms including the Microelectronics
+ and Computer Technology Corporation (MCC), Data General (DG),
+ Network Computing Devices (NCD), and Intel Corp.
+
+Other qualifications:
+ Developer of the RoadTest (tm) C and C++ commercial
+ compiler test suites.
+
+ Former vice-chairman of UNIX International Programming
+ Languages Special Interest Group (UI/PLSIG).
+
+ Bachelor's and a Master's degrees, both in Computer Science.
+
+Rates: Variable depending upon contract duration. Call for quote.
+
+Updated: 1997-05-07
+
+Michael P. Deignan
+Ideamation, Inc.
+136 Nelson Street
+Providence, RI 02908
+(401) 331-3708
+(401) 272-6449 fax.
+
+Rate: Varies depending on complexity of task.
+ Hourly and fixed-rate contracts are available.
+Programs Supported: All
+
+Updated: 1997-05-07
+
+Interactive Information Limited
+
+Interactive Information Limited is an Edinburgh-based company that
+specialises in WWW services and support for using the Internet for
+marketing.
+
+Our staff have many years experience in using, and developing lisp packages
+within, Emacs, and in using other GNU/Unix tools, particularly under public
+domain UNIXes.
+
+We can provide services throughout the UK, at any level from general
+consultancy through fetching, installing and customising software to
+bespoke programming. Fees would be in the range #300 - #600 per day,
+depending primarily on the size of the job.
+
+You can contact us
+ by email: <enquire@interactive.co.uk>
+ by phone: 0370 30 40 52 (UK)
+ (+44) 370 30 40 52 (International)
+ by post: 3, Lauriston Gardens,
+ Edinburgh EH3 9HH
+ Scotland
+
+Entered: 1997-05-09
+
+Scott D. Kalter <sdk@twinsun.com>
+2032 Corral Canyon
+Malibu, CA 90265-9503
+Home: (310) 456-0254
+
+Very familiar with all levels of Elisp programming. Taught Emacs use
+and customization in universities and industry. Extensive
+troubleshooting and user support experience. Co-developed an
+object-oriented extension to Elisp (Eoops) that can be used for
+projects. Extensive Elisp level modification for rapid prototyping of
+designs used in groupware research. This includes the development of
+an infrastructure to support multiple, communicating Emacs processes.
+
+Prefer e-mail communication to telephone calls.
+
+Updated: 1997-05-07
+
+Kaman Sciences Corporation
+Griffiss Business & Technology Park
+775 Daedalian Drive
+Rome, NY 13441-4909
+(315) 334-4900
+
+CONTACTS:
+ Dennis Fitzgerald <dfitzgerald@rome.kaman.com>
+ Tom Robbins <trobbins@rome.kaman.com>
+
+Kaman Sciences has performed a GNU port for a custom RISC processor.
+We have experience in the definition and description of the machine
+register transfer language to the GNU tool-set. This includes rewriting
+and modification of the necessary description and source files of gcc, gas,
+and gld and other binutils. Kaman also has services for installation and
+setup of GNU tools, (GAWK, GCC, EMACS, etc.) on Sun workstations.
+
+Work is on a "service contract" basis and development is charged either
+hourly or as a fixed price contract.
+
+Consulting rates: $70 to $175 per hour.
+
+Updated: 1997-05-07
+
+Ehud Karni <kehud@simonwiesel.net.il>
+
+I am an UNIX system programmer. My skills include writing in C and scripts.
+
+In the GNU domain, I consider myself an expert on Emacs. I have written several
+packages in emacs-lisp (.el) including: better Hebrew support, another marking
+system, emulation for CDC full screen editor (FSE), COBOL mode, mathematical
+expression computing, and enhancements to vc.el (customization) and to ange-ftp
+(added Novell and NT operating systems).
+ I have installed and tested Emacs and my el's on several machines: DG,
+HP, Alpha (OSF) and PC (DOS).
+ I installed and worked with several other GNU packages - RCS, Gmake, GCC
+and more, but I'm not an expert in these packages.
+
+I work in Israel and my normal rate is $40 per hour.
+
+Entered: 1996-07-15
+
+Joseph R. Kiniry <kiniry@cs.caltech.edu>
+Caltech Mailstop 256-80 http://www.cs.caltech.edu/~kiniry/
+Pasadena, CA 91125 <jrk@metagenesis.com>
+Phone: 818-395-4840
+Fax: 818-792-4257
+
+Long-term high-level consultant in a variety of domains. See
+http://www.cs.caltech.edu/~kiniry/resume.html for more information on
+professional and academic background.
+
+I provide installation, porting, debugging, customization, design, and
+development of GNU and other UNIX and non-UNIX software. I am or have
+been a certified developer with Microsoft, SunSoft, NeXT, and Amiga.
+I have a great deal of development and management experience and an
+extremely broad background which contributes to my excellent system
+integration capabilities. I have a special expertise and conduct
+research in distributed object technologies.
+
+Time and material rates for local work vary regionally, but are
+currently $250 per hour on the west coast. Other rates apply for
+long-term jobs (day rates, travel, etc.) and remote work (usually 1/2
+fee). I am interested in fixed-bid jobs and will work for lower rates
+for non-profit organizations and educational institutions.
+
+Updated: 1997-05-07
+
+Bradley M. Kuhn
+<bkuhn@acm.org>
+http://www.smart.net/~bkuhn
+
+I am available for primarily Unix system administration consulting, including
+but not limited to installation, configuration and integration of GNU tools
+and other copy-lefted software such as GNU/Linux.
+
+I am particularly skilled at end-user hand-holding and assisting in the
+integration of GNU and other copy-lefted software into new environments that
+have not used such tools in the past.
+
+Please visit my homepage for more information on my background and skills.
+
+I am available for both 1099 (preferred) and W2 on-site contracting in the
+Baltimore, MD metropolitan area, as well as remote consulting via dialup or
+Internet connection anywhere in the US.
+
+My rate is in the $40/hour range, depending on the circumstances. Rates for
+non-profit organizations are substantially lower, and possibly free.
+
+Updated: 1996-12-31
+
+Fen Labalme <fen@comedia.com>
+CoMedia Consulting http//www.comedia.com/comedia/
+40 Carl Street #4 WE ARE EVERYWHERE
+San Francisco CA 94117 JUST SAY "KNOW"
+
+Consulting, installation, customization and training for GNU Emacs,
+and selected other GNU & network software. Design & implementation
+of free software projects, as well as software engineering & system
+design. I have been hacking Emacs since '76 when it was TECO and ^R
+macros (don't ask), and am inter/intra-network, UNIX & Web friendly.
+
+Rates: $75 hour & up, depending; flat rate jobs considered.
+ Lower rates, barter or free for selected non-profits.
+
+Updated: 1997-05-07
+
+Greg Lehey
+LEMIS
+PO Box 460
+Echunga SA 5153
+Australia
+
+Phone: +61-8-8388-8250
+Fax: +61-8-8388-8250
+Mobile: +61-41-739-7062
+Mail <grog@lemis.com>
+
+Services: Supply, porting, installation, consultation on all GNU
+products.
+
+Experience: 20 years OS and compiler experience, ports of most GNU
+products. Author of ported software CD-ROM for UNIX System V.4.2,
+"Porting UNIX Software" (O'Reilly), "Installing and Running FreeBSD"
+and "The Complete FreeBSD" (both Walnut Creek).
+
+Rates: Choice of AUD 120 per hour or hotline rates AUD 2.50 DM per
+minute. Outside Australia, $US 100 per hour or $US 2 per minute.
+Quick questions may be free. Limited free support available for
+purchasers of LEMIS CD-ROMs.
+
+Updated: 1997-05-09
+
+Rohan Lenard <rjl@wr.com.au>
+32 Holtermann St.
+Crows Nest, NSW 2065
+AUSTRALIA
++61 411250024
+
+* The human face behind the bug-g++@prep.ai.mit.edu mailing list - known
+ in the past as <rjl@iassf.easams.com.au> and <rjl@ot.com.au> - now
+ known as <rjl@wr.com.au>.
+
+* Interested in providing first line support and development.
+
+Experience: 10+ years C/Unix, 6+ years C++
+ Extensive experience with GNU tools, cross-compilers,
+ embedded/hosted systems, realtime, simulations,
+ and military software.
+
+Degrees: BSc (CS), BE (Comms), University of Melbourne
+
+Rates: AUS $75+/hr neg.
+
+Updated: 1997-05-17
+
+Reuven M. Lerner <reuven@netvision.net.il>
+17 Disraeli Street
+Haifa 34333
+Israel
+
+Phone: 04-824-2265 (within Israel)
+ +972-4-824-2265 (outside of Israel)
+
+Fax: 04-826-1219 (within Israel)
+ +972-4-826-1219 (outside of Israel)
+
+WWW: http://www.netvision.net.il/php/reuven
+
+- System and network administration, especially Linux-based systems
+ and networks
+- Administration, training, and programming for Internet nodes and
+ World-Wide Web sites
+- Installation, support and training in the use of Linux, Emacs, Perl,
+ and other free software
+- Expertise in C, Emacs Lisp, and Perl
+
+Consulting rates: $75/hour, less for educational institutions.
+
+Updated: 1997-05-07
+
+Richard Levitte (in TeX: Richard Levitte
+Levitte Programming Levitte Programming
+Spannvagen 38, I Spannv\"agen 28, I
+S-168 35 Bromma S-168 35 Bromma
+Sweden Sweden)
+Tel.nr.: +46 (8) 26 52 47 (there is an answering machine)
+Cellular: +46 (10) 222 64 05
+e-mail: <levitte@lp.se>
+
+What I do:
+ Primarly I work on GNU software for VMS, both VAX and AXP. I've
+ been porting GNU Emacs to VMS since spring 1991. I've ported a
+ bunch of other GNU programs as well. I maintain GNU vmslib.
+ For further info, see http://www.lp.se/~levitte/prof/resume.html
+
+Programs supported:
+ To a varying degree (ranging from extention and porting to
+ installation and simple questions) at the time of updating this
+ entry:
+ - GNU vmslib, emacs, autoconf, zip, diffutils, m4, patch, texinfo,
+ C/C++; on both VMS and Unix.
+ - Other GNU programs to a small degree; on Unix.
+ For further info, look at http://www.lp.se/products/gnu.html
+
+Experience:
+ Fluent in TeX/LaTeX and many programming languages.
+ Modified key elements in Emacs (e.g., memory and process management)
+ to work transparently on VMS. I have very good knowledge in the VMS
+ operating system. I'm also knowledged in the a few Unix flavors.
+ For further info, see http://www.lp.se/~levitte/prof/resume.html
+
+Your Rate:
+ $70-$100/hour (500-800 SEK in sweden), plus expenses. My rates
+ are negotiable, depending on how interesting the project is to me.
+
+Updated: 1997-05-08
+
+Lexa Software info@lexa.com
+1590 The Alameda, Suite 102
+San Jose, CA 95126
+
++1 800 278-2040
++1 408 278-2043 voice
++1 408 278-2045 fax
+
+http://www.lexa.com
+
+Lexa Software provides support for GNU C/C++ including the GNU debugger
+and linker. Lexa has extensive experience supporting GCC/G++ on SNI
+and Pyramid as well as all other MIPS ABI platforms. We offer support
+to 2, 5, 25 and larger number of users via phone, email, ftp.
+
+Updated: 1997-05-01
+
+Gord Matzigkeit <gord@gnu.ai.mit.edu>
+2220 Capitol Hill Crescent http://www.m-tech.ab.ca/~gord/
+Calgary, Alberta T2M 4B9 Voice: (403) 282-1387
+CANADA FAX: (403) 284-0137
+
+I will help install badly-behaved source code packages, and have experience
+fixing them to conform to GNU standards. I will gladly help novices and
+intermediate computer users to understand, install, and use free software,
+whether or not I have prior experience with that software. I know my
+limitations well, and will freely give other contacts if I do not want to
+solve your problem myself.
+
+I have installed and administered free and proprietary systems in home,
+academic, and business environments. I have practical experience in most
+aspects of Unix and network security. I know how to diagnose a complex
+existing computer system and incrementally replace it with a superior free
+system without disrupting service.
+
+I have over 2 years of experience with several of the major free OSes:
+Linux/GNU (Red Hat, Debian, Slackware), NetBSD, FreeBSD, and GNU/Hurd. I am
+the maintainer of GNU Libtool and GNU DLD. Some of my specialties are:
+Emacs, Automake, Autoconf, SANE, C, Perl, and shell script programming.
+
+My rates start at $10 (Canadian dollars) per hour. When I am not starving, I
+do not charge worthy non-profit organizations.
+
+Updated: 1997-05-08
+
+Andrew McCallum
+6623 Dalzell Place
+Pittsburgh, PA 15217
+Home: (412) 422-0688
+<mccallum@cs.cmu.edu>
+http://www.cs.rochester.edu/u/mccallum
+
+Services: Support, enhancements, new development in:
+ GNU Objective C
+ GNUstep, both graphical and non-graphical.
+ GNUstep Base Library: libgnustep-base
+ (especially Distributed Objects)
+ Interface between Objective-C and Guile or TCL: libguileobjc.
+
+Experience: 10+ years of UNIX experience.
+ Programming for NeXTSTEP since version 0.8, 1988.
+ MA and PhD in Computer Science.
+ Extensive work on GNU Objective C Runtime.
+ Author of GNUstep Base Library, including Distributed Objects
+ FSF Chief Maintainer of the GNUstep Project.
+ Contributor to GCC, Emacs, Guile.
+ C, Objective-C, Postscript, Scheme, Lisp, ELisp, Linux.
+ English and Francais.
+
+Rates: $90-$150 / hour, negotiable, depending on many variables.
+
+Updated: 1997-05-07
+
+Erik Naggum <erik@naggum.no>
+P.O. Box 1570 Vika http://www.naggum.no
+0118 OSLO phone: +47 8800 8879
+NORWAY NIC handle: EN9
+
+Background: I have extensive experience with programming under Unix, in C
+in particular (since 1983), with standards and specifications for Internet
+protocols (since 1987), International Standards for character sets and
+encoding schemes (since 1988), ISO 8879 SGML (since 1990, national head of
+delegation to ISO/IEC JTC 1/SC 18/WG 8 since 1991), and ANSI X3.226 Common
+Lisp (since early 1994). I have been an Emacs user and programmer from
+1984 to 1987 (TOPS-20) and from 1991 to present (Unix). since early 1994,
+I have worked on GNU Emacs development, in both Lisp and C, and since mid
+1995, I have been tracking the development code.
+
+Services I offer the free software community include supporting Emacs users
+and programmers with expert advice (gratis on USENET or mailing lists where
+others may benefit), customizing and writing Emacs functions and packages,
+delivering courses and seminars from tutorials to writing Emacs Lisp and C
+extensions, and providing general aid with all GNU software.
+
+My standard rate is a flat USD 80 per hour or USD 2 per minute (you decide
+which time unit to apply), but to offset the cost of processing money, the
+minimum credit card charge is USD 100 and the minimum invoiced amount is
+USD 250. Discounts are available to worthy causes -- present your case.
+Time away from home is billed at USD 40 per hour around the clock to
+encourage remote work. (Courses and seminars are negotiated individually.)
+
+Please call only about actual work, I prefer mail for all other questions.
+
+Updated: 1997-07-18
+
+NET-Community <sales@net-community.com>
+522 SW 5th Avenue http://www.net-community.com
+Suite 1105
+Portland, OR 97204 USA
+1-800-919-0060 voice
+1-503-274-4423 voice
+1-503-274-5406 fax
+
+NET-Community provides support for the complete GNUstep toolset
+including the Objective-C runtime within GCC, the GNUstep Base Library,
+the Display Ghostscript system, the GNUstep GUI Library, the GNUstep
+X/DPS GUI Backend, and the GNUstep Database Library. NET-Community also
+provides support for its own MediaBook software including the MediaBook
+Random Library and the MediaBook Speech Synthesis Library.
+NET-Community actively supports and develops free software on all
+GNUstep platforms; a portion of the proceeds, usually 20%, generated
+from CD-ROM sales go towards additional development and enhancement of
+GNUstep.
+
+Updated: 1997-05-12
+
+ Open Systems Consultants a.s
+ St. Olavsgt. 24
+ N-0166 OSLO
+ NORWAY
+
+Phone: Fax:
+ +47 22 20 40 50 +47 22 20 02 85
+
+Web: E-mail:
+ http://www.osc.no <gnu-support@osc.no>
+
+Open Systems Consultants a.s can provide programming support for all
+GNU software -- extending or adopting it to meet customer needs.
+Prices vary with software and project. Hourly fees are in the $80-120
+range. Fixed-priced projects are also available. No phone support.
+
+Updated: 1997-05-08
+
+Francesco Potorti` <F.Potorti@cnuce.cnr.it>
+Via S.Stefano, 8
+56123 Pisa, Italy
+Tel. (050)560671
+
+Emacs: installation and maintenance, training and tutorials,
+ customisation, extensions, troubleshooting. Author of some of
+ the packages in the emacs distribution, has made the porting
+ of emacs to the Motorola Delta architecture.
+
+Other: installation and maintenance of GNU software. Experience with
+ hylafax, RCS, gperf, etags, smail, indent, diff, gawk, gcc,
+ screen. Is the current maintainer of etags.
+
+Rates: 30-80 KL/hr, depending on experience on the particular task.
+ Average is 50 KL/hr $50/hr.
+ Prefer e-mail communication to telephone.
+
+Qualifications: Electronic Engineering degree, Pisa. Full time
+ researcher in CNUCE-CNR.
+ Familiar with elisp programming and porting of C programs.
+
+Updated: 1997-05-08
+
+Dipl.-Inform. Klaus Kaempf <kkaempf@progis.de>
+proGIS Software
+Jakobstr. 117
+D-52064 Aachen
+Germany
+http://www.progis.de
+Tel +49 241 470670
+Fax +49 241 4706729
+
+- 15 years C/Unix experience
+- 6 years VMS experience
+- Ported BFD library, Binutils, GNU Assembler, GNU C, GNU C++,
+ GNU C++ libraries, and GNU Make to openVMS/Alpha.
+
+We do a lot of cross-platform (Unix-VMS-WindowsNT) development
+mostly with the GNU compiler environment. We are actively
+supporting GNU software on openVMS/Alpha.
+
+Rates start at 160.- DM / hour for support and
+installation. Larger projects are negotiable.
+
+Updated: 1997-05-08
+
+Quiotix Corporation
+Menlo Park, CA
+
+Contact: Jeffrey Siegal
+ jbs@quiotix.com
+ 415 324-0535
+
+Area of focus: Embedded systems--using GNU software to develop for
+embedded systems, porting GNU software to embedded systems, extending GNU
+software to better support embedded environments, developing new tools and
+utilities for embedded development using GNU software.
+
+Services: porting, development, support, project management, advisory
+consulting.
+
+Rates: $125-$250/hour or fixed fees depending on services provided.
+
+Updated: 1997-05-16
+
+Wolfgang S. Rupprecht <wolfgang@wsrcc.com>
+47 Esparito Ave.
+Fremont, CA 94539-3827
+(510) 659-9757
+
+Anything, (lisp, C, customization, porting, installing) I have
+written thousands of lines of GNU Emacs C and Lisp code. Original
+author of the floating point additions in Emacs 19.
+
+Rates: $95/hr.
+
+Updated: 1997-05-08
+
+Stanislav Shalunov
+
+Email: shalunov@mccme.ru
+Phones: on request
+
+Installing, configuring, helping learn any free software.
+Handholding, trouble shooting. Making custom changes to free
+software written in C. Teaching, lecturing, consulting.
+
+Want to have a free OS with free software serving your needs but do
+not want to spend time yourself or not very skilled with the
+computers? Cannot decide which free software suits your needs
+better? Drop me a line.
+
+Well, essentially, anything else on special request. :-)
+
+Rate: $30/hour if you are in Moscow and I am there when you request
+job done, $50 if the job may be done remotely (like configuring user
+level program), $60/hour + travel expenses otherwise. (Negotiable,
+significant discounts may apply.)
+
+Entered 1997-07-17
+
+Vin Shelton
+EtherSoft, Inc
+617.924.6437
+<acs@acm.org>
+
+I have been a professional programmer for 20 years, with most of that time
+spent doing UNIX/C/C++ hacking. My specialties are (in no particular
+order): system/kernel hacking, speech recognition, perl, object-oriented
+design and analysis, FSF software (I have built nearly every FSF package on
+several different platforms), small language design and implementation, and
+HTML/web programming. Currently I'm a member of the XEmacs beta testing
+team - I'm responsible for maintaining the version 19.15 patches and have
+written a few small packages/lisp hacks. My rates vary from $60 - $100 per
+hour, depending on the size of the project.
+
+Updated: 1997-05-09
+
+Signum Support AB <info@signum.se>
+Teknikringen 8
+S-583 30 Linkoping, Sweden
++46 13 21 46 00 voice
++46 13 21 47 00 fax
+http://www.signum.se/
+
+Signum Support AB is a company dedicated to supporting, developing and
+distributing free software for mainly UNIX systems. The people behind
+Signum Support AB have many years of general UNIX and Internet
+experience, both as system administrators and as programmers, and also
+extensive experience in maintaining and administring the GNU programs
+and Linux.
+
+Signum Support develops and markets the free GUI equiped Readynet
+Internet server, the free PHTTPD http server and the easy to use Linux
+based Fuego firewall.
+
+Services offered:
+
+ - Support on Internet service software, especially the free
+ Readynet Internet server we have developed for Linux.
+ - Support on Linux.
+ - Customization of Linux.
+ - Installation and customizing GNU and other free software. We are
+ making free software as easy to install and use as shrink wrapped
+ programs.
+ - Warranty protection.
+ - Finding, Recommending and Investigation of free software in any
+ area of the customers choise.
+ - Regular consulting.
+
+Rates: For software items, request our price list.
+ For consulting, 700-900 SEK/hour.
+
+Updated: 1997-05-12
+
+ Jon Solomon <jsol@gnu.ai.mit.edu>
+ 235 Main St., Apt 3C-1
+ East Hartford, Conn. 06118
+ +1 860 895-8289
+
+ Maintains all GNU software... Available for General Consulting
+ (contact me if you are interested)...
+ Sendmail a specialty... Can answer questions pertaining to the
+ installation, maintainence, bug reporting and fixing for
+ most GNU products... Adhering to the FSF/GNU copyleft for all
+ work... (I only charge for the time it takes to do the above,
+ the software (and most GNU copyleft'd software) is free.
+ I can make tapes for you if you need that...
+
+Updated: 1997-05-09
+
+Name: Julian Stacey <jhs@freebsd.org>
+Location: Munich Germany, & on the Internet.
+Qualifications: University Degree, BSc Hons Computer & Cybernetics, 1980.
+Phone: +49.89.268616 Fax: +49.89.260812 Data: +49.89.26023276
+Resume: http://www.freebsd.org/~jhs/
+Time Zone: +01:00
+Rate: 130-170 DM/Hour. 2.7846 DM = 1 Pound = US $1.6332
+Commercial Independent Freelance Consultancy:
+ Any Unix (inc FreeBSD, Linux etc), C, X-Windows, FSF Tools,
+ Internet, Systems engineering, hardware interfacing,
+ real time, comms & scientific industrial, even Cyrillic &
+ Chinese interfaces etc. No Emacs. No Cobol.
+Free Sources: FSF, FreeBSD & NetBSD CVS & current (daily!) & releases,
+ X-Windows, XFree86, Free dial in soon (details on web).
+ Media Copy Charge ~DM 100 QIC 1/4" 525M, 150M, & 60M; & CAS-60M.
+Free GCC-1.40 For Symmetric Computer Systems Model 375 (native cc is broken).
+Languages: Deutsch & Francais
+ Man kann mir in Deutsch schreiben, (oder mich anrufen).
+ Je comprend Francais, mais je n'ecris pas des responses en Fr.
+! NO FREE HELP !
+ - The Free Software Foundation do not pay me.
+ - I earn my living from professional consultancy fees.
+ - Though I write code for public domain ...
+ - I will Not solve stranger's complex problems for free !
+WHEN CONTACTING ME, DO THIS :-
+ 1) Tell me Immediately, Are You:
+ A) Expecting to pay my bill for professional consultancy.
+ B) Seeking a few minutes advice free of charge.
+ 2) Give me your email adddress, or that of a friend.
+ or Volunteer to phone back ~ 5 days later to collect follow-up
+ info. from the net. (No I will not incur bills phoning you back).
+ 3) Speak English if you want free advice ! I speak German, &
+ listen in French, but if you're not paying, make some effort too !
+
+Updated: 1997-05-15
+
+Richard M. Stallman <rms@gnu.ai.mit.edu>
+545 Tech Sq, Rm 430
+Cambridge, MA 02139
+
+Emacs: anything whatever
+Is anyone interested in courses in using or extending GNU Emacs?
+
+Original inventor of Emacs and main author of GNU Emacs and GCC.
+
+Rates: $6/min or $250/hr.
+
+Updated: 1997-05-09
+
+Kayvan Sylvan <kayvan@sylvan.com>
+Sylvan Associates
+879 Lewiston Drive
+San Jose, CA 95136-1517
+Phone: (408) 978-1407
+Fax: (408) 978-1417
+
+I will help you port, install and customize GNU Emacs, GCC, G++,
+bison, and other GNU tools on almost any architechture and operating
+system. Questions answered. GNU C and lisp hacking available. I will
+also do ongoing support and periodic upgrades if you get on my GNU
+software subscription list.
+
+Rates: $70-$100/hour, depending on type of work. Substantial discounts
+for long-term contracts and also for educational or non-profit
+institutions.
+
+Experience: Many different Unix systems (2.9BSD to 4.4BSD, Xenix, SVR3 and
+SVR4, Linux, FreeBSD). Systems programming and system administration on all
+brands of Unix. Kernel hacking experience. Lots of porting experience.
+
+Updated: 1997-05-09
+
+TerraTel AB <info@netg.se>
+Tankeg=E5ngen 4
+S-417 56 G=F6teborg, Sweden
++46 31 50 79 40 voice
++46 31 50 79 39 fax
+http://www.netg.se
+
+TerraTel AB is a company that does consultant jobs and holds courses
+in the fields of Unix software, TCP/IP networking and Internet
+applications. The people behind TerraTel AB have many years
+of general UNIX experience, both as system administrators and as
+programmers, and also extensive experience in maintaining the GNU
+programs; in administration as well as finding and fixing bugs.
+
+Services offered:
+
+- Installation and customizing GNU and other free software. We will
+ make free software as easy to install and use as shrink wrapped
+ programs.
+- Service and support subscriptions.
+- Warranty protection.
+- Customization and porting.
+- Subscriptions to new versions which we will send monthly or with
+ any other interval.
+- Finding, recommending and investigating free software in any
+ area of the customers choice.
+- Regular consulting.
+- Support on Internet service software, especially the free
+- Support on Linux.
+- Freeware based courses in Unix usage, C, C++, or any GNU tools
+
+Rates: For courses, contact us for a quote,
+For consulting, $60-120/hour, depending on contract length.
+
+Entered: 1997-05-12
+
+Jonathan Thornburg / BKIS Consulting
+E-mail: <bkis@island.net> (preferred way to contact me)
+Postal: Box 8-7, Thetis Island BC V0R 2Y0, Canada
+Phone: (250) 246-3640 (somewhat unreliable)
+
+* B.Sc (Honors 1st Class) in Math+Physics+CS, M.Sc and Ph.D in Astronomy
+* 20+ years computing experience using a wide range of software and
+ hardware environments
+
+* Very fluent in C (15+ years experience)
+* Fluent in C++, Perl, sh, csh, Awk, Fortran, PL/I, Pascal, APL, Lisp,
+ Basic, Maple, Reduce, various machine languages
+* Very fluent (10+ years experience) in general Unix toolset and programming
+* Good knowledge (4+ years experience) of Unix system administration
+ (SunOS, Linux, SGI)
+* Strong background (both theory and practical experience) in Unix/network
+ security, computer graphics, X and Motif GUI programming
+* Good general knowledge of Unix (kernel) internals and device drivers
+* Very fluent in LaTeX, TeX, also HTML, HTTP, and CGI programming
+* Member of Usenix (professional and technical Unix association) and
+ SAGE (system administrator's guild)
+
+* Very strong background (extensive experience) in numerical analysis
+* Strong backgrounds in hardware architecture, microprogramming,
+ programming language implementation, compiler theory, data structures,
+ OS design and internals, networking, symbolic manipulation, AI
+
+I'm available for Unix-based contract programming, software installation,
+and/or general system administration. My recent projects include several
+20K-50K 50K line C/Maple/Awk scientific applications, several small (1K line)
+Perl/Awk text processors and "system glue" CGI programs, finding and fixing
+bugs in a (free) 50K line graphics package, and a partially completed project
+to port (really rewrite) the GUI of a 50K line C++ Netscape plugin from
+Win32 to Unix/X/Motif.
+
+Unless otherwise required by a client, all the software I write is covered
+by the GNU Public License. My basic rate is Can$50/hour for work I can do
+remotely over the Internet, more for on-site work, less for selected
+non-profit organizations.
+
+Updated: 1997-05-19
+
+Leonard H. Tower Jr. <tower@prep.ai.mit.edu>
+36 Porter Street
+Somerville, MA 02143
+USA
++1-617-623-7739
+
+Will work on most GNU software.
+Installation, handholding, trouble shooting, extensions, teaching.
+
+Rates: $ 150.00/hour + travel expenses. Negotiable for non-profits.
+
+Experience: Have hacked on over a dozen architectures in many languages. Have
+system mothered too many varieties of Unixes. Assisted rms with the front end
+of gcc and its back-end support. Resume available on request.
+
+Updated: 1997-05-24
+
+noris network GmbH
+Matthias Urlichs
+Schleiermacherstrasse 12
+90491 Nuernberg
+Germany
+Phone: +49 911 59818-0
+Fax: +49 911 59818-11
+<info@noris.de>
+http://info.noris.de/ (German)
+
+Expertise:
+ OS internals, esp. Linux and BSD, esp. device drivers
+ Network protocol / program design and coding
+ Utilities coding and maintainance
+ Program debugging, testing
+ User interface design and testing
+ Several programming and tool languages
+
+Services:
+ Installation, debugging, enhancement, distribution,
+ for all kinds of free software.
+ System administration for most Unix-like systems.
+ Email, Fax, phone, and in-person consulting (and/or "question answering").
+ Remote support and system monitoring (over the Internet),
+ Update service (new tools tested and installed automagically)
+ Internet access
+
+Rates:
+ DM 110 (~$70) per hour
+ Support contracts start at DM 170/month + DM 30/supported system.
+ Willing to travel for sufficiently large jobs.
+ Rates don't include taxes.
+
+Updated: 1996-07-05
+
+Paul C.A. van Gool
+ <P.vanGool@LR.TUDelft.NL>
+
+Address: Faculty of Aerospace Engineering
+ Delft University of Technology
+ Kluyverweg 1, 2629 HS Delft
+ The Netherlands
+
+Phone: +31-15-2785370
+Fax : +31-15-2786480
+
+I would like to provide unpaid support for the following things:
+
+- C
+- C++
+- f2c
+- compilation and installation of most GNU packages
+
+Updated: 1997-05-12
+
+Arne Wichmann
+
+EMail: <aw@math.uni-sb.de>
+Telephone on request.
+
+I support GNU software on the following platforms:
+
+Linux
+SunOS 4.X 5.X
+HPUX 9.X
+other platforms on request.
+
+Usual rates: 20DM per hour. Free support for private people as time
+permits.
+
+Updated: 1997-05-16
+
+Jody Winston
+xprt Computer Consulting, Inc.
+731 Voyager
+Houston, TX, 77058
+(281) 480-UNIX, <jody@sccsi.com>
+
+We have supported, installed, and used the entire GNU software suite
+for over 8 years on many different Unix platforms. We have written
+character device drivers and proc file systems for custom hardware
+running on Linux. In addition, we have developed a custom X11 server
+and X input extensions. Our consulting rate is $150.00 US dollars per
+hour, negotiable, plus a per diem for out of town work.
+
+Updated: 1997-05-12
+
+Lige Zhou
+Consultant
+Open Technologies Corporation
+Sun Lotus Bldg. 2nd Floor
+2-9-1 Chuou, Nakano-ku, Tokyo 164 Japan
+Tel: +81-3-3365-2911 Fax: +81-3-3365-2920
+E-mail: <zhou@opentech.co.jp>
+
+My profile is listed at: http://www.opentech.co.jp/~zhou/
+
+I have two years of experience porting and supporting GNU C Compiler and
+GNU Assember at the Wingnut project of SRA, Inc., Tokyo.
+
+I can provide free consultation on these products if the problem is not
+time-consuming.
+
+Updated: 1996-12-04
+
+
+For a current copy of this directory, or to have yourself listed, ask:
+ gnu@prep.ai.mit.edu
+
+** Please keep the entries in this file alphabetical **
diff --git a/gcc/TESTS.FLUNK b/gcc/TESTS.FLUNK
new file mode 100644
index 00000000000..04641e3c8fb
--- /dev/null
+++ b/gcc/TESTS.FLUNK
@@ -0,0 +1,39 @@
+This is a collection of things that test suites have
+said were "wrong" with GCC--but that I don't agree with.
+
+First, test suites sometimes test for compatibility with
+traditional C. GCC with -traditional is not completely
+compatible with traditional C, and in some ways I think it
+should not be.
+
+* K&R C allowed \x to appear in a string literal (or character
+literal?) even in cases where it is *not* followed by a sequence of
+hex digits. I'm not convinced this is desirable.
+
+* K&R compilers allow comments to cross over an inclusion boundary (i.e.
+started in an include file and ended in the including file).
+I think this would be quite ugly and can't imagine it could
+be needed.
+
+Sometimes tests disagree with GCC's interpretation of the ANSI standard.
+
+* One test claims that this function should return 1.
+
+ enum {A, B} foo;
+
+ func (enum {B, A} arg)
+ {
+ return B;
+ }
+
+I think it should return 0, because the definition of B that
+applies is the one in func.
+
+* Some tests report failure when the compiler does not produce
+an error message for a certain program.
+
+ANSI C requires a "diagnostic" message for certain kinds of invalid
+programs, but a warning counts as a diagnostic. If GCC produces
+a warning but not an error, that is correct ANSI support.
+When test suites call this "failure", the tests are broken.
+
diff --git a/gcc/bi-parser.c b/gcc/bi-parser.c
new file mode 100644
index 00000000000..9f6f2b02e3c
--- /dev/null
+++ b/gcc/bi-parser.c
@@ -0,0 +1,980 @@
+
+/* A Bison parser, made from bi-parser.y with Bison version GNU Bison version 1.24
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define DEFOP 258
+#define STRING 259
+
+#line 22 "bi-parser.y"
+
+
+#include <stdio.h>
+#include "hconfig.h"
+#include "bi-defs.h"
+
+extern char yytext[];
+extern int yyleng;
+
+
+/* Chain of all defs built by the parser. */
+struct def *defs;
+int ndefs;
+
+static struct node *makenode ();
+static struct variation *makevar ();
+static struct def *makedef ();
+
+void yyerror ();
+
+
+#line 44 "bi-parser.y"
+typedef union
+{
+ char *string;
+ struct def *def;
+ struct variation *variation;
+ struct node *node;
+} YYSTYPE;
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 39
+#define YYFLAG -32768
+#define YYNTBASE 8
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 259 ? yytranslate[x] : 17)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 5,
+ 7, 2, 2, 6, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 2, 4, 7, 18, 20, 24, 28, 34, 42,
+ 52, 53, 55, 59, 60, 62, 66
+};
+
+static const short yyrhs[] = { 9,
+ 0, 10, 0, 9, 10, 0, 3, 5, 4, 6,
+ 13, 6, 5, 11, 7, 7, 0, 12, 0, 11,
+ 6, 12, 0, 5, 13, 7, 0, 5, 13, 6,
+ 14, 7, 0, 5, 13, 6, 14, 6, 14, 7,
+ 0, 5, 13, 6, 14, 6, 14, 6, 14, 7,
+ 0, 0, 4, 0, 5, 15, 7, 0, 0, 16,
+ 0, 16, 6, 15, 0, 4, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 60, 65, 67, 71, 76, 78, 82, 85, 87, 89,
+ 93, 95, 98, 101, 105, 108, 112
+};
+
+static const char * const yytname[] = { "$","error","$undefined.","DEFOP",
+"STRING","'('","','","')'","top","defs","def","variations","variation","opt_string",
+"list","items","item",""
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 8, 9, 9, 10, 11, 11, 12, 12, 12, 12,
+ 13, 13, 14, 14, 15, 15, 16
+};
+
+static const short yyr2[] = { 0,
+ 1, 1, 2, 10, 1, 3, 3, 5, 7, 9,
+ 0, 1, 3, 0, 1, 3, 1
+};
+
+static const short yydefact[] = { 0,
+ 0, 1, 2, 0, 3, 0, 11, 12, 0, 0,
+ 0, 11, 0, 5, 0, 0, 0, 14, 7, 6,
+ 4, 0, 0, 17, 0, 15, 14, 8, 13, 0,
+ 0, 16, 14, 9, 0, 10, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 37,
+ 2, 3, 13, 14, 9, 23, 25, 26
+};
+
+static const short yypact[] = { 2,
+ 6, 2,-32768, 8,-32768, 7, 10,-32768, 9, 11,
+ 12, 10, -5,-32768, -3, 12, 13, 14,-32768,-32768,
+-32768, 17, 1,-32768, 15, 18, 14,-32768,-32768, 17,
+ 3,-32768, 14,-32768, 16,-32768, 25, 26,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768, 27,-32768, 19, 20, -27, -12,-32768
+};
+
+
+#define YYLAST 35
+
+
+static const short yytable[] = { 31,
+ 16, 17, 18, 19, 1, 35, 27, 28, 33, 34,
+ 4, 6, 7, 8, 10, 11, 12, 32, 22, 21,
+ 24, 29, 36, 30, 38, 39, 0, 0, 5, 0,
+ 0, 15, 0, 0, 20
+};
+
+static const short yycheck[] = { 27,
+ 6, 7, 6, 7, 3, 33, 6, 7, 6, 7,
+ 5, 4, 6, 4, 6, 5, 5, 30, 5, 7,
+ 4, 7, 7, 6, 0, 0, -1, -1, 2, -1,
+ -1, 12, -1, -1, 16
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/share/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "/usr/local/share/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+ YYPARSE_PARAM_DECL
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 1:
+#line 62 "bi-parser.y"
+{ defs = yyvsp[0].def; ;
+ break;}
+case 3:
+#line 68 "bi-parser.y"
+{ yyvsp[0].def->next = yyvsp[-1].def; yyval.def = yyvsp[0].def; ;
+ break;}
+case 4:
+#line 73 "bi-parser.y"
+{ yyval.def = makedef (yyvsp[-7].string, yyvsp[-5].string, yyvsp[-2].variation); ;
+ break;}
+case 6:
+#line 79 "bi-parser.y"
+{ yyvsp[0].variation->next = yyvsp[-2].variation; yyval.variation = yyvsp[0].variation; ;
+ break;}
+case 7:
+#line 84 "bi-parser.y"
+{ yyval.variation = makevar (yyvsp[-1].string, (struct node *) NULL, (struct node *) NULL, (struct node *) NULL); ;
+ break;}
+case 8:
+#line 86 "bi-parser.y"
+{ yyval.variation = makevar (yyvsp[-3].string, yyvsp[-1].node, (struct node *) NULL, (struct node *) NULL); ;
+ break;}
+case 9:
+#line 88 "bi-parser.y"
+{ yyval.variation = makevar (yyvsp[-5].string, yyvsp[-3].node, yyvsp[-1].node, (struct node *) NULL); ;
+ break;}
+case 10:
+#line 90 "bi-parser.y"
+{ yyval.variation = makevar (yyvsp[-7].string, yyvsp[-5].node, yyvsp[-3].node, yyvsp[-1].node); ;
+ break;}
+case 11:
+#line 94 "bi-parser.y"
+{ yyval.string = ""; ;
+ break;}
+case 12:
+#line 95 "bi-parser.y"
+{ yyval.string = yyvsp[0].string; ;
+ break;}
+case 13:
+#line 100 "bi-parser.y"
+{ yyval.node = yyvsp[-1].node; ;
+ break;}
+case 14:
+#line 102 "bi-parser.y"
+{ yyval.node = NULL; ;
+ break;}
+case 16:
+#line 109 "bi-parser.y"
+{ yyvsp[-2].node->next = yyvsp[0].node; yyval.node = yyvsp[-2].node; ;
+ break;}
+case 17:
+#line 114 "bi-parser.y"
+{ yyval.node = makenode (yyvsp[0].string); ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 487 "/usr/local/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 117 "bi-parser.y"
+
+
+static struct node *
+makenode (s)
+ char *s;
+{
+ struct node *n;
+
+ n = (struct node *) malloc (sizeof (struct node));
+ n->text = s;
+ n->next = NULL;
+ return n;
+}
+
+static struct variation *
+makevar (name, inputs, outputs, literals)
+ char *name;
+ struct node *inputs, *outputs, *literals;
+{
+ struct variation *v;
+
+ v = (struct variation *) malloc (sizeof (struct variation));
+ v->name = name;
+ v->code = ndefs++;
+ v->inputs = inputs;
+ v->outputs = outputs;
+ v->literals = literals;
+ v->next = NULL;
+ return v;
+}
+
+static struct def *
+makedef (name, template, vars)
+ char *name, *template;
+ struct variation *vars;
+{
+ struct def *d;
+
+ d = (struct def *) malloc (sizeof (struct def));
+ d->basename = name;
+ d->template = template;
+ d->variations = vars;
+ d->next = NULL;
+ return d;
+}
+
+void
+yyerror (s)
+ char *s;
+{
+ fprintf (stderr, "syntax error in input\n");
+ exit (FATAL_EXIT_CODE);
+}
diff --git a/gcc/bi-parser.h b/gcc/bi-parser.h
new file mode 100644
index 00000000000..5beb8628f08
--- /dev/null
+++ b/gcc/bi-parser.h
@@ -0,0 +1,12 @@
+typedef union
+{
+ char *string;
+ struct def *def;
+ struct variation *variation;
+ struct node *node;
+} YYSTYPE;
+#define DEFOP 258
+#define STRING 259
+
+
+extern YYSTYPE yylval;
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 125f0f49814..b556d0825f1 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -4339,7 +4339,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
/* Long double is a special combination. */
- if ((specbits & 1 << (int) RID_LONG)
+ if ((specbits & 1 << (int) RID_LONG) && ! longlong
&& TYPE_MAIN_VARIANT (type) == double_type_node)
{
specbits &= ~ (1 << (int) RID_LONG);
@@ -4353,11 +4353,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
{
int ok = 0;
- if (TREE_CODE (type) != INTEGER_TYPE)
- error ("long, short, signed or unsigned invalid for `%s'", name);
- else if ((specbits & 1 << (int) RID_LONG)
- && (specbits & 1 << (int) RID_SHORT))
- error ("long and short specified together for `%s'", name);
+ if ((specbits & 1 << (int) RID_LONG)
+ && (specbits & 1 << (int) RID_SHORT))
+ error ("both long and short specified for `%s'", name);
else if (((specbits & 1 << (int) RID_LONG)
|| (specbits & 1 << (int) RID_SHORT))
&& explicit_char)
@@ -4365,10 +4363,21 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
else if (((specbits & 1 << (int) RID_LONG)
|| (specbits & 1 << (int) RID_SHORT))
&& TREE_CODE (type) == REAL_TYPE)
- error ("long or short specified with floating type for `%s'", name);
+ {
+ static int already = 0;
+
+ error ("long or short specified with floating type for `%s'", name);
+ if (! already && ! pedantic)
+ {
+ error ("the only valid combination is `long double'");
+ already = 1;
+ }
+ }
else if ((specbits & 1 << (int) RID_SIGNED)
&& (specbits & 1 << (int) RID_UNSIGNED))
- error ("signed and unsigned given together for `%s'", name);
+ error ("both signed and unsigned specified for `%s'", name);
+ else if (TREE_CODE (type) != INTEGER_TYPE)
+ error ("long, short, signed or unsigned invalid for `%s'", name);
else
{
ok = 1;
diff --git a/gcc/c-gperf.h b/gcc/c-gperf.h
new file mode 100644
index 00000000000..361b9d971df
--- /dev/null
+++ b/gcc/c-gperf.h
@@ -0,0 +1,186 @@
+/* C code produced by gperf version 2.5 (GNU C++ version) */
+/* Command-line: gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ./c-parse.gperf */
+/* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */
+struct resword { char *name; short token; enum rid rid; };
+
+#define TOTAL_KEYWORDS 79
+#define MIN_WORD_LENGTH 2
+#define MAX_WORD_LENGTH 20
+#define MIN_HASH_VALUE 10
+#define MAX_HASH_VALUE 144
+/* maximum key range = 135, duplicates = 0 */
+
+#ifdef __GNUC__
+inline
+#endif
+static unsigned int
+hash (str, len)
+ register char *str;
+ register int unsigned len;
+{
+ static unsigned char asso_values[] =
+ {
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 25, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+ 145, 145, 145, 145, 145, 1, 145, 46, 8, 15,
+ 61, 6, 36, 48, 3, 5, 145, 18, 63, 25,
+ 29, 76, 1, 145, 13, 2, 1, 51, 37, 9,
+ 9, 1, 3, 145, 145, 145, 145, 145,
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ case 3:
+ hval += asso_values[str[2]];
+ case 2:
+ case 1:
+ hval += asso_values[str[0]];
+ break;
+ }
+ return hval + asso_values[str[len - 1]];
+}
+
+static struct resword wordlist[] =
+{
+ {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
+ {"",},
+ {"int", TYPESPEC, RID_INT},
+ {"",}, {"",},
+ {"__typeof__", TYPEOF, NORID},
+ {"__signed__", TYPESPEC, RID_SIGNED},
+ {"__imag__", IMAGPART, NORID},
+ {"switch", SWITCH, NORID},
+ {"__inline__", SCSPEC, RID_INLINE},
+ {"else", ELSE, NORID},
+ {"__iterator__", SCSPEC, RID_ITERATOR},
+ {"__inline", SCSPEC, RID_INLINE},
+ {"__extension__", EXTENSION, NORID},
+ {"struct", STRUCT, NORID},
+ {"__real__", REALPART, NORID},
+ {"__const", TYPE_QUAL, RID_CONST},
+ {"while", WHILE, NORID},
+ {"__const__", TYPE_QUAL, RID_CONST},
+ {"case", CASE, NORID},
+ {"__complex__", TYPESPEC, RID_COMPLEX},
+ {"__iterator", SCSPEC, RID_ITERATOR},
+ {"bycopy", TYPE_QUAL, RID_BYCOPY},
+ {"",}, {"",}, {"",},
+ {"__complex", TYPESPEC, RID_COMPLEX},
+ {"",},
+ {"in", TYPE_QUAL, RID_IN},
+ {"break", BREAK, NORID},
+ {"@defs", DEFS, NORID},
+ {"",}, {"",}, {"",},
+ {"extern", SCSPEC, RID_EXTERN},
+ {"if", IF, NORID},
+ {"typeof", TYPEOF, NORID},
+ {"typedef", SCSPEC, RID_TYPEDEF},
+ {"__typeof", TYPEOF, NORID},
+ {"sizeof", SIZEOF, NORID},
+ {"",},
+ {"return", RETURN, NORID},
+ {"const", TYPE_QUAL, RID_CONST},
+ {"__volatile__", TYPE_QUAL, RID_VOLATILE},
+ {"@private", PRIVATE, NORID},
+ {"@selector", SELECTOR, NORID},
+ {"__volatile", TYPE_QUAL, RID_VOLATILE},
+ {"__asm__", ASM_KEYWORD, NORID},
+ {"",}, {"",},
+ {"continue", CONTINUE, NORID},
+ {"__alignof__", ALIGNOF, NORID},
+ {"__imag", IMAGPART, NORID},
+ {"__attribute__", ATTRIBUTE, NORID},
+ {"",}, {"",},
+ {"__attribute", ATTRIBUTE, NORID},
+ {"for", FOR, NORID},
+ {"",},
+ {"@encode", ENCODE, NORID},
+ {"id", OBJECTNAME, RID_ID},
+ {"static", SCSPEC, RID_STATIC},
+ {"@interface", INTERFACE, NORID},
+ {"",},
+ {"__signed", TYPESPEC, RID_SIGNED},
+ {"",},
+ {"__label__", LABEL, NORID},
+ {"",}, {"",},
+ {"__asm", ASM_KEYWORD, NORID},
+ {"char", TYPESPEC, RID_CHAR},
+ {"",},
+ {"inline", SCSPEC, RID_INLINE},
+ {"out", TYPE_QUAL, RID_OUT},
+ {"register", SCSPEC, RID_REGISTER},
+ {"__real", REALPART, NORID},
+ {"short", TYPESPEC, RID_SHORT},
+ {"",},
+ {"enum", ENUM, NORID},
+ {"inout", TYPE_QUAL, RID_INOUT},
+ {"",},
+ {"oneway", TYPE_QUAL, RID_ONEWAY},
+ {"union", UNION, NORID},
+ {"",},
+ {"__alignof", ALIGNOF, NORID},
+ {"",},
+ {"@implementation", IMPLEMENTATION, NORID},
+ {"",},
+ {"@class", CLASS, NORID},
+ {"",},
+ {"@public", PUBLIC, NORID},
+ {"asm", ASM_KEYWORD, NORID},
+ {"",}, {"",}, {"",}, {"",}, {"",},
+ {"default", DEFAULT, NORID},
+ {"",},
+ {"void", TYPESPEC, RID_VOID},
+ {"",},
+ {"@protected", PROTECTED, NORID},
+ {"@protocol", PROTOCOL, NORID},
+ {"",}, {"",}, {"",},
+ {"volatile", TYPE_QUAL, RID_VOLATILE},
+ {"",}, {"",},
+ {"signed", TYPESPEC, RID_SIGNED},
+ {"float", TYPESPEC, RID_FLOAT},
+ {"@end", END, NORID},
+ {"",}, {"",},
+ {"unsigned", TYPESPEC, RID_UNSIGNED},
+ {"@compatibility_alias", ALIAS, NORID},
+ {"double", TYPESPEC, RID_DOUBLE},
+ {"",}, {"",},
+ {"auto", SCSPEC, RID_AUTO},
+ {"",},
+ {"goto", GOTO, NORID},
+ {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
+ {"do", DO, NORID},
+ {"",}, {"",}, {"",}, {"",},
+ {"long", TYPESPEC, RID_LONG},
+};
+
+#ifdef __GNUC__
+inline
+#endif
+struct resword *
+is_reserved_word (str, len)
+ register char *str;
+ register unsigned int len;
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register char *s = wordlist[key].name;
+
+ if (*s == *str && !strcmp (str + 1, s + 1))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
diff --git a/gcc/c-parse.c b/gcc/c-parse.c
new file mode 100644
index 00000000000..0c6f3d2b0b7
--- /dev/null
+++ b/gcc/c-parse.c
@@ -0,0 +1,3859 @@
+
+/* A Bison parser, made from c-parse.y with Bison version GNU Bison version 1.24
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SCSPEC 260
+#define TYPESPEC 261
+#define TYPE_QUAL 262
+#define CONSTANT 263
+#define STRING 264
+#define ELLIPSIS 265
+#define SIZEOF 266
+#define ENUM 267
+#define STRUCT 268
+#define UNION 269
+#define IF 270
+#define ELSE 271
+#define WHILE 272
+#define DO 273
+#define FOR 274
+#define SWITCH 275
+#define CASE 276
+#define DEFAULT 277
+#define BREAK 278
+#define CONTINUE 279
+#define RETURN 280
+#define GOTO 281
+#define ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define ATTRIBUTE 285
+#define EXTENSION 286
+#define LABEL 287
+#define REALPART 288
+#define IMAGPART 289
+#define ASSIGN 290
+#define OROR 291
+#define ANDAND 292
+#define EQCOMPARE 293
+#define ARITHCOMPARE 294
+#define LSHIFT 295
+#define RSHIFT 296
+#define UNARY 297
+#define PLUSPLUS 298
+#define MINUSMINUS 299
+#define HYPERUNARY 300
+#define POINTSAT 301
+#define INTERFACE 302
+#define IMPLEMENTATION 303
+#define END 304
+#define SELECTOR 305
+#define DEFS 306
+#define ENCODE 307
+#define CLASSNAME 308
+#define PUBLIC 309
+#define PRIVATE 310
+#define PROTECTED 311
+#define PROTOCOL 312
+#define OBJECTNAME 313
+#define CLASS 314
+#define ALIAS 315
+#define OBJC_STRING 316
+
+#line 56 "c-parse.y"
+
+#include <stdio.h>
+#include <errno.h>
+#include <setjmp.h>
+
+#include "config.h"
+#include "tree.h"
+#include "input.h"
+#include "c-lex.h"
+#include "c-tree.h"
+#include "flags.h"
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+
+/* Since parsers are distinct for each language, put the language string
+ definition here. */
+char *language_string = "GNU C";
+
+#ifndef errno
+extern int errno;
+#endif
+
+void yyerror ();
+
+/* Like YYERROR but do call yyerror. */
+#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
+
+/* Cause the `yydebug' variable to be defined. */
+#define YYDEBUG 1
+
+#line 93 "c-parse.y"
+typedef union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; } YYSTYPE;
+#line 209 "c-parse.y"
+
+/* Number of statements (loosely speaking) seen so far. */
+static int stmt_count;
+
+/* Input file and line number of the end of the body of last simple_if;
+ used by the stmt-rule immediately after simple_if returns. */
+static char *if_stmt_file;
+static int if_stmt_line;
+
+/* List of types and structure classes of the current declaration. */
+static tree current_declspecs = NULL_TREE;
+static tree prefix_attributes = NULL_TREE;
+
+/* Stack of saved values of current_declspecs and prefix_attributes. */
+static tree declspec_stack;
+
+/* 1 if we explained undeclared var errors. */
+static int undeclared_variable_notice;
+
+
+/* Tell yyparse how to print a token's value, if yydebug is set. */
+
+#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
+extern void yyprint ();
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 681
+#define YYFLAG -32768
+#define YYNTBASE 84
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 238)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 80, 2, 2, 2, 52, 43, 2, 59,
+ 76, 50, 48, 81, 49, 58, 51, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 38, 77, 2,
+ 36, 2, 37, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 60, 2, 83, 42, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 82, 41, 78, 79, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 39, 40, 44, 45, 46, 47, 53, 54, 55, 56,
+ 57, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 1, 3, 4, 7, 8, 12, 14, 16, 22,
+ 25, 29, 34, 39, 42, 45, 48, 51, 53, 54,
+ 55, 63, 68, 69, 70, 78, 83, 84, 85, 92,
+ 96, 98, 100, 102, 104, 106, 108, 110, 112, 114,
+ 116, 117, 119, 121, 125, 127, 130, 133, 136, 139,
+ 142, 147, 150, 155, 158, 161, 163, 165, 167, 172,
+ 173, 181, 183, 187, 191, 195, 199, 203, 207, 211,
+ 215, 219, 223, 227, 231, 232, 237, 238, 243, 244,
+ 245, 253, 254, 260, 264, 268, 270, 272, 274, 278,
+ 282, 283, 288, 293, 298, 302, 306, 309, 312, 314,
+ 317, 318, 320, 323, 327, 329, 331, 334, 337, 342,
+ 347, 350, 353, 357, 359, 361, 364, 367, 368, 369,
+ 374, 379, 383, 387, 390, 393, 396, 399, 403, 404,
+ 407, 410, 413, 416, 420, 421, 424, 427, 429, 431,
+ 434, 437, 439, 441, 444, 447, 450, 454, 455, 458,
+ 460, 462, 464, 469, 474, 476, 478, 480, 482, 486,
+ 488, 492, 493, 498, 499, 506, 510, 511, 518, 522,
+ 523, 525, 527, 530, 537, 539, 543, 544, 546, 551,
+ 558, 563, 565, 567, 569, 571, 573, 574, 579, 581,
+ 582, 585, 587, 591, 593, 594, 599, 601, 602, 611,
+ 612, 619, 620, 626, 627, 632, 633, 639, 640, 641,
+ 647, 648, 649, 655, 657, 659, 663, 667, 672, 676,
+ 680, 684, 686, 690, 695, 699, 703, 707, 709, 713,
+ 717, 721, 726, 730, 734, 736, 737, 745, 751, 754,
+ 755, 763, 769, 772, 773, 782, 783, 791, 794, 795,
+ 797, 798, 800, 802, 805, 806, 810, 813, 817, 819,
+ 823, 825, 827, 830, 832, 836, 841, 848, 854, 856,
+ 860, 862, 864, 868, 871, 874, 875, 877, 879, 882,
+ 883, 886, 890, 894, 897, 901, 906, 910, 913, 917,
+ 920, 922, 924, 927, 930, 931, 933, 936, 937, 938,
+ 940, 942, 945, 949, 951, 954, 957, 964, 970, 976,
+ 979, 982, 987, 988, 993, 994, 995, 999, 1004, 1008,
+ 1010, 1012, 1014, 1016, 1019, 1020, 1025, 1027, 1031, 1032,
+ 1033, 1041, 1047, 1050, 1051, 1052, 1053, 1066, 1067, 1074,
+ 1077, 1080, 1083, 1087, 1094, 1103, 1114, 1127, 1131, 1136,
+ 1138, 1140, 1141, 1148, 1152, 1158, 1161, 1164, 1165, 1167,
+ 1168, 1170, 1171, 1173, 1175, 1179, 1184, 1186, 1190, 1191,
+ 1194, 1197, 1198, 1203, 1206, 1207, 1209, 1211, 1215, 1217,
+ 1221, 1226, 1231, 1236, 1241, 1246, 1247, 1250, 1252, 1255,
+ 1257, 1261, 1263, 1267
+};
+
+static const short yyrhs[] = { -1,
+ 85, 0, 0, 86, 88, 0, 0, 85, 87, 88,
+ 0, 90, 0, 89, 0, 27, 59, 99, 76, 77,
+ 0, 237, 88, 0, 122, 136, 77, 0, 129, 122,
+ 136, 77, 0, 125, 122, 135, 77, 0, 129, 77,
+ 0, 125, 77, 0, 1, 77, 0, 1, 78, 0,
+ 77, 0, 0, 0, 125, 122, 165, 91, 116, 92,
+ 196, 0, 125, 122, 165, 1, 0, 0, 0, 129,
+ 122, 168, 93, 116, 94, 196, 0, 129, 122, 168,
+ 1, 0, 0, 0, 122, 168, 95, 116, 96, 196,
+ 0, 122, 168, 1, 0, 3, 0, 4, 0, 43,
+ 0, 49, 0, 48, 0, 54, 0, 55, 0, 79,
+ 0, 80, 0, 101, 0, 0, 101, 0, 107, 0,
+ 101, 81, 107, 0, 113, 0, 50, 105, 0, 237,
+ 105, 0, 98, 105, 0, 40, 97, 0, 103, 102,
+ 0, 103, 59, 183, 76, 0, 104, 102, 0, 104,
+ 59, 183, 76, 0, 33, 105, 0, 34, 105, 0,
+ 11, 0, 29, 0, 102, 0, 59, 183, 76, 105,
+ 0, 0, 59, 183, 76, 82, 106, 150, 78, 0,
+ 105, 0, 107, 48, 107, 0, 107, 49, 107, 0,
+ 107, 50, 107, 0, 107, 51, 107, 0, 107, 52,
+ 107, 0, 107, 46, 107, 0, 107, 47, 107, 0,
+ 107, 45, 107, 0, 107, 44, 107, 0, 107, 43,
+ 107, 0, 107, 41, 107, 0, 107, 42, 107, 0,
+ 0, 107, 40, 108, 107, 0, 0, 107, 39, 109,
+ 107, 0, 0, 0, 107, 37, 110, 99, 38, 111,
+ 107, 0, 0, 107, 37, 112, 38, 107, 0, 107,
+ 36, 107, 0, 107, 35, 107, 0, 3, 0, 8,
+ 0, 115, 0, 59, 99, 76, 0, 59, 1, 76,
+ 0, 0, 59, 114, 197, 76, 0, 113, 59, 100,
+ 76, 0, 113, 60, 99, 83, 0, 113, 58, 97,
+ 0, 113, 57, 97, 0, 113, 54, 0, 113, 55,
+ 0, 9, 0, 115, 9, 0, 0, 118, 0, 118,
+ 10, 0, 202, 203, 119, 0, 117, 0, 191, 0,
+ 118, 117, 0, 117, 191, 0, 127, 122, 135, 77,
+ 0, 130, 122, 136, 77, 0, 127, 77, 0, 130,
+ 77, 0, 202, 203, 124, 0, 120, 0, 191, 0,
+ 121, 120, 0, 120, 191, 0, 0, 0, 125, 122,
+ 135, 77, 0, 129, 122, 136, 77, 0, 125, 122,
+ 159, 0, 129, 122, 162, 0, 125, 77, 0, 129,
+ 77, 0, 237, 124, 0, 133, 126, 0, 129, 133,
+ 126, 0, 0, 126, 134, 0, 126, 5, 0, 126,
+ 143, 0, 133, 128, 0, 130, 133, 128, 0, 0,
+ 128, 134, 0, 128, 5, 0, 130, 0, 143, 0,
+ 129, 130, 0, 129, 143, 0, 7, 0, 5, 0,
+ 130, 7, 0, 130, 5, 0, 133, 132, 0, 185,
+ 133, 132, 0, 0, 132, 134, 0, 6, 0, 169,
+ 0, 4, 0, 28, 59, 99, 76, 0, 28, 59,
+ 183, 76, 0, 6, 0, 7, 0, 169, 0, 138,
+ 0, 135, 81, 138, 0, 140, 0, 136, 81, 138,
+ 0, 0, 27, 59, 115, 76, 0, 0, 165, 137,
+ 142, 36, 139, 148, 0, 165, 137, 142, 0, 0,
+ 168, 137, 142, 36, 141, 148, 0, 168, 137, 142,
+ 0, 0, 143, 0, 144, 0, 143, 144, 0, 30,
+ 59, 59, 145, 76, 76, 0, 146, 0, 145, 81,
+ 146, 0, 0, 147, 0, 147, 59, 3, 76, 0,
+ 147, 59, 3, 81, 101, 76, 0, 147, 59, 100,
+ 76, 0, 97, 0, 5, 0, 6, 0, 7, 0,
+ 107, 0, 0, 82, 149, 150, 78, 0, 1, 0,
+ 0, 151, 174, 0, 152, 0, 151, 81, 152, 0,
+ 107, 0, 0, 82, 153, 150, 78, 0, 1, 0,
+ 0, 60, 107, 10, 107, 83, 36, 154, 152, 0,
+ 0, 60, 107, 83, 36, 155, 152, 0, 0, 60,
+ 107, 83, 156, 152, 0, 0, 97, 38, 157, 152,
+ 0, 0, 58, 97, 36, 158, 152, 0, 0, 0,
+ 165, 160, 116, 161, 197, 0, 0, 0, 168, 163,
+ 116, 164, 197, 0, 166, 0, 168, 0, 59, 166,
+ 76, 0, 166, 59, 232, 0, 166, 60, 99, 83,
+ 0, 166, 60, 83, 0, 50, 186, 166, 0, 143,
+ 123, 166, 0, 4, 0, 167, 59, 232, 0, 167,
+ 60, 99, 83, 0, 167, 60, 83, 0, 50, 186,
+ 167, 0, 143, 123, 167, 0, 4, 0, 168, 59,
+ 232, 0, 59, 168, 76, 0, 50, 186, 168, 0,
+ 168, 60, 99, 83, 0, 168, 60, 83, 0, 143,
+ 123, 168, 0, 3, 0, 0, 13, 97, 82, 170,
+ 176, 78, 142, 0, 13, 82, 176, 78, 142, 0,
+ 13, 97, 0, 0, 14, 97, 82, 171, 176, 78,
+ 142, 0, 14, 82, 176, 78, 142, 0, 14, 97,
+ 0, 0, 12, 97, 82, 172, 181, 175, 78, 142,
+ 0, 0, 12, 82, 173, 181, 175, 78, 142, 0,
+ 12, 97, 0, 0, 81, 0, 0, 81, 0, 177,
+ 0, 177, 178, 0, 0, 177, 178, 77, 0, 177,
+ 77, 0, 131, 122, 179, 0, 131, 0, 185, 122,
+ 179, 0, 185, 0, 1, 0, 237, 178, 0, 180,
+ 0, 179, 81, 180, 0, 202, 203, 165, 142, 0,
+ 202, 203, 165, 38, 107, 142, 0, 202, 203, 38,
+ 107, 142, 0, 182, 0, 181, 81, 182, 0, 1,
+ 0, 97, 0, 97, 36, 107, 0, 131, 184, 0,
+ 185, 184, 0, 0, 187, 0, 7, 0, 185, 7,
+ 0, 0, 186, 7, 0, 59, 187, 76, 0, 50,
+ 186, 187, 0, 50, 186, 0, 187, 59, 225, 0,
+ 187, 60, 99, 83, 0, 187, 60, 83, 0, 59,
+ 225, 0, 60, 99, 83, 0, 60, 83, 0, 189,
+ 0, 205, 0, 189, 205, 0, 189, 191, 0, 0,
+ 188, 0, 1, 77, 0, 0, 0, 194, 0, 195,
+ 0, 194, 195, 0, 32, 236, 77, 0, 197, 0,
+ 1, 197, 0, 82, 78, 0, 82, 192, 193, 121,
+ 190, 78, 0, 82, 192, 193, 1, 78, 0, 82,
+ 192, 193, 188, 78, 0, 199, 204, 0, 199, 1,
+ 0, 15, 59, 99, 76, 0, 0, 18, 201, 204,
+ 17, 0, 0, 0, 202, 203, 207, 0, 202, 203,
+ 218, 204, 0, 202, 203, 206, 0, 207, 0, 218,
+ 0, 197, 0, 215, 0, 99, 77, 0, 0, 198,
+ 16, 208, 204, 0, 198, 0, 198, 16, 1, 0,
+ 0, 0, 17, 209, 59, 99, 76, 210, 204, 0,
+ 200, 59, 99, 76, 77, 0, 200, 1, 0, 0,
+ 0, 0, 19, 59, 220, 77, 211, 220, 77, 212,
+ 220, 76, 213, 204, 0, 0, 20, 59, 99, 76,
+ 214, 204, 0, 23, 77, 0, 24, 77, 0, 25,
+ 77, 0, 25, 99, 77, 0, 27, 219, 59, 99,
+ 76, 77, 0, 27, 219, 59, 99, 38, 221, 76,
+ 77, 0, 27, 219, 59, 99, 38, 221, 38, 221,
+ 76, 77, 0, 27, 219, 59, 99, 38, 221, 38,
+ 221, 38, 224, 76, 77, 0, 26, 97, 77, 0,
+ 26, 50, 99, 77, 0, 77, 0, 216, 0, 0,
+ 19, 59, 113, 76, 217, 204, 0, 21, 107, 38,
+ 0, 21, 107, 10, 107, 38, 0, 22, 38, 0,
+ 97, 38, 0, 0, 7, 0, 0, 99, 0, 0,
+ 222, 0, 223, 0, 222, 81, 223, 0, 9, 59,
+ 99, 76, 0, 115, 0, 224, 81, 115, 0, 0,
+ 226, 227, 0, 229, 76, 0, 0, 230, 77, 228,
+ 227, 0, 1, 76, 0, 0, 10, 0, 230, 0,
+ 230, 81, 10, 0, 231, 0, 230, 81, 231, 0,
+ 125, 122, 167, 142, 0, 125, 122, 168, 142, 0,
+ 125, 122, 184, 142, 0, 129, 122, 168, 142, 0,
+ 129, 122, 184, 142, 0, 0, 233, 234, 0, 227,
+ 0, 235, 76, 0, 3, 0, 235, 81, 3, 0,
+ 97, 0, 236, 81, 97, 0, 31, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 236, 241, 255, 257, 257, 258, 260, 262, 263, 271,
+ 275, 286, 291, 296, 298, 300, 301, 302, 307, 314,
+ 316, 321, 326, 332, 334, 339, 344, 350, 352, 357,
+ 364, 366, 369, 371, 373, 375, 377, 379, 381, 385,
+ 389, 392, 395, 398, 402, 404, 407, 410, 414, 442,
+ 448, 451, 454, 457, 459, 463, 467, 471, 473, 476,
+ 480, 507, 509, 511, 513, 515, 517, 519, 521, 523,
+ 525, 527, 529, 531, 533, 537, 539, 543, 545, 548,
+ 552, 554, 561, 564, 567, 573, 672, 673, 675, 681,
+ 683, 697, 720, 722, 724, 728, 734, 736, 741, 743,
+ 748, 750, 751, 761, 766, 768, 769, 770, 777, 783,
+ 788, 791, 799, 804, 806, 807, 808, 815, 826, 830,
+ 836, 841, 846, 851, 853, 855, 864, 867, 871, 873,
+ 875, 880, 884, 887, 891, 894, 896, 908, 911, 913,
+ 915, 919, 923, 925, 928, 941, 944, 948, 950, 958,
+ 959, 960, 964, 966, 972, 973, 974, 977, 979, 982,
+ 984, 987, 990, 996, 1003, 1005, 1012, 1019, 1022, 1029,
+ 1032, 1036, 1039, 1043, 1048, 1051, 1055, 1058, 1060, 1062,
+ 1064, 1071, 1073, 1074, 1075, 1080, 1082, 1087, 1095, 1100,
+ 1104, 1107, 1109, 1114, 1117, 1119, 1121, 1125, 1128, 1128,
+ 1131, 1131, 1134, 1134, 1137, 1137, 1140, 1142, 1153, 1161,
+ 1165, 1176, 1184, 1191, 1193, 1198, 1201, 1206, 1208, 1210,
+ 1217, 1219, 1227, 1233, 1235, 1237, 1244, 1246, 1252, 1258,
+ 1260, 1262, 1264, 1271, 1273, 1276, 1281, 1283, 1287, 1289,
+ 1291, 1293, 1297, 1299, 1302, 1305, 1308, 1311, 1315, 1317,
+ 1320, 1322, 1326, 1329, 1334, 1336, 1338, 1352, 1359, 1364,
+ 1370, 1375, 1377, 1382, 1384, 1388, 1392, 1396, 1406, 1408,
+ 1413, 1418, 1421, 1425, 1428, 1432, 1435, 1438, 1441, 1445,
+ 1448, 1452, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470,
+ 1480, 1488, 1490, 1492, 1496, 1498, 1501, 1504, 1515, 1517,
+ 1522, 1524, 1527, 1541, 1544, 1547, 1549, 1557, 1565, 1576,
+ 1581, 1584, 1597, 1605, 1609, 1613, 1617, 1623, 1627, 1632,
+ 1635, 1640, 1643, 1644, 1661, 1666, 1669, 1681, 1683, 1693,
+ 1703, 1704, 1712, 1715, 1727, 1731, 1748, 1758, 1767, 1772,
+ 1777, 1782, 1786, 1790, 1801, 1808, 1815, 1822, 1833, 1839,
+ 1842, 1847, 1870, 1904, 1929, 1960, 1975, 1986, 1990, 1994,
+ 1997, 2002, 2004, 2007, 2009, 2013, 2018, 2021, 2027, 2032,
+ 2037, 2039, 2048, 2049, 2055, 2057, 2067, 2069, 2073, 2076,
+ 2082, 2092, 2101, 2110, 2120, 2134, 2139, 2144, 2146, 2155,
+ 2158, 2163, 2166, 2170
+};
+
+static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
+"TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF",
+"ENUM","STRUCT","UNION","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
+"BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF","ATTRIBUTE",
+"EXTENSION","LABEL","REALPART","IMAGPART","ASSIGN","'='","'?'","':'","OROR",
+"ANDAND","'|'","'^'","'&'","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT","'+'",
+"'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","POINTSAT",
+"'.'","'('","'['","INTERFACE","IMPLEMENTATION","END","SELECTOR","DEFS","ENCODE",
+"CLASSNAME","PUBLIC","PRIVATE","PROTECTED","PROTOCOL","OBJECTNAME","CLASS","ALIAS",
+"OBJC_STRING","')'","';'","'}'","'~'","'!'","','","'{'","']'","program","extdefs",
+"@1","@2","extdef","datadef","fndef","@3","@4","@5","@6","@7","@8","identifier",
+"unop","expr","exprlist","nonnull_exprlist","unary_expr","sizeof","alignof",
+"cast_expr","@9","expr_no_commas","@10","@11","@12","@13","@14","primary","@15",
+"string","old_style_parm_decls","lineno_datadecl","datadecls","datadecl","lineno_decl",
+"decls","setspecs","setattrs","decl","typed_declspecs","reserved_declspecs",
+"typed_declspecs_no_prefix_attr","reserved_declspecs_no_prefix_attr","declmods",
+"declmods_no_prefix_attr","typed_typespecs","reserved_typespecquals","typespec",
+"typespecqual_reserved","initdecls","notype_initdecls","maybeasm","initdcl",
+"@16","notype_initdcl","@17","maybe_attribute","attributes","attribute","attribute_list",
+"attrib","any_word","init","@18","initlist_maybe_comma","initlist1","initelt",
+"@19","@20","@21","@22","@23","@24","nested_function","@25","@26","notype_nested_function",
+"@27","@28","declarator","after_type_declarator","parm_declarator","notype_declarator",
+"structsp","@29","@30","@31","@32","maybecomma","maybecomma_warn","component_decl_list",
+"component_decl_list2","component_decl","components","component_declarator",
+"enumlist","enumerator","typename","absdcl","nonempty_type_quals","type_quals",
+"absdcl1","stmts","lineno_stmt_or_labels","xstmts","errstmt","pushlevel","maybe_label_decls",
+"label_decls","label_decl","compstmt_or_error","compstmt","simple_if","if_prefix",
+"do_stmt_start","@33","save_filename","save_lineno","lineno_labeled_stmt","lineno_stmt_or_label",
+"stmt_or_label","stmt","@34","@35","@36","@37","@38","@39","@40","all_iter_stmt",
+"all_iter_stmt_simple","@41","label","maybe_type_qual","xexpr","asm_operands",
+"nonnull_asm_operands","asm_operand","asm_clobbers","parmlist","@42","parmlist_1",
+"@43","parmlist_2","parms","parm","parmlist_or_identifiers","@44","parmlist_or_identifiers_1",
+"identifiers","identifiers_or_typenames","extension",""
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 84, 84, 86, 85, 87, 85, 88, 88, 88, 88,
+ 89, 89, 89, 89, 89, 89, 89, 89, 91, 92,
+ 90, 90, 93, 94, 90, 90, 95, 96, 90, 90,
+ 97, 97, 98, 98, 98, 98, 98, 98, 98, 99,
+ 100, 100, 101, 101, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 103, 104, 105, 105, 106,
+ 105, 107, 107, 107, 107, 107, 107, 107, 107, 107,
+ 107, 107, 107, 107, 108, 107, 109, 107, 110, 111,
+ 107, 112, 107, 107, 107, 113, 113, 113, 113, 113,
+ 114, 113, 113, 113, 113, 113, 113, 113, 115, 115,
+ 116, 116, 116, 117, 118, 118, 118, 118, 119, 119,
+ 119, 119, 120, 121, 121, 121, 121, 122, 123, 124,
+ 124, 124, 124, 124, 124, 124, 125, 125, 126, 126,
+ 126, 126, 127, 127, 128, 128, 128, 129, 129, 129,
+ 129, 130, 130, 130, 130, 131, 131, 132, 132, 133,
+ 133, 133, 133, 133, 134, 134, 134, 135, 135, 136,
+ 136, 137, 137, 139, 138, 138, 141, 140, 140, 142,
+ 142, 143, 143, 144, 145, 145, 146, 146, 146, 146,
+ 146, 147, 147, 147, 147, 148, 149, 148, 148, 150,
+ 150, 151, 151, 152, 153, 152, 152, 154, 152, 155,
+ 152, 156, 152, 157, 152, 158, 152, 160, 161, 159,
+ 163, 164, 162, 165, 165, 166, 166, 166, 166, 166,
+ 166, 166, 167, 167, 167, 167, 167, 167, 168, 168,
+ 168, 168, 168, 168, 168, 170, 169, 169, 169, 171,
+ 169, 169, 169, 172, 169, 173, 169, 169, 174, 174,
+ 175, 175, 176, 176, 177, 177, 177, 178, 178, 178,
+ 178, 178, 178, 179, 179, 180, 180, 180, 181, 181,
+ 181, 182, 182, 183, 183, 184, 184, 185, 185, 186,
+ 186, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+ 188, 189, 189, 189, 190, 190, 191, 192, 193, 193,
+ 194, 194, 195, 196, 196, 197, 197, 197, 197, 198,
+ 198, 199, 201, 200, 202, 203, 204, 204, 205, 206,
+ 206, 207, 207, 207, 208, 207, 207, 207, 209, 210,
+ 207, 207, 207, 211, 212, 213, 207, 214, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 215, 217, 216, 218, 218, 218, 218, 219, 219, 220,
+ 220, 221, 221, 222, 222, 223, 224, 224, 226, 225,
+ 227, 228, 227, 227, 229, 229, 229, 229, 230, 230,
+ 231, 231, 231, 231, 231, 233, 232, 234, 234, 235,
+ 235, 236, 236, 237
+};
+
+static const short yyr2[] = { 0,
+ 0, 1, 0, 2, 0, 3, 1, 1, 5, 2,
+ 3, 4, 4, 2, 2, 2, 2, 1, 0, 0,
+ 7, 4, 0, 0, 7, 4, 0, 0, 6, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 3, 1, 2, 2, 2, 2, 2,
+ 4, 2, 4, 2, 2, 1, 1, 1, 4, 0,
+ 7, 1, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 0, 4, 0, 4, 0, 0,
+ 7, 0, 5, 3, 3, 1, 1, 1, 3, 3,
+ 0, 4, 4, 4, 3, 3, 2, 2, 1, 2,
+ 0, 1, 2, 3, 1, 1, 2, 2, 4, 4,
+ 2, 2, 3, 1, 1, 2, 2, 0, 0, 4,
+ 4, 3, 3, 2, 2, 2, 2, 3, 0, 2,
+ 2, 2, 2, 3, 0, 2, 2, 1, 1, 2,
+ 2, 1, 1, 2, 2, 2, 3, 0, 2, 1,
+ 1, 1, 4, 4, 1, 1, 1, 1, 3, 1,
+ 3, 0, 4, 0, 6, 3, 0, 6, 3, 0,
+ 1, 1, 2, 6, 1, 3, 0, 1, 4, 6,
+ 4, 1, 1, 1, 1, 1, 0, 4, 1, 0,
+ 2, 1, 3, 1, 0, 4, 1, 0, 8, 0,
+ 6, 0, 5, 0, 4, 0, 5, 0, 0, 5,
+ 0, 0, 5, 1, 1, 3, 3, 4, 3, 3,
+ 3, 1, 3, 4, 3, 3, 3, 1, 3, 3,
+ 3, 4, 3, 3, 1, 0, 7, 5, 2, 0,
+ 7, 5, 2, 0, 8, 0, 7, 2, 0, 1,
+ 0, 1, 1, 2, 0, 3, 2, 3, 1, 3,
+ 1, 1, 2, 1, 3, 4, 6, 5, 1, 3,
+ 1, 1, 3, 2, 2, 0, 1, 1, 2, 0,
+ 2, 3, 3, 2, 3, 4, 3, 2, 3, 2,
+ 1, 1, 2, 2, 0, 1, 2, 0, 0, 1,
+ 1, 2, 3, 1, 2, 2, 6, 5, 5, 2,
+ 2, 4, 0, 4, 0, 0, 3, 4, 3, 1,
+ 1, 1, 1, 2, 0, 4, 1, 3, 0, 0,
+ 7, 5, 2, 0, 0, 0, 12, 0, 6, 2,
+ 2, 2, 3, 6, 8, 10, 12, 3, 4, 1,
+ 1, 0, 6, 3, 5, 2, 2, 0, 1, 0,
+ 1, 0, 1, 1, 3, 4, 1, 3, 0, 2,
+ 2, 0, 4, 2, 0, 1, 1, 3, 1, 3,
+ 4, 4, 4, 4, 4, 0, 2, 1, 2, 1,
+ 3, 1, 3, 1
+};
+
+static const short yydefact[] = { 3,
+ 5, 0, 0, 0, 152, 143, 150, 142, 0, 0,
+ 0, 0, 0, 0, 394, 18, 4, 8, 7, 0,
+ 118, 118, 138, 129, 139, 172, 151, 0, 6, 16,
+ 17, 31, 32, 246, 248, 255, 239, 255, 243, 0,
+ 0, 0, 235, 280, 0, 0, 160, 119, 0, 15,
+ 0, 14, 0, 140, 129, 141, 145, 144, 127, 173,
+ 10, 0, 244, 0, 0, 236, 0, 240, 86, 87,
+ 99, 56, 57, 0, 0, 0, 33, 35, 34, 0,
+ 36, 37, 0, 38, 39, 0, 0, 40, 58, 0,
+ 0, 62, 43, 45, 88, 0, 278, 0, 276, 148,
+ 0, 276, 177, 0, 0, 11, 0, 0, 30, 0,
+ 386, 0, 0, 170, 222, 280, 0, 0, 158, 119,
+ 0, 214, 215, 0, 0, 128, 131, 155, 156, 130,
+ 132, 157, 271, 272, 251, 269, 0, 170, 262, 257,
+ 118, 254, 118, 0, 255, 170, 255, 54, 55, 49,
+ 46, 0, 0, 0, 0, 48, 0, 0, 0, 50,
+ 0, 52, 0, 0, 79, 77, 75, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
+ 98, 0, 0, 41, 0, 100, 47, 153, 280, 369,
+ 0, 274, 277, 146, 154, 279, 148, 275, 183, 184,
+ 185, 182, 0, 175, 178, 281, 231, 230, 161, 162,
+ 234, 0, 229, 0, 233, 0, 0, 28, 0, 315,
+ 106, 316, 169, 171, 0, 0, 13, 0, 0, 22,
+ 0, 170, 386, 0, 12, 26, 0, 0, 252, 0,
+ 251, 238, 315, 256, 315, 263, 0, 242, 0, 90,
+ 89, 298, 0, 0, 9, 44, 0, 0, 85, 84,
+ 0, 0, 0, 0, 73, 74, 72, 71, 70, 68,
+ 69, 63, 64, 65, 66, 67, 96, 95, 0, 42,
+ 0, 284, 0, 288, 0, 290, 0, 369, 0, 149,
+ 147, 0, 177, 41, 0, 0, 390, 376, 118, 118,
+ 388, 0, 377, 379, 387, 0, 232, 297, 0, 108,
+ 103, 107, 0, 167, 220, 216, 159, 221, 20, 166,
+ 217, 219, 0, 24, 273, 270, 170, 0, 258, 264,
+ 316, 260, 170, 170, 306, 299, 92, 60, 59, 51,
+ 53, 0, 0, 78, 76, 93, 94, 283, 282, 370,
+ 289, 285, 287, 0, 174, 176, 86, 0, 163, 374,
+ 276, 276, 371, 372, 0, 389, 0, 0, 29, 304,
+ 104, 118, 118, 135, 0, 0, 164, 218, 0, 247,
+ 170, 315, 0, 237, 241, 0, 0, 300, 301, 0,
+ 80, 83, 286, 179, 0, 181, 228, 280, 369, 119,
+ 170, 170, 170, 280, 170, 170, 0, 378, 380, 391,
+ 305, 111, 0, 112, 0, 135, 133, 189, 187, 186,
+ 168, 21, 0, 25, 245, 265, 0, 170, 392, 0,
+ 0, 0, 315, 0, 0, 115, 316, 292, 302, 197,
+ 86, 0, 0, 195, 0, 194, 0, 249, 192, 0,
+ 0, 284, 0, 386, 0, 381, 382, 383, 284, 384,
+ 385, 373, 0, 0, 162, 134, 137, 136, 0, 165,
+ 170, 0, 266, 303, 0, 308, 117, 116, 296, 0,
+ 309, 294, 316, 293, 0, 0, 0, 0, 204, 61,
+ 0, 191, 81, 180, 226, 280, 227, 223, 225, 0,
+ 109, 110, 0, 268, 170, 393, 307, 0, 152, 0,
+ 329, 313, 0, 0, 0, 0, 0, 0, 0, 0,
+ 358, 350, 0, 0, 113, 118, 118, 322, 327, 0,
+ 0, 319, 320, 323, 351, 321, 0, 206, 0, 202,
+ 0, 0, 193, 0, 224, 188, 267, 0, 0, 315,
+ 360, 0, 0, 356, 340, 341, 342, 0, 0, 0,
+ 359, 0, 357, 324, 124, 0, 125, 0, 0, 311,
+ 316, 310, 333, 0, 126, 0, 0, 200, 0, 196,
+ 205, 0, 0, 0, 361, 45, 0, 0, 0, 354,
+ 343, 0, 348, 0, 0, 122, 208, 0, 123, 211,
+ 328, 315, 0, 0, 207, 0, 0, 203, 312, 0,
+ 314, 352, 334, 338, 0, 349, 0, 120, 0, 121,
+ 0, 326, 317, 315, 0, 198, 201, 330, 315, 360,
+ 315, 355, 362, 0, 209, 212, 318, 332, 0, 315,
+ 353, 0, 339, 0, 0, 363, 364, 344, 0, 0,
+ 199, 331, 335, 0, 362, 0, 0, 210, 213, 360,
+ 0, 0, 345, 365, 0, 366, 0, 0, 336, 367,
+ 0, 346, 315, 0, 0, 337, 347, 368, 0, 0,
+ 0
+};
+
+static const short yydefgoto[] = { 679,
+ 1, 2, 3, 17, 18, 19, 231, 376, 237, 379,
+ 113, 309, 445, 86, 153, 279, 88, 89, 90, 91,
+ 92, 390, 93, 264, 263, 261, 450, 262, 94, 154,
+ 95, 218, 219, 220, 371, 432, 433, 20, 108, 525,
+ 299, 59, 372, 417, 300, 23, 99, 194, 24, 130,
+ 118, 46, 114, 119, 423, 47, 375, 223, 224, 26,
+ 203, 204, 205, 421, 469, 447, 448, 449, 488, 639,
+ 607, 579, 542, 576, 596, 619, 649, 599, 621, 650,
+ 210, 122, 495, 123, 27, 145, 147, 137, 62, 492,
+ 240, 64, 65, 142, 329, 330, 135, 136, 101, 192,
+ 102, 104, 193, 434, 435, 480, 221, 336, 387, 388,
+ 389, 369, 370, 529, 530, 531, 550, 571, 313, 572,
+ 438, 532, 533, 602, 549, 640, 630, 660, 673, 631,
+ 534, 535, 629, 536, 562, 587, 645, 646, 647, 671,
+ 284, 285, 301, 407, 302, 303, 304, 213, 214, 305,
+ 306, 430, 96
+};
+
+static const short yypact[] = { 90,
+ 99, 588, 588, 321,-32768,-32768,-32768,-32768, 77, 79,
+ 85, 49, 75, 87,-32768,-32768,-32768,-32768,-32768, 194,
+ 37, 2116, 245,-32768, 119,-32768,-32768, 588,-32768,-32768,
+-32768,-32768,-32768,-32768, 111,-32768, 133,-32768, 143, 1958,
+ 1892, 179,-32768,-32768, 194, 164,-32768, 119, 1352,-32768,
+ 457,-32768, 194, 245,-32768, 119,-32768,-32768, 404,-32768,
+-32768, 267,-32768, 181, 419,-32768, 201,-32768,-32768,-32768,
+-32768,-32768,-32768, 1958, 1958, 397,-32768,-32768,-32768, 1958,
+-32768,-32768, 848,-32768,-32768, 1958, 227, 229,-32768, 1985,
+ 2012,-32768, 2202, 1091, 299, 1958,-32768, 240, 204,-32768,
+ 242, 1002, 699, 441, 172,-32768, 457, 194,-32768, 264,
+-32768, 1427, 360, 119,-32768,-32768, 457, 217,-32768, 119,
+ 724, 344, 392, 220, 1412, 404,-32768,-32768,-32768,-32768,
+ 119,-32768,-32768, 292, 250,-32768, 267, 119,-32768,-32768,
+ 381, 300, 313, 822,-32768, 119,-32768,-32768,-32768,-32768,
+-32768, 317, 320, 326, 343,-32768, 347, 1958, 848,-32768,
+ 848,-32768, 1958, 1958, 390,-32768,-32768, 1958, 1958, 1958,
+ 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958,-32768,
+-32768, 397, 397, 1958, 1958,-32768,-32768,-32768,-32768, 204,
+ 1487,-32768, 442, 277,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 106,-32768, 371,-32768, 392,-32768,-32768, 408,
+ 392, 434,-32768, 636,-32768, 358, 372,-32768, 268, 59,
+-32768,-32768, 433, 119, 226, 346,-32768, 457, 457,-32768,
+ 360, 119,-32768, 1500,-32768,-32768, 360, 1958, 397, 387,
+ 250,-32768,-32768,-32768,-32768,-32768, 394,-32768, 396,-32768,
+-32768, 399, 405, 1781,-32768, 2202, 407, 410, 2202, 2202,
+ 1958, 455, 1958, 1958, 1751, 578, 1357, 607, 873, 707,
+ 707, 303, 303,-32768,-32768,-32768,-32768,-32768, 422, 229,
+ 412, 56, 429,-32768, 904,-32768, 421,-32768, 1553,-32768,
+ 277, 430, 699, 2039, 57, 449,-32768,-32768,-32768, 1709,
+-32768, 453, 265,-32768,-32768, 115,-32768,-32768, 55,-32768,
+-32768,-32768, 1083,-32768, 344,-32768,-32768, 344,-32768, 494,
+-32768,-32768, 452,-32768, 2202,-32768, 119, 458, 451,-32768,
+-32768, 451, 119, 119,-32768, 510,-32768,-32768,-32768,-32768,
+-32768, 507, 1958, 2231, 2243,-32768,-32768, 442,-32768,-32768,
+-32768,-32768,-32768, 464,-32768,-32768, 124, 474,-32768,-32768,
+ 309, 67,-32768,-32768, 1679,-32768, 549, 326,-32768,-32768,
+-32768, 476, 450,-32768, 1341, 55,-32768,-32768, 55,-32768,
+ 119,-32768, 333,-32768,-32768, 397, 942, 510,-32768, 1161,
+-32768, 2218,-32768,-32768, 1958,-32768,-32768,-32768, 67, 119,
+ 144, 160, 119,-32768, 160, 119, 904,-32768,-32768,-32768,
+-32768,-32768, 457,-32768, 194,-32768, 887,-32768,-32768, 2202,
+-32768,-32768, 1341,-32768,-32768,-32768, 1958, 130,-32768, 266,
+ 432, 667, 479, 481, 760,-32768,-32768,-32768,-32768,-32768,
+ 522, 397, 1958,-32768, 526, 2202, 487, 497,-32768, 1958,
+ 132, 207, 601,-32768, 1566,-32768,-32768,-32768, 176,-32768,
+-32768,-32768, 279, 281, 52, 887,-32768,-32768, 1161,-32768,
+ 2166, 1958,-32768,-32768, 397,-32768,-32768,-32768,-32768, 501,
+-32768,-32768,-32768,-32768, 1647, 545, 2064, 1161,-32768,-32768,
+ 1221,-32768, 2218,-32768, 454,-32768, 454,-32768,-32768, 500,
+-32768,-32768, 506,-32768, 2166,-32768,-32768, 1727, 547, 527,
+-32768,-32768, 529, 537, 1958, 559, 533, 536, 1905, 89,
+ 592,-32768, 565, 540,-32768, 555, 2120,-32768, 590, 1024,
+ 60,-32768,-32768,-32768,-32768,-32768, 1838,-32768, 1958, 597,
+ 557, 1281,-32768, 813,-32768,-32768,-32768, 1958, 585,-32768,
+ 1958, 1958, 2135,-32768,-32768,-32768,-32768, 568, 1958, 586,
+-32768, 608,-32768,-32768,-32768, 457,-32768, 194, 1104,-32768,
+-32768,-32768,-32768, 1958,-32768, 1281, 2117,-32768, 1281,-32768,
+-32768, 593, 1958, 666,-32768, 275, 622, 632, 1958,-32768,
+-32768, 637,-32768, 1958, 301,-32768, 108, 308,-32768, 1033,
+-32768,-32768, 1727, 633,-32768, 677, 1281,-32768,-32768, 642,
+-32768,-32768,-32768,-32768, 2184,-32768, 26,-32768, 360,-32768,
+ 360,-32768,-32768,-32768, 643,-32768,-32768,-32768,-32768, 1958,
+-32768,-32768, 710, 646,-32768,-32768,-32768,-32768, 1281,-32768,
+-32768, 647,-32768, 668, 47, 651,-32768,-32768, 326, 326,
+-32768,-32768,-32768, 1958, 710, 656, 710,-32768,-32768, 1958,
+ 658, 48,-32768,-32768, 659,-32768, 434, 662,-32768, 299,
+ 146,-32768,-32768, 663, 434,-32768,-32768, 299, 742, 743,
+-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768,-32768, 153,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, -5,-32768, -40, 456, -137, 427,-32768,-32768,
+ -55,-32768, 398,-32768,-32768,-32768,-32768,-32768, 197,-32768,
+ -191, -207, 542,-32768,-32768, 332,-32768, 22, -98, 216,
+ 0, 711,-32768, 351, 7, -7, -15, 573, 11, -171,
+ -365, -45, -107, -52,-32768,-32768,-32768, 206, 14, 53,
+-32768, 483,-32768, 349,-32768, -411,-32768, -384,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -38, -63, -310, -13, -30,-32768,-32768,-32768,-32768,-32768,
+ 551, 24,-32768, 630, 550, 414, 653, 558, 27, -57,
+ 3, -89, -152, 365,-32768,-32768, -170,-32768,-32768,-32768,
+ 411, -292, -128,-32768,-32768,-32768,-32768, -95, -285, -422,
+ 367,-32768, 208,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 209,-32768, -555, 149,-32768, 150,-32768,
+ 525,-32768, -232,-32768,-32768,-32768, 459, -194,-32768,-32768,
+-32768,-32768, 9
+};
+
+
+#define YYLAST 2295
+
+
+static const short yytable[] = { 87,
+ 98, 21, 21, 35, 37, 39, 49, 124, 22, 22,
+ 28, 28, 121, 232, 54, 25, 25, 222, 148, 149,
+ 295, 229, 290, 319, 151, 253, 225, 21, 132, 324,
+ 156, 105, 55, 48, 22, 56, 28, 283, 321, 125,
+ 187, 25, 51, 53, 198, 383, 280, 463, 310, 141,
+ 401, 100, 350, 226, 209, 368, 134, 503, 48, -102,
+ 573, 67, 206, 633, 120, 186, 48, 143, 311, 43,
+ 150, 216, 131, 144, 642, 100, 541, 60, 110, 32,
+ 33, 32, 33, 422, 655, 667, 424, 32, 33, -1,
+ 207, 32, 33, 100, 211, 132, 14, 202, -2, 282,
+ 60, 634, 232, 105, 665, 189, 543, 40, 60, 155,
+ 111, 112, 197, 50, 190, 191, 404, 48, 574, 290,
+ 120, 48, 656, 668, 222, 399, 191, 584, 141, 348,
+ 120, 134, 359, 41, 110, 222, 252, -162, 559, 131,
+ -102, 222, 497, -162, 281, 42, 143, 331, 14, 331,
+ 287, 485, 144, 197, 100, 29, 280, 581, 34, 14,
+ 36, 315, 243, 132, 245, 318, 38, 472, 247, 100,
+ 249, 100, 60, 14, 462, 317, 277, 278, 43, 622,
+ 61, 292, 206, 60, -162, 257, 293, 258, -162, 14,
+ 366, 605, 63, 323, 608, 367, 43, 508, 339, 394,
+ 595, 637, 454, 455, 395, 14, 641, 494, 643, 43,
+ 397, 207, 158, 206, 66, 211, 436, 652, 111, 112,
+ 342, 674, 627, 14, 68, 404, 675, 25, 43, 115,
+ 111, 112, 206, 134, 399, 191, 14, 103, 120, 411,
+ 106, 120, 120, 44, 107, 468, 283, 208, 354, 57,
+ 676, 58, 45, 189, 651, 14, 398, 451, 138, 498,
+ 132, 477, 190, 191, 482, 399, 191, 133, 217, 32,
+ 33, -105, -105, -105, -105, 116, 60, -105, 146, -105,
+ -105, -105, 128, 129, 117, 603, 331, 202, 9, 10,
+ 11, 437, 54, 227, 468, -105, 235, 228, 25, 348,
+ 107, 453, 157, 403, 406, 373, 348, 186, 452, 158,
+ 55, 43, 397, 56, 459, 188, 5, 195, 7, 196,
+ 361, 362, 212, 374, 9, 10, 11, 238, 180, 181,
+ 239, 182, 183, 184, 185, 43, 115, 437, 14, 483,
+ 13, 364, 474, 242, 428, 365, 475, 402, 405, -105,
+ 612, 248, 177, 178, 179, 501, 528, 502, 398, 228,
+ 217, 107, 14, -315, -315, -315, -315, 399, 191, 464,
+ 427, -315, -315, -315, 400, 48, 244, 618, 25, 528,
+ 429, 228, 116, 416, 620, 105, 132, -315, 107, -261,
+ -261, 117, 250, 413, 415, 251, 120, 30, 31, 32,
+ 33, 465, 233, 234, 233, 234, 544, 252, 127, 128,
+ 129, 635, 48, 636, 500, 9, 10, 11, 254, 139,
+ 25, 316, 5, 255, 7, 97, 120, -82, 48, 294,
+ 9, 10, 11, 14, 110, 132, 486, 320, 207, 211,
+ 307, -101, 71, 43, 524, 207, 13, 206, 308, 15,
+ 111, 112, 60, 5, 57, 7, 58, -259, -259, 43,
+ 115, 9, 10, 11, 327, 400, 400, 524, 314, 506,
+ 14, 333, 48, 334, 528, 670, 335, 13, 558, 523,
+ 337, 187, 340, 678, 526, 341, 14, 288, 289, 232,
+ 44, 527, 343, 537, 347, 140, -253, 346, 25, 45,
+ 288, 289, 523, 351, 349, 355, 116, 582, 308, 476,
+ 585, 588, 454, 455, 560, 117, 160, 162, 592, 54,
+ 658, 659, 598, 222, 360, 222, 414, 597, 363, 377,
+ 207, 382, 380, 604, 378, 381, 526, 55, 384, 385,
+ 56, 386, 610, 527, 391, 537, 393, 566, 568, 396,
+ 25, 410, 412, 617, 600, 256, -295, 400, 481, -31,
+ 259, 260, 524, 489, 490, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 491, 507, 120,
+ 538, 48, 545, 546, -32, 548, 425, 551, 4, 585,
+ -118, 5, 6, 7, 8, 552, 554, 523, 561, 9,
+ 10, 11, 563, 43, 397, 569, 456, 457, 458, 555,
+ 460, 461, 556, 661, 12, 13, 564, 14, 15, 585,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 14, 565, 578, 473, 580, 325, 296, -118, 297, 5,
+ 6, 7, 8, 583, 591, 298, -118, 9, 10, 11,
+ 496, 172, 173, 174, 175, 176, 177, 178, 179, 45,
+ 344, 345, 593, 13, 16, 14, 594, 217, 609, -114,
+ -114, -114, -114, -114, -114, -114, 504, -114, -114, -114,
+ -114, -114, 611, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, 613, -114,
+ -114, 32, 33, 199, 200, 201, -114, 614, 625, -114,
+ 547, -375, 626, 616, -114, -114, -114, 628, 644, 638,
+ -114, -114, 648, 653, 230, -114, 654, -19, -19, -19,
+ -19, 657, 663, 666, 669, -19, -19, -19, 672, 677,
+ 392, 680, 681, -114, -114, -114, -114, 586, -114, 358,
+ 110, -19, 575, -162, 175, 176, 177, 178, 179, -162,
+ 217, 312, -315, -315, 478, 126, 466, -315, -315, 291,
+ -315, 470, 420, 246, -315, 356, -315, -315, -315, -315,
+ -315, -315, -315, -315, -315, -315, -315, 446, -315, 241,
+ -315, 328, -315, -315, 332, 426, 326, 479, 439, -315,
+ -162, 484, -315, 662, -162, -19, 664, -315, -315, -315,
+ 623, 624, 352, -315, -315, 43, 397, 0, -315, 206,
+ 420, 0, 139, 409, 471, 5, 0, 7, 97, 0,
+ 0, 0, 0, 9, 10, 11, -315, -291, -315, -315,
+ 487, -315, 14, 0, 0, 0, 0, 493, 152, 13,
+ 69, 5, 15, 7, 97, 70, 71, 0, 72, 9,
+ 10, 11, 496, 0, 0, 0, 446, 0, 0, 505,
+ 0, 45, 0, 0, 0, 13, 73, 0, 15, 0,
+ 74, 75, 0, 0, 0, 446, 0, 76, 446, 0,
+ 77, 467, 128, 129, 0, 78, 79, 80, 9, 10,
+ 11, 81, 82, 0, 296, 0, 83, 5, 6, 7,
+ 8, 0, 553, 298, 0, 9, 10, 11, 173, 174,
+ 175, 176, 177, 178, 179, 0, 84, 85, 0, -91,
+ 0, 13, 0, 14, 0, 0, 577, 0, 0, 446,
+ 0, 0, 431, 0, -315, -315, -315, -315, -315, -315,
+ -315, 0, -315, -315, -315, -315, -315, 0, -315, -315,
+ -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+ -315, -315, -315, 446, -315, -315, 446, 0, 0, -375,
+ 0, -315, 0, 0, -315, 0, 615, 0, 0, -315,
+ -315, -315, 0, 0, 0, -315, -315, 0, 0, 0,
+ -315, 0, 0, 0, 446, 5, 0, 7, 196, 0,
+ 0, 0, 0, 9, 10, 11, 0, 0, -315, 0,
+ -315, -315, 0, -315, 570, 0, -315, -315, 0, 13,
+ 0, -315, -315, 0, -315, 0, 446, 0, -315, 0,
+ -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+ -315, 189, -315, 0, -315, 0, -315, -315, 0, 110,
+ 190, 191, -162, -315, 0, 0, -315, 0, -162, 0,
+ 0, -315, -315, -315, 0, 0, 0, -315, -315, 0,
+ 0, 0, -315, 0, 0, 0, 5, 6, 7, 8,
+ 0, 111, 112, 0, 9, 10, 11, 0, 0, 0,
+ -315, 0, -315, -315, 601, -315, -325, -325, 0, -162,
+ 13, -325, -325, -162, -325, 0, 0, 0, -325, 0,
+ -325, -325, -325, -325, -325, -325, -325, -325, -325, -325,
+ -325, 0, -325, 0, -325, 0, -325, -325, 0, 0,
+ 0, 0, 0, -325, 180, 181, -325, 182, 183, 184,
+ 185, -325, -325, -325, 0, 0, 0, -325, -325, 0,
+ 0, 440, -325, 441, 33, 0, 0, 0, 70, 71,
+ 0, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+ -325, 0, -325, -325, 0, -325, 0, 0, 0, 73,
+ 0, 15, 0, 74, 75, 0, 0, 0, 0, 0,
+ 76, 0, 0, 77, 0, 0, 0, 0, 78, 79,
+ 80, 0, 0, 0, 81, 82, 0, 0, 442, 83,
+ 443, 440, 0, 441, 33, 0, 0, 0, 70, 71,
+ 0, 72, 0, 0, 0, 0, 0, 0, -190, 84,
+ 85, 0, 444, 0, 0, 0, 0, 0, 0, 73,
+ 0, 15, 0, 74, 75, 0, 0, 0, 0, 0,
+ 76, 0, 0, 77, 0, 0, 0, 0, 78, 79,
+ 80, 0, 0, 0, 81, 82, 0, 0, 442, 83,
+ 443, 440, 0, 441, 33, 0, 0, 0, 70, 71,
+ 0, 72, 0, 0, 0, 0, 0, 0, -250, 84,
+ 85, 0, 444, 0, 0, 0, 0, 0, 0, 73,
+ 0, 15, 0, 74, 75, 0, 0, 0, 0, 0,
+ 76, 0, 0, 77, 0, 0, 0, 0, 78, 79,
+ 80, 0, 0, 0, 81, 82, 0, 0, 442, 83,
+ 443, 418, 0, 69, 0, 0, 0, 0, 70, 71,
+ 0, 72, 109, 0, 0, -27, -27, -27, -27, 84,
+ 85, 0, 444, -27, -27, -27, 0, 0, 0, 73,
+ 0, 15, 0, 74, 75, 0, 0, 0, 110, -27,
+ 76, -162, 0, 77, 0, 0, 0, -162, 78, 79,
+ 80, 0, 0, 0, 81, 82, 0, 0, 0, 83,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 111, 112, 236, 0, 0, -23, -23, -23, -23, 84,
+ 85, 0, 419, -23, -23, -23, 0, 0, -162, 69,
+ 0, 0, -162, -27, 70, 71, 0, 72, 110, -23,
+ 0, -162, 0, 0, 0, 0, 0, -162, 0, 0,
+ 0, 0, 0, 0, 0, 73, 0, 15, 0, 74,
+ 75, 0, 0, 0, 0, 0, 76, 0, 0, 77,
+ 111, 112, 0, 0, 78, 79, 80, 0, 0, 0,
+ 81, 82, 0, 0, 0, 83, 0, 0, -162, 69,
+ 0, 0, -162, -23, 70, 71, 0, 72, 0, 0,
+ 0, 0, 69, 0, 0, 84, 85, 70, 71, 215,
+ 72, 0, 0, 0, 0, 73, 0, 15, 0, 74,
+ 75, 0, 0, 0, 0, 0, 76, 0, 73, 77,
+ 15, 0, 74, 75, 78, 79, 80, 0, 0, 76,
+ 81, 82, 77, 0, 0, 83, 0, 78, 79, 80,
+ 0, 0, 0, 81, 82, 69, 0, 0, 83, 0,
+ 70, 71, 0, 72, 0, 84, 85, 0, 69, 286,
+ 0, 0, 0, 70, 71, 0, 72, 0, 84, 85,
+ 0, 73, 322, 15, 0, 74, 75, 0, 0, 0,
+ 0, 0, 76, 0, 73, 77, 15, 0, 74, 75,
+ 78, 79, 80, 0, 0, 76, 81, 82, 77, 0,
+ 0, 83, 0, 78, 79, 80, 0, 0, 0, 81,
+ 82, 0, 0, 0, 83, 0, 0, 0, 0, 0,
+ 0, 84, 85, 0, 0, 353, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84, 85, 0, 0, 499, 441,
+ 509, 6, 7, 8, 70, 71, 0, 72, 9, 10,
+ 11, 510, 0, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 13, 73, 14, 15, 0, 74,
+ 75, 0, 5, 6, 7, 8, 76, 0, 408, 77,
+ 9, 10, 11, 0, 78, 79, 80, 0, 0, 0,
+ 81, 82, 0, 0, 0, 83, 13, 0, 14, 0,
+ 0, 0, 5, 6, 7, 8, 0, 0, 0, 0,
+ 9, 10, 11, 522, 0, 84, 85, 0, 252, 441,
+ 33, 0, 0, 0, 70, 71, 13, 72, 14, 0,
+ 0, 510, 0, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 0, 73, 0, 15, 0, 74,
+ 75, 0, 0, 0, 0, 0, 76, 0, 0, 77,
+ 0, 0, 0, 0, 78, 79, 80, 0, 0, 0,
+ 81, 82, 0, 69, 0, 83, 0, 0, 70, 71,
+ 0, 72, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 522, 0, 84, 85, 0, 252, 73,
+ 0, 15, 0, 74, 75, 0, 0, 0, 0, 0,
+ 76, 0, 0, 77, 0, 0, 0, 0, 78, 79,
+ 80, 0, 0, 0, 81, 82, 0, 0, 0, 83,
+ 69, 5, 6, 7, 8, 70, 71, 0, 72, 9,
+ 10, 11, 0, 0, 0, 0, 0, 0, 0, 84,
+ 85, 0, 338, 0, 0, 13, 73, 14, 15, 0,
+ 74, 75, 0, 0, 0, 0, 0, 76, 0, 0,
+ 77, 0, 0, 0, 0, 78, 79, 80, 0, 0,
+ 0, 81, 82, 0, 69, 5, 83, 7, 97, 70,
+ 71, 0, 72, 9, 10, 11, 0, 69, 0, 0,
+ 0, 0, 70, 71, 0, 72, 84, 85, 0, 13,
+ 73, 0, 15, 0, 74, 75, 0, 0, 0, 0,
+ 0, 76, 0, 73, 77, 15, 0, 74, 75, 78,
+ 79, 80, 0, 0, 76, 81, 82, 77, 0, 0,
+ 83, 0, 78, 79, 80, 0, 0, 0, 81, 82,
+ 69, 0, 0, 83, 0, 70, 71, 0, 72, 0,
+ 84, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 557, 0, 84, 85, 0, 73, 69, 15, 0,
+ 74, 75, 70, 71, 0, 72, 0, 76, 0, 0,
+ 77, 0, 0, 0, 0, 78, 79, 80, 0, 0,
+ 0, 81, 82, 73, 69, 15, 83, 74, 75, 70,
+ 71, 0, 72, 0, 76, 0, 0, 77, 0, 0,
+ 0, 0, 78, 79, 80, 0, 84, 85, 81, 82,
+ 73, 357, 15, 159, 74, 75, 70, 71, 0, 72,
+ 0, 76, 0, 0, 77, 0, 0, 0, 0, 78,
+ 79, 80, 0, 84, 85, 81, 82, 73, 0, 15,
+ 161, 74, 75, 539, 0, 0, 0, 0, 76, 0,
+ 0, 77, 0, 0, 0, 0, 78, 79, 80, 0,
+ 84, 85, 81, 82, 0, 0, 0, 83, 163, 164,
+ 165, 0, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 0, 84, 85, 5,
+ 6, 7, 8, 5, 6, 7, 8, 9, 10, 11,
+ 0, 9, 10, 11, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 589, 14, 540, 13, 0, 14,
+ 0, 163, 164, 165, 0, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 163,
+ 164, 165, 590, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 0, 0,
+ 0, 0, 52, 0, 0, 14, 567, 0, 0, 606,
+ 163, 164, 165, 0, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 163, 164,
+ 165, 632, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 163, 164, 165, 0,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 165, 0, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179
+};
+
+static const short yycheck[] = { 40,
+ 41, 2, 3, 9, 10, 11, 20, 53, 2, 3,
+ 2, 3, 51, 121, 22, 2, 3, 113, 74, 75,
+ 212, 120, 194, 231, 80, 154, 116, 28, 59, 237,
+ 86, 45, 22, 20, 28, 22, 28, 190, 233, 53,
+ 96, 28, 21, 22, 102, 331, 184, 413, 219, 65,
+ 361, 41, 285, 117, 107, 1, 62, 469, 45, 1,
+ 1, 38, 7, 38, 51, 9, 53, 65, 10, 3,
+ 76, 112, 59, 65, 630, 65, 488, 25, 27, 3,
+ 4, 3, 4, 376, 38, 38, 379, 3, 4, 0,
+ 104, 3, 4, 83, 108, 126, 30, 103, 0, 189,
+ 48, 76, 210, 117, 660, 50, 491, 59, 56, 83,
+ 59, 60, 102, 77, 59, 60, 50, 104, 59, 291,
+ 107, 108, 76, 76, 220, 59, 60, 550, 144, 282,
+ 117, 137, 76, 59, 27, 231, 82, 30, 50, 126,
+ 82, 237, 453, 36, 185, 59, 144, 243, 30, 245,
+ 191, 437, 144, 143, 144, 3, 294, 542, 82, 30,
+ 82, 225, 141, 194, 143, 229, 82, 38, 145, 159,
+ 147, 161, 120, 30, 407, 228, 182, 183, 3, 602,
+ 28, 76, 7, 131, 77, 159, 81, 161, 81, 30,
+ 76, 576, 82, 234, 579, 81, 3, 483, 254, 76,
+ 566, 624, 59, 60, 81, 30, 629, 76, 631, 3,
+ 4, 225, 81, 7, 82, 229, 387, 640, 59, 60,
+ 261, 76, 607, 30, 82, 50, 81, 214, 3, 4,
+ 59, 60, 7, 239, 59, 60, 30, 59, 225, 368,
+ 77, 228, 229, 50, 81, 417, 399, 76, 289, 5,
+ 673, 7, 59, 50, 639, 30, 50, 395, 78, 454,
+ 291, 432, 59, 60, 435, 59, 60, 1, 1, 3,
+ 4, 4, 5, 6, 7, 50, 224, 10, 78, 12,
+ 13, 14, 6, 7, 59, 571, 382, 293, 12, 13,
+ 14, 387, 300, 77, 466, 28, 77, 81, 285, 452,
+ 81, 400, 76, 361, 362, 313, 459, 9, 398, 81,
+ 300, 3, 4, 300, 404, 76, 4, 76, 6, 7,
+ 299, 300, 59, 313, 12, 13, 14, 36, 54, 55,
+ 81, 57, 58, 59, 60, 3, 4, 433, 30, 435,
+ 28, 77, 77, 138, 383, 81, 81, 361, 362, 82,
+ 76, 146, 50, 51, 52, 77, 485, 77, 50, 81,
+ 1, 81, 30, 4, 5, 6, 7, 59, 60, 415,
+ 38, 12, 13, 14, 361, 362, 77, 77, 365, 508,
+ 386, 81, 50, 373, 77, 399, 417, 28, 81, 77,
+ 78, 59, 76, 372, 373, 76, 383, 77, 78, 3,
+ 4, 415, 59, 60, 59, 60, 496, 82, 5, 6,
+ 7, 619, 399, 621, 455, 12, 13, 14, 76, 1,
+ 407, 76, 4, 77, 6, 7, 413, 38, 415, 59,
+ 12, 13, 14, 30, 27, 466, 442, 232, 452, 453,
+ 83, 82, 9, 3, 485, 459, 28, 7, 77, 31,
+ 59, 60, 400, 4, 5, 6, 7, 77, 78, 3,
+ 4, 12, 13, 14, 78, 452, 453, 508, 36, 475,
+ 30, 78, 459, 78, 603, 667, 78, 28, 519, 485,
+ 76, 537, 76, 675, 485, 76, 30, 59, 60, 597,
+ 50, 485, 38, 485, 83, 77, 78, 76, 485, 59,
+ 59, 60, 508, 83, 76, 76, 50, 548, 77, 78,
+ 551, 552, 59, 60, 520, 59, 90, 91, 559, 527,
+ 649, 650, 568, 619, 76, 621, 77, 566, 76, 36,
+ 544, 81, 327, 574, 83, 78, 537, 527, 333, 334,
+ 527, 32, 583, 537, 38, 537, 83, 526, 527, 76,
+ 537, 3, 77, 594, 568, 158, 78, 544, 78, 38,
+ 163, 164, 603, 38, 78, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 81, 78, 566,
+ 36, 568, 83, 78, 38, 59, 381, 59, 1, 630,
+ 3, 4, 5, 6, 7, 59, 38, 603, 7, 12,
+ 13, 14, 38, 3, 4, 16, 401, 402, 403, 77,
+ 405, 406, 77, 654, 27, 28, 77, 30, 31, 660,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 30, 77, 36, 428, 78, 238, 1, 50, 3, 4,
+ 5, 6, 7, 59, 77, 10, 59, 12, 13, 14,
+ 50, 45, 46, 47, 48, 49, 50, 51, 52, 59,
+ 263, 264, 77, 28, 77, 30, 59, 1, 76, 3,
+ 4, 5, 6, 7, 8, 9, 471, 11, 12, 13,
+ 14, 15, 17, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 77, 33,
+ 34, 3, 4, 5, 6, 7, 40, 76, 76, 43,
+ 505, 76, 36, 77, 48, 49, 50, 76, 9, 77,
+ 54, 55, 77, 77, 1, 59, 59, 4, 5, 6,
+ 7, 81, 77, 76, 76, 12, 13, 14, 77, 77,
+ 343, 0, 0, 77, 78, 79, 80, 551, 82, 294,
+ 27, 28, 537, 30, 48, 49, 50, 51, 52, 36,
+ 1, 220, 3, 4, 433, 55, 416, 8, 9, 197,
+ 11, 423, 375, 144, 15, 293, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 390, 29, 137,
+ 31, 241, 33, 34, 245, 382, 239, 433, 388, 40,
+ 77, 435, 43, 655, 81, 82, 657, 48, 49, 50,
+ 603, 603, 288, 54, 55, 3, 4, -1, 59, 7,
+ 423, -1, 1, 365, 427, 4, -1, 6, 7, -1,
+ -1, -1, -1, 12, 13, 14, 77, 78, 79, 80,
+ 443, 82, 30, -1, -1, -1, -1, 450, 1, 28,
+ 3, 4, 31, 6, 7, 8, 9, -1, 11, 12,
+ 13, 14, 50, -1, -1, -1, 469, -1, -1, 472,
+ -1, 59, -1, -1, -1, 28, 29, -1, 31, -1,
+ 33, 34, -1, -1, -1, 488, -1, 40, 491, -1,
+ 43, 5, 6, 7, -1, 48, 49, 50, 12, 13,
+ 14, 54, 55, -1, 1, -1, 59, 4, 5, 6,
+ 7, -1, 515, 10, -1, 12, 13, 14, 46, 47,
+ 48, 49, 50, 51, 52, -1, 79, 80, -1, 82,
+ -1, 28, -1, 30, -1, -1, 539, -1, -1, 542,
+ -1, -1, 1, -1, 3, 4, 5, 6, 7, 8,
+ 9, -1, 11, 12, 13, 14, 15, -1, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 576, 33, 34, 579, -1, -1, 76,
+ -1, 40, -1, -1, 43, -1, 589, -1, -1, 48,
+ 49, 50, -1, -1, -1, 54, 55, -1, -1, -1,
+ 59, -1, -1, -1, 607, 4, -1, 6, 7, -1,
+ -1, -1, -1, 12, 13, 14, -1, -1, 77, -1,
+ 79, 80, -1, 82, 1, -1, 3, 4, -1, 28,
+ -1, 8, 9, -1, 11, -1, 639, -1, 15, -1,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 50, 29, -1, 31, -1, 33, 34, -1, 27,
+ 59, 60, 30, 40, -1, -1, 43, -1, 36, -1,
+ -1, 48, 49, 50, -1, -1, -1, 54, 55, -1,
+ -1, -1, 59, -1, -1, -1, 4, 5, 6, 7,
+ -1, 59, 60, -1, 12, 13, 14, -1, -1, -1,
+ 77, -1, 79, 80, 1, 82, 3, 4, -1, 77,
+ 28, 8, 9, 81, 11, -1, -1, -1, 15, -1,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, -1, 29, -1, 31, -1, 33, 34, -1, -1,
+ -1, -1, -1, 40, 54, 55, 43, 57, 58, 59,
+ 60, 48, 49, 50, -1, -1, -1, 54, 55, -1,
+ -1, 1, 59, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, -1,
+ 77, -1, 79, 80, -1, 82, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, 58, 59,
+ 60, 1, -1, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, -1, -1, -1, -1, -1, -1, 78, 79,
+ 80, -1, 82, -1, -1, -1, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, 58, 59,
+ 60, 1, -1, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, -1, -1, -1, -1, -1, -1, 78, 79,
+ 80, -1, 82, -1, -1, -1, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, 58, 59,
+ 60, 1, -1, 3, -1, -1, -1, -1, 8, 9,
+ -1, 11, 1, -1, -1, 4, 5, 6, 7, 79,
+ 80, -1, 82, 12, 13, 14, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, 27, 28,
+ 40, 30, -1, 43, -1, -1, -1, 36, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, -1, 59,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, -1,
+ 59, 60, 1, -1, -1, 4, 5, 6, 7, 79,
+ 80, -1, 82, 12, 13, 14, -1, -1, 77, 3,
+ -1, -1, 81, 82, 8, 9, -1, 11, 27, 28,
+ -1, 30, -1, -1, -1, -1, -1, 36, -1, -1,
+ -1, -1, -1, -1, -1, 29, -1, 31, -1, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, 43,
+ 59, 60, -1, -1, 48, 49, 50, -1, -1, -1,
+ 54, 55, -1, -1, -1, 59, -1, -1, 77, 3,
+ -1, -1, 81, 82, 8, 9, -1, 11, -1, -1,
+ -1, -1, 3, -1, -1, 79, 80, 8, 9, 83,
+ 11, -1, -1, -1, -1, 29, -1, 31, -1, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, 29, 43,
+ 31, -1, 33, 34, 48, 49, 50, -1, -1, 40,
+ 54, 55, 43, -1, -1, 59, -1, 48, 49, 50,
+ -1, -1, -1, 54, 55, 3, -1, -1, 59, -1,
+ 8, 9, -1, 11, -1, 79, 80, -1, 3, 83,
+ -1, -1, -1, 8, 9, -1, 11, -1, 79, 80,
+ -1, 29, 83, 31, -1, 33, 34, -1, -1, -1,
+ -1, -1, 40, -1, 29, 43, 31, -1, 33, 34,
+ 48, 49, 50, -1, -1, 40, 54, 55, 43, -1,
+ -1, 59, -1, 48, 49, 50, -1, -1, -1, 54,
+ 55, -1, -1, -1, 59, -1, -1, -1, -1, -1,
+ -1, 79, 80, -1, -1, 83, -1, -1, -1, -1,
+ -1, -1, -1, -1, 79, 80, -1, -1, 83, 3,
+ 4, 5, 6, 7, 8, 9, -1, 11, 12, 13,
+ 14, 15, -1, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
+ 34, -1, 4, 5, 6, 7, 40, -1, 10, 43,
+ 12, 13, 14, -1, 48, 49, 50, -1, -1, -1,
+ 54, 55, -1, -1, -1, 59, 28, -1, 30, -1,
+ -1, -1, 4, 5, 6, 7, -1, -1, -1, -1,
+ 12, 13, 14, 77, -1, 79, 80, -1, 82, 3,
+ 4, -1, -1, -1, 8, 9, 28, 11, 30, -1,
+ -1, 15, -1, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, -1, 29, -1, 31, -1, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, 43,
+ -1, -1, -1, -1, 48, 49, 50, -1, -1, -1,
+ 54, 55, -1, 3, -1, 59, -1, -1, 8, 9,
+ -1, 11, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 77, -1, 79, 80, -1, 82, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, -1, 59,
+ 3, 4, 5, 6, 7, 8, 9, -1, 11, 12,
+ 13, 14, -1, -1, -1, -1, -1, -1, -1, 79,
+ 80, -1, 82, -1, -1, 28, 29, 30, 31, -1,
+ 33, 34, -1, -1, -1, -1, -1, 40, -1, -1,
+ 43, -1, -1, -1, -1, 48, 49, 50, -1, -1,
+ -1, 54, 55, -1, 3, 4, 59, 6, 7, 8,
+ 9, -1, 11, 12, 13, 14, -1, 3, -1, -1,
+ -1, -1, 8, 9, -1, 11, 79, 80, -1, 28,
+ 29, -1, 31, -1, 33, 34, -1, -1, -1, -1,
+ -1, 40, -1, 29, 43, 31, -1, 33, 34, 48,
+ 49, 50, -1, -1, 40, 54, 55, 43, -1, -1,
+ 59, -1, 48, 49, 50, -1, -1, -1, 54, 55,
+ 3, -1, -1, 59, -1, 8, 9, -1, 11, -1,
+ 79, 80, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 77, -1, 79, 80, -1, 29, 3, 31, -1,
+ 33, 34, 8, 9, -1, 11, -1, 40, -1, -1,
+ 43, -1, -1, -1, -1, 48, 49, 50, -1, -1,
+ -1, 54, 55, 29, 3, 31, 59, 33, 34, 8,
+ 9, -1, 11, -1, 40, -1, -1, 43, -1, -1,
+ -1, -1, 48, 49, 50, -1, 79, 80, 54, 55,
+ 29, 3, 31, 59, 33, 34, 8, 9, -1, 11,
+ -1, 40, -1, -1, 43, -1, -1, -1, -1, 48,
+ 49, 50, -1, 79, 80, 54, 55, 29, -1, 31,
+ 59, 33, 34, 10, -1, -1, -1, -1, 40, -1,
+ -1, 43, -1, -1, -1, -1, 48, 49, 50, -1,
+ 79, 80, 54, 55, -1, -1, -1, 59, 35, 36,
+ 37, -1, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, -1, 79, 80, 4,
+ 5, 6, 7, 4, 5, 6, 7, 12, 13, 14,
+ -1, 12, 13, 14, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 28, 10, 30, 83, 28, -1, 30,
+ -1, 35, 36, 37, -1, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, -1, -1, -1,
+ -1, -1, 77, -1, -1, 30, 77, -1, -1, 83,
+ 35, 36, 37, -1, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 35, 36, 37, -1,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 37, -1, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/share/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "/usr/local/share/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+ YYPARSE_PARAM_DECL
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 1:
+#line 237 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ ;
+ break;}
+case 2:
+#line 242 "c-parse.y"
+{
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+ while (! global_bindings_p ())
+ poplevel (0, 0, 0);
+ finish_file ();
+ ;
+ break;}
+case 3:
+#line 256 "c-parse.y"
+{yyval.ttype = NULL_TREE; ;
+ break;}
+case 5:
+#line 257 "c-parse.y"
+{yyval.ttype = NULL_TREE; ;
+ break;}
+case 9:
+#line 264 "c-parse.y"
+{ STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+ || TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
+ assemble_asm (yyvsp[-2].ttype);
+ else
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+case 10:
+#line 272 "c-parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 11:
+#line 277 "c-parse.y"
+{ if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+ warning ("data definition has no type or storage class");
+
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 12:
+#line 287 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 13:
+#line 292 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 14:
+#line 297 "c-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 15:
+#line 299 "c-parse.y"
+{ shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+case 18:
+#line 303 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
+ break;}
+case 19:
+#line 309 "c-parse.y"
+{ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+case 20:
+#line 314 "c-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 21:
+#line 316 "c-parse.y"
+{ finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 22:
+#line 322 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 23:
+#line 327 "c-parse.y"
+{ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+case 24:
+#line 332 "c-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 25:
+#line 334 "c-parse.y"
+{ finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 26:
+#line 340 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 27:
+#line 345 "c-parse.y"
+{ if (! start_function (NULL_TREE, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+case 28:
+#line 350 "c-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 29:
+#line 352 "c-parse.y"
+{ finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 30:
+#line 358 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 33:
+#line 370 "c-parse.y"
+{ yyval.code = ADDR_EXPR; ;
+ break;}
+case 34:
+#line 372 "c-parse.y"
+{ yyval.code = NEGATE_EXPR; ;
+ break;}
+case 35:
+#line 374 "c-parse.y"
+{ yyval.code = CONVERT_EXPR; ;
+ break;}
+case 36:
+#line 376 "c-parse.y"
+{ yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+case 37:
+#line 378 "c-parse.y"
+{ yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+case 38:
+#line 380 "c-parse.y"
+{ yyval.code = BIT_NOT_EXPR; ;
+ break;}
+case 39:
+#line 382 "c-parse.y"
+{ yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+case 40:
+#line 386 "c-parse.y"
+{ yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
+ break;}
+case 41:
+#line 391 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 43:
+#line 397 "c-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 44:
+#line 399 "c-parse.y"
+{ chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 46:
+#line 405 "c-parse.y"
+{ yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+case 47:
+#line 408 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 48:
+#line 411 "c-parse.y"
+{ yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
+ overflow_warning (yyval.ttype); ;
+ break;}
+case 49:
+#line 415 "c-parse.y"
+{ tree label = lookup_label (yyvsp[0].ttype);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+ if (label == 0)
+ yyval.ttype = null_pointer_node;
+ else
+ {
+ TREE_USED (label) = 1;
+ yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
+ TREE_CONSTANT (yyval.ttype) = 1;
+ }
+ ;
+ break;}
+case 50:
+#line 443 "c-parse.y"
+{ skip_evaluation--;
+ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+ error ("`sizeof' applied to a bit-field");
+ yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+ break;}
+case 51:
+#line 449 "c-parse.y"
+{ skip_evaluation--;
+ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+case 52:
+#line 452 "c-parse.y"
+{ skip_evaluation--;
+ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
+ break;}
+case 53:
+#line 455 "c-parse.y"
+{ skip_evaluation--;
+ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+case 54:
+#line 458 "c-parse.y"
+{ yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+case 55:
+#line 460 "c-parse.y"
+{ yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+case 56:
+#line 464 "c-parse.y"
+{ skip_evaluation++; ;
+ break;}
+case 57:
+#line 468 "c-parse.y"
+{ skip_evaluation++; ;
+ break;}
+case 59:
+#line 474 "c-parse.y"
+{ tree type = groktypename (yyvsp[-2].ttype);
+ yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+ break;}
+case 60:
+#line 477 "c-parse.y"
+{ start_init (NULL_TREE, NULL, 0);
+ yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
+ really_start_incremental_init (yyvsp[-2].ttype); ;
+ break;}
+case 61:
+#line 481 "c-parse.y"
+{ char *name;
+ tree result = pop_init_level (0);
+ tree type = yyvsp[-5].ttype;
+ finish_init ();
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids constructor expressions");
+ if (TYPE_NAME (type) != 0)
+ {
+ if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
+ name = IDENTIFIER_POINTER (TYPE_NAME (type));
+ else
+ name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
+ }
+ else
+ name = "";
+ yyval.ttype = result;
+ if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
+ {
+ int failure = complete_array_type (type, yyval.ttype, 1);
+ if (failure)
+ abort ();
+ }
+ ;
+ break;}
+case 63:
+#line 510 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 64:
+#line 512 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 65:
+#line 514 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 66:
+#line 516 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 67:
+#line 518 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 68:
+#line 520 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 69:
+#line 522 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 70:
+#line 524 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 71:
+#line 526 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 72:
+#line 528 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 73:
+#line 530 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 74:
+#line 532 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 75:
+#line 534 "c-parse.y"
+{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+case 76:
+#line 537 "c-parse.y"
+{ skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 77:
+#line 540 "c-parse.y"
+{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+case 78:
+#line 543 "c-parse.y"
+{ skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 79:
+#line 546 "c-parse.y"
+{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+case 80:
+#line 549 "c-parse.y"
+{ skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
+ - (yyvsp[-4].ttype == boolean_false_node)); ;
+ break;}
+case 81:
+#line 552 "c-parse.y"
+{ skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 82:
+#line 555 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+ yyvsp[0].ttype = save_expr (yyvsp[-1].ttype);
+ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+case 83:
+#line 562 "c-parse.y"
+{ skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 84:
+#line 565 "c-parse.y"
+{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
+ break;}
+case 85:
+#line 568 "c-parse.y"
+{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
+ /* This inhibits warnings in truthvalue_conversion. */
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
+ break;}
+case 86:
+#line 575 "c-parse.y"
+{
+ yyval.ttype = lastiddecl;
+ if (!yyval.ttype || yyval.ttype == error_mark_node)
+ {
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ {
+ /* Ordinary implicit function declaration. */
+ yyval.ttype = implicitly_declare (yyvsp[0].ttype);
+ assemble_external (yyval.ttype);
+ TREE_USED (yyval.ttype) = 1;
+ }
+ }
+ else if (current_function_decl == 0)
+ {
+ error ("`%s' undeclared here (not in a function)",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = error_mark_node;
+ }
+ else
+ {
+ {
+ if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node
+ || IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) != current_function_decl)
+ {
+ error ("`%s' undeclared (first use this function)",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+
+ if (! undeclared_variable_notice)
+ {
+ error ("(Each undeclared identifier is reported only once");
+ error ("for each function it appears in.)");
+ undeclared_variable_notice = 1;
+ }
+ }
+ yyval.ttype = error_mark_node;
+ /* Prevent repeated error messages. */
+ IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
+ IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) = current_function_decl;
+ }
+ }
+ }
+ else if (TREE_TYPE (yyval.ttype) == error_mark_node)
+ yyval.ttype = error_mark_node;
+ else if (C_DECL_ANTICIPATED (yyval.ttype))
+ {
+ /* The first time we see a build-in function used,
+ if it has not been declared. */
+ C_DECL_ANTICIPATED (yyval.ttype) = 0;
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ /* Omit the implicit declaration we
+ would ordinarily do, so we don't lose
+ the actual built in type.
+ But print a diagnostic for the mismatch. */
+ if (TREE_CODE (yyval.ttype) != FUNCTION_DECL)
+ error ("`%s' implicitly declared as function",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+ else if ((TYPE_MODE (TREE_TYPE (TREE_TYPE (yyval.ttype)))
+ != TYPE_MODE (integer_type_node))
+ && (TREE_TYPE (TREE_TYPE (yyval.ttype))
+ != void_type_node))
+ pedwarn ("type mismatch in implicit declaration for built-in function `%s'",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+ /* If it really returns void, change that to int. */
+ if (TREE_TYPE (TREE_TYPE (yyval.ttype)) == void_type_node)
+ TREE_TYPE (yyval.ttype)
+ = build_function_type (integer_type_node,
+ TYPE_ARG_TYPES (TREE_TYPE (yyval.ttype)));
+ }
+ else
+ pedwarn ("built-in function `%s' used without declaration",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+
+ /* Do what we would ordinarily do when a fn is used. */
+ assemble_external (yyval.ttype);
+ TREE_USED (yyval.ttype) = 1;
+ }
+ else
+ {
+ assemble_external (yyval.ttype);
+ TREE_USED (yyval.ttype) = 1;
+ }
+
+ if (TREE_CODE (yyval.ttype) == CONST_DECL)
+ {
+ yyval.ttype = DECL_INITIAL (yyval.ttype);
+ /* This is to prevent an enum whose value is 0
+ from being considered a null pointer constant. */
+ yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
+ TREE_CONSTANT (yyval.ttype) = 1;
+ }
+ ;
+ break;}
+case 88:
+#line 674 "c-parse.y"
+{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+ break;}
+case 89:
+#line 676 "c-parse.y"
+{ char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+ C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
+ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 90:
+#line 682 "c-parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 91:
+#line 684 "c-parse.y"
+{ if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+ YYERROR;
+ }
+ /* We must force a BLOCK for this level
+ so that, if it is not expanded later,
+ there is a way to turn off the entire subtree of blocks
+ that are contained in it. */
+ keep_next_level ();
+ push_iterator_stack ();
+ push_label_level ();
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+case 92:
+#line 698 "c-parse.y"
+{ tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+ pop_iterator_stack ();
+ pop_label_level ();
+ rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
+ /* The statements have side effects, so the group does. */
+ TREE_SIDE_EFFECTS (rtl_exp) = 1;
+
+ if (TREE_CODE (yyvsp[-1].ttype) == BLOCK)
+ {
+ /* Make a BIND_EXPR for the BLOCK already made. */
+ yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
+ NULL_TREE, rtl_exp, yyvsp[-1].ttype);
+ /* Remove the block from the tree at this point.
+ It gets put back at the proper place
+ when the BIND_EXPR is expanded. */
+ delete_block (yyvsp[-1].ttype);
+ }
+ else
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 93:
+#line 721 "c-parse.y"
+{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 94:
+#line 723 "c-parse.y"
+{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 95:
+#line 725 "c-parse.y"
+{
+ yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 96:
+#line 729 "c-parse.y"
+{
+ tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
+
+ yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
+ ;
+ break;}
+case 97:
+#line 735 "c-parse.y"
+{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+case 98:
+#line 737 "c-parse.y"
+{ yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+case 100:
+#line 744 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 103:
+#line 753 "c-parse.y"
+{ c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
+ break;}
+case 104:
+#line 763 "c-parse.y"
+{ ;
+ break;}
+case 109:
+#line 779 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 110:
+#line 784 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 111:
+#line 789 "c-parse.y"
+{ shadow_tag_warned (yyvsp[-1].ttype, 1);
+ pedwarn ("empty declaration"); ;
+ break;}
+case 112:
+#line 792 "c-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 113:
+#line 801 "c-parse.y"
+{ ;
+ break;}
+case 118:
+#line 816 "c-parse.y"
+{ yyval.itype = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+ current_declspecs,
+ declspec_stack);
+ split_specs_attrs (yyvsp[0].ttype,
+ &current_declspecs, &prefix_attributes); ;
+ break;}
+case 119:
+#line 827 "c-parse.y"
+{ prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
+ break;}
+case 120:
+#line 832 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 121:
+#line 837 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 122:
+#line 842 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 123:
+#line 847 "c-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 124:
+#line 852 "c-parse.y"
+{ shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+case 125:
+#line 854 "c-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 126:
+#line 856 "c-parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 127:
+#line 866 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 128:
+#line 868 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 129:
+#line 872 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 130:
+#line 874 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 131:
+#line 876 "c-parse.y"
+{ if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 132:
+#line 881 "c-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 133:
+#line 886 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 134:
+#line 888 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 135:
+#line 893 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 136:
+#line 895 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 137:
+#line 897 "c-parse.y"
+{ if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 138:
+#line 910 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 139:
+#line 912 "c-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+case 140:
+#line 914 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 141:
+#line 916 "c-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 142:
+#line 921 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+case 143:
+#line 924 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 144:
+#line 926 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+case 145:
+#line 929 "c-parse.y"
+{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+case 146:
+#line 943 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 147:
+#line 945 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 148:
+#line 949 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 149:
+#line 951 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 152:
+#line 961 "c-parse.y"
+{ /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype); ;
+ break;}
+case 153:
+#line 965 "c-parse.y"
+{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
+ break;}
+case 154:
+#line 967 "c-parse.y"
+{ yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+ break;}
+case 162:
+#line 989 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 163:
+#line 991 "c-parse.y"
+{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 164:
+#line 998 "c-parse.y"
+{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+case 165:
+#line 1003 "c-parse.y"
+{ finish_init ();
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+case 166:
+#line 1006 "c-parse.y"
+{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+case 167:
+#line 1014 "c-parse.y"
+{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+case 168:
+#line 1019 "c-parse.y"
+{ finish_init ();
+ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+case 169:
+#line 1023 "c-parse.y"
+{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 170:
+#line 1031 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 171:
+#line 1033 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 172:
+#line 1038 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 173:
+#line 1040 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 174:
+#line 1045 "c-parse.y"
+{ yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+case 175:
+#line 1050 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 176:
+#line 1052 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 177:
+#line 1057 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 178:
+#line 1059 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 179:
+#line 1061 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+case 180:
+#line 1063 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+case 181:
+#line 1065 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 187:
+#line 1083 "c-parse.y"
+{ really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); ;
+ break;}
+case 188:
+#line 1088 "c-parse.y"
+{ yyval.ttype = pop_init_level (0);
+ if (yyval.ttype == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+ pop_momentary ();
+ else
+ pop_momentary_nofree (); ;
+ break;}
+case 189:
+#line 1096 "c-parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 190:
+#line 1102 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); ;
+ break;}
+case 194:
+#line 1116 "c-parse.y"
+{ process_init_element (yyvsp[0].ttype); ;
+ break;}
+case 195:
+#line 1118 "c-parse.y"
+{ push_init_level (0); ;
+ break;}
+case 196:
+#line 1120 "c-parse.y"
+{ process_init_element (pop_init_level (0)); ;
+ break;}
+case 198:
+#line 1126 "c-parse.y"
+{ set_init_index (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
+ break;}
+case 200:
+#line 1129 "c-parse.y"
+{ set_init_index (yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 202:
+#line 1132 "c-parse.y"
+{ set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+ break;}
+case 204:
+#line 1135 "c-parse.y"
+{ set_init_label (yyvsp[-1].ttype); ;
+ break;}
+case 206:
+#line 1138 "c-parse.y"
+{ set_init_label (yyvsp[-1].ttype); ;
+ break;}
+case 208:
+#line 1144 "c-parse.y"
+{ push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); ;
+ break;}
+case 209:
+#line 1153 "c-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 210:
+#line 1161 "c-parse.y"
+{ finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+case 211:
+#line 1167 "c-parse.y"
+{ push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); ;
+ break;}
+case 212:
+#line 1176 "c-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 213:
+#line 1184 "c-parse.y"
+{ finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+case 216:
+#line 1200 "c-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 217:
+#line 1202 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 218:
+#line 1207 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 219:
+#line 1209 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 220:
+#line 1211 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 221:
+#line 1218 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 223:
+#line 1229 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 224:
+#line 1234 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 225:
+#line 1236 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 226:
+#line 1238 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 227:
+#line 1245 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 229:
+#line 1254 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 230:
+#line 1259 "c-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 231:
+#line 1261 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 232:
+#line 1263 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 233:
+#line 1265 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 234:
+#line 1272 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 236:
+#line 1278 "c-parse.y"
+{ yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
+ /* Start scope of tag before parsing components. */
+ ;
+ break;}
+case 237:
+#line 1282 "c-parse.y"
+{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 238:
+#line 1284 "c-parse.y"
+{ yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 239:
+#line 1288 "c-parse.y"
+{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
+ break;}
+case 240:
+#line 1290 "c-parse.y"
+{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+ break;}
+case 241:
+#line 1292 "c-parse.y"
+{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 242:
+#line 1294 "c-parse.y"
+{ yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 243:
+#line 1298 "c-parse.y"
+{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+ break;}
+case 244:
+#line 1300 "c-parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+case 245:
+#line 1303 "c-parse.y"
+{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), yyvsp[0].ttype);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 246:
+#line 1306 "c-parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (NULL_TREE); ;
+ break;}
+case 247:
+#line 1309 "c-parse.y"
+{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), yyvsp[0].ttype);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 248:
+#line 1312 "c-parse.y"
+{ yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
+ break;}
+case 252:
+#line 1323 "c-parse.y"
+{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
+ break;}
+case 253:
+#line 1328 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 254:
+#line 1330 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ pedwarn ("no semicolon at end of struct or union"); ;
+ break;}
+case 255:
+#line 1335 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 256:
+#line 1337 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 257:
+#line 1339 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); ;
+ break;}
+case 258:
+#line 1354 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 259:
+#line 1360 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 260:
+#line 1365 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 261:
+#line 1371 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 262:
+#line 1376 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 263:
+#line 1378 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 265:
+#line 1385 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 266:
+#line 1390 "c-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 267:
+#line 1394 "c-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 268:
+#line 1397 "c-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 270:
+#line 1409 "c-parse.y"
+{ if (yyvsp[-2].ttype == error_mark_node)
+ yyval.ttype = yyvsp[-2].ttype;
+ else
+ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+case 271:
+#line 1414 "c-parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 272:
+#line 1420 "c-parse.y"
+{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 273:
+#line 1422 "c-parse.y"
+{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 274:
+#line 1427 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 275:
+#line 1429 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 276:
+#line 1434 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 278:
+#line 1440 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 279:
+#line 1442 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 280:
+#line 1447 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 281:
+#line 1449 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 282:
+#line 1454 "c-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 283:
+#line 1457 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 284:
+#line 1459 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 285:
+#line 1461 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 286:
+#line 1463 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 287:
+#line 1465 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 288:
+#line 1467 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 289:
+#line 1469 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 290:
+#line 1471 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+case 291:
+#line 1482 "c-parse.y"
+{
+ if (pedantic && yyvsp[0].ends_in_label)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ ;
+ break;}
+case 293:
+#line 1491 "c-parse.y"
+{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+case 294:
+#line 1493 "c-parse.y"
+{ yyval.ends_in_label = 0; ;
+ break;}
+case 298:
+#line 1505 "c-parse.y"
+{ emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+ push_momentary ();
+ expand_start_bindings (0);
+ ;
+ break;}
+case 300:
+#line 1518 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); ;
+ break;}
+case 303:
+#line 1529 "c-parse.y"
+{ tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+ tree label = shadow_label (TREE_VALUE (link));
+ C_DECLARED_LABEL_FLAG (label) = 1;
+ declare_nonlocal_label (label);
+ }
+ ;
+ break;}
+case 304:
+#line 1543 "c-parse.y"
+{;
+ break;}
+case 306:
+#line 1548 "c-parse.y"
+{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
+ break;}
+case 307:
+#line 1550 "c-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ yyval.ttype = poplevel (1, 1, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 308:
+#line 1558 "c-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 309:
+#line 1566 "c-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 312:
+#line 1586 "c-parse.y"
+{ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0);
+ yyval.itype = stmt_count;
+ if_stmt_file = yyvsp[-5].filename;
+ if_stmt_line = yyvsp[-4].lineno;
+ position_after_white_space (); ;
+ break;}
+case 313:
+#line 1599 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ expand_start_loop_continue_elsewhere (1);
+ position_after_white_space (); ;
+ break;}
+case 314:
+#line 1606 "c-parse.y"
+{ expand_loop_continue_here (); ;
+ break;}
+case 315:
+#line 1610 "c-parse.y"
+{ yyval.filename = input_filename; ;
+ break;}
+case 316:
+#line 1614 "c-parse.y"
+{ yyval.lineno = lineno; ;
+ break;}
+case 317:
+#line 1619 "c-parse.y"
+{ ;
+ break;}
+case 318:
+#line 1624 "c-parse.y"
+{ ;
+ break;}
+case 319:
+#line 1629 "c-parse.y"
+{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+case 320:
+#line 1634 "c-parse.y"
+{ yyval.ends_in_label = 0; ;
+ break;}
+case 321:
+#line 1636 "c-parse.y"
+{ yyval.ends_in_label = 1; ;
+ break;}
+case 322:
+#line 1642 "c-parse.y"
+{ stmt_count++; ;
+ break;}
+case 324:
+#line 1645 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+/* It appears that this should not be done--that a non-lvalue array
+ shouldn't get an error if the value isn't used.
+ Section 3.2.2.1 says that an array lvalue gets converted to a pointer
+ if it appears as a top-level expression,
+ but says nothing about non-lvalue arrays. */
+#if 0
+ /* Call default_conversion to get an error
+ on referring to a register array if pedantic. */
+ if (TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == ARRAY_TYPE
+ || TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == FUNCTION_TYPE)
+ yyvsp[-1].ttype = default_conversion (yyvsp[-1].ttype);
+#endif
+ iterator_expand (yyvsp[-1].ttype);
+ clear_momentary (); ;
+ break;}
+case 325:
+#line 1662 "c-parse.y"
+{ expand_start_else ();
+ yyvsp[-1].itype = stmt_count;
+ position_after_white_space (); ;
+ break;}
+case 326:
+#line 1666 "c-parse.y"
+{ expand_end_cond ();
+ if (extra_warnings && stmt_count == yyvsp[-3].itype)
+ warning ("empty body in an else-statement"); ;
+ break;}
+case 327:
+#line 1670 "c-parse.y"
+{ expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+ else statement. Increment stmt_count so we don't
+ give a second error if this is a nested `if'. */
+ if (extra_warnings && stmt_count++ == yyvsp[0].itype)
+ warning_with_file_and_line (if_stmt_file, if_stmt_line,
+ "empty body in an if-statement"); ;
+ break;}
+case 328:
+#line 1682 "c-parse.y"
+{ expand_end_cond (); ;
+ break;}
+case 329:
+#line 1684 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* The emit_nop used to come before emit_line_note,
+ but that made the nop seem like part of the preceding line.
+ And that was confusing when the preceding line was
+ inside of an if statement and was not really executed.
+ I think it ought to work to put the nop after the line number.
+ We will see. --rms, July 15, 1991. */
+ emit_nop (); ;
+ break;}
+case 330:
+#line 1694 "c-parse.y"
+{ /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+ expand_start_loop (1);
+ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-1].ttype));
+ position_after_white_space (); ;
+ break;}
+case 331:
+#line 1703 "c-parse.y"
+{ expand_end_loop (); ;
+ break;}
+case 332:
+#line 1706 "c-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-2].ttype));
+ expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+case 333:
+#line 1713 "c-parse.y"
+{ expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+case 334:
+#line 1717 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ if (yyvsp[-1].ttype) c_expand_expr_stmt (yyvsp[-1].ttype);
+ /* Next step is to call expand_start_loop_continue_elsewhere,
+ but wait till after we parse the entire for (...).
+ Otherwise, invalid input might cause us to call that
+ fn without calling expand_end_loop. */
+ ;
+ break;}
+case 335:
+#line 1729 "c-parse.y"
+{ yyvsp[0].lineno = lineno;
+ yyval.filename = input_filename; ;
+ break;}
+case 336:
+#line 1732 "c-parse.y"
+{
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+ expand_start_loop_continue_elsewhere (1);
+ /* Emit the end-test, with a line number. */
+ emit_line_note (yyvsp[-2].filename, yyvsp[-3].lineno);
+ if (yyvsp[-4].ttype)
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-4].ttype));
+ /* Don't let the tree nodes for $9 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ yyvsp[-3].lineno = lineno;
+ yyvsp[-2].filename = input_filename;
+ position_after_white_space (); ;
+ break;}
+case 337:
+#line 1748 "c-parse.y"
+{ /* Emit the increment expression, with a line number. */
+ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
+ expand_loop_continue_here ();
+ if (yyvsp[-3].ttype)
+ c_expand_expr_stmt (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary ();
+ expand_end_loop (); ;
+ break;}
+case 338:
+#line 1759 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+ /* Don't let the tree nodes for $3 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ position_after_white_space (); ;
+ break;}
+case 339:
+#line 1767 "c-parse.y"
+{ expand_end_case (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 340:
+#line 1773 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+case 341:
+#line 1778 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); ;
+ break;}
+case 342:
+#line 1783 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+case 343:
+#line 1787 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ c_expand_return (yyvsp[-1].ttype); ;
+ break;}
+case 344:
+#line 1791 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
+ STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+ || TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
+ expand_asm (yyvsp[-2].ttype);
+ else
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+case 345:
+#line 1802 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+ yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); ;
+ break;}
+case 346:
+#line 1809 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+ yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); ;
+ break;}
+case 347:
+#line 1817 "c-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+ yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); ;
+ break;}
+case 348:
+#line 1823 "c-parse.y"
+{ tree decl;
+ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ decl = lookup_label (yyvsp[-1].ttype);
+ if (decl != 0)
+ {
+ TREE_USED (decl) = 1;
+ expand_goto (decl);
+ }
+ ;
+ break;}
+case 349:
+#line 1834 "c-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
+ break;}
+case 352:
+#line 1849 "c-parse.y"
+{
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+ /* 0 in case of error or already bound iterator */
+
+ yyval.itype = 0;
+ if (TREE_CODE (yyvsp[-1].ttype) != VAR_DECL)
+ error ("invalid `for (ITERATOR)' syntax");
+ else if (! ITERATOR_P (yyvsp[-1].ttype))
+ error ("`%s' is not an iterator",
+ IDENTIFIER_POINTER (DECL_NAME (yyvsp[-1].ttype)));
+ else if (ITERATOR_BOUND_P (yyvsp[-1].ttype))
+ error ("`for (%s)' inside expansion of same iterator",
+ IDENTIFIER_POINTER (DECL_NAME (yyvsp[-1].ttype)));
+ else
+ {
+ yyval.itype = 1;
+ iterator_for_loop_start (yyvsp[-1].ttype);
+ }
+ ;
+ break;}
+case 353:
+#line 1870 "c-parse.y"
+{
+ if (yyvsp[-1].itype)
+ iterator_for_loop_end (yyvsp[-3].ttype);
+ ;
+ break;}
+case 354:
+#line 1905 "c-parse.y"
+{ register tree value = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ stmt_count++;
+
+ if (value != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase (value, convert_and_check,
+ label, &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); ;
+ break;}
+case 355:
+#line 1930 "c-parse.y"
+{ register tree value1 = check_case_value (yyvsp[-3].ttype);
+ register tree value2 = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids case ranges");
+ stmt_count++;
+
+ if (value1 != error_mark_node && value2 != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase_range (value1, value2,
+ convert_and_check, label,
+ &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 4)
+ warning ("empty case range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); ;
+ break;}
+case 356:
+#line 1961 "c-parse.y"
+{
+ tree duplicate;
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+ int success = pushcase (NULL_TREE, 0, label, &duplicate);
+ stmt_count++;
+ if (success == 1)
+ error ("default label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("multiple default labels in one switch");
+ error_with_decl (duplicate, "this is the first default label");
+ }
+ position_after_white_space (); ;
+ break;}
+case 357:
+#line 1976 "c-parse.y"
+{ tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
+ stmt_count++;
+ emit_nop ();
+ if (label)
+ expand_label (label);
+ position_after_white_space (); ;
+ break;}
+case 358:
+#line 1988 "c-parse.y"
+{ emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 359:
+#line 1991 "c-parse.y"
+{ emit_line_note (input_filename, lineno); ;
+ break;}
+case 360:
+#line 1996 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 362:
+#line 2003 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 365:
+#line 2010 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 366:
+#line 2015 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 367:
+#line 2020 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+ break;}
+case 368:
+#line 2022 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+ break;}
+case 369:
+#line 2028 "c-parse.y"
+{ pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); ;
+ break;}
+case 370:
+#line 2032 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+case 372:
+#line 2040 "c-parse.y"
+{ tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+ /* Mark the forward decls as such. */
+ for (parm = getdecls (); parm; parm = TREE_CHAIN (parm))
+ TREE_ASM_WRITTEN (parm) = 1;
+ clear_parm_order (); ;
+ break;}
+case 373:
+#line 2048 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 374:
+#line 2050 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+ break;}
+case 375:
+#line 2056 "c-parse.y"
+{ yyval.ttype = get_parm_info (0); ;
+ break;}
+case 376:
+#line 2058 "c-parse.y"
+{ yyval.ttype = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+ Also, since func (...) and func () are indistinguishable,
+ it caused problems with the code in expand_builtin which
+ tries to verify that BUILT_IN_NEXT_ARG is being used
+ correctly. */
+ error ("ANSI C requires a named argument before `...'");
+ ;
+ break;}
+case 377:
+#line 2068 "c-parse.y"
+{ yyval.ttype = get_parm_info (1); ;
+ break;}
+case 378:
+#line 2070 "c-parse.y"
+{ yyval.ttype = get_parm_info (0); ;
+ break;}
+case 379:
+#line 2075 "c-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+case 380:
+#line 2077 "c-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+case 381:
+#line 2084 "c-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 382:
+#line 2093 "c-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 383:
+#line 2102 "c-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 384:
+#line 2111 "c-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 385:
+#line 2121 "c-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 386:
+#line 2135 "c-parse.y"
+{ pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); ;
+ break;}
+case 387:
+#line 2139 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+case 389:
+#line 2147 "c-parse.y"
+{ tree t;
+ for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+ error ("`...' in old-style identifier list");
+ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 390:
+#line 2157 "c-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 391:
+#line 2159 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 392:
+#line 2165 "c-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 393:
+#line 2167 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 394:
+#line 2172 "c-parse.y"
+{ yyval.itype = pedantic;
+ pedantic = 0; ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 487 "/usr/local/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 2176 "c-parse.y"
+
diff --git a/gcc/c-parse.h b/gcc/c-parse.h
new file mode 100644
index 00000000000..21b3d0caf6b
--- /dev/null
+++ b/gcc/c-parse.h
@@ -0,0 +1,64 @@
+typedef union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; } YYSTYPE;
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SCSPEC 260
+#define TYPESPEC 261
+#define TYPE_QUAL 262
+#define CONSTANT 263
+#define STRING 264
+#define ELLIPSIS 265
+#define SIZEOF 266
+#define ENUM 267
+#define STRUCT 268
+#define UNION 269
+#define IF 270
+#define ELSE 271
+#define WHILE 272
+#define DO 273
+#define FOR 274
+#define SWITCH 275
+#define CASE 276
+#define DEFAULT 277
+#define BREAK 278
+#define CONTINUE 279
+#define RETURN 280
+#define GOTO 281
+#define ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define ATTRIBUTE 285
+#define EXTENSION 286
+#define LABEL 287
+#define REALPART 288
+#define IMAGPART 289
+#define ASSIGN 290
+#define OROR 291
+#define ANDAND 292
+#define EQCOMPARE 293
+#define ARITHCOMPARE 294
+#define LSHIFT 295
+#define RSHIFT 296
+#define UNARY 297
+#define PLUSPLUS 298
+#define MINUSMINUS 299
+#define HYPERUNARY 300
+#define POINTSAT 301
+#define INTERFACE 302
+#define IMPLEMENTATION 303
+#define END 304
+#define SELECTOR 305
+#define DEFS 306
+#define ENCODE 307
+#define CLASSNAME 308
+#define PUBLIC 309
+#define PRIVATE 310
+#define PROTECTED 311
+#define PROTOCOL 312
+#define OBJECTNAME 313
+#define CLASS 314
+#define ALIAS 315
+#define OBJC_STRING 316
+
+
+extern YYSTYPE yylval;
diff --git a/gcc/c-parse.y b/gcc/c-parse.y
new file mode 100644
index 00000000000..fd2b0f94a08
--- /dev/null
+++ b/gcc/c-parse.y
@@ -0,0 +1,2176 @@
+/*WARNING: This file is automatically generated!*/
+/* YACC parser for C syntax and for Objective C. -*-c-*-
+ Copyright (C) 1987, 88, 89, 92-6, 1997 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This file defines the grammar of C and that of Objective C.
+ ifobjc ... end ifobjc conditionals contain code for Objective C only.
+ ifc ... end ifc conditionals contain code for C only.
+ Sed commands in Makefile.in are used to convert this file into
+ c-parse.y and into objc-parse.y. */
+
+/* To whomever it may concern: I have heard that such a thing was once
+ written by AT&T, but I have never seen it. */
+
+%expect 46
+
+/* These are the 23 conflicts you should get in parse.output;
+ the state numbers may vary if minor changes in the grammar are made.
+
+State 42 contains 1 shift/reduce conflict. (Two ways to parse ATTRIBUTE.)
+State 44 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 103 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 110 contains 1 shift/reduce conflict. (Two ways to parse ATTRIBUTE.)
+State 111 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 115 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 132 contains 1 shift/reduce conflict. (See comment at component_decl.)
+State 180 contains 1 shift/reduce conflict. (Two ways to parse ATTRIBUTE.)
+State 194 contains 2 shift/reduce conflict. (Four ways to parse this.)
+State 202 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 214 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 220 contains 1 shift/reduce conflict. (Two ways to recover from error.)
+State 304 contains 2 shift/reduce conflicts. (Four ways to parse this.)
+State 335 contains 2 shift/reduce conflicts. (Four ways to parse this.)
+State 347 contains 1 shift/reduce conflict. (Two ways to parse ATTRIBUTES.)
+State 352 contains 1 shift/reduce conflict. (Two ways to parse ATTRIBUTES.)
+State 383 contains 2 shift/reduce conflicts. (Four ways to parse this.)
+State 434 contains 2 shift/reduce conflicts. (Four ways to parse this.) */
+
+
+%{
+#include <stdio.h>
+#include <errno.h>
+#include <setjmp.h>
+
+#include "config.h"
+#include "tree.h"
+#include "input.h"
+#include "c-lex.h"
+#include "c-tree.h"
+#include "flags.h"
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+
+/* Since parsers are distinct for each language, put the language string
+ definition here. */
+char *language_string = "GNU C";
+
+#ifndef errno
+extern int errno;
+#endif
+
+void yyerror ();
+
+/* Like YYERROR but do call yyerror. */
+#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
+
+/* Cause the `yydebug' variable to be defined. */
+#define YYDEBUG 1
+%}
+
+%start program
+
+%union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; }
+
+/* All identifiers that are not reserved words
+ and are not declared typedefs in the current block */
+%token IDENTIFIER
+
+/* All identifiers that are declared typedefs in the current block.
+ In some contexts, they are treated just like IDENTIFIER,
+ but they can also serve as typespecs in declarations. */
+%token TYPENAME
+
+/* Reserved words that specify storage class.
+ yylval contains an IDENTIFIER_NODE which indicates which one. */
+%token SCSPEC
+
+/* Reserved words that specify type.
+ yylval contains an IDENTIFIER_NODE which indicates which one. */
+%token TYPESPEC
+
+/* Reserved words that qualify type: "const" or "volatile".
+ yylval contains an IDENTIFIER_NODE which indicates which one. */
+%token TYPE_QUAL
+
+/* Character or numeric constants.
+ yylval is the node for the constant. */
+%token CONSTANT
+
+/* String constants in raw form.
+ yylval is a STRING_CST node. */
+%token STRING
+
+/* "...", used for functions with variable arglists. */
+%token ELLIPSIS
+
+/* the reserved words */
+/* SCO include files test "ASM", so use something else. */
+%token SIZEOF ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT
+%token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF
+%token ATTRIBUTE EXTENSION LABEL
+%token REALPART IMAGPART
+
+/* Add precedence rules to solve dangling else s/r conflict */
+%nonassoc IF
+%nonassoc ELSE
+
+/* Define the operator tokens and their precedences.
+ The value is an integer because, if used, it is the tree code
+ to use in the expression made from the operator. */
+
+%right <code> ASSIGN '='
+%right <code> '?' ':'
+%left <code> OROR
+%left <code> ANDAND
+%left <code> '|'
+%left <code> '^'
+%left <code> '&'
+%left <code> EQCOMPARE
+%left <code> ARITHCOMPARE
+%left <code> LSHIFT RSHIFT
+%left <code> '+' '-'
+%left <code> '*' '/' '%'
+%right <code> UNARY PLUSPLUS MINUSMINUS
+%left HYPERUNARY
+%left <code> POINTSAT '.' '(' '['
+
+/* The Objective-C keywords. These are included in C and in
+ Objective C, so that the token codes are the same in both. */
+%token INTERFACE IMPLEMENTATION END SELECTOR DEFS ENCODE
+%token CLASSNAME PUBLIC PRIVATE PROTECTED PROTOCOL OBJECTNAME CLASS ALIAS
+
+/* Objective-C string constants in raw form.
+ yylval is an OBJC_STRING_CST node. */
+%token OBJC_STRING
+
+
+%type <code> unop
+
+%type <ttype> identifier IDENTIFIER TYPENAME CONSTANT expr nonnull_exprlist exprlist
+%type <ttype> expr_no_commas cast_expr unary_expr primary string STRING
+%type <ttype> typed_declspecs reserved_declspecs
+%type <ttype> typed_typespecs reserved_typespecquals
+%type <ttype> declmods typespec typespecqual_reserved
+%type <ttype> typed_declspecs_no_prefix_attr reserved_declspecs_no_prefix_attr
+%type <ttype> declmods_no_prefix_attr
+%type <ttype> SCSPEC TYPESPEC TYPE_QUAL nonempty_type_quals maybe_type_qual
+%type <ttype> initdecls notype_initdecls initdcl notype_initdcl
+%type <ttype> init maybeasm
+%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+%type <ttype> maybe_attribute attributes attribute attribute_list attrib
+%type <ttype> any_word
+
+%type <ttype> compstmt
+
+%type <ttype> declarator
+%type <ttype> notype_declarator after_type_declarator
+%type <ttype> parm_declarator
+
+%type <ttype> structsp component_decl_list component_decl_list2
+%type <ttype> component_decl components component_declarator
+%type <ttype> enumlist enumerator
+%type <ttype> typename absdcl absdcl1 type_quals
+%type <ttype> xexpr parms parm identifiers
+
+%type <ttype> parmlist parmlist_1 parmlist_2
+%type <ttype> parmlist_or_identifiers parmlist_or_identifiers_1
+%type <ttype> identifiers_or_typenames
+
+%type <itype> setspecs
+
+%type <ends_in_label> lineno_stmt_or_label lineno_stmt_or_labels stmt_or_label
+
+%type <filename> save_filename
+%type <lineno> save_lineno
+
+
+%{
+/* Number of statements (loosely speaking) seen so far. */
+static int stmt_count;
+
+/* Input file and line number of the end of the body of last simple_if;
+ used by the stmt-rule immediately after simple_if returns. */
+static char *if_stmt_file;
+static int if_stmt_line;
+
+/* List of types and structure classes of the current declaration. */
+static tree current_declspecs = NULL_TREE;
+static tree prefix_attributes = NULL_TREE;
+
+/* Stack of saved values of current_declspecs and prefix_attributes. */
+static tree declspec_stack;
+
+/* 1 if we explained undeclared var errors. */
+static int undeclared_variable_notice;
+
+
+/* Tell yyparse how to print a token's value, if yydebug is set. */
+
+#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
+extern void yyprint ();
+%}
+
+%%
+program: /* empty */
+ { if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ }
+ | extdefs
+ {
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+ while (! global_bindings_p ())
+ poplevel (0, 0, 0);
+ finish_file ();
+ }
+ ;
+
+/* the reason for the strange actions in this rule
+ is so that notype_initdecls when reached via datadef
+ can find a valid list of type and sc specs in $0. */
+
+extdefs:
+ {$<ttype>$ = NULL_TREE; } extdef
+ | extdefs {$<ttype>$ = NULL_TREE; } extdef
+ ;
+
+extdef:
+ fndef
+ | datadef
+ | ASM_KEYWORD '(' expr ')' ';'
+ { STRIP_NOPS ($3);
+ if ((TREE_CODE ($3) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND ($3, 0)) == STRING_CST)
+ || TREE_CODE ($3) == STRING_CST)
+ assemble_asm ($3);
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+ { pedantic = $<itype>1; }
+ ;
+
+datadef:
+ setspecs notype_initdecls ';'
+ { if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+ warning ("data definition has no type or storage class");
+
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($1); }
+ | declmods setspecs notype_initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | typed_declspecs ';'
+ { shadow_tag ($1); }
+ | error ';'
+ | error '}'
+ | ';'
+ { if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); }
+ ;
+
+fndef:
+ typed_declspecs setspecs declarator
+ { if (! start_function (current_declspecs, $3,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+ compstmt_or_error
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs declarator error
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_declarator
+ { if (! start_function (current_declspecs, $3,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+ compstmt_or_error
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_declarator error
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | setspecs notype_declarator
+ { if (! start_function (NULL_TREE, $2,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+ compstmt_or_error
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($1); }
+ | setspecs notype_declarator error
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($1); }
+ ;
+
+identifier:
+ IDENTIFIER
+ | TYPENAME
+ ;
+
+unop: '&'
+ { $$ = ADDR_EXPR; }
+ | '-'
+ { $$ = NEGATE_EXPR; }
+ | '+'
+ { $$ = CONVERT_EXPR; }
+ | PLUSPLUS
+ { $$ = PREINCREMENT_EXPR; }
+ | MINUSMINUS
+ { $$ = PREDECREMENT_EXPR; }
+ | '~'
+ { $$ = BIT_NOT_EXPR; }
+ | '!'
+ { $$ = TRUTH_NOT_EXPR; }
+ ;
+
+expr: nonnull_exprlist
+ { $$ = build_compound_expr ($1); }
+ ;
+
+exprlist:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | nonnull_exprlist
+ ;
+
+nonnull_exprlist:
+ expr_no_commas
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | nonnull_exprlist ',' expr_no_commas
+ { chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+unary_expr:
+ primary
+ | '*' cast_expr %prec UNARY
+ { $$ = build_indirect_ref ($2, "unary *"); }
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+ pedantic = $<itype>1; }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+ /* Refer to the address of a label as a pointer. */
+ | ANDAND identifier
+ { tree label = lookup_label ($2);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+ if (label == 0)
+ $$ = null_pointer_node;
+ else
+ {
+ TREE_USED (label) = 1;
+ $$ = build1 (ADDR_EXPR, ptr_type_node, label);
+ TREE_CONSTANT ($$) = 1;
+ }
+ }
+/* This seems to be impossible on some machines, so let's turn it off.
+ You can use __builtin_next_arg to find the anonymous stack args.
+ | '&' ELLIPSIS
+ { tree types = TYPE_ARG_TYPES (TREE_TYPE (current_function_decl));
+ $$ = error_mark_node;
+ if (TREE_VALUE (tree_last (types)) == void_type_node)
+ error ("`&...' used in function with fixed number of arguments");
+ else
+ {
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&...'");
+ $$ = tree_last (DECL_ARGUMENTS (current_function_decl));
+ $$ = build_unary_op (ADDR_EXPR, $$, 0);
+ } }
+*/
+ | sizeof unary_expr %prec UNARY
+ { skip_evaluation--;
+ if (TREE_CODE ($2) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND ($2, 1)))
+ error ("`sizeof' applied to a bit-field");
+ $$ = c_sizeof (TREE_TYPE ($2)); }
+ | sizeof '(' typename ')' %prec HYPERUNARY
+ { skip_evaluation--;
+ $$ = c_sizeof (groktypename ($3)); }
+ | alignof unary_expr %prec UNARY
+ { skip_evaluation--;
+ $$ = c_alignof_expr ($2); }
+ | alignof '(' typename ')' %prec HYPERUNARY
+ { skip_evaluation--;
+ $$ = c_alignof (groktypename ($3)); }
+ | REALPART cast_expr %prec UNARY
+ { $$ = build_unary_op (REALPART_EXPR, $2, 0); }
+ | IMAGPART cast_expr %prec UNARY
+ { $$ = build_unary_op (IMAGPART_EXPR, $2, 0); }
+ ;
+
+sizeof:
+ SIZEOF { skip_evaluation++; }
+ ;
+
+alignof:
+ ALIGNOF { skip_evaluation++; }
+ ;
+
+cast_expr:
+ unary_expr
+ | '(' typename ')' cast_expr %prec UNARY
+ { tree type = groktypename ($2);
+ $$ = build_c_cast (type, $4); }
+ | '(' typename ')' '{'
+ { start_init (NULL_TREE, NULL, 0);
+ $2 = groktypename ($2);
+ really_start_incremental_init ($2); }
+ initlist_maybe_comma '}' %prec UNARY
+ { char *name;
+ tree result = pop_init_level (0);
+ tree type = $2;
+ finish_init ();
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids constructor expressions");
+ if (TYPE_NAME (type) != 0)
+ {
+ if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
+ name = IDENTIFIER_POINTER (TYPE_NAME (type));
+ else
+ name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
+ }
+ else
+ name = "";
+ $$ = result;
+ if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
+ {
+ int failure = complete_array_type (type, $$, 1);
+ if (failure)
+ abort ();
+ }
+ }
+ ;
+
+expr_no_commas:
+ cast_expr
+ | expr_no_commas '+' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '-' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '*' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '/' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '%' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas LSHIFT expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas RSHIFT expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas ARITHCOMPARE expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas EQCOMPARE expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '&' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '|' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '^' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas ANDAND
+ { $1 = truthvalue_conversion (default_conversion ($1));
+ skip_evaluation += $1 == boolean_false_node; }
+ expr_no_commas
+ { skip_evaluation -= $1 == boolean_false_node;
+ $$ = parser_build_binary_op (TRUTH_ANDIF_EXPR, $1, $4); }
+ | expr_no_commas OROR
+ { $1 = truthvalue_conversion (default_conversion ($1));
+ skip_evaluation += $1 == boolean_true_node; }
+ expr_no_commas
+ { skip_evaluation -= $1 == boolean_true_node;
+ $$ = parser_build_binary_op (TRUTH_ORIF_EXPR, $1, $4); }
+ | expr_no_commas '?'
+ { $1 = truthvalue_conversion (default_conversion ($1));
+ skip_evaluation += $1 == boolean_false_node; }
+ expr ':'
+ { skip_evaluation += (($1 == boolean_true_node)
+ - ($1 == boolean_false_node)); }
+ expr_no_commas
+ { skip_evaluation -= $1 == boolean_true_node;
+ $$ = build_conditional_expr ($1, $4, $7); }
+ | expr_no_commas '?'
+ { if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+ $<ttype>2 = save_expr ($1);
+ $1 = truthvalue_conversion (default_conversion ($<ttype>2));
+ skip_evaluation += $1 == boolean_true_node; }
+ ':' expr_no_commas
+ { skip_evaluation -= $1 == boolean_true_node;
+ $$ = build_conditional_expr ($1, $<ttype>2, $5); }
+ | expr_no_commas '=' expr_no_commas
+ { $$ = build_modify_expr ($1, NOP_EXPR, $3);
+ C_SET_EXP_ORIGINAL_CODE ($$, MODIFY_EXPR); }
+ | expr_no_commas ASSIGN expr_no_commas
+ { $$ = build_modify_expr ($1, $2, $3);
+ /* This inhibits warnings in truthvalue_conversion. */
+ C_SET_EXP_ORIGINAL_CODE ($$, ERROR_MARK); }
+ ;
+
+primary:
+ IDENTIFIER
+ {
+ $$ = lastiddecl;
+ if (!$$ || $$ == error_mark_node)
+ {
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ {
+ /* Ordinary implicit function declaration. */
+ $$ = implicitly_declare ($1);
+ assemble_external ($$);
+ TREE_USED ($$) = 1;
+ }
+ }
+ else if (current_function_decl == 0)
+ {
+ error ("`%s' undeclared here (not in a function)",
+ IDENTIFIER_POINTER ($1));
+ $$ = error_mark_node;
+ }
+ else
+ {
+ {
+ if (IDENTIFIER_GLOBAL_VALUE ($1) != error_mark_node
+ || IDENTIFIER_ERROR_LOCUS ($1) != current_function_decl)
+ {
+ error ("`%s' undeclared (first use this function)",
+ IDENTIFIER_POINTER ($1));
+
+ if (! undeclared_variable_notice)
+ {
+ error ("(Each undeclared identifier is reported only once");
+ error ("for each function it appears in.)");
+ undeclared_variable_notice = 1;
+ }
+ }
+ $$ = error_mark_node;
+ /* Prevent repeated error messages. */
+ IDENTIFIER_GLOBAL_VALUE ($1) = error_mark_node;
+ IDENTIFIER_ERROR_LOCUS ($1) = current_function_decl;
+ }
+ }
+ }
+ else if (TREE_TYPE ($$) == error_mark_node)
+ $$ = error_mark_node;
+ else if (C_DECL_ANTICIPATED ($$))
+ {
+ /* The first time we see a build-in function used,
+ if it has not been declared. */
+ C_DECL_ANTICIPATED ($$) = 0;
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ /* Omit the implicit declaration we
+ would ordinarily do, so we don't lose
+ the actual built in type.
+ But print a diagnostic for the mismatch. */
+ if (TREE_CODE ($$) != FUNCTION_DECL)
+ error ("`%s' implicitly declared as function",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+ else if ((TYPE_MODE (TREE_TYPE (TREE_TYPE ($$)))
+ != TYPE_MODE (integer_type_node))
+ && (TREE_TYPE (TREE_TYPE ($$))
+ != void_type_node))
+ pedwarn ("type mismatch in implicit declaration for built-in function `%s'",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+ /* If it really returns void, change that to int. */
+ if (TREE_TYPE (TREE_TYPE ($$)) == void_type_node)
+ TREE_TYPE ($$)
+ = build_function_type (integer_type_node,
+ TYPE_ARG_TYPES (TREE_TYPE ($$)));
+ }
+ else
+ pedwarn ("built-in function `%s' used without declaration",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+
+ /* Do what we would ordinarily do when a fn is used. */
+ assemble_external ($$);
+ TREE_USED ($$) = 1;
+ }
+ else
+ {
+ assemble_external ($$);
+ TREE_USED ($$) = 1;
+ }
+
+ if (TREE_CODE ($$) == CONST_DECL)
+ {
+ $$ = DECL_INITIAL ($$);
+ /* This is to prevent an enum whose value is 0
+ from being considered a null pointer constant. */
+ $$ = build1 (NOP_EXPR, TREE_TYPE ($$), $$);
+ TREE_CONSTANT ($$) = 1;
+ }
+ }
+ | CONSTANT
+ | string
+ { $$ = combine_strings ($1); }
+ | '(' expr ')'
+ { char class = TREE_CODE_CLASS (TREE_CODE ($2));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+ C_SET_EXP_ORIGINAL_CODE ($2, ERROR_MARK);
+ $$ = $2; }
+ | '(' error ')'
+ { $$ = error_mark_node; }
+ | '('
+ { if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+ YYERROR;
+ }
+ /* We must force a BLOCK for this level
+ so that, if it is not expanded later,
+ there is a way to turn off the entire subtree of blocks
+ that are contained in it. */
+ keep_next_level ();
+ push_iterator_stack ();
+ push_label_level ();
+ $<ttype>$ = expand_start_stmt_expr (); }
+ compstmt ')'
+ { tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+ pop_iterator_stack ();
+ pop_label_level ();
+ rtl_exp = expand_end_stmt_expr ($<ttype>2);
+ /* The statements have side effects, so the group does. */
+ TREE_SIDE_EFFECTS (rtl_exp) = 1;
+
+ if (TREE_CODE ($3) == BLOCK)
+ {
+ /* Make a BIND_EXPR for the BLOCK already made. */
+ $$ = build (BIND_EXPR, TREE_TYPE (rtl_exp),
+ NULL_TREE, rtl_exp, $3);
+ /* Remove the block from the tree at this point.
+ It gets put back at the proper place
+ when the BIND_EXPR is expanded. */
+ delete_block ($3);
+ }
+ else
+ $$ = $3;
+ }
+ | primary '(' exprlist ')' %prec '.'
+ { $$ = build_function_call ($1, $3); }
+ | primary '[' expr ']' %prec '.'
+ { $$ = build_array_ref ($1, $3); }
+ | primary '.' identifier
+ {
+ $$ = build_component_ref ($1, $3);
+ }
+ | primary POINTSAT identifier
+ {
+ tree expr = build_indirect_ref ($1, "->");
+
+ $$ = build_component_ref (expr, $3);
+ }
+ | primary PLUSPLUS
+ { $$ = build_unary_op (POSTINCREMENT_EXPR, $1, 0); }
+ | primary MINUSMINUS
+ { $$ = build_unary_op (POSTDECREMENT_EXPR, $1, 0); }
+ ;
+
+/* Produces a STRING_CST with perhaps more STRING_CSTs chained onto it. */
+string:
+ STRING
+ | string STRING
+ { $$ = chainon ($1, $2); }
+ ;
+
+
+old_style_parm_decls:
+ /* empty */
+ | datadecls
+ | datadecls ELLIPSIS
+ /* ... is used here to indicate a varargs function. */
+ { c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); }
+ ;
+
+/* The following are analogous to lineno_decl, decls and decl
+ except that they do not allow nested functions.
+ They are used for old-style parm decls. */
+lineno_datadecl:
+ save_filename save_lineno datadecl
+ { }
+ ;
+
+datadecls:
+ lineno_datadecl
+ | errstmt
+ | datadecls lineno_datadecl
+ | lineno_datadecl errstmt
+ ;
+
+/* We don't allow prefix attributes here because they cause reduce/reduce
+ conflicts: we can't know whether we're parsing a function decl with
+ attribute suffix, or function defn with attribute prefix on first old
+ style parm. */
+datadecl:
+ typed_declspecs_no_prefix_attr setspecs initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods_no_prefix_attr setspecs notype_initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs_no_prefix_attr ';'
+ { shadow_tag_warned ($1, 1);
+ pedwarn ("empty declaration"); }
+ | declmods_no_prefix_attr ';'
+ { pedwarn ("empty declaration"); }
+ ;
+
+/* This combination which saves a lineno before a decl
+ is the normal thing to use, rather than decl itself.
+ This is to avoid shift/reduce conflicts in contexts
+ where statement labels are allowed. */
+lineno_decl:
+ save_filename save_lineno decl
+ { }
+ ;
+
+decls:
+ lineno_decl
+ | errstmt
+ | decls lineno_decl
+ | lineno_decl errstmt
+ ;
+
+/* records the type and storage class specs to use for processing
+ the declarators that follow.
+ Maintains a stack of outer-level values of current_declspecs,
+ for the sake of parm declarations nested in function declarators. */
+setspecs: /* empty */
+ { $$ = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+ current_declspecs,
+ declspec_stack);
+ split_specs_attrs ($<ttype>0,
+ &current_declspecs, &prefix_attributes); }
+ ;
+
+/* ??? Yuck. See after_type_declarator. */
+setattrs: /* empty */
+ { prefix_attributes = chainon (prefix_attributes, $<ttype>0); }
+ ;
+
+decl:
+ typed_declspecs setspecs initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs nested_function
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_nested_function
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs ';'
+ { shadow_tag ($1); }
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+ { pedantic = $<itype>1; }
+ ;
+
+/* Declspecs which contain at least one type specifier or typedef name.
+ (Just `const' or `volatile' is not enough.)
+ A typedef'd name following these is taken as a name to be declared.
+ Declspecs have a non-NULL TREE_VALUE, attributes do not. */
+
+typed_declspecs:
+ typespec reserved_declspecs
+ { $$ = tree_cons (NULL_TREE, $1, $2); }
+ | declmods typespec reserved_declspecs
+ { $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }
+ ;
+
+reserved_declspecs: /* empty */
+ { $$ = NULL_TREE; }
+ | reserved_declspecs typespecqual_reserved
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ | reserved_declspecs SCSPEC
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER ($2));
+ $$ = tree_cons (NULL_TREE, $2, $1); }
+ | reserved_declspecs attributes
+ { $$ = tree_cons ($2, NULL_TREE, $1); }
+ ;
+
+typed_declspecs_no_prefix_attr:
+ typespec reserved_declspecs_no_prefix_attr
+ { $$ = tree_cons (NULL_TREE, $1, $2); }
+ | declmods_no_prefix_attr typespec reserved_declspecs_no_prefix_attr
+ { $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }
+ ;
+
+reserved_declspecs_no_prefix_attr:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | reserved_declspecs_no_prefix_attr typespecqual_reserved
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ | reserved_declspecs_no_prefix_attr SCSPEC
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER ($2));
+ $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+/* List of just storage classes, type modifiers, and prefix attributes.
+ A declaration can start with just this, but then it cannot be used
+ to redeclare a typedef-name.
+ Declspecs have a non-NULL TREE_VALUE, attributes do not. */
+
+declmods:
+ declmods_no_prefix_attr
+ { $$ = $1; }
+ | attributes
+ { $$ = tree_cons ($1, NULL_TREE, NULL_TREE); }
+ | declmods declmods_no_prefix_attr
+ { $$ = chainon ($2, $1); }
+ | declmods attributes
+ { $$ = tree_cons ($2, NULL_TREE, $1); }
+ ;
+
+declmods_no_prefix_attr:
+ TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $1, NULL_TREE);
+ TREE_STATIC ($$) = 1; }
+ | SCSPEC
+ { $$ = tree_cons (NULL_TREE, $1, NULL_TREE); }
+ | declmods_no_prefix_attr TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $2, $1);
+ TREE_STATIC ($$) = 1; }
+ | declmods_no_prefix_attr SCSPEC
+ { if (extra_warnings && TREE_STATIC ($1))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER ($2));
+ $$ = tree_cons (NULL_TREE, $2, $1);
+ TREE_STATIC ($$) = TREE_STATIC ($1); }
+ ;
+
+
+/* Used instead of declspecs where storage classes are not allowed
+ (that is, for typenames and structure components).
+ Don't accept a typedef-name if anything but a modifier precedes it. */
+
+typed_typespecs:
+ typespec reserved_typespecquals
+ { $$ = tree_cons (NULL_TREE, $1, $2); }
+ | nonempty_type_quals typespec reserved_typespecquals
+ { $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }
+ ;
+
+reserved_typespecquals: /* empty */
+ { $$ = NULL_TREE; }
+ | reserved_typespecquals typespecqual_reserved
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+/* A typespec (but not a type qualifier).
+ Once we have seen one of these in a declaration,
+ if a typedef name appears then it is being redeclared. */
+
+typespec: TYPESPEC
+ | structsp
+ | TYPENAME
+ { /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ $$ = lookup_name ($1); }
+ | TYPEOF '(' expr ')'
+ { $$ = TREE_TYPE ($3); }
+ | TYPEOF '(' typename ')'
+ { $$ = groktypename ($3); }
+ ;
+
+/* A typespec that is a reserved word, or a type qualifier. */
+
+typespecqual_reserved: TYPESPEC
+ | TYPE_QUAL
+ | structsp
+ ;
+
+initdecls:
+ initdcl
+ | initdecls ',' initdcl
+ ;
+
+notype_initdecls:
+ notype_initdcl
+ | notype_initdecls ',' initdcl
+ ;
+
+maybeasm:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | ASM_KEYWORD '(' string ')'
+ { if (TREE_CHAIN ($3)) $3 = combine_strings ($3);
+ $$ = $3;
+ }
+ ;
+
+initdcl:
+ declarator maybeasm maybe_attribute '='
+ { $<ttype>$ = start_decl ($1, current_declspecs, 1,
+ $3, prefix_attributes);
+ start_init ($<ttype>$, $2, global_bindings_p ()); }
+ init
+/* Note how the declaration of the variable is in effect while its init is parsed! */
+ { finish_init ();
+ finish_decl ($<ttype>5, $6, $2); }
+ | declarator maybeasm maybe_attribute
+ { tree d = start_decl ($1, current_declspecs, 0,
+ $3, prefix_attributes);
+ finish_decl (d, NULL_TREE, $2);
+ }
+ ;
+
+notype_initdcl:
+ notype_declarator maybeasm maybe_attribute '='
+ { $<ttype>$ = start_decl ($1, current_declspecs, 1,
+ $3, prefix_attributes);
+ start_init ($<ttype>$, $2, global_bindings_p ()); }
+ init
+/* Note how the declaration of the variable is in effect while its init is parsed! */
+ { finish_init ();
+ decl_attributes ($<ttype>5, $3, prefix_attributes);
+ finish_decl ($<ttype>5, $6, $2); }
+ | notype_declarator maybeasm maybe_attribute
+ { tree d = start_decl ($1, current_declspecs, 0,
+ $3, prefix_attributes);
+ finish_decl (d, NULL_TREE, $2); }
+ ;
+/* the * rules are dummies to accept the Apollo extended syntax
+ so that the header files compile. */
+maybe_attribute:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | attributes
+ { $$ = $1; }
+ ;
+
+attributes:
+ attribute
+ { $$ = $1; }
+ | attributes attribute
+ { $$ = chainon ($1, $2); }
+ ;
+
+attribute:
+ ATTRIBUTE '(' '(' attribute_list ')' ')'
+ { $$ = $4; }
+ ;
+
+attribute_list:
+ attrib
+ { $$ = $1; }
+ | attribute_list ',' attrib
+ { $$ = chainon ($1, $3); }
+ ;
+
+attrib:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | any_word
+ { $$ = build_tree_list ($1, NULL_TREE); }
+ | any_word '(' IDENTIFIER ')'
+ { $$ = build_tree_list ($1, build_tree_list (NULL_TREE, $3)); }
+ | any_word '(' IDENTIFIER ',' nonnull_exprlist ')'
+ { $$ = build_tree_list ($1, tree_cons (NULL_TREE, $3, $5)); }
+ | any_word '(' exprlist ')'
+ { $$ = build_tree_list ($1, $3); }
+ ;
+
+/* This still leaves out most reserved keywords,
+ shouldn't we include them? */
+
+any_word:
+ identifier
+ | SCSPEC
+ | TYPESPEC
+ | TYPE_QUAL
+ ;
+
+/* Initializers. `init' is the entry point. */
+
+init:
+ expr_no_commas
+ | '{'
+ { really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); }
+ initlist_maybe_comma '}'
+ { $$ = pop_init_level (0);
+ if ($$ == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+ pop_momentary ();
+ else
+ pop_momentary_nofree (); }
+
+ | error
+ { $$ = error_mark_node; }
+ ;
+
+/* `initlist_maybe_comma' is the guts of an initializer in braces. */
+initlist_maybe_comma:
+ /* empty */
+ { if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); }
+ | initlist1 maybecomma
+ ;
+
+initlist1:
+ initelt
+ | initlist1 ',' initelt
+ ;
+
+/* `initelt' is a single element of an initializer.
+ It may use braces. */
+initelt:
+ expr_no_commas
+ { process_init_element ($1); }
+ | '{'
+ { push_init_level (0); }
+ initlist_maybe_comma '}'
+ { process_init_element (pop_init_level (0)); }
+ | error
+ /* These are for labeled elements. The syntax for an array element
+ initializer conflicts with the syntax for an Objective-C message,
+ so don't include these productions in the Objective-C grammar. */
+ | '[' expr_no_commas ELLIPSIS expr_no_commas ']' '='
+ { set_init_index ($2, $4); }
+ initelt
+ | '[' expr_no_commas ']' '='
+ { set_init_index ($2, NULL_TREE); }
+ initelt
+ | '[' expr_no_commas ']'
+ { set_init_index ($2, NULL_TREE); }
+ initelt
+ | identifier ':'
+ { set_init_label ($1); }
+ initelt
+ | '.' identifier '='
+ { set_init_label ($2); }
+ initelt
+ ;
+
+nested_function:
+ declarator
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, $1,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+/* This used to use compstmt_or_error.
+ That caused a bug with input `f(g) int g {}',
+ where the use of YYERROR1 above caused an error
+ which then was handled by compstmt_or_error.
+ There followed a repeated execution of that same rule,
+ which called YYERROR1 again, and so on. */
+ compstmt
+ { finish_function (1);
+ pop_c_function_context (); }
+ ;
+
+notype_nested_function:
+ notype_declarator
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, $1,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+/* This used to use compstmt_or_error.
+ That caused a bug with input `f(g) int g {}',
+ where the use of YYERROR1 above caused an error
+ which then was handled by compstmt_or_error.
+ There followed a repeated execution of that same rule,
+ which called YYERROR1 again, and so on. */
+ compstmt
+ { finish_function (1);
+ pop_c_function_context (); }
+ ;
+
+/* Any kind of declarator (thus, all declarators allowed
+ after an explicit typespec). */
+
+declarator:
+ after_type_declarator
+ | notype_declarator
+ ;
+
+/* A declarator that is allowed only after an explicit typespec. */
+
+after_type_declarator:
+ '(' after_type_declarator ')'
+ { $$ = $2; }
+ | after_type_declarator '(' parmlist_or_identifiers %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+/* | after_type_declarator '(' error ')' %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
+ poplevel (0, 0, 0); } */
+ | after_type_declarator '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | after_type_declarator '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ | '*' type_quals after_type_declarator %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ /* ??? Yuck. setattrs is a quick hack. We can't use
+ prefix_attributes because $1 only applies to this
+ declarator. We assume setspecs has already been done.
+ setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple
+ attributes could be recognized here or in `attributes'). */
+ | attributes setattrs after_type_declarator
+ { $$ = $3; }
+ | TYPENAME
+ ;
+
+/* Kinds of declarator that can appear in a parameter list
+ in addition to notype_declarator. This is like after_type_declarator
+ but does not allow a typedef name in parentheses as an identifier
+ (because it would conflict with a function with that typedef as arg). */
+
+parm_declarator:
+ parm_declarator '(' parmlist_or_identifiers %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+/* | parm_declarator '(' error ')' %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
+ poplevel (0, 0, 0); } */
+ | parm_declarator '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | parm_declarator '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ | '*' type_quals parm_declarator %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ /* ??? Yuck. setattrs is a quick hack. We can't use
+ prefix_attributes because $1 only applies to this
+ declarator. We assume setspecs has already been done.
+ setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple
+ attributes could be recognized here or in `attributes'). */
+ | attributes setattrs parm_declarator
+ { $$ = $3; }
+ | TYPENAME
+ ;
+
+/* A declarator allowed whether or not there has been
+ an explicit typespec. These cannot redeclare a typedef-name. */
+
+notype_declarator:
+ notype_declarator '(' parmlist_or_identifiers %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+/* | notype_declarator '(' error ')' %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
+ poplevel (0, 0, 0); } */
+ | '(' notype_declarator ')'
+ { $$ = $2; }
+ | '*' type_quals notype_declarator %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ | notype_declarator '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | notype_declarator '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ /* ??? Yuck. setattrs is a quick hack. We can't use
+ prefix_attributes because $1 only applies to this
+ declarator. We assume setspecs has already been done.
+ setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple
+ attributes could be recognized here or in `attributes'). */
+ | attributes setattrs notype_declarator
+ { $$ = $3; }
+ | IDENTIFIER
+ ;
+
+structsp:
+ STRUCT identifier '{'
+ { $$ = start_struct (RECORD_TYPE, $2);
+ /* Start scope of tag before parsing components. */
+ }
+ component_decl_list '}' maybe_attribute
+ { $$ = finish_struct ($<ttype>4, $5, $7); }
+ | STRUCT '{' component_decl_list '}' maybe_attribute
+ { $$ = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ $3, $5);
+ }
+ | STRUCT identifier
+ { $$ = xref_tag (RECORD_TYPE, $2); }
+ | UNION identifier '{'
+ { $$ = start_struct (UNION_TYPE, $2); }
+ component_decl_list '}' maybe_attribute
+ { $$ = finish_struct ($<ttype>4, $5, $7); }
+ | UNION '{' component_decl_list '}' maybe_attribute
+ { $$ = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ $3, $5);
+ }
+ | UNION identifier
+ { $$ = xref_tag (UNION_TYPE, $2); }
+ | ENUM identifier '{'
+ { $<itype>3 = suspend_momentary ();
+ $$ = start_enum ($2); }
+ enumlist maybecomma_warn '}' maybe_attribute
+ { $$ = finish_enum ($<ttype>4, nreverse ($5), $8);
+ resume_momentary ($<itype>3); }
+ | ENUM '{'
+ { $<itype>2 = suspend_momentary ();
+ $$ = start_enum (NULL_TREE); }
+ enumlist maybecomma_warn '}' maybe_attribute
+ { $$ = finish_enum ($<ttype>3, nreverse ($4), $7);
+ resume_momentary ($<itype>2); }
+ | ENUM identifier
+ { $$ = xref_tag (ENUMERAL_TYPE, $2); }
+ ;
+
+maybecomma:
+ /* empty */
+ | ','
+ ;
+
+maybecomma_warn:
+ /* empty */
+ | ','
+ { if (pedantic) pedwarn ("comma at end of enumerator list"); }
+ ;
+
+component_decl_list:
+ component_decl_list2
+ { $$ = $1; }
+ | component_decl_list2 component_decl
+ { $$ = chainon ($1, $2);
+ pedwarn ("no semicolon at end of struct or union"); }
+ ;
+
+component_decl_list2: /* empty */
+ { $$ = NULL_TREE; }
+ | component_decl_list2 component_decl ';'
+ { $$ = chainon ($1, $2); }
+ | component_decl_list2 ';'
+ { if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); }
+ ;
+
+/* There is a shift-reduce conflict here, because `components' may
+ start with a `typename'. It happens that shifting (the default resolution)
+ does the right thing, because it treats the `typename' as part of
+ a `typed_typespecs'.
+
+ It is possible that this same technique would allow the distinction
+ between `notype_initdecls' and `initdecls' to be eliminated.
+ But I am being cautious and not trying it. */
+
+component_decl:
+ typed_typespecs setspecs components
+ { $$ = $3;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_typespecs
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag($1);
+ $$ = NULL_TREE; }
+ | nonempty_type_quals setspecs components
+ { $$ = $3;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | nonempty_type_quals
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag($1);
+ $$ = NULL_TREE; }
+ | error
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+ pedantic = $<itype>1; }
+ ;
+
+components:
+ component_declarator
+ | components ',' component_declarator
+ { $$ = chainon ($1, $3); }
+ ;
+
+component_declarator:
+ save_filename save_lineno declarator maybe_attribute
+ { $$ = grokfield ($1, $2, $3, current_declspecs, NULL_TREE);
+ decl_attributes ($$, $4, prefix_attributes); }
+ | save_filename save_lineno
+ declarator ':' expr_no_commas maybe_attribute
+ { $$ = grokfield ($1, $2, $3, current_declspecs, $5);
+ decl_attributes ($$, $6, prefix_attributes); }
+ | save_filename save_lineno ':' expr_no_commas maybe_attribute
+ { $$ = grokfield ($1, $2, NULL_TREE, current_declspecs, $4);
+ decl_attributes ($$, $5, prefix_attributes); }
+ ;
+
+/* We chain the enumerators in reverse order.
+ They are put in forward order where enumlist is used.
+ (The order used to be significant, but no longer is so.
+ However, we still maintain the order, just to be clean.) */
+
+enumlist:
+ enumerator
+ | enumlist ',' enumerator
+ { if ($1 == error_mark_node)
+ $$ = $1;
+ else
+ $$ = chainon ($3, $1); }
+ | error
+ { $$ = error_mark_node; }
+ ;
+
+
+enumerator:
+ identifier
+ { $$ = build_enumerator ($1, NULL_TREE); }
+ | identifier '=' expr_no_commas
+ { $$ = build_enumerator ($1, $3); }
+ ;
+
+typename:
+ typed_typespecs absdcl
+ { $$ = build_tree_list ($1, $2); }
+ | nonempty_type_quals absdcl
+ { $$ = build_tree_list ($1, $2); }
+ ;
+
+absdcl: /* an absolute declarator */
+ /* empty */
+ { $$ = NULL_TREE; }
+ | absdcl1
+ ;
+
+nonempty_type_quals:
+ TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $1, NULL_TREE); }
+ | nonempty_type_quals TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+type_quals:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | type_quals TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+absdcl1: /* a nonempty absolute declarator */
+ '(' absdcl1 ')'
+ { $$ = $2; }
+ /* `(typedef)1' is `int'. */
+ | '*' type_quals absdcl1 %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ | '*' type_quals %prec UNARY
+ { $$ = make_pointer_declarator ($2, NULL_TREE); }
+ | absdcl1 '(' parmlist %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+ | absdcl1 '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | absdcl1 '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ | '(' parmlist %prec '.'
+ { $$ = build_nt (CALL_EXPR, NULL_TREE, $2, NULL_TREE); }
+ | '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, NULL_TREE, $2); }
+ | '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); }
+ /* ??? It appears we have to support attributes here, however
+ using prefix_attributes is wrong. */
+ ;
+
+/* at least one statement, the first of which parses without error. */
+/* stmts is used only after decls, so an invalid first statement
+ is actually regarded as an invalid decl and part of the decls. */
+
+stmts:
+ lineno_stmt_or_labels
+ {
+ if (pedantic && $1)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ }
+ ;
+
+lineno_stmt_or_labels:
+ lineno_stmt_or_label
+ | lineno_stmt_or_labels lineno_stmt_or_label
+ { $$ = $2; }
+ | lineno_stmt_or_labels errstmt
+ { $$ = 0; }
+ ;
+
+xstmts:
+ /* empty */
+ | stmts
+ ;
+
+errstmt: error ';'
+ ;
+
+pushlevel: /* empty */
+ { emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+ push_momentary ();
+ expand_start_bindings (0);
+ }
+ ;
+
+/* Read zero or more forward-declarations for labels
+ that nested functions can jump to. */
+maybe_label_decls:
+ /* empty */
+ | label_decls
+ { if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); }
+ ;
+
+label_decls:
+ label_decl
+ | label_decls label_decl
+ ;
+
+label_decl:
+ LABEL identifiers_or_typenames ';'
+ { tree link;
+ for (link = $2; link; link = TREE_CHAIN (link))
+ {
+ tree label = shadow_label (TREE_VALUE (link));
+ C_DECLARED_LABEL_FLAG (label) = 1;
+ declare_nonlocal_label (label);
+ }
+ }
+ ;
+
+/* This is the body of a function definition.
+ It causes syntax errors to ignore to the next openbrace. */
+compstmt_or_error:
+ compstmt
+ {}
+ | error compstmt
+ ;
+
+compstmt: '{' '}'
+ { $$ = convert (void_type_node, integer_zero_node); }
+ | '{' pushlevel maybe_label_decls decls xstmts '}'
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ $$ = poplevel (1, 1, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ | '{' pushlevel maybe_label_decls error '}'
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ $$ = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ | '{' pushlevel maybe_label_decls stmts '}'
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ $$ = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ ;
+
+/* Value is number of statements counted as of the closeparen. */
+simple_if:
+ if_prefix lineno_labeled_stmt
+/* Make sure expand_end_cond is run once
+ for each call to expand_start_cond.
+ Otherwise a crash is likely. */
+ | if_prefix error
+ ;
+
+if_prefix:
+ IF '(' expr ')'
+ { emit_line_note ($<filename>-1, $<lineno>0);
+ expand_start_cond (truthvalue_conversion ($3), 0);
+ $<itype>$ = stmt_count;
+ if_stmt_file = $<filename>-1;
+ if_stmt_line = $<lineno>0;
+ position_after_white_space (); }
+ ;
+
+/* This is a subroutine of stmt.
+ It is used twice, once for valid DO statements
+ and once for catching errors in parsing the end test. */
+do_stmt_start:
+ DO
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ expand_start_loop_continue_elsewhere (1);
+ position_after_white_space (); }
+ lineno_labeled_stmt WHILE
+ { expand_loop_continue_here (); }
+ ;
+
+save_filename:
+ { $$ = input_filename; }
+ ;
+
+save_lineno:
+ { $$ = lineno; }
+ ;
+
+lineno_labeled_stmt:
+ save_filename save_lineno stmt
+ { }
+/* | save_filename save_lineno error
+ { }
+*/
+ | save_filename save_lineno label lineno_labeled_stmt
+ { }
+ ;
+
+lineno_stmt_or_label:
+ save_filename save_lineno stmt_or_label
+ { $$ = $3; }
+ ;
+
+stmt_or_label:
+ stmt
+ { $$ = 0; }
+ | label
+ { $$ = 1; }
+ ;
+
+/* Parse a single real statement, not including any labels. */
+stmt:
+ compstmt
+ { stmt_count++; }
+ | all_iter_stmt
+ | expr ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+/* It appears that this should not be done--that a non-lvalue array
+ shouldn't get an error if the value isn't used.
+ Section 3.2.2.1 says that an array lvalue gets converted to a pointer
+ if it appears as a top-level expression,
+ but says nothing about non-lvalue arrays. */
+#if 0
+ /* Call default_conversion to get an error
+ on referring to a register array if pedantic. */
+ if (TREE_CODE (TREE_TYPE ($1)) == ARRAY_TYPE
+ || TREE_CODE (TREE_TYPE ($1)) == FUNCTION_TYPE)
+ $1 = default_conversion ($1);
+#endif
+ iterator_expand ($1);
+ clear_momentary (); }
+ | simple_if ELSE
+ { expand_start_else ();
+ $<itype>1 = stmt_count;
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { expand_end_cond ();
+ if (extra_warnings && stmt_count == $<itype>1)
+ warning ("empty body in an else-statement"); }
+ | simple_if %prec IF
+ { expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+ else statement. Increment stmt_count so we don't
+ give a second error if this is a nested `if'. */
+ if (extra_warnings && stmt_count++ == $<itype>1)
+ warning_with_file_and_line (if_stmt_file, if_stmt_line,
+ "empty body in an if-statement"); }
+/* Make sure expand_end_cond is run once
+ for each call to expand_start_cond.
+ Otherwise a crash is likely. */
+ | simple_if ELSE error
+ { expand_end_cond (); }
+ | WHILE
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ /* The emit_nop used to come before emit_line_note,
+ but that made the nop seem like part of the preceding line.
+ And that was confusing when the preceding line was
+ inside of an if statement and was not really executed.
+ I think it ought to work to put the nop after the line number.
+ We will see. --rms, July 15, 1991. */
+ emit_nop (); }
+ '(' expr ')'
+ { /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+ expand_start_loop (1);
+ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion ($4));
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { expand_end_loop (); }
+ | do_stmt_start
+ '(' expr ')' ';'
+ { emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion ($3));
+ expand_end_loop ();
+ clear_momentary (); }
+/* This rule is needed to make sure we end every loop we start. */
+ | do_stmt_start error
+ { expand_end_loop ();
+ clear_momentary (); }
+ | FOR
+ '(' xexpr ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ if ($3) c_expand_expr_stmt ($3);
+ /* Next step is to call expand_start_loop_continue_elsewhere,
+ but wait till after we parse the entire for (...).
+ Otherwise, invalid input might cause us to call that
+ fn without calling expand_end_loop. */
+ }
+ xexpr ';'
+ /* Can't emit now; wait till after expand_start_loop... */
+ { $<lineno>7 = lineno;
+ $<filename>$ = input_filename; }
+ xexpr ')'
+ {
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+ expand_start_loop_continue_elsewhere (1);
+ /* Emit the end-test, with a line number. */
+ emit_line_note ($<filename>8, $<lineno>7);
+ if ($6)
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion ($6));
+ /* Don't let the tree nodes for $9 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ $<lineno>7 = lineno;
+ $<filename>8 = input_filename;
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { /* Emit the increment expression, with a line number. */
+ emit_line_note ($<filename>8, $<lineno>7);
+ expand_loop_continue_here ();
+ if ($9)
+ c_expand_expr_stmt ($9);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary ();
+ expand_end_loop (); }
+ | SWITCH '(' expr ')'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_start_case ($3);
+ /* Don't let the tree nodes for $3 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { expand_end_case ($3);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ | BREAK ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); }
+ | CONTINUE ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); }
+ | RETURN ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_return (NULL_TREE); }
+ | RETURN expr ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_return ($2); }
+ | ASM_KEYWORD maybe_type_qual '(' expr ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ STRIP_NOPS ($4);
+ if ((TREE_CODE ($4) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND ($4, 0)) == STRING_CST)
+ || TREE_CODE ($4) == STRING_CST)
+ expand_asm ($4);
+ else
+ error ("argument of `asm' is not a constant string"); }
+ /* This is the case with just output operands. */
+ | ASM_KEYWORD maybe_type_qual '(' expr ':' asm_operands ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_asm_operands ($4, $6, NULL_TREE, NULL_TREE,
+ $2 == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); }
+ /* This is the case with input operands as well. */
+ | ASM_KEYWORD maybe_type_qual '(' expr ':' asm_operands ':' asm_operands ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_asm_operands ($4, $6, $8, NULL_TREE,
+ $2 == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); }
+ /* This is the case with clobbered registers as well. */
+ | ASM_KEYWORD maybe_type_qual '(' expr ':' asm_operands ':'
+ asm_operands ':' asm_clobbers ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_asm_operands ($4, $6, $8, $10,
+ $2 == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); }
+ | GOTO identifier ';'
+ { tree decl;
+ stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ decl = lookup_label ($2);
+ if (decl != 0)
+ {
+ TREE_USED (decl) = 1;
+ expand_goto (decl);
+ }
+ }
+ | GOTO '*' expr ';'
+ { if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ expand_computed_goto (convert (ptr_type_node, $3)); }
+ | ';'
+ ;
+
+all_iter_stmt:
+ all_iter_stmt_simple
+/* | all_iter_stmt_with_decl */
+ ;
+
+all_iter_stmt_simple:
+ FOR '(' primary ')'
+ {
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+ /* 0 in case of error or already bound iterator */
+
+ $<itype>$ = 0;
+ if (TREE_CODE ($3) != VAR_DECL)
+ error ("invalid `for (ITERATOR)' syntax");
+ else if (! ITERATOR_P ($3))
+ error ("`%s' is not an iterator",
+ IDENTIFIER_POINTER (DECL_NAME ($3)));
+ else if (ITERATOR_BOUND_P ($3))
+ error ("`for (%s)' inside expansion of same iterator",
+ IDENTIFIER_POINTER (DECL_NAME ($3)));
+ else
+ {
+ $<itype>$ = 1;
+ iterator_for_loop_start ($3);
+ }
+ }
+ lineno_labeled_stmt
+ {
+ if ($<itype>5)
+ iterator_for_loop_end ($3);
+ }
+
+/* This really should allow any kind of declaration,
+ for generality. Fix it before turning it back on.
+
+all_iter_stmt_with_decl:
+ FOR '(' ITERATOR pushlevel setspecs iterator_spec ')'
+ {
+*/ /* The value returned by this action is */
+ /* 1 if everything is OK */
+ /* 0 in case of error or already bound iterator */
+/*
+ iterator_for_loop_start ($6);
+ }
+ lineno_labeled_stmt
+ {
+ iterator_for_loop_end ($6);
+ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ $<ttype>$ = poplevel (1, 1, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary ();
+ }
+*/
+
+/* Any kind of label, including jump labels and case labels.
+ ANSI C accepts labels only before statements, but we allow them
+ also at the end of a compound statement. */
+
+label: CASE expr_no_commas ':'
+ { register tree value = check_case_value ($2);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ stmt_count++;
+
+ if (value != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase (value, convert_and_check,
+ label, &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); }
+ | CASE expr_no_commas ELLIPSIS expr_no_commas ':'
+ { register tree value1 = check_case_value ($2);
+ register tree value2 = check_case_value ($4);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids case ranges");
+ stmt_count++;
+
+ if (value1 != error_mark_node && value2 != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase_range (value1, value2,
+ convert_and_check, label,
+ &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 4)
+ warning ("empty case range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); }
+ | DEFAULT ':'
+ {
+ tree duplicate;
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+ int success = pushcase (NULL_TREE, 0, label, &duplicate);
+ stmt_count++;
+ if (success == 1)
+ error ("default label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("multiple default labels in one switch");
+ error_with_decl (duplicate, "this is the first default label");
+ }
+ position_after_white_space (); }
+ | identifier ':'
+ { tree label = define_label (input_filename, lineno, $1);
+ stmt_count++;
+ emit_nop ();
+ if (label)
+ expand_label (label);
+ position_after_white_space (); }
+ ;
+
+/* Either a type-qualifier or nothing. First thing in an `asm' statement. */
+
+maybe_type_qual:
+ /* empty */
+ { emit_line_note (input_filename, lineno);
+ $$ = NULL_TREE; }
+ | TYPE_QUAL
+ { emit_line_note (input_filename, lineno); }
+ ;
+
+xexpr:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | expr
+ ;
+
+/* These are the operands other than the first string and colon
+ in asm ("addextend %2,%1": "=dm" (x), "0" (y), "g" (*x)) */
+asm_operands: /* empty */
+ { $$ = NULL_TREE; }
+ | nonnull_asm_operands
+ ;
+
+nonnull_asm_operands:
+ asm_operand
+ | nonnull_asm_operands ',' asm_operand
+ { $$ = chainon ($1, $3); }
+ ;
+
+asm_operand:
+ STRING '(' expr ')'
+ { $$ = build_tree_list ($1, $3); }
+ ;
+
+asm_clobbers:
+ string
+ { $$ = tree_cons (NULL_TREE, combine_strings ($1), NULL_TREE); }
+ | asm_clobbers ',' string
+ { $$ = tree_cons (NULL_TREE, combine_strings ($3), $1); }
+ ;
+
+/* This is what appears inside the parens in a function declarator.
+ Its value is a list of ..._TYPE nodes. */
+parmlist:
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); }
+ parmlist_1
+ { $$ = $2;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); }
+ ;
+
+parmlist_1:
+ parmlist_2 ')'
+ | parms ';'
+ { tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+ /* Mark the forward decls as such. */
+ for (parm = getdecls (); parm; parm = TREE_CHAIN (parm))
+ TREE_ASM_WRITTEN (parm) = 1;
+ clear_parm_order (); }
+ parmlist_1
+ { $$ = $4; }
+ | error ')'
+ { $$ = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); }
+ ;
+
+/* This is what appears inside the parens in a function declarator.
+ Is value is represented in the format that grokdeclarator expects. */
+parmlist_2: /* empty */
+ { $$ = get_parm_info (0); }
+ | ELLIPSIS
+ { $$ = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+ Also, since func (...) and func () are indistinguishable,
+ it caused problems with the code in expand_builtin which
+ tries to verify that BUILT_IN_NEXT_ARG is being used
+ correctly. */
+ error ("ANSI C requires a named argument before `...'");
+ }
+ | parms
+ { $$ = get_parm_info (1); }
+ | parms ',' ELLIPSIS
+ { $$ = get_parm_info (0); }
+ ;
+
+parms:
+ parm
+ { push_parm_decl ($1); }
+ | parms ',' parm
+ { push_parm_decl ($3); }
+ ;
+
+/* A single parameter declaration or parameter type name,
+ as found in a parmlist. */
+parm:
+ typed_declspecs setspecs parm_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs notype_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs absdcl maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+
+ | declmods setspecs absdcl maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ ;
+
+/* This is used in a function definition
+ where either a parmlist or an identifier list is ok.
+ Its value is a list of ..._TYPE nodes or a list of identifiers. */
+parmlist_or_identifiers:
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); }
+ parmlist_or_identifiers_1
+ { $$ = $2;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); }
+ ;
+
+parmlist_or_identifiers_1:
+ parmlist_1
+ | identifiers ')'
+ { tree t;
+ for (t = $1; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+ error ("`...' in old-style identifier list");
+ $$ = tree_cons (NULL_TREE, NULL_TREE, $1); }
+ ;
+
+/* A nonempty list of identifiers. */
+identifiers:
+ IDENTIFIER
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | identifiers ',' IDENTIFIER
+ { $$ = chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+/* A nonempty list of identifiers, including typenames. */
+identifiers_or_typenames:
+ identifier
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | identifiers_or_typenames ',' identifier
+ { $$ = chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+extension:
+ EXTENSION
+ { $<itype>$ = pedantic;
+ pedantic = 0; }
+ ;
+
+%%
diff --git a/gcc/cccp.1 b/gcc/cccp.1
new file mode 100644
index 00000000000..84eb19ede54
--- /dev/null
+++ b/gcc/cccp.1
@@ -0,0 +1,674 @@
+.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*-
+.\" See section COPYING for conditions for redistribution
+.TH cpp 1 "30apr1993" "GNU Tools" "GNU Tools"
+.SH NAME
+cccp, cpp \- The GNU C-Compatible Compiler Preprocessor.
+.SH SYNOPSIS
+.hy 0
+.na
+.TP
+.B cccp
+.RB "[\|" \-$ "\|]"
+.RB "[\|" \-A \c
+.I predicate\c
+.RB [ (\c
+.I value\c
+.BR ) ]\|]
+.RB "[\|" \-C "\|]"
+.RB "[\|" \-D \c
+.I name\c
+.RB [ =\c
+.I definition\c
+\&]\|]
+.RB "[\|" \-dD "\|]"
+.RB "[\|" \-dM "\|]"
+.RB "[\|" "\-I\ "\c
+.I directory\c
+\&\|]
+.RB "[\|" \-H "\|]"
+.RB "[\|" \-I\- "\|]"
+.RB "[\|" "\-imacros\ "\c
+.I file\c
+\&\|]
+.RB "[\|" "\-include\ "\c
+.I file\c
+\&\|]
+.RB "[\|" "\-idirafter\ "\c
+.I dir\c
+\&\|]
+.RB "[\|" "\-iprefix\ "\c
+.I prefix\c
+\&\|]
+.RB "[\|" "\-iwithprefix\ "\c
+.I dir\c
+\&\|]
+.RB "[\|" \-lang\-c "\|]"
+.RB "[\|" \-lang\-c++ "\|]"
+.RB "[\|" \-lang\-objc "\|]"
+.RB "[\|" \-lang\-objc++ "\|]"
+.RB "[\|" \-lint "\|]"
+.RB "[\|" \-M\ [ \-MG "\|]]"
+.RB "[\|" \-MM\ [ \-MG "\|]]"
+.RB "[\|" \-MD\ \c
+.I file\ \c
+\&\|]
+.RB "[\|" \-MMD\ \c
+.I file\ \c
+\&\|]
+.RB "[\|" \-nostdinc "\|]"
+.RB "[\|" \-nostdinc++ "\|]"
+.RB "[\|" \-P "\|]"
+.RB "[\|" \-pedantic "\|]"
+.RB "[\|" \-pedantic\-errors "\|]"
+.RB "[\|" \-traditional "\|]"
+.RB "[\|" \-trigraphs "\|]"
+.RB "[\|" \-U \c
+.I name\c
+\&\|]
+.RB "[\|" \-undef "\|]"
+.RB "[\|" \-Wtrigraphs "\|]"
+.RB "[\|" \-Wcomment "\|]"
+.RB "[\|" \-Wall "\|]"
+.RB "[\|" \-Wtraditional "\|]"
+.br
+.RB "[\|" \c
+.I infile\c
+.RB | \- "\|]"
+.RB "[\|" \c
+.I outfile\c
+.RB | \- "\|]"
+.ad b
+.hy 1
+.SH DESCRIPTION
+The C preprocessor is a \c
+.I macro processor\c
+\& that is used automatically by
+the C compiler to transform your program before actual compilation. It is
+called a macro processor because it allows you to define \c
+.I macros\c
+\&,
+which are brief abbreviations for longer constructs.
+
+The C preprocessor provides four separate facilities that you can use as
+you see fit:
+.TP
+\(bu
+Inclusion of header files. These are files of declarations that can be
+substituted into your program.
+.TP
+\(bu
+Macro expansion. You can define \c
+.I macros\c
+\&, which are abbreviations
+for arbitrary fragments of C code, and then the C preprocessor will
+replace the macros with their definitions throughout the program.
+.TP
+\(bu
+Conditional compilation. Using special preprocessing directives, you
+can include or exclude parts of the program according to various
+conditions.
+.TP
+\(bu
+Line control. If you use a program to combine or rearrange source files into
+an intermediate file which is then compiled, you can use line control
+to inform the compiler of where each source line originally came from.
+.PP
+C preprocessors vary in some details. For a full explanation of the
+GNU C preprocessor, see the
+.B info
+file `\|\c
+.B cpp.info\c
+\&\|', or the manual
+.I The C Preprocessor\c
+\&. Both of these are built from the same documentation source file, `\|\c
+.B cpp.texinfo\c
+\&\|'. The GNU C
+preprocessor provides a superset of the features of ANSI Standard C.
+
+ANSI Standard C requires the rejection of many harmless constructs commonly
+used by today's C programs. Such incompatibility would be inconvenient for
+users, so the GNU C preprocessor is configured to accept these constructs
+by default. Strictly speaking, to get ANSI Standard C, you must use the
+options `\|\c
+.B \-trigraphs\c
+\&\|', `\|\c
+.B \-undef\c
+\&\|' and `\|\c
+.B \-pedantic\c
+\&\|', but in
+practice the consequences of having strict ANSI Standard C make it
+undesirable to do this.
+
+Most often when you use the C preprocessor you will not have to invoke it
+explicitly: the C compiler will do so automatically. However, the
+preprocessor is sometimes useful individually.
+
+When you call the preprocessor individually, either name
+(\c
+.B cpp\c
+\& or \c
+.B cccp\c
+\&) will do\(em\&they are completely synonymous.
+
+The C preprocessor expects two file names as arguments, \c
+.I infile\c
+\& and
+\c
+.I outfile\c
+\&. The preprocessor reads \c
+.I infile\c
+\& together with any other
+files it specifies with `\|\c
+.B #include\c
+\&\|'. All the output generated by the
+combined input files is written in \c
+.I outfile\c
+\&.
+
+Either \c
+.I infile\c
+\& or \c
+.I outfile\c
+\& may be `\|\c
+.B \-\c
+\&\|', which as \c
+.I infile\c
+\&
+means to read from standard input and as \c
+.I outfile\c
+\& means to write to
+standard output. Also, if \c
+.I outfile\c
+\& or both file names are omitted,
+the standard output and standard input are used for the omitted file names.
+.SH OPTIONS
+Here is a table of command options accepted by the C preprocessor.
+These options can also be given when compiling a C program; they are
+passed along automatically to the preprocessor when it is invoked by
+the compiler.
+.TP
+.B \-P
+Inhibit generation of `\|\c
+.B #\c
+\&\|'-lines with line-number information in
+the output from the preprocessor. This might be
+useful when running the preprocessor on something that is not C code
+and will be sent to a program which might be confused by the
+`\|\c
+.B #\c
+\&\|'-lines.
+.TP
+.B \-C
+Do not discard comments: pass them through to the output file.
+Comments appearing in arguments of a macro call will be copied to the
+output before the expansion of the macro call.
+.TP
+.B \-traditional
+Try to imitate the behavior of old-fashioned C, as opposed to ANSI C.
+.TP
+.B \-trigraphs
+Process ANSI standard trigraph sequences. These are three-character
+sequences, all starting with `\|\c
+.B ??\c
+\&\|', that are defined by ANSI C to
+stand for single characters. For example, `\|\c
+.B ??/\c
+\&\|' stands for
+`\|\c
+.BR "\e" "\|',"
+so `\|\c
+.B '??/n'\c
+\&\|' is a character constant for a newline.
+Strictly speaking, the GNU C preprocessor does not support all
+programs in ANSI Standard C unless `\|\c
+.B \-trigraphs\c
+\&\|' is used, but if
+you ever notice the difference it will be with relief.
+
+You don't want to know any more about trigraphs.
+.TP
+.B \-pedantic
+Issue warnings required by the ANSI C standard in certain cases such
+as when text other than a comment follows `\|\c
+.B #else\c
+\&\|' or `\|\c
+.B #endif\c
+\&\|'.
+.TP
+.B \-pedantic\-errors
+Like `\|\c
+.B \-pedantic\c
+\&\|', except that errors are produced rather than
+warnings.
+.TP
+.B \-Wtrigraphs
+Warn if any trigraphs are encountered (assuming they are enabled).
+.TP
+.B \-Wcomment
+.TP
+.B \-Wcomments
+Warn whenever a comment-start sequence `\|\c
+.B /*\c
+\&\|' appears in a comment.
+(Both forms have the same effect).
+.TP
+.B \-Wall
+Requests both `\|\c
+.B \-Wtrigraphs\c
+\&\|' and `\|\c
+.B \-Wcomment\c
+\&\|' (but not
+`\|\c
+.B \-Wtraditional\c
+\&\|').
+.TP
+.B \-Wtraditional
+Warn about certain constructs that behave differently in traditional and
+ANSI C.
+.TP
+.BI "\-I " directory\c
+\&
+Add the directory \c
+.I directory\c
+\& to the end of the list of
+directories to be searched for header files.
+This can be used to override a system header file, substituting your
+own version, since these directories are searched before the system
+header file directories. If you use more than one `\|\c
+.B \-I\c
+\&\|' option,
+the directories are scanned in left-to-right order; the standard
+system directories come after.
+.TP
+.B \-I\-
+Any directories specified with `\|\c
+.B \-I\c
+\&\|' options before the `\|\c
+.B \-I\-\c
+\&\|'
+option are searched only for the case of `\|\c
+.B #include "\c
+.I file\c
+\&"\c
+\&\|';
+they are not searched for `\|\c
+.B #include <\c
+.I file\c
+\&>\c
+\&\|'.
+
+If additional directories are specified with `\|\c
+.B \-I\c
+\&\|' options after
+the `\|\c
+.B \-I\-\c
+\&\|', these directories are searched for all `\|\c
+.B #include\c
+\&\|'
+directives.
+
+In addition, the `\|\c
+.B \-I\-\c
+\&\|' option inhibits the use of the current
+directory as the first search directory for `\|\c
+.B #include "\c
+.I file\c
+\&"\c
+\&\|'.
+Therefore, the current directory is searched only if it is requested
+explicitly with `\|\c
+.B \-I.\c
+\&\|'. Specifying both `\|\c
+.B \-I\-\c
+\&\|' and `\|\c
+.B \-I.\c
+\&\|'
+allows you to control precisely which directories are searched before
+the current one and which are searched after.
+.TP
+.B \-nostdinc
+Do not search the standard system directories for header files.
+Only the directories you have specified with `\|\c
+.B \-I\c
+\&\|' options
+(and the current directory, if appropriate) are searched.
+.TP
+.B \-nostdinc++
+Do not search for header files in the C++ specific standard
+directories, but do still search the other standard directories.
+(This option is used when building libg++.)
+.TP
+.BI "\-D " "name"\c
+\&
+Predefine \c
+.I name\c
+\& as a macro, with definition `\|\c
+.B 1\c
+\&\|'.
+.TP
+.BI "\-D " "name" = definition
+\&
+Predefine \c
+.I name\c
+\& as a macro, with definition \c
+.I definition\c
+\&.
+There are no restrictions on the contents of \c
+.I definition\c
+\&, but if
+you are invoking the preprocessor from a shell or shell-like program
+you may need to use the shell's quoting syntax to protect characters
+such as spaces that have a meaning in the shell syntax. If you use more than
+one `\|\c
+.B \-D\c
+\&\|' for the same
+.I name\c
+\&, the rightmost definition takes effect.
+.TP
+.BI "\-U " "name"\c
+\&
+Do not predefine \c
+.I name\c
+\&. If both `\|\c
+.B \-U\c
+\&\|' and `\|\c
+.B \-D\c
+\&\|' are
+specified for one name, the `\|\c
+.B \-U\c
+\&\|' beats the `\|\c
+.B \-D\c
+\&\|' and the name
+is not predefined.
+.TP
+.B \-undef
+Do not predefine any nonstandard macros.
+.TP
+.BI "\-A " "name(" value )
+Assert (in the same way as the \c
+.B #assert\c
+\& directive)
+the predicate \c
+.I name\c
+\& with tokenlist \c
+.I value\c
+\&. Remember to escape or quote the parentheses on
+shell command lines.
+
+You can use `\|\c
+.B \-A-\c
+\&\|' to disable all predefined assertions; it also
+undefines all predefined macros.
+.TP
+.B \-dM
+Instead of outputting the result of preprocessing, output a list of
+`\|\c
+.B #define\c
+\&\|' directives for all the macros defined during the
+execution of the preprocessor, including predefined macros. This gives
+you a way of finding out what is predefined in your version of the
+preprocessor; assuming you have no file `\|\c
+.B foo.h\c
+\&\|', the command
+.sp
+.br
+touch\ foo.h;\ cpp\ \-dM\ foo.h
+.br
+.sp
+will show the values of any predefined macros.
+.TP
+.B \-dD
+Like `\|\c
+.B \-dM\c
+\&\|' except in two respects: it does \c
+.I not\c
+\& include the
+predefined macros, and it outputs \c
+.I both\c
+\& the `\|\c
+.B #define\c
+\&\|'
+directives and the result of preprocessing. Both kinds of output go to
+the standard output file.
+.PP
+.TP
+.BR \-M\ [ \-MG ]
+Instead of outputting the result of preprocessing, output a rule
+suitable for \c
+.B make\c
+\& describing the dependencies of the main
+source file. The preprocessor outputs one \c
+.B make\c
+\& rule containing
+the object file name for that source file, a colon, and the names of
+all the included files. If there are many included files then the
+rule is split into several lines using `\|\c
+.B \\\\\c
+\&\|'-newline.
+
+`\|\c
+.B \-MG\c
+\&\|' says to treat missing header files as generated files and assume \c
+they live in the same directory as the source file. It must be specified \c
+in addition to `\|\c
+.B \-M\c
+\&\|'.
+
+This feature is used in automatic updating of makefiles.
+.TP
+.BR \-MM\ [ \-MG ]
+Like `\|\c
+.B \-M\c
+\&\|' but mention only the files included with `\|\c
+.B #include
+"\c
+.I file\c
+\&"\c
+\&\|'. System header files included with `\|\c
+.B #include
+<\c
+.I file\c
+\&>\c
+\&\|' are omitted.
+.TP
+.BI \-MD\ file
+Like `\|\c
+.B \-M\c
+\&\|' but the dependency information is written to `\|\c
+.I file\c
+\&\|'. This is in addition to compiling the file as
+specified\(em\&`\|\c
+.B \-MD\c
+\&\|' does not inhibit ordinary compilation the way
+`\|\c
+.B \-M\c
+\&\|' does.
+
+When invoking gcc, do not specify the `\|\c
+.I file\c
+\&\|' argument. Gcc will create file names made by replacing `\|\c
+.B .c\c
+\&\|' with `\|\c
+.B .d\c
+\&\|' at the end of the input file names.
+
+In Mach, you can use the utility \c
+.B md\c
+\& to merge multiple files
+into a single dependency file suitable for using with the `\|\c
+.B make\c
+\&\|'
+command.
+.TP
+.BI \-MMD\ file
+Like `\|\c
+.B \-MD\c
+\&\|' except mention only user header files, not system
+header files.
+.TP
+.B \-H
+Print the name of each header file used, in addition to other normal
+activities.
+.TP
+.BI "\-imacros " "file"\c
+\&
+Process \c
+.I file\c
+\& as input, discarding the resulting output, before
+processing the regular input file. Because the output generated from
+\c
+.I file\c
+\& is discarded, the only effect of `\|\c
+.B \-imacros \c
+.I file\c
+\&\c
+\&\|' is to
+make the macros defined in \c
+.I file\c
+\& available for use in the main
+input. The preprocessor evaluates any `\|\c
+.B \-D\c
+\&\|' and `\|\c
+.B \-U\c
+\&\|' options
+on the command line before processing `\|\c
+.B \-imacros \c
+.I file\c
+\&\|' \c
+\&.
+.TP
+.BI "\-include " "file"
+Process
+.I file
+as input, and include all the resulting output,
+before processing the regular input file.
+.TP
+.BI "-idirafter " "dir"\c
+\&
+Add the directory \c
+.I dir\c
+\& to the second include path. The directories
+on the second include path are searched when a header file is not found
+in any of the directories in the main include path (the one that
+`\|\c
+.B \-I\c
+\&\|' adds to).
+.TP
+.BI "-iprefix " "prefix"\c
+\&
+Specify \c
+.I prefix\c
+\& as the prefix for subsequent `\|\c
+.B \-iwithprefix\c
+\&\|'
+options.
+.TP
+.BI "-iwithprefix " "dir"\c
+\&
+Add a directory to the second include path. The directory's name is
+made by concatenating \c
+.I prefix\c
+\& and \c
+.I dir\c
+\&, where \c
+.I prefix\c
+\&
+was specified previously with `\|\c
+.B \-iprefix\c
+\&\|'.
+.TP
+.B \-lang-c
+.TP
+.B \-lang-c++
+.TP
+.B \-lang-objc
+.TP
+.B \-lang-objc++
+Specify the source language. `\|\c
+.B \-lang-c++\c
+\&\|' makes the preprocessor
+handle C++ comment syntax, and includes extra default include
+directories for C++, and `\|\c
+.B \-lang-objc\c
+\&\|' enables the Objective C
+`\|\c
+.B #import\c
+\&\|' directive. `\|\c
+.B \-lang-c\c
+\&\|' explicitly turns off both of
+these extensions, and `\|\c
+.B \-lang-objc++\c
+\&\|' enables both.
+
+These options are generated by the compiler driver \c
+.B gcc\c
+\&, but not
+passed from the `\|\c
+.B gcc\c
+\&\|' command line.
+.TP
+.B \-lint
+Look for commands to the program checker \c
+.B lint\c
+\& embedded in
+comments, and emit them preceded by `\|\c
+.B #pragma lint\c
+\&\|'. For example,
+the comment `\|\c
+.B /* NOTREACHED */\c
+\&\|' becomes `\|\c
+.B #pragma lint
+NOTREACHED\c
+\&\|'.
+
+This option is available only when you call \c
+.B cpp\c
+\& directly;
+\c
+.B gcc\c
+\& will not pass it from its command line.
+.TP
+.B \-$
+Forbid the use of `\|\c
+.B $\c
+\&\|' in identifiers. This was formerly required for strict conformance
+to the C Standard before the standard was corrected. \c
+
+This option is available only when you call \c
+.B cpp\c
+\& directly;
+.B gcc\c
+\& will not pass it from its command line.
+.SH "SEE ALSO"
+.RB "`\|" Cpp "\|'"
+entry in
+.B info\c
+\&;
+.I The C Preprocessor\c
+, Richard M. Stallman.
+.br
+.BR gcc "(" 1 ");"
+.RB "`\|" Gcc "\|'"
+entry in
+.B info\c
+\&;
+.I
+Using and Porting GNU CC (for version 2.0)\c
+, Richard M. Stallman.
+.SH COPYING
+Copyright (c) 1991, 1992, 1993 Free Software Foundation, Inc.
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
diff --git a/gcc/cexp.c b/gcc/cexp.c
new file mode 100644
index 00000000000..a4f2cc53029
--- /dev/null
+++ b/gcc/cexp.c
@@ -0,0 +1,2142 @@
+
+/* A Bison parser, made from cexp.y with Bison version GNU Bison version 1.24
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define INT 258
+#define CHAR 259
+#define NAME 260
+#define ERROR 261
+#define OR 262
+#define AND 263
+#define EQUAL 264
+#define NOTEQUAL 265
+#define LEQ 266
+#define GEQ 267
+#define LSH 268
+#define RSH 269
+#define UNARY 270
+
+#line 27 "cexp.y"
+
+#include "config.h"
+#include <setjmp.h>
+/* #define YYDEBUG 1 */
+
+/* The following symbols should be autoconfigured:
+ HAVE_STDLIB_H
+ STDC_HEADERS
+ In the mean time, we'll get by with approximations based
+ on existing GCC configuration symbols. */
+
+#ifdef POSIX
+# ifndef HAVE_STDLIB_H
+# define HAVE_STDLIB_H 1
+# endif
+# ifndef STDC_HEADERS
+# define STDC_HEADERS 1
+# endif
+#endif /* defined (POSIX) */
+
+#if STDC_HEADERS
+# include <string.h>
+#endif
+
+#if HAVE_STDLIB_H || defined (MULTIBYTE_CHARS)
+# include <stdlib.h>
+#endif
+
+#ifdef MULTIBYTE_CHARS
+#include <locale.h>
+#endif
+
+#include <stdio.h>
+
+typedef unsigned char U_CHAR;
+
+/* This is used for communicating lists of keywords with cccp.c. */
+struct arglist {
+ struct arglist *next;
+ U_CHAR *name;
+ int length;
+ int argno;
+};
+
+/* Define a generic NULL if one hasn't already been defined. */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef GENERIC_PTR
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define GENERIC_PTR void *
+#else
+#define GENERIC_PTR char *
+#endif
+#endif
+
+#ifndef NULL_PTR
+#define NULL_PTR ((GENERIC_PTR) 0)
+#endif
+
+/* Find the largest host integer type and set its size and type.
+ Don't blindly use `long'; on some crazy hosts it is shorter than `int'. */
+
+#ifndef HOST_BITS_PER_WIDE_INT
+
+#if HOST_BITS_PER_LONG > HOST_BITS_PER_INT
+#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
+#define HOST_WIDE_INT long
+#else
+#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_INT
+#define HOST_WIDE_INT int
+#endif
+
+#endif
+
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __attribute__(x)
+#endif
+
+#ifndef PROTO
+# if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+# define PROTO(ARGS) ARGS
+# else
+# define PROTO(ARGS) ()
+# endif
+#endif
+
+#if defined (__STDC__) && defined (HAVE_VPRINTF)
+# include <stdarg.h>
+# define VA_START(va_list, var) va_start (va_list, var)
+# define PRINTF_ALIST(msg) char *msg, ...
+# define PRINTF_DCL(msg)
+# define PRINTF_PROTO(ARGS, m, n) PROTO (ARGS) __attribute__ ((format (__printf__, m, n)))
+#else
+# include <varargs.h>
+# define VA_START(va_list, var) va_start (va_list)
+# define PRINTF_ALIST(msg) msg, va_alist
+# define PRINTF_DCL(msg) char *msg; va_dcl
+# define PRINTF_PROTO(ARGS, m, n) () __attribute__ ((format (__printf__, m, n)))
+# define vfprintf(file, msg, args) \
+ { \
+ char *a0 = va_arg(args, char *); \
+ char *a1 = va_arg(args, char *); \
+ char *a2 = va_arg(args, char *); \
+ char *a3 = va_arg(args, char *); \
+ fprintf (file, msg, a0, a1, a2, a3); \
+ }
+#endif
+
+#define PRINTF_PROTO_1(ARGS) PRINTF_PROTO(ARGS, 1, 2)
+
+HOST_WIDE_INT parse_c_expression PROTO((char *));
+
+static int yylex PROTO((void));
+static void yyerror PROTO((char *)) __attribute__ ((noreturn));
+static HOST_WIDE_INT expression_value;
+
+static jmp_buf parse_return_error;
+
+/* Nonzero means count most punctuation as part of a name. */
+static int keyword_parsing = 0;
+
+/* Nonzero means do not evaluate this expression.
+ This is a count, since unevaluated expressions can nest. */
+static int skip_evaluation;
+
+/* some external tables of character types */
+extern unsigned char is_idstart[], is_idchar[], is_space[];
+
+/* Flag for -pedantic. */
+extern int pedantic;
+
+/* Flag for -traditional. */
+extern int traditional;
+
+/* Flag for -lang-c89. */
+extern int c89;
+
+/* Flag for -Wundef. */
+extern int warn_undef;
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+#ifndef MAX_CHAR_TYPE_SIZE
+#define MAX_CHAR_TYPE_SIZE CHAR_TYPE_SIZE
+#endif
+
+#ifndef MAX_INT_TYPE_SIZE
+#define MAX_INT_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+#ifndef MAX_LONG_TYPE_SIZE
+#define MAX_LONG_TYPE_SIZE LONG_TYPE_SIZE
+#endif
+
+#ifndef MAX_WCHAR_TYPE_SIZE
+#define MAX_WCHAR_TYPE_SIZE WCHAR_TYPE_SIZE
+#endif
+
+#if MAX_CHAR_TYPE_SIZE < HOST_BITS_PER_WIDE_INT
+#define MAX_CHAR_TYPE_MASK (~ (~ (HOST_WIDE_INT) 0 << MAX_CHAR_TYPE_SIZE))
+#else
+#define MAX_CHAR_TYPE_MASK (~ (HOST_WIDE_INT) 0)
+#endif
+
+#if MAX_WCHAR_TYPE_SIZE < HOST_BITS_PER_WIDE_INT
+#define MAX_WCHAR_TYPE_MASK (~ (~ (HOST_WIDE_INT) 0 << MAX_WCHAR_TYPE_SIZE))
+#else
+#define MAX_WCHAR_TYPE_MASK (~ (HOST_WIDE_INT) 0)
+#endif
+
+/* Suppose A1 + B1 = SUM1, using 2's complement arithmetic ignoring overflow.
+ Suppose A, B and SUM have the same respective signs as A1, B1, and SUM1.
+ Suppose SIGNEDP is negative if the result is signed, zero if unsigned.
+ Then this yields nonzero if overflow occurred during the addition.
+ Overflow occurs if A and B have the same sign, but A and SUM differ in sign,
+ and SIGNEDP is negative.
+ Use `^' to test whether signs differ, and `< 0' to isolate the sign. */
+#define overflow_sum_sign(a, b, sum, signedp) \
+ ((~((a) ^ (b)) & ((a) ^ (sum)) & (signedp)) < 0)
+
+struct constant;
+
+GENERIC_PTR xmalloc PROTO((size_t));
+HOST_WIDE_INT parse_escape PROTO((char **, HOST_WIDE_INT));
+int check_assertion PROTO((U_CHAR *, int, int, struct arglist *));
+struct hashnode *lookup PROTO((U_CHAR *, int, int));
+void error PRINTF_PROTO_1((char *, ...));
+void pedwarn PRINTF_PROTO_1((char *, ...));
+void warning PRINTF_PROTO_1((char *, ...));
+
+static int parse_number PROTO((int));
+static HOST_WIDE_INT left_shift PROTO((struct constant *, unsigned HOST_WIDE_INT));
+static HOST_WIDE_INT right_shift PROTO((struct constant *, unsigned HOST_WIDE_INT));
+static void integer_overflow PROTO((void));
+
+/* `signedp' values */
+#define SIGNED (~0)
+#define UNSIGNED 0
+
+#line 244 "cexp.y"
+typedef union {
+ struct constant {HOST_WIDE_INT value; int signedp;} integer;
+ struct name {U_CHAR *address; int length;} name;
+ struct arglist *keywords;
+} YYSTYPE;
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 77
+#define YYFLAG -32768
+#define YYNTBASE 34
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 270 ? yytranslate[x] : 43)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 29, 2, 31, 2, 27, 14, 2, 32,
+ 33, 25, 23, 9, 24, 2, 26, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 8, 2, 17,
+ 2, 18, 7, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 13, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 12, 2, 30, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 10, 11, 15, 16, 19, 20, 21, 22, 28
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 2, 4, 8, 11, 14, 17, 20, 23, 24,
+ 31, 35, 39, 43, 47, 51, 55, 59, 63, 67,
+ 71, 75, 79, 83, 87, 91, 95, 99, 100, 105,
+ 106, 111, 112, 113, 121, 123, 125, 127, 128, 133
+};
+
+static const short yyrhs[] = { 35,
+ 0, 36, 0, 35, 9, 36, 0, 24, 36, 0,
+ 29, 36, 0, 23, 36, 0, 30, 36, 0, 31,
+ 5, 0, 0, 31, 5, 37, 32, 42, 33, 0,
+ 32, 35, 33, 0, 36, 25, 36, 0, 36, 26,
+ 36, 0, 36, 27, 36, 0, 36, 23, 36, 0,
+ 36, 24, 36, 0, 36, 21, 36, 0, 36, 22,
+ 36, 0, 36, 15, 36, 0, 36, 16, 36, 0,
+ 36, 19, 36, 0, 36, 20, 36, 0, 36, 17,
+ 36, 0, 36, 18, 36, 0, 36, 14, 36, 0,
+ 36, 13, 36, 0, 36, 12, 36, 0, 0, 36,
+ 11, 38, 36, 0, 0, 36, 10, 39, 36, 0,
+ 0, 0, 36, 7, 40, 36, 8, 41, 36, 0,
+ 3, 0, 4, 0, 5, 0, 0, 32, 42, 33,
+ 42, 0, 5, 42, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 274, 279, 280, 287, 292, 295, 297, 300, 304, 306,
+ 311, 316, 329, 346, 359, 365, 371, 377, 383, 386,
+ 389, 396, 403, 410, 417, 420, 423, 426, 429, 432,
+ 435, 438, 440, 443, 446, 448, 450, 458, 460, 473
+};
+
+static const char * const yytname[] = { "$","error","$undefined.","INT","CHAR",
+"NAME","ERROR","'?'","':'","','","OR","AND","'|'","'^'","'&'","EQUAL","NOTEQUAL",
+"'<'","'>'","LEQ","GEQ","LSH","RSH","'+'","'-'","'*'","'/'","'%'","UNARY","'!'",
+"'~'","'#'","'('","')'","start","exp1","exp","@1","@2","@3","@4","@5","keywords",
+""
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 34, 35, 35, 36, 36, 36, 36, 36, 37, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 38, 36, 39,
+ 36, 40, 41, 36, 36, 36, 36, 42, 42, 42
+};
+
+static const short yyr2[] = { 0,
+ 1, 1, 3, 2, 2, 2, 2, 2, 0, 6,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 0, 4, 0,
+ 4, 0, 0, 7, 1, 1, 1, 0, 4, 2
+};
+
+static const short yydefact[] = { 0,
+ 35, 36, 37, 0, 0, 0, 0, 0, 0, 1,
+ 2, 6, 4, 5, 7, 8, 0, 0, 32, 30,
+ 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 3,
+ 0, 0, 0, 27, 26, 25, 19, 20, 23, 24,
+ 21, 22, 17, 18, 15, 16, 12, 13, 14, 38,
+ 0, 31, 29, 38, 38, 0, 33, 40, 0, 10,
+ 0, 38, 34, 39, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 75,
+ 10, 11, 38, 43, 42, 41, 71, 66
+};
+
+static const short yypact[] = { 12,
+-32768,-32768,-32768, 12, 12, 12, 12, 1, 12, 4,
+ 79,-32768,-32768,-32768,-32768, -21, 31, 12,-32768,-32768,
+-32768, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 30,-32768, 79,
+ 12, 12, 12, 110, 124, 137, 148, 148, 155, 155,
+ 155, 155, 160, 160, -17, -17,-32768,-32768,-32768, 2,
+ 58, 34, 95, 2, 2, 54,-32768,-32768, 55,-32768,
+ 12, 2, 79,-32768, 63, 188,-32768
+};
+
+static const short yypgoto[] = {-32768,
+ 180, -4,-32768,-32768,-32768,-32768,-32768, -60
+};
+
+
+#define YYLAST 189
+
+
+static const short yytable[] = { 12,
+ 13, 14, 15, 68, 69, 16, 64, 35, 36, 37,
+ -9, 74, 18, 40, 1, 2, 3, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 65, 4, 5, 61, 62, 63, 18,
+ 6, 7, 8, 9, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 60, 76, 39, 19, 67, 73, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 19, 70, 72, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 31, 32, 33, 34, 35,
+ 36, 37, 33, 34, 35, 36, 37, 77, 17
+};
+
+static const short yycheck[] = { 4,
+ 5, 6, 7, 64, 65, 5, 5, 25, 26, 27,
+ 32, 72, 9, 18, 3, 4, 5, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 32, 23, 24, 41, 42, 43, 9,
+ 29, 30, 31, 32, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 32, 0, 33, 7, 8, 71, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 7, 33, 33, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 21, 22, 23, 24, 25,
+ 26, 27, 23, 24, 25, 26, 27, 0, 9
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/share/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "/usr/local/share/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+ YYPARSE_PARAM_DECL
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 1:
+#line 275 "cexp.y"
+{ expression_value = yyvsp[0].integer.value; ;
+ break;}
+case 3:
+#line 281 "cexp.y"
+{ if (pedantic)
+ pedwarn ("comma operator in operand of `#if'");
+ yyval.integer = yyvsp[0].integer; ;
+ break;}
+case 4:
+#line 288 "cexp.y"
+{ yyval.integer.value = - yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[0].integer.signedp;
+ if ((yyval.integer.value & yyvsp[0].integer.value & yyval.integer.signedp) < 0)
+ integer_overflow (); ;
+ break;}
+case 5:
+#line 293 "cexp.y"
+{ yyval.integer.value = ! yyvsp[0].integer.value;
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 6:
+#line 296 "cexp.y"
+{ yyval.integer = yyvsp[0].integer; ;
+ break;}
+case 7:
+#line 298 "cexp.y"
+{ yyval.integer.value = ~ yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[0].integer.signedp; ;
+ break;}
+case 8:
+#line 301 "cexp.y"
+{ yyval.integer.value = check_assertion (yyvsp[0].name.address, yyvsp[0].name.length,
+ 0, NULL_PTR);
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 9:
+#line 305 "cexp.y"
+{ keyword_parsing = 1; ;
+ break;}
+case 10:
+#line 307 "cexp.y"
+{ yyval.integer.value = check_assertion (yyvsp[-4].name.address, yyvsp[-4].name.length,
+ 1, yyvsp[-1].keywords);
+ keyword_parsing = 0;
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 11:
+#line 312 "cexp.y"
+{ yyval.integer = yyvsp[-1].integer; ;
+ break;}
+case 12:
+#line 317 "cexp.y"
+{ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp;
+ if (yyval.integer.signedp)
+ {
+ yyval.integer.value = yyvsp[-2].integer.value * yyvsp[0].integer.value;
+ if (yyvsp[-2].integer.value
+ && (yyval.integer.value / yyvsp[-2].integer.value != yyvsp[0].integer.value
+ || (yyval.integer.value & yyvsp[-2].integer.value & yyvsp[0].integer.value) < 0))
+ integer_overflow ();
+ }
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ * yyvsp[0].integer.value); ;
+ break;}
+case 13:
+#line 330 "cexp.y"
+{ if (yyvsp[0].integer.value == 0)
+ {
+ if (!skip_evaluation)
+ error ("division by zero in #if");
+ yyvsp[0].integer.value = 1;
+ }
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp;
+ if (yyval.integer.signedp)
+ {
+ yyval.integer.value = yyvsp[-2].integer.value / yyvsp[0].integer.value;
+ if ((yyval.integer.value & yyvsp[-2].integer.value & yyvsp[0].integer.value) < 0)
+ integer_overflow ();
+ }
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ / yyvsp[0].integer.value); ;
+ break;}
+case 14:
+#line 347 "cexp.y"
+{ if (yyvsp[0].integer.value == 0)
+ {
+ if (!skip_evaluation)
+ error ("division by zero in #if");
+ yyvsp[0].integer.value = 1;
+ }
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp;
+ if (yyval.integer.signedp)
+ yyval.integer.value = yyvsp[-2].integer.value % yyvsp[0].integer.value;
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ % yyvsp[0].integer.value); ;
+ break;}
+case 15:
+#line 360 "cexp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value + yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp;
+ if (overflow_sum_sign (yyvsp[-2].integer.value, yyvsp[0].integer.value,
+ yyval.integer.value, yyval.integer.signedp))
+ integer_overflow (); ;
+ break;}
+case 16:
+#line 366 "cexp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value - yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp;
+ if (overflow_sum_sign (yyval.integer.value, yyvsp[0].integer.value,
+ yyvsp[-2].integer.value, yyval.integer.signedp))
+ integer_overflow (); ;
+ break;}
+case 17:
+#line 372 "cexp.y"
+{ yyval.integer.signedp = yyvsp[-2].integer.signedp;
+ if ((yyvsp[0].integer.value & yyvsp[0].integer.signedp) < 0)
+ yyval.integer.value = right_shift (&yyvsp[-2].integer, -yyvsp[0].integer.value);
+ else
+ yyval.integer.value = left_shift (&yyvsp[-2].integer, yyvsp[0].integer.value); ;
+ break;}
+case 18:
+#line 378 "cexp.y"
+{ yyval.integer.signedp = yyvsp[-2].integer.signedp;
+ if ((yyvsp[0].integer.value & yyvsp[0].integer.signedp) < 0)
+ yyval.integer.value = left_shift (&yyvsp[-2].integer, -yyvsp[0].integer.value);
+ else
+ yyval.integer.value = right_shift (&yyvsp[-2].integer, yyvsp[0].integer.value); ;
+ break;}
+case 19:
+#line 384 "cexp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value == yyvsp[0].integer.value);
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 20:
+#line 387 "cexp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value != yyvsp[0].integer.value);
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 21:
+#line 390 "cexp.y"
+{ yyval.integer.signedp = SIGNED;
+ if (yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp)
+ yyval.integer.value = yyvsp[-2].integer.value <= yyvsp[0].integer.value;
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ <= yyvsp[0].integer.value); ;
+ break;}
+case 22:
+#line 397 "cexp.y"
+{ yyval.integer.signedp = SIGNED;
+ if (yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp)
+ yyval.integer.value = yyvsp[-2].integer.value >= yyvsp[0].integer.value;
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ >= yyvsp[0].integer.value); ;
+ break;}
+case 23:
+#line 404 "cexp.y"
+{ yyval.integer.signedp = SIGNED;
+ if (yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp)
+ yyval.integer.value = yyvsp[-2].integer.value < yyvsp[0].integer.value;
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ < yyvsp[0].integer.value); ;
+ break;}
+case 24:
+#line 411 "cexp.y"
+{ yyval.integer.signedp = SIGNED;
+ if (yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp)
+ yyval.integer.value = yyvsp[-2].integer.value > yyvsp[0].integer.value;
+ else
+ yyval.integer.value = ((unsigned HOST_WIDE_INT) yyvsp[-2].integer.value
+ > yyvsp[0].integer.value); ;
+ break;}
+case 25:
+#line 418 "cexp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value & yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp; ;
+ break;}
+case 26:
+#line 421 "cexp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value ^ yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp; ;
+ break;}
+case 27:
+#line 424 "cexp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value | yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[-2].integer.signedp & yyvsp[0].integer.signedp; ;
+ break;}
+case 28:
+#line 427 "cexp.y"
+{ skip_evaluation += !yyvsp[-1].integer.value; ;
+ break;}
+case 29:
+#line 429 "cexp.y"
+{ skip_evaluation -= !yyvsp[-3].integer.value;
+ yyval.integer.value = (yyvsp[-3].integer.value && yyvsp[0].integer.value);
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 30:
+#line 433 "cexp.y"
+{ skip_evaluation += !!yyvsp[-1].integer.value; ;
+ break;}
+case 31:
+#line 435 "cexp.y"
+{ skip_evaluation -= !!yyvsp[-3].integer.value;
+ yyval.integer.value = (yyvsp[-3].integer.value || yyvsp[0].integer.value);
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 32:
+#line 439 "cexp.y"
+{ skip_evaluation += !yyvsp[-1].integer.value; ;
+ break;}
+case 33:
+#line 441 "cexp.y"
+{ skip_evaluation += !!yyvsp[-4].integer.value - !yyvsp[-4].integer.value; ;
+ break;}
+case 34:
+#line 443 "cexp.y"
+{ skip_evaluation -= !!yyvsp[-6].integer.value;
+ yyval.integer.value = yyvsp[-6].integer.value ? yyvsp[-3].integer.value : yyvsp[0].integer.value;
+ yyval.integer.signedp = yyvsp[-3].integer.signedp & yyvsp[0].integer.signedp; ;
+ break;}
+case 35:
+#line 447 "cexp.y"
+{ yyval.integer = yylval.integer; ;
+ break;}
+case 36:
+#line 449 "cexp.y"
+{ yyval.integer = yylval.integer; ;
+ break;}
+case 37:
+#line 451 "cexp.y"
+{ if (warn_undef && !skip_evaluation)
+ warning ("`%.*s' is not defined",
+ yyvsp[0].name.length, yyvsp[0].name.address);
+ yyval.integer.value = 0;
+ yyval.integer.signedp = SIGNED; ;
+ break;}
+case 38:
+#line 459 "cexp.y"
+{ yyval.keywords = 0; ;
+ break;}
+case 39:
+#line 461 "cexp.y"
+{ struct arglist *temp;
+ yyval.keywords = (struct arglist *) xmalloc (sizeof (struct arglist));
+ yyval.keywords->next = yyvsp[-2].keywords;
+ yyval.keywords->name = (U_CHAR *) "(";
+ yyval.keywords->length = 1;
+ temp = yyval.keywords;
+ while (temp != 0 && temp->next != 0)
+ temp = temp->next;
+ temp->next = (struct arglist *) xmalloc (sizeof (struct arglist));
+ temp->next->next = yyvsp[0].keywords;
+ temp->next->name = (U_CHAR *) ")";
+ temp->next->length = 1; ;
+ break;}
+case 40:
+#line 474 "cexp.y"
+{ yyval.keywords = (struct arglist *) xmalloc (sizeof (struct arglist));
+ yyval.keywords->name = yyvsp[-1].name.address;
+ yyval.keywords->length = yyvsp[-1].name.length;
+ yyval.keywords->next = yyvsp[0].keywords; ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 487 "/usr/local/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 479 "cexp.y"
+
+
+/* During parsing of a C expression, the pointer to the next character
+ is in this variable. */
+
+static char *lexptr;
+
+/* Take care of parsing a number (anything that starts with a digit).
+ Set yylval and return the token type; update lexptr.
+ LEN is the number of characters in it. */
+
+/* maybe needs to actually deal with floating point numbers */
+
+static int
+parse_number (olen)
+ int olen;
+{
+ register char *p = lexptr;
+ register int c;
+ register unsigned HOST_WIDE_INT n = 0, nd, max_over_base;
+ register int base = 10;
+ register int len = olen;
+ register int overflow = 0;
+ register int digit, largest_digit = 0;
+ int spec_long = 0;
+
+ yylval.integer.signedp = SIGNED;
+
+ if (*p == '0') {
+ base = 8;
+ if (len >= 3 && (p[1] == 'x' || p[1] == 'X')) {
+ p += 2;
+ base = 16;
+ len -= 2;
+ }
+ }
+
+ max_over_base = (unsigned HOST_WIDE_INT) -1 / base;
+
+ for (; len > 0; len--) {
+ c = *p++;
+
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (base == 16 && c >= 'a' && c <= 'f')
+ digit = c - 'a' + 10;
+ else if (base == 16 && c >= 'A' && c <= 'F')
+ digit = c - 'A' + 10;
+ else {
+ /* `l' means long, and `u' means unsigned. */
+ while (1) {
+ if (c == 'l' || c == 'L')
+ {
+ if (!pedantic < spec_long)
+ yyerror ("too many `l's in integer constant");
+ spec_long++;
+ }
+ else if (c == 'u' || c == 'U')
+ {
+ if (! yylval.integer.signedp)
+ yyerror ("two `u's in integer constant");
+ yylval.integer.signedp = UNSIGNED;
+ }
+ else {
+ if (c == '.' || c == 'e' || c == 'E' || c == 'p' || c == 'P')
+ yyerror ("Floating point numbers not allowed in #if expressions");
+ else {
+ char *buf = (char *) alloca (p - lexptr + 40);
+ sprintf (buf, "missing white space after number `%.*s'",
+ (int) (p - lexptr - 1), lexptr);
+ yyerror (buf);
+ }
+ }
+
+ if (--len == 0)
+ break;
+ c = *p++;
+ }
+ /* Don't look for any more digits after the suffixes. */
+ break;
+ }
+ if (largest_digit < digit)
+ largest_digit = digit;
+ nd = n * base + digit;
+ overflow |= (max_over_base < n) | (nd < n);
+ n = nd;
+ }
+
+ if (base <= largest_digit)
+ pedwarn ("integer constant contains digits beyond the radix");
+
+ if (overflow)
+ pedwarn ("integer constant out of range");
+
+ /* If too big to be signed, consider it unsigned. */
+ if (((HOST_WIDE_INT) n & yylval.integer.signedp) < 0)
+ {
+ if (base == 10)
+ warning ("integer constant is so large that it is unsigned");
+ yylval.integer.signedp = UNSIGNED;
+ }
+
+ lexptr = p;
+ yylval.integer.value = n;
+ return INT;
+}
+
+struct token {
+ char *operator;
+ int token;
+};
+
+static struct token tokentab2[] = {
+ {"&&", AND},
+ {"||", OR},
+ {"<<", LSH},
+ {">>", RSH},
+ {"==", EQUAL},
+ {"!=", NOTEQUAL},
+ {"<=", LEQ},
+ {">=", GEQ},
+ {"++", ERROR},
+ {"--", ERROR},
+ {NULL, ERROR}
+};
+
+/* Read one token, getting characters through lexptr. */
+
+static int
+yylex ()
+{
+ register int c;
+ register int namelen;
+ register unsigned char *tokstart;
+ register struct token *toktab;
+ int wide_flag;
+ HOST_WIDE_INT mask;
+
+ retry:
+
+ tokstart = (unsigned char *) lexptr;
+ c = *tokstart;
+ /* See if it is a special token of length 2. */
+ if (! keyword_parsing)
+ for (toktab = tokentab2; toktab->operator != NULL; toktab++)
+ if (c == *toktab->operator && tokstart[1] == toktab->operator[1]) {
+ lexptr += 2;
+ if (toktab->token == ERROR)
+ {
+ char *buf = (char *) alloca (40);
+ sprintf (buf, "`%s' not allowed in operand of `#if'", toktab->operator);
+ yyerror (buf);
+ }
+ return toktab->token;
+ }
+
+ switch (c) {
+ case '\n':
+ return 0;
+
+ case ' ':
+ case '\t':
+ case '\r':
+ lexptr++;
+ goto retry;
+
+ case 'L':
+ /* Capital L may start a wide-string or wide-character constant. */
+ if (lexptr[1] == '\'')
+ {
+ lexptr++;
+ wide_flag = 1;
+ mask = MAX_WCHAR_TYPE_MASK;
+ goto char_constant;
+ }
+ if (lexptr[1] == '"')
+ {
+ lexptr++;
+ wide_flag = 1;
+ mask = MAX_WCHAR_TYPE_MASK;
+ goto string_constant;
+ }
+ break;
+
+ case '\'':
+ wide_flag = 0;
+ mask = MAX_CHAR_TYPE_MASK;
+ char_constant:
+ lexptr++;
+ if (keyword_parsing) {
+ char *start_ptr = lexptr - 1;
+ while (1) {
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr, mask);
+ else if (c == '\'')
+ break;
+ }
+ yylval.name.address = tokstart;
+ yylval.name.length = lexptr - start_ptr;
+ return NAME;
+ }
+
+ /* This code for reading a character constant
+ handles multicharacter constants and wide characters.
+ It is mostly copied from c-lex.c. */
+ {
+ register HOST_WIDE_INT result = 0;
+ register num_chars = 0;
+ unsigned width = MAX_CHAR_TYPE_SIZE;
+ int max_chars;
+ char *token_buffer;
+
+ if (wide_flag)
+ {
+ width = MAX_WCHAR_TYPE_SIZE;
+#ifdef MULTIBYTE_CHARS
+ max_chars = MB_CUR_MAX;
+#else
+ max_chars = 1;
+#endif
+ }
+ else
+ max_chars = MAX_LONG_TYPE_SIZE / width;
+
+ token_buffer = (char *) alloca (max_chars + 1);
+
+ while (1)
+ {
+ c = *lexptr++;
+
+ if (c == '\'' || c == EOF)
+ break;
+
+ if (c == '\\')
+ {
+ c = parse_escape (&lexptr, mask);
+ }
+
+ num_chars++;
+
+ /* Merge character into result; ignore excess chars. */
+ if (num_chars <= max_chars)
+ {
+ if (width < HOST_BITS_PER_WIDE_INT)
+ result = (result << width) | c;
+ else
+ result = c;
+ token_buffer[num_chars - 1] = c;
+ }
+ }
+
+ token_buffer[num_chars] = 0;
+
+ if (c != '\'')
+ error ("malformatted character constant");
+ else if (num_chars == 0)
+ error ("empty character constant");
+ else if (num_chars > max_chars)
+ {
+ num_chars = max_chars;
+ error ("character constant too long");
+ }
+ else if (num_chars != 1 && ! traditional)
+ warning ("multi-character character constant");
+
+ /* If char type is signed, sign-extend the constant. */
+ if (! wide_flag)
+ {
+ int num_bits = num_chars * width;
+
+ if (lookup ((U_CHAR *) "__CHAR_UNSIGNED__",
+ sizeof ("__CHAR_UNSIGNED__") - 1, -1)
+ || ((result >> (num_bits - 1)) & 1) == 0)
+ yylval.integer.value
+ = result & (~ (unsigned HOST_WIDE_INT) 0
+ >> (HOST_BITS_PER_WIDE_INT - num_bits));
+ else
+ yylval.integer.value
+ = result | ~(~ (unsigned HOST_WIDE_INT) 0
+ >> (HOST_BITS_PER_WIDE_INT - num_bits));
+ }
+ else
+ {
+#ifdef MULTIBYTE_CHARS
+ /* Set the initial shift state and convert the next sequence. */
+ result = 0;
+ /* In all locales L'\0' is zero and mbtowc will return zero,
+ so don't use it. */
+ if (num_chars > 1
+ || (num_chars == 1 && token_buffer[0] != '\0'))
+ {
+ wchar_t wc;
+ (void) mbtowc (NULL_PTR, NULL_PTR, 0);
+ if (mbtowc (& wc, token_buffer, num_chars) == num_chars)
+ result = wc;
+ else
+ pedwarn ("Ignoring invalid multibyte character");
+ }
+#endif
+ yylval.integer.value = result;
+ }
+ }
+
+ /* This is always a signed type. */
+ yylval.integer.signedp = SIGNED;
+
+ return CHAR;
+
+ /* some of these chars are invalid in constant expressions;
+ maybe do something about them later */
+ case '/':
+ case '+':
+ case '-':
+ case '*':
+ case '%':
+ case '|':
+ case '&':
+ case '^':
+ case '~':
+ case '!':
+ case '@':
+ case '<':
+ case '>':
+ case '[':
+ case ']':
+ case '.':
+ case '?':
+ case ':':
+ case '=':
+ case '{':
+ case '}':
+ case ',':
+ case '#':
+ if (keyword_parsing)
+ break;
+ case '(':
+ case ')':
+ lexptr++;
+ return c;
+
+ case '"':
+ mask = MAX_CHAR_TYPE_MASK;
+ string_constant:
+ if (keyword_parsing) {
+ char *start_ptr = lexptr;
+ lexptr++;
+ while (1) {
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr, mask);
+ else if (c == '"')
+ break;
+ }
+ yylval.name.address = tokstart;
+ yylval.name.length = lexptr - start_ptr;
+ return NAME;
+ }
+ yyerror ("string constants not allowed in #if expressions");
+ return ERROR;
+ }
+
+ if (c >= '0' && c <= '9' && !keyword_parsing) {
+ /* It's a number */
+ for (namelen = 1; ; namelen++) {
+ int d = tokstart[namelen];
+ if (! ((is_idchar[d] || d == '.')
+ || ((d == '-' || d == '+')
+ && (c == 'e' || c == 'E'
+ || ((c == 'p' || c == 'P') && ! c89))
+ && ! traditional)))
+ break;
+ c = d;
+ }
+ return parse_number (namelen);
+ }
+
+ /* It is a name. See how long it is. */
+
+ if (keyword_parsing) {
+ for (namelen = 0;; namelen++) {
+ if (is_space[tokstart[namelen]])
+ break;
+ if (tokstart[namelen] == '(' || tokstart[namelen] == ')')
+ break;
+ if (tokstart[namelen] == '"' || tokstart[namelen] == '\'')
+ break;
+ }
+ } else {
+ if (!is_idstart[c]) {
+ yyerror ("Invalid token in expression");
+ return ERROR;
+ }
+
+ for (namelen = 0; is_idchar[tokstart[namelen]]; namelen++)
+ ;
+ }
+
+ lexptr += namelen;
+ yylval.name.address = tokstart;
+ yylval.name.length = namelen;
+ return NAME;
+}
+
+
+/* Parse a C escape sequence. STRING_PTR points to a variable
+ containing a pointer to the string to parse. That pointer
+ is updated past the characters we use. The value of the
+ escape sequence is returned.
+
+ RESULT_MASK is used to mask out the result;
+ an error is reported if bits are lost thereby.
+
+ A negative value means the sequence \ newline was seen,
+ which is supposed to be equivalent to nothing at all.
+
+ If \ is followed by a null character, we return a negative
+ value and leave the string pointer pointing at the null character.
+
+ If \ is followed by 000, we return 0 and leave the string pointer
+ after the zeros. A value of 0 does not mean end of string. */
+
+HOST_WIDE_INT
+parse_escape (string_ptr, result_mask)
+ char **string_ptr;
+ HOST_WIDE_INT result_mask;
+{
+ register int c = *(*string_ptr)++;
+ switch (c)
+ {
+ case 'a':
+ return TARGET_BELL;
+ case 'b':
+ return TARGET_BS;
+ case 'e':
+ case 'E':
+ if (pedantic)
+ pedwarn ("non-ANSI-standard escape sequence, `\\%c'", c);
+ return 033;
+ case 'f':
+ return TARGET_FF;
+ case 'n':
+ return TARGET_NEWLINE;
+ case 'r':
+ return TARGET_CR;
+ case 't':
+ return TARGET_TAB;
+ case 'v':
+ return TARGET_VT;
+ case '\n':
+ return -2;
+ case 0:
+ (*string_ptr)--;
+ return 0;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ register HOST_WIDE_INT i = c - '0';
+ register int count = 0;
+ while (++count < 3)
+ {
+ c = *(*string_ptr)++;
+ if (c >= '0' && c <= '7')
+ i = (i << 3) + c - '0';
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ }
+ if (i != (i & result_mask))
+ {
+ i &= result_mask;
+ pedwarn ("octal escape sequence out of range");
+ }
+ return i;
+ }
+ case 'x':
+ {
+ register unsigned HOST_WIDE_INT i = 0, overflow = 0;
+ register int digits_found = 0, digit;
+ for (;;)
+ {
+ c = *(*string_ptr)++;
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (c >= 'a' && c <= 'f')
+ digit = c - 'a' + 10;
+ else if (c >= 'A' && c <= 'F')
+ digit = c - 'A' + 10;
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ overflow |= i ^ (i << 4 >> 4);
+ i = (i << 4) + digit;
+ digits_found = 1;
+ }
+ if (!digits_found)
+ yyerror ("\\x used with no following hex digits");
+ if (overflow | (i != (i & result_mask)))
+ {
+ i &= result_mask;
+ pedwarn ("hex escape sequence out of range");
+ }
+ return i;
+ }
+ default:
+ return c;
+ }
+}
+
+static void
+yyerror (s)
+ char *s;
+{
+ error ("%s", s);
+ skip_evaluation = 0;
+ longjmp (parse_return_error, 1);
+}
+
+static void
+integer_overflow ()
+{
+ if (!skip_evaluation && pedantic)
+ pedwarn ("integer overflow in preprocessor expression");
+}
+
+static HOST_WIDE_INT
+left_shift (a, b)
+ struct constant *a;
+ unsigned HOST_WIDE_INT b;
+{
+ /* It's unclear from the C standard whether shifts can overflow.
+ The following code ignores overflow; perhaps a C standard
+ interpretation ruling is needed. */
+ if (b >= HOST_BITS_PER_WIDE_INT)
+ return 0;
+ else
+ return (unsigned HOST_WIDE_INT) a->value << b;
+}
+
+static HOST_WIDE_INT
+right_shift (a, b)
+ struct constant *a;
+ unsigned HOST_WIDE_INT b;
+{
+ if (b >= HOST_BITS_PER_WIDE_INT)
+ return a->signedp ? a->value >> (HOST_BITS_PER_WIDE_INT - 1) : 0;
+ else if (a->signedp)
+ return a->value >> b;
+ else
+ return (unsigned HOST_WIDE_INT) a->value >> b;
+}
+
+/* This page contains the entry point to this file. */
+
+/* Parse STRING as an expression, and complain if this fails
+ to use up all of the contents of STRING. */
+/* STRING may contain '\0' bytes; it is terminated by the first '\n'
+ outside a string constant, so that we can diagnose '\0' properly. */
+/* We do not support C comments. They should be removed before
+ this function is called. */
+
+HOST_WIDE_INT
+parse_c_expression (string)
+ char *string;
+{
+ lexptr = string;
+
+ /* if there is some sort of scanning error, just return 0 and assume
+ the parsing routine has printed an error message somewhere.
+ there is surely a better thing to do than this. */
+ if (setjmp (parse_return_error))
+ return 0;
+
+ if (yyparse () != 0)
+ abort ();
+
+ if (*lexptr != '\n')
+ error ("Junk after end of expression.");
+
+ return expression_value; /* set by yyparse () */
+}
+
+#ifdef TEST_EXP_READER
+
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+int pedantic;
+int traditional;
+
+int main PROTO((int, char **));
+static void initialize_random_junk PROTO((void));
+
+/* Main program for testing purposes. */
+int
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ int n, c;
+ char buf[1024];
+
+ pedantic = 1 < argc;
+ traditional = 2 < argc;
+#if YYDEBUG
+ yydebug = 3 < argc;
+#endif
+ initialize_random_junk ();
+
+ for (;;) {
+ printf ("enter expression: ");
+ n = 0;
+ while ((buf[n] = c = getchar ()) != '\n' && c != EOF)
+ n++;
+ if (c == EOF)
+ break;
+ printf ("parser returned %ld\n", (long) parse_c_expression (buf));
+ }
+
+ return 0;
+}
+
+/* table to tell if char can be part of a C identifier. */
+unsigned char is_idchar[256];
+/* table to tell if char can be first char of a c identifier. */
+unsigned char is_idstart[256];
+/* table to tell if c is horizontal or vertical space. */
+unsigned char is_space[256];
+
+/*
+ * initialize random junk in the hash table and maybe other places
+ */
+static void
+initialize_random_junk ()
+{
+ register int i;
+
+ /*
+ * Set up is_idchar and is_idstart tables. These should be
+ * faster than saying (is_alpha (c) || c == '_'), etc.
+ * Must do set up these things before calling any routines tthat
+ * refer to them.
+ */
+ for (i = 'a'; i <= 'z'; i++) {
+ ++is_idchar[i - 'a' + 'A'];
+ ++is_idchar[i];
+ ++is_idstart[i - 'a' + 'A'];
+ ++is_idstart[i];
+ }
+ for (i = '0'; i <= '9'; i++)
+ ++is_idchar[i];
+ ++is_idchar['_'];
+ ++is_idstart['_'];
+ ++is_idchar['$'];
+ ++is_idstart['$'];
+
+ ++is_space[' '];
+ ++is_space['\t'];
+ ++is_space['\v'];
+ ++is_space['\f'];
+ ++is_space['\n'];
+ ++is_space['\r'];
+}
+
+void
+error (PRINTF_ALIST (msg))
+ PRINTF_DCL (msg)
+{
+ va_list args;
+
+ VA_START (args, msg);
+ fprintf (stderr, "error: ");
+ vfprintf (stderr, msg, args);
+ fprintf (stderr, "\n");
+ va_end (args);
+}
+
+void
+pedwarn (PRINTF_ALIST (msg))
+ PRINTF_DCL (msg)
+{
+ va_list args;
+
+ VA_START (args, msg);
+ fprintf (stderr, "pedwarn: ");
+ vfprintf (stderr, msg, args);
+ fprintf (stderr, "\n");
+ va_end (args);
+}
+
+void
+warning (PRINTF_ALIST (msg))
+ PRINTF_DCL (msg)
+{
+ va_list args;
+
+ VA_START (args, msg);
+ fprintf (stderr, "warning: ");
+ vfprintf (stderr, msg, args);
+ fprintf (stderr, "\n");
+ va_end (args);
+}
+
+int
+check_assertion (name, sym_length, tokens_specified, tokens)
+ U_CHAR *name;
+ int sym_length;
+ int tokens_specified;
+ struct arglist *tokens;
+{
+ return 0;
+}
+
+struct hashnode *
+lookup (name, len, hash)
+ U_CHAR *name;
+ int len;
+ int hash;
+{
+ return (DEFAULT_SIGNED_CHAR) ? 0 : ((struct hashnode *) -1);
+}
+
+GENERIC_PTR
+xmalloc (size)
+ size_t size;
+{
+ return (GENERIC_PTR) malloc (size);
+}
+#endif
diff --git a/gcc/config.in b/gcc/config.in
new file mode 100644
index 00000000000..8a04e60e647
--- /dev/null
+++ b/gcc/config.in
@@ -0,0 +1,32 @@
+/* config.in. Generated automatically from configure.in by autoheader. */
+
+/* Include the old config.h as config2.h to simplify the transition
+ to autoconf. */
+#include "config2.h"
+
+/* Whether malloc must be declared even if <stdlib.h> is included. */
+#undef NEED_DECLARATION_MALLOC
+
+/* Whether realloc must be declared even if <stdlib.h> is included. */
+#undef NEED_DECLARATION_REALLOC
+
+/* Whether free must be declared even if <stdlib.h> is included. */
+#undef NEED_DECLARATION_FREE
+
+/* Define if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
diff --git a/gcc/config/a29k/xm-unix.h b/gcc/config/a29k/xm-unix.h
new file mode 100644
index 00000000000..206d8fdc41d
--- /dev/null
+++ b/gcc/config/a29k/xm-unix.h
@@ -0,0 +1,43 @@
+/* Configuration for GNU C-compiler for AMD Am29000 processor.
+ Copyright (C) 1987, 1988, 1993 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* #defines that need visibility everywhere. */
+#define FALSE 0
+#define TRUE 1
+
+/* This describes the machine the compiler is hosted on. */
+#define HOST_BITS_PER_CHAR 8
+#define HOST_BITS_PER_SHORT 16
+#define HOST_BITS_PER_INT 32
+#define HOST_BITS_PER_LONG 32
+#define HOST_BITS_PER_LONGLONG 64
+
+#define HOST_WORDS_BIG_ENDIAN
+
+/* target machine dependencies.
+ tm.h is a symbolic link to the actual target specific file. */
+#include "tm.h"
+
+/* Arguments to use with `exit'. */
+#define SUCCESS_EXIT_CODE 0
+#define FATAL_EXIT_CODE 33
+
+/* Ultra is V7, which is closest to USG. */
+#define USG
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 831101e298d..3109b5c2696 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -267,6 +267,23 @@ extern void override_options ();
/* Define to enable software floating point emulation. */
#define REAL_ARITHMETIC
+/* The following #defines are used when compiling the routines in
+ libgcc1.c. Since the Alpha calling conventions require single
+ precision floats to be passed in the floating-point registers
+ (rather than in the general registers) we have to build the
+ libgcc1.c routines in such a way that they know the actual types
+ of their formal arguments and the actual types of their return
+ values. Otherwise, gcc will generate calls to the libgcc1.c
+ routines, passing arguments in the floating-point registers,
+ but the libgcc1.c routines will expect their arguments on the
+ stack (where the Alpha calling conventions require structs &
+ unions to be passed). */
+
+#define FLOAT_VALUE_TYPE double
+#define INTIFY(FLOATVAL) (FLOATVAL)
+#define FLOATIFY(INTVAL) (INTVAL)
+#define FLOAT_ARG_TYPE double
+
/* Define the size of `int'. The default is the same as the word size. */
#define INT_TYPE_SIZE 32
diff --git a/gcc/config/alpha/xm-linux.h b/gcc/config/alpha/xm-linux.h
new file mode 100644
index 00000000000..9426c4ee5a7
--- /dev/null
+++ b/gcc/config/alpha/xm-linux.h
@@ -0,0 +1,3 @@
+#define HAVE_STRERROR
+#define DONT_DECLARE_SYS_SIGLIST
+#define USE_BFD
diff --git a/gcc/config/arm/xm-linux.h b/gcc/config/arm/xm-linux.h
new file mode 100644
index 00000000000..955379dab16
--- /dev/null
+++ b/gcc/config/arm/xm-linux.h
@@ -0,0 +1,24 @@
+/* Configuration for GCC for Intel i386 running Linux.
+ Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
+ Contributed by H.J. Lu (hjl@nynexst.com)
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include <arm/xm-arm.h>
+#include <xm-linux.h>
+
diff --git a/gcc/config/arm/xm-netbsd.h b/gcc/config/arm/xm-netbsd.h
new file mode 100644
index 00000000000..1c7a656486c
--- /dev/null
+++ b/gcc/config/arm/xm-netbsd.h
@@ -0,0 +1,10 @@
+/* Configuration for GCC for ARM running NetBSD as host. */
+
+#include <arm/xm-arm.h>
+
+/* xm-netbsd.h defines this */
+#ifdef HAVE_VPRINTF
+#undef HAVE_VPRINTF
+#endif
+
+#include <xm-netbsd.h>
diff --git a/gcc/config/i386/dgux.h b/gcc/config/i386/dgux.h
index 469ce14ddc8..4a923fca679 100644
--- a/gcc/config/i386/dgux.h
+++ b/gcc/config/i386/dgux.h
@@ -25,7 +25,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "i386/sysv4.h"
#ifndef VERSION_INFO2
-#define VERSION_INFO2 "$Revision: 1.5 $"
+#define VERSION_INFO2 "$Revision: 1.1 $"
#endif
#ifndef VERSION_STRING
diff --git a/gcc/config/i386/xm-bsd386.h b/gcc/config/i386/xm-bsd386.h
new file mode 100644
index 00000000000..7a823b96032
--- /dev/null
+++ b/gcc/config/i386/xm-bsd386.h
@@ -0,0 +1,11 @@
+/* Configuration for GCC for Intel i386 running BSDI's BSD/386 as host. */
+
+#include "i386/xm-i386.h"
+
+#define HAVE_STRERROR
+
+/* We have _sys_siglist, but the declaration in <signal.h> conflicts with
+ the declarations in collect2.c so disable the declarations
+ in those files. */
+
+#define DONT_DECLARE_SYS_SIGLIST
diff --git a/gcc/config/i386/xm-dgux.h b/gcc/config/i386/xm-dgux.h
new file mode 100644
index 00000000000..5bdb9be0ebb
--- /dev/null
+++ b/gcc/config/i386/xm-dgux.h
@@ -0,0 +1,12 @@
+
+/* Configuration for GCC for Intel i386 running DG/ux */
+
+/* looks just like sysv4 for now */
+
+#include "i386/xm-i386.h"
+#include "xm-svr4.h"
+
+/* If not compiled with GNU C, use the portable alloca. */
+#ifndef __GNUC__
+#define USE_C_ALLOCA
+#endif
diff --git a/gcc/config/i386/xm-freebsd.h b/gcc/config/i386/xm-freebsd.h
new file mode 100644
index 00000000000..007a609f263
--- /dev/null
+++ b/gcc/config/i386/xm-freebsd.h
@@ -0,0 +1,4 @@
+/* Configuration for GCC for Intel i386 running FreeBSD as host. */
+
+#include <i386/xm-i386.h>
+#include <xm-freebsd.h>
diff --git a/gcc/config/i386/xm-gnu.h b/gcc/config/i386/xm-gnu.h
new file mode 100644
index 00000000000..0b5985f9065
--- /dev/null
+++ b/gcc/config/i386/xm-gnu.h
@@ -0,0 +1,5 @@
+/* Configuration for GCC for Intel i386 running GNU as host. */
+
+#include <i386/xm-i386.h>
+#include <xm-gnu.h>
+
diff --git a/gcc/config/i386/xm-linux.h b/gcc/config/i386/xm-linux.h
new file mode 100644
index 00000000000..42f097ddc6c
--- /dev/null
+++ b/gcc/config/i386/xm-linux.h
@@ -0,0 +1,24 @@
+/* Configuration for GCC for Intel i386 running Linux.
+ Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
+ Contributed by H.J. Lu (hjl@nynexst.com)
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include <i386/xm-i386.h>
+#include <xm-linux.h>
+
diff --git a/gcc/config/i386/xm-netbsd.h b/gcc/config/i386/xm-netbsd.h
new file mode 100644
index 00000000000..3a9f3241990
--- /dev/null
+++ b/gcc/config/i386/xm-netbsd.h
@@ -0,0 +1,4 @@
+/* Configuration for GCC for Intel i386 running NetBSD as host. */
+
+#include <i386/xm-i386.h>
+#include <xm-netbsd.h>
diff --git a/gcc/config/i386/xm-sun.h b/gcc/config/i386/xm-sun.h
new file mode 100644
index 00000000000..d2e714ecf5c
--- /dev/null
+++ b/gcc/config/i386/xm-sun.h
@@ -0,0 +1,27 @@
+/* Configuration for GNU C-compiler for Intel 80386 running SunOS 4.0.
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define USG
+
+#include "i386/xm-i386.h"
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
diff --git a/gcc/config/i386/xm-sysv3.h b/gcc/config/i386/xm-sysv3.h
new file mode 100644
index 00000000000..72078bb1feb
--- /dev/null
+++ b/gcc/config/i386/xm-sysv3.h
@@ -0,0 +1,4 @@
+/* Configuration for GCC for Intel i386 running System V Release 3. */
+
+#include "i386/xm-i386.h"
+#include "xm-svr3.h"
diff --git a/gcc/config/i386/xm-winnt.h b/gcc/config/i386/xm-winnt.h
new file mode 100644
index 00000000000..d36d2cdb11e
--- /dev/null
+++ b/gcc/config/i386/xm-winnt.h
@@ -0,0 +1,24 @@
+/* Configuration for GNU compiler
+ for an Intel i386 or later processor running Windows NT 3.x.
+ Copyright (C) 1994 Free Software Foundation, Inc.
+ Contributed by Douglas B. Rupp (drupp@cs.washington.edu)
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "winnt/xm-winnt.h"
+#include "i386/xm-i386.h"
diff --git a/gcc/config/i860/i860.h b/gcc/config/i860/i860.h
index 29a42cca316..47eb7dcfd1d 100644
--- a/gcc/config/i860/i860.h
+++ b/gcc/config/i860/i860.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler, for Intel 860.
- Copyright (C) 1989, 1991, 1993, 1995, 1996 Free Software Foundation, Inc.
- Hacked substantially by Ron Guilmette (rfg@segfault.us.com) to cater to
+ Copyright (C) 1989, 91, 93, 95, 96, 1997 Free Software Foundation, Inc.
+ Hacked substantially by Ron Guilmette (rfg@monkeys.com) to cater to
the whims of the System V Release 4 assembler.
This file is part of GNU CC.
@@ -1369,7 +1369,7 @@ extern unsigned long sfmode_constant_to_ulong ();
stack (where the i860 calling conventions require structs &
unions to be passed). */
-#define FLOAT_TYPE_VALUE float
+#define FLOAT_VALUE_TYPE float
#define INTIFY(FLOATVAL) (FLOATVAL)
#define FLOATIFY(INTVAL) (INTVAL)
#define FLOAT_ARG_TYPE float
diff --git a/gcc/config/i860/xm-fx2800.h b/gcc/config/i860/xm-fx2800.h
new file mode 100644
index 00000000000..f1ab6d8c9c5
--- /dev/null
+++ b/gcc/config/i860/xm-fx2800.h
@@ -0,0 +1,7 @@
+/* Alliant FX/2800 running Concentrix 2.x. */
+
+/* vfprintf is not present prior to Concentrix 2.2. Unfortunately, there
+ does not seem to be a cpp symbol that identifies OS revision. Undefine
+ the following if running 2.1 or older. */
+
+#define HAVE_VPRINTF
diff --git a/gcc/config/m68k/mot3300-crt0.S b/gcc/config/m68k/mot3300-crt0.S
index c86e56b719b..e9fc1d463b5 100644
--- a/gcc/config/m68k/mot3300-crt0.S
+++ b/gcc/config/m68k/mot3300-crt0.S
@@ -97,7 +97,7 @@ LOCAL_LABEL(isatty):
#ifdef STRING
SECTION (.comment)
- STRING ("$Id: crt0.S,v 1.6 1995/12/07 17:17:47 manfred Exp $\n")
+ STRING ("$Id: mot3300-crt0.S,v 1.1 1997/08/11 15:57:32 law Exp $\n")
STRING ("Contributed by manfred@lts.sel.alcatel.de (Manfred Hollstein, Germany)\n")
#else
byte 'C,'o,'n,'t,'r,'i,'b,'u,'t,'e,'d,' ,'b,'y
diff --git a/gcc/config/m68k/mot3300Mcrt0.S b/gcc/config/m68k/mot3300Mcrt0.S
index 52561e630d1..acb317c92fe 100644
--- a/gcc/config/m68k/mot3300Mcrt0.S
+++ b/gcc/config/m68k/mot3300Mcrt0.S
@@ -143,7 +143,7 @@ LOCAL_LABEL(endofstart):
#ifdef STRING
SECTION (.comment)
- STRING ("$Id: mcrt0.S,v 1.5 1995/12/07 17:23:39 manfred Exp $\n")
+ STRING ("$Id: mot3300Mcrt0.S,v 1.1 1997/08/11 15:57:32 law Exp $\n")
STRING ("Contributed by manfred@lts.sel.alcatel.de (Manfred Hollstein, Germany)\n")
#else
byte 'C,'o,'n,'t,'r,'i,'b,'u,'t,'e,'d,' ,'b,'y
diff --git a/gcc/config/m68k/xm-altos3068.h b/gcc/config/m68k/xm-altos3068.h
new file mode 100644
index 00000000000..294f5645b5e
--- /dev/null
+++ b/gcc/config/m68k/xm-altos3068.h
@@ -0,0 +1,7 @@
+#define USG
+
+#include "m68k/xm-m68k.h"
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
diff --git a/gcc/config/m68k/xm-amix.h b/gcc/config/m68k/xm-amix.h
new file mode 100644
index 00000000000..69b4bd17c74
--- /dev/null
+++ b/gcc/config/m68k/xm-amix.h
@@ -0,0 +1,47 @@
+/* Definitions of host machine for GNU compiler.
+ Commodore Amiga A3000UX version.
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "m68k/xm-m68kv.h" /* Use the System V flavor of m68k host */
+
+#define HAVE_VPRINTF /* Host has vprintf() in library */
+#define rindex strrchr
+#define index strchr
+
+/* Define FULL_PROTOTYPES for protoize.c, to get <unistd.h> included.
+ We need this file for things like R_OK, not necessarily prototypes. */
+
+#define FULL_PROTOTYPES
+
+#if defined (__GNUC__) && __GNUC__ == 1
+#define alloca __builtin_alloca
+#endif
+
+#if 0 /* I don't want individual ports to be inconsistent about this.
+ I regard fancy_abort as a half-solution and not the right way
+ to do things. --rms. */
+/* The m88k and mips ports make use of fancy_abort to give possibly helpful
+ abort information rather than just dumping core. They do it in their
+ tm-* files. It seems more logical that this is a characteristic of
+ the host machine and not the target machine, so we do it here. */
+
+#define abort fancy_abort /* give possibly helpful abort info */
+#endif
diff --git a/gcc/config/m68k/xm-aux.h b/gcc/config/m68k/xm-aux.h
new file mode 100644
index 00000000000..5ac1f4654d8
--- /dev/null
+++ b/gcc/config/m68k/xm-aux.h
@@ -0,0 +1,9 @@
+#ifndef USG
+#define USG
+#endif
+
+#ifndef AUX
+#define AUX
+#endif
+
+#include "m68k/xm-m68k.h"
diff --git a/gcc/config/m68k/xm-hp320.h b/gcc/config/m68k/xm-hp320.h
new file mode 100644
index 00000000000..d724c3a26c8
--- /dev/null
+++ b/gcc/config/m68k/xm-hp320.h
@@ -0,0 +1,19 @@
+/* USG is needed to prevent trying to use getrusage and getwd. */
+#define USG
+
+#include "m68k/xm-m68k.h"
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
+#define rindex strrchr
+#define index strchr
+
+/* If compiling with HPUX compiler, we are probably using alloca.c,
+ so help it work right. */
+#ifndef __GNUC__
+#define USE_C_ALLOCA
+#endif
+
+/* Don't try to use sys_siglist. */
+#define NO_SYS_SIGLIST
diff --git a/gcc/config/m68k/xm-linux.h b/gcc/config/m68k/xm-linux.h
new file mode 100644
index 00000000000..3b1050673fa
--- /dev/null
+++ b/gcc/config/m68k/xm-linux.h
@@ -0,0 +1,4 @@
+/* Configuration for GCC for Motorola m68k running Linux. */
+
+#include <m68k/xm-m68k.h>
+#include <xm-linux.h>
diff --git a/gcc/config/m68k/xm-m68kv.h b/gcc/config/m68k/xm-m68kv.h
new file mode 100644
index 00000000000..ce3cf665e81
--- /dev/null
+++ b/gcc/config/m68k/xm-m68kv.h
@@ -0,0 +1,15 @@
+/* Host environment for 68000's running System V. */
+
+#include "m68k/xm-m68k.h"
+
+#define USG
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
+
+#define rindex strrchr
+#define index strchr
+
+#ifndef __GNUC__
+#define USE_C_ALLOCA
+#endif
diff --git a/gcc/config/m68k/xm-netbsd.h b/gcc/config/m68k/xm-netbsd.h
new file mode 100644
index 00000000000..27a33cd5b83
--- /dev/null
+++ b/gcc/config/m68k/xm-netbsd.h
@@ -0,0 +1,4 @@
+/* Configuration for GCC for Motorola 68k running NetBSD as host. */
+
+#include <m68k/xm-m68k.h>
+#include <xm-netbsd.h>
diff --git a/gcc/config/m68k/xm-sun3.h b/gcc/config/m68k/xm-sun3.h
new file mode 100644
index 00000000000..eafe716e93b
--- /dev/null
+++ b/gcc/config/m68k/xm-sun3.h
@@ -0,0 +1,5 @@
+/* Configuration for GCC for Motorola m68k on sun3. */
+
+#define HAVE_POPEN
+
+#include "m68k/xm-m68k.h"
diff --git a/gcc/config/m68k/xm-tower.h b/gcc/config/m68k/xm-tower.h
new file mode 100644
index 00000000000..fcb456fa621
--- /dev/null
+++ b/gcc/config/m68k/xm-tower.h
@@ -0,0 +1,4 @@
+#include "m68k/xm-m68k.h"
+#include "xm-svr3.h"
+
+#define HAVE_VPRINTF
diff --git a/gcc/config/m88k/dgux.h b/gcc/config/m88k/dgux.h
index edeffdf4f16..6a3c41020bc 100644
--- a/gcc/config/m88k/dgux.h
+++ b/gcc/config/m88k/dgux.h
@@ -30,7 +30,7 @@ Boston, MA 02111-1307, USA. */
(TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG)
#ifndef VERSION_INFO2
-#define VERSION_INFO2 "$Revision: 1.23 $"
+#define VERSION_INFO2 "$Revision: 1.24 $"
#endif
#ifndef NO_BUGS
#define AS_BUG_IMMEDIATE_LABEL
diff --git a/gcc/config/m88k/m88k.h b/gcc/config/m88k/m88k.h
index 8a45610a9b2..7fc8ed98793 100644
--- a/gcc/config/m88k/m88k.h
+++ b/gcc/config/m88k/m88k.h
@@ -198,13 +198,13 @@ extern char * reg_names[];
Redefined in sysv4.h, and luna.h. */
#define VERSION_INFO1 "m88k, "
#ifndef VERSION_INFO2
-#define VERSION_INFO2 "$Revision: 1.72 $"
+#define VERSION_INFO2 "$Revision: 1.1 $"
#endif
#ifndef VERSION_STRING
#define VERSION_STRING version_string
#ifdef __STDC__
-#define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.72 $ " __DATE__
+#define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.1 $ " __DATE__
#else
#define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $"
#endif /* __STDC__ */
diff --git a/gcc/config/mips/elflorion.h b/gcc/config/mips/elflorion.h
new file mode 100644
index 00000000000..4b7f111873f
--- /dev/null
+++ b/gcc/config/mips/elflorion.h
@@ -0,0 +1,24 @@
+/* Definitions of target machine for GNU compiler. MIPS ORION version with
+ GOFAST floating point library.
+ Copyright (C) 1994 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define MIPS_CPU_STRING_DEFAULT "orion"
+
+#include "mips/elfl64.h"
diff --git a/gcc/config/mips/nws3250v4.h b/gcc/config/mips/nws3250v4.h
new file mode 100644
index 00000000000..611effe02a1
--- /dev/null
+++ b/gcc/config/mips/nws3250v4.h
@@ -0,0 +1,36 @@
+/* Definitions of target machine for GNU compiler. Sony RISC NEWS (mips)
+ Copyright (C) 1991 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define MIPS_NEWS
+
+#define CPP_PREDEFINES "\
+-Dmips -Dhost_mips -Dsony -Dsonyrisc -Dunix \
+-DLANGUAGE_C -DMIPSEB -DSYSTYPE_SYSV \
+-Asystem(unix) -Asystem(svr3) -Acpu(mips) -Amachine(mips)"
+
+#define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
+
+#define LIB_SPEC "%{p:-lprof1} %{pg:-lprof1} -lc crtn.o%s values-Xt.o%s"
+
+#define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt1.o%s}}"
+
+#define MACHINE_TYPE "RISC NEWS-OS SVr4"
+
+#include "mips/mips.h"
diff --git a/gcc/config/mips/xm-iris3.h b/gcc/config/mips/xm-iris3.h
new file mode 100644
index 00000000000..3d2a59a1447
--- /dev/null
+++ b/gcc/config/mips/xm-iris3.h
@@ -0,0 +1,8 @@
+#include "mips/xm-mips.h"
+
+#define USG
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
+
diff --git a/gcc/config/mips/xm-iris4.h b/gcc/config/mips/xm-iris4.h
new file mode 100644
index 00000000000..e12c226614e
--- /dev/null
+++ b/gcc/config/mips/xm-iris4.h
@@ -0,0 +1,18 @@
+#include "mips/xm-mips.h"
+
+#define USG
+#define HAVE_VPRINTF
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
+
+#if 0
+#ifdef __GNUC__
+/* The normal irix compiler requires alloca.h or alloca doesn't work.
+ However, the IRIX compiler doesn't allow alloca to be stored in
+ something like ptr->field = alloca(), so we just use the normal
+ C alloca. */
+#include <alloca.h>
+#endif
+#endif
diff --git a/gcc/config/mips/xm-netbsd.h b/gcc/config/mips/xm-netbsd.h
new file mode 100644
index 00000000000..b9d3c709d9d
--- /dev/null
+++ b/gcc/config/mips/xm-netbsd.h
@@ -0,0 +1,2 @@
+#include "mips/xm-mips.h"
+#include "config/xm-netbsd.h"
diff --git a/gcc/config/mips/xm-news.h b/gcc/config/mips/xm-news.h
new file mode 100644
index 00000000000..9409d7fe0a6
--- /dev/null
+++ b/gcc/config/mips/xm-news.h
@@ -0,0 +1,6 @@
+/* This file is for the Sony Mips News running "NewsOS Version 5",
+ which is really System V. */
+#include "mips/xm-sysv.h"
+
+/* Sony has a funny name for this symbol. */
+#define sys_siglist _sys_siglist
diff --git a/gcc/config/mips/xm-nws3250v4.h b/gcc/config/mips/xm-nws3250v4.h
new file mode 100644
index 00000000000..34ab631acb4
--- /dev/null
+++ b/gcc/config/mips/xm-nws3250v4.h
@@ -0,0 +1,9 @@
+#define USG
+
+#include "xm-mips.h"
+
+/* If compiling with mips compiler, we are probably using alloca.c,
+ so help it work right. */
+#ifndef __GNUC__
+#define USE_C_ALLOCA
+#endif
diff --git a/gcc/config/mips/xm-sysv.h b/gcc/config/mips/xm-sysv.h
new file mode 100644
index 00000000000..170538fb682
--- /dev/null
+++ b/gcc/config/mips/xm-sysv.h
@@ -0,0 +1,38 @@
+/* Configuration for GNU C-compiler for UMIPS operating system
+ Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/*
+ * Notes for compiling gcc on umips (v3.0)
+ * - change the -g in the CFLAGS to a -g3 or take it out all together.
+ * - do not define DBX_DEBUGGING_INFO in tm.h, it doesn't exist (unless
+ * you get one from a bsd system)
+ */
+
+#define USG
+
+#include "mips/xm-mips.h"
+
+#define bcopy(a,b,c) memcpy((b),(a),(c))
+#define bzero(a,b) memset((a),0,(b))
+#define bcmp(a,b,c) memcmp((a),(b),(c))
+
+#define rindex strrchr
+#define index strchr
+
diff --git a/gcc/config/mips/xm-sysv4.h b/gcc/config/mips/xm-sysv4.h
new file mode 100644
index 00000000000..490a7722995
--- /dev/null
+++ b/gcc/config/mips/xm-sysv4.h
@@ -0,0 +1,11 @@
+#include "mips/xm-sysv.h"
+
+/* SVR4 provides no sys_siglist,
+ but does offer the same data under another name. */
+#define sys_siglist _sys_siglist
+
+/* There is a declaration in /usr/include/signal.h that conflicts with the
+ declarations in collect2.c and mips-tfile.c, so disable gcc's declarations.
+ This is at least true for CDC's EP/IX 2.1.1. It is suspected to be true
+ for RISC/OS 5.x also. */
+#define DONT_DECLARE_SYS_SIGLIST
diff --git a/gcc/config/ns32k/xm-genix.h b/gcc/config/ns32k/xm-genix.h
new file mode 100644
index 00000000000..76be3b76fc8
--- /dev/null
+++ b/gcc/config/ns32k/xm-genix.h
@@ -0,0 +1,9 @@
+/* Config file for ns32k running system V. */
+
+#include "ns32k/xm-ns32k.h"
+
+#define USG
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
diff --git a/gcc/config/ns32k/xm-netbsd.h b/gcc/config/ns32k/xm-netbsd.h
new file mode 100644
index 00000000000..4040751d1d9
--- /dev/null
+++ b/gcc/config/ns32k/xm-netbsd.h
@@ -0,0 +1,10 @@
+/* Configuration for GCC for ns32k running NetBSD as host. */
+
+#include <ns32k/xm-ns32k.h>
+
+/* ns32k/xm-ns32k.h defines these macros, but we don't need them */
+#undef memcmp
+#undef memcpy
+#undef memset
+
+#include <xm-netbsd.h>
diff --git a/gcc/config/sparc/xm-netbsd.h b/gcc/config/sparc/xm-netbsd.h
new file mode 100644
index 00000000000..5f11b8d2f48
--- /dev/null
+++ b/gcc/config/sparc/xm-netbsd.h
@@ -0,0 +1,4 @@
+/* Configuration for GCC for Sun SPARC running NetBSD as host. */
+
+#include <sparc/xm-sparc.h>
+#include <xm-netbsd.h>
diff --git a/gcc/config/sparc/xm-pbd.h b/gcc/config/sparc/xm-pbd.h
new file mode 100644
index 00000000000..dad9fdc6b34
--- /dev/null
+++ b/gcc/config/sparc/xm-pbd.h
@@ -0,0 +1,13 @@
+/* Host environment for the tti "Unicom" PBB 68020 boards */
+
+#include "sparc/xm-sparc.h"
+
+#define USG
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
+
+#ifndef __GNUC__
+#define USE_C_ALLOCA
+#endif
+
diff --git a/gcc/config/vax/x-vax b/gcc/config/vax/x-vax
new file mode 100644
index 00000000000..bb58a6a1df3
--- /dev/null
+++ b/gcc/config/vax/x-vax
@@ -0,0 +1,3 @@
+# If compiling GCC with the Unix assembler, -J will handle a large function.
+# With GAS, it should have no effect.
+X_CPPFLAGS = -J
diff --git a/gcc/config/vax/xm-vaxv.h b/gcc/config/vax/xm-vaxv.h
new file mode 100644
index 00000000000..18a1d73ac98
--- /dev/null
+++ b/gcc/config/vax/xm-vaxv.h
@@ -0,0 +1,7 @@
+/* Config file for Vax running system V. */
+
+#define USG
+
+#define bcopy(a,b,c) memcpy (b,a,c)
+#define bzero(a,b) memset (a,0,b)
+#define bcmp(a,b,c) memcmp (a,b,c)
diff --git a/gcc/config/xm-freebsd.h b/gcc/config/xm-freebsd.h
new file mode 100644
index 00000000000..f73c9aa60fa
--- /dev/null
+++ b/gcc/config/xm-freebsd.h
@@ -0,0 +1,33 @@
+/* Configuration for GNU C-compiler for hosts running FreeBSD.
+ Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This file defines machine-independent things specific to a host
+ running FreeBSD. This file should not be specified as $xm_file itself;
+ instead $xm_file should be CPU/xm-freebsd.h, which should include both
+ CPU/xm-CPU.h and this file xm-freebsd.h. */
+
+/* FreeBSD has strerror. */
+#define HAVE_STRERROR
+
+/* We have _sys_siglist, but the declaration in <signal.h> conflicts with
+ the declarations in collect2.c and mips-tfile.c, so disable the declarations
+ in those files. */
+
+#define DONT_DECLARE_SYS_SIGLIST
diff --git a/gcc/config/xm-linux.h b/gcc/config/xm-linux.h
new file mode 100644
index 00000000000..88b558cc5bf
--- /dev/null
+++ b/gcc/config/xm-linux.h
@@ -0,0 +1,47 @@
+/* Configuration for GCC for Intel i386 running Linux.
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Contributed by H.J. Lu (hjl@nynexst.com)
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#undef HAVE_VPRINTF
+#define HAVE_VPRINTF
+
+#undef HAVE_STRERROR
+#define HAVE_STRERROR
+
+#undef HAVE_POPEN
+#define HAVE_POPEN
+
+#undef POSIX
+#define POSIX
+
+#undef DONT_DECLARE_SYS_SIGLIST
+#define DONT_DECLARE_SYS_SIGLIST
+
+/* We do have one, but I'd like to use the one come with gcc since
+ we have been doing that for a long time with USG defined. H.J. */
+#define NO_STAB_H
+
+#undef BSTRING
+#define BSTRING
+#undef bcmp
+#undef bcopy
+#undef bzero
+#undef index
+#undef rindex
diff --git a/gcc/config/xm-netbsd.h b/gcc/config/xm-netbsd.h
new file mode 100644
index 00000000000..00000ce9706
--- /dev/null
+++ b/gcc/config/xm-netbsd.h
@@ -0,0 +1,27 @@
+/* Configuration for GNU C-compiler for hosts running NetBSD.
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This file defines machine-independent things specific to a host
+ running NetBSD. This file should not be specified as $xm_file itself;
+ instead $xm_file should be CPU/xm-netbsd.h, which should include both
+ CPU/xm-CPU.h and this file xm-netbsd.h. */
+
+#define HAVE_STRERROR
+#define HAVE_VPRINTF
diff --git a/gcc/config/xm-svr3.h b/gcc/config/xm-svr3.h
new file mode 100644
index 00000000000..ac1000fb1cb
--- /dev/null
+++ b/gcc/config/xm-svr3.h
@@ -0,0 +1,33 @@
+/* Configuration for GNU C-compiler for hosts running System V Release 3
+ Copyright (C) 1991, 1993 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define bcopy(src,dst,len) memcpy ((dst),(src),(len))
+#define bzero(dst,len) memset ((dst),0,(len))
+#define bcmp(left,right,len) memcmp ((left),(right),(len))
+
+#define rindex strrchr
+#define index strchr
+
+#define USG
+#define HAVE_VPRINTF
+
+#ifndef SVR3
+#define SVR3
+#endif
diff --git a/gcc/config/xm-svr4.h b/gcc/config/xm-svr4.h
new file mode 100644
index 00000000000..30084322510
--- /dev/null
+++ b/gcc/config/xm-svr4.h
@@ -0,0 +1,35 @@
+/* Configuration for GNU C-compiler for hosts running System V Release 4
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define bcopy(src,dst,len) memcpy ((dst),(src),(len))
+#define bzero(dst,len) memset ((dst),0,(len))
+#define bcmp(left,right,len) memcmp ((left),(right),(len))
+
+#define rindex strrchr
+#define index strchr
+
+#define USG
+#define HAVE_VPRINTF
+
+#define POSIX
+
+/* SVR4 provides no sys_siglist,
+ but does offer the same data under another name. */
+#define sys_siglist _sys_siglist
diff --git a/gcc/configure b/gcc/configure
new file mode 100755
index 00000000000..b3181529acc
--- /dev/null
+++ b/gcc/configure
@@ -0,0 +1,4911 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.12
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+ --with-gnu-ld arrange to work with GNU ld."
+ac_help="$ac_help
+ --with-gnu-as arrange to work with GNU as."
+ac_help="$ac_help
+ --with-stabs arrange to use stabs instead of host debug format."
+ac_help="$ac_help
+ --with-elf arrange to use ELF instead of host debug format."
+ac_help="$ac_help
+ --with-local-prefix=DIR specifies directory to put local include."
+ac_help="$ac_help
+ --with-gxx-include-dir=DIR
+ specifies directory to put g++ header files."
+ac_help="$ac_help
+ --enable-c-cpplib Use cpplib for C."
+ac_help="$ac_help
+ --enable-threads enable thread usage for target GCC.
+ --enable-threads=LIB use LIB thread package for target GCC."
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file="$ac_optarg" ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.12"
+ exit 0 ;;
+
+ -with-* | --with-*)
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries="$ac_optarg" ;;
+
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+ *)
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=tree.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ echo "loading cache $cache_file"
+ . $cache_file
+else
+ echo "creating cache $cache_file"
+ > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+
+native_prefix=/usr
+remove=rm
+hard_link=ln
+symbolic_link='ln -s'
+copy=cp
+
+# Check for additional parameters
+
+# With GNU ld
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ gnu_ld=yes
+else
+ gnu_ld=no
+fi
+
+
+# With GNU as
+# Check whether --with-gnu-as or --without-gnu-as was given.
+if test "${with_gnu_as+set}" = set; then
+ withval="$with_gnu_as"
+ gas=yes
+else
+ gas=no
+fi
+
+
+# With stabs
+# Check whether --with-stabs or --without-stabs was given.
+if test "${with_stabs+set}" = set; then
+ withval="$with_stabs"
+ stabs=yes
+else
+ stabs=no
+fi
+
+
+# With ELF
+# Check whether --with-elf or --without-elf was given.
+if test "${with_elf+set}" = set; then
+ withval="$with_elf"
+ elf=yes
+else
+ elf=no
+fi
+
+
+# Specify the local prefix
+# Check whether --with-local-prefix or --without-local-prefix was given.
+if test "${with_local_prefix+set}" = set; then
+ withval="$with_local_prefix"
+ local_prefix=$with_local_prefix
+else
+ local_prefix=/usr/local
+fi
+
+
+# Default local prefix if it is empty
+if [ x$local_prefix = x ]; then
+ local_prefix=/usr/local
+fi
+
+# Specify the g++ header file directory
+# Check whether --with-gxx-include-dir or --without-gxx-include-dir was given.
+if test "${with_gxx_include_dir+set}" = set; then
+ withval="$with_gxx_include_dir"
+ gxx_include_dir=$with_gxx_include_dir
+else
+ gxx_include_dir='${prefix}/include/g++'
+fi
+
+
+# Default g++ header file directory if it is empty
+if [ x$gxx_include_dir = x ]; then
+ gxx_include_dir='${prefix}/include/g++'
+fi
+
+# Enable use of cpplib for C.
+# Check whether --enable-c-cpplib or --disable-c-cpplib was given.
+if test "${enable_c_cpplib+set}" = set; then
+ enableval="$enable_c_cpplib"
+ if [ x$enable_c_cpplib != xno ]; then
+ extra_c_objs="${extra_c_objs} cpplib.o cppexp.o cpphash.o cpperror.o"
+ extra_c_flags=-DUSE_CPPLIB=1
+fi
+fi
+
+
+# Enable threads
+# Pass with no value to take the default
+# Pass with a value to specify a thread package
+# Check whether --enable-threads or --disable-threads was given.
+if test "${enable_threads+set}" = set; then
+ enableval="$enable_threads"
+ if [ x$enable_threads = xno ]; then
+ enable_threads=''
+fi
+else
+ enable_threads=''
+fi
+
+
+# Check if a valid thread package
+case x${enable_threads} in
+ x | xno)
+ # No threads
+ thread_file='single'
+ ;;
+ xyes)
+ # default
+ thread_file=''
+ ;;
+ xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
+ xsolaris | xwin32)
+ thread_file=$enable_threads
+ ;;
+ *)
+ echo "$enable_threads is an unknown thread package" 1>&2
+ exit 1
+ ;;
+esac
+
+# Determine the host, build, and target systems
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+
+# Do some error checking and defaulting for the host and target type.
+# The inputs are:
+# configure --host=HOST --target=TARGET --build=BUILD NONOPT
+#
+# The rules are:
+# 1. You are not allowed to specify --host, --target, and nonopt at the
+# same time.
+# 2. Host defaults to nonopt.
+# 3. If nonopt is not specified, then host defaults to the current host,
+# as determined by config.guess.
+# 4. Target and build default to nonopt.
+# 5. If nonopt is not specified, then target and build default to host.
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+case $host---$target---$nonopt in
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
+*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
+esac
+
+
+# Make sure we can run config.sub.
+if $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:713: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`$ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`$ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking target system type""... $ac_c" 1>&6
+echo "configure:734: checking target system type" >&5
+
+target_alias=$target
+case "$target_alias" in
+NONE)
+ case $nonopt in
+ NONE) target_alias=$host_alias ;;
+ *) target_alias=$nonopt ;;
+ esac ;;
+esac
+
+target=`$ac_config_sub $target_alias`
+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$target" 1>&6
+
+echo $ac_n "checking build system type""... $ac_c" 1>&6
+echo "configure:752: checking build system type" >&5
+
+build_alias=$build
+case "$build_alias" in
+NONE)
+ case $nonopt in
+ NONE) build_alias=$host_alias ;;
+ *) build_alias=$nonopt ;;
+ esac ;;
+esac
+
+build=`$ac_config_sub $build_alias`
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$build" 1>&6
+
+test "$host_alias" != "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+
+# Find some useful tools
+for ac_prog in mawk gawk nawk awk
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:781: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_AWK="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+AWK="$ac_cv_prog_AWK"
+if test -n "$AWK"; then
+ echo "$ac_t""$AWK" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$AWK" && break
+done
+
+# Extract the first word of "flex", so it can be a program name with args.
+set dummy flex; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:812: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$LEX"; then
+ ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_LEX="flex"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex"
+fi
+fi
+LEX="$ac_cv_prog_LEX"
+if test -n "$LEX"; then
+ echo "$ac_t""$LEX" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$LEXLIB"
+then
+ case "$LEX" in
+ flex*) ac_lib=fl ;;
+ *) ac_lib=l ;;
+ esac
+ echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
+echo "configure:845: checking for yywrap in -l$ac_lib" >&5
+ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-l$ac_lib $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 853 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char yywrap();
+
+int main() {
+yywrap()
+; return 0; }
+EOF
+if { (eval echo configure:864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ LEXLIB="-l$ac_lib"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+fi
+
+echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+echo "configure:887: checking whether ln -s works" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ rm -f conftestdata
+if ln -s X conftestdata 2>/dev/null
+then
+ rm -f conftestdata
+ ac_cv_prog_LN_S="ln -s"
+else
+ ac_cv_prog_LN_S=ln
+fi
+fi
+LN_S="$ac_cv_prog_LN_S"
+if test "$ac_cv_prog_LN_S" = "ln -s"; then
+ echo "$ac_t""yes" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+# Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:910: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_RANLIB="ranlib"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+fi
+fi
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+ echo "$ac_t""$RANLIB" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+for ac_prog in 'bison -y' byacc
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:941: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YACC"; then
+ ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YACC="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YACC="$ac_cv_prog_YACC"
+if test -n "$YACC"; then
+ echo "$ac_t""$YACC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:981: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ # Account for people who put trailing slashes in PATH elements.
+ case "$ac_dir/" in
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ for ac_prog in ginstall installbsd scoinst install; do
+ if test -f $ac_dir/$ac_prog; then
+ if test $ac_prog = install &&
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ # OSF/1 installbsd also uses dspmsg, but is usable.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+ IFS="$ac_save_IFS"
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL="$ac_cv_path_install"
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL="$ac_install_sh"
+ fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+# Find the native compiler
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1035: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="gcc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1064: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ ac_prog_rejected=no
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" "$@"
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:1112: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext <<EOF
+#line 1122 "configure"
+#include "confdefs.h"
+main(){return(0);}
+EOF
+if { (eval echo configure:1126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cc_cross=no
+ else
+ ac_cv_prog_cc_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:1146: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:1151: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.c <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+else
+ ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:1175: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_g=yes
+else
+ ac_cv_prog_cc_g=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-O2"
+ fi
+else
+ GCC=
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+echo "configure:1203: checking whether ${MAKE-make} sets \${MAKE}" >&5
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftestmake <<\EOF
+all:
+ @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftestmake
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ SET_MAKE=
+else
+ echo "$ac_t""no" 1>&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1231: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # This must be in double quotes, not single quotes, because CPP may get
+ # substituted into the Makefile and "${CC-cc}" will confuse make.
+ CPP="${CC-cc} -E"
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp.
+ cat > conftest.$ac_ext <<EOF
+#line 1246 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -E -traditional-cpp"
+ cat > conftest.$ac_ext <<EOF
+#line 1263 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+ ac_cv_prog_CPP="$CPP"
+fi
+ CPP="$ac_cv_prog_CPP"
+else
+ ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+for ac_hdr in stddef.h string.h strings.h stdlib.h time.h unistd.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1295: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1300 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+
+echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6
+echo "configure:1333: checking whether malloc must be declared" >&5
+if eval "test \"`echo '$''{'gcc_cv_decl_needed_malloc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1338 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main() {
+char *(*pfn) = (char *(*)) malloc
+; return 0; }
+EOF
+if { (eval echo configure:1359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gcc_cv_decl_needed_malloc=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gcc_cv_decl_needed_malloc=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gcc_cv_decl_needed_malloc" 1>&6
+if test $gcc_cv_decl_needed_malloc = yes; then
+ gcc_tr_decl=NEED_DECLARATION_`echo malloc | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $gcc_tr_decl 1
+EOF
+
+fi
+
+echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6
+echo "configure:1381: checking whether realloc must be declared" >&5
+if eval "test \"`echo '$''{'gcc_cv_decl_needed_realloc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1386 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main() {
+char *(*pfn) = (char *(*)) realloc
+; return 0; }
+EOF
+if { (eval echo configure:1407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gcc_cv_decl_needed_realloc=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gcc_cv_decl_needed_realloc=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gcc_cv_decl_needed_realloc" 1>&6
+if test $gcc_cv_decl_needed_realloc = yes; then
+ gcc_tr_decl=NEED_DECLARATION_`echo realloc | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $gcc_tr_decl 1
+EOF
+
+fi
+
+echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6
+echo "configure:1429: checking whether free must be declared" >&5
+if eval "test \"`echo '$''{'gcc_cv_decl_needed_free'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1434 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main() {
+char *(*pfn) = (char *(*)) free
+; return 0; }
+EOF
+if { (eval echo configure:1455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gcc_cv_decl_needed_free=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gcc_cv_decl_needed_free=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gcc_cv_decl_needed_free" 1>&6
+if test $gcc_cv_decl_needed_free = yes; then
+ gcc_tr_decl=NEED_DECLARATION_`echo free | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $gcc_tr_decl 1
+EOF
+
+fi
+
+
+# File extensions
+manext='.1'
+objext='.o'
+
+
+
+build_xm_file=
+build_broken_install=
+build_install_headers_dir=install-headers-tar
+build_exeext=
+host_xm_file=
+host_xmake_file=
+host_truncate_target=
+
+# Decode the host machine, then the target machine.
+# For the host machine, we save the xm_file variable as host_xm_file;
+# then we decode the target machine and forget everything else
+# that came from the host machine.
+for machine in $build $host $target; do
+
+ out_file=
+ xmake_file=
+ tmake_file=
+ extra_headers=
+ extra_passes=
+ extra_parts=
+ extra_programs=
+ extra_objs=
+ extra_host_objs=
+ extra_gcc_objs=
+ float_format=
+ # Set this to force installation and use of collect2.
+ use_collect2=
+ # Set this to override the default target model.
+ target_cpu_default=
+ # Set this to force use of install.sh.
+ broken_install=
+ # Set this to control which fixincludes program to use.
+ fixincludes=fixincludes
+ # Set this to control how the header file directory is installed.
+ install_headers_dir=install-headers-tar
+ # Set this to a non-empty list of args to pass to cpp if the target
+ # wants its .md file passed through cpp.
+ md_cppflags=
+ # Set this if directory names should be truncated to 14 characters.
+ truncate_target=
+ # Set this if gdb needs a dir command with `dirname $out_file`
+ gdb_needs_out_file_path=
+ # Set this if the build machine requires executables to have a
+ # file name suffix.
+ exeext=
+
+ # Set default cpu_type, tm_file and xm_file so it can be updated in
+ # each machine entry.
+ cpu_type=`echo $machine | sed 's/-.*$//'`
+ case $machine in
+ alpha*-*-*)
+ cpu_type=alpha
+ ;;
+ arm*-*-*)
+ cpu_type=arm
+ ;;
+ c*-convex-*)
+ cpu_type=convex
+ ;;
+ i[3456]86-*-*)
+ cpu_type=i386
+ ;;
+ hppa*-*-*)
+ cpu_type=pa
+ ;;
+ m68000-*-*)
+ cpu_type=m68k
+ ;;
+ mips*-*-*)
+ cpu_type=mips
+ ;;
+ powerpc*-*-*)
+ cpu_type=rs6000
+ ;;
+ pyramid-*-*)
+ cpu_type=pyr
+ ;;
+ sparc*-*-*)
+ cpu_type=sparc
+ ;;
+ esac
+
+ tm_file=${cpu_type}/${cpu_type}.h
+ xm_file=${cpu_type}/xm-${cpu_type}.h
+
+ case $machine in
+ # Support site-specific machine types.
+ *local*)
+ cpu_type=`echo $machine | sed -e 's/-.*//'`
+ rest=`echo $machine | sed -e "s/$cpu_type-//"`
+ xm_file=${cpu_type}/xm-$rest.h
+ tm_file=${cpu_type}/$rest.h
+ if [ -f $srcdir/config/${cpu_type}/x-$rest ] ; \
+ then xmake_file=${cpu_type}/x-$rest; \
+ else true; \
+ fi
+ if [ -f $srcdir/config/${cpu_type}/t-$rest ] ; \
+ then tmake_file=${cpu_type}/t-$rest; \
+ else true; \
+ fi
+ ;;
+ 1750a-*-*)
+ ;;
+ a29k-*-bsd* | a29k-*-sym1*)
+ tm_file="${tm_file} a29k/unix.h"
+ xm_file=a29k/xm-unix.h
+ xmake_file=a29k/x-unix
+ use_collect2=yes
+ ;;
+ a29k-*-udi | a29k-*-coff)
+ tm_file="${tm_file} dbxcoff.h a29k/udi.h"
+ tmake_file=a29k/t-a29kbare
+ ;;
+ a29k-*-vxworks*)
+ tm_file="${tm_file} dbxcoff.h a29k/udi.h a29k/vx29k.h"
+ tmake_file=a29k/t-vx29k
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ a29k-*-*) # Default a29k environment.
+ use_collect2=yes
+ ;;
+ alpha*-*-linux-gnuecoff*)
+ tm_file="${tm_file} alpha/linux.h"
+ xm_file="${xm_file} alpha/xm-linux.h"
+ target_cpu_default="MASK_GAS"
+ gas=no
+ xmake_file=none
+ fixincludes=Makefile.in
+ gas=yes gnu_ld=yes
+ ;;
+ alpha*-*-linux-gnu*)
+ tm_file="${tm_file} alpha/linux.h alpha/elf.h"
+ xm_file="${xm_file} alpha/xm-linux.h"
+ target_cpu_default="MASK_GAS"
+ gas=no
+ tmake_file="t-linux alpha/t-linux"
+ xmake_file=none
+ fixincludes=Makefile.in
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ gas=yes gnu_ld=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='posix'
+ fi
+ ;;
+ alpha*-dec-osf[456789]*)
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas != xyes ]
+ then
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ broken_install=yes
+ use_collect2=yes
+ # Some versions of OSF4 (specifically X4.0-9 296.7) have
+ # a broken tar, so we use cpio instead.
+ case $machine in
+ alpha*-dec-osf4*)
+ install_headers_dir=install-headers-cpio
+ ;;
+ esac
+ ;;
+ alpha*-dec-osf[23]*)
+ tm_file="${tm_file} alpha/osf2or3.h"
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas != xyes ]
+ then
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ broken_install=yes
+ use_collect2=yes
+ ;;
+ alpha*-dec-osf1.2)
+ tm_file="${tm_file} alpha/osf12.h"
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas != xyes ]
+ then
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ broken_install=yes
+ use_collect2=yes
+ ;;
+ alpha*-*-osf*)
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas != xyes ]
+ then
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ broken_install=yes
+ use_collect2=yes
+ ;;
+ alpha*-*-winnt3*)
+ tm_file="${tm_file} alpha/win-nt.h"
+ target_cpu_default=MASK_WINDOWS_NT
+ xm_file="${xm_file} config/winnt/xm-winnt.h alpha/xm-winnt.h"
+ tmake_file=t-libc-ok
+ xmake_file=winnt/x-winnt
+ extra_host_objs=oldnames.o
+ extra_gcc_objs="spawnv.o oldnames.o"
+ fixincludes=fixinc.winnt
+ if [ x$gnu_ld != xyes ]
+ then
+ extra_programs=ld.exe
+ fi
+ if [ x$enable_threads = xyes ]; then
+ thread_file='win32'
+ fi
+ ;;
+ alpha*-dec-vms*)
+ tm_file=alpha/vms.h
+ xm_file="${xm_file} alpha/xm-vms.h"
+ tmake_file=alpha/t-vms
+ fixincludes=Makefile.in
+ ;;
+ arm-*-coff* | armel-*-coff*)
+ tm_file=arm/coff.h
+ tmake_file=arm/t-bare
+ ;;
+ arm-*-riscix1.[01]*) # Acorn RISC machine (early versions)
+ tm_file=arm/riscix1-1.h
+ use_collect2=yes
+ ;;
+ arm-*-riscix*) # Acorn RISC machine
+ if [ x$gas = xyes ]
+ then
+ tm_file=arm/rix-gas.h
+ else
+ tm_file=arm/riscix.h
+ fi
+ xmake_file=arm/x-riscix
+ tmake_file=arm/t-riscix
+ use_collect2=yes
+ ;;
+ arm-semi-aout | armel-semi-aout)
+ tm_file=arm/semi.h
+ tmake_file=arm/t-semi
+ fixincludes=Makefile.in # There is nothing to fix
+ ;;
+ arm-semi-aof | armel-semi-aof)
+ tm_file=arm/semiaof.h
+ tmake_file=arm/t-semiaof
+ fixincludes=Makefile.in # There is nothing to fix
+ ;;
+ arm-*-netbsd*)
+ tm_file=arm/netbsd.h
+ xm_file=arm/xm-netbsd.h
+ tmake_file=arm/t-netbsd
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ use_collect2=yes
+ ;;
+ arm-*-linux-gnuaout*) # ARM Linux
+ cpu_type=arm
+ xm_file=arm/xm-linux.h
+ xmake_file=x-linux
+ tm_file=arm/linux-gas.h
+ tmake_file=arm/t-linux
+ fixincludes=Makefile.in
+ broken_install=yes
+ gnu_ld=yes
+ ;;
+ arm-*-aout)
+ tm_file=arm/aout.h
+ ;;
+ c1-convex-*) # Convex C1
+ target_cpu_default=1
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ c2-convex-*) # Convex C2
+ target_cpu_default=2
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ c32-convex-*)
+ target_cpu_default=4
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ c34-convex-*)
+ target_cpu_default=8
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ c38-convex-*)
+ target_cpu_default=16
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ clipper-intergraph-clix*)
+ tm_file="${tm_file} svr3.h clipper/clix.h"
+ xm_file=clipper/xm-clix.h
+ xmake_file=clipper/x-clix
+ extra_headers=va-clipper.h
+ extra_parts="crtbegin.o crtend.o"
+ install_headers_dir=install-headers-cpio
+ broken_install=yes
+ ;;
+ dsp16xx-*)
+ ;;
+ elxsi-elxsi-*)
+ use_collect2=yes
+ ;;
+# This hasn't been upgraded to GCC 2.
+# fx80-alliant-*) # Alliant FX/80
+# ;;
+ h8300-*-*)
+ float_format=i32
+ ;;
+ hppa1.1-*-pro*)
+ tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h"
+ xm_file=pa/xm-papro.h
+ tmake_file=pa/t-pro
+ ;;
+ hppa1.1-*-osf*)
+ target_cpu_default=1
+ tm_file="${tm_file} pa/pa-osf.h"
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ hppa1.1-*-rtems*)
+ tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h pa/rtems.h"
+ xm_file=pa/xm-papro.h
+ tmake_file=pa/t-pro
+ ;;
+ hppa1.0-*-osf*)
+ tm_file="${tm_file} pa/pa-osf.h"
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ hppa1.1-*-bsd*)
+ target_cpu_default=1
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ hppa1.0-*-bsd*)
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ hppa1.0-*-hpux7*)
+ tm_file="pa/pa-oldas.h ${tm_file} pa/pa-hpux7.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.0-*-hpux8.0[0-2]*)
+ tm_file="${tm_file} pa/pa-hpux.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ else
+ tm_file="pa/pa-oldas.h ${tm_file}"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.1-*-hpux8.0[0-2]*)
+ target_cpu_default=1
+ tm_file="${tm_file} pa/pa-hpux.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ else
+ tm_file="pa/pa-oldas.h ${tm_file}"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.1-*-hpux8*)
+ target_cpu_default=1
+ tm_file="${tm_file} pa/pa-hpux.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.0-*-hpux8*)
+ tm_file="${tm_file} pa/pa-hpux.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.1-*-hpux10*)
+ target_cpu_default=1
+ tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.0-*-hpux10*)
+ tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.1-*-hpux*)
+ target_cpu_default=1
+ tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.0-*-hpux*)
+ tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.1-*-hiux*)
+ target_cpu_default=1
+ tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa1.0-*-hiux*)
+ tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
+ xm_file=pa/xm-pahpux.h
+ xmake_file=pa/x-pa-hpux
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} pa/pa-gas.h"
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ ;;
+ hppa*-*-lites*)
+ target_cpu_default=1
+ use_collect2=yes
+ fixincludes=Makefile.in
+ ;;
+ i370-*-mvs*)
+ ;;
+ i[3456]86-ibm-aix*) # IBM PS/2 running AIX
+ if [ x$gas = xyes ]
+ then
+ tm_file=i386/aix386.h
+ extra_parts="crtbegin.o crtend.o"
+ tmake_file=i386/t-crtstuff
+ else
+ tm_file=i386/aix386ng.h
+ use_collect2=yes
+ fi
+ xm_file=i386/xm-aix.h
+ xmake_file=i386/x-aix
+ broken_install=yes
+ ;;
+ i486-ncr-sysv4*) # NCR 3000 - i486 running system V.4
+ xm_file=i386/xm-sysv4.h
+ xmake_file=i386/x-ncr3000
+ if [ x$stabs = xyes -a x$gas = xyes ]
+ then
+ tm_file=i386/sysv4gdb.h
+ else
+ tm_file=i386/sysv4.h
+ fi
+ extra_parts="crtbegin.o crtend.o"
+ tmake_file=i386/t-crtpic
+ ;;
+ i[3456]86-next-*)
+ tm_file=i386/next.h
+ xm_file=i386/xm-next.h
+ tmake_file=i386/t-next
+ xmake_file=i386/x-next
+ extra_objs=nextstep.o
+ if [ x$enable_threads = xyes ]; then
+ thread_file='mach'
+ fi
+ ;;
+ i[3456]86-sequent-bsd*) # 80386 from Sequent
+ use_collect2=yes
+ if [ x$gas = xyes ]
+ then
+ tm_file=i386/seq-gas.h
+ else
+ tm_file=i386/sequent.h
+ fi
+ ;;
+ i[3456]86-sequent-ptx1*)
+ xm_file=i386/xm-sysv3.h
+ xmake_file=i386/x-sysv3
+ tm_file=i386/seq-sysv3.h
+ tmake_file=i386/t-crtstuff
+ fixincludes=fixinc.ptx
+ extra_parts="crtbegin.o crtend.o"
+ install_headers_dir=install-headers-cpio
+ broken_install=yes
+ ;;
+ i[3456]86-sequent-ptx2* | i[3456]86-sequent-sysv3*)
+ xm_file=i386/xm-sysv3.h
+ xmake_file=i386/x-sysv3
+ tm_file=i386/seq2-sysv3.h
+ tmake_file=i386/t-crtstuff
+ extra_parts="crtbegin.o crtend.o"
+ fixincludes=fixinc.ptx
+ install_headers_dir=install-headers-cpio
+ broken_install=yes
+ ;;
+ i[3456]86-sequent-ptx4* | i[3456]86-sequent-sysv4*)
+ xm_file=i386/xm-sysv4.h
+ xmake_file=x-svr4
+ tm_file=i386/ptx4-i.h
+ tmake_file=t-svr4
+ extra_parts="crtbegin.o crtend.o"
+ fixincludes=fixinc.ptx
+ install_headers_dir=install-headers-cpio
+ broken_install=yes
+ ;;
+ i386-sun-sunos*) # Sun i386 roadrunner
+ xm_file=i386/xm-sun.h
+ tm_file=i386/sun.h
+ use_collect2=yes
+ ;;
+ i[3456]86-*-aout*)
+ tm_file=i386/i386-aout.h
+ tmake_file=i386/t-i386bare
+ ;;
+ i[3456]86-*-bsdi* | i[345]86-*-bsd386*)
+ tm_file=i386/bsd386.h
+ xm_file=i386/xm-bsd386.h
+# tmake_file=t-libc-ok
+ ;;
+ i[3456]86-*-bsd*)
+ tm_file=i386/386bsd.h
+ xm_file=i386/xm-bsd386.h
+# tmake_file=t-libc-ok
+# Next line turned off because both 386BSD and BSD/386 use GNU ld.
+# use_collect2=yes
+ ;;
+ i[3456]86-*-freebsdelf*)
+ tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h"
+ xm_file=i386/xm-freebsd.h
+ # On FreeBSD, the headers are already ok.
+ fixincludes=Makefile.in
+ tmake_file=i386/t-freebsd
+ gas=yes
+ gnu_ld=yes
+ stabs=yes
+ ;;
+ i[3456]86-*-freebsd*)
+ tm_file=i386/freebsd.h
+ xm_file=i386/xm-freebsd.h
+ # On FreeBSD, the headers are already ok.
+ fixincludes=Makefile.in
+ tmake_file=i386/t-freebsd
+ ;;
+ i[3456]86-*-netbsd*)
+ tm_file=i386/netbsd.h
+ xm_file=i386/xm-netbsd.h
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ tmake_file=t-netbsd
+ ;;
+ i[3456]86-*-coff*)
+ tm_file=i386/i386-coff.h
+ tmake_file=i386/t-i386bare
+ ;;
+ i[3456]86-*-isc*) # 80386 running ISC system
+ xm_file=i386/xm-isc.h
+ case $machine in
+ i[345]86-*-isc[34]*)
+ xmake_file=i386/x-isc3
+ ;;
+ *)
+ xmake_file=i386/x-isc
+ ;;
+ esac
+ if [ x$gas = xyes -a x$stabs = xyes ]
+ then
+ tm_file=i386/iscdbx.h
+ tmake_file=i386/t-svr3dbx
+ extra_parts="svr3.ifile svr3z.ifile"
+ else
+ tm_file=i386/isccoff.h
+ tmake_file=i386/t-crtstuff
+ extra_parts="crtbegin.o crtend.o"
+ fi
+ install_headers_dir=install-headers-cpio
+ broken_install=yes
+ ;;
+ i[3456]86-*-linux-gnuoldld*) # Intel 80386's running Linux
+ xm_file=i386/xm-linux.h # with a.out format using pre BFD linkers
+ xmake_file=x-linux-aout
+ tmake_file="t-linux-aout i386/t-crtstuff"
+ tm_file=i386/linux-oldld.h
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ ;;
+ i[3456]86-*-linux-gnuaout*) # Intel 80386's running Linux
+ xm_file=i386/xm-linux.h # with a.out format
+ xmake_file=x-linux-aout
+ tmake_file="t-linux-aout i386/t-crtstuff"
+ tm_file=i386/linux-aout.h
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ ;;
+ i[3456]86-*-linux-gnulibc1)
+ xm_file=i386/xm-linux.h # Intel 80386's running Linux
+ xmake_file=x-linux # with ELF format using the
+ tm_file=i386/linux.h # Linux C library 5
+ tmake_file="t-linux t-linux-gnulibc1 i386/t-crtstuff"
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='single'
+ fi
+ ;;
+ i[3456]86-*-linux-gnu*) # Intel 80386's running Linux
+ xm_file=i386/xm-linux.h # with ELF format using glibc 2
+ xmake_file=x-linux # aka Linux C library 6
+ tm_file=i386/linux.h
+ tmake_file="t-linux i386/t-crtstuff"
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='posix'
+ fi
+ ;;
+ i[3456]86-*-gnu*)
+ ;;
+ i[3456]86-go32-msdos | i[3456]86-*-go32*)
+ xm_file=i386/xm-go32.h
+ tm_file=i386/go32.h
+ tmake_file=i386/t-go32
+ ;;
+ i[3456]86-moss-msdos* | i[3456]86-*-moss*)
+ tm_file=i386/moss.h
+ tmake_file=t-libc-ok
+ fixincludes=Makefile.in
+ gnu_ld=yes
+ gas=yes
+ ;;
+ i[3456]86-*-lynxos*)
+ if [ x$gas = xyes ]
+ then
+ tm_file=i386/lynx.h
+ else
+ tm_file=i386/lynx-ng.h
+ fi
+ xm_file=i386/xm-lynx.h
+ tmake_file=i386/t-i386bare
+ xmake_file=x-lynx
+ ;;
+ i[3456]86-*-mach*)
+ tm_file=i386/mach.h
+# tmake_file=t-libc-ok
+ use_collect2=yes
+ ;;
+ i[3456]86-*-osfrose*) # 386 using OSF/rose
+ if [ x$elf = xyes ]
+ then
+ tm_file=i386/osfelf.h
+ use_collect2=
+ else
+ tm_file=i386/osfrose.h
+ use_collect2=yes
+ fi
+ xm_file=i386/xm-osf.h
+ xmake_file=i386/x-osfrose
+ tmake_file=i386/t-osf
+ extra_objs=halfpic.o
+ ;;
+ i[345]86-go32-rtems*)
+ cpu_type=i386
+ xm_file=i386/xm-go32.h
+ tm_file=i386/go32-rtems.h
+ tmake_file="i386/t-go32 t-rtems"
+ ;;
+ i[345]86-*-rtems*)
+ cpu_type=i386
+ tm_file=i386/rtems.h
+ tmake_file="i386/t-i386bare t-rtems"
+ ;;
+ i[3456]86-*-sco3.2v5*) # 80386 running SCO Open Server 5
+ xm_file=i386/xm-sco5.h
+ xmake_file=i386/x-sco5
+ fixincludes=fixinc.sco
+ broken_install=yes
+ tm_file=i386/sco5.h
+ tmake_file=i386/t-sco5
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+ ;;
+ i[3456]86-*-sco3.2v4*) # 80386 running SCO 3.2v4 system
+ xm_file=i386/xm-sco.h
+ xmake_file=i386/x-sco4
+ fixincludes=fixinc.sco
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ if [ x$stabs = xyes ]
+ then
+ tm_file=i386/sco4dbx.h
+ tmake_file=i386/t-svr3dbx
+ extra_parts="svr3.ifile svr3z.rfile"
+ else
+ tm_file=i386/sco4.h
+ tmake_file=i386/t-crtstuff
+ extra_parts="crtbegin.o crtend.o"
+ fi
+ truncate_target=yes
+ ;;
+ i[3456]86-*-sco*) # 80386 running SCO system
+ xm_file=i386/xm-sco.h
+ xmake_file=i386/x-sco
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ if [ x$stabs = xyes ]
+ then
+ tm_file=i386/scodbx.h
+ tmake_file=i386/t-svr3dbx
+ extra_parts="svr3.ifile svr3z.rfile"
+ else
+ tm_file=i386/sco.h
+ extra_parts="crtbegin.o crtend.o"
+ tmake_file=i386/t-crtstuff
+ fi
+ truncate_target=yes
+ ;;
+ i[3456]86-*-solaris2*)
+ xm_file=i386/xm-sysv4.h
+ if [ x$stabs = xyes ]
+ then
+ tm_file=i386/sol2dbg.h
+ else
+ tm_file=i386/sol2.h
+ fi
+ tmake_file=i386/t-sol2
+ extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o"
+ xmake_file=x-svr4
+ fixincludes=fixinc.svr4
+ broken_install=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='solaris'
+ fi
+ ;;
+ i[3456]86-*-sysv4*) # Intel 80386's running system V.4
+ xm_file=i386/xm-sysv4.h
+ tm_file=i386/sysv4.h
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ tmake_file=i386/t-crtpic
+ xmake_file=x-svr4
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ i[3456]86-*-sysv*) # Intel 80386's running system V
+ xm_file=i386/xm-sysv3.h
+ xmake_file=i386/x-sysv3
+ if [ x$gas = xyes ]
+ then
+ if [ x$stabs = xyes ]
+ then
+ tm_file=i386/svr3dbx.h
+ tmake_file=i386/t-svr3dbx
+ extra_parts="svr3.ifile svr3z.rfile"
+ else
+ tm_file=i386/svr3gas.h
+ extra_parts="crtbegin.o crtend.o"
+ tmake_file=i386/t-crtstuff
+ fi
+ else
+ tm_file=i386/sysv3.h
+ extra_parts="crtbegin.o crtend.o"
+ tmake_file=i386/t-crtstuff
+ fi
+ ;;
+ i386-*-vsta) # Intel 80386's running VSTa kernel
+ xm_file=i386/xm-vsta.h
+ tm_file=i386/vsta.h
+ tmake_file=i386/t-vsta
+ xmake_file=i386/x-vsta
+ ;;
+ i[3456]86-*-pe | i[3456]86-*-cygwin32)
+ xm_file="${xm_file} i386/xm-cygwin32.h"
+ tmake_file=i386/t-cygwin32
+ tm_file=i386/cygwin32.h
+ xmake_file=i386/x-cygwin32
+ extra_objs=winnt.o
+ fixincludes=Makefile.in
+ if [ x$enable_threads = xyes ]; then
+ thread_file='win32'
+ fi
+ exeext=.exe
+ ;;
+ i[3456]86-*-mingw32)
+ tm_file=i386/mingw32.h
+ xm_file="${xm_file} i386/xm-mingw32.h"
+ tmake_file=i386/t-cygwin32
+ extra_objs=winnt.o
+ xmake_file=i386/x-cygwin32
+ fixincludes=Makefile.in
+ if [ x$enable_threads = xyes ]; then
+ thread_file='win32'
+ fi
+ exeext=.exe
+ ;;
+ i[3456]86-*-winnt3*)
+ tm_file=i386/win-nt.h
+ out_file=i386/i386.c
+ xm_file=i386/xm-winnt.h
+ xmake_file=winnt/x-winnt
+ tmake_file=i386/t-winnt
+ extra_host_objs="winnt.o oldnames.o"
+ extra_gcc_objs="spawnv.o oldnames.o"
+ fixincludes=fixinc.winnt
+ if [ x$gnu_ld != xyes ]
+ then
+ extra_programs=ld.exe
+ fi
+ if [ x$enable_threads = xyes ]; then
+ thread_file='win32'
+ fi
+ ;;
+ i[3456]86-dg-dgux)
+ xm_file=i386/xm-dgux.h
+ out_file=i386/dgux.c
+ tm_file=i386/dgux.h
+ tmake_file=i386/t-dgux
+ xmake_file=i386/x-dgux
+ fixincludes=fixinc.dgux
+ install_headers_dir=install-headers-cpio
+ ;;
+ i860-alliant-*) # Alliant FX/2800
+ tm_file="${tm_file} svr4.h i860/sysv4.h i860/fx2800.h"
+ xm_file="${xm_file} i860/xm-fx2800.h"
+ xmake_file=i860/x-fx2800
+ tmake_file=i860/t-fx2800
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ i860-*-bsd*)
+ tm_file="${tm_file} i860/bsd.h"
+ if [ x$gas = xyes ]
+ then
+ tm_file="${tm_file} i860/bsd-gas.h"
+ fi
+ use_collect2=yes
+ ;;
+ i860-*-mach*)
+ tm_file="${tm_file} i860/mach.h"
+ tmake_file=t-libc-ok
+ ;;
+ i860-*-osf*) # Intel Paragon XP/S, OSF/1AD
+ tm_file="${tm_file} svr3.h i860/paragon.h"
+ xm_file="${xm_file} xm-svr3.h"
+ tmake_file=t-osf
+ broken_install=yes
+ ;;
+ i860-*-sysv3*)
+ tm_file="${tm_file} svr3.h i860/sysv3.h"
+ xm_file="${tm_file} xm-svr3.h"
+ xmake_file=i860/x-sysv3
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ i860-*-sysv4*)
+ tm_file="${tm_file} svr4.h i860/sysv4.h"
+ xm_file="${xm_file} xm-svr3.h"
+ xmake_file=i860/x-sysv4
+ tmake_file=t-svr4
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ i960-wrs-vxworks5 | i960-wrs-vxworks5.0*)
+ tm_file="${tm_file} i960/vx960.h"
+ tmake_file=i960/t-vxworks960
+ use_collect2=yes
+ ;;
+ i960-wrs-vxworks5*)
+ tm_file="${tm_file} dbxcoff.h i960/i960-coff.h i960/vx960-coff.h"
+ tmake_file=i960/t-vxworks960
+ use_collect2=yes
+ ;;
+ i960-wrs-vxworks*)
+ tm_file="${tm_file} i960/vx960.h"
+ tmake_file=i960/t-vxworks960
+ use_collect2=yes
+ ;;
+ i960-*-coff*)
+ tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h"
+ tmake_file=i960/t-960bare
+ use_collect2=yes
+ ;;
+ i960-*-rtems)
+ tmake_file="i960/t-960bare t-rtems"
+ tm_file="${tm_file} dbxcoff.h i960/rtems.h"
+ use_collect2=yes
+ ;;
+ i960-*-*) # Default i960 environment.
+ use_collect2=yes
+ ;;
+ m32r-*-elf*)
+ extra_parts="crtinit.o crtfini.o"
+ ;;
+ m68000-convergent-sysv*)
+ tm_file=m68k/ctix.h
+ xm_file=m68k/xm-3b1.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68000-hp-bsd*) # HP 9000/200 running BSD
+ tm_file=m68k/hp2bsd.h
+ xmake_file=m68k/x-hp2bsd
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68000-hp-hpux*) # HP 9000 series 300
+ xm_file=m68k/xm-hp320.h
+ if [ x$gas = xyes ]
+ then
+ xmake_file=m68k/x-hp320g
+ tm_file=m68k/hp310g.h
+ else
+ xmake_file=m68k/x-hp320
+ tm_file=m68k/hp310.h
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68000-sun-sunos3*)
+ tm_file=m68k/sun2.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68000-sun-sunos4*)
+ tm_file=m68k/sun2o4.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68000-att-sysv*)
+ xm_file=m68k/xm-3b1.h
+ if [ x$gas = xyes ]
+ then
+ tm_file=m68k/3b1g.h
+ else
+ tm_file=m68k/3b1.h
+ fi
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-apple-aux*) # Apple Macintosh running A/UX
+ xm_file=m68k/xm-aux.h
+ tmake_file=m68k/t-aux
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ extra_headers=math-68881.h
+ extra_parts="crt1.o mcrt1.o maccrt1.o crt2.o crtn.o"
+ tm_file=
+ if [ "$gnu_ld" = yes ]
+ then
+ tm_file="${tm_file} m68k/auxgld.h"
+ else
+ tm_file="${tm_file} m68k/auxld.h"
+ fi
+ if [ "$gas" = yes ]
+ then
+ tm_file="${tm_file} m68k/auxgas.h"
+ else
+ tm_file="${tm_file} m68k/auxas.h"
+ fi
+ tm_file="${tm_file} m68k/a-ux.h"
+ ;;
+ m68k-apollo-*)
+ tm_file=m68k/apollo68.h
+ xmake_file=m68k/x-apollo68
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-altos-sysv*) # Altos 3068
+ if [ x$gas = xyes ]
+ then
+ tm_file=m68k/altos3068.h
+ xm_file=m68k/xm-altos3068.h
+ else
+ echo "The Altos is supported only with the GNU assembler" 1>&2
+ exit 1
+ fi
+ extra_headers=math-68881.h
+ ;;
+ m68k-bull-sysv*) # Bull DPX/2
+ if [ x$gas = xyes ]
+ then
+ if [ x$stabs = xyes ]
+ then
+ tm_file=m68k/dpx2cdbx.h
+ else
+ tm_file=m68k/dpx2g.h
+ fi
+ else
+ tm_file=m68k/dpx2.h
+ fi
+ xm_file=m68k/xm-m68kv.h
+ xmake_file=m68k/x-dpx2
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-atari-sysv4*) # Atari variant of V.4.
+ tm_file=m68k/atari.h
+ xm_file=m68k/xm-atari.h
+ tmake_file=t-svr4
+ extra_parts="crtbegin.o crtend.o"
+ extra_headers=math-68881.h
+ ;;
+ m68k-motorola-sysv*)
+ tm_file=m68k/mot3300.h
+ xm_file=m68k/xm-mot3300.h
+ if [ x$gas = xyes ]
+ then
+ xmake_file=m68k/x-mot3300-gas
+ if [ x$gnu_ld = xyes ]
+ then
+ tmake_file=m68k/t-mot3300-gald
+ else
+ tmake_file=m68k/t-mot3300-gas
+ use_collect2=yes
+ fi
+ else
+ xmake_file=m68k/x-mot3300
+ if [ x$gnu_ld = xyes ]
+ then
+ tmake_file=m68k/t-mot3300-gld
+ else
+ tmake_file=m68k/t-mot3300
+ use_collect2=yes
+ fi
+ fi
+ gdb_needs_out_file_path=yes
+ extra_parts="crt0.o mcrt0.o"
+ extra_headers=math-68881.h
+ ;;
+ m68k-ncr-sysv*) # NCR Tower 32 SVR3
+ tm_file=m68k/tower-as.h
+ xm_file=m68k/xm-tower.h
+ xmake_file=m68k/x-tower
+ extra_parts="crtbegin.o crtend.o"
+ extra_headers=math-68881.h
+ ;;
+ m68k-plexus-sysv*)
+ tm_file=m68k/plexus.h
+ xm_file=m68k/xm-plexus.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-tti-*)
+ tm_file=m68k/pbb.h
+ xm_file=m68k/xm-m68kv.h
+ extra_headers=math-68881.h
+ ;;
+ m68k-crds-unos*)
+ xm_file=m68k/xm-crds.h
+ xmake_file=m68k/x-crds
+ tm_file=m68k/crds.h
+ broken_install=yes
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-cbm-sysv4*) # Commodore variant of V.4.
+ tm_file=m68k/amix.h
+ xm_file=m68k/xm-amix.h
+ xmake_file=m68k/x-amix
+ tmake_file=t-svr4
+ extra_parts="crtbegin.o crtend.o"
+ extra_headers=math-68881.h
+ ;;
+ m68k-ccur-rtu)
+ tm_file=m68k/ccur-GAS.h
+ xmake_file=m68k/x-ccur
+ extra_headers=math-68881.h
+ use_collect2=yes
+ broken_install=yes
+ ;;
+ m68k-hp-bsd4.4*) # HP 9000/3xx running 4.4bsd
+ tm_file=m68k/hp3bsd44.h
+ xmake_file=m68k/x-hp3bsd44
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-hp-bsd*) # HP 9000/3xx running Berkeley Unix
+ tm_file=m68k/hp3bsd.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-isi-bsd*)
+ if [ x$with_fp = xno ]
+ then
+ tm_file=m68k/isi-nfp.h
+ else
+ tm_file=m68k/isi.h
+ fi
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-hp-hpux7*) # HP 9000 series 300 running HPUX version 7.
+ xm_file=m68k/xm-hp320.h
+ if [ x$gas = xyes ]
+ then
+ xmake_file=m68k/x-hp320g
+ tm_file=m68k/hp320g.h
+ else
+ xmake_file=m68k/x-hp320
+ tm_file=m68k/hpux7.h
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-hp-hpux*) # HP 9000 series 300
+ xm_file=m68k/xm-hp320.h
+ if [ x$gas = xyes ]
+ then
+ xmake_file=m68k/x-hp320g
+ tm_file=m68k/hp320g.h
+ else
+ xmake_file=m68k/x-hp320
+ tm_file=m68k/hp320.h
+ fi
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-sun-mach*)
+ tm_file=m68k/sun3mach.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-sony-newsos3*)
+ if [ x$gas = xyes ]
+ then
+ tm_file=m68k/news3gas.h
+ else
+ tm_file=m68k/news3.h
+ fi
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-sony-bsd* | m68k-sony-newsos*)
+ if [ x$gas = xyes ]
+ then
+ tm_file=m68k/newsgas.h
+ else
+ tm_file=m68k/news.h
+ fi
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-next-nextstep2*)
+ tm_file=m68k/next21.h
+ xm_file=m68k/xm-next.h
+ tmake_file=m68k/t-next
+ xmake_file=m68k/x-next
+ extra_objs=nextstep.o
+ extra_headers=math-68881.h
+ use_collect2=yes
+ ;;
+ m68k-next-nextstep3*)
+ tm_file=m68k/next.h
+ xm_file=m68k/xm-next.h
+ tmake_file=m68k/t-next
+ xmake_file=m68k/x-next
+ extra_objs=nextstep.o
+ extra_headers=math-68881.h
+ if [ x$enable_threads = xyes ]; then
+ thread_file='mach'
+ fi
+ ;;
+ m68k-sun-sunos3*)
+ if [ x$with_fp = xno ]
+ then
+ tm_file=m68k/sun3n3.h
+ else
+ tm_file=m68k/sun3o3.h
+ fi
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-sun-sunos*) # For SunOS 4 (the default).
+ if [ x$with_fp = xno ]
+ then
+ tm_file=m68k/sun3n.h
+ else
+ tm_file=m68k/sun3.h
+ fi
+ xm_file=m68k/xm-sun3.h
+ use_collect2=yes
+ extra_headers=math-68881.h
+ ;;
+ m68k-wrs-vxworks*)
+ tm_file=m68k/vxm68k.h
+ tmake_file=m68k/t-vxworks68
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-aout*)
+ tmake_file=m68k/t-m68kbare
+ tm_file="m68k/m68k-aout.h libgloss.h"
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-coff*)
+ tmake_file=m68k/t-m68kbare
+ tm_file="m68k/m68k-coff.h dbx.h libgloss.h"
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-lynxos*)
+ if [ x$gas = xyes ]
+ then
+ tm_file=m68k/lynx.h
+ else
+ tm_file=m68k/lynx-ng.h
+ fi
+ xm_file=m68k/xm-lynx.h
+ xmake_file=x-lynx
+ tmake_file=m68k/t-lynx
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-netbsd*)
+ tm_file=m68k/netbsd.h
+ xm_file=m68k/xm-netbsd.h
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ tmake_file=t-netbsd
+ ;;
+ m68k-*-sysv3*) # Motorola m68k's running system V.3
+ xm_file=m68k/xm-m68kv.h
+ xmake_file=m68k/x-m68kv
+ extra_parts="crtbegin.o crtend.o"
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-sysv4*) # Motorola m68k's running system V.4
+ tm_file=m68k/m68kv4.h
+ xm_file=m68k/xm-m68kv.h
+ tmake_file=t-svr4
+ extra_parts="crtbegin.o crtend.o"
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-linux-gnuaout*) # Motorola m68k's running Linux
+ xm_file=m68k/xm-linux.h # with a.out format
+ xmake_file=x-linux
+ tm_file=m68k/linux-aout.h
+ tmake_file="t-linux-aout m68k/t-linux-aout"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ extra_headers=math-68881.h
+ gnu_ld=yes
+ ;;
+ m68k-*-linux-gnulibc1) # Motorola m68k's running Linux
+ xm_file=m68k/xm-linux.h # with ELF format using the
+ xmake_file=x-linux # Linux C library 5
+ tm_file=m68k/linux.h
+ tmake_file="t-linux t-linux-gnulibc1 m68k/t-linux"
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ extra_headers=math-68881.h
+ gnu_ld=yes
+ ;;
+ m68k-*-linux-gnu*) # Motorola m68k's running Linux
+ xm_file=m68k/xm-linux.h # with ELF format using glibc 2
+ xmake_file=x-linux # aka the Linux C library 6.
+ tm_file=m68k/linux.h
+ tmake_file="t-linux m68k/t-linux"
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ extra_headers=math-68881.h
+ gnu_ld=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='posix'
+ fi
+ ;;
+ m68k-*-psos*)
+ tmake_file=m68k/t-m68kbare
+ tm_file=m68k/m68k-psos.h
+ extra_headers=math-68881.h
+ ;;
+ m68k-*-rtems*)
+ tmake_file="m68k/t-m68kbare t-rtems"
+ tm_file=m68k/rtems.h
+ extra_headers=math-68881.h
+ ;;
+
+ m88k-dg-dgux*)
+ case $machine in
+ m88k-dg-dguxbcs*)
+ tm_file=m88k/dguxbcs.h
+ tmake_file=m88k/t-dguxbcs
+ ;;
+ *)
+ tm_file=m88k/dgux.h
+ tmake_file=m88k/t-dgux
+ ;;
+ esac
+ extra_parts="crtbegin.o bcscrtbegin.o crtend.o m88kdgux.ld"
+ broken_install=yes
+ xmake_file=m88k/x-dgux
+ if [ x$gas = xyes ]
+ then
+ tmake_file=m88k/t-dgux-gas
+ fi
+ fixincludes=fixinc.dgux
+ ;;
+ m88k-dolphin-sysv3*)
+ tm_file=m88k/dolph.h
+ extra_parts="crtbegin.o crtend.o"
+ xm_file=m88k/xm-sysv3.h
+ xmake_file=m88k/x-dolph
+ if [ x$gas = xyes ]
+ then
+ tmake_file=m88k/t-m88k-gas
+ fi
+ ;;
+ m88k-tektronix-sysv3)
+ tm_file=m88k/tekXD88.h
+ extra_parts="crtbegin.o crtend.o"
+ xm_file=m88k/xm-sysv3.h
+ xmake_file=m88k/x-tekXD88
+ if [ x$gas = xyes ]
+ then
+ tmake_file=m88k/t-m88k-gas
+ fi
+ ;;
+ m88k-*-aout*)
+ tm_file=m88k/m88k-aout.h
+ ;;
+ m88k-*-coff*)
+ tm_file=m88k/m88k-coff.h
+ tmake_file=m88k/t-bug
+ ;;
+ m88k-*-luna*)
+ tm_file=m88k/luna.h
+ extra_parts="crtbegin.o crtend.o"
+ if [ x$gas = xyes ]
+ then
+ tmake_file=m88k/t-luna-gas
+ else
+ tmake_file=m88k/t-luna
+ fi
+ ;;
+ m88k-*-sysv3*)
+ tm_file=m88k/sysv3.h
+ extra_parts="crtbegin.o crtend.o"
+ xm_file=m88k/xm-sysv3.h
+ xmake_file=m88k/x-sysv3
+ if [ x$gas = xyes ]
+ then
+ tmake_file=m88k/t-m88k-gas
+ fi
+ ;;
+ m88k-*-sysv4*)
+ tm_file=m88k/sysv4.h
+ extra_parts="crtbegin.o crtend.o"
+ xmake_file=m88k/x-sysv4
+ tmake_file=m88k/t-sysv4
+ ;;
+ mips-sgi-irix6*) # SGI System V.4., IRIX 6
+ tm_file=mips/iris6.h
+ xm_file=mips/xm-iris6.h
+ broken_install=yes
+ fixincludes=fixinc.irix
+ xmake_file=mips/x-iris6
+ tmake_file=mips/t-iris6
+ if [ x$enable_threads = xyes ]; then
+ thread_file='irix'
+ fi
+ ;;
+ mips-sgi-irix5cross64) # Irix5 host, Irix 6 target, cross64
+ tm_file=mips/cross64.h
+ xm_file=mips/xm-iris5.h
+ broken_install=yes
+ fixincludes=Makefile.in
+ xmake_file=mips/x-iris
+ tmake_file=mips/t-cross64
+ # See comment in mips/iris[56].h files.
+ use_collect2=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='irix'
+ fi
+ ;;
+ mips-sni-sysv4)
+ if [ x$gas = xyes ]
+ then
+ if [ x$stabs = xyes ]
+ then
+ tm_file=mips/iris5gdb.h
+ else
+ tm_file=mips/sni-gas.h
+ fi
+ else
+ tm_file=mips/sni-svr4.h
+ fi
+ xm_file=mips/xm-sysv.h
+ xmake_file=mips/x-sni-svr4
+ tmake_file=mips/t-mips-gas
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-sgi-irix5*) # SGI System V.4., IRIX 5
+ if [ x$gas = xyes ]
+ then
+ tm_file=mips/iris5gas.h
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ else
+ tm_file=mips/iris5.h
+ fi
+ xm_file=mips/xm-iris5.h
+ broken_install=yes
+ fixincludes=fixinc.irix
+ xmake_file=mips/x-iris
+ # mips-tfile doesn't work yet
+ tmake_file=mips/t-mips-gas
+ # See comment in mips/iris5.h file.
+ use_collect2=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='irix'
+ fi
+ ;;
+ mips-sgi-irix4loser*) # Mostly like a MIPS.
+ tm_file=mips/iris4loser.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-iris4.h
+ broken_install=yes
+ xmake_file=mips/x-iris
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ if [ x$enable_threads = xyes ]; then
+ thread_file='irix'
+ fi
+ ;;
+ mips-sgi-irix4*) # Mostly like a MIPS.
+ tm_file=mips/iris4.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-iris4.h
+ broken_install=yes
+ xmake_file=mips/x-iris
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ if [ x$enable_threads = xyes ]; then
+ thread_file='irix'
+ fi
+ ;;
+ mips-sgi-*) # Mostly like a MIPS.
+ tm_file=mips/iris3.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-iris3.h
+ broken_install=yes
+ xmake_file=mips/x-iris3
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ ;;
+ mips-dec-osfrose*) # Decstation running OSF/1 reference port with OSF/rose.
+ tm_file=mips/osfrose.h
+ xmake_file=mips/x-osfrose
+ tmake_file=mips/t-osfrose
+ extra_objs=halfpic.o
+ use_collect2=yes
+ ;;
+ mips-dec-osf*) # Decstation running OSF/1 as shipped by DIGITAL
+ tm_file=mips/dec-osf1.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xmake_file=mips/x-dec-osf1
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ tmake_file=mips/t-ultrix
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ ;;
+ mips-dec-bsd*) # Decstation running 4.4 BSD
+ tm_file=mips/dec-bsd.h
+ fixincludes=
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ tmake_file=mips/t-ultrix
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ ;;
+ mips-dec-netbsd*) # Decstation running NetBSD
+ tm_file=mips/netbsd.h
+ xm_file=mips/xm-netbsd.h
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ tmake_file=t-netbsd
+ if [ x$prefix = xNONE ]; then
+ prefix=$native_prefix
+ fi
+ prefix=$native_prefix
+ ;;
+ mips-sony-bsd* | mips-sony-newsos*) # Sony NEWS 3600 or risc/news.
+ tm_file=mips/news4.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ xmake_file=mips/x-sony
+ ;;
+ mips-sony-sysv*) # Sony NEWS 3800 with NEWSOS5.0.
+ # That is based on svr4.
+ # t-svr4 is not right because this system doesn't use ELF.
+ tm_file=mips/news5.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-news.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ ;;
+ mips-tandem-sysv4*) # Tandem S2 running NonStop UX
+ tm_file=mips/svr4-t.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-sysv4.h
+ xmake_file=mips/x-sysv
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ extra_parts="crtbegin.o crtend.o"
+ else
+ tmake_file=mips/t-mips
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-ultrix* | mips-dec-mach3) # Decstation.
+ tm_file=mips/ultrix.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xmake_file=mips/x-ultrix
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ tmake_file=mips/t-ultrix
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ ;;
+ mips-*-riscos[56789]bsd*)
+ tm_file=mips/bsd-5.h # MIPS BSD 4.3, RISC-OS 5.0
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-bsd-gas
+ else
+ tmake_file=mips/t-bsd
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-bsd* | mips-*-riscosbsd* | mips-*-riscos[1234]bsd*)
+ tm_file=mips/bsd-4.h # MIPS BSD 4.3, RISC-OS 4.0
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-bsd-gas
+ else
+ tmake_file=mips/t-bsd
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-riscos[56789]sysv4*)
+ tm_file=mips/svr4-5.h # MIPS System V.4., RISC-OS 5.0
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-sysv4.h
+ xmake_file=mips/x-sysv
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-svr4-gas
+ else
+ tmake_file=mips/t-svr4
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-sysv4* | mips-*-riscos[1234]sysv4* | mips-*-riscossysv4*)
+ tm_file=mips/svr4-4.h # MIPS System V.4. RISC-OS 4.0
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-sysv.h
+ xmake_file=mips/x-sysv
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-svr4-gas
+ else
+ tmake_file=mips/t-svr4
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-riscos[56789]sysv*)
+ tm_file=mips/svr3-5.h # MIPS System V.3, RISC-OS 5.0
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-sysv.h
+ xmake_file=mips/x-sysv
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-svr3-gas
+ else
+ tmake_file=mips/t-svr3
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-sysv* | mips-*-riscos*sysv*)
+ tm_file=mips/svr3-4.h # MIPS System V.3, RISC-OS 4.0
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ xm_file=mips/xm-sysv.h
+ xmake_file=mips/x-sysv
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-svr3-gas
+ else
+ tmake_file=mips/t-svr3
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-riscos[56789]*) # Default MIPS RISC-OS 5.0.
+ tm_file=mips/mips-5.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ broken_install=yes
+ ;;
+ mips-*-gnu*)
+ ;;
+ mipsel-*-ecoff*)
+ tm_file=mips/ecoffl.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ tmake_file=mips/t-ecoff
+ ;;
+ mips-*-ecoff*)
+ tm_file=mips/ecoff.h
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ tmake_file=mips/t-ecoff
+ broken_install=yes
+ ;;
+ mipsel-*-elf*)
+ tm_file="mips/elfl.h libgloss.h"
+ tmake_file=mips/t-ecoff
+ ;;
+ mips-*-elf*)
+ tm_file="mips/elf.h libgloss.h"
+ tmake_file=mips/t-ecoff
+ ;;
+ mips64el-*-elf*)
+ tm_file="mips/elfl64.h libgloss.h"
+ tmake_file=mips/t-ecoff
+ ;;
+ mips64orionel-*-elf*)
+ tm_file="mips/elflorion.h libgloss.h"
+ tmake_file=mips/t-ecoff
+ ;;
+ mips64-*-elf*)
+ tm_file="mips/elf64.h libgloss.h"
+ tmake_file=mips/t-ecoff
+ ;;
+ mips64orion-*-elf*)
+ tm_file="mips/elforion.h libgloss.h"
+ tmake_file=mips/t-ecoff
+ ;;
+ mips64orion-*-rtems*)
+ tm_file=mips/rtems64.h
+ tmake_file="mips/t-ecoff t-rtems"
+ ;;
+ mips-*-*) # Default MIPS RISC-OS 4.0.
+ if [ x$stabs = xyes ]; then
+ tm_file="${tm_file} dbx.h"
+ fi
+ if [ x$gas = xyes ]
+ then
+ tmake_file=mips/t-mips-gas
+ else
+ extra_passes="mips-tfile mips-tdump"
+ fi
+ if [ x$gnu_ld != xyes ]
+ then
+ use_collect2=yes
+ fi
+ ;;
+ mn10200-*-*)
+ cpu_type=mn10200
+ tm_file="mn10200/mn10200.h"
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ use_collect2=no
+ ;;
+ mn10300-*-*)
+ cpu_type=mn10300
+ tm_file="mn10300/mn10300.h"
+ if [ x$stabs = xyes ]
+ then
+ tm_file="${tm_file} dbx.h"
+ fi
+ use_collect2=no
+ ;;
+ ns32k-encore-bsd*)
+ tm_file=ns32k/encore.h
+ use_collect2=yes
+ ;;
+ ns32k-sequent-bsd*)
+ tm_file=ns32k/sequent.h
+ use_collect2=yes
+ ;;
+ ns32k-tek6100-bsd*)
+ tm_file=ns32k/tek6100.h
+ broken_install=yes
+ use_collect2=yes
+ ;;
+ ns32k-tek6200-bsd*)
+ tm_file=ns32k/tek6200.h
+ broken_install=yes
+ use_collect2=yes
+ ;;
+# This has not been updated to GCC 2.
+# ns32k-ns-genix*)
+# xm_file=ns32k/xm-genix.h
+# xmake_file=ns32k/x-genix
+# tm_file=ns32k/genix.h
+# broken_install=yes
+# use_collect2=yes
+# ;;
+ ns32k-merlin-*)
+ tm_file=ns32k/merlin.h
+ use_collect2=yes
+ ;;
+ ns32k-pc532-mach*)
+ tm_file=ns32k/pc532-mach.h
+ use_collect2=yes
+ ;;
+ ns32k-pc532-minix*)
+ tm_file=ns32k/pc532-min.h
+ xm_file=ns32k/xm-pc532-min.h
+ use_collect2=yes
+ ;;
+ ns32k-pc532-netbsd*)
+ tm_file=ns32k/netbsd.h
+ xm_file=ns32k/xm-netbsd.h
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ tmake_file=t-netbsd
+ ;;
+ pdp11-*-bsd)
+ tm_file="${tm_file} pdp11/2bsd.h"
+ ;;
+ pdp11-*-*)
+ ;;
+ pyramid-*-*)
+ cpu_type=pyr
+ xmake_file=pyr/x-pyr
+ use_collect2=yes
+ ;;
+ romp-*-aos*)
+ use_collect2=yes
+ ;;
+ romp-*-mach*)
+ xmake_file=romp/x-mach
+ use_collect2=yes
+ ;;
+ powerpc-*-sysv* | powerpc-*-elf*)
+ tm_file=rs6000/sysv4.h
+ xm_file=rs6000/xm-sysv4.h
+ extra_headers=ppc-asm.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
+ fi
+ xmake_file=rs6000/x-sysv4
+ ;;
+ powerpc-*-eabiaix*)
+ tm_file=rs6000/eabiaix.h
+ tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ fixincludes=Makefile.in
+ extra_headers=ppc-asm.h
+ ;;
+ powerpc-*-eabisim*)
+ tm_file=rs6000/eabisim.h
+ tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ fixincludes=Makefile.in
+ extra_headers=ppc-asm.h
+ ;;
+ powerpc-*-eabi*)
+ tm_file=rs6000/eabi.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
+ fi
+ fixincludes=Makefile.in
+ extra_headers=ppc-asm.h
+ ;;
+ powerpc-*-rtems*)
+ tm_file=rs6000/rtems.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcgas t-rtems rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc t-rtems rs6000/t-ppccomm"
+ fi
+ fixincludes=Makefile.in
+ extra_headers=ppc-asm.h
+ ;;
+ powerpc-*-linux-gnu*)
+ tm_file=rs6000/linux.h
+ xm_file=rs6000/xm-sysv4.h
+ out_file=rs6000/rs6000.c
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcos t-linux rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc t-linux rs6000/t-ppccomm"
+ fi
+ xmake_file=x-linux
+ fixincludes=Makefile.in
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ extra_headers=ppc-asm.h
+ if [ x$enable_threads = xyes ]; then
+ thread_file='posix'
+ fi
+ ;;
+ powerpc-*-vxworks*)
+ cpu_type=rs6000
+ xm_file=rs6000/xm-sysv4.h
+ tm_file=rs6000/vxppc.h
+ tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ extra_headers=ppc-asm.h
+ ;;
+ powerpcle-*-sysv* | powerpcle-*-elf*)
+ tm_file=rs6000/sysv4le.h
+ xm_file=rs6000/xm-sysv4.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
+ fi
+ xmake_file=rs6000/x-sysv4
+ extra_headers=ppc-asm.h
+ ;;
+ powerpcle-*-eabisim*)
+ tm_file=rs6000/eabilesim.h
+ tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ fixincludes=Makefile.in
+ extra_headers=ppc-asm.h
+ ;;
+ powerpcle-*-eabi*)
+ tm_file=rs6000/eabile.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
+ fi
+ fixincludes=Makefile.in
+ extra_headers=ppc-asm.h
+ ;;
+ powerpcle-*-winnt* )
+ tm_file=rs6000/win-nt.h
+ tmake_file=rs6000/t-winnt
+# extra_objs=pe.o
+ fixincludes=Makefile.in
+ if [ x$enable_threads = xyes ]; then
+ thread_file='win32'
+ fi
+ extra_headers=ppc-asm.h
+ ;;
+ powerpcle-*-pe | powerpcle-*-cygwin32)
+ tm_file=rs6000/cygwin32.h
+ xm_file=rs6000/xm-cygwin32.h
+ tmake_file=rs6000/t-winnt
+ xmake_file=rs6000/x-cygwin32
+# extra_objs=pe.o
+ fixincludes=Makefile.in
+ if [ x$enable_threads = xyes ]; then
+ thread_file='win32'
+ fi
+ exeext=.exe
+ extra_headers=ppc-asm.h
+ ;;
+ powerpcle-*-solaris2*)
+ tm_file=rs6000/sol2.h
+ xm_file=rs6000/xm-sysv4.h
+ if [ x$gas = xyes ]
+ then
+ tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
+ else
+ tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
+ fi
+ xmake_file=rs6000/x-sysv4
+ fixincludes=fixinc.svr4
+ extra_headers=ppc-asm.h
+ ;;
+ rs6000-ibm-aix3.[01]*)
+ tm_file=rs6000/aix31.h
+ xmake_file=rs6000/x-aix31
+ use_collect2=yes
+ ;;
+ rs6000-ibm-aix3.2.[456789]* | powerpc-ibm-aix3.2.[456789]*)
+ tm_file=rs6000/aix3newas.h
+ if [ x$host != x$target ]
+ then
+ tmake_file=rs6000/t-xnewas
+ else
+ tmake_file=rs6000/t-newas
+ fi
+ use_collect2=yes
+ ;;
+ rs6000-ibm-aix[456789].* | powerpc-ibm-aix[456789].*)
+ tm_file=rs6000/aix41.h
+ if [ x$host != x$target ]
+ then
+ tmake_file=rs6000/t-xnewas
+ else
+ tmake_file=rs6000/t-newas
+ fi
+ xmake_file=rs6000/x-aix31
+ use_collect2=yes
+ ;;
+ rs6000-ibm-aix*)
+ use_collect2=yes
+ ;;
+ rs6000-bull-bosx)
+ use_collect2=yes
+ ;;
+ rs6000-*-mach*)
+ tm_file=rs6000/mach.h
+ xm_file=rs6000/xm-mach.h
+ xmake_file=rs6000/x-mach
+ use_collect2=yes
+ ;;
+ rs6000-*-lynxos*)
+ tm_file=rs6000/lynx.h
+ xm_file=rs6000/xm-lynx.h
+ tmake_file=rs6000/t-rs6000
+ xmake_file=rs6000/x-lynx
+ use_collect2=yes
+ ;;
+ sh-*-elf*)
+ tm_file=sh/elf.h
+ float_format=sh
+ ;;
+ sh-*-*)
+ float_format=sh
+ ;;
+ sparc-tti-*)
+ tm_file=sparc/pbd.h
+ xm_file=sparc/xm-pbd.h
+ ;;
+ sparc-wrs-vxworks* | sparclite-wrs-vxworks*)
+ tm_file=sparc/vxsparc.h
+ tmake_file=sparc/t-vxsparc
+ use_collect2=yes
+ ;;
+ sparc-*-aout*)
+ tmake_file=sparc/t-sparcbare
+ tm_file="sparc/aout.h libgloss.h"
+ ;;
+ sparc-*-netbsd*)
+ tm_file=sparc/netbsd.h
+ xm_file=sparc/xm-netbsd.h
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ tmake_file=t-netbsd
+ ;;
+ sparc-*-bsd*)
+ tm_file=sparc/bsd.h
+ ;;
+ sparc-*-linux-gnuaout*) # Sparc's running Linux, a.out
+ xm_file=sparc/xm-linux.h
+ tm_file=sparc/linux-aout.h
+ xmake_file=x-linux
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ ;;
+ sparc-*-linux-gnulibc1*) # Sparc's running Linux
+ xm_file=sparc/xm-linux.h # with ELF format using the
+ xmake_file=x-linux # Linux C library 5.
+ tm_file=sparc/linux.h
+ tmake_file="t-linux t-linux-gnulibc1 sparc/t-linux"
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ ;;
+ sparc-*-linux-gnu*) # Sparc's running Linux
+ xm_file=sparc/xm-linux.h # with ELF format using glibc 2
+ xmake_file=x-linux # aka the Linux C library 6.
+ tm_file=sparc/linux.h
+ tmake_file="t-linux sparc/t-linux"
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ fixincludes=Makefile.in #On Linux, the headers are ok already.
+ broken_install=yes
+ gnu_ld=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='posix'
+ fi
+ ;;
+ sparc-*-lynxos*)
+ if [ x$gas = xyes ]
+ then
+ tm_file=sparc/lynx.h
+ else
+ tm_file=sparc/lynx-ng.h
+ fi
+ xm_file=sparc/xm-lynx.h
+ tmake_file=sparc/t-sunos41
+ xmake_file=x-lynx
+ ;;
+ sparc-*-rtems*)
+ tmake_file="sparc/t-sparcbare t-rtems"
+ tm_file=sparc/rtems.h
+ ;;
+ sparc-*-solaris2*)
+ tm_file=sparc/sol2.h
+ xm_file=sparc/xm-sol2.h
+ tmake_file=sparc/t-sol2
+ xmake_file=sparc/x-sysv4
+ extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
+ fixincludes=fixinc.svr4
+ broken_install=yes
+ if [ x$enable_threads = xyes ]; then
+ thread_file='solaris'
+ fi
+ ;;
+ sparc-*-sunos4.0*)
+ tm_file=sparc/sunos4.h
+ tmake_file=sparc/t-sunos40
+ use_collect2=yes
+ ;;
+ sparc-*-sunos4*)
+ tm_file=sparc/sunos4.h
+ tmake_file=sparc/t-sunos41
+ use_collect2=yes
+ ;;
+ sparc-*-sunos3*)
+ tm_file=sparc/sun4o3.h
+ use_collect2=yes
+ ;;
+ sparc-*-sysv4*)
+ tm_file=sparc/sysv4.h
+ xm_file=sparc/xm-sysv4.h
+ tmake_file=t-svr4
+ xmake_file=sparc/x-sysv4
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ sparc-*-vxsim*)
+ xm_file=sparc/xm-sol2.h
+ tm_file=sparc/vxsim.h
+ tmake_file=sparc/t-vxsparc
+ xmake_file=sparc/x-sysv4
+ ;;
+ sparclet-*-aout*)
+ tm_file="sparc/splet.h libgloss.h"
+ tmake_file=sparc/t-splet
+ ;;
+ sparclite-*-coff*)
+ tm_file="sparc/litecoff.h libgloss.h"
+ tmake_file=sparc/t-sparclite
+ ;;
+ sparclite-*-aout*)
+ tm_file="sparc/lite.h aoutos.h libgloss.h"
+ tmake_file=sparc/t-sparclite
+ ;;
+ sparc64-*-aout*)
+ tmake_file=sparc/t-sp64
+ tm_file=sparc/sp64-aout.h
+ ;;
+ sparc64-*-elf*)
+ tmake_file=sparc/t-sp64
+ tm_file=sparc/sp64-elf.h
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+# This hasn't been upgraded to GCC 2.
+# tahoe-harris-*) # Harris tahoe, using COFF.
+# tm_file=tahoe/harris.h
+# ;;
+# tahoe-*-bsd*) # tahoe running BSD
+# ;;
+# This hasn't been upgraded to GCC 2.
+# tron-*-*)
+# cpu_type=gmicro
+# use_collect2=yes
+# ;;
+ vax-*-bsd*) # vaxen running BSD
+ use_collect2=yes
+ float_format=vax
+ ;;
+ vax-*-sysv*) # vaxen running system V
+ tm_file="${tm_file} vax/vaxv.h"
+ xm_file="${tm_file} vax/xm-vaxv.h"
+ float_format=vax
+ ;;
+ vax-*-netbsd*)
+ tm_file="${tm_file} netbsd.h vax/netbsd.h"
+ xm_file="${xm_file} xm-netbsd.h"
+ # On NetBSD, the headers are already okay.
+ fixincludes=Makefile.in
+ tmake_file=t-netbsd
+ float_format=vax
+ ;;
+ vax-*-ultrix*) # vaxen running ultrix
+ tm_file="${tm_file} vax/ultrix.h"
+ use_collect2=yes
+ float_format=vax
+ ;;
+ vax-*-vms*) # vaxen running VMS
+ xm_file=vax/xm-vms.h
+ tm_file=vax/vms.h
+ float_format=vax
+ ;;
+ vax-*-*) # vax default entry
+ float_format=vax
+ ;;
+ we32k-att-sysv*)
+ xm_file="${xm_file} xm-svr3"
+ use_collect2=yes
+ ;;
+ *)
+ echo "Configuration $machine not supported" 1>&2
+ exit 1
+ ;;
+ esac
+
+ case $machine in
+ *-*-linux-gnu*)
+ ;; # Existing Linux/GNU systems do not use the GNU setup.
+ *-*-gnu*)
+ # On the GNU system, the setup is just about the same on
+ # each different CPU. The specific machines that GNU
+ # supports are matched above and just set $cpu_type.
+ xm_file=${cpu_type}/xm-gnu.h
+ tm_file=${cpu_type}/gnu.h
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+ # GNU always uses ELF.
+ elf=yes
+ # GNU tools are the only tools.
+ gnu_ld=yes
+ gas=yes
+ # On GNU, the headers are already okay.
+ fixincludes=Makefile.in
+ xmake_file=x-linux # These details are the same as Linux.
+ tmake_file=t-gnu # These are not.
+ ;;
+ *-*-sysv4*)
+ fixincludes=fixinc.svr4
+ xmake_try_sysv=x-sysv
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ ;;
+ *-*-sysv*)
+ broken_install=yes
+ install_headers_dir=install-headers-cpio
+ ;;
+ esac
+
+ # Distinguish i[3456]86
+ # Also, do not run mips-tfile on MIPS if using gas.
+ # Process --with-cpu= for PowerPC/rs6000
+ target_cpu_default2=
+ case $machine in
+ i486-*-*)
+ target_cpu_default2=1
+ ;;
+ i586-*-*)
+ target_cpu_default2=2
+ ;;
+ i686-*-*)
+ target_cpu_default2=3
+ ;;
+ alpha*-*-*)
+ case $machine in
+ alphaev56*)
+ target_cpu_default2="MASK_CPU_EV5|MASK_BYTE_OPS"
+ ;;
+ alphaev5*)
+ target_cpu_default2="MASK_CPU_EV5"
+ ;;
+ esac
+
+ if [ x$gas = xyes ]
+ then
+ if [ x$target_cpu_default2 = x ]
+ then
+ target_cpu_default2="MASK_GAS"
+ else
+ target_cpu_default2="${target_cpu_default2}|MASK_GAS"
+ fi
+ fi
+ ;;
+ mips*-*-ecoff* | mips*-*-elf*)
+ if [ x$gas = xyes ]
+ then
+ if [ x$gnu_ld = xyes ]
+ then
+ target_cpu_default2=20
+ else
+ target_cpu_default2=16
+ fi
+ fi
+ ;;
+ mips*-*-*)
+ if [ x$gas = xyes ]
+ then
+ target_cpu_default2=16
+ fi
+ ;;
+ powerpc*-*-* | rs6000-*-*)
+ case "x$with_cpu" in
+ x)
+ ;;
+
+ xcommon | xpower | xpower2 | xpowerpc | xrios \
+ | xrios1 | xrios2 | xrsc | xrsc1 \
+ | x601 | x602 | x603 | x603e | x604 | x604e | x620 \
+ | x403 | x505 | x801 | x821 | x823 | x860)
+ target_cpu_default2="'\"$with_cpu\"'"
+ ;;
+
+ xyes | xno)
+ echo "--with-cpu must be passed a value" 1>&2
+ exit 1
+ ;;
+
+ *)
+ echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
+ exit 1
+ ;;
+ esac
+ ;;
+ sparc*-*-*)
+ case ".$with_cpu" in
+ .)
+ target_cpu_default2=TARGET_CPU_"`echo $machine | sed 's/-.*$//'`"
+ ;;
+ .supersparc | .ultrasparc | .v7 | .v8)
+ target_cpu_default2="TARGET_CPU_$with_cpu"
+ ;;
+ *)
+ echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
+ exit 1
+ ;;
+ esac
+ ;;
+ esac
+
+ if [ x$target_cpu_default2 != x ]
+ then
+ if [ x$target_cpu_default != x ]
+ then
+ target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
+ else
+ target_cpu_default=$target_cpu_default2
+ fi
+ fi
+
+ # No need for collect2 if we have the GNU linker.
+ case x$gnu_ld in
+ xyes)
+ use_collect2=
+ ;;
+ esac
+
+# Save data on machine being used to compile GCC in build_xm_file.
+# Save data on host machine in vars host_xm_file and host_xmake_file.
+ if [ x$pass1done = x ]
+ then
+ if [ x"$xm_file" = x ]
+ then build_xm_file=$cpu_type/xm-$cpu_type.h
+ else build_xm_file=$xm_file
+ fi
+ build_broken_install=$broken_install
+ build_install_headers_dir=$install_headers_dir
+ build_exeext=$exeext
+ pass1done=yes
+ else
+ if [ x$pass2done = x ]
+ then
+ if [ x"$xm_file" = x ]
+ then host_xm_file=$cpu_type/xm-$cpu_type.h
+ else host_xm_file=$xm_file
+ fi
+ if [ x"$xmake_file" = x ]
+ then xmake_file=$cpu_type/x-$cpu_type
+ fi
+ host_xmake_file="$xmake_file"
+ host_truncate_target=$truncate_target
+ host_extra_gcc_objs=$extra_gcc_objs
+ host_extra_objs=$extra_host_objs
+ pass2done=yes
+ fi
+ fi
+done
+
+extra_objs="${host_extra_objs} ${extra_objs}"
+
+# Default the target-machine variables that were not explicitly set.
+if [ x"$tm_file" = x ]
+then tm_file=$cpu_type/$cpu_type.h; fi
+
+if [ x$extra_headers = x ]
+then extra_headers=; fi
+
+if [ x"$xm_file" = x ]
+then xm_file=$cpu_type/xm-$cpu_type.h; fi
+
+md_file=$cpu_type/$cpu_type.md
+
+if [ x$out_file = x ]
+then out_file=$cpu_type/$cpu_type.c; fi
+
+if [ x"$tmake_file" = x ]
+then tmake_file=$cpu_type/t-$cpu_type
+fi
+
+if [ x$float_format = x ]
+then float_format=i64
+fi
+
+# Say what files are being used for the output code and MD file.
+echo "Using \`$srcdir/config/$out_file' to output insns."
+echo "Using \`$srcdir/config/$md_file' as machine description file."
+
+count=a
+for f in $tm_file; do
+ count=${count}x
+done
+if [ $count = ax ]; then
+ echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
+else
+ echo "Using the following target machine macro files:"
+ for f in $tm_file; do
+ echo " $srcdir/config/$f"
+ done
+fi
+
+count=a
+for f in $host_xm_file; do
+ count=${count}x
+done
+if [ $count = ax ]; then
+ echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
+else
+ echo "Using the following host machine macro files:"
+ for f in $host_xm_file; do
+ echo " $srcdir/config/$f"
+ done
+fi
+
+if [ "$host_xm_file" != "$build_xm_file" ]; then
+ count=a
+ for f in $build_xm_file; do
+ count=${count}x
+ done
+ if [ $count = ax ]; then
+ echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
+ else
+ echo "Using the following build machine macro files:"
+ for f in $build_xm_file; do
+ echo " $srcdir/config/$f"
+ done
+ fi
+fi
+
+if [ x$thread_file = x ]
+then thread_file='single'
+fi
+
+# Set up the header files.
+# $links is the list of header files to create.
+# $vars is the list of shell variables with file names to include.
+# config2.h is the old config.h. It is included by the new config.h which
+# created from config.in. The goal is to simplify the transition to autoconf.
+vars="host_xm_file tm_file xm_file build_xm_file"
+links="config2.h tm.h tconfig.h hconfig.h"
+
+rm -f config.bak
+if [ -f config.status ]; then mv -f config.status config.bak; fi
+
+# Make the links.
+while [ -n "$vars" ]
+do
+ # set file to car of files, files to cdr of files
+ set $vars; var=$1; shift; vars=$*
+ set $links; link=$1; shift; links=$*
+
+ rm -f $link
+
+ # Define TARGET_CPU_DEFAULT if the system wants one.
+ # This substitutes for lots of *.h files.
+ if [ x$target_cpu_default != x -a $link = tm.h ]
+ then
+ echo "#define TARGET_CPU_DEFAULT $target_cpu_default" >>$link
+ fi
+
+ for file in `eval echo '$'$var`; do
+ echo "#include \"$file\"" >>$link
+ done
+done
+
+# Truncate the target if necessary
+if [ x$host_truncate_target != x ]; then
+ target=`echo $target | sed -e 's/\(..............\).*/\1/'`
+fi
+
+# Get the version number from the toplevel
+version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < ${srcdir}/version.c`
+
+# Are we using gcc as the native compiler?
+case $host in
+*linux*) # All Linux's use gcc as the native compiler.
+ if [ x$prefix = xNONE ]; then
+ prefix=$native_prefix
+ fi
+ ;;
+esac
+
+# Get an absolute path to the GCC top-level source directory
+holddir=`pwd`
+cd $srcdir
+topdir=`pwd`
+cd $holddir
+
+# Conditionalize the makefile for this host machine.
+# Make-host contains the concatenation of all host makefile fragments
+# [there can be more than one]. This file is built by configure.frag.
+host_overrides=Make-host
+dep_host_xmake_file=
+for f in .. ${host_xmake_file}
+do
+ if [ -f ${srcdir}/config/$f ]
+ then
+ dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
+ fi
+done
+
+# Conditionalize the makefile for this target machine.
+# Make-target contains the concatenation of all host makefile fragments
+# [there can be more than one]. This file is built by configure.frag.
+target_overrides=Make-target
+dep_tmake_file=
+for f in .. ${tmake_file}
+do
+ if [ -f ${srcdir}/config/$f ]
+ then
+ dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
+ fi
+done
+
+# If the host doesn't support symlinks, modify CC in
+# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
+# Otherwise, we can use "CC=$(CC)".
+rm -f symtest.tem
+if $symbolic_link symtest1.tem symtest.tem 2>/dev/null
+then
+ cc_set_by_configure="\$(CC)"
+ stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
+else
+ cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
+ stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
+fi
+rm -f symtest.tem
+
+out_object_file=`basename $out_file .c`.o
+
+tm_file_list=
+for f in $tm_file; do
+ tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
+done
+
+host_xm_file_list=
+for f in $host_xm_file; do
+ host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
+done
+
+build_xm_file_list=
+for f in $build_xm_file; do
+ build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
+done
+
+# Define macro CROSS_COMPILE in compilation
+# if this is a cross-compiler.
+# Also use all.cross instead of all.internal
+# and add cross-make to Makefile.
+cross_overrides="/dev/null"
+if [ x$host != x$target ]
+then
+ cross_defines="CROSS=-DCROSS_COMPILE"
+ cross_overrides="${topdir}/cross-make"
+fi
+
+# When building gcc with a cross-compiler, we need to fix a few things.
+# This must come after cross-make as we want all.build to override
+# all.cross.
+build_overrides="/dev/null"
+if [ x$build != x$host ]
+then
+ build_overrides="${topdir}/build-make"
+fi
+
+# Expand extra_headers to include complete path.
+# This substitutes for lots of t-* files.
+extra_headers_list=
+if [ "x$extra_headers" = x ]
+then true
+else
+ # Prepend ${srcdir}/ginclude/ to every entry in extra_headers.
+ for file in $extra_headers;
+ do
+ extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/${file}"
+ done
+fi
+
+# Add a definition of USE_COLLECT2 if system wants one.
+# Also tell toplev.c what to do.
+# This substitutes for lots of t-* files.
+if [ x$use_collect2 = x ]
+then
+ will_use_collect2=
+ maybe_use_collect2=
+else
+ will_use_collect2="ld"
+ maybe_use_collect2="-DUSE_COLLECT2"
+fi
+
+# NEED TO CONVERT
+# Set MD_DEPS if the real md file is in md.pre-cpp.
+# Set MD_CPP to the cpp to pass the md file through. Md files use ';'
+# for line oriented comments, so we must always use a GNU cpp. If
+# building gcc with a cross compiler, use the cross compiler just
+# built. Otherwise, we can use the cpp just built.
+md_file_sub=
+if [ "x$md_cppflags" = x ]
+then
+ md_file_sub=$srcdir/config/$md_file
+else
+ md_file=md
+fi
+
+# If we have gas in the build tree, make a link to it.
+if [ -f ../gas/Makefile ]; then
+ rm -f as; $symbolic_link ../gas/as.new as 2>/dev/null
+fi
+
+# If we have ld in the build tree, make a link to it.
+if [ -f ../ld/Makefile ]; then
+ if [ x$use_collect2 = x ]; then
+ rm -f ld; $symbolic_link ../ld/ld.new ld 2>/dev/null
+ else
+ rm -f collect-ld; $symbolic_link ../ld/ld.new collect-ld 2>/dev/null
+ fi
+fi
+
+# Figure out what language subdirectories are present.
+subdirs=
+for lang in ${srcdir}/*/config-lang.in ..
+do
+ case $lang in
+ ..) ;;
+ # The odd quoting in the next line works around
+ # an apparent bug in bash 1.12 on linux.
+ ${srcdir}/[*]/config-lang.in) ;;
+ *) subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`" ;;
+ esac
+done
+
+# Make empty files to contain the specs and options for each language.
+# Then add #include lines to for a compiler that has specs and/or options.
+
+lang_specs_files=
+lang_options_files=
+rm -f specs.h options.h
+touch specs.h options.h
+for subdir in . $subdirs
+do
+ if [ -f $srcdir/$subdir/lang-specs.h ]; then
+ echo "#include \"$subdir/lang-specs.h\"" >>specs.h
+ lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
+ fi
+ if [ -f $srcdir/$subdir/lang-options.h ]; then
+ echo "#include \"$subdir/lang-options.h\"" >>options.h
+ lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
+ fi
+done
+
+# These (without "all_") are set in each config-lang.in.
+# `language' must be a single word so is spelled singularly.
+all_languages=
+all_boot_languages=
+all_compilers=
+all_stagestuff=
+all_diff_excludes=
+all_outputs=Makefile
+# List of language makefile fragments.
+all_lang_makefiles=
+all_headers=
+all_lib2funcs=
+
+# Add the language fragments.
+# Languages are added via two mechanisms. Some information must be
+# recorded in makefile variables, these are defined in config-lang.in.
+# We accumulate them and plug them into the main Makefile.
+# The other mechanism is a set of hooks for each of the main targets
+# like `clean', `install', etc.
+
+language_fragments="Make-lang"
+language_hooks="Make-hooks"
+oldstyle_subdirs=
+
+for s in .. $subdirs
+do
+ if [ $s != ".." ]
+ then
+ language=
+ boot_language=
+ compilers=
+ stagestuff=
+ diff_excludes=
+ headers=
+ outputs=
+ lib2funcs=
+ . ${srcdir}/$s/config-lang.in
+ if [ "x$language" = x ]
+ then
+ echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
+ exit 1
+ fi
+ all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in ${srcdir}/$s/Makefile.in"
+ all_languages="$all_languages $language"
+ if [ "x$boot_language" = xyes ]
+ then
+ all_boot_languages="$all_boot_languages $language"
+ fi
+ all_compilers="$all_compilers $compilers"
+ all_stagestuff="$all_stagestuff $stagestuff"
+ all_diff_excludes="$all_diff_excludes $diff_excludes"
+ all_headers="$all_headers $headers"
+ all_outputs="$all_outputs $outputs"
+ if [ x$outputs = x ]
+ then
+ oldstyle_subdirs="$oldstyle_subdirs $s"
+ fi
+ all_lib2funcs="$all_lib2funcs $lib2funcs"
+ fi
+done
+
+# Since we can't use `::' targets, we link each language in
+# with a set of hooks, reached indirectly via lang.${target}.
+
+rm -f Make-hooks
+touch Make-hooks
+target_list="all.build all.cross start.encap rest.encap \
+ info dvi \
+ install-normal install-common install-info install-man \
+ uninstall distdir \
+ mostlyclean clean distclean extraclean maintainer-clean \
+ stage1 stage2 stage3 stage4"
+for t in $target_list
+do
+ x=
+ for l in .. $all_languages
+ do
+ if [ $l != ".." ]; then
+ x="$x $l.$t"
+ fi
+ done
+ echo "lang.$t: $x" >> Make-hooks
+done
+
+# If we're not building in srcdir, create .gdbinit.
+
+if [ ! -f Makefile.in ]; then
+ echo "dir ." > .gdbinit
+ echo "dir ${srcdir}" >> .gdbinit
+ if [ x$gdb_needs_out_file_path = xyes ]
+ then
+ echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
+ fi
+ if [ "x$subdirs" != x ]; then
+ for s in $subdirs
+ do
+ echo "dir ${srcdir}/$s" >> .gdbinit
+ done
+ fi
+ echo "source ${srcdir}/.gdbinit" >> .gdbinit
+fi
+
+# Process the language and host/target makefile fragments.
+${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
+
+# Substitute configuration variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Echo that links are built
+if [ x$host = x$target ]
+then
+ str1="native "
+else
+ str1="cross-"
+ str2=" from $host"
+fi
+
+if [ x$host != x$build ]
+then
+ str3=" on a $build system"
+fi
+
+if [ "x$str2" != x ] || [ "x$str3" != x ]
+then
+ str4=
+fi
+
+echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
+
+if [ "x$str2" != x ] || [ "x$str3" != x ]
+then
+ echo " ${str2}${str3}." 1>&2
+fi
+
+# Configure the subdirectories
+# AC_CONFIG_SUBDIRS($subdirs)
+
+# Create the Makefile
+# and configure language subdirectories
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+ case "\$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.12"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
+ esac
+done
+
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
+
+trap 'rm -fr `echo "$all_outputs config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@target@%$target%g
+s%@target_alias@%$target_alias%g
+s%@target_cpu@%$target_cpu%g
+s%@target_vendor@%$target_vendor%g
+s%@target_os@%$target_os%g
+s%@build@%$build%g
+s%@build_alias@%$build_alias%g
+s%@build_cpu@%$build_cpu%g
+s%@build_vendor@%$build_vendor%g
+s%@build_os@%$build_os%g
+s%@AWK@%$AWK%g
+s%@LEX@%$LEX%g
+s%@LEXLIB@%$LEXLIB%g
+s%@LN_S@%$LN_S%g
+s%@RANLIB@%$RANLIB%g
+s%@YACC@%$YACC%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@CC@%$CC%g
+s%@SET_MAKE@%$SET_MAKE%g
+s%@CPP@%$CPP%g
+s%@manext@%$manext%g
+s%@objext@%$objext%g
+s%@subdirs@%$subdirs%g
+s%@all_languages@%$all_languages%g
+s%@all_boot_languages@%$all_boot_languages%g
+s%@all_compilers@%$all_compilers%g
+s%@all_lang_makefiles@%$all_lang_makefiles%g
+s%@all_stagestuff@%$all_stagestuff%g
+s%@all_diff_excludes@%$all_diff_excludes%g
+s%@all_lib2funcs@%$all_lib2funcs%g
+s%@all_headers@%$all_headers%g
+s%@extra_passes@%$extra_passes%g
+s%@extra_programs@%$extra_programs%g
+s%@extra_parts@%$extra_parts%g
+s%@extra_c_objs@%$extra_c_objs%g
+s%@extra_c_flags@%$extra_c_flags%g
+s%@extra_objs@%$extra_objs%g
+s%@host_extra_gcc_objs@%$host_extra_gcc_objs%g
+s%@extra_headers_list@%$extra_headers_list%g
+s%@dep_host_xmake_file@%$dep_host_xmake_file%g
+s%@dep_tmake_file@%$dep_tmake_file%g
+s%@out_file@%$out_file%g
+s%@out_object_file@%$out_object_file%g
+s%@md_file@%$md_file%g
+s%@tm_file_list@%$tm_file_list%g
+s%@build_xm_file_list@%$build_xm_file_list%g
+s%@host_xm_file_list@%$host_xm_file_list%g
+s%@lang_specs_files@%$lang_specs_files%g
+s%@lang_options_files@%$lang_options_files%g
+s%@thread_file@%$thread_file%g
+s%@version@%$version%g
+s%@local_prefix@%$local_prefix%g
+s%@gxx_include_dir@%$gxx_include_dir%g
+s%@fixincludes@%$fixincludes%g
+s%@build_install_headers_dir@%$build_install_headers_dir%g
+s%@build_exeext@%$build_exeext%g
+s%@float_format@%$float_format%g
+s%@will_use_collect2@%$will_use_collect2%g
+s%@maybe_use_collect2@%$maybe_use_collect2%g
+s%@cc_set_by_configure@%$cc_set_by_configure%g
+s%@stage_prefix_set_by_configure@%$stage_prefix_set_by_configure%g
+/@target_overrides@/r $target_overrides
+s%@target_overrides@%%g
+/@host_overrides@/r $host_overrides
+s%@host_overrides@%%g
+s%@cross_defines@%$cross_defines%g
+/@cross_overrides@/r $cross_overrides
+s%@cross_overrides@%%g
+/@build_overrides@/r $build_overrides
+s%@build_overrides@%%g
+/@language_fragments@/r $language_fragments
+s%@language_fragments@%%g
+/@language_hooks@/r $language_hooks
+s%@language_hooks@%%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"$all_outputs"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ *) # Relative path.
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ case "$ac_given_INSTALL" in
+ [/$]*) INSTALL="$ac_given_INSTALL" ;;
+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+ esac
+
+ echo creating "$ac_file"
+ rm -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='\([ ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+ CONFIG_HEADERS="config.h:config.in"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ echo creating $ac_file
+
+ rm -f conftest.frag conftest.in conftest.out
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h. And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+ ac_lines=`grep -c . conftest.vals`
+ # grep -c gives empty output for an empty file on some AIX systems.
+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+ # Write a limited-size here document to conftest.frag.
+ echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+ echo 'CEOF
+ sed -f conftest.frag conftest.in > conftest.out
+ rm -f conftest.in
+ mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ rm -f conftest.vals
+ mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+ rm -f conftest.frag conftest.h
+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
+ cat conftest.in >> conftest.h
+ rm -f conftest.in
+ if cmp -s $ac_file conftest.h 2>/dev/null; then
+ echo "$ac_file is unchanged"
+ rm -f conftest.h
+ else
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ fi
+ rm -f $ac_file
+ mv conftest.h $ac_file
+ fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+host='${host}'
+build='${build}'
+target='${target}'
+target_alias='${target_alias}'
+srcdir='${srcdir}'
+subdirs='${subdirs}'
+oldstyle_subdirs='${oldstyle_subdirs}'
+symbolic_link='${symbolic_link}'
+program_transform_set='${program_transform_set}'
+program_transform_name='${program_transform_name}'
+dep_host_xmake_file='${dep_host_xmake_file}'
+host_xmake_file='${host_xmake_file}'
+dep_tmake_file='${dep_tmake_file}'
+tmake_file='${tmake_file}'
+thread_file='${thread_file}'
+version='${version}'
+local_prefix='${local_prefix}'
+build_install_headers_dir='${build_install_headers_dir}'
+build_exeext='${build_exeext}'
+gdb_needs_out_file_path='${gdb_needs_out_file_path}'
+SET_MAKE='${SET_MAKE}'
+build_broken_install='${build_broken_install}'
+target_list='${target_list}'
+target_overrides='${target_overrides}'
+host_overrides='${host_overrides}'
+cross_defines='${cross_defines}'
+cross_overrides='${cross_overrides}'
+build_overrides='${build_overrides}'
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+. $srcdir/configure.lang
+case x$CONFIG_HEADERS in
+xconfig.h:config.in)
+echo > cstamp-h ;;
+esac
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c
new file mode 100644
index 00000000000..9119e6485d7
--- /dev/null
+++ b/gcc/cp/parse.c
@@ -0,0 +1,8338 @@
+
+/* A Bison parser, made from parse.y with Bison version GNU Bison version 1.24
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SELFNAME 260
+#define SCSPEC 261
+#define TYPESPEC 262
+#define CV_QUALIFIER 263
+#define CONSTANT 264
+#define STRING 265
+#define ELLIPSIS 266
+#define SIZEOF 267
+#define ENUM 268
+#define IF 269
+#define ELSE 270
+#define WHILE 271
+#define DO 272
+#define FOR 273
+#define SWITCH 274
+#define CASE 275
+#define DEFAULT 276
+#define BREAK 277
+#define CONTINUE 278
+#define RETURN 279
+#define GOTO 280
+#define ASM_KEYWORD 281
+#define GCC_ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define SIGOF 285
+#define ATTRIBUTE 286
+#define EXTENSION 287
+#define LABEL 288
+#define REALPART 289
+#define IMAGPART 290
+#define AGGR 291
+#define VISSPEC 292
+#define DELETE 293
+#define NEW 294
+#define THIS 295
+#define OPERATOR 296
+#define CXX_TRUE 297
+#define CXX_FALSE 298
+#define NAMESPACE 299
+#define TYPENAME_KEYWORD 300
+#define USING 301
+#define LEFT_RIGHT 302
+#define TEMPLATE 303
+#define TYPEID 304
+#define DYNAMIC_CAST 305
+#define STATIC_CAST 306
+#define REINTERPRET_CAST 307
+#define CONST_CAST 308
+#define SCOPE 309
+#define EMPTY 310
+#define PTYPENAME 311
+#define NSNAME 312
+#define THROW 313
+#define ASSIGN 314
+#define OROR 315
+#define ANDAND 316
+#define MIN_MAX 317
+#define EQCOMPARE 318
+#define ARITHCOMPARE 319
+#define LSHIFT 320
+#define RSHIFT 321
+#define POINTSAT_STAR 322
+#define DOT_STAR 323
+#define UNARY 324
+#define PLUSPLUS 325
+#define MINUSMINUS 326
+#define HYPERUNARY 327
+#define PAREN_STAR_PAREN 328
+#define POINTSAT 329
+#define TRY 330
+#define CATCH 331
+#define TYPENAME_ELLIPSIS 332
+#define PRE_PARSED_FUNCTION_DECL 333
+#define EXTERN_LANG_STRING 334
+#define ALL 335
+#define PRE_PARSED_CLASS_DECL 336
+#define DEFARG 337
+#define DEFARG_MARKER 338
+#define TYPENAME_DEFN 339
+#define IDENTIFIER_DEFN 340
+#define PTYPENAME_DEFN 341
+#define END_OF_LINE 342
+#define END_OF_SAVED_INPUT 343
+
+#line 29 "parse.y"
+
+/* Cause the `yydebug' variable to be defined. */
+#define YYDEBUG 1
+
+#include "config.h"
+
+#include <stdio.h>
+#include <errno.h>
+
+#include "tree.h"
+#include "input.h"
+#include "flags.h"
+#include "lex.h"
+#include "cp-tree.h"
+#include "output.h"
+
+/* Since parsers are distinct for each language, put the language string
+ definition here. (fnf) */
+char *language_string = "GNU C++";
+
+extern tree void_list_node;
+extern struct obstack permanent_obstack;
+
+#ifndef errno
+extern int errno;
+#endif
+
+extern int end_of_file;
+extern int current_class_depth;
+extern tree last_tree;
+
+/* FSF LOCAL dje prefix attributes */
+extern tree strip_attrs PROTO((tree));
+/* END FSF LOCAL */
+
+void yyerror ();
+
+/* Like YYERROR but do call yyerror. */
+#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
+
+#define OP0(NODE) (TREE_OPERAND (NODE, 0))
+#define OP1(NODE) (TREE_OPERAND (NODE, 1))
+
+/* Contains the statement keyword (if/while/do) to include in an
+ error message if the user supplies an empty conditional expression. */
+static char *cond_stmt_keyword;
+
+/* Nonzero if we have an `extern "C"' acting as an extern specifier. */
+int have_extern_spec;
+int used_extern_spec;
+
+void yyhook ();
+
+/* Cons up an empty parameter list. */
+#ifdef __GNUC__
+__inline
+#endif
+static tree
+empty_parms ()
+{
+ tree parms;
+
+ if (strict_prototype
+ /* Only go ahead with using the void list node if we're actually
+ parsing a class in C++, not a struct in extern "C" mode. */
+ || (current_class_type != NULL
+ && current_lang_name == lang_name_cplusplus))
+ parms = void_list_node;
+ else
+ parms = NULL_TREE;
+ return parms;
+}
+
+#line 105 "parse.y"
+typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
+#line 288 "parse.y"
+
+/* List of types and structure classes of the current declaration. */
+static tree current_declspecs = NULL_TREE;
+/* List of prefix attributes in effect.
+ Prefix attributes are parsed by the reserved_declspecs and declmods
+ rules. They create a list that contains *both* declspecs and attrs. */
+/* ??? It is not clear yet that all cases where an attribute can now appear in
+ a declspec list have been updated. */
+static tree prefix_attributes = NULL_TREE;
+
+/* When defining an aggregate, this is the most recent one being defined. */
+static tree current_aggr;
+
+/* Tell yyparse how to print a token's value, if yydebug is set. */
+
+#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
+extern void yyprint ();
+extern tree combine_strings PROTO((tree));
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 1459
+#define YYFLAG -32768
+#define YYNTBASE 113
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 343 ? yytranslate[x] : 366)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 111, 2, 2, 2, 82, 70, 2, 93,
+ 109, 80, 78, 59, 79, 92, 81, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 62, 60, 74,
+ 64, 75, 65, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 94, 2, 112, 69, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 58, 68, 110, 88, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 61, 63, 66, 67, 71, 72, 73, 76,
+ 77, 83, 84, 85, 86, 87, 89, 90, 91, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 1, 3, 4, 7, 10, 12, 13, 14, 15,
+ 17, 19, 21, 22, 25, 28, 30, 32, 38, 43,
+ 49, 54, 55, 62, 63, 69, 75, 78, 83, 86,
+ 89, 93, 97, 99, 101, 104, 107, 109, 112, 113,
+ 119, 123, 125, 129, 131, 134, 136, 139, 141, 145,
+ 147, 151, 154, 157, 160, 164, 168, 171, 174, 177,
+ 180, 183, 185, 187, 189, 190, 192, 195, 196, 198,
+ 203, 207, 211, 212, 221, 227, 228, 238, 245, 246,
+ 255, 261, 262, 272, 279, 282, 285, 287, 290, 292,
+ 299, 304, 311, 316, 319, 321, 324, 327, 329, 332,
+ 334, 337, 340, 345, 348, 352, 353, 354, 356, 360,
+ 363, 367, 369, 374, 377, 382, 385, 390, 393, 395,
+ 397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
+ 419, 423, 426, 429, 434, 439, 443, 447, 452, 456,
+ 461, 465, 467, 472, 476, 478, 480, 482, 486, 488,
+ 490, 492, 494, 496, 498, 500, 502, 504, 506, 510,
+ 512, 516, 517, 519, 521, 522, 530, 532, 534, 538,
+ 543, 547, 548, 552, 554, 558, 562, 566, 570, 572,
+ 574, 576, 579, 582, 585, 588, 591, 594, 597, 602,
+ 605, 610, 613, 617, 621, 626, 631, 637, 643, 650,
+ 653, 658, 664, 667, 670, 674, 678, 682, 684, 688,
+ 691, 695, 700, 702, 705, 711, 713, 717, 721, 725,
+ 729, 733, 737, 741, 745, 749, 753, 757, 761, 765,
+ 769, 773, 777, 781, 785, 789, 795, 799, 803, 805,
+ 808, 812, 814, 816, 818, 820, 822, 824, 826, 828,
+ 831, 834, 838, 840, 842, 846, 848, 850, 852, 854,
+ 858, 862, 866, 867, 872, 877, 880, 885, 888, 891,
+ 893, 898, 900, 908, 916, 924, 932, 937, 942, 945,
+ 948, 950, 955, 958, 961, 964, 970, 974, 980, 984,
+ 989, 996, 999, 1001, 1004, 1006, 1009, 1011, 1013, 1015,
+ 1018, 1019, 1022, 1025, 1029, 1033, 1037, 1040, 1043, 1046,
+ 1048, 1050, 1052, 1055, 1058, 1061, 1064, 1066, 1068, 1070,
+ 1072, 1075, 1078, 1082, 1086, 1090, 1095, 1097, 1100, 1103,
+ 1106, 1108, 1110, 1112, 1115, 1118, 1121, 1123, 1125, 1128,
+ 1131, 1135, 1137, 1140, 1142, 1144, 1146, 1151, 1156, 1161,
+ 1166, 1168, 1170, 1172, 1174, 1178, 1180, 1184, 1186, 1190,
+ 1191, 1196, 1197, 1204, 1208, 1209, 1216, 1220, 1221, 1228,
+ 1232, 1233, 1240, 1244, 1245, 1247, 1249, 1252, 1259, 1261,
+ 1265, 1266, 1268, 1273, 1280, 1285, 1287, 1289, 1291, 1293,
+ 1295, 1299, 1300, 1303, 1305, 1308, 1312, 1317, 1319, 1321,
+ 1325, 1330, 1337, 1341, 1347, 1349, 1354, 1358, 1362, 1363,
+ 1367, 1371, 1375, 1376, 1379, 1382, 1383, 1391, 1396, 1397,
+ 1404, 1408, 1411, 1414, 1418, 1423, 1424, 1425, 1435, 1437,
+ 1438, 1440, 1441, 1443, 1445, 1448, 1451, 1454, 1457, 1460,
+ 1463, 1467, 1470, 1474, 1475, 1477, 1481, 1484, 1487, 1489,
+ 1491, 1492, 1495, 1499, 1501, 1506, 1508, 1512, 1514, 1518,
+ 1523, 1528, 1533, 1536, 1539, 1543, 1547, 1549, 1550, 1552,
+ 1555, 1560, 1564, 1566, 1569, 1572, 1575, 1578, 1581, 1584,
+ 1587, 1589, 1592, 1595, 1598, 1603, 1608, 1611, 1613, 1619,
+ 1624, 1626, 1627, 1629, 1633, 1634, 1636, 1640, 1642, 1644,
+ 1646, 1648, 1653, 1658, 1663, 1668, 1673, 1677, 1682, 1687,
+ 1692, 1697, 1701, 1703, 1707, 1709, 1713, 1716, 1718, 1725,
+ 1726, 1729, 1731, 1734, 1735, 1738, 1743, 1748, 1751, 1756,
+ 1760, 1764, 1767, 1770, 1774, 1776, 1778, 1781, 1783, 1786,
+ 1789, 1794, 1799, 1803, 1807, 1810, 1812, 1816, 1820, 1823,
+ 1826, 1830, 1832, 1836, 1840, 1843, 1846, 1850, 1852, 1857,
+ 1861, 1866, 1870, 1872, 1875, 1878, 1880, 1883, 1888, 1893,
+ 1896, 1898, 1900, 1902, 1904, 1907, 1910, 1913, 1916, 1919,
+ 1922, 1924, 1927, 1930, 1934, 1936, 1940, 1943, 1947, 1950,
+ 1953, 1957, 1959, 1963, 1968, 1972, 1975, 1978, 1980, 1984,
+ 1987, 1990, 1992, 1995, 1999, 2001, 2005, 2007, 2014, 2019,
+ 2024, 2028, 2034, 2038, 2042, 2046, 2049, 2051, 2053, 2056,
+ 2059, 2062, 2063, 2064, 2065, 2067, 2069, 2072, 2076, 2078,
+ 2081, 2082, 2088, 2089, 2090, 2097, 2099, 2100, 2105, 2107,
+ 2109, 2111, 2114, 2115, 2116, 2123, 2125, 2126, 2127, 2135,
+ 2136, 2137, 2145, 2146, 2147, 2148, 2149, 2164, 2165, 2166,
+ 2176, 2177, 2183, 2184, 2192, 2193, 2198, 2201, 2204, 2207,
+ 2211, 2218, 2227, 2238, 2251, 2256, 2260, 2263, 2266, 2268,
+ 2270, 2271, 2272, 2279, 2280, 2281, 2287, 2289, 2292, 2293,
+ 2294, 2295, 2304, 2306, 2308, 2312, 2316, 2319, 2322, 2325,
+ 2328, 2331, 2333, 2336, 2337, 2339, 2340, 2342, 2344, 2345,
+ 2347, 2349, 2353, 2358, 2360, 2364, 2365, 2367, 2369, 2371,
+ 2374, 2377, 2380, 2382, 2384, 2387, 2390, 2393, 2396, 2397,
+ 2401, 2403, 2405, 2407, 2410, 2413, 2416, 2421, 2424, 2427,
+ 2430, 2433, 2436, 2439, 2441, 2444, 2446, 2449, 2451, 2453,
+ 2454, 2455, 2457, 2458, 2463, 2466, 2468, 2470, 2474, 2475,
+ 2479, 2483, 2487, 2489, 2492, 2495, 2498, 2501, 2504, 2507,
+ 2510, 2513, 2516, 2519, 2522, 2525, 2528, 2531, 2534, 2537,
+ 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2562, 2565, 2568,
+ 2571, 2574, 2578, 2581, 2584, 2589, 2594, 2598
+};
+
+static const short yyrhs[] = { -1,
+ 114, 0, 0, 115, 121, 0, 114, 121, 0, 114,
+ 0, 0, 0, 0, 32, 0, 26, 0, 27, 0,
+ 0, 122, 123, 0, 139, 138, 0, 135, 0, 134,
+ 0, 120, 93, 190, 109, 60, 0, 128, 58, 116,
+ 110, 0, 128, 117, 139, 118, 138, 0, 128, 117,
+ 135, 118, 0, 0, 44, 154, 58, 124, 116, 110,
+ 0, 0, 44, 58, 125, 116, 110, 0, 44, 154,
+ 64, 127, 60, 0, 126, 60, 0, 46, 44, 127,
+ 60, 0, 119, 123, 0, 46, 281, 0, 46, 290,
+ 281, 0, 46, 290, 182, 0, 182, 0, 281, 0,
+ 290, 281, 0, 290, 182, 0, 99, 0, 128, 99,
+ 0, 0, 48, 74, 130, 131, 75, 0, 48, 74,
+ 75, 0, 133, 0, 131, 59, 133, 0, 239, 0,
+ 239, 154, 0, 45, 0, 45, 154, 0, 132, 0,
+ 132, 64, 196, 0, 357, 0, 357, 64, 180, 0,
+ 129, 123, 0, 129, 1, 0, 207, 60, 0, 200,
+ 206, 60, 0, 197, 205, 60, 0, 200, 60, 0,
+ 157, 60, 0, 197, 60, 0, 1, 60, 0, 1,
+ 110, 0, 60, 0, 191, 0, 150, 0, 0, 149,
+ 0, 149, 60, 0, 0, 108, 0, 145, 137, 136,
+ 302, 0, 145, 137, 327, 0, 145, 137, 1, 0,
+ 0, 286, 5, 93, 141, 348, 109, 269, 360, 0,
+ 286, 5, 47, 269, 360, 0, 0, 290, 286, 5,
+ 93, 142, 348, 109, 269, 360, 0, 290, 286, 5,
+ 47, 269, 360, 0, 0, 286, 159, 93, 143, 348,
+ 109, 269, 360, 0, 286, 159, 47, 269, 360, 0,
+ 0, 290, 286, 159, 93, 144, 348, 109, 269, 360,
+ 0, 290, 286, 159, 47, 269, 360, 0, 197, 194,
+ 0, 200, 278, 0, 278, 0, 200, 140, 0, 140,
+ 0, 5, 93, 348, 109, 269, 360, 0, 5, 47,
+ 269, 360, 0, 159, 93, 348, 109, 269, 360, 0,
+ 159, 47, 269, 360, 0, 200, 146, 0, 146, 0,
+ 197, 194, 0, 200, 278, 0, 278, 0, 200, 140,
+ 0, 140, 0, 24, 3, 0, 148, 224, 0, 148,
+ 93, 174, 109, 0, 148, 47, 0, 62, 151, 152,
+ 0, 0, 0, 153, 0, 152, 59, 153, 0, 152,
+ 1, 0, 93, 174, 109, 0, 47, 0, 155, 93,
+ 174, 109, 0, 155, 47, 0, 275, 93, 174, 109,
+ 0, 275, 47, 0, 282, 93, 174, 109, 0, 282,
+ 47, 0, 3, 0, 4, 0, 5, 0, 56, 0,
+ 57, 0, 3, 0, 56, 0, 57, 0, 105, 0,
+ 104, 0, 106, 0, 48, 239, 158, 0, 48, 197,
+ 194, 0, 48, 278, 0, 48, 140, 0, 6, 48,
+ 239, 158, 0, 6, 48, 197, 194, 0, 6, 48,
+ 278, 0, 6, 48, 140, 0, 56, 74, 161, 160,
+ 0, 56, 74, 160, 0, 4, 74, 161, 160, 0,
+ 4, 74, 160, 0, 159, 0, 5, 74, 161, 160,
+ 0, 5, 74, 160, 0, 75, 0, 77, 0, 162,
+ 0, 161, 59, 162, 0, 196, 0, 180, 0, 79,
+ 0, 78, 0, 86, 0, 87, 0, 111, 0, 173,
+ 0, 180, 0, 47, 0, 93, 164, 109, 0, 47,
+ 0, 93, 168, 109, 0, 0, 168, 0, 1, 0,
+ 0, 338, 194, 208, 217, 64, 169, 225, 0, 164,
+ 0, 110, 0, 299, 295, 110, 0, 299, 295, 1,
+ 110, 0, 299, 1, 110, 0, 0, 58, 172, 170,
+ 0, 311, 0, 180, 59, 180, 0, 180, 59, 1,
+ 0, 173, 59, 180, 0, 173, 59, 1, 0, 180,
+ 0, 173, 0, 185, 0, 119, 179, 0, 80, 179,
+ 0, 70, 179, 0, 88, 179, 0, 163, 179, 0,
+ 67, 154, 0, 12, 175, 0, 12, 93, 196, 109,
+ 0, 29, 175, 0, 29, 93, 196, 109, 0, 187,
+ 268, 0, 187, 268, 177, 0, 187, 176, 268, 0,
+ 187, 176, 268, 177, 0, 187, 93, 196, 109, 0,
+ 187, 93, 196, 109, 177, 0, 187, 176, 93, 196,
+ 109, 0, 187, 176, 93, 196, 109, 177, 0, 188,
+ 179, 0, 188, 94, 112, 179, 0, 188, 94, 164,
+ 112, 179, 0, 34, 179, 0, 35, 179, 0, 93,
+ 174, 109, 0, 58, 174, 110, 0, 93, 174, 109,
+ 0, 47, 0, 93, 203, 109, 0, 64, 225, 0,
+ 93, 196, 109, 0, 178, 93, 196, 109, 0, 175,
+ 0, 178, 175, 0, 178, 58, 226, 237, 110, 0,
+ 179, 0, 180, 83, 180, 0, 180, 84, 180, 0,
+ 180, 78, 180, 0, 180, 79, 180, 0, 180, 80,
+ 180, 0, 180, 81, 180, 0, 180, 82, 180, 0,
+ 180, 76, 180, 0, 180, 77, 180, 0, 180, 73,
+ 180, 0, 180, 74, 180, 0, 180, 75, 180, 0,
+ 180, 72, 180, 0, 180, 71, 180, 0, 180, 70,
+ 180, 0, 180, 68, 180, 0, 180, 69, 180, 0,
+ 180, 67, 180, 0, 180, 66, 180, 0, 180, 65,
+ 343, 62, 180, 0, 180, 64, 180, 0, 180, 63,
+ 180, 0, 61, 0, 61, 180, 0, 88, 358, 154,
+ 0, 365, 0, 3, 0, 56, 0, 57, 0, 181,
+ 0, 4, 0, 5, 0, 181, 0, 80, 183, 0,
+ 70, 183, 0, 93, 183, 109, 0, 280, 0, 181,
+ 0, 93, 183, 109, 0, 181, 0, 9, 0, 189,
+ 0, 190, 0, 93, 164, 109, 0, 93, 183, 109,
+ 0, 93, 1, 109, 0, 0, 93, 186, 303, 109,
+ 0, 185, 93, 174, 109, 0, 185, 47, 0, 185,
+ 94, 164, 112, 0, 185, 86, 0, 185, 87, 0,
+ 40, 0, 8, 93, 174, 109, 0, 284, 0, 50,
+ 74, 196, 75, 93, 164, 109, 0, 51, 74, 196,
+ 75, 93, 164, 109, 0, 52, 74, 196, 75, 93,
+ 164, 109, 0, 53, 74, 196, 75, 93, 164, 109,
+ 0, 49, 93, 164, 109, 0, 49, 93, 196, 109,
+ 0, 290, 3, 0, 290, 365, 0, 283, 0, 283,
+ 93, 174, 109, 0, 283, 47, 0, 192, 182, 0,
+ 192, 283, 0, 192, 182, 93, 174, 109, 0, 192,
+ 182, 47, 0, 192, 283, 93, 174, 109, 0, 192,
+ 283, 47, 0, 192, 88, 7, 47, 0, 192, 7,
+ 54, 88, 7, 47, 0, 192, 1, 0, 39, 0,
+ 290, 39, 0, 38, 0, 290, 188, 0, 42, 0,
+ 43, 0, 10, 0, 190, 10, 0, 0, 185, 92,
+ 0, 185, 91, 0, 203, 205, 60, 0, 197, 205,
+ 60, 0, 200, 206, 60, 0, 197, 60, 0, 200,
+ 60, 0, 119, 193, 0, 274, 0, 278, 0, 47,
+ 0, 195, 47, 0, 201, 293, 0, 270, 293, 0,
+ 203, 293, 0, 201, 0, 270, 0, 201, 0, 198,
+ 0, 200, 203, 0, 203, 199, 0, 203, 202, 199,
+ 0, 200, 203, 199, 0, 200, 203, 202, 0, 200,
+ 203, 202, 199, 0, 6, 0, 199, 204, 0, 199,
+ 6, 0, 199, 218, 0, 218, 0, 270, 0, 6,
+ 0, 200, 8, 0, 200, 6, 0, 200, 218, 0,
+ 218, 0, 203, 0, 270, 203, 0, 203, 202, 0,
+ 270, 203, 202, 0, 204, 0, 202, 204, 0, 232,
+ 0, 7, 0, 275, 0, 28, 93, 164, 109, 0,
+ 28, 93, 196, 109, 0, 30, 93, 164, 109, 0,
+ 30, 93, 196, 109, 0, 7, 0, 8, 0, 232,
+ 0, 209, 0, 205, 59, 211, 0, 213, 0, 206,
+ 59, 211, 0, 215, 0, 207, 59, 211, 0, 0,
+ 120, 93, 190, 109, 0, 0, 194, 208, 217, 64,
+ 210, 225, 0, 194, 208, 217, 0, 0, 194, 208,
+ 217, 64, 212, 225, 0, 194, 208, 217, 0, 0,
+ 278, 208, 217, 64, 214, 225, 0, 278, 208, 217,
+ 0, 0, 278, 208, 217, 64, 216, 225, 0, 278,
+ 208, 217, 0, 0, 218, 0, 219, 0, 218, 219,
+ 0, 31, 93, 93, 220, 109, 109, 0, 221, 0,
+ 220, 59, 221, 0, 0, 222, 0, 222, 93, 3,
+ 109, 0, 222, 93, 3, 59, 174, 109, 0, 222,
+ 93, 174, 109, 0, 154, 0, 6, 0, 7, 0,
+ 8, 0, 154, 0, 223, 59, 154, 0, 0, 64,
+ 225, 0, 180, 0, 58, 110, 0, 58, 226, 110,
+ 0, 58, 226, 59, 110, 0, 1, 0, 225, 0,
+ 226, 59, 225, 0, 94, 180, 112, 225, 0, 226,
+ 59, 20, 180, 62, 225, 0, 154, 62, 225, 0,
+ 226, 59, 154, 62, 225, 0, 98, 0, 227, 137,
+ 136, 302, 0, 227, 137, 327, 0, 227, 137, 1,
+ 0, 0, 229, 228, 138, 0, 103, 180, 108, 0,
+ 103, 1, 108, 0, 0, 231, 230, 0, 231, 1,
+ 0, 0, 13, 154, 58, 233, 266, 238, 110, 0,
+ 13, 154, 58, 110, 0, 0, 13, 58, 234, 266,
+ 238, 110, 0, 13, 58, 110, 0, 13, 154, 0,
+ 13, 288, 0, 45, 286, 154, 0, 45, 290, 286,
+ 154, 0, 0, 0, 246, 252, 254, 110, 217, 235,
+ 231, 236, 229, 0, 246, 0, 0, 59, 0, 0,
+ 59, 0, 36, 0, 239, 6, 0, 239, 7, 0,
+ 239, 8, 0, 239, 36, 0, 239, 154, 0, 239,
+ 156, 0, 239, 286, 154, 0, 239, 158, 0, 239,
+ 286, 158, 0, 0, 240, 0, 241, 243, 247, 0,
+ 242, 247, 0, 239, 58, 0, 245, 0, 244, 0,
+ 0, 62, 358, 0, 62, 358, 248, 0, 249, 0,
+ 248, 59, 358, 249, 0, 250, 0, 251, 358, 250,
+ 0, 275, 0, 45, 286, 154, 0, 45, 290, 286,
+ 154, 0, 30, 93, 164, 109, 0, 30, 93, 196,
+ 109, 0, 37, 358, 0, 6, 358, 0, 251, 37,
+ 358, 0, 251, 6, 358, 0, 58, 0, 0, 253,
+ 0, 253, 255, 0, 254, 37, 62, 255, 0, 254,
+ 37, 62, 0, 256, 0, 255, 256, 0, 257, 60,
+ 0, 257, 110, 0, 147, 62, 0, 147, 95, 0,
+ 147, 24, 0, 147, 58, 0, 60, 0, 119, 256,
+ 0, 197, 258, 0, 200, 259, 0, 278, 208, 217,
+ 224, 0, 140, 208, 217, 224, 0, 62, 180, 0,
+ 1, 0, 200, 146, 208, 217, 224, 0, 146, 208,
+ 217, 224, 0, 126, 0, 0, 260, 0, 258, 59,
+ 261, 0, 0, 263, 0, 259, 59, 265, 0, 262,
+ 0, 263, 0, 264, 0, 265, 0, 274, 208, 217,
+ 224, 0, 4, 62, 180, 217, 0, 278, 208, 217,
+ 224, 0, 140, 208, 217, 224, 0, 3, 62, 180,
+ 217, 0, 62, 180, 217, 0, 274, 208, 217, 224,
+ 0, 4, 62, 180, 217, 0, 278, 208, 217, 224,
+ 0, 3, 62, 180, 217, 0, 62, 180, 217, 0,
+ 267, 0, 266, 59, 267, 0, 154, 0, 154, 64,
+ 180, 0, 338, 291, 0, 338, 0, 93, 196, 109,
+ 94, 164, 112, 0, 0, 269, 8, 0, 8, 0,
+ 270, 8, 0, 0, 271, 164, 0, 271, 93, 174,
+ 109, 0, 271, 93, 348, 109, 0, 271, 47, 0,
+ 271, 93, 1, 109, 0, 80, 270, 274, 0, 70,
+ 270, 274, 0, 80, 274, 0, 70, 274, 0, 289,
+ 269, 274, 0, 277, 0, 285, 0, 290, 285, 0,
+ 276, 0, 290, 276, 0, 286, 285, 0, 277, 273,
+ 269, 360, 0, 277, 94, 272, 112, 0, 277, 94,
+ 112, 0, 93, 274, 109, 0, 286, 285, 0, 285,
+ 0, 80, 270, 278, 0, 70, 270, 278, 0, 80,
+ 278, 0, 70, 278, 0, 289, 269, 278, 0, 184,
+ 0, 80, 270, 278, 0, 70, 270, 278, 0, 80,
+ 279, 0, 70, 279, 0, 289, 269, 278, 0, 280,
+ 0, 184, 273, 269, 360, 0, 93, 279, 109, 0,
+ 184, 94, 272, 112, 0, 184, 94, 112, 0, 282,
+ 0, 286, 182, 0, 286, 181, 0, 282, 0, 290,
+ 282, 0, 203, 93, 174, 109, 0, 203, 93, 183,
+ 109, 0, 203, 195, 0, 4, 0, 5, 0, 158,
+ 0, 287, 0, 286, 287, 0, 4, 54, 0, 5,
+ 54, 0, 57, 54, 0, 158, 54, 0, 290, 285,
+ 0, 276, 0, 290, 276, 0, 286, 80, 0, 290,
+ 286, 80, 0, 54, 0, 80, 269, 291, 0, 80,
+ 269, 0, 70, 269, 291, 0, 70, 269, 0, 289,
+ 269, 0, 289, 269, 291, 0, 292, 0, 94, 164,
+ 112, 0, 292, 94, 272, 112, 0, 80, 270, 293,
+ 0, 80, 293, 0, 80, 270, 0, 80, 0, 70,
+ 270, 293, 0, 70, 293, 0, 70, 270, 0, 70,
+ 0, 289, 269, 0, 289, 269, 293, 0, 294, 0,
+ 93, 293, 109, 0, 90, 0, 294, 93, 348, 109,
+ 269, 360, 0, 294, 47, 269, 360, 0, 294, 94,
+ 272, 112, 0, 294, 94, 112, 0, 93, 349, 109,
+ 269, 360, 0, 178, 269, 360, 0, 195, 269, 360,
+ 0, 94, 272, 112, 0, 94, 112, 0, 310, 0,
+ 296, 0, 295, 310, 0, 295, 296, 0, 1, 60,
+ 0, 0, 0, 0, 300, 0, 301, 0, 300, 301,
+ 0, 33, 223, 60, 0, 303, 0, 1, 303, 0,
+ 0, 58, 304, 297, 170, 298, 0, 0, 0, 14,
+ 306, 297, 166, 307, 308, 0, 303, 0, 0, 297,
+ 309, 311, 298, 0, 303, 0, 311, 0, 193, 0,
+ 164, 60, 0, 0, 0, 305, 15, 312, 308, 313,
+ 298, 0, 305, 0, 0, 0, 16, 314, 297, 166,
+ 315, 171, 298, 0, 0, 0, 17, 316, 308, 16,
+ 317, 165, 60, 0, 0, 0, 0, 0, 18, 318,
+ 93, 341, 319, 297, 167, 60, 320, 343, 109, 321,
+ 171, 298, 0, 0, 0, 19, 297, 93, 168, 109,
+ 322, 308, 323, 298, 0, 0, 20, 180, 62, 324,
+ 310, 0, 0, 20, 180, 11, 180, 62, 325, 310,
+ 0, 0, 21, 62, 326, 310, 0, 22, 60, 0,
+ 23, 60, 0, 24, 60, 0, 24, 164, 60, 0,
+ 120, 342, 93, 190, 109, 60, 0, 120, 342, 93,
+ 190, 62, 344, 109, 60, 0, 120, 342, 93, 190,
+ 62, 344, 62, 344, 109, 60, 0, 120, 342, 93,
+ 190, 62, 344, 62, 344, 62, 347, 109, 60, 0,
+ 25, 80, 164, 60, 0, 25, 154, 60, 0, 340,
+ 310, 0, 340, 110, 0, 60, 0, 330, 0, 0,
+ 0, 95, 328, 136, 302, 329, 333, 0, 0, 0,
+ 95, 331, 303, 332, 333, 0, 334, 0, 333, 334,
+ 0, 0, 0, 0, 96, 335, 297, 339, 336, 303,
+ 337, 298, 0, 201, 0, 270, 0, 93, 11, 109,
+ 0, 93, 357, 109, 0, 3, 62, 0, 56, 62,
+ 0, 4, 62, 0, 5, 62, 0, 343, 60, 0,
+ 193, 0, 58, 170, 0, 0, 8, 0, 0, 164,
+ 0, 1, 0, 0, 345, 0, 346, 0, 345, 59,
+ 346, 0, 10, 93, 164, 109, 0, 10, 0, 347,
+ 59, 10, 0, 0, 349, 0, 196, 0, 353, 0,
+ 354, 11, 0, 353, 11, 0, 196, 11, 0, 11,
+ 0, 97, 0, 353, 97, 0, 196, 97, 0, 353,
+ 62, 0, 196, 62, 0, 0, 64, 351, 352, 0,
+ 102, 0, 225, 0, 355, 0, 357, 350, 0, 354,
+ 356, 0, 354, 359, 0, 354, 359, 64, 225, 0,
+ 353, 59, 0, 196, 59, 0, 198, 194, 0, 201,
+ 194, 0, 203, 194, 0, 198, 293, 0, 198, 0,
+ 200, 278, 0, 357, 0, 357, 350, 0, 355, 0,
+ 196, 0, 0, 0, 278, 0, 0, 61, 93, 362,
+ 109, 0, 61, 47, 0, 196, 0, 361, 0, 362,
+ 59, 361, 0, 0, 80, 269, 363, 0, 70, 269,
+ 363, 0, 289, 269, 363, 0, 41, 0, 364, 80,
+ 0, 364, 81, 0, 364, 82, 0, 364, 78, 0,
+ 364, 79, 0, 364, 70, 0, 364, 68, 0, 364,
+ 69, 0, 364, 88, 0, 364, 59, 0, 364, 73,
+ 0, 364, 74, 0, 364, 75, 0, 364, 72, 0,
+ 364, 63, 0, 364, 64, 0, 364, 76, 0, 364,
+ 77, 0, 364, 86, 0, 364, 87, 0, 364, 67,
+ 0, 364, 66, 0, 364, 111, 0, 364, 65, 62,
+ 0, 364, 71, 0, 364, 91, 0, 364, 83, 0,
+ 364, 47, 0, 364, 94, 112, 0, 364, 39, 0,
+ 364, 38, 0, 364, 39, 94, 112, 0, 364, 38,
+ 94, 112, 0, 364, 338, 363, 0, 364, 1, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 309, 311, 325, 328, 329, 333, 335, 338, 343, 347,
+ 353, 355, 358, 361, 365, 368, 370, 372, 375, 377,
+ 380, 383, 385, 387, 389, 391, 393, 395, 401, 405,
+ 408, 410, 414, 416, 417, 419, 423, 426, 432, 435,
+ 437, 441, 444, 448, 461, 463, 465, 469, 479, 481,
+ 483, 487, 491, 496, 499, 501, 505, 507, 508, 515,
+ 516, 517, 520, 523, 527, 529, 530, 533, 535, 538,
+ 541, 543, 547, 557, 559, 569, 578, 580, 590, 599,
+ 601, 611, 620, 622, 634, 642, 649, 654, 661, 668,
+ 671, 673, 675, 681, 691, 693, 696, 699, 701, 704,
+ 708, 717, 720, 722, 726, 739, 759, 762, 764, 765,
+ 768, 775, 781, 783, 785, 787, 790, 794, 800, 802,
+ 803, 804, 805, 808, 810, 811, 814, 816, 817, 820,
+ 823, 826, 828, 830, 832, 835, 837, 845, 852, 858,
+ 864, 870, 873, 880, 888, 890, 898, 901, 905, 908,
+ 911, 914, 916, 918, 920, 924, 927, 930, 935, 939,
+ 944, 948, 951, 953, 957, 977, 984, 987, 989, 990,
+ 991, 994, 1005, 1014, 1018, 1022, 1025, 1027, 1031, 1034,
+ 1037, 1041, 1044, 1046, 1048, 1050, 1057, 1068, 1070, 1072,
+ 1074, 1080, 1083, 1086, 1089, 1092, 1096, 1099, 1102, 1106,
+ 1108, 1112, 1116, 1118, 1122, 1125, 1132, 1135, 1137, 1145,
+ 1154, 1160, 1167, 1169, 1171, 1184, 1187, 1189, 1191, 1193,
+ 1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213,
+ 1215, 1217, 1219, 1221, 1223, 1225, 1227, 1231, 1233, 1235,
+ 1252, 1255, 1256, 1257, 1258, 1261, 1263, 1264, 1267, 1269,
+ 1271, 1273, 1277, 1279, 1280, 1284, 1292, 1293, 1294, 1302,
+ 1310, 1318, 1320, 1328, 1349, 1356, 1363, 1365, 1374, 1379,
+ 1402, 1446, 1447, 1451, 1455, 1459, 1463, 1465, 1469, 1471,
+ 1479, 1481, 1486, 1492, 1494, 1499, 1514, 1529, 1540, 1552,
+ 1560, 1569, 1613, 1616, 1620, 1623, 1627, 1630, 1635, 1637,
+ 1641, 1654, 1657, 1664, 1671, 1676, 1678, 1683, 1685, 1692,
+ 1694, 1698, 1702, 1708, 1712, 1715, 1718, 1721, 1731, 1733,
+ 1736, 1740, 1743, 1746, 1749, 1752, 1758, 1764, 1766, 1771,
+ 1773, 1782, 1785, 1787, 1790, 1796, 1798, 1808, 1812, 1815,
+ 1818, 1823, 1826, 1834, 1836, 1838, 1840, 1843, 1846, 1861,
+ 1880, 1883, 1885, 1888, 1890, 1893, 1895, 1898, 1900, 1903,
+ 1906, 1910, 1929, 1931, 1951, 1957, 1958, 1964, 1973, 1975,
+ 1985, 1994, 1996, 2008, 2011, 2015, 2018, 2022, 2027, 2030,
+ 2034, 2037, 2039, 2041, 2043, 2050, 2052, 2053, 2054, 2058,
+ 2061, 2065, 2068, 2074, 2076, 2079, 2082, 2085, 2091, 2094,
+ 2097, 2099, 2101, 2103, 2107, 2113, 2121, 2123, 2127, 2129,
+ 2134, 2137, 2140, 2142, 2144, 2148, 2152, 2157, 2161, 2164,
+ 2169, 2173, 2176, 2179, 2182, 2186, 2221, 2227, 2233, 2245,
+ 2247, 2250, 2252, 2257, 2259, 2261, 2263, 2265, 2269, 2274,
+ 2279, 2294, 2296, 2300, 2305, 2308, 2315, 2343, 2349, 2351,
+ 2354, 2357, 2359, 2363, 2365, 2369, 2395, 2424, 2426, 2428,
+ 2430, 2451, 2474, 2476, 2480, 2506, 2515, 2598, 2605, 2608,
+ 2616, 2627, 2636, 2640, 2655, 2658, 2663, 2665, 2667, 2669,
+ 2671, 2673, 2678, 2684, 2686, 2689, 2692, 2694, 2705, 2710,
+ 2713, 2719, 2722, 2723, 2734, 2737, 2738, 2749, 2751, 2754,
+ 2756, 2759, 2766, 2774, 2781, 2787, 2793, 2801, 2805, 2810,
+ 2814, 2817, 2826, 2828, 2832, 2835, 2840, 2844, 2849, 2859,
+ 2862, 2866, 2870, 2878, 2883, 2889, 2892, 2894, 2896, 2902,
+ 2905, 2907, 2909, 2911, 2915, 2918, 2939, 2947, 2948, 2952,
+ 2957, 2960, 2962, 2964, 2966, 2970, 2976, 2979, 2981, 2983,
+ 2985, 2989, 2992, 2995, 2997, 2999, 3001, 3005, 3008, 3011,
+ 3013, 3015, 3017, 3026, 3032, 3038, 3040, 3044, 3047, 3049,
+ 3053, 3055, 3056, 3059, 3061, 3067, 3082, 3088, 3098, 3112,
+ 3121, 3122, 3126, 3129, 3135, 3141, 3144, 3146, 3148, 3150,
+ 3154, 3158, 3162, 3165, 3170, 3173, 3175, 3177, 3179, 3181,
+ 3183, 3185, 3187, 3191, 3195, 3199, 3203, 3204, 3206, 3208,
+ 3210, 3212, 3214, 3216, 3218, 3220, 3228, 3230, 3231, 3232,
+ 3235, 3243, 3248, 3255, 3257, 3262, 3264, 3267, 3281, 3284,
+ 3287, 3296, 3308, 3319, 3339, 3349, 3352, 3360, 3372, 3375,
+ 3378, 3381, 3397, 3400, 3411, 3412, 3416, 3431, 3450, 3462,
+ 3476, 3490, 3503, 3522, 3540, 3559, 3567, 3588, 3606, 3619,
+ 3620, 3623, 3623, 3626, 3626, 3629, 3629, 3635, 3641, 3644,
+ 3649, 3656, 3665, 3674, 3683, 3691, 3704, 3706, 3710, 3712,
+ 3715, 3722, 3725, 3733, 3749, 3760, 3772, 3774, 3777, 3787,
+ 3797, 3808, 3810, 3812, 3815, 3832, 3838, 3846, 3848, 3850,
+ 3854, 3857, 3858, 3866, 3870, 3874, 3877, 3878, 3884, 3887,
+ 3890, 3892, 3896, 3901, 3904, 3914, 3919, 3920, 3928, 3934,
+ 3939, 3943, 3948, 3952, 3956, 3960, 3965, 3976, 3990, 3994,
+ 3997, 3999, 4003, 4007, 4010, 4013, 4015, 4019, 4021, 4028,
+ 4035, 4038, 4041, 4045, 4049, 4055, 4059, 4064, 4066, 4069,
+ 4074, 4080, 4090, 4093, 4095, 4099, 4104, 4106, 4113, 4116,
+ 4118, 4120, 4126, 4131, 4134, 4136, 4138, 4140, 4142, 4144,
+ 4146, 4148, 4150, 4152, 4154, 4156, 4158, 4160, 4162, 4164,
+ 4166, 4168, 4170, 4172, 4174, 4176, 4178, 4180, 4182, 4184,
+ 4186, 4188, 4190, 4192, 4194, 4196, 4199, 4201
+};
+
+static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
+"TYPENAME","SELFNAME","SCSPEC","TYPESPEC","CV_QUALIFIER","CONSTANT","STRING",
+"ELLIPSIS","SIZEOF","ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
+"BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","GCC_ASM_KEYWORD","TYPEOF",
+"ALIGNOF","SIGOF","ATTRIBUTE","EXTENSION","LABEL","REALPART","IMAGPART","AGGR",
+"VISSPEC","DELETE","NEW","THIS","OPERATOR","CXX_TRUE","CXX_FALSE","NAMESPACE",
+"TYPENAME_KEYWORD","USING","LEFT_RIGHT","TEMPLATE","TYPEID","DYNAMIC_CAST","STATIC_CAST",
+"REINTERPRET_CAST","CONST_CAST","SCOPE","EMPTY","PTYPENAME","NSNAME","'{'","','",
+"';'","THROW","':'","ASSIGN","'='","'?'","OROR","ANDAND","'|'","'^'","'&'","MIN_MAX",
+"EQCOMPARE","ARITHCOMPARE","'<'","'>'","LSHIFT","RSHIFT","'+'","'-'","'*'","'/'",
+"'%'","POINTSAT_STAR","DOT_STAR","UNARY","PLUSPLUS","MINUSMINUS","'~'","HYPERUNARY",
+"PAREN_STAR_PAREN","POINTSAT","'.'","'('","'['","TRY","CATCH","TYPENAME_ELLIPSIS",
+"PRE_PARSED_FUNCTION_DECL","EXTERN_LANG_STRING","ALL","PRE_PARSED_CLASS_DECL",
+"DEFARG","DEFARG_MARKER","TYPENAME_DEFN","IDENTIFIER_DEFN","PTYPENAME_DEFN",
+"END_OF_LINE","END_OF_SAVED_INPUT","')'","'}'","'!'","']'","program","extdefs",
+"@1","extdefs_opt",".hush_warning",".warning_ok","extension","asm_keyword","lang_extdef",
+"@2","extdef","@3","@4","using_decl","any_id","extern_lang_string","template_header",
+"@5","template_parm_list","template_type_parm","template_parm","template_def",
+"datadef","ctor_initializer_opt","maybe_return_init","eat_saved_input","fndef",
+"constructor_declarator","@6","@7","@8","@9","fn.def1","component_constructor_declarator",
+"fn.def2","return_id","return_init","base_init",".set_base_init","member_init_list",
+"member_init","identifier","notype_identifier","identifier_defn","explicit_instantiation",
+"template_type","self_template_type","template_close_bracket","template_arg_list",
+"template_arg","unop","expr","paren_expr_or_null","paren_cond_or_null","xcond",
+"condition","@10","compstmtend","already_scoped_stmt","@11","nontrivial_exprlist",
+"nonnull_exprlist","unary_expr","new_placement","new_initializer","regcast_or_absdcl",
+"cast_expr","expr_no_commas","notype_unqualified_id","unqualified_id","expr_or_declarator",
+"direct_notype_declarator","primary","@12","new","delete","boolean.literal",
+"string","nodecls","object","decl","declarator","fcast_or_absdcl","type_id",
+"typed_declspecs","typed_declspecs1","reserved_declspecs","declmods","typed_typespecs",
+"reserved_typespecquals","typespec","typespecqual_reserved","initdecls","notype_initdecls",
+"nomods_initdecls","maybeasm","initdcl0","@13","initdcl","@14","notype_initdcl0",
+"@15","nomods_initdcl0","@16","maybe_attribute","attributes","attribute","attribute_list",
+"attrib","any_word","identifiers_or_typenames","maybe_init","init","initlist",
+"fn.defpen","pending_inline","pending_inlines","defarg_again","pending_defargs",
+"structsp","@17","@18","@19","@20","maybecomma","maybecomma_warn","aggr","named_class_head_sans_basetype",
+"named_class_head_sans_basetype_defn","named_complex_class_head_sans_basetype",
+"do_xref_defn","named_class_head","unnamed_class_head","class_head","maybe_base_class_list",
+"base_class_list","base_class","base_class.1","base_class_access_list","left_curly",
+"self_reference","opt.component_decl_list","component_decl_list","component_decl",
+"component_decl_1","components","notype_components","component_declarator0",
+"component_declarator","after_type_component_declarator0","notype_component_declarator0",
+"after_type_component_declarator","notype_component_declarator","enumlist","enumerator",
+"new_type_id","cv_qualifiers","nonempty_cv_qualifiers","suspend_mom","nonmomentary_expr",
+"maybe_parmlist","after_type_declarator","complete_type_name","nested_type",
+"direct_after_type_declarator","notype_declarator","complex_notype_declarator",
+"complex_direct_notype_declarator","qualified_id","notype_qualified_id","overqualified_id",
+"functional_cast","type_name","nested_name_specifier","nested_name_specifier_1",
+"complex_type_name","ptr_to_mem","global_scope","new_declarator","direct_new_declarator",
+"absdcl","direct_abstract_declarator","stmts","errstmt",".pushlevel",".poplevel",
+"maybe_label_decls","label_decls","label_decl","compstmt_or_error","compstmt",
+"@21","simple_if","@22","@23","implicitly_scoped_stmt","@24","stmt","simple_stmt",
+"@25","@26","@27","@28","@29","@30","@31","@32","@33","@34","@35","@36","@37",
+"@38","@39","function_try_block","@40","@41","try_block","@42","@43","handler_seq",
+"handler","@44","@45","@46","type_specifier_seq","handler_args","label_colon",
+"for.init.statement","maybe_cv_qualifier","xexpr","asm_operands","nonnull_asm_operands",
+"asm_operand","asm_clobbers","parmlist","complex_parmlist","defarg","@47","defarg1",
+"parms","parms_comma","named_parm","full_parm","parm","see_typename","bad_parm",
+"exception_specification_opt","ansi_raise_identifier","ansi_raise_identifiers",
+"conversion_declarator","operator","operator_name",""
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 113, 113, 115, 114, 114, 116, 116, 117, 118, 119,
+ 120, 120, 122, 121, 123, 123, 123, 123, 123, 123,
+ 123, 124, 123, 125, 123, 123, 123, 123, 123, 126,
+ 126, 126, 127, 127, 127, 127, 128, 128, 130, 129,
+ 129, 131, 131, 132, 132, 132, 132, 133, 133, 133,
+ 133, 134, 134, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 136, 136, 137, 137, 137, 138, 138, 139,
+ 139, 139, 141, 140, 140, 142, 140, 140, 143, 140,
+ 140, 144, 140, 140, 145, 145, 145, 145, 145, 146,
+ 146, 146, 146, 147, 147, 147, 147, 147, 147, 147,
+ 148, 149, 149, 149, 150, 151, 152, 152, 152, 152,
+ 153, 153, 153, 153, 153, 153, 153, 153, 154, 154,
+ 154, 154, 154, 155, 155, 155, 156, 156, 156, 157,
+ 157, 157, 157, 157, 157, 157, 157, 158, 158, 158,
+ 158, 158, 159, 159, 160, 160, 161, 161, 162, 162,
+ 163, 163, 163, 163, 163, 164, 164, 165, 165, 166,
+ 166, 167, 167, 167, 169, 168, 168, 170, 170, 170,
+ 170, 172, 171, 171, 173, 173, 173, 173, 174, 174,
+ 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+ 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+ 175, 175, 175, 175, 176, 176, 177, 177, 177, 177,
+ 178, 178, 179, 179, 179, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 181, 181, 181, 181, 181, 182, 182, 182, 183, 183,
+ 183, 183, 184, 184, 184, 185, 185, 185, 185, 185,
+ 185, 185, 186, 185, 185, 185, 185, 185, 185, 185,
+ 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+ 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+ 185, 185, 187, 187, 188, 188, 189, 189, 190, 190,
+ 191, 192, 192, 193, 193, 193, 193, 193, 193, 194,
+ 194, 195, 195, 196, 196, 196, 196, 196, 197, 197,
+ 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
+ 199, 200, 200, 200, 200, 200, 200, 201, 201, 201,
+ 201, 202, 202, 203, 203, 203, 203, 203, 203, 203,
+ 204, 204, 204, 205, 205, 206, 206, 207, 207, 208,
+ 208, 210, 209, 209, 212, 211, 211, 214, 213, 213,
+ 216, 215, 215, 217, 217, 218, 218, 219, 220, 220,
+ 221, 221, 221, 221, 221, 222, 222, 222, 222, 223,
+ 223, 224, 224, 225, 225, 225, 225, 225, 226, 226,
+ 226, 226, 226, 226, 227, 228, 228, 228, 229, 229,
+ 230, 230, 231, 231, 231, 233, 232, 232, 234, 232,
+ 232, 232, 232, 232, 232, 235, 236, 232, 232, 237,
+ 237, 238, 238, 239, 239, 239, 239, 239, 240, 241,
+ 242, 242, 242, 243, 244, 244, 244, 245, 246, 246,
+ 247, 247, 247, 248, 248, 249, 249, 250, 250, 250,
+ 250, 250, 251, 251, 251, 251, 252, 253, 254, 254,
+ 254, 254, 255, 255, 256, 256, 256, 256, 256, 256,
+ 256, 256, 257, 257, 257, 257, 257, 257, 257, 257,
+ 257, 258, 258, 258, 259, 259, 259, 260, 260, 261,
+ 261, 262, 262, 263, 263, 263, 263, 264, 264, 265,
+ 265, 265, 266, 266, 267, 267, 268, 268, 268, 269,
+ 269, 270, 270, 271, 272, 273, 273, 273, 273, 274,
+ 274, 274, 274, 274, 274, 275, 275, 275, 275, 276,
+ 277, 277, 277, 277, 277, 277, 278, 278, 278, 278,
+ 278, 278, 279, 279, 279, 279, 279, 279, 280, 280,
+ 280, 280, 280, 281, 282, 283, 283, 284, 284, 284,
+ 285, 285, 285, 286, 286, 287, 287, 287, 287, 288,
+ 288, 288, 289, 289, 290, 291, 291, 291, 291, 291,
+ 291, 291, 292, 292, 293, 293, 293, 293, 293, 293,
+ 293, 293, 293, 293, 293, 294, 294, 294, 294, 294,
+ 294, 294, 294, 294, 294, 294, 295, 295, 295, 295,
+ 296, 297, 298, 299, 299, 300, 300, 301, 302, 302,
+ 304, 303, 306, 307, 305, 308, 309, 308, 310, 310,
+ 311, 311, 312, 313, 311, 311, 314, 315, 311, 316,
+ 317, 311, 318, 319, 320, 321, 311, 322, 323, 311,
+ 324, 311, 325, 311, 326, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+ 328, 329, 327, 331, 332, 330, 333, 333, 335, 336,
+ 337, 334, 338, 338, 339, 339, 340, 340, 340, 340,
+ 341, 341, 341, 342, 342, 343, 343, 343, 344, 344,
+ 345, 345, 346, 347, 347, 348, 348, 348, 349, 349,
+ 349, 349, 349, 349, 349, 349, 349, 349, 351, 350,
+ 352, 352, 353, 353, 353, 353, 353, 354, 354, 355,
+ 355, 355, 355, 355, 355, 356, 356, 357, 357, 358,
+ 359, 359, 360, 360, 360, 361, 362, 362, 363, 363,
+ 363, 363, 364, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365
+};
+
+static const short yyr2[] = { 0,
+ 0, 1, 0, 2, 2, 1, 0, 0, 0, 1,
+ 1, 1, 0, 2, 2, 1, 1, 5, 4, 5,
+ 4, 0, 6, 0, 5, 5, 2, 4, 2, 2,
+ 3, 3, 1, 1, 2, 2, 1, 2, 0, 5,
+ 3, 1, 3, 1, 2, 1, 2, 1, 3, 1,
+ 3, 2, 2, 2, 3, 3, 2, 2, 2, 2,
+ 2, 1, 1, 1, 0, 1, 2, 0, 1, 4,
+ 3, 3, 0, 8, 5, 0, 9, 6, 0, 8,
+ 5, 0, 9, 6, 2, 2, 1, 2, 1, 6,
+ 4, 6, 4, 2, 1, 2, 2, 1, 2, 1,
+ 2, 2, 4, 2, 3, 0, 0, 1, 3, 2,
+ 3, 1, 4, 2, 4, 2, 4, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 3, 2, 2, 4, 4, 3, 3, 4, 3, 4,
+ 3, 1, 4, 3, 1, 1, 1, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
+ 3, 0, 1, 1, 0, 7, 1, 1, 3, 4,
+ 3, 0, 3, 1, 3, 3, 3, 3, 1, 1,
+ 1, 2, 2, 2, 2, 2, 2, 2, 4, 2,
+ 4, 2, 3, 3, 4, 4, 5, 5, 6, 2,
+ 4, 5, 2, 2, 3, 3, 3, 1, 3, 2,
+ 3, 4, 1, 2, 5, 1, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 5, 3, 3, 1, 2,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 3, 1, 1, 3, 1, 1, 1, 1, 3,
+ 3, 3, 0, 4, 4, 2, 4, 2, 2, 1,
+ 4, 1, 7, 7, 7, 7, 4, 4, 2, 2,
+ 1, 4, 2, 2, 2, 5, 3, 5, 3, 4,
+ 6, 2, 1, 2, 1, 2, 1, 1, 1, 2,
+ 0, 2, 2, 3, 3, 3, 2, 2, 2, 1,
+ 1, 1, 2, 2, 2, 2, 1, 1, 1, 1,
+ 2, 2, 3, 3, 3, 4, 1, 2, 2, 2,
+ 1, 1, 1, 2, 2, 2, 1, 1, 2, 2,
+ 3, 1, 2, 1, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 1, 3, 1, 3, 1, 3, 0,
+ 4, 0, 6, 3, 0, 6, 3, 0, 6, 3,
+ 0, 6, 3, 0, 1, 1, 2, 6, 1, 3,
+ 0, 1, 4, 6, 4, 1, 1, 1, 1, 1,
+ 3, 0, 2, 1, 2, 3, 4, 1, 1, 3,
+ 4, 6, 3, 5, 1, 4, 3, 3, 0, 3,
+ 3, 3, 0, 2, 2, 0, 7, 4, 0, 6,
+ 3, 2, 2, 3, 4, 0, 0, 9, 1, 0,
+ 1, 0, 1, 1, 2, 2, 2, 2, 2, 2,
+ 3, 2, 3, 0, 1, 3, 2, 2, 1, 1,
+ 0, 2, 3, 1, 4, 1, 3, 1, 3, 4,
+ 4, 4, 2, 2, 3, 3, 1, 0, 1, 2,
+ 4, 3, 1, 2, 2, 2, 2, 2, 2, 2,
+ 1, 2, 2, 2, 4, 4, 2, 1, 5, 4,
+ 1, 0, 1, 3, 0, 1, 3, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 3, 4, 4, 4,
+ 4, 3, 1, 3, 1, 3, 2, 1, 6, 0,
+ 2, 1, 2, 0, 2, 4, 4, 2, 4, 3,
+ 3, 2, 2, 3, 1, 1, 2, 1, 2, 2,
+ 4, 4, 3, 3, 2, 1, 3, 3, 2, 2,
+ 3, 1, 3, 3, 2, 2, 3, 1, 4, 3,
+ 4, 3, 1, 2, 2, 1, 2, 4, 4, 2,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
+ 1, 2, 2, 3, 1, 3, 2, 3, 2, 2,
+ 3, 1, 3, 4, 3, 2, 2, 1, 3, 2,
+ 2, 1, 2, 3, 1, 3, 1, 6, 4, 4,
+ 3, 5, 3, 3, 3, 2, 1, 1, 2, 2,
+ 2, 0, 0, 0, 1, 1, 2, 3, 1, 2,
+ 0, 5, 0, 0, 6, 1, 0, 4, 1, 1,
+ 1, 2, 0, 0, 6, 1, 0, 0, 7, 0,
+ 0, 7, 0, 0, 0, 0, 14, 0, 0, 9,
+ 0, 5, 0, 7, 0, 4, 2, 2, 2, 3,
+ 6, 8, 10, 12, 4, 3, 2, 2, 1, 1,
+ 0, 0, 6, 0, 0, 5, 1, 2, 0, 0,
+ 0, 8, 1, 1, 3, 3, 2, 2, 2, 2,
+ 2, 1, 2, 0, 1, 0, 1, 1, 0, 1,
+ 1, 3, 4, 1, 3, 0, 1, 1, 1, 2,
+ 2, 2, 1, 1, 2, 2, 2, 2, 0, 3,
+ 1, 1, 1, 2, 2, 2, 4, 2, 2, 2,
+ 2, 2, 2, 1, 2, 1, 2, 1, 1, 0,
+ 0, 1, 0, 4, 2, 1, 1, 3, 0, 3,
+ 3, 3, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 3, 2, 2, 2,
+ 2, 3, 2, 2, 4, 4, 3, 2
+};
+
+static const short yydefact[] = { 3,
+ 13, 13, 5, 0, 4, 0, 243, 571, 572, 333,
+ 345, 522, 0, 11, 12, 0, 0, 0, 10, 434,
+ 763, 0, 0, 0, 0, 585, 244, 245, 62, 0,
+ 0, 750, 0, 37, 0, 0, 14, 0, 8, 0,
+ 17, 16, 68, 89, 65, 0, 573, 142, 254, 552,
+ 0, 320, 0, 319, 338, 0, 358, 337, 376, 344,
+ 0, 445, 444, 451, 450, 449, 429, 332, 346, 538,
+ 87, 253, 563, 536, 0, 574, 520, 0, 0, 242,
+ 60, 61, 576, 0, 577, 0, 0, 119, 120, 121,
+ 122, 123, 419, 422, 0, 581, 0, 423, 0, 0,
+ 0, 0, 120, 121, 122, 123, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 30, 0, 0, 333, 39,
+ 133, 0, 0, 0, 132, 0, 578, 0, 550, 0,
+ 0, 0, 549, 0, 0, 0, 0, 254, 0, 524,
+ 0, 253, 520, 29, 0, 27, 3, 38, 0, 53,
+ 52, 69, 15, 0, 0, 392, 66, 58, 579, 524,
+ 0, 520, 59, 0, 0, 0, 85, 0, 354, 310,
+ 535, 311, 546, 0, 520, 335, 334, 57, 88, 321,
+ 0, 356, 336, 86, 327, 351, 352, 322, 340, 342,
+ 331, 353, 0, 54, 377, 435, 436, 437, 438, 448,
+ 128, 127, 129, 439, 440, 442, 0, 451, 750, 447,
+ 467, 468, 523, 339, 0, 0, 374, 572, 583, 142,
+ 565, 540, 575, 0, 539, 537, 0, 798, 794, 793,
+ 791, 773, 778, 779, 0, 785, 784, 770, 771, 769,
+ 788, 777, 774, 775, 776, 780, 781, 767, 768, 764,
+ 765, 766, 790, 782, 783, 772, 789, 0, 786, 693,
+ 338, 694, 759, 522, 257, 299, 0, 0, 0, 0,
+ 295, 293, 270, 297, 298, 0, 0, 0, 0, 0,
+ 239, 0, 0, 145, 146, 152, 151, 0, 153, 154,
+ 0, 0, 155, 0, 141, 0, 147, 0, 213, 0,
+ 216, 150, 256, 181, 0, 0, 258, 259, 0, 149,
+ 317, 338, 318, 566, 281, 272, 0, 0, 144, 0,
+ 137, 0, 0, 136, 421, 0, 416, 582, 580, 0,
+ 156, 157, 0, 0, 0, 381, 3, 22, 0, 424,
+ 0, 247, 248, 0, 246, 33, 34, 0, 564, 32,
+ 31, 41, 0, 131, 442, 139, 0, 548, 0, 547,
+ 241, 251, 0, 556, 250, 0, 555, 0, 255, 560,
+ 0, 0, 13, 0, 0, 9, 9, 101, 72, 106,
+ 681, 0, 64, 63, 71, 104, 0, 0, 102, 67,
+ 562, 0, 0, 528, 0, 753, 0, 533, 0, 532,
+ 0, 0, 0, 0, 520, 374, 0, 56, 524, 520,
+ 545, 0, 324, 325, 0, 55, 374, 329, 328, 330,
+ 323, 343, 360, 359, 441, 443, 446, 452, 0, 0,
+ 341, 0, 373, 375, 520, 73, 520, 79, 521, 551,
+ 572, 584, 142, 0, 0, 787, 792, 340, 520, 520,
+ 0, 520, 797, 0, 0, 0, 188, 0, 0, 190,
+ 203, 204, 0, 0, 0, 0, 0, 240, 187, 184,
+ 183, 185, 0, 0, 0, 0, 0, 256, 0, 0,
+ 0, 182, 0, 140, 186, 0, 0, 214, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 266, 268, 269, 303, 302, 0, 0, 0, 0, 0,
+ 192, 518, 0, 200, 300, 292, 0, 750, 284, 285,
+ 0, 0, 312, 602, 598, 607, 0, 524, 520, 520,
+ 520, 314, 605, 0, 570, 316, 0, 0, 315, 283,
+ 0, 279, 294, 296, 567, 0, 280, 143, 135, 442,
+ 515, 432, 513, 418, 0, 347, 0, 0, 348, 349,
+ 350, 387, 388, 389, 386, 0, 379, 382, 0, 3,
+ 0, 425, 28, 36, 35, 46, 0, 48, 42, 749,
+ 744, 0, 317, 338, 44, 318, 748, 50, 138, 554,
+ 553, 255, 557, 0, 19, 21, 68, 107, 301, 0,
+ 631, 70, 629, 398, 0, 394, 393, 180, 0, 179,
+ 525, 561, 0, 723, 724, 0, 718, 338, 0, 717,
+ 719, 751, 733, 0, 0, 559, 531, 530, 0, 0,
+ 544, 0, 364, 355, 543, 0, 753, 534, 326, 357,
+ 370, 374, 750, 0, 750, 0, 453, 454, 456, 750,
+ 458, 488, 572, 0, 481, 0, 0, 491, 100, 95,
+ 0, 142, 492, 495, 0, 473, 0, 98, 0, 374,
+ 0, 371, 753, 716, 753, 716, 520, 76, 520, 82,
+ 796, 795, 759, 759, 759, 0, 0, 0, 570, 0,
+ 0, 0, 0, 338, 0, 0, 0, 262, 0, 260,
+ 261, 0, 211, 148, 243, 571, 572, 244, 245, 0,
+ 0, 399, 430, 0, 238, 237, 708, 707, 0, 235,
+ 234, 232, 233, 231, 230, 229, 226, 227, 228, 224,
+ 225, 219, 220, 221, 222, 223, 217, 218, 0, 0,
+ 0, 0, 0, 0, 194, 208, 0, 0, 193, 520,
+ 520, 0, 520, 517, 592, 0, 0, 0, 0, 287,
+ 0, 289, 0, 601, 600, 597, 596, 749, 0, 0,
+ 616, 0, 0, 753, 313, 753, 603, 520, 716, 524,
+ 602, 598, 0, 0, 520, 0, 0, 0, 0, 0,
+ 0, 433, 0, 432, 178, 177, 176, 175, 381, 0,
+ 0, 25, 0, 26, 47, 0, 40, 0, 602, 598,
+ 0, 740, 520, 743, 745, 741, 742, 439, 0, 18,
+ 20, 124, 112, 125, 126, 0, 105, 108, 0, 0,
+ 0, 0, 630, 622, 395, 0, 103, 529, 526, 722,
+ 739, 728, 726, 0, 527, 721, 738, 727, 725, 720,
+ 752, 735, 746, 736, 729, 734, 755, 0, 362, 542,
+ 541, 368, 367, 464, 0, 463, 0, 0, 750, 750,
+ 750, 0, 520, 716, 487, 482, 374, 374, 479, 480,
+ 477, 478, 520, 716, 243, 571, 0, 360, 96, 483,
+ 493, 498, 499, 360, 360, 0, 0, 360, 94, 484,
+ 496, 360, 474, 475, 476, 374, 0, 426, 361, 0,
+ 75, 0, 81, 0, 753, 716, 753, 716, 761, 760,
+ 762, 271, 189, 191, 277, 278, 0, 0, 0, 0,
+ 261, 264, 0, 0, 0, 0, 212, 0, 265, 267,
+ 206, 205, 196, 0, 195, 210, 0, 0, 589, 587,
+ 0, 590, 524, 201, 0, 0, 290, 0, 0, 599,
+ 595, 606, 520, 615, 613, 614, 604, 753, 0, 611,
+ 0, 568, 569, 0, 282, 516, 514, 420, 0, 380,
+ 378, 243, 0, 23, 43, 49, 601, 597, 602, 598,
+ 0, 536, 0, 520, 603, 51, 0, 110, 0, 114,
+ 0, 116, 0, 118, 0, 682, 624, 0, 396, 602,
+ 598, 0, 256, 0, 566, 747, 0, 0, 756, 757,
+ 0, 0, 0, 365, 0, 0, 459, 0, 0, 466,
+ 465, 457, 753, 0, 392, 392, 753, 0, 0, 0,
+ 374, 374, 0, 374, 374, 0, 374, 0, 392, 0,
+ 413, 372, 520, 520, 78, 0, 84, 0, 0, 0,
+ 0, 0, 0, 403, 0, 0, 400, 215, 236, 0,
+ 197, 198, 207, 209, 588, 586, 593, 591, 0, 202,
+ 0, 286, 288, 753, 609, 520, 610, 417, 0, 383,
+ 385, 601, 597, 540, 603, 111, 109, 0, 0, 0,
+ 0, 0, 168, 623, 0, 625, 626, 397, 0, 569,
+ 737, 731, 732, 730, 0, 754, 363, 369, 0, 461,
+ 462, 460, 455, 91, 520, 486, 490, 93, 520, 374,
+ 374, 507, 392, 243, 571, 0, 494, 500, 501, 360,
+ 360, 392, 392, 0, 392, 497, 485, 0, 753, 753,
+ 520, 520, 0, 0, 0, 0, 401, 0, 0, 0,
+ 199, 594, 291, 612, 753, 0, 113, 115, 117, 689,
+ 683, 687, 390, 0, 632, 0, 243, 571, 572, 633,
+ 647, 650, 653, 622, 0, 0, 0, 0, 0, 0,
+ 244, 679, 684, 0, 704, 0, 641, 0, 0, 338,
+ 0, 618, 639, 646, 617, 640, 680, 0, 627, 261,
+ 758, 366, 753, 753, 506, 503, 505, 0, 0, 374,
+ 374, 374, 502, 504, 489, 415, 0, 414, 409, 74,
+ 80, 753, 753, 273, 274, 275, 276, 0, 404, 519,
+ 608, 384, 622, 688, 0, 628, 621, 171, 697, 699,
+ 700, 622, 622, 622, 0, 0, 0, 665, 667, 668,
+ 669, 0, 0, 0, 698, 0, 309, 705, 0, 642,
+ 307, 360, 0, 308, 0, 360, 0, 0, 0, 169,
+ 620, 619, 643, 678, 677, 90, 92, 374, 374, 512,
+ 392, 392, 0, 0, 428, 77, 83, 402, 0, 391,
+ 0, 0, 637, 636, 0, 0, 0, 0, 661, 0,
+ 670, 0, 676, 685, 0, 305, 306, 0, 0, 0,
+ 304, 170, 622, 511, 509, 508, 510, 412, 411, 405,
+ 65, 68, 0, 690, 160, 0, 634, 648, 0, 651,
+ 624, 702, 654, 0, 167, 0, 338, 0, 0, 0,
+ 666, 675, 0, 0, 644, 0, 410, 0, 0, 0,
+ 0, 622, 0, 623, 0, 703, 622, 701, 658, 360,
+ 663, 662, 686, 709, 0, 623, 408, 0, 407, 695,
+ 696, 691, 161, 635, 172, 623, 174, 638, 158, 0,
+ 0, 0, 622, 374, 0, 0, 0, 710, 711, 671,
+ 645, 406, 623, 624, 649, 0, 652, 164, 0, 163,
+ 659, 0, 664, 0, 709, 0, 0, 692, 173, 159,
+ 655, 623, 165, 0, 0, 672, 712, 0, 660, 0,
+ 713, 0, 0, 0, 166, 714, 0, 673, 656, 0,
+ 0, 0, 715, 674, 623, 657, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 1457,
+ 373, 2, 374, 149, 606, 294, 216, 3, 4, 37,
+ 580, 337, 668, 344, 39, 40, 353, 587, 588, 589,
+ 41, 42, 382, 155, 153, 43, 669, 684, 926, 686,
+ 928, 45, 670, 671, 156, 157, 383, 608, 837, 838,
+ 204, 839, 205, 46, 47, 48, 295, 296, 297, 298,
+ 1206, 1401, 1347, 1419, 1356, 1440, 1114, 1396, 1414, 331,
+ 794, 299, 520, 759, 300, 301, 332, 303, 346, 362,
+ 50, 304, 480, 305, 306, 307, 308, 384, 309, 1207,
+ 423, 540, 627, 1208, 52, 188, 592, 311, 189, 458,
+ 190, 168, 181, 56, 406, 169, 1032, 424, 1129, 182,
+ 1033, 57, 920, 433, 58, 59, 576, 577, 578, 1184,
+ 389, 722, 723, 1341, 1342, 1305, 1238, 1158, 60, 565,
+ 326, 1061, 1239, 946, 803, 61, 62, 63, 64, 208,
+ 65, 66, 67, 210, 657, 658, 659, 660, 212, 429,
+ 430, 675, 676, 677, 900, 910, 901, 1147, 902, 903,
+ 1148, 1149, 562, 563, 521, 784, 313, 392, 393, 162,
+ 170, 69, 70, 171, 172, 141, 72, 116, 314, 315,
+ 316, 74, 317, 76, 98, 77, 318, 764, 765, 779,
+ 543, 1211, 1212, 1313, 1185, 1115, 1116, 1117, 612, 1213,
+ 844, 1214, 1262, 1372, 1315, 1349, 1215, 1216, 1333, 1386,
+ 1263, 1373, 1264, 1375, 1265, 1377, 1438, 1452, 1403, 1432,
+ 1360, 1405, 1320, 385, 609, 1111, 1217, 1276, 1363, 1181,
+ 1182, 1253, 1370, 1413, 1358, 1344, 1218, 1353, 1279, 729,
+ 1407, 1408, 1409, 1447, 629, 630, 866, 1028, 1124, 631,
+ 632, 633, 862, 634, 134, 864, 636, 1030, 1031, 453,
+ 79, 80
+};
+
+static const short yypact[] = { 45,
+ 109,-32768,-32768, 9869,-32768, 44,-32768, 294, 414, 76,
+-32768,-32768, 392,-32768,-32768, 42, 59, 94,-32768,-32768,
+-32768, 573, 707, 1336, 10054,-32768, 154, 170,-32768, 1480,
+ 1480,-32768, 3768,-32768, 9869, 142,-32768, 203, 126, 9939,
+-32768,-32768, 213,-32768, 260, 236, 271,-32768,-32768, 426,
+ 1790,-32768, 5098,-32768, 1518, 558,-32768, 301,-32768,-32768,
+ 881,-32768,-32768, 285,-32768,-32768, 302, 4449,-32768,-32768,
+ 1373,-32768,-32768,-32768, 324,-32768,-32768, 358, 6789,-32768,
+-32768,-32768,-32768, 8390,-32768, 8390, 10260,-32768, 294, 414,
+ 154, 170, 259, 344, 271,-32768, 358,-32768, 358, 8839,
+ 8839, 320,-32768,-32768,-32768,-32768,-32768, 49, 294, 414,
+ 154, 170, 939, 401, 553,-32768, 646, 646,-32768, 360,
+-32768, 4051, 3013, 881,-32768, 8390,-32768, 2670,-32768, 943,
+ 401, 2670,-32768, 1076, 2820, 2820, 3768, 334, 356, 399,
+ 397, 435,-32768,-32768, 500,-32768, 413,-32768, 1691, 44,
+-32768,-32768,-32768, 547, 72, 250, 521,-32768,-32768, 481,
+ 143,-32768,-32768, 2911, 2911, 4193, 1373, 608,-32768,-32768,
+ 502,-32768,-32768, 1243,-32768,-32768,-32768,-32768,-32768, 1518,
+ 672,-32768, 301, 1373,-32768,-32768,-32768, 1821, 1518,-32768,
+ 301,-32768, 4051,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 271, 939, 285,-32768,-32768,
+-32768,-32768,-32768, 1227, 358, 505, 301, 393,-32768, 176,
+-32768,-32768,-32768, 3112,-32768,-32768, 695,-32768, 512, 517,
+-32768,-32768,-32768,-32768, 559,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 503,-32768,-32768,
+ 1227, 4449, 1007, 533,-32768,-32768, 9453, 9540, 9627, 9627,
+-32768,-32768,-32768,-32768,-32768, 568, 600, 615, 621, 630,
+ 8926, 1076, 9627,-32768,-32768,-32768,-32768, 9627,-32768,-32768,
+ 9627, 6881,-32768, 9627,-32768, 557,-32768, 9627,-32768, 9013,
+-32768, 5963,-32768, 1585, 2305, 9100,-32768, 662, 1440,-32768,
+ 566, 2295, 2056,-32768, 240,-32768, 737, 1989,-32768, 557,
+-32768, 4051, 881,-32768,-32768, 1076, 606,-32768,-32768, 599,
+ 677, 10414, 611, 637, 648, 1302, 413,-32768, 553,-32768,
+ 939, 294, 414, 711,-32768,-32768,-32768, 646,-32768,-32768,
+-32768,-32768, 4374,-32768, 257,-32768, 557,-32768, 818,-32768,
+-32768,-32768, 2670,-32768,-32768, 2670,-32768, 653,-32768,-32768,
+ 3112, 55, 667, 678, 10260,-32768,-32768,-32768,-32768,-32768,
+-32768, 102,-32768,-32768,-32768,-32768, 6972, 8926,-32768,-32768,
+-32768, 8926, 686,-32768, 5379, 121, 3290,-32768, 3290,-32768,
+ 3538, 3538, 4193, 709,-32768, 301, 4051,-32768, 690,-32768,
+-32768, 3629, 1821, 1518, 4051,-32768, 301,-32768,-32768, 301,
+ 1821,-32768, 348,-32768,-32768, 271,-32768, 3069, 3964, 48,
+ 1227, 500, 747, 301,-32768,-32768,-32768,-32768,-32768,-32768,
+ 453,-32768, 289, 704, 714,-32768,-32768, 1227,-32768,-32768,
+ 826,-32768,-32768, 8926, 533, 6881,-32768, 340, 6881,-32768,
+-32768,-32768, 8839, 4846, 4846, 4846, 4846, 10482,-32768,-32768,
+-32768,-32768, 732, 9714, 9714, 6881, 738, 334, 740, 798,
+ 758,-32768, 8839,-32768,-32768, 6634, 6881,-32768, 8926, 8926,
+ 7063, 8926, 8926, 8926, 8926, 8926, 8926, 8926, 8926, 8926,
+ 8926, 8926, 8926, 8926, 8926, 8926, 8926, 8926, 8926, 8926,
+-32768,-32768,-32768,-32768,-32768, 8926, 8926, 8926, 8839, 2689,
+ 381, 362, 7696,-32768,-32768,-32768, 814, 862, 343, 361,
+ 1612, 401,-32768, 1557, 1557,-32768, 2917, 764, 777, 844,
+-32768,-32768, 561, 8200, 1177,-32768, 847, 358,-32768,-32768,
+ 8926,-32768,-32768,-32768,-32768, 551,-32768,-32768,-32768, 476,
+ 831, 837,-32768,-32768, 1076,-32768, 7427, 7518,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 52,-32768, 807, 789, 413,
+ 841,-32768,-32768,-32768,-32768, 804, 598, 848,-32768,-32768,
+ 702, 10315, 702, 1911, 881, 3617,-32768, 850,-32768,-32768,
+-32768, 809,-32768, 855,-32768,-32768, 213, 874, 854, 798,
+-32768,-32768,-32768,-32768, 6356, 10482,-32768, 677, 817, 10414,
+-32768,-32768, 820,-32768,-32768, 823, 330, 4985, 824,-32768,
+ 66, 10109, 871, 876, 383,-32768,-32768,-32768, 3290, 3290,
+-32768, 3629, 888,-32768,-32768, 843, 121,-32768, 1821,-32768,
+ 894, 301,-32768, 868,-32768, 707, 905,-32768,-32768, 262,
+-32768,-32768, 508, 707,-32768, 8926, 10009,-32768, 465, 465,
+ 188, 404, 3336, 10154, 4767,-32768, 129, 465, 903, 301,
+ 62,-32768, 121, 1089, 121, 1089,-32768,-32768,-32768,-32768,
+-32768,-32768, 1487, 1487, 1487, 861, 863, 9192, 844, 864,
+ 865, 867, 896, 3839, 904, 906, 907,-32768, 879,-32768,
+-32768, 884,-32768,-32768, 921, 590, 622, 379, 147, 8926,
+ 936,-32768, 942, 897, 10482, 10482,-32768,-32768, 948, 5235,
+ 7722, 2193, 5136, 5286, 4683, 2562, 2406, 2406, 2406, 1199,
+ 1199, 753, 753, 697, 697, 697,-32768,-32768, 915, 893,
+ 916, 923, 924, 4846, 381,-32768, 6972, 8926,-32768,-32768,
+-32768, 8926,-32768,-32768, 919, 9627, 922, 928, 991,-32768,
+ 8926,-32768, 8926, 3429,-32768, 3429,-32768, 157, 932, 937,
+-32768, 933, 4846, 121,-32768, 121, 3845,-32768, 1089, 941,
+ 8477, 8477, 6049, 940, 9013, 945, 1243, 1989, 964, 949,
+ 8926, 1076, 938, 837,-32768, 10482,-32768, 10482, 1302, 950,
+ 9279,-32768, 955,-32768,-32768, 4374,-32768, 4846, 2139, 2139,
+ 3183,-32768,-32768,-32768,-32768,-32768,-32768, 655, 8926,-32768,
+-32768,-32768,-32768, 154, 170, 8926, 1001,-32768, 438, 448,
+ 471, 102,-32768,-32768,-32768, 82,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 8295,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 876, 1002,-32768,-32768,-32768, 4846,-32768,-32768,
+-32768,-32768, 1005,-32768, 8839,-32768, 939, 401,-32768,-32768,
+-32768, 1109,-32768, 1089, 10482,-32768, 301, 301,-32768,-32768,
+-32768,-32768,-32768, 1089, 1009, 661, 8926, 348,-32768, 1023,
+-32768,-32768,-32768, 883, 1046, 324, 401, 1203, 465, 1024,
+-32768, 1359,-32768,-32768,-32768, 301, 4915,-32768,-32768, 6972,
+-32768, 977,-32768, 982, 121, 1089, 121, 1089,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 999, 1010, 1012, 1014,
+ 809,-32768, 10346, 6972, 6450, 988,-32768, 8926,-32768,-32768,
+-32768,-32768, 329, 1000,-32768,-32768, 1013, 150, 1070, 1070,
+ 998, 1070,-32768,-32768, 9627, 1121,-32768, 1029, 1033,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 121, 1035,-32768,
+ 1036,-32768,-32768, 1291,-32768, 10482,-32768,-32768, 1037,-32768,
+-32768, 158, 1040,-32768,-32768,-32768, 2364, 2364, 2492, 2492,
+ 3183,-32768, 1243,-32768, 2611, 5963, 1043,-32768, 874,-32768,
+ 8926,-32768, 8926,-32768, 8926,-32768, 68, 6543,-32768, 8569,
+ 8569, 6170, 144, 1044, 155,-32768, 6972, 6728,-32768,-32768,
+ 161, 6972, 6972,-32768, 1050, 1051,-32768, 939, 3069,-32768,
+-32768,-32768, 121, 1053, 1103, 1103, 121, 1059, 8926, 8926,
+ 5719, 301, 3687, 301, 301, 1032, 301, 3919, 1103, 5493,
+-32768,-32768,-32768,-32768,-32768, 1060,-32768, 1069, 8926, 8926,
+ 8926, 8926, 6972,-32768, 8926, 1093,-32768,-32768, 10482, 8926,
+-32768, 329,-32768,-32768,-32768,-32768,-32768,-32768, 1067,-32768,
+ 1134,-32768,-32768, 121,-32768,-32768,-32768,-32768, 8926,-32768,
+-32768, 2364, 2364,-32768, 2611,-32768,-32768, 1075, 1080, 1081,
+ 1098, 1076,-32768,-32768, 5927, 1166,-32768,-32768, 1094, 1409,
+-32768,-32768,-32768,-32768, 4846,-32768,-32768,-32768, 6972,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 5719,
+ 5719,-32768, 1103, 1144, 691, 8926,-32768,-32768,-32768, 348,
+ 348, 1103, 1103, 453, 1103,-32768,-32768, 5654, 121, 121,
+-32768,-32768, 1099, 1100, 1101, 1104,-32768, 10437, 6972, 1116,
+-32768,-32768,-32768,-32768, 121, 1106,-32768,-32768,-32768,-32768,
+ 1098,-32768,-32768, 679,-32768, 166, 1154, 693, 729,-32768,
+-32768,-32768,-32768,-32768, 8926, 1159, 1182, 1185, 8661, 582,
+ 450,-32768,-32768, 8752, 1229, 1189,-32768, 2470, 10215, 3404,
+ 5816,-32768,-32768, 1238,-32768,-32768,-32768, 7806,-32768, 292,
+-32768,-32768, 121, 121,-32768,-32768,-32768, 8926, 8926, 5719,
+ 301, 301,-32768,-32768,-32768,-32768, 7609,-32768,-32768,-32768,
+-32768, 121, 121,-32768,-32768,-32768,-32768, 6972,-32768,-32768,
+-32768,-32768,-32768,-32768, 1076,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 798, 1162, 1163, 5543,-32768,-32768,-32768,
+-32768, 1198, 8926, 1200,-32768, 798,-32768,-32768, 1173,-32768,
+-32768, 348, 761,-32768, 785, 348, 9366, 806, 172,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 5719, 5719,-32768,
+ 1103, 1103, 1160, 10368, 1175,-32768,-32768,-32768, 1192,-32768,
+ 474, 474,-32768,-32768, 1259, 6265, 8839, 8926,-32768, 7915,
+-32768, 1230,-32768,-32768, 500,-32768,-32768, 9801, 9801, 7154,
+-32768,-32768, 798,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 260, 213, 3073,-32768,-32768, 8839,-32768,-32768, 8107,-32768,
+ 68,-32768,-32768, 1232,-32768, 1178, 186, 4051, 10460, 7915,
+-32768,-32768, 1098, 53,-32768, 145,-32768, 1180, 1184, 798,
+ 1188, 798, 8011,-32768, 544,-32768,-32768,-32768,-32768, 348,
+-32768,-32768, 1098, 1292, 1241,-32768,-32768, 102,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 8926,
+ 1244, 7245, 798, 301, 7915, 1218, 180, 1258,-32768,-32768,
+-32768,-32768,-32768, 68,-32768, 1210,-32768,-32768, 1261,-32768,
+-32768, 1269,-32768, 8926, 1292, 1274, 1292,-32768,-32768,-32768,
+-32768,-32768,-32768, 1235, 229,-32768,-32768, 7336,-32768, 6972,
+-32768, 1328, 1293, 1246,-32768,-32768, 206,-32768,-32768, 1342,
+ 1301, 8011,-32768,-32768,-32768,-32768, 1363, 1364,-32768
+};
+
+static const short yypgoto[] = {-32768,
+ 1365,-32768, -276,-32768, 990, 58, 0, 1368,-32768, 311,
+-32768,-32768, 315, 1048,-32768,-32768,-32768,-32768,-32768, 572,
+-32768, 1226, -598, 56, -594, 1240, 96,-32768,-32768,-32768,
+-32768,-32768, 720,-32768,-32768,-32768,-32768,-32768,-32768, 387,
+ 4,-32768,-32768,-32768, 5114, -9, 22, -10, 920,-32768,
+ 859,-32768, 90,-32768, -1232,-32768, -1277, -44,-32768, 1705,
+ -289, -212,-32768, -709, 3691, 211, 1091, 3239, -48, 222,
+ 136,-32768,-32768,-32768, -300,-32768, -142,-32768,-32768, -1136,
+ -28, -305, 2329, 2, 872, -122, 46, 173, -170, -4,
+ -136, -784, 202,-32768, -66,-32768,-32768, -201,-32768,-32768,
+-32768,-32768,-32768, -101, 2902, -36,-32768, 603,-32768,-32768,
+ -967, -385, 799,-32768,-32768,-32768,-32768,-32768, -14,-32768,
+-32768,-32768,-32768,-32768, 618, 3,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 1216,-32768, 386, 545,-32768,-32768,-32768,
+-32768, 509, -616,-32768,-32768,-32768,-32768,-32768,-32768, 755,
+-32768, 376, 873, 640, 926, 4194, 8, 10, -379, 1268,
+ 3163, -412, 6,-32768, 4530, -127, 171, 5, 3723, 1140,
+-32768, 4271, 1650, 1780,-32768, 4014, 2468, -186,-32768, 2035,
+-32768,-32768, 239, -824, -695,-32768,-32768, 337, -827, -353,
+-32768,-32768,-32768,-32768, -1193,-32768, -1079, -1247,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 89,-32768,-32768,-32768,-32768,-32768, 98,
+ -1149,-32768,-32768,-32768, -54,-32768,-32768,-32768,-32768, -1282,
+ 32,-32768, 35,-32768, -574, -490, 596,-32768,-32768,-32768,
+-32768, -352,-32768, -339, -152,-32768, 644, 342,-32768, 160,
+-32768, -294
+};
+
+
+#define YYLAST 10566
+
+
+static const short yytable[] = { 55,
+ 597, 617, 372, 36, 217, 51, 545, 364, 367, 414,
+ 842, 68, 831, 598, 1016, 661, 94, 554, 96, 1017,
+ 55, 195, 167, 557, 263, 108, 122, 124, 613, 646,
+ 55, 1254, 68, 1354, 36, 55, 51, 128, 132, 36,
+ 192, 51, 68, 431, -1, 955, 780, 68, 180, 53,
+ 886, 419, 422, 780, 457, 460, 428, 413, 913, 161,
+ 579, 35, 525, 214, 525, 220, 421, 1277, 349, 350,
+ 123, 525, 379, 1376, 261, 320, 856, 1136, 1137, 312,
+ 53, 312, 55, 225, 679, 53, 262, 488, 322, 323,
+ 448, 1157, 35, 354, 68, 312, 312, 35, 619, 44,
+ 1112, 1374, 610, 81, 328, 626, 338, 319, -2, 922,
+ 809, 924, 339, 1371, 1384, 357, 340, 417, 180, 347,
+ 121, 312, 351, 87, 857, 1397, 712, 858, 439, -301,
+ 44, 1292, 123, 380, 100, 44, 1429, 361, 1295, 1365,
+ 1018, 448, 363, 366, 55, 1387, 195, 356, 179, 161,
+ 51, 101, 699, 82, 195, 1444, 68, 680, 782, 611,
+ 810, 1385, 859, 604, 696, 192, 381, 850, 140, 1420,
+ 919, 397, 399, 192, 192, 1227, 54, 1113, 1394, 1352,
+ 161, 635, 321, 147, 1233, 1234, 102, 1235, 914, 394,
+ -254, 1019, 186, 187, 53, 840, 533, 54, 13, 192,
+ 127, -563, -301, 142, 1397, 644, 380, 54, -123, 1421,
+ 425, 889, 54, 650, 979, 851, 1099, 443, 852, 1125,
+ 225, 20, 437, 127, 148, 1257, 749, 126, 751, 752,
+ 23, 1257, 533, 1254, 145, 395, -254, -254, 915, 381,
+ 1361, 1425, 698, 1081, 44, 890, 192, -563, -563, 891,
+ 522, 260, -249, 853, 139, 554, 843, 214, 1084, 54,
+ 529, 800, 146, -563, 1450, 713, 1100, 880, 438, 1126,
+ 140, 140, 140, 364, 367, 1258, 419, 422, 698, 597,
+ 1382, 1332, 892, 154, 419, 469, 550, 312, 1426, 681,
+ 1442, 649, 863, 559, 422, 158, 386, 192, 881, 584,
+ 261, 140, 780, 813, 643, 142, 142, 142, 214, 1044,
+ 159, 422, 262, 387, 1451, 651, -130, 484, 38, 1048,
+ 152, 54, 545, 225, 159, 1423, 7, 8, 218, 561,
+ 780, 18, 551, 1336, 1337, 689, 142, 1443, -255, 575,
+ 850, 558, 388, 347, 582, 144, 209, 83, 594, 38,
+ 151, 1066, 585, 1068, 38, 595, 652, 365, 368, 211,
+ 596, 8, 9, 780, 21, 109, 110, 84, 325, 1266,
+ 55, 956, 1171, 14, 15, 756, 122, 124, 599, 27,
+ 28, 690, 68, 195, -255, -255, 533, 139, 851, 770,
+ 628, 852, 757, -749, 88, 89, 90, 195, 192, 192,
+ -252, 327, 596, 219, 109, 110, 192, 772, 639, 640,
+ 981, 32, 336, 111, 112, 26, 192, 111, 112, 672,
+ 123, 758, 1080, 1283, 55, 1288, 853, 756, 1309, 867,
+ 673, 760, 698, 192, 352, 771, 68, 1311, 1312, 435,
+ -122, 761, -249, 913, 757, 26, 85, 91, 92, 93,
+ 893, 312, 126, 773, 312, 762, 111, 112, 312, 704,
+ 704, 704, 704, 597, 369, 522, 86, 85, 957, 661,
+ 121, 312, -524, 758, 674, 868, 598, 260, 312, 461,
+ 462, 968, 312, 969, 1010, 436, 667, 86, 613, 721,
+ 14, 15, 160, 470, 1012, -360, 894, 554, 471, 687,
+ 874, 472, 876, 557, 482, 370, 85, 882, 485, 266,
+ 780, 1275, 419, 479, 312, 261, 524, 1014, -524, 160,
+ 1345, 993, -7, 126, -360, 593, 86, 262, -360, 159,
+ 1011, 780, 594, 448, 1062, -134, 140, 140, 140, 628,
+ 1013, 774, 776, -558, 596, 688, 1007, 54, -524, 378,
+ 873, 596, 1402, 225, 883, 7, 342, 343, 1074, 1077,
+ 1412, 85, 822, 1015, 826, 827, 1346, 593, 561, 109,
+ 110, 142, 142, 142, -360, 88, 103, 104, 918, 192,
+ 390, 86, 488, 1089, 88, 103, 104, 180, 271, 815,
+ 1399, 214, 391, 21, -524, 409, 840, 432, 828, 827,
+ 884, 54, 887, 888, 26, 444, 26, 788, 27, 28,
+ 445, 916, 533, 192, 447, 483, 193, 194, 721, 26,
+ 446, 111, 112, 365, 368, 454, 661, 594, 105, 106,
+ 107, 284, 1077, 285, 192, 534, 1400, 105, 106, 596,
+ 32, 1121, 1123, 83, 899, 535, 1127, 1128, 7, 342,
+ 343, -120, 699, 789, 790, 536, 816, 672, 537, 538,
+ 463, 1273, 55, 84, 672, 672, 407, 408, 673, 180,
+ 55, 525, 817, 464, 68, 85, 673, 479, 1398, 594,
+ 479, 594, 68, -121, 470, 471, 21, 1167, 465, 192,
+ 1411, 596, 260, 596, 466, 86, 365, 709, 8, 441,
+ 1415, 27, 28, 467, 7, 8, 9, 566, 479, 593,
+ 109, 110, 674, -45, 83, 564, 593, 1428, -45, 569,
+ 674, 1108, 1050, 1109, 667, 1110, 1039, 1040, 1041, -45,
+ 415, 416, 667, 32, 84, 567, 1439, 1255, 1256, 7,
+ 8, 9, 21, 1222, 83, 570, 83, 1367, 533, 704,
+ 111, 112, 1229, 958, 1260, 26, 571, 27, 28, 1456,
+ 26, 602, 111, 112, 84, 796, 84, 1388, 898, 908,
+ 583, 819, 1085, 1086, 442, 1088, -6, 21, 704, 509,
+ 510, 820, 85, 1249, 594, 1045, 1046, 605, 628, 32,
+ 1261, 536, 27, 28, 821, 538, 596, 622, 774, 776,
+ 596, 645, 86, 225, 593, 561, 88, 89, 90, 1176,
+ 682, 594, 575, 704, 1059, 691, 594, 641, 595, 407,
+ 1326, 109, 110, 596, 32, 692, 997, 998, 596, 109,
+ 110, 1052, 506, 507, 508, 509, 510, 1054, 1055, 54,
+ 708, 1052, 1057, 415, 1327, 1055, 710, 54, 711, 628,
+ 8, 9, 929, 930, 931, 611, 593, 26, 593, 91,
+ 92, 596, 1308, 704, 407, 1331, 713, 768, 769, 783,
+ 312, 364, 367, 111, 112, 781, 832, 8, 9, 594,
+ 1037, 111, 112, 88, 89, 90, 196, 197, 198, 594,
+ 785, 596, 364, 367, 801, 802, 220, 442, 812, 811,
+ 814, 596, 111, 112, 699, 219, -310, 672, 14, 15,
+ 1314, 818, 55, 829, 830, 380, 199, -252, 673, 796,
+ 833, 594, 1324, 594, 68, 847, 219, 26, 848, 834,
+ 835, 849, 855, 596, -748, 596, 91, 92, 200, 865,
+ -310, 88, 89, 90, -310, 7, 109, 110, 1076, 1142,
+ 1143, 869, 1152, 1153, 870, 1155, 140, 872, 330, 334,
+ 875, 593, 674, 879, 917, 593, 836, 8, 9, 932,
+ 937, 933, 934, 935, 667, 936, 964, -310, 938, 1314,
+ 939, 940, -119, 21, 201, 202, 203, 941, 593, 140,
+ 597, 142, 942, 593, 91, 92, 594, 944, 27, 28,
+ 945, 470, 471, 1369, 950, 947, 1102, 1103, 596, 948,
+ 109, 110, 963, 365, 709, 966, 1392, 628, 1314, 111,
+ 112, 1076, 219, 949, 142, 951, 593, 1102, 1103, 596,
+ 32, 952, 953, 965, 613, 109, 1154, 967, 1225, 1226,
+ 972, 1132, 139, 442, 974, 973, 443, 988, 982, 1314,
+ 672, 699, 980, 983, 1445, 55, 593, 985, 991, 1009,
+ 26, 673, 111, 112, 994, 1027, 593, 68, 1034, -311,
+ 1049, 14, 15, 109, 110, 1024, 449, 439, 88, 103,
+ 104, 1053, 1058, 1231, 1232, 1063, 450, 111, 112, 54,
+ 1064, 1069, 8, 9, 119, 11, 12, 1078, 593, 624,
+ 593, 13, 1070, -311, 1071, 674, 1072, -311, 1082, 1087,
+ 1210, 442, 8, 9, 1205, 1183, 16, 667, 17, 18,
+ 704, 1083, 68, 26, 20, 111, 112, 1091, 1300, 1301,
+ 1302, 105, 106, 23, 140, 140, 140, 1092, 654, 760,
+ -311, 1093, 26, 1096, 111, 112, 1098, 1097, 1101, 761,
+ 477, 1106, 1120, 656, 1169, 140, 140, 140, 1130, 1131,
+ 1209, 1135, 26, 762, 111, 112, 387, 1139, 1161, 142,
+ 142, 142, 1204, 593, 302, 1090, 302, 1162, 1172, 1282,
+ 1173, 1282, 1364, 1177, -520, 625, 448, -520, 1178, 1179,
+ 142, 142, 142, 1180, 593, 192, 1334, 1335, 1112, 1210,
+ 364, 367, 1220, 1274, 180, 1228, 1210, 1244, 1245, 1246,
+ 1205, 68, 1247, 1210, 1252, 1259, 302, 1205, 68, 417,
+ 1268, 365, 368, 785, 591, 68, -99, 1250, 14, 15,
+ 470, 471, 54, 186, 187, -520, 1278, -520, -520, 13,
+ -520, 1269, 365, 1119, 1270, 7, 8, 9, 1280, 1209,
+ 621, -520, 1293, -520, 1316, 1317, 1209, 1321, 1310, 1323,
+ -99, 1204, 20, 1209, -99, 1325, 591, 1338, 1204, -520,
+ -520, 23, 1340, -520, 1350, 1204, 504, 505, 506, 507,
+ 508, 509, 510, 21, 1343, -520, 1379, 54, 1390, 1362,
+ 871, 1378, 1391, 7, 8, 9, 1393, -99, 27, 28,
+ 1410, 1406, 1422, 1417, 88, 103, 104, 572, 573, 574,
+ 1424, 1210, 1357, 1404, 477, 1210, 1427, 477, 1430, 1205,
+ 1431, 701, 219, 68, 262, 312, 921, 68, 923, 1380,
+ 32, 21, 1433, 1436, 477, 639, 640, 1446, 594, 109,
+ 110, 1357, 192, 1441, 1210, 477, 27, 28, 1205, 728,
+ 596, 1453, 1448, 262, 1449, 1210, 68, 105, 106, 1205,
+ 1454, 1209, 1458, 1459, 1, 1209, 607, 68, 1210, 5,
+ 442, 468, 1205, 1204, 376, 750, 54, 1204, 32, 115,
+ 68, 767, -97, 54, 14, 15, 581, 995, 377, 26,
+ 54, 111, 112, 909, 1209, 1107, 1366, 1357, 14, 15,
+ 1210, 1348, 714, -360, 1205, 1209, 1204, 1455, 591, 262,
+ 1285, 990, 68, 846, 482, 591, -97, 1204, 1209, -255,
+ -97, 989, 140, 427, 1133, 1060, 1042, 975, 911, 976,
+ 1204, -360, -360, 1156, -255, -255, -360, 804, 410, -255,
+ 526, 987, 7, 342, 343, 755, 527, 1210, 530, 1291,
+ 1209, 1205, 1219, -97, 1389, -255, 1435, 142, 1026, 68,
+ 1383, 1437, 1204, 140, 140, 140, 1221, -255, -255, 0,
+ -255, 0, -255, 0, 0, 0, 0, 616, 620, 0,
+ 21, 0, 7, 109, 110, 620, 0, 12, 54, 260,
+ 109, 110, 54, 26, 439, 27, 28, 1209, 142, 142,
+ 142, -255, -255, 591, 0, -255, 0, 0, 1024, 1204,
+ 0, 0, 0, 0, 0, 593, 0, -255, 260, 0,
+ 21, 54, 0, 185, 186, 187, 0, 528, 0, 0,
+ 13, 0, 54, 26, 0, 27, 28, 0, 470, 471,
+ 26, 0, 111, 112, 620, 54, 0, 0, 18, 30,
+ 365, 1119, 0, 20, 0, 591, 449, 591, 0, 31,
+ 109, 110, 23, 0, 12, 0, 450, 32, 1065, 0,
+ 1067, 0, 33, 302, 260, 0, 616, 54, 0, 725,
+ 726, 0, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 0, 0, 533, 0, 0, 620, 0, 620, 620,
+ 26, 0, 111, 112, 7, 109, 110, 0, 0, 0,
+ 961, 1095, 0, 0, 54, 0, 534, 0, 0, 0,
+ 0, 511, 0, 0, 620, 0, 535, 0, 0, 0,
+ 0, 620, 0, 0, 0, 0, 536, 0, 0, 537,
+ 538, 477, 21, 75, 0, 0, 0, 806, 808, 0,
+ 591, 0, 97, 0, 591, 0, 0, 27, 28, 0,
+ 512, 513, 113, 117, 75, 514, 515, 516, 517, 130,
+ 130, 0, 130, 0, 75, 0, 1134, 591, 0, 75,
+ 1138, 6, 591, 7, 8, 9, 10, 11, 12, 32,
+ 174, 0, 75, 13, 0, 616, 0, 0, 0, 0,
+ 207, 0, 0, 0, 0, 0, 0, 97, 16, 0,
+ 17, 18, 0, 0, 0, 591, 20, 227, 97, 0,
+ 0, 21, 0, 1035, 0, 23, 75, 1174, 375, 0,
+ 0, 0, 0, 0, 26, 0, 27, 28, 97, 0,
+ 29, 0, 0, 0, 0, 591, 885, 0, 0, 0,
+ 30, 0, 0, 341, 117, 591, 0, 117, 0, 0,
+ 31, 174, 97, 207, 0, 0, 0, 130, 32, 0,
+ 359, 130, 0, 33, 130, 130, 130, 0, 620, 0,
+ 0, 0, 7, 8, 9, 0, 0, 591, 75, 591,
+ 0, 0, 1240, 1241, 0, 0, 0, 0, 0, 0,
+ 943, 0, 0, 174, 174, 174, 0, 0, 1251, 0,
+ 0, 0, 0, 0, 0, 0, 418, 186, 187, 0,
+ 21, 0, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 174, 26, 0, 27, 28, 616, 620, 163,
+ 0, 18, 0, 0, 223, 0, 20, 0, 0, 164,
+ 0, 620, 0, 620, 97, 23, 1296, 1297, 0, 165,
+ 0, 0, 591, 130, 0, 0, 223, 32, 0, 0,
+ 477, 0, 166, 0, 0, 1306, 1307, 0, 0, 0,
+ 0, 986, 223, 591, 0, 0, 223, 0, 0, 0,
+ 0, 620, 0, 0, 0, 0, 0, 0, 0, 223,
+ 0, 97, 451, 7, 8, 9, 185, 186, 187, 1006,
+ 0, 0, 0, 13, 0, 0, 620, 1163, 1164, 1165,
+ 1166, 0, 0, 0, 0, 0, 0, 0, 1170, 0,
+ 0, 18, 0, 0, 620, 0, 20, 0, 0, 0,
+ 0, 21, 0, 223, 97, 23, 0, 533, 531, 0,
+ 451, 451, 547, 0, 26, 0, 27, 28, 0, 0,
+ 0, 174, 207, 0, 0, 0, 0, 0, 0, 0,
+ 819, 0, 0, 0, 0, 0, 223, 1051, 117, 0,
+ 820, 552, 8, 9, 0, 0, 0, 117, 32, 0,
+ 536, 0, 97, 821, 538, 0, 223, 0, 0, 0,
+ 616, 0, 130, 0, 0, 130, 0, 0, 0, 0,
+ 130, 0, 0, 0, 75, 0, 271, 553, 0, 21,
+ 0, 0, 0, 0, 616, 616, 0, 0, 1079, 0,
+ 0, 0, 26, 0, 111, 112, 174, 0, 174, 0,
+ 174, 174, 174, 0, 0, 0, 174, 1272, 0, 8,
+ 9, 174, 11, 213, 174, 0, 0, 0, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 97, 75, 0,
+ 0, 0, 0, 16, 0, 17, 0, 0, 0, 0,
+ 0, 20, 618, 0, 0, 0, 223, 0, 0, 618,
+ 23, 620, 533, 620, 0, 620, 0, 0, 616, 26,
+ 0, 111, 112, 97, 97, 97, 97, 616, 616, 0,
+ 223, 0, 616, 616, 0, 534, 0, 0, 0, 0,
+ 0, 1322, 0, 0, 0, 535, 0, 0, 223, 1140,
+ 1141, 7, 8, 9, 0, 536, 12, 0, 537, 538,
+ 0, 0, 0, 0, 0, 0, 0, 0, 618, 0,
+ 0, 0, 0, 616, 0, 1168, 0, 0, 0, 97,
+ 0, 451, 0, 0, 728, 1355, 0, 0, 0, 21,
+ 0, 531, 0, 451, 451, 533, 547, 0, 477, 620,
+ 0, 0, 26, 797, 27, 28, 0, 799, 0, 0,
+ 0, 0, 0, 0, 1355, 0, 0, 0, 819, 0,
+ 0, 0, 0, 0, 591, 0, 0, 0, 820, 616,
+ 618, 0, 618, 618, 0, 0, 32, 0, 536, 0,
+ 223, 821, 538, 0, 0, 113, 1230, 0, 0, 0,
+ 174, 797, 174, 174, 207, 547, 0, 0, 618, 0,
+ 0, 0, 0, 0, 0, 618, 0, 0, 1416, 616,
+ 1355, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 174, 0, 0,
+ 0, 797, 1434, 0, 0, 1267, 0, 0, 174, 174,
+ 0, 174, 0, 0, 0, 0, 728, 0, 109, 110,
+ 0, 186, 187, 0, 0, 877, 0, 13, 8, 9,
+ 223, 11, 12, 117, 0, 0, 75, 13, 1298, 1299,
+ 0, 0, 906, 75, 75, 0, 223, 1304, 0, 0,
+ 20, 0, 16, 97, 17, 97, 0, 0, 616, 23,
+ 20, 533, 451, 451, 451, 542, 546, 549, 26, 23,
+ 111, 112, 0, 451, 0, 0, 0, 0, 26, 0,
+ 111, 112, 518, 0, 534, 0, 7, 8, 9, 0,
+ 0, 213, 0, 0, 535, 0, 0, 620, 0, 0,
+ 0, 0, 0, 0, 536, 0, 0, 544, 538, 0,
+ 0, 0, 0, 0, 0, 0, 0, 519, 0, 0,
+ 0, 0, 618, 97, 21, 0, 0, 0, 1359, 0,
+ 533, 0, 310, 0, 310, 0, 0, 26, 0, 27,
+ 28, 0, 0, 451, 0, 451, 0, 0, 333, 335,
+ 0, 0, 97, 819, 0, 0, 451, 0, 97, 0,
+ 797, 797, 797, 820, 0, 0, 0, 984, 0, 0,
+ 0, 32, 0, 536, 310, 0, 821, 538, 0, 0,
+ 0, 0, 618, 0, 0, 97, 0, 97, 174, 174,
+ 1003, 78, 7, 8, 9, 618, 0, 618, 0, 0,
+ 99, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 114, 118, 78, 0, 7, 8, 9, 131, 131, 12,
+ 131, 0, 78, 1003, 0, 0, 0, 78, 0, 0,
+ 21, 0, 0, 0, 0, 618, 0, 97, 131, 0,
+ 78, 0, 0, 26, 0, 27, 28, 1038, 0, 1281,
+ 616, 97, 21, 97, 0, 215, 0, 0, 533, 164,
+ 618, 0, 0, 97, 0, 26, 215, 27, 28, 165,
+ 0, 0, 0, 0, 78, 0, 1056, 32, 618, 0,
+ 0, 999, 166, 0, 0, 0, 75, 0, 775, 777,
+ 0, 1000, 0, 0, 0, 97, 223, 97, 223, 32,
+ 0, 536, 348, 0, 1001, 538, 0, 0, 0, 131,
+ 215, 0, 0, 0, 0, 131, 0, 0, 0, 131,
+ 0, 0, 131, 131, 131, 0, 0, 0, 451, 451,
+ 0, 451, 0, 7, 8, 9, 78, 0, 439, 0,
+ 481, 0, 0, 0, 0, 824, 0, 542, 546, 0,
+ 549, 131, 131, 131, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 174, 174, 174, 174,
+ 1003, 21, 0, 0, 174, 0, 223, 533, 0, 0,
+ 131, 0, 546, 0, 26, 0, 27, 28, 0, 1003,
+ 1003, 1003, 7, 109, 110, 0, 0, 213, 0, 0,
+ 819, 590, 0, 0, 0, 223, 0, 0, 97, 0,
+ 820, 131, 8, 9, 0, 11, 12, 0, 32, 0,
+ 536, 13, 174, 821, 538, 0, 0, 130, 0, 75,
+ 21, 0, 0, 0, 0, 618, 16, 618, 17, 618,
+ 0, 0, 0, 26, 20, 27, 28, 0, 0, 215,
+ 131, 0, 0, 23, 0, 0, 0, 0, 546, 30,
+ 0, 0, 26, 0, 111, 112, 0, 0, 0, 31,
+ 0, 174, 174, 0, 174, 0, 0, 32, 0, 0,
+ 0, 0, 33, 223, 0, 0, 0, 0, 0, 0,
+ 0, 0, 215, 0, 97, 0, 532, 0, 131, 131,
+ 548, 754, 223, 0, 697, 556, 0, 700, 0, 131,
+ 0, 702, 703, 705, 706, 707, 0, 0, 0, 0,
+ 0, 0, 0, 618, 481, 0, 348, 0, 970, 0,
+ 971, 310, 0, 0, 0, 724, 0, 223, 0, 0,
+ 215, 977, 7, 109, 110, 775, 777, 12, 0, 0,
+ 131, 0, 0, 131, 0, 223, 0, 0, 131, 0,
+ 0, 0, 78, 0, 0, 0, 0, 753, 0, 0,
+ 0, 0, 0, 775, 777, 0, 0, 174, 797, 174,
+ 21, 0, 0, 0, 131, 778, 131, 0, 131, 131,
+ 131, 0, 778, 26, 131, 27, 28, 0, 0, 131,
+ 0, 0, 131, 0, 0, 0, 0, 0, 0, 135,
+ 0, 0, 0, 0, 0, 215, 78, 0, 0, 136,
+ 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
+ 0, 0, 137, 7, 8, 9, 0, 0, 12, 0,
+ 8, 9, 119, 11, 12, 0, 0, 624, 0, 13,
+ 0, 215, 215, 215, 215, 0, 1003, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 17, 18, 0, 0,
+ 0, 21, 20, 0, 183, 0, 191, 0, 0, 0,
+ 590, 23, 0, 533, 26, 0, 27, 28, 0, 0,
+ 26, 0, 111, 112, 0, 0, 0, 1003, 1003, 1003,
+ 164, 0, 0, 0, 0, 0, 534, 215, 0, 131,
+ 165, 618, 97, 0, 0, 0, 535, 0, 32, 0,
+ 0, 131, 131, 166, 548, 0, 536, 174, 0, 537,
+ 538, 798, 0, 625, 0, 0, 8, 9, 176, 11,
+ 177, 0, 0, 556, 183, 13, 0, 0, 0, 0,
+ 0, 970, 971, 775, 777, 0, 0, 0, 0, 977,
+ 16, 0, 17, 18, 0, 0, 0, 0, 20, 0,
+ 0, 0, 0, 114, 775, 777, 0, 23, 131, 548,
+ 131, 131, 0, 548, 0, 0, 26, 0, 111, 112,
+ 0, 0, 8, 9, 653, 215, 8, 9, 119, 11,
+ 12, 191, 954, 1368, 0, 13, 0, 0, 0, 420,
+ 191, 0, 0, 0, 0, 131, 0, 0, 654, 548,
+ 16, 0, 17, 18, 0, 655, 131, 131, 20, 131,
+ 0, 724, 0, 656, 7, 109, 110, 23, 434, 439,
+ 0, 778, 26, 878, 111, 112, 26, 0, 111, 112,
+ 0, 118, 0, 0, 78, 0, 970, 971, 0, 977,
+ 907, 78, 78, 0, 590, 0, 996, 0, 0, 778,
+ 0, 215, 21, 215, 0, 0, 0, 0, 0, 0,
+ 131, 131, 131, 0, 0, 26, 0, 27, 28, 0,
+ 0, 131, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 778, 0, 0, 7, 8, 9, 119, 11,
+ 12, 31, 0, 624, 0, 13, 1029, 0, 0, 32,
+ 0, 0, 0, 1036, 33, 0, 0, 0, 0, 0,
+ 16, 0, 17, 18, 0, 0, 0, 0, 20, 0,
+ 0, 215, 0, 21, 0, 0, 0, 23, 0, 533,
+ 0, 0, 0, 0, 0, 0, 26, 0, 27, 28,
+ 0, 131, 49, 131, 0, 0, 0, 0, 0, 0,
+ 215, 0, 999, 0, 131, 0, 215, 0, 798, 798,
+ 798, 0, 1000, 49, 0, 556, 0, 0, 49, 49,
+ 32, 138, 536, 49, 0, 1001, 538, 0, 49, 625,
+ 0, 0, 0, 215, 0, 215, 131, 131, 548, 49,
+ 0, 49, 7, 8, 9, 0, 0, 213, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 434, 0, 0,
+ 0, 0, 0, 221, 420, 191, 0, 0, 434, 0,
+ 0, 798, 420, 0, 0, 49, 398, 400, 404, 778,
+ 21, 0, 0, 0, 0, 215, 0, 0, 895, 896,
+ 9, 0, 0, 26, 0, 27, 28, 0, 0, 215,
+ 778, 215, 0, 345, 0, 345, 345, 0, 0, 164,
+ 49, 215, 0, 0, 0, 0, 49, 0, 221, 165,
+ 49, 0, 0, 138, 138, 138, 21, 32, 0, 0,
+ 0, 0, 166, 0, 78, 0, 0, 49, 0, 26,
+ 0, 27, 28, 215, 0, 215, 0, 897, 0, 0,
+ 0, 0, 49, 49, 138, 164, 7, 8, 9, 185,
+ 186, 187, 221, 0, 0, 165, 13, 0, 0, 0,
+ 0, 0, 0, 32, 0, 0, 131, 131, 166, 131,
+ 0, 49, 109, 110, 18, 0, 213, 0, 0, 20,
+ 0, 0, 0, 0, 21, 0, 0, 0, 23, 0,
+ 533, 0, 0, 1029, 0, 0, 0, 26, 0, 27,
+ 28, 0, 49, 0, 131, 131, 131, 131, 548, 0,
+ 0, 0, 131, 164, 0, 533, 215, 0, 0, 0,
+ 0, 0, 26, 165, 111, 112, 0, 798, 798, 798,
+ 0, 32, 0, 183, 0, 191, 1287, 0, 534, 0,
+ 0, 0, 0, 0, 0, 0, 215, 0, 535, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 536, 0,
+ 131, 537, 538, 0, 0, 131, 0, 78, 0, 191,
+ 478, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 8, 9, 0, 0, 12, 0, 345, 0, 0,
+ 420, 0, 0, 434, 0, 221, 0, 0, 0, 637,
+ 49, 638, 0, 398, 400, 404, 0, 0, 0, 131,
+ 131, 0, 131, 0, 648, 183, 0, 345, 21, 0,
+ 0, 434, 0, 0, 0, 0, 345, 0, 0, 0,
+ 0, 26, 215, 27, 28, 0, 0, 0, 0, 0,
+ 0, 49, 0, 0, 49, 0, 0, 401, 0, 49,
+ 0, 0, 0, 49, 0, 0, 0, 402, 0, -332,
+ 8, 9, -332, 11, 213, 32, 0, 0, 0, 13,
+ 403, 7, 8, 9, 0, 49, 439, 49, 0, 138,
+ 138, 138, 0, 0, 16, 49, 17, -332, 0, 0,
+ 49, 0, 20, 49, 0, 0, 0, -332, 481, 0,
+ 0, 23, 0, 533, 0, 0, 0, 49, 0, 21,
+ 26, 590, 111, 112, 0, 131, 548, 131, 0, 0,
+ 0, 0, 26, 0, 27, 28, 534, 0, 0, 1144,
+ 1145, 9, 0, 0, 478, 0, 535, 478, 164, 0,
+ 0, 0, 0, 0, -332, 0, 536, 0, 165, 537,
+ 538, 0, 478, 478, 478, 0, 32, 0, 0, 0,
+ 0, 166, 0, 0, 0, 478, 73, 21, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 26, 0, 27, 28, 0, 0, 0, 73, 1146, 0,
+ 0, 0, 73, 73, 798, 73, 164, 73, 0, 0,
+ 0, 0, 73, 0, 0, 0, 165, 0, 0, 221,
+ 7, 109, 110, 73, 32, 73, 0, 0, 0, 166,
+ 0, 0, 478, 0, 0, 0, 0, 0, 434, 434,
+ 0, 0, 0, 0, 0, 798, 798, 798, 0, 0,
+ 0, 637, 638, 0, 648, 0, 0, 0, 21, 73,
+ 215, 0, 0, 0, 0, 0, 0, 434, 0, 0,
+ 0, 26, 0, 27, 28, 131, 0, 0, 0, 49,
+ 49, 49, 49, 0, 0, 904, 0, 135, 0, 0,
+ 0, 0, 109, 110, 73, 186, 187, 136, 109, 110,
+ 73, 13, 439, 0, 73, 32, 0, 73, 73, 73,
+ 137, 0, 0, 0, 0, 0, 49, 0, 0, 0,
+ 49, 73, 0, 0, 20, 0, 0, 49, 49, 0,
+ 49, 0, 0, 23, 0, 533, 73, 73, 73, 0,
+ 0, 533, 26, 0, 111, 112, 0, 0, 26, 0,
+ 111, 112, 0, 0, 0, 49, 0, 0, 534, 0,
+ 0, 49, 49, 49, 534, 73, 0, 0, 535, 0,
+ 0, 1144, 109, 110, 535, 0, 0, 0, 536, 0,
+ 0, 537, 538, 0, 536, 0, 478, 537, 538, 0,
+ 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
+ 0, 0, 434, 434, 0, 434, 434, 0, 434, 21,
+ 0, 0, 0, 0, 662, 0, 7, 8, 663, 119,
+ 11, 12, 26, 0, 27, 28, 13, 0, 0, 0,
+ 1146, 398, 400, 404, 0, 0, 0, 0, 30, 0,
+ 0, 16, 0, 17, 18, 19, 0, 0, 31, 20,
+ -469, 539, 539, 539, 21, 0, 32, 0, 23, 664,
+ 0, 33, 0, 0, 0, 0, 404, 26, 0, 27,
+ 28, 0, 0, 665, 0, 666, 0, 0, 0, 478,
+ 478, 478, 0, 30, 0, 221, 0, 0, 0, 0,
+ 555, 434, 434, 31, 73, 0, 143, 0, 0, 0,
+ 0, 32, 0, 7, 8, 9, 33, 49, 49, 138,
+ 0, 0, 0, 0, 175, 0, 0, 0, 0, 0,
+ 0, 0, 0, -469, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73, 0, 0, 73, 0,
+ 0, 21, 1023, 73, 0, 0, 0, 73, 0, 0,
+ 0, 0, 0, 0, 26, 0, 27, 28, 0, 0,
+ 183, 191, 0, 0, 0, 0, 0, 0, 0, 73,
+ 164, 73, 0, 73, 73, 73, 0, 0, 0, 73,
+ 165, 434, 434, 434, 73, 175, 0, 73, 32, 0,
+ 0, 0, 0, 166, 221, 0, 0, 0, 143, 143,
+ 143, 73, 0, 0, 0, 49, 0, 0, 0, 637,
+ 638, 398, 400, 404, 0, 0, 0, 648, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 175, 175, 405,
+ 0, 0, 398, 400, 404, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 8, 9, 0, 434,
+ 434, 0, 0, 0, 0, 0, 175, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1150, 0, 0, 0, 0,
+ 0, 0, 221, 0, 539, 539, 0, 539, 0, 0,
+ 0, 0, 0, 21, 795, 49, 49, 138, 138, 138,
+ 0, 221, 0, 49, 0, 0, 26, 0, 27, 28,
+ 0, 0, 0, 0, 555, 0, 0, 0, 1023, 1023,
+ 1023, 0, 401, 0, 637, 638, 0, 648, 0, 0,
+ 224, 0, 402, 0, 0, 0, 452, 0, 0, 0,
+ 32, 539, 0, 539, 539, 403, 539, 0, 0, 0,
+ 0, 49, 0, 0, 0, 0, 49, 0, 49, 0,
+ 0, 0, 0, 0, 0, 434, 0, 0, 0, 0,
+ 0, 0, 0, 73, 73, 73, 73, 0, 539, 0,
+ 0, 173, 0, 0, 541, 541, 541, 0, 0, 0,
+ 841, 0, 0, 0, 0, 175, 371, 0, 0, 0,
+ 49, 49, 0, 49, 0, 222, 0, 0, 226, 0,
+ 73, 0, 0, 0, 73, 396, 0, 0, 0, 0,
+ 0, 73, 73, 0, 73, 0, 0, 222, 412, 329,
+ 0, 0, 0, 0, 0, 0, 0, 8, 9, 119,
+ 11, 12, 0, 0, 0, 0, 13, 0, 0, 73,
+ 0, 0, 173, 0, 539, 73, 73, 73, 0, 0,
+ 0, 16, 0, 17, 18, 0, 0, 0, 0, 20,
+ 175, 0, 175, 0, 405, 405, 405, 0, 586, 0,
+ 175, 0, 0, 0, 0, 175, 0, 26, 175, 111,
+ 112, 0, 0, 0, 173, 173, 173, 0, 0, 0,
+ 0, 0, 0, 0, 411, 0, 49, 49, 49, 404,
+ 0, 0, 8, 9, 0, 11, 213, 0, 0, 0,
+ 0, 13, 0, 173, 539, 0, 539, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 539, 17, 0,
+ 0, 795, 795, 795, 20, 226, 0, 0, 0, 0,
+ 398, 400, 404, 23, 0, 0, 0, 222, 0, 0,
+ 0, 0, 26, 0, 111, 112, 0, 0, 0, 539,
+ 539, 539, 0, 0, 0, 0, 0, 0, 0, 0,
+ 555, 0, 0, 0, 0, 1023, 0, 0, 0, 0,
+ 0, 0, 0, 71, 0, 763, 0, 0, 0, 0,
+ 0, 73, 73, 73, 795, 0, 0, 541, 541, 0,
+ 541, 0, 0, 0, 125, 0, 0, 541, 0, 129,
+ 133, 0, 0, 0, 71, 0, 1023, 1023, 1023, 71,
+ 0, 0, 0, 0, 0, 0, 1025, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 222, 226, 0,
+ 0, 0, 173, 0, 0, 0, 49, 0, 642, 0,
+ 0, 0, 0, 647, 823, 0, 823, 823, 0, 541,
+ 0, 0, 0, 0, 0, 0, 324, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 683, 0,
+ 685, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 0, 823, 693, 694, 0, 695, 0, 0, 0, 0,
+ 0, 0, 175, 175, 0, 175, 0, 358, 0, 0,
+ 0, 360, 0, 0, 0, 0, 0, 173, 0, 173,
+ 0, 173, 173, 173, 0, 0, 0, 173, 71, 0,
+ 0, 0, 173, 0, 0, 173, 175, 539, 539, 539,
+ 539, 539, 0, 129, 133, 539, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 452, 452, 452, 0,
+ 795, 795, 795, 0, 0, 0, 0, 541, 0, 73,
+ 73, 73, 73, 73, 0, 0, 0, 73, 0, 0,
+ 0, 841, 0, 786, 787, 0, 0, 0, 786, 0,
+ 0, 0, 1025, 1025, 1025, 0, 0, 0, 0, 0,
+ 0, 0, 0, 440, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 662, 0, 7,
+ 8, 663, 119, 11, 12, 73, 0, 0, 0, 13,
+ 73, 0, 73, 0, 0, 0, 0, 541, 0, 541,
+ 0, 0, 539, 539, 16, 539, 17, 18, 19, 0,
+ 541, 0, 20, -470, 541, 541, 541, 21, 0, 0,
+ 0, 23, 664, 0, 0, 0, 0, 222, 226, 0,
+ 26, 0, 27, 28, 73, 73, 665, 73, 666, 0,
+ 0, 0, 823, 823, 1004, 0, 30, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 8,
+ 9, 0, 11, 12, 32, 0, 0, 0, 13, 33,
+ 0, 173, 0, 173, 173, 0, 0, 1004, 0, 0,
+ 0, 0, 0, 16, 0, 17, -470, 0, 0, 0,
+ 925, 20, 927, 0, 0, 0, 0, 0, 0, 0,
+ 23, 0, 600, 0, 0, 601, 0, 0, 173, 26,
+ 603, 111, 112, 0, 125, 0, 0, 0, 0, 173,
+ 173, 0, 173, 0, 0, 662, 0, 7, 8, 663,
+ 119, 11, 12, 0, 0, 0, 358, 13, 360, 0,
+ 73, 73, 73, 0, 0, 0, 0, 0, 0, 0,
+ 0, 440, 16, 173, 17, 18, 19, 0, 0, 0,
+ 20, -472, 0, 959, 960, 21, 962, 0, 678, 23,
+ 664, 0, 0, 0, 0, 0, 0, 0, 26, 0,
+ 27, 28, 763, 763, 665, 763, 666, 0, 0, 0,
+ 0, 978, 0, 0, 30, 0, 0, 7, 8, 9,
+ 185, 186, 187, 0, 31, 0, 0, 13, 0, 0,
+ 0, 0, 32, 0, 0, 0, 0, 33, 0, 1025,
+ 823, 823, 1004, 1004, 1004, 18, 1005, 0, 823, 0,
+ 20, 0, 0, 0, -472, 21, 0, 0, 0, 23,
+ 0, 533, 0, 1004, 1004, 1004, 0, 0, 26, 0,
+ 27, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1025, 1025, 1025, 0, 819, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 820, 0, 175, 222, 226, 222,
+ 0, 0, 32, 0, 536, 0, 1043, 854, 538, 0,
+ 73, 0, 0, 0, 0, 0, 1047, 0, 0, 173,
+ 173, 1002, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 8, 9, 176, 11, 177, 0, 0, 0, 0,
+ 13, 0, 0, 0, 0, 823, 823, 0, 823, 0,
+ 0, 825, 0, 0, 1002, 16, 95, 17, 18, 0,
+ 0, 0, 0, 20, 0, 0, 95, 95, 21, 0,
+ 0, 0, 23, 95, 95, 0, 95, 0, 0, 0,
+ 0, 26, 0, 27, 28, 0, 0, 178, 0, 0,
+ 0, 861, 0, 0, 0, 0, 1094, 30, 600, 601,
+ 0, 603, 0, 0, 206, 0, 411, 31, 0, 0,
+ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
+ 33, 0, 0, 0, 0, 0, 678, 1105, 0, 0,
+ 0, 0, 905, 912, 678, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 0, 175, 0, 175, 0, 0, 95, 95, 95, 0,
+ 95, 95, 0, 0, 0, 0, 0, 355, 0, 0,
+ 0, 95, 0, 95, 95, 95, 0, 0, 95, 95,
+ 95, 0, 0, 0, 222, 0, 1159, 1160, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 173, 173, 173,
+ 173, 1002, 0, 1104, 0, 173, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1175,
+ 1002, 1002, 1002, 0, 0, 0, 0, 0, 0, 0,
+ 405, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 0,
+ 426, 0, 0, 173, 0, 0, 0, 0, 1223, 0,
+ 0, 0, 1224, 0, 0, 0, 0, 95, 0, 0,
+ 0, 405, 405, 405, 0, 0, 0, 0, 129, 133,
+ 0, 0, 0, 0, 1242, 1243, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 0, 175, 173, 173, 0, 173, 95, 0, 0, 623,
+ 0, 7, 8, 9, 119, 11, 264, 265, 266, 624,
+ 267, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 268, 17, 18,
+ 19, 0, 269, 270, 20, 0, 271, 272, 273, 21,
+ 274, 275, 95, 23, 95, 95, 0, 276, 277, 278,
+ 279, 280, 26, 0, 27, 28, 560, 0, 0, 281,
+ 0, 0, 0, 0, 0, 282, 678, 0, 283, 0,
+ 0, 0, 95, 0, 95, 0, 286, 287, 288, 0,
+ 0, 95, 0, 0, 289, 290, 291, 0, 0, 0,
+ 0, 292, 95, 0, 0, 625, 95, 0, 173, 95,
+ 173, 0, 0, 0, 95, 0, 0, -716, 0, 293,
+ 0, 0, 0, 662, 0, 7, 8, 663, 119, 11,
+ 12, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 17, 18, 19, 0, 358, 360, 20, -471,
+ 0, 0, 0, 21, 440, 0, 0, 23, 664, 0,
+ 0, 0, 0, 0, 0, 0, 26, 0, 27, 28,
+ 0, 0, 665, 1318, 666, 0, 0, 1002, 0, 0,
+ 0, 0, 30, 0, 95, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 32, 0, 1151, 0, 0, 33, 0, 1151, 0, 678,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1002, 1002,
+ 1002, 0, -471, 0, 1319, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 0, 173, 0,
+ 0, 600, 601, 0, 603, 95, 0, 0, 0, 0,
+ 0, 0, 0, 0, 95, 95, 0, 95, 95, 0,
+ 0, 0, 0, 0, 1236, 0, -427, -427, -427, -427,
+ -427, -427, 0, 0, -427, 0, -427, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -427, 0, -427,
+ -427, 0, 0, 0, -427, 0, 0, 0, 0, -427,
+ 0, 0, 0, 0, -427, 0, 0, 0, -427, 95,
+ -427, 0, 0, 0, 0, 0, 0, -427, 206, -427,
+ -427, -427, -427, -427, 0, -427, -427, -427, -427, -427,
+ -427, -427, -427, -427, -427, -427, -427, -427, -427, -427,
+ -427, -427, -427, -427, -427, -427, -427, -427, 1286, -427,
+ -427, -427, 0, -427, -427, -427, -427, -427, -427, 18,
+ -427, -427, 0, 0, 0, 0, 1237, 0, 0, 0,
+ 0, -427, -427, -427, 0, -427, 0, 0, 0, 95,
+ 0, 0, 0, 0, 0, 0, 0, 95, 0, 0,
+ 0, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 0, 0, 0, 95, 95, 95, 0,
+ 0, 0, 0, 0, 0, 0, 1289, 95, 1187, 1188,
+ 1189, 119, 11, 264, 265, 266, 0, 267, 13, 1190,
+ 0, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
+ 1200, 14, 15, 16, 268, 17, 18, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 1201, 28, 611, 0, 1202, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 283, 0, 95, 0, 95,
+ 0, 0, 0, 286, 287, 288, 0, 0, 0, 0,
+ 95, 289, 290, 291, 0, 0, 0, 0, 292, 0,
+ 1203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1290, 293, 1186, 0, 1187,
+ 1188, 1189, 119, 11, 264, 265, 266, 0, 267, 13,
+ 1190, 0, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
+ 1199, 1200, 14, 15, 16, 268, 17, 18, 19, 0,
+ 269, 270, 20, 0, 271, 272, 273, 21, 274, 275,
+ 0, 23, 0, 0, 0, 276, 277, 278, 279, 280,
+ 26, 0, 1201, 28, 611, 0, 1202, 281, 0, 0,
+ 95, 95, 0, 282, 0, 0, 283, 0, 0, 0,
+ 0, 0, 0, 0, 286, 287, 288, 0, 0, 0,
+ 0, 0, 289, 290, 291, 0, 0, 0, 0, 292,
+ 95, 1203, 0, 0, 0, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 293, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 0, 0, 473,
+ 0, 7, 8, 9, 119, 11, 264, 265, 266, 624,
+ 267, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 95, 95, 0, 95, 16, 268, 17, 18,
+ 19, 0, 269, 270, 20, 0, 271, 272, 273, 21,
+ 274, 275, 0, 23, 0, 533, 0, 276, 277, 278,
+ 279, 280, 26, 0, 27, 28, -263, 0, 0, 281,
+ 0, 0, 0, 0, 0, 282, 0, 0, 791, 0,
+ 0, 0, 0, 0, 0, 0, 286, 287, 792, 0,
+ 0, 0, 0, 0, 289, 290, 291, 0, 536, 0,
+ 0, 793, 538, 0, 0, 625, 0, 0, 0, 0,
+ 0, 95, 0, 0, 0, 0, 0, 0, 0, 293,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,
+ 473, 95, 7, 8, 9, 119, 11, 264, 265, 266,
+ 624, 267, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 16, 268, 17,
+ 18, 19, 0, 269, 270, 20, 0, 271, 272, 273,
+ 21, 274, 275, 0, 23, 0, 533, 0, 276, 277,
+ 278, 279, 280, 26, 0, 27, 28, -263, 0, 0,
+ 281, 0, 0, 0, 0, 0, 282, 0, 0, 1020,
+ 0, 0, 0, 0, 0, 0, 0, 286, 287, 1021,
+ 0, 0, 0, 0, 0, 289, 290, 291, 0, 536,
+ 0, 0, 1022, 538, 0, 727, 625, 7, 8, 9,
+ 119, 11, 264, 265, 266, 0, 267, 13, 0, 0,
+ 293, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 268, 17, 18, 19, 0, 269, 270,
+ 20, 0, 271, 272, 273, 21, 274, 275, 0, 23,
+ 0, 0, 0, 276, 277, 278, 279, 280, 26, 0,
+ 27, 28, 1351, 0, -706, 281, 0, 0, 0, 0,
+ 0, 282, 0, 0, 283, 0, 0, 0, 0, 0,
+ 0, 0, 286, 287, 288, 0, 0, 0, 0, 0,
+ 289, 290, 291, 0, 0, 0, 614, 292, 715, 716,
+ 717, 0, 11, 455, 265, 266, 0, 267, 13, 0,
+ 0, 0, 0, 0, 0, 293, 0, 0, 0, 0,
+ 0, 0, 0, 16, 268, 17, 0, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 718, 719, 615, 0, 0, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 283, 0, 0, 0, 0,
+ 0, 0, 0, 286, 287, 288, 0, 0, 0, 0,
+ 0, 289, 290, 291, 0, 0, 0, 0, 292, 720,
+ 614, 0, 715, 716, 717, 0, 11, 455, 265, 266,
+ 0, 267, 13, 0, 0, 845, 293, 0, 0, 1075,
+ 0, 0, 0, 0, 0, 0, 0, 16, 268, 17,
+ 0, 19, 0, 269, 270, 20, 0, 271, 272, 273,
+ 21, 274, 275, 0, 23, 0, 0, 0, 276, 277,
+ 278, 279, 280, 26, 0, 718, 719, 615, 0, 0,
+ 281, 0, 0, 0, 0, 0, 282, 0, 0, 283,
+ 0, 0, 0, 0, 0, 0, 0, 286, 287, 288,
+ 0, 0, 0, 0, 0, 289, 290, 291, 0, 0,
+ 0, 0, 292, 614, 0, 715, 716, 717, 0, 11,
+ 455, 265, 266, 0, 267, 13, 0, 0, 0, -431,
+ 293, 0, 1075, 0, 0, 0, 0, 0, 0, 0,
+ 16, 268, 17, 0, 19, 0, 269, 270, 20, 0,
+ 271, 272, 273, 21, 274, 275, 0, 23, 0, 0,
+ 0, 276, 277, 278, 279, 280, 26, 0, 718, 719,
+ 615, 0, 0, 281, 0, 0, 0, 0, 0, 282,
+ 0, 0, 283, 0, 0, 0, 0, 0, 0, 0,
+ 286, 287, 288, 0, 0, 0, 0, 0, 289, 290,
+ 291, 0, 0, 0, 614, 292, 715, 716, 717, 0,
+ 11, 455, 265, 266, 0, 267, 13, 0, 0, 0,
+ 0, 0, 1118, 293, 0, 0, 0, 0, 0, 0,
+ 0, 16, 268, 17, 0, 19, 0, 269, 270, 20,
+ 0, 271, 272, 273, 21, 274, 275, 0, 23, 0,
+ 0, 0, 276, 277, 278, 279, 280, 26, 0, 718,
+ 719, 615, 0, 0, 281, 0, 0, 0, 0, 0,
+ 282, 0, 0, 283, 0, 0, 0, 0, 0, 0,
+ 0, 286, 287, 288, 0, 0, 0, 0, 0, 289,
+ 290, 291, 0, 0, 0, 0, 292, 720, 614, 0,
+ 7, 8, 9, 0, 11, 455, 265, 266, 0, 267,
+ 13, 0, 0, 0, 293, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 16, 268, 17, 0, 19,
+ 0, 269, 270, 20, 0, 271, 272, 273, 21, 274,
+ 275, 0, 23, 0, 0, 0, 276, 277, 278, 279,
+ 280, 26, 0, 27, 28, 615, 0, 0, 281, 228,
+ 0, 0, 8, 9, 282, 11, 12, 283, 0, 0,
+ 0, 13, 0, 0, 0, 286, 287, 288, 0, 0,
+ 0, 0, 0, 289, 290, 291, 16, 0, 17, 0,
+ 292, 0, 0, 0, 20, 0, 229, 230, 0, 1122,
+ 0, 0, 0, 23, 0, 231, 0, 0, 293, 0,
+ 0, 0, 26, 0, 111, 112, 0, 232, 0, 0,
+ 0, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 0, 0, 254, 255, 256, 0, 0, 257,
+ 0, 473, 258, 7, 8, 9, 0, 11, 264, 265,
+ 266, 0, 267, 13, 0, 0, 0, 0, 0, 259,
+ 0, 0, 0, 0, 0, 0, 0, 0, 16, 268,
+ 17, 0, 19, 0, 269, 270, 20, 0, 271, 272,
+ 273, 21, 274, 275, 0, 23, 0, 0, 0, 276,
+ 277, 278, 279, 280, 26, 0, 27, 28, -263, 0,
+ 0, 281, 0, 0, 0, 0, 0, 282, 0, 0,
+ 474, 0, 0, 0, 0, 0, 0, 0, 286, 287,
+ 475, 0, 0, 0, 0, 0, 289, 290, 291, 0,
+ 0, 0, 614, 476, 7, 8, 9, 0, 11, 455,
+ 265, 266, 0, 267, 13, 0, 0, 0, 0, 0,
+ 0, 293, 0, 0, 0, 0, 0, 0, 0, 16,
+ 268, 17, 0, 19, 0, 269, 270, 20, 0, 271,
+ 272, 273, 21, 274, 275, 0, 23, 0, 0, 0,
+ 276, 277, 278, 279, 280, 26, 0, 27, 28, 615,
+ 0, 0, 281, 0, 0, 0, 0, 0, 282, 0,
+ 0, 283, 0, 0, 0, 0, 0, 0, 0, 286,
+ 287, 288, 0, 0, 0, 0, 0, 289, 290, 291,
+ 0, 0, 0, 727, 292, 7, 8, 9, 0, 11,
+ 455, 265, 266, 0, 267, 13, 0, 0, 0, 0,
+ 0, 0, 293, 0, 0, 0, 0, 0, 0, 0,
+ 16, 268, 17, 0, 19, 0, 269, 270, 20, 0,
+ 271, 272, 273, 21, 274, 275, 0, 23, 0, 0,
+ 0, 276, 277, 278, 279, 280, 26, 0, 27, 28,
+ 0, 0, 0, 281, -706, 0, 0, 0, 0, 282,
+ 0, 0, 283, 0, 0, 0, 0, 0, 0, 0,
+ 286, 287, 288, 0, 0, 0, 0, 0, 289, 290,
+ 291, 0, 0, 0, 473, 292, 7, 8, 9, 0,
+ 11, 264, 265, 266, 0, 267, 13, 0, 0, 0,
+ 0, 0, 0, 293, 0, 0, 0, 0, 0, 0,
+ 0, 16, 268, 17, 0, 19, 0, 269, 270, 20,
+ 0, 271, 272, 273, 21, 274, 275, 0, 23, 0,
+ 0, 0, 276, 277, 278, 279, 280, 26, 0, 27,
+ 28, -263, 0, 0, 281, 0, 0, 0, 0, 0,
+ 282, 0, 0, 1328, 0, 0, 0, 0, 0, 0,
+ 0, 286, 287, 1329, 0, 0, 0, 0, 0, 289,
+ 290, 291, 0, 0, 0, 1418, 1330, 7, 8, 9,
+ 0, 11, 264, 265, 266, 0, 267, 13, 0, 0,
+ 0, 0, 0, 0, 293, 0, 0, 0, 0, 0,
+ 0, 0, 16, 268, 17, 0, 19, 0, 269, 270,
+ 20, 0, 271, 272, 273, 21, 274, 275, 0, 23,
+ 0, 0, 0, 276, 277, 278, 279, 280, 26, 0,
+ 27, 28, 0, 0, -162, 281, 0, 0, 0, 0,
+ 0, 282, 0, 0, 283, 0, 0, 0, 0, 0,
+ 0, 0, 286, 287, 288, 0, 0, 0, 0, 0,
+ 289, 290, 291, 0, 0, 0, 727, 292, 7, 8,
+ 9, 0, 11, 455, 265, 266, 0, 267, 13, 0,
+ 0, 0, 0, 0, 0, 293, 0, 0, 0, 0,
+ 0, 0, 0, 16, 268, 17, 0, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 27, 28, 0, 0, 0, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 283, 0, 0, 0, 0,
+ 0, 0, 0, 286, 287, 288, 0, 0, 0, 0,
+ 0, 289, 290, 291, 0, 0, 0, 805, 292, 7,
+ 8, 9, 0, 11, 455, 265, 266, 0, 267, 13,
+ 0, 0, 0, 0, -706, 0, 293, 0, 0, 0,
+ 0, 0, 0, 0, 16, 268, 17, 0, 19, 0,
+ 269, 270, 20, 0, 271, 272, 273, 21, 274, 275,
+ 0, 23, 0, 0, 0, 276, 277, 278, 279, 280,
+ 26, 0, 27, 28, 0, 0, 0, 281, 0, 0,
+ 0, 0, 0, 282, 0, 0, 283, 0, 0, 0,
+ 0, 0, 0, 0, 286, 287, 288, 0, 0, 0,
+ 0, 0, 289, 290, 291, 0, 0, 0, 807, 292,
+ 7, 8, 9, 0, 11, 455, 265, 266, 0, 267,
+ 13, 0, 0, 0, 0, 0, 0, 293, 0, 0,
+ 0, 0, 0, 0, 0, 16, 268, 17, 0, 19,
+ 0, 269, 270, 20, 0, 271, 272, 273, 21, 274,
+ 275, 0, 23, 0, 0, 0, 276, 277, 278, 279,
+ 280, 26, 0, 27, 28, 0, 0, 0, 281, 0,
+ 0, 0, 0, 0, 282, 0, 0, 283, 0, 0,
+ 0, 0, 0, 0, 0, 286, 287, 288, 0, 0,
+ 0, 0, 0, 289, 290, 291, 0, 0, 0, 1303,
+ 292, 7, 8, 9, 0, 11, 455, 265, 266, 0,
+ 267, 13, 0, 0, 0, 0, 0, 0, 293, 0,
+ 0, 0, 0, 0, 0, 0, 16, 268, 17, 0,
+ 19, 0, 269, 270, 20, 0, 271, 272, 273, 21,
+ 274, 275, 0, 23, 0, 0, 0, 276, 277, 278,
+ 279, 280, 26, 0, 27, 28, 0, 0, 0, 281,
+ 0, 0, 0, 0, 0, 282, 0, 0, 283, 0,
+ 0, 0, 0, 0, 0, 0, 286, 287, 288, 0,
+ 0, 0, 0, 0, 289, 290, 291, 0, 7, 8,
+ 9, 292, 11, 455, 265, 266, 0, 267, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 293,
+ 0, 0, 0, 16, 268, 17, 0, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 27, 28, 0, 0, 0, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 283, 0, 0, 0, 0,
+ 0, 0, 0, 286, 287, 288, 0, 0, 0, 0,
+ 0, 289, 290, 291, 0, 0, 0, 0, 292, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 293, 766, 1187, 1188,
+ 1189, 119, 11, 264, 265, 266, 0, 267, 13, 1190,
+ 0, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
+ 1200, 14, 15, 16, 268, 17, 18, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 1201, 28, 611, 0, 1202, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 283, 0, 0, 0, 0,
+ 0, 0, 0, 286, 287, 288, 0, 0, 0, 0,
+ 0, 289, 290, 291, 0, 0, 0, 0, 292, 0,
+ 1203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1294, 293, 1187, 1188, 1189,
+ 119, 11, 264, 265, 266, 0, 267, 13, 1190, 0,
+ 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,
+ 14, 15, 16, 268, 17, 18, 19, 0, 269, 270,
+ 20, 0, 271, 272, 273, 21, 274, 275, 0, 23,
+ 0, 0, 0, 276, 277, 278, 279, 280, 26, 0,
+ 1201, 28, 611, 0, 1202, 281, 0, 0, 0, 0,
+ 0, 282, 0, 0, 283, 0, 0, 0, 0, 0,
+ 0, 0, 286, 287, 288, 0, 0, 0, 0, 0,
+ 289, 290, 291, 0, 0, 0, 0, 292, 0, 1203,
+ 0, 0, 0, 1187, 1188, 1189, 119, 11, 264, 265,
+ 266, 0, 267, 13, 1190, 293, 1191, 1192, 1193, 1194,
+ 1195, 1196, 1197, 1198, 1199, 1200, 14, 15, 16, 268,
+ 17, 18, 19, 0, 269, 270, 20, 0, 271, 272,
+ 273, 21, 274, 275, 0, 23, 0, 0, 0, 276,
+ 277, 278, 279, 280, 26, 0, 1201, 28, 1395, 0,
+ 1202, 281, 0, 0, 0, 0, 0, 282, 0, 0,
+ 283, 0, 0, 0, 0, 0, 0, 0, 286, 287,
+ 288, 0, 0, 0, 0, 0, 289, 290, 291, 0,
+ 0, 0, 0, 292, 0, 1203, 0, 0, 0, 1187,
+ 1188, 1189, 119, 11, 264, 265, 266, 0, 267, 13,
+ 1190, 293, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
+ 1199, 1200, 14, 15, 16, 268, 17, 18, 19, 0,
+ 269, 270, 20, 0, 271, 272, 273, 21, 274, 275,
+ 0, 23, 0, 0, 0, 276, 277, 278, 279, 280,
+ 26, 0, 1201, 28, 0, 0, 1202, 281, 0, 0,
+ 0, 0, 0, 282, 0, 0, 283, 0, 0, 0,
+ 0, 0, 0, 0, 286, 287, 288, 0, 0, 0,
+ 0, 0, 289, 290, 291, 0, 0, 0, 0, 292,
+ 0, 1203, 7, 8, 9, 119, 11, 264, 265, 266,
+ 624, 267, 13, 0, 0, 0, 0, 293, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 16, 268, 17,
+ 18, 19, 0, 269, 270, 20, 0, 271, 272, 273,
+ 21, 274, 275, 0, 23, 0, 533, 0, 276, 277,
+ 278, 279, 280, 26, 0, 27, 28, 0, 0, 0,
+ 281, 0, 0, 0, 0, 0, 282, 0, 0, 791,
+ 0, 0, 0, 0, 0, 0, 0, 286, 287, 792,
+ 0, 0, 0, 0, 0, 289, 290, 291, 0, 536,
+ 0, 0, 793, 538, 0, 0, 625, 7, 8, 9,
+ 119, 11, 264, 265, 266, 624, 267, 13, 0, 0,
+ 293, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 268, 17, 18, 19, 0, 269, 270,
+ 20, 0, 271, 272, 273, 21, 274, 275, 0, 23,
+ 0, 533, 0, 276, 277, 278, 279, 280, 26, 0,
+ 27, 28, 0, 0, 0, 281, 0, 0, 0, 0,
+ 0, 282, 0, 0, 1020, 0, 0, 0, 0, 0,
+ 0, 0, 286, 287, 1021, 0, 0, 0, 0, 0,
+ 289, 290, 291, 0, 536, 0, 0, 1022, 538, 0,
+ 0, 625, 7, 8, 9, 0, 11, 264, 265, 266,
+ 0, 267, 13, 0, 0, 293, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 16, 268, 17,
+ 0, 19, 0, 269, 270, 20, 0, 271, 272, 273,
+ 21, 274, 275, 0, 23, 0, 0, 0, 276, 277,
+ 278, 279, 280, 26, 0, 27, 28, 0, 0, 0,
+ 281, 0, 0, 0, 0, 0, 282, 0, 0, 283,
+ 0, 0, 0, 0, 284, 0, 285, 286, 287, 288,
+ 0, 0, 0, 0, 0, 289, 290, 291, 0, 7,
+ 8, 9, 292, 11, 264, 265, 266, 0, 267, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 293, 0, 0, 0, 16, 268, 17, 0, 19, 0,
+ 269, 270, 20, 0, 271, 272, 273, 21, 274, 275,
+ 0, 23, 0, 533, 0, 276, 277, 278, 279, 280,
+ 26, 0, 27, 28, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 282, 0, 0, 791, 0, 0, 0,
+ 0, 0, 0, 0, 286, 287, 792, 0, 0, 0,
+ 0, 0, 289, 290, 291, 0, 536, 0, 0, 793,
+ 538, 7, 8, 9, 0, 11, 264, 265, 266, 0,
+ 267, 13, 0, 0, 0, 0, 0, 293, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 268, 17, 0,
+ 19, 0, 269, 270, 20, 0, 271, 272, 273, 21,
+ 274, 275, 0, 23, 0, 533, 0, 276, 277, 278,
+ 279, 280, 26, 0, 27, 28, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 282, 0, 0, 1020, 0,
+ 0, 0, 0, 0, 0, 0, 286, 287, 1021, 0,
+ 0, 0, 0, 0, 289, 290, 291, 0, 536, 0,
+ 0, 1022, 538, 7, 8, 9, 0, 11, 455, 265,
+ 266, 0, 267, 13, 0, 0, 0, 0, 0, 293,
+ 0, 0, 0, 0, 0, 0, 0, 0, 16, 268,
+ 17, 0, 19, 0, 269, 270, 20, 0, 271, 272,
+ 273, 21, 274, 275, 0, 23, 0, 0, 0, 276,
+ 277, 278, 279, 280, 26, 0, 27, 28, 0, 0,
+ 1271, 281, 0, 0, 0, 0, 0, 282, 0, 0,
+ 283, 0, 0, 0, 0, 0, 0, 0, 286, 287,
+ 288, 0, 0, 0, 0, 0, 289, 290, 291, 0,
+ 0, 0, 0, 292, 7, 8, 9, 119, 11, 264,
+ 265, 266, 0, 267, 13, 0, 0, 0, 0, 0,
+ 0, 293, 0, 0, 0, 0, 0, 0, 0, 16,
+ 268, 17, 18, 19, 0, 269, 270, 20, 0, 271,
+ 272, 273, 21, 274, 275, 0, 23, 0, 0, 0,
+ 276, 277, 278, 279, 280, 26, 0, 27, 28, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 282, 0,
+ 0, 283, 0, 0, 0, 0, 0, 0, 0, 286,
+ 287, 288, 0, 0, 0, 0, 0, 289, 290, 291,
+ 0, 7, 8, 9, 292, 11, 264, 265, 266, 0,
+ 267, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 293, 0, 0, 0, 16, 268, 17, 0,
+ 19, 0, 269, 270, 20, 0, 271, 272, 273, 21,
+ 274, 275, 0, 23, 0, 0, 0, 276, 277, 278,
+ 279, 280, 26, 0, 27, 28, 0, 0, 0, 281,
+ 0, 0, 0, 0, 0, 282, 0, 0, 283, 0,
+ 0, 0, 0, 0, 0, 0, 286, 287, 288, 0,
+ 0, 0, 0, 0, 289, 290, 291, 0, 7, 8,
+ 9, 292, 11, 455, 265, 266, 0, 267, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 293,
+ 0, 0, 0, 16, 268, 17, 0, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 27, 28, 0, 0, 0, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 283, 0, 0, 0, 0,
+ 0, 0, 0, 286, 287, 288, 0, 0, 0, 0,
+ 0, 289, 290, 291, 0, 7, 8, 9, 292, 11,
+ 455, 265, 266, 0, 267, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 293, 0, 0, 0,
+ 16, 268, 17, 0, 19, 0, 269, 270, 20, 0,
+ 271, 272, 273, 21, 274, 275, 0, 23, 0, 0,
+ 0, 276, 277, 278, 279, 280, 26, 0, 27, 28,
+ 486, 0, 0, 0, 0, 0, 0, 0, 0, 282,
+ 0, 0, 283, 0, 0, 0, 0, 0, 0, 0,
+ 286, 287, 288, 0, 0, 0, 0, 0, 289, 290,
+ 291, 0, 7, 8, 9, 487, 11, 455, 265, 266,
+ 0, 267, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 293, 0, 0, 0, 16, 268, 17,
+ 0, 19, 0, 269, 270, 20, 0, 271, 272, 273,
+ 21, 274, 275, 0, 23, 0, 0, 0, 276, 277,
+ 278, 279, 280, 26, 0, 27, 28, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 282, 0, 0, 283,
+ 0, 0, 0, 0, 0, 0, 0, 286, 287, 288,
+ 0, 0, 0, 0, 0, 289, 290, 291, 0, 0,
+ 0, 0, 292, 523, 7, 8, 9, 0, 11, 455,
+ 265, 266, 0, 267, 13, 0, 0, 0, 0, 0,
+ 293, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 268, 17, 0, 19, 0, 269, 270, 20, 0, 271,
+ 272, 273, 21, 274, 275, 0, 23, 0, 0, 0,
+ 276, 277, 278, 279, 280, 26, 0, 27, 28, 0,
+ 0, 0, 281, 0, 0, 0, 0, 0, 282, 0,
+ 0, 474, 0, 0, 0, 0, 0, 0, 0, 286,
+ 287, 475, 0, 0, 0, 0, 0, 289, 290, 291,
+ 0, 992, 8, 9, 476, 11, 455, 265, 266, 0,
+ 267, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 293, 0, 0, 0, 16, 268, 17, 0,
+ 19, 0, 269, 270, 20, 0, 271, 272, 273, 21,
+ 274, 275, 0, 23, 0, 0, 0, 276, 277, 278,
+ 279, 280, 26, 0, 27, 28, 0, 0, 0, 281,
+ 0, 0, 0, 0, 0, 282, 0, 0, 283, 0,
+ 0, 0, 0, 0, 0, 0, 286, 287, 288, 0,
+ 0, 0, 0, 0, 289, 290, 291, 0, 7, 8,
+ 9, 292, 11, 455, 265, 266, 0, 267, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 293,
+ 0, 0, 0, 16, 268, 17, 0, 19, 0, 269,
+ 270, 20, 0, 271, 272, 273, 21, 274, 275, 0,
+ 23, 0, 0, 0, 276, 277, 278, 279, 280, 26,
+ 0, 27, 28, 0, 0, 0, 281, 0, 0, 0,
+ 0, 0, 282, 0, 0, 1328, 0, 0, 0, 0,
+ 0, 0, 0, 286, 287, 1329, 0, 0, 0, 0,
+ 0, 289, 290, 291, 0, 7, 8, 9, 1330, 11,
+ 455, 265, 266, 0, 267, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 293, 0, 0, 0,
+ 16, 268, 17, 0, 19, 0, 269, 270, 20, 0,
+ 271, 272, 273, 21, 274, 275, 0, 23, 0, 0,
+ 0, 276, 277, 278, 279, 280, 26, 0, 27, 28,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 282,
+ 0, 0, 283, 0, 0, 0, 0, 0, 0, 0,
+ 286, 287, 288, 0, 0, 0, 0, 0, 289, 290,
+ 291, 0, 7, 8, 9, 456, 11, 455, 265, 266,
+ 0, 267, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 293, 0, 0, 0, 16, 268, 17,
+ 0, 19, 0, 269, 270, 20, 0, 271, 272, 273,
+ 21, 274, 275, 0, 23, 0, 0, 0, 276, 277,
+ 278, 279, 280, 26, 0, 27, 28, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 282, 0, 0, 283,
+ 0, 0, 0, 0, 0, 0, 0, 286, 287, 288,
+ 0, 0, 0, 0, 0, 289, 290, 291, 0, 7,
+ 8, 9, 459, 11, 455, 265, 266, 0, 267, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 293, 0, 0, 0, 16, 268, 17, 0, 19, 0,
+ 269, 270, 20, 0, 271, 272, 273, 21, 274, 275,
+ 0, 23, 0, 0, 0, 276, 277, 278, 279, 280,
+ 26, 0, 27, 28, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 282, 0, 0, 283, 0, 0, 0,
+ 0, 0, 0, 0, 286, 287, 288, 0, 0, 0,
+ 0, 0, 289, 290, 291, 0, 7, 8, 9, 292,
+ 11, 455, 265, 266, 0, 267, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 293, 0, 0,
+ 0, 16, 268, 17, 0, 19, 0, 269, 270, 20,
+ 0, 271, 272, 273, 21, 274, 275, 0, 23, 0,
+ 0, 0, 276, 277, 278, 279, 280, 26, 0, 27,
+ 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 282, 0, 0, 474, 0, 0, 0, 0, 0, 0,
+ 0, 286, 287, 475, 0, 0, 0, 0, 0, 289,
+ 290, 291, 0, 7, 8, 9, 476, 11, 264, 265,
+ 266, 0, 267, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 293, 0, 0, 0, 16, 268,
+ 17, 0, 19, 0, 269, 270, 20, 0, 271, 272,
+ 273, 21, 274, 275, 0, 23, 0, 0, 0, 276,
+ 277, 278, 279, 280, 26, 0, 27, 28, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 282, 0, 6,
+ 1328, 7, 8, 9, 10, 11, 12, 0, 286, 287,
+ 1329, 13, 0, 0, 0, 0, 289, 290, 291, 0,
+ 0, 0, 0, 1330, 14, 15, 16, 0, 17, 18,
+ 19, 0, 0, 0, 20, 0, 0, 0, 0, 21,
+ 0, 293, 22, 23, 24, 0, 25, 0, 0, 0,
+ 0, 0, 26, 0, 27, 28, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 150,
+ 0, 7, 8, 9, 10, 11, 12, 0, 31, 0,
+ 0, 13, 0, 0, 0, 0, 32, 0, 0, 0,
+ 0, 33, 0, 0, 14, 15, 16, 34, 17, 18,
+ 19, 0, 0, 0, 20, 0, 0, 0, 0, 21,
+ 0, 0, 22, 23, 24, 0, 25, 0, 0, 0,
+ 0, 0, 26, 0, 27, 28, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 662,
+ 0, 7, 8, 663, 119, 11, 12, 0, 31, 0,
+ 0, 13, 0, 0, 0, 0, 32, 0, 0, 0,
+ 0, 33, 0, 0, 0, 0, 16, 34, 17, 18,
+ 19, 0, 0, 0, 20, 0, 0, 0, 0, 21,
+ 0, 0, 0, 23, 664, 0, 7, 8, 9, 119,
+ 11, 12, 26, 0, 27, 28, 13, 0, 665, 0,
+ 666, 0, 0, 0, 0, 0, 0, 0, 30, 0,
+ 0, 16, 0, 17, 18, 0, 0, 0, 31, 20,
+ 0, 0, 0, 0, 21, 0, 32, 0, 23, 0,
+ 0, 33, 0, 0, 0, 0, 0, 26, 0, 27,
+ 28, 7, 8, 9, 119, 11, 12, 0, 0, 860,
+ 0, 13, 0, 30, 0, 0, 0, 120, 0, 0,
+ 0, 0, 0, 31, 0, 0, 16, 0, 17, 18,
+ 0, 32, 0, 0, 20, 0, 33, 0, 0, 21,
+ 0, 0, 0, 23, 0, 0, 895, 8, 663, 176,
+ 11, 177, 26, 0, 27, 28, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
+ 0, 16, 0, 17, 18, 0, 0, 0, 31, 20,
+ 0, 0, 0, 0, 21, 0, 32, 0, 23, 0,
+ 0, 33, 0, 0, 0, 0, 0, 26, 0, 27,
+ 28, 0, 0, 0, 0, 897, 0, 7, 8, 9,
+ 176, 11, 177, 30, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 32, 16, 0, 17, 18, 33, 0, 0, 0,
+ 20, 0, 0, 0, 0, 21, 0, 0, 0, 23,
+ 0, 0, 7, 8, 9, 119, 11, 12, 26, 0,
+ 27, 28, 13, 0, 1284, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30, 0, 0, 16, 0, 17,
+ 18, 0, 0, 0, 31, 20, 0, 0, 0, 0,
+ 21, 0, 32, 0, 23, 0, 0, 33, 0, 0,
+ 0, 0, 0, 26, 0, 27, 28, 7, 8, 9,
+ 176, 11, 177, 0, 0, 0, 0, 13, 0, 30,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
+ 0, 0, 16, 0, 17, 18, 0, 32, 0, 0,
+ 20, 0, 33, 0, 0, 21, 0, 0, 0, 23,
+ 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
+ 27, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 32, 0, 0, 0, 0, 33, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 0, 0, 0, 0, 0, 1073, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 568, 0, 0, 1339, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 1248, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 1381, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510
+};
+
+static const short yycheck[] = { 4,
+ 353, 387, 145, 4, 71, 4, 312, 135, 136, 180,
+ 609, 4, 607, 353, 842, 428, 13, 318, 13, 844,
+ 25, 58, 51, 318, 79, 22, 25, 25, 382, 409,
+ 35, 1181, 25, 1316, 35, 40, 35, 30, 31, 40,
+ 55, 40, 35, 214, 0, 755, 537, 40, 53, 4,
+ 667, 188, 189, 544, 267, 268, 209, 180, 675, 50,
+ 337, 4, 10, 68, 10, 75, 189, 1204, 117, 118,
+ 25, 10, 1, 1351, 79, 86, 11, 1045, 1046, 84,
+ 35, 86, 87, 78, 37, 40, 79, 300, 87, 87,
+ 261, 1059, 35, 122, 87, 100, 101, 40, 388, 4,
+ 33, 1349, 1, 60, 99, 395, 58, 86, 0, 684,
+ 59, 686, 64, 1346, 62, 126, 113, 184, 123, 115,
+ 25, 126, 118, 48, 59, 1373, 480, 62, 8, 58,
+ 35, 1211, 87, 62, 93, 40, 1414, 134, 1218, 1333,
+ 59, 312, 135, 136, 149, 1, 183, 126, 53, 140,
+ 149, 93, 458, 110, 191, 1438, 149, 110, 538, 58,
+ 109, 109, 97, 109, 454, 180, 95, 11, 33, 1402,
+ 109, 164, 165, 188, 189, 1143, 4, 110, 1372, 1316,
+ 171, 61, 87, 58, 1152, 1153, 93, 1155, 60, 47,
+ 47, 110, 7, 8, 149, 608, 47, 25, 13, 214,
+ 54, 47, 58, 33, 1452, 407, 62, 35, 62, 1403,
+ 207, 24, 40, 415, 789, 59, 59, 227, 62, 59,
+ 215, 36, 47, 54, 99, 60, 516, 74, 518, 519,
+ 45, 60, 47, 1383, 93, 93, 93, 94, 110, 95,
+ 1320, 62, 93, 953, 149, 58, 261, 93, 94, 62,
+ 305, 79, 109, 97, 33, 556, 610, 262, 109, 87,
+ 309, 551, 60, 109, 59, 109, 109, 6, 93, 109,
+ 135, 136, 137, 401, 402, 110, 413, 414, 93, 632,
+ 1360, 110, 95, 24, 421, 282, 47, 292, 109, 432,
+ 62, 414, 632, 322, 431, 60, 47, 312, 37, 348,
+ 305, 166, 793, 580, 406, 135, 136, 137, 313, 884,
+ 54, 448, 305, 64, 109, 417, 60, 296, 4, 894,
+ 108, 149, 628, 318, 54, 1405, 3, 4, 5, 326,
+ 821, 31, 93, 1301, 1302, 47, 166, 109, 47, 336,
+ 11, 320, 93, 339, 341, 35, 62, 54, 353, 35,
+ 40, 926, 348, 928, 40, 353, 423, 136, 137, 58,
+ 353, 4, 5, 854, 41, 4, 5, 74, 110, 1194,
+ 375, 757, 1082, 26, 27, 47, 375, 375, 357, 56,
+ 57, 93, 375, 420, 93, 94, 47, 166, 59, 47,
+ 395, 62, 64, 64, 3, 4, 5, 434, 413, 414,
+ 109, 58, 395, 80, 4, 5, 421, 47, 401, 402,
+ 790, 88, 93, 56, 57, 54, 431, 56, 57, 429,
+ 375, 93, 94, 1208, 429, 1210, 97, 47, 1253, 47,
+ 429, 70, 93, 448, 75, 93, 429, 1262, 1263, 47,
+ 62, 80, 109, 1060, 64, 54, 54, 56, 57, 58,
+ 47, 456, 74, 93, 459, 94, 56, 57, 463, 464,
+ 465, 466, 467, 816, 109, 520, 74, 54, 758, 882,
+ 375, 476, 47, 93, 429, 93, 816, 305, 483, 269,
+ 270, 771, 487, 773, 47, 93, 429, 74, 842, 486,
+ 26, 27, 94, 283, 47, 31, 93, 798, 288, 47,
+ 653, 291, 655, 798, 294, 109, 54, 660, 298, 10,
+ 1001, 62, 649, 292, 519, 520, 306, 47, 93, 94,
+ 47, 811, 110, 74, 60, 353, 74, 520, 64, 54,
+ 93, 1022, 537, 704, 920, 60, 401, 402, 403, 544,
+ 93, 534, 535, 109, 537, 93, 836, 375, 47, 3,
+ 652, 544, 1377, 548, 47, 3, 4, 5, 944, 945,
+ 1388, 54, 591, 93, 593, 594, 93, 395, 565, 4,
+ 5, 401, 402, 403, 110, 3, 4, 5, 680, 594,
+ 60, 74, 795, 963, 3, 4, 5, 592, 38, 586,
+ 47, 596, 112, 41, 93, 94, 1009, 93, 595, 628,
+ 93, 429, 669, 670, 54, 94, 54, 47, 56, 57,
+ 94, 678, 47, 628, 112, 59, 59, 60, 615, 54,
+ 62, 56, 57, 402, 403, 93, 1039, 632, 56, 57,
+ 58, 75, 1018, 77, 649, 70, 93, 56, 57, 632,
+ 88, 1027, 1028, 54, 673, 80, 1032, 1033, 3, 4,
+ 5, 62, 958, 93, 94, 90, 59, 667, 93, 94,
+ 93, 80, 667, 74, 674, 675, 59, 60, 667, 674,
+ 675, 10, 75, 74, 667, 54, 675, 456, 1374, 684,
+ 459, 686, 675, 62, 474, 475, 41, 1073, 74, 704,
+ 1386, 684, 520, 686, 74, 74, 475, 476, 4, 5,
+ 1396, 56, 57, 74, 3, 4, 5, 109, 487, 537,
+ 4, 5, 667, 59, 54, 110, 544, 1413, 64, 109,
+ 675, 1011, 62, 1013, 667, 1015, 879, 880, 881, 75,
+ 59, 60, 675, 88, 74, 59, 1432, 59, 60, 3,
+ 4, 5, 41, 1129, 54, 109, 54, 1342, 47, 754,
+ 56, 57, 62, 758, 62, 54, 109, 56, 57, 1455,
+ 54, 109, 56, 57, 74, 544, 74, 1366, 673, 674,
+ 60, 70, 959, 960, 80, 962, 110, 41, 783, 83,
+ 84, 80, 54, 1169, 789, 887, 888, 110, 793, 88,
+ 62, 90, 56, 57, 93, 94, 789, 112, 791, 792,
+ 793, 112, 74, 798, 632, 802, 3, 4, 5, 1099,
+ 64, 816, 809, 818, 916, 112, 821, 109, 816, 59,
+ 60, 4, 5, 816, 88, 112, 819, 820, 821, 4,
+ 5, 898, 80, 81, 82, 83, 84, 904, 905, 667,
+ 109, 908, 909, 59, 60, 912, 109, 675, 109, 854,
+ 4, 5, 693, 694, 695, 58, 684, 54, 686, 56,
+ 57, 854, 1248, 868, 59, 60, 109, 54, 7, 93,
+ 875, 999, 1000, 56, 57, 112, 3, 4, 5, 884,
+ 877, 56, 57, 3, 4, 5, 6, 7, 8, 894,
+ 47, 884, 1020, 1021, 64, 59, 906, 80, 110, 93,
+ 60, 894, 56, 57, 1210, 80, 24, 917, 26, 27,
+ 1264, 64, 917, 64, 60, 62, 36, 109, 917, 698,
+ 47, 926, 1276, 928, 917, 109, 80, 54, 109, 56,
+ 57, 109, 109, 926, 64, 928, 56, 57, 58, 64,
+ 58, 3, 4, 5, 62, 3, 4, 5, 945, 1051,
+ 1052, 64, 1054, 1055, 112, 1057, 821, 64, 100, 101,
+ 93, 789, 917, 59, 62, 793, 93, 4, 5, 109,
+ 75, 109, 109, 109, 917, 109, 766, 95, 75, 1333,
+ 75, 75, 62, 41, 104, 105, 106, 109, 816, 854,
+ 1343, 821, 109, 821, 56, 57, 1001, 62, 56, 57,
+ 59, 791, 792, 1343, 112, 109, 999, 1000, 1001, 62,
+ 4, 5, 94, 792, 793, 88, 1370, 1022, 1372, 56,
+ 57, 1018, 80, 109, 854, 110, 854, 1020, 1021, 1022,
+ 88, 109, 109, 112, 1388, 4, 5, 47, 1140, 1141,
+ 109, 1038, 821, 80, 112, 109, 1056, 110, 109, 1403,
+ 1060, 1357, 112, 109, 1440, 1060, 884, 109, 109, 59,
+ 54, 1060, 56, 57, 110, 64, 894, 1060, 64, 24,
+ 62, 26, 27, 4, 5, 854, 70, 8, 3, 4,
+ 5, 59, 59, 1150, 1151, 109, 80, 56, 57, 917,
+ 109, 93, 4, 5, 6, 7, 8, 110, 926, 11,
+ 928, 13, 93, 58, 93, 1060, 93, 62, 109, 112,
+ 1115, 80, 4, 5, 1115, 1112, 28, 1060, 30, 31,
+ 1125, 109, 1115, 54, 36, 56, 57, 7, 1230, 1231,
+ 1232, 56, 57, 45, 999, 1000, 1001, 109, 30, 70,
+ 95, 109, 54, 109, 56, 57, 110, 112, 109, 80,
+ 292, 109, 109, 45, 62, 1020, 1021, 1022, 109, 109,
+ 1115, 109, 54, 94, 56, 57, 64, 109, 109, 999,
+ 1000, 1001, 1115, 1001, 84, 965, 86, 109, 112, 1208,
+ 47, 1210, 1325, 109, 8, 97, 1357, 11, 109, 109,
+ 1020, 1021, 1022, 96, 1022, 1210, 1298, 1299, 33, 1204,
+ 1328, 1329, 109, 1200, 1209, 62, 1211, 109, 109, 109,
+ 1211, 1204, 109, 1218, 109, 62, 126, 1218, 1211, 1286,
+ 62, 1000, 1001, 47, 353, 1218, 24, 112, 26, 27,
+ 1020, 1021, 1060, 7, 8, 59, 8, 61, 62, 13,
+ 64, 60, 1021, 1022, 60, 3, 4, 5, 60, 1204,
+ 392, 75, 15, 77, 93, 93, 1211, 60, 1255, 60,
+ 58, 1204, 36, 1218, 62, 93, 395, 108, 1211, 93,
+ 94, 45, 98, 97, 16, 1218, 78, 79, 80, 81,
+ 82, 83, 84, 41, 93, 109, 109, 1115, 109, 60,
+ 647, 60, 109, 3, 4, 5, 109, 95, 56, 57,
+ 60, 10, 1404, 60, 3, 4, 5, 6, 7, 8,
+ 93, 1316, 1317, 1380, 456, 1320, 59, 459, 109, 1320,
+ 60, 463, 80, 1316, 1317, 1330, 683, 1320, 685, 1358,
+ 88, 41, 64, 60, 476, 1328, 1329, 10, 1343, 4,
+ 5, 1346, 1357, 109, 1349, 487, 56, 57, 1349, 491,
+ 1343, 10, 60, 1346, 109, 1360, 1349, 56, 57, 1360,
+ 60, 1316, 0, 0, 0, 1320, 377, 1360, 1373, 2,
+ 80, 281, 1373, 1316, 149, 517, 1204, 1320, 88, 44,
+ 1373, 523, 24, 1211, 26, 27, 339, 816, 149, 54,
+ 1218, 56, 57, 674, 1349, 1009, 1341, 1402, 26, 27,
+ 1405, 1312, 483, 31, 1405, 1360, 1349, 1452, 537, 1402,
+ 1209, 809, 1405, 615, 1204, 544, 58, 1360, 1373, 11,
+ 62, 804, 1287, 208, 1039, 917, 882, 784, 674, 786,
+ 1373, 59, 60, 1058, 26, 27, 64, 565, 171, 31,
+ 1, 802, 3, 4, 5, 520, 7, 1452, 309, 1211,
+ 1405, 1452, 1116, 95, 1366, 47, 1425, 1287, 863, 1452,
+ 1363, 1427, 1405, 1328, 1329, 1330, 1125, 59, 60, -1,
+ 62, -1, 64, -1, -1, -1, -1, 387, 388, -1,
+ 41, -1, 3, 4, 5, 395, -1, 8, 1316, 1317,
+ 4, 5, 1320, 54, 8, 56, 57, 1452, 1328, 1329,
+ 1330, 93, 94, 632, -1, 97, -1, -1, 1287, 1452,
+ -1, -1, -1, -1, -1, 1343, -1, 109, 1346, -1,
+ 41, 1349, -1, 6, 7, 8, -1, 88, -1, -1,
+ 13, -1, 1360, 54, -1, 56, 57, -1, 1328, 1329,
+ 54, -1, 56, 57, 454, 1373, -1, -1, 31, 70,
+ 1329, 1330, -1, 36, -1, 684, 70, 686, -1, 80,
+ 4, 5, 45, -1, 8, -1, 80, 88, 925, -1,
+ 927, -1, 93, 483, 1402, -1, 486, 1405, -1, 489,
+ 490, -1, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, -1, -1, 47, -1, -1, 516, -1, 518, 519,
+ 54, -1, 56, 57, 3, 4, 5, -1, -1, -1,
+ 762, 978, -1, -1, 1452, -1, 70, -1, -1, -1,
+ -1, 47, -1, -1, 544, -1, 80, -1, -1, -1,
+ -1, 551, -1, -1, -1, -1, 90, -1, -1, 93,
+ 94, 793, 41, 4, -1, -1, -1, 567, 568, -1,
+ 789, -1, 13, -1, 793, -1, -1, 56, 57, -1,
+ 86, 87, 23, 24, 25, 91, 92, 93, 94, 30,
+ 31, -1, 33, -1, 35, -1, 1043, 816, -1, 40,
+ 1047, 1, 821, 3, 4, 5, 6, 7, 8, 88,
+ 51, -1, 53, 13, -1, 615, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, 68, 28, -1,
+ 30, 31, -1, -1, -1, 854, 36, 78, 79, -1,
+ -1, 41, -1, 875, -1, 45, 87, 1094, 48, -1,
+ -1, -1, -1, -1, 54, -1, 56, 57, 99, -1,
+ 60, -1, -1, -1, -1, 884, 666, -1, -1, -1,
+ 70, -1, -1, 114, 115, 894, -1, 118, -1, -1,
+ 80, 122, 123, 124, -1, -1, -1, 128, 88, -1,
+ 131, 132, -1, 93, 135, 136, 137, -1, 698, -1,
+ -1, -1, 3, 4, 5, -1, -1, 926, 149, 928,
+ -1, -1, 1159, 1160, -1, -1, -1, -1, -1, -1,
+ 720, -1, -1, 164, 165, 166, -1, -1, 1175, -1,
+ -1, -1, -1, -1, -1, -1, 6, 7, 8, -1,
+ 41, -1, -1, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, 193, 54, -1, 56, 57, 757, 758, 60,
+ -1, 31, -1, -1, 75, -1, 36, -1, -1, 70,
+ -1, 771, -1, 773, 215, 45, 1223, 1224, -1, 80,
+ -1, -1, 1001, 224, -1, -1, 97, 88, -1, -1,
+ 1022, -1, 93, -1, -1, 1242, 1243, -1, -1, -1,
+ -1, 801, 113, 1022, -1, -1, 117, -1, -1, -1,
+ -1, 811, -1, -1, -1, -1, -1, -1, -1, 130,
+ -1, 262, 263, 3, 4, 5, 6, 7, 8, 829,
+ -1, -1, -1, 13, -1, -1, 836, 1069, 1070, 1071,
+ 1072, -1, -1, -1, -1, -1, -1, -1, 1080, -1,
+ -1, 31, -1, -1, 854, -1, 36, -1, -1, -1,
+ -1, 41, -1, 174, 305, 45, -1, 47, 309, -1,
+ 311, 312, 313, -1, 54, -1, 56, 57, -1, -1,
+ -1, 322, 323, -1, -1, -1, -1, -1, -1, -1,
+ 70, -1, -1, -1, -1, -1, 207, 897, 339, -1,
+ 80, 3, 4, 5, -1, -1, -1, 348, 88, -1,
+ 90, -1, 353, 93, 94, -1, 227, -1, -1, -1,
+ 920, -1, 363, -1, -1, 366, -1, -1, -1, -1,
+ 371, -1, -1, -1, 375, -1, 38, 39, -1, 41,
+ -1, -1, -1, -1, 944, 945, -1, -1, 948, -1,
+ -1, -1, 54, -1, 56, 57, 397, -1, 399, -1,
+ 401, 402, 403, -1, -1, -1, 407, 1199, -1, 4,
+ 5, 412, 7, 8, 415, -1, -1, -1, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, 428, 429, -1,
+ -1, -1, -1, 28, -1, 30, -1, -1, -1, -1,
+ -1, 36, 388, -1, -1, -1, 317, -1, -1, 395,
+ 45, 1011, 47, 1013, -1, 1015, -1, -1, 1018, 54,
+ -1, 56, 57, 464, 465, 466, 467, 1027, 1028, -1,
+ 341, -1, 1032, 1033, -1, 70, -1, -1, -1, -1,
+ -1, 1273, -1, -1, -1, 80, -1, -1, 359, 1049,
+ 1050, 3, 4, 5, -1, 90, 8, -1, 93, 94,
+ -1, -1, -1, -1, -1, -1, -1, -1, 454, -1,
+ -1, -1, -1, 1073, -1, 1075, -1, -1, -1, 520,
+ -1, 522, -1, -1, 1316, 1317, -1, -1, -1, 41,
+ -1, 532, -1, 534, 535, 47, 537, -1, 1330, 1099,
+ -1, -1, 54, 544, 56, 57, -1, 548, -1, -1,
+ -1, -1, -1, -1, 1346, -1, -1, -1, 70, -1,
+ -1, -1, -1, -1, 1343, -1, -1, -1, 80, 1129,
+ 516, -1, 518, 519, -1, -1, 88, -1, 90, -1,
+ 451, 93, 94, -1, -1, 586, 1146, -1, -1, -1,
+ 591, 592, 593, 594, 595, 596, -1, -1, 544, -1,
+ -1, -1, -1, -1, -1, 551, -1, -1, 1400, 1169,
+ 1402, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 628, -1, -1,
+ -1, 632, 1424, -1, -1, 1195, -1, -1, 639, 640,
+ -1, 642, -1, -1, -1, -1, 1438, -1, 4, 5,
+ -1, 7, 8, -1, -1, 656, -1, 13, 4, 5,
+ 531, 7, 8, 664, -1, -1, 667, 13, 1228, 1229,
+ -1, -1, 673, 674, 675, -1, 547, 1237, -1, -1,
+ 36, -1, 28, 684, 30, 686, -1, -1, 1248, 45,
+ 36, 47, 693, 694, 695, 311, 312, 313, 54, 45,
+ 56, 57, -1, 704, -1, -1, -1, -1, 54, -1,
+ 56, 57, 58, -1, 70, -1, 3, 4, 5, -1,
+ -1, 8, -1, -1, 80, -1, -1, 1287, -1, -1,
+ -1, -1, -1, -1, 90, -1, -1, 93, 94, -1,
+ -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
+ -1, -1, 698, 754, 41, -1, -1, -1, 1318, -1,
+ 47, -1, 84, -1, 86, -1, -1, 54, -1, 56,
+ 57, -1, -1, 774, -1, 776, -1, -1, 100, 101,
+ -1, -1, 783, 70, -1, -1, 787, -1, 789, -1,
+ 791, 792, 793, 80, -1, -1, -1, 798, -1, -1,
+ -1, 88, -1, 90, 126, -1, 93, 94, -1, -1,
+ -1, -1, 758, -1, -1, 816, -1, 818, 819, 820,
+ 821, 4, 3, 4, 5, 771, -1, 773, -1, -1,
+ 13, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 23, 24, 25, -1, 3, 4, 5, 30, 31, 8,
+ 33, -1, 35, 854, -1, -1, -1, 40, -1, -1,
+ 41, -1, -1, -1, -1, 811, -1, 868, 51, -1,
+ 53, -1, -1, 54, -1, 56, 57, 878, -1, 60,
+ 1440, 882, 41, 884, -1, 68, -1, -1, 47, 70,
+ 836, -1, -1, 894, -1, 54, 79, 56, 57, 80,
+ -1, -1, -1, -1, 87, -1, 907, 88, 854, -1,
+ -1, 70, 93, -1, -1, -1, 917, -1, 534, 535,
+ -1, 80, -1, -1, -1, 926, 797, 928, 799, 88,
+ -1, 90, 115, -1, 93, 94, -1, -1, -1, 122,
+ 123, -1, -1, -1, -1, 128, -1, -1, -1, 132,
+ -1, -1, 135, 136, 137, -1, -1, -1, 959, 960,
+ -1, 962, -1, 3, 4, 5, 149, -1, 8, -1,
+ 292, -1, -1, -1, -1, 591, -1, 593, 594, -1,
+ 596, 164, 165, 166, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 997, 998, 999, 1000,
+ 1001, 41, -1, -1, 1005, -1, 877, 47, -1, -1,
+ 193, -1, 628, -1, 54, -1, 56, 57, -1, 1020,
+ 1021, 1022, 3, 4, 5, -1, -1, 8, -1, -1,
+ 70, 353, -1, -1, -1, 906, -1, -1, 1039, -1,
+ 80, 224, 4, 5, -1, 7, 8, -1, 88, -1,
+ 90, 13, 1053, 93, 94, -1, -1, 1058, -1, 1060,
+ 41, -1, -1, -1, -1, 1011, 28, 1013, 30, 1015,
+ -1, -1, -1, 54, 36, 56, 57, -1, -1, 262,
+ 263, -1, -1, 45, -1, -1, -1, -1, 704, 70,
+ -1, -1, 54, -1, 56, 57, -1, -1, -1, 80,
+ -1, 1102, 1103, -1, 1105, -1, -1, 88, -1, -1,
+ -1, -1, 93, 984, -1, -1, -1, -1, -1, -1,
+ -1, -1, 305, -1, 1125, -1, 309, -1, 311, 312,
+ 313, 93, 1003, -1, 456, 318, -1, 459, -1, 322,
+ -1, 463, 464, 465, 466, 467, -1, -1, -1, -1,
+ -1, -1, -1, 1099, 476, -1, 339, -1, 774, -1,
+ 776, 483, -1, -1, -1, 487, -1, 1038, -1, -1,
+ 353, 787, 3, 4, 5, 791, 792, 8, -1, -1,
+ 363, -1, -1, 366, -1, 1056, -1, -1, 371, -1,
+ -1, -1, 375, -1, -1, -1, -1, 519, -1, -1,
+ -1, -1, -1, 819, 820, -1, -1, 1208, 1209, 1210,
+ 41, -1, -1, -1, 397, 537, 399, -1, 401, 402,
+ 403, -1, 544, 54, 407, 56, 57, -1, -1, 412,
+ -1, -1, 415, -1, -1, -1, -1, -1, -1, 70,
+ -1, -1, -1, -1, -1, 428, 429, -1, -1, 80,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, 93, 3, 4, 5, -1, -1, 8, -1,
+ 4, 5, 6, 7, 8, -1, -1, 11, -1, 13,
+ -1, 464, 465, 466, 467, -1, 1287, -1, -1, -1,
+ -1, -1, -1, -1, 28, -1, 30, 31, -1, -1,
+ -1, 41, 36, -1, 53, -1, 55, -1, -1, -1,
+ 632, 45, -1, 47, 54, -1, 56, 57, -1, -1,
+ 54, -1, 56, 57, -1, -1, -1, 1328, 1329, 1330,
+ 70, -1, -1, -1, -1, -1, 70, 520, -1, 522,
+ 80, 1287, 1343, -1, -1, -1, 80, -1, 88, -1,
+ -1, 534, 535, 93, 537, -1, 90, 1358, -1, 93,
+ 94, 544, -1, 97, -1, -1, 4, 5, 6, 7,
+ 8, -1, -1, 556, 123, 13, -1, -1, -1, -1,
+ -1, 997, 998, 999, 1000, -1, -1, -1, -1, 1005,
+ 28, -1, 30, 31, -1, -1, -1, -1, 36, -1,
+ -1, -1, -1, 586, 1020, 1021, -1, 45, 591, 592,
+ 593, 594, -1, 596, -1, -1, 54, -1, 56, 57,
+ -1, -1, 4, 5, 6, 608, 4, 5, 6, 7,
+ 8, 180, 754, 11, -1, 13, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, 628, -1, -1, 30, 632,
+ 28, -1, 30, 31, -1, 37, 639, 640, 36, 642,
+ -1, 783, -1, 45, 3, 4, 5, 45, 217, 8,
+ -1, 793, 54, 656, 56, 57, 54, -1, 56, 57,
+ -1, 664, -1, -1, 667, -1, 1102, 1103, -1, 1105,
+ 673, 674, 675, -1, 816, -1, 818, -1, -1, 821,
+ -1, 684, 41, 686, -1, -1, -1, -1, -1, -1,
+ 693, 694, 695, -1, -1, 54, -1, 56, 57, -1,
+ -1, 704, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 70, 854, -1, -1, 3, 4, 5, 6, 7,
+ 8, 80, -1, 11, -1, 13, 868, -1, -1, 88,
+ -1, -1, -1, 875, 93, -1, -1, -1, -1, -1,
+ 28, -1, 30, 31, -1, -1, -1, -1, 36, -1,
+ -1, 754, -1, 41, -1, -1, -1, 45, -1, 47,
+ -1, -1, -1, -1, -1, -1, 54, -1, 56, 57,
+ -1, 774, 4, 776, -1, -1, -1, -1, -1, -1,
+ 783, -1, 70, -1, 787, -1, 789, -1, 791, 792,
+ 793, -1, 80, 25, -1, 798, -1, -1, 30, 31,
+ 88, 33, 90, 35, -1, 93, 94, -1, 40, 97,
+ -1, -1, -1, 816, -1, 818, 819, 820, 821, 51,
+ -1, 53, 3, 4, 5, -1, -1, 8, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 406, -1, -1,
+ -1, -1, -1, 75, 413, 414, -1, -1, 417, -1,
+ -1, 854, 421, -1, -1, 87, 164, 165, 166, 1001,
+ 41, -1, -1, -1, -1, 868, -1, -1, 3, 4,
+ 5, -1, -1, 54, -1, 56, 57, -1, -1, 882,
+ 1022, 884, -1, 115, -1, 117, 118, -1, -1, 70,
+ 122, 894, -1, -1, -1, -1, 128, -1, 130, 80,
+ 132, -1, -1, 135, 136, 137, 41, 88, -1, -1,
+ -1, -1, 93, -1, 917, -1, -1, 149, -1, 54,
+ -1, 56, 57, 926, -1, 928, -1, 62, -1, -1,
+ -1, -1, 164, 165, 166, 70, 3, 4, 5, 6,
+ 7, 8, 174, -1, -1, 80, 13, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, 959, 960, 93, 962,
+ -1, 193, 4, 5, 31, -1, 8, -1, -1, 36,
+ -1, -1, -1, -1, 41, -1, -1, -1, 45, -1,
+ 47, -1, -1, 1125, -1, -1, -1, 54, -1, 56,
+ 57, -1, 224, -1, 997, 998, 999, 1000, 1001, -1,
+ -1, -1, 1005, 70, -1, 47, 1009, -1, -1, -1,
+ -1, -1, 54, 80, 56, 57, -1, 1020, 1021, 1022,
+ -1, 88, -1, 592, -1, 594, 93, -1, 70, -1,
+ -1, -1, -1, -1, -1, -1, 1039, -1, 80, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 90, -1,
+ 1053, 93, 94, -1, -1, 1058, -1, 1060, -1, 628,
+ 292, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, -1, 8, -1, 309, -1, -1,
+ 649, -1, -1, 652, -1, 317, -1, -1, -1, 397,
+ 322, 399, -1, 401, 402, 403, -1, -1, -1, 1102,
+ 1103, -1, 1105, -1, 412, 674, -1, 339, 41, -1,
+ -1, 680, -1, -1, -1, -1, 348, -1, -1, -1,
+ -1, 54, 1125, 56, 57, -1, -1, -1, -1, -1,
+ -1, 363, -1, -1, 366, -1, -1, 70, -1, 371,
+ -1, -1, -1, 375, -1, -1, -1, 80, -1, 3,
+ 4, 5, 6, 7, 8, 88, -1, -1, -1, 13,
+ 93, 3, 4, 5, -1, 397, 8, 399, -1, 401,
+ 402, 403, -1, -1, 28, 407, 30, 31, -1, -1,
+ 412, -1, 36, 415, -1, -1, -1, 41, 1330, -1,
+ -1, 45, -1, 47, -1, -1, -1, 429, -1, 41,
+ 54, 1343, 56, 57, -1, 1208, 1209, 1210, -1, -1,
+ -1, -1, 54, -1, 56, 57, 70, -1, -1, 3,
+ 4, 5, -1, -1, 456, -1, 80, 459, 70, -1,
+ -1, -1, -1, -1, 88, -1, 90, -1, 80, 93,
+ 94, -1, 474, 475, 476, -1, 88, -1, -1, -1,
+ -1, 93, -1, -1, -1, 487, 4, 41, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 54, -1, 56, 57, -1, -1, -1, 25, 62, -1,
+ -1, -1, 30, 31, 1287, 33, 70, 35, -1, -1,
+ -1, -1, 40, -1, -1, -1, 80, -1, -1, 531,
+ 3, 4, 5, 51, 88, 53, -1, -1, -1, 93,
+ -1, -1, 544, -1, -1, -1, -1, -1, 887, 888,
+ -1, -1, -1, -1, -1, 1328, 1329, 1330, -1, -1,
+ -1, 639, 640, -1, 642, -1, -1, -1, 41, 87,
+ 1343, -1, -1, -1, -1, -1, -1, 916, -1, -1,
+ -1, 54, -1, 56, 57, 1358, -1, -1, -1, 591,
+ 592, 593, 594, -1, -1, 673, -1, 70, -1, -1,
+ -1, -1, 4, 5, 122, 7, 8, 80, 4, 5,
+ 128, 13, 8, -1, 132, 88, -1, 135, 136, 137,
+ 93, -1, -1, -1, -1, -1, 628, -1, -1, -1,
+ 632, 149, -1, -1, 36, -1, -1, 639, 640, -1,
+ 642, -1, -1, 45, -1, 47, 164, 165, 166, -1,
+ -1, 47, 54, -1, 56, 57, -1, -1, 54, -1,
+ 56, 57, -1, -1, -1, 667, -1, -1, 70, -1,
+ -1, 673, 674, 675, 70, 193, -1, -1, 80, -1,
+ -1, 3, 4, 5, 80, -1, -1, -1, 90, -1,
+ -1, 93, 94, -1, 90, -1, 698, 93, 94, -1,
+ -1, -1, -1, -1, -1, -1, 224, -1, -1, -1,
+ -1, -1, 1051, 1052, -1, 1054, 1055, -1, 1057, 41,
+ -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
+ 7, 8, 54, -1, 56, 57, 13, -1, -1, -1,
+ 62, 819, 820, 821, -1, -1, -1, -1, 70, -1,
+ -1, 28, -1, 30, 31, 32, -1, -1, 80, 36,
+ 37, 311, 312, 313, 41, -1, 88, -1, 45, 46,
+ -1, 93, -1, -1, -1, -1, 854, 54, -1, 56,
+ 57, -1, -1, 60, -1, 62, -1, -1, -1, 791,
+ 792, 793, -1, 70, -1, 797, -1, -1, -1, -1,
+ 318, 1140, 1141, 80, 322, -1, 33, -1, -1, -1,
+ -1, 88, -1, 3, 4, 5, 93, 819, 820, 821,
+ -1, -1, -1, -1, 51, -1, -1, -1, -1, -1,
+ -1, -1, -1, 110, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 363, -1, -1, 366, -1,
+ -1, 41, 854, 371, -1, -1, -1, 375, -1, -1,
+ -1, -1, -1, -1, 54, -1, 56, 57, -1, -1,
+ 1209, 1210, -1, -1, -1, -1, -1, -1, -1, 397,
+ 70, 399, -1, 401, 402, 403, -1, -1, -1, 407,
+ 80, 1230, 1231, 1232, 412, 122, -1, 415, 88, -1,
+ -1, -1, -1, 93, 906, -1, -1, -1, 135, 136,
+ 137, 429, -1, -1, -1, 917, -1, -1, -1, 997,
+ 998, 999, 1000, 1001, -1, -1, -1, 1005, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 164, 165, 166,
+ -1, -1, 1020, 1021, 1022, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, -1, 1298,
+ 1299, -1, -1, -1, -1, -1, 193, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1053, -1, -1, -1, -1,
+ -1, -1, 984, -1, 534, 535, -1, 537, -1, -1,
+ -1, -1, -1, 41, 544, 997, 998, 999, 1000, 1001,
+ -1, 1003, -1, 1005, -1, -1, 54, -1, 56, 57,
+ -1, -1, -1, -1, 532, -1, -1, -1, 1020, 1021,
+ 1022, -1, 70, -1, 1102, 1103, -1, 1105, -1, -1,
+ 77, -1, 80, -1, -1, -1, 263, -1, -1, -1,
+ 88, 591, -1, 593, 594, 93, 596, -1, -1, -1,
+ -1, 1053, -1, -1, -1, -1, 1058, -1, 1060, -1,
+ -1, -1, -1, -1, -1, 1404, -1, -1, -1, -1,
+ -1, -1, -1, 591, 592, 593, 594, -1, 628, -1,
+ -1, 51, -1, -1, 311, 312, 313, -1, -1, -1,
+ 608, -1, -1, -1, -1, 322, 143, -1, -1, -1,
+ 1102, 1103, -1, 1105, -1, 75, -1, -1, 78, -1,
+ 628, -1, -1, -1, 632, 162, -1, -1, -1, -1,
+ -1, 639, 640, -1, 642, -1, -1, 97, 175, 99,
+ -1, -1, -1, -1, -1, -1, -1, 4, 5, 6,
+ 7, 8, -1, -1, -1, -1, 13, -1, -1, 667,
+ -1, -1, 122, -1, 704, 673, 674, 675, -1, -1,
+ -1, 28, -1, 30, 31, -1, -1, -1, -1, 36,
+ 397, -1, 399, -1, 401, 402, 403, -1, 45, -1,
+ 407, -1, -1, -1, -1, 412, -1, 54, 415, 56,
+ 57, -1, -1, -1, 164, 165, 166, -1, -1, -1,
+ -1, -1, -1, -1, 174, -1, 1208, 1209, 1210, 1287,
+ -1, -1, 4, 5, -1, 7, 8, -1, -1, -1,
+ -1, 13, -1, 193, 774, -1, 776, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 28, 787, 30, -1,
+ -1, 791, 792, 793, 36, 215, -1, -1, -1, -1,
+ 1328, 1329, 1330, 45, -1, -1, -1, 227, -1, -1,
+ -1, -1, 54, -1, 56, 57, -1, -1, -1, 819,
+ 820, 821, -1, -1, -1, -1, -1, -1, -1, -1,
+ 798, -1, -1, -1, -1, 1287, -1, -1, -1, -1,
+ -1, -1, -1, 4, -1, 522, -1, -1, -1, -1,
+ -1, 819, 820, 821, 854, -1, -1, 534, 535, -1,
+ 537, -1, -1, -1, 25, -1, -1, 544, -1, 30,
+ 31, -1, -1, -1, 35, -1, 1328, 1329, 1330, 40,
+ -1, -1, -1, -1, -1, -1, 854, -1, -1, -1,
+ -1, -1, 53, -1, -1, -1, -1, 317, 318, -1,
+ -1, -1, 322, -1, -1, -1, 1358, -1, 405, -1,
+ -1, -1, -1, 410, 591, -1, 593, 594, -1, 596,
+ -1, -1, -1, -1, -1, -1, 87, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 435, -1,
+ 437, -1, -1, -1, -1, -1, -1, -1, -1, 917,
+ -1, 628, 449, 450, -1, 452, -1, -1, -1, -1,
+ -1, -1, 639, 640, -1, 642, -1, 128, -1, -1,
+ -1, 132, -1, -1, -1, -1, -1, 397, -1, 399,
+ -1, 401, 402, 403, -1, -1, -1, 407, 149, -1,
+ -1, -1, 412, -1, -1, 415, 673, 997, 998, 999,
+ 1000, 1001, -1, 164, 165, 1005, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 693, 694, 695, -1,
+ 1020, 1021, 1022, -1, -1, -1, -1, 704, -1, 997,
+ 998, 999, 1000, 1001, -1, -1, -1, 1005, -1, -1,
+ -1, 1009, -1, 540, 541, -1, -1, -1, 545, -1,
+ -1, -1, 1020, 1021, 1022, -1, -1, -1, -1, -1,
+ -1, -1, -1, 224, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 1, -1, 3,
+ 4, 5, 6, 7, 8, 1053, -1, -1, -1, 13,
+ 1058, -1, 1060, -1, -1, -1, -1, 774, -1, 776,
+ -1, -1, 1102, 1103, 28, 1105, 30, 31, 32, -1,
+ 787, -1, 36, 37, 791, 792, 793, 41, -1, -1,
+ -1, 45, 46, -1, -1, -1, -1, 547, 548, -1,
+ 54, -1, 56, 57, 1102, 1103, 60, 1105, 62, -1,
+ -1, -1, 819, 820, 821, -1, 70, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 80, -1, -1, 4,
+ 5, -1, 7, 8, 88, -1, -1, -1, 13, 93,
+ -1, 591, -1, 593, 594, -1, -1, 854, -1, -1,
+ -1, -1, -1, 28, -1, 30, 110, -1, -1, -1,
+ 687, 36, 689, -1, -1, -1, -1, -1, -1, -1,
+ 45, -1, 363, -1, -1, 366, -1, -1, 628, 54,
+ 371, 56, 57, -1, 375, -1, -1, -1, -1, 639,
+ 640, -1, 642, -1, -1, 1, -1, 3, 4, 5,
+ 6, 7, 8, -1, -1, -1, 397, 13, 399, -1,
+ 1208, 1209, 1210, -1, -1, -1, -1, -1, -1, -1,
+ -1, 412, 28, 673, 30, 31, 32, -1, -1, -1,
+ 36, 37, -1, 760, 761, 41, 763, -1, 429, 45,
+ 46, -1, -1, -1, -1, -1, -1, -1, 54, -1,
+ 56, 57, 959, 960, 60, 962, 62, -1, -1, -1,
+ -1, 788, -1, -1, 70, -1, -1, 3, 4, 5,
+ 6, 7, 8, -1, 80, -1, -1, 13, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, 93, -1, 1287,
+ 997, 998, 999, 1000, 1001, 31, 823, -1, 1005, -1,
+ 36, -1, -1, -1, 110, 41, -1, -1, -1, 45,
+ -1, 47, -1, 1020, 1021, 1022, -1, -1, 54, -1,
+ 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
+ 1328, 1329, 1330, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, 1053, 797, 798, 799,
+ -1, -1, 88, -1, 90, -1, 883, 93, 94, -1,
+ 1358, -1, -1, -1, -1, -1, 893, -1, -1, 819,
+ 820, 821, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, 6, 7, 8, -1, -1, -1, -1,
+ 13, -1, -1, -1, -1, 1102, 1103, -1, 1105, -1,
+ -1, 592, -1, -1, 854, 28, 13, 30, 31, -1,
+ -1, -1, -1, 36, -1, -1, 23, 24, 41, -1,
+ -1, -1, 45, 30, 31, -1, 33, -1, -1, -1,
+ -1, 54, -1, 56, 57, -1, -1, 60, -1, -1,
+ -1, 632, -1, -1, -1, -1, 973, 70, 639, 640,
+ -1, 642, -1, -1, 61, -1, 906, 80, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ 93, -1, -1, -1, -1, -1, 667, 1004, -1, -1,
+ -1, -1, 673, 674, 675, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ -1, 1208, -1, 1210, -1, -1, 113, 114, 115, -1,
+ 117, 118, -1, -1, -1, -1, -1, 124, -1, -1,
+ -1, 128, -1, 130, 131, 132, -1, -1, 135, 136,
+ 137, -1, -1, -1, 984, -1, 1063, 1064, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 997, 998, 999,
+ 1000, 1001, -1, 1003, -1, 1005, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1096,
+ 1020, 1021, 1022, -1, -1, -1, -1, -1, -1, -1,
+ 1287, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
+ 207, -1, -1, 1053, -1, -1, -1, -1, 1135, -1,
+ -1, -1, 1139, -1, -1, -1, -1, 224, -1, -1,
+ -1, 1328, 1329, 1330, -1, -1, -1, -1, 819, 820,
+ -1, -1, -1, -1, 1161, 1162, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ -1, 1358, 1102, 1103, -1, 1105, 263, -1, -1, 1,
+ -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 28, 29, 30, 31,
+ 32, -1, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, 309, 45, 311, 312, -1, 49, 50, 51,
+ 52, 53, 54, -1, 56, 57, 323, -1, -1, 61,
+ -1, -1, -1, -1, -1, 67, 917, -1, 70, -1,
+ -1, -1, 339, -1, 341, -1, 78, 79, 80, -1,
+ -1, 348, -1, -1, 86, 87, 88, -1, -1, -1,
+ -1, 93, 359, -1, -1, 97, 363, -1, 1208, 366,
+ 1210, -1, -1, -1, 371, -1, -1, 109, -1, 111,
+ -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
+ 8, -1, -1, -1, -1, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 28, -1, 30, 31, 32, -1, 997, 998, 36, 37,
+ -1, -1, -1, 41, 1005, -1, -1, 45, 46, -1,
+ -1, -1, -1, -1, -1, -1, 54, -1, 56, 57,
+ -1, -1, 60, 11, 62, -1, -1, 1287, -1, -1,
+ -1, -1, 70, -1, 451, -1, -1, -1, -1, -1,
+ -1, -1, 80, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, 1053, -1, -1, 93, -1, 1058, -1, 1060,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1328, 1329,
+ 1330, -1, 110, -1, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, -1, 1358, -1,
+ -1, 1102, 1103, -1, 1105, 522, -1, -1, -1, -1,
+ -1, -1, -1, -1, 531, 532, -1, 534, 535, -1,
+ -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
+ 7, 8, -1, -1, 11, -1, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 24, -1, 26,
+ 27, -1, -1, -1, 31, -1, -1, -1, -1, 36,
+ -1, -1, -1, -1, 41, -1, -1, -1, 45, 586,
+ 47, -1, -1, -1, -1, -1, -1, 54, 595, 56,
+ 57, 58, 59, 60, -1, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 1209, 86,
+ 87, 88, -1, 90, 91, 92, 93, 94, 95, 31,
+ 97, 98, -1, -1, -1, -1, 103, -1, -1, -1,
+ -1, 108, 109, 110, -1, 112, -1, -1, -1, 656,
+ -1, -1, -1, -1, -1, -1, -1, 664, -1, -1,
+ -1, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, -1, -1, -1, 693, 694, 695, -1,
+ -1, -1, -1, -1, -1, -1, 1, 704, 3, 4,
+ 5, 6, 7, 8, 9, 10, -1, 12, 13, 14,
+ -1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, 58, -1, 60, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, 774, -1, 776,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ 787, 86, 87, 88, -1, -1, -1, -1, 93, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 110, 111, 1, -1, 3,
+ 4, 5, 6, 7, 8, 9, 10, -1, 12, 13,
+ 14, -1, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
+ -1, 45, -1, -1, -1, 49, 50, 51, 52, 53,
+ 54, -1, 56, 57, 58, -1, 60, 61, -1, -1,
+ 877, 878, -1, 67, -1, -1, 70, -1, -1, -1,
+ -1, -1, -1, -1, 78, 79, 80, -1, -1, -1,
+ -1, -1, 86, 87, 88, -1, -1, -1, -1, 93,
+ 907, 95, -1, -1, -1, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 111, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, -1, -1, 1,
+ -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 959, 960, -1, 962, 28, 29, 30, 31,
+ 32, -1, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, -1, 45, -1, 47, -1, 49, 50, 51,
+ 52, 53, 54, -1, 56, 57, 58, -1, -1, 61,
+ -1, -1, -1, -1, -1, 67, -1, -1, 70, -1,
+ -1, -1, -1, -1, -1, -1, 78, 79, 80, -1,
+ -1, -1, -1, -1, 86, 87, 88, -1, 90, -1,
+ -1, 93, 94, -1, -1, 97, -1, -1, -1, -1,
+ -1, 1038, -1, -1, -1, -1, -1, -1, -1, 111,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1056,
+ 1, 1058, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 28, 29, 30,
+ 31, 32, -1, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, 45, -1, 47, -1, 49, 50,
+ 51, 52, 53, 54, -1, 56, 57, 58, -1, -1,
+ 61, -1, -1, -1, -1, -1, 67, -1, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, -1, 90,
+ -1, -1, 93, 94, -1, 1, 97, 3, 4, 5,
+ 6, 7, 8, 9, 10, -1, 12, 13, -1, -1,
+ 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 28, 29, 30, 31, 32, -1, 34, 35,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, 45,
+ -1, -1, -1, 49, 50, 51, 52, 53, 54, -1,
+ 56, 57, 58, -1, 60, 61, -1, -1, -1, -1,
+ -1, 67, -1, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, 78, 79, 80, -1, -1, -1, -1, -1,
+ 86, 87, 88, -1, -1, -1, 1, 93, 3, 4,
+ 5, -1, 7, 8, 9, 10, -1, 12, 13, -1,
+ -1, -1, -1, -1, -1, 111, -1, -1, -1, -1,
+ -1, -1, -1, 28, 29, 30, -1, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, 58, -1, -1, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, -1, -1, -1,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, -1, -1, -1, -1, 93, 94,
+ 1, -1, 3, 4, 5, -1, 7, 8, 9, 10,
+ -1, 12, 13, -1, -1, 110, 111, -1, -1, 20,
+ -1, -1, -1, -1, -1, -1, -1, 28, 29, 30,
+ -1, 32, -1, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, 45, -1, -1, -1, 49, 50,
+ 51, 52, 53, 54, -1, 56, 57, 58, -1, -1,
+ 61, -1, -1, -1, -1, -1, 67, -1, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, -1, -1,
+ -1, -1, 93, 1, -1, 3, 4, 5, -1, 7,
+ 8, 9, 10, -1, 12, 13, -1, -1, -1, 110,
+ 111, -1, 20, -1, -1, -1, -1, -1, -1, -1,
+ 28, 29, 30, -1, 32, -1, 34, 35, 36, -1,
+ 38, 39, 40, 41, 42, 43, -1, 45, -1, -1,
+ -1, 49, 50, 51, 52, 53, 54, -1, 56, 57,
+ 58, -1, -1, 61, -1, -1, -1, -1, -1, 67,
+ -1, -1, 70, -1, -1, -1, -1, -1, -1, -1,
+ 78, 79, 80, -1, -1, -1, -1, -1, 86, 87,
+ 88, -1, -1, -1, 1, 93, 3, 4, 5, -1,
+ 7, 8, 9, 10, -1, 12, 13, -1, -1, -1,
+ -1, -1, 110, 111, -1, -1, -1, -1, -1, -1,
+ -1, 28, 29, 30, -1, 32, -1, 34, 35, 36,
+ -1, 38, 39, 40, 41, 42, 43, -1, 45, -1,
+ -1, -1, 49, 50, 51, 52, 53, 54, -1, 56,
+ 57, 58, -1, -1, 61, -1, -1, -1, -1, -1,
+ 67, -1, -1, 70, -1, -1, -1, -1, -1, -1,
+ -1, 78, 79, 80, -1, -1, -1, -1, -1, 86,
+ 87, 88, -1, -1, -1, -1, 93, 94, 1, -1,
+ 3, 4, 5, -1, 7, 8, 9, 10, -1, 12,
+ 13, -1, -1, -1, 111, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 28, 29, 30, -1, 32,
+ -1, 34, 35, 36, -1, 38, 39, 40, 41, 42,
+ 43, -1, 45, -1, -1, -1, 49, 50, 51, 52,
+ 53, 54, -1, 56, 57, 58, -1, -1, 61, 1,
+ -1, -1, 4, 5, 67, 7, 8, 70, -1, -1,
+ -1, 13, -1, -1, -1, 78, 79, 80, -1, -1,
+ -1, -1, -1, 86, 87, 88, 28, -1, 30, -1,
+ 93, -1, -1, -1, 36, -1, 38, 39, -1, 102,
+ -1, -1, -1, 45, -1, 47, -1, -1, 111, -1,
+ -1, -1, 54, -1, 56, 57, -1, 59, -1, -1,
+ -1, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, -1, -1, 86, 87, 88, -1, -1, 91,
+ -1, 1, 94, 3, 4, 5, -1, 7, 8, 9,
+ 10, -1, 12, 13, -1, -1, -1, -1, -1, 111,
+ -1, -1, -1, -1, -1, -1, -1, -1, 28, 29,
+ 30, -1, 32, -1, 34, 35, 36, -1, 38, 39,
+ 40, 41, 42, 43, -1, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, 54, -1, 56, 57, 58, -1,
+ -1, 61, -1, -1, -1, -1, -1, 67, -1, -1,
+ 70, -1, -1, -1, -1, -1, -1, -1, 78, 79,
+ 80, -1, -1, -1, -1, -1, 86, 87, 88, -1,
+ -1, -1, 1, 93, 3, 4, 5, -1, 7, 8,
+ 9, 10, -1, 12, 13, -1, -1, -1, -1, -1,
+ -1, 111, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, -1, 32, -1, 34, 35, 36, -1, 38,
+ 39, 40, 41, 42, 43, -1, 45, -1, -1, -1,
+ 49, 50, 51, 52, 53, 54, -1, 56, 57, 58,
+ -1, -1, 61, -1, -1, -1, -1, -1, 67, -1,
+ -1, 70, -1, -1, -1, -1, -1, -1, -1, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ -1, -1, -1, 1, 93, 3, 4, 5, -1, 7,
+ 8, 9, 10, -1, 12, 13, -1, -1, -1, -1,
+ -1, -1, 111, -1, -1, -1, -1, -1, -1, -1,
+ 28, 29, 30, -1, 32, -1, 34, 35, 36, -1,
+ 38, 39, 40, 41, 42, 43, -1, 45, -1, -1,
+ -1, 49, 50, 51, 52, 53, 54, -1, 56, 57,
+ -1, -1, -1, 61, 62, -1, -1, -1, -1, 67,
+ -1, -1, 70, -1, -1, -1, -1, -1, -1, -1,
+ 78, 79, 80, -1, -1, -1, -1, -1, 86, 87,
+ 88, -1, -1, -1, 1, 93, 3, 4, 5, -1,
+ 7, 8, 9, 10, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, 111, -1, -1, -1, -1, -1, -1,
+ -1, 28, 29, 30, -1, 32, -1, 34, 35, 36,
+ -1, 38, 39, 40, 41, 42, 43, -1, 45, -1,
+ -1, -1, 49, 50, 51, 52, 53, 54, -1, 56,
+ 57, 58, -1, -1, 61, -1, -1, -1, -1, -1,
+ 67, -1, -1, 70, -1, -1, -1, -1, -1, -1,
+ -1, 78, 79, 80, -1, -1, -1, -1, -1, 86,
+ 87, 88, -1, -1, -1, 1, 93, 3, 4, 5,
+ -1, 7, 8, 9, 10, -1, 12, 13, -1, -1,
+ -1, -1, -1, -1, 111, -1, -1, -1, -1, -1,
+ -1, -1, 28, 29, 30, -1, 32, -1, 34, 35,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, 45,
+ -1, -1, -1, 49, 50, 51, 52, 53, 54, -1,
+ 56, 57, -1, -1, 60, 61, -1, -1, -1, -1,
+ -1, 67, -1, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, 78, 79, 80, -1, -1, -1, -1, -1,
+ 86, 87, 88, -1, -1, -1, 1, 93, 3, 4,
+ 5, -1, 7, 8, 9, 10, -1, 12, 13, -1,
+ -1, -1, -1, -1, -1, 111, -1, -1, -1, -1,
+ -1, -1, -1, 28, 29, 30, -1, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, -1, -1, -1,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, -1, -1, -1, 1, 93, 3,
+ 4, 5, -1, 7, 8, 9, 10, -1, 12, 13,
+ -1, -1, -1, -1, 109, -1, 111, -1, -1, -1,
+ -1, -1, -1, -1, 28, 29, 30, -1, 32, -1,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
+ -1, 45, -1, -1, -1, 49, 50, 51, 52, 53,
+ 54, -1, 56, 57, -1, -1, -1, 61, -1, -1,
+ -1, -1, -1, 67, -1, -1, 70, -1, -1, -1,
+ -1, -1, -1, -1, 78, 79, 80, -1, -1, -1,
+ -1, -1, 86, 87, 88, -1, -1, -1, 1, 93,
+ 3, 4, 5, -1, 7, 8, 9, 10, -1, 12,
+ 13, -1, -1, -1, -1, -1, -1, 111, -1, -1,
+ -1, -1, -1, -1, -1, 28, 29, 30, -1, 32,
+ -1, 34, 35, 36, -1, 38, 39, 40, 41, 42,
+ 43, -1, 45, -1, -1, -1, 49, 50, 51, 52,
+ 53, 54, -1, 56, 57, -1, -1, -1, 61, -1,
+ -1, -1, -1, -1, 67, -1, -1, 70, -1, -1,
+ -1, -1, -1, -1, -1, 78, 79, 80, -1, -1,
+ -1, -1, -1, 86, 87, 88, -1, -1, -1, 1,
+ 93, 3, 4, 5, -1, 7, 8, 9, 10, -1,
+ 12, 13, -1, -1, -1, -1, -1, -1, 111, -1,
+ -1, -1, -1, -1, -1, -1, 28, 29, 30, -1,
+ 32, -1, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, -1, 45, -1, -1, -1, 49, 50, 51,
+ 52, 53, 54, -1, 56, 57, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, 67, -1, -1, 70, -1,
+ -1, -1, -1, -1, -1, -1, 78, 79, 80, -1,
+ -1, -1, -1, -1, 86, 87, 88, -1, 3, 4,
+ 5, 93, 7, 8, 9, 10, -1, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 111,
+ -1, -1, -1, 28, 29, 30, -1, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, -1, -1, -1,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, -1, -1, -1, -1, 93, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 111, 112, 3, 4,
+ 5, 6, 7, 8, 9, 10, -1, 12, 13, 14,
+ -1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, 58, -1, 60, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, -1, -1, -1,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, -1, -1, -1, -1, 93, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 110, 111, 3, 4, 5,
+ 6, 7, 8, 9, 10, -1, 12, 13, 14, -1,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, -1, 34, 35,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, 45,
+ -1, -1, -1, 49, 50, 51, 52, 53, 54, -1,
+ 56, 57, 58, -1, 60, 61, -1, -1, -1, -1,
+ -1, 67, -1, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, 78, 79, 80, -1, -1, -1, -1, -1,
+ 86, 87, 88, -1, -1, -1, -1, 93, -1, 95,
+ -1, -1, -1, 3, 4, 5, 6, 7, 8, 9,
+ 10, -1, 12, 13, 14, 111, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, 34, 35, 36, -1, 38, 39,
+ 40, 41, 42, 43, -1, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, 54, -1, 56, 57, 58, -1,
+ 60, 61, -1, -1, -1, -1, -1, 67, -1, -1,
+ 70, -1, -1, -1, -1, -1, -1, -1, 78, 79,
+ 80, -1, -1, -1, -1, -1, 86, 87, 88, -1,
+ -1, -1, -1, 93, -1, 95, -1, -1, -1, 3,
+ 4, 5, 6, 7, 8, 9, 10, -1, 12, 13,
+ 14, 111, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
+ -1, 45, -1, -1, -1, 49, 50, 51, 52, 53,
+ 54, -1, 56, 57, -1, -1, 60, 61, -1, -1,
+ -1, -1, -1, 67, -1, -1, 70, -1, -1, -1,
+ -1, -1, -1, -1, 78, 79, 80, -1, -1, -1,
+ -1, -1, 86, 87, 88, -1, -1, -1, -1, 93,
+ -1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, -1, -1, -1, -1, 111, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 28, 29, 30,
+ 31, 32, -1, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, 45, -1, 47, -1, 49, 50,
+ 51, 52, 53, 54, -1, 56, 57, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, 67, -1, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, -1, 90,
+ -1, -1, 93, 94, -1, -1, 97, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, -1, -1,
+ 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 28, 29, 30, 31, 32, -1, 34, 35,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, 45,
+ -1, 47, -1, 49, 50, 51, 52, 53, 54, -1,
+ 56, 57, -1, -1, -1, 61, -1, -1, -1, -1,
+ -1, 67, -1, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, 78, 79, 80, -1, -1, -1, -1, -1,
+ 86, 87, 88, -1, 90, -1, -1, 93, 94, -1,
+ -1, 97, 3, 4, 5, -1, 7, 8, 9, 10,
+ -1, 12, 13, -1, -1, 111, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 28, 29, 30,
+ -1, 32, -1, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, 45, -1, -1, -1, 49, 50,
+ 51, 52, 53, 54, -1, 56, 57, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, 67, -1, -1, 70,
+ -1, -1, -1, -1, 75, -1, 77, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, -1, 3,
+ 4, 5, 93, 7, 8, 9, 10, -1, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 111, -1, -1, -1, 28, 29, 30, -1, 32, -1,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
+ -1, 45, -1, 47, -1, 49, 50, 51, 52, 53,
+ 54, -1, 56, 57, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 67, -1, -1, 70, -1, -1, -1,
+ -1, -1, -1, -1, 78, 79, 80, -1, -1, -1,
+ -1, -1, 86, 87, 88, -1, 90, -1, -1, 93,
+ 94, 3, 4, 5, -1, 7, 8, 9, 10, -1,
+ 12, 13, -1, -1, -1, -1, -1, 111, -1, -1,
+ -1, -1, -1, -1, -1, -1, 28, 29, 30, -1,
+ 32, -1, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, -1, 45, -1, 47, -1, 49, 50, 51,
+ 52, 53, 54, -1, 56, 57, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 67, -1, -1, 70, -1,
+ -1, -1, -1, -1, -1, -1, 78, 79, 80, -1,
+ -1, -1, -1, -1, 86, 87, 88, -1, 90, -1,
+ -1, 93, 94, 3, 4, 5, -1, 7, 8, 9,
+ 10, -1, 12, 13, -1, -1, -1, -1, -1, 111,
+ -1, -1, -1, -1, -1, -1, -1, -1, 28, 29,
+ 30, -1, 32, -1, 34, 35, 36, -1, 38, 39,
+ 40, 41, 42, 43, -1, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, 54, -1, 56, 57, -1, -1,
+ 60, 61, -1, -1, -1, -1, -1, 67, -1, -1,
+ 70, -1, -1, -1, -1, -1, -1, -1, 78, 79,
+ 80, -1, -1, -1, -1, -1, 86, 87, 88, -1,
+ -1, -1, -1, 93, 3, 4, 5, 6, 7, 8,
+ 9, 10, -1, 12, 13, -1, -1, -1, -1, -1,
+ -1, 111, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, 31, 32, -1, 34, 35, 36, -1, 38,
+ 39, 40, 41, 42, 43, -1, 45, -1, -1, -1,
+ 49, 50, 51, 52, 53, 54, -1, 56, 57, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 67, -1,
+ -1, 70, -1, -1, -1, -1, -1, -1, -1, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ -1, 3, 4, 5, 93, 7, 8, 9, 10, -1,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 111, -1, -1, -1, 28, 29, 30, -1,
+ 32, -1, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, -1, 45, -1, -1, -1, 49, 50, 51,
+ 52, 53, 54, -1, 56, 57, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, 67, -1, -1, 70, -1,
+ -1, -1, -1, -1, -1, -1, 78, 79, 80, -1,
+ -1, -1, -1, -1, 86, 87, 88, -1, 3, 4,
+ 5, 93, 7, 8, 9, 10, -1, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 111,
+ -1, -1, -1, 28, 29, 30, -1, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, -1, -1, -1,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, -1, 3, 4, 5, 93, 7,
+ 8, 9, 10, -1, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 111, -1, -1, -1,
+ 28, 29, 30, -1, 32, -1, 34, 35, 36, -1,
+ 38, 39, 40, 41, 42, 43, -1, 45, -1, -1,
+ -1, 49, 50, 51, 52, 53, 54, -1, 56, 57,
+ 58, -1, -1, -1, -1, -1, -1, -1, -1, 67,
+ -1, -1, 70, -1, -1, -1, -1, -1, -1, -1,
+ 78, 79, 80, -1, -1, -1, -1, -1, 86, 87,
+ 88, -1, 3, 4, 5, 93, 7, 8, 9, 10,
+ -1, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 111, -1, -1, -1, 28, 29, 30,
+ -1, 32, -1, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, 45, -1, -1, -1, 49, 50,
+ 51, 52, 53, 54, -1, 56, 57, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 67, -1, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, -1, -1,
+ -1, -1, 93, 94, 3, 4, 5, -1, 7, 8,
+ 9, 10, -1, 12, 13, -1, -1, -1, -1, -1,
+ 111, -1, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, -1, 32, -1, 34, 35, 36, -1, 38,
+ 39, 40, 41, 42, 43, -1, 45, -1, -1, -1,
+ 49, 50, 51, 52, 53, 54, -1, 56, 57, -1,
+ -1, -1, 61, -1, -1, -1, -1, -1, 67, -1,
+ -1, 70, -1, -1, -1, -1, -1, -1, -1, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ -1, 3, 4, 5, 93, 7, 8, 9, 10, -1,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 111, -1, -1, -1, 28, 29, 30, -1,
+ 32, -1, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, -1, 45, -1, -1, -1, 49, 50, 51,
+ 52, 53, 54, -1, 56, 57, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, 67, -1, -1, 70, -1,
+ -1, -1, -1, -1, -1, -1, 78, 79, 80, -1,
+ -1, -1, -1, -1, 86, 87, 88, -1, 3, 4,
+ 5, 93, 7, 8, 9, 10, -1, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 111,
+ -1, -1, -1, 28, 29, 30, -1, 32, -1, 34,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, 54,
+ -1, 56, 57, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, 67, -1, -1, 70, -1, -1, -1, -1,
+ -1, -1, -1, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, -1, 3, 4, 5, 93, 7,
+ 8, 9, 10, -1, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 111, -1, -1, -1,
+ 28, 29, 30, -1, 32, -1, 34, 35, 36, -1,
+ 38, 39, 40, 41, 42, 43, -1, 45, -1, -1,
+ -1, 49, 50, 51, 52, 53, 54, -1, 56, 57,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
+ -1, -1, 70, -1, -1, -1, -1, -1, -1, -1,
+ 78, 79, 80, -1, -1, -1, -1, -1, 86, 87,
+ 88, -1, 3, 4, 5, 93, 7, 8, 9, 10,
+ -1, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 111, -1, -1, -1, 28, 29, 30,
+ -1, 32, -1, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, 45, -1, -1, -1, 49, 50,
+ 51, 52, 53, 54, -1, 56, 57, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 67, -1, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, -1, 3,
+ 4, 5, 93, 7, 8, 9, 10, -1, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 111, -1, -1, -1, 28, 29, 30, -1, 32, -1,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
+ -1, 45, -1, -1, -1, 49, 50, 51, 52, 53,
+ 54, -1, 56, 57, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 67, -1, -1, 70, -1, -1, -1,
+ -1, -1, -1, -1, 78, 79, 80, -1, -1, -1,
+ -1, -1, 86, 87, 88, -1, 3, 4, 5, 93,
+ 7, 8, 9, 10, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 111, -1, -1,
+ -1, 28, 29, 30, -1, 32, -1, 34, 35, 36,
+ -1, 38, 39, 40, 41, 42, 43, -1, 45, -1,
+ -1, -1, 49, 50, 51, 52, 53, 54, -1, 56,
+ 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 67, -1, -1, 70, -1, -1, -1, -1, -1, -1,
+ -1, 78, 79, 80, -1, -1, -1, -1, -1, 86,
+ 87, 88, -1, 3, 4, 5, 93, 7, 8, 9,
+ 10, -1, 12, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 111, -1, -1, -1, 28, 29,
+ 30, -1, 32, -1, 34, 35, 36, -1, 38, 39,
+ 40, 41, 42, 43, -1, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, 54, -1, 56, 57, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 67, -1, 1,
+ 70, 3, 4, 5, 6, 7, 8, -1, 78, 79,
+ 80, 13, -1, -1, -1, -1, 86, 87, 88, -1,
+ -1, -1, -1, 93, 26, 27, 28, -1, 30, 31,
+ 32, -1, -1, -1, 36, -1, -1, -1, -1, 41,
+ -1, 111, 44, 45, 46, -1, 48, -1, -1, -1,
+ -1, -1, 54, -1, 56, 57, -1, -1, 60, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 70, 1,
+ -1, 3, 4, 5, 6, 7, 8, -1, 80, -1,
+ -1, 13, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, 93, -1, -1, 26, 27, 28, 99, 30, 31,
+ 32, -1, -1, -1, 36, -1, -1, -1, -1, 41,
+ -1, -1, 44, 45, 46, -1, 48, -1, -1, -1,
+ -1, -1, 54, -1, 56, 57, -1, -1, 60, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 70, 1,
+ -1, 3, 4, 5, 6, 7, 8, -1, 80, -1,
+ -1, 13, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, 93, -1, -1, -1, -1, 28, 99, 30, 31,
+ 32, -1, -1, -1, 36, -1, -1, -1, -1, 41,
+ -1, -1, -1, 45, 46, -1, 3, 4, 5, 6,
+ 7, 8, 54, -1, 56, 57, 13, -1, 60, -1,
+ 62, -1, -1, -1, -1, -1, -1, -1, 70, -1,
+ -1, 28, -1, 30, 31, -1, -1, -1, 80, 36,
+ -1, -1, -1, -1, 41, -1, 88, -1, 45, -1,
+ -1, 93, -1, -1, -1, -1, -1, 54, -1, 56,
+ 57, 3, 4, 5, 6, 7, 8, -1, -1, 11,
+ -1, 13, -1, 70, -1, -1, -1, 74, -1, -1,
+ -1, -1, -1, 80, -1, -1, 28, -1, 30, 31,
+ -1, 88, -1, -1, 36, -1, 93, -1, -1, 41,
+ -1, -1, -1, 45, -1, -1, 3, 4, 5, 6,
+ 7, 8, 54, -1, 56, 57, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 70, -1,
+ -1, 28, -1, 30, 31, -1, -1, -1, 80, 36,
+ -1, -1, -1, -1, 41, -1, 88, -1, 45, -1,
+ -1, 93, -1, -1, -1, -1, -1, 54, -1, 56,
+ 57, -1, -1, -1, -1, 62, -1, 3, 4, 5,
+ 6, 7, 8, 70, -1, -1, -1, 13, -1, -1,
+ -1, -1, -1, 80, -1, -1, -1, -1, -1, -1,
+ -1, 88, 28, -1, 30, 31, 93, -1, -1, -1,
+ 36, -1, -1, -1, -1, 41, -1, -1, -1, 45,
+ -1, -1, 3, 4, 5, 6, 7, 8, 54, -1,
+ 56, 57, 13, -1, 60, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 70, -1, -1, 28, -1, 30,
+ 31, -1, -1, -1, 80, 36, -1, -1, -1, -1,
+ 41, -1, 88, -1, 45, -1, -1, 93, -1, -1,
+ -1, -1, -1, 54, -1, 56, 57, 3, 4, 5,
+ 6, 7, 8, -1, -1, -1, -1, 13, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, 28, -1, 30, 31, -1, 88, -1, -1,
+ 36, -1, 93, -1, -1, 41, -1, -1, -1, 45,
+ -1, -1, -1, -1, -1, -1, -1, -1, 54, -1,
+ 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, 93, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, 112, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 59, -1, -1, 108, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/share/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "/usr/local/share/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+ YYPARSE_PARAM_DECL
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 2:
+#line 312 "parse.y"
+{
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+ while (! global_bindings_p ())
+ poplevel (0, 0, 0);
+ finish_file ();
+ ;
+ break;}
+case 3:
+#line 326 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 4:
+#line 328 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 5:
+#line 330 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 8:
+#line 339 "parse.y"
+{ have_extern_spec = 1;
+ used_extern_spec = 0;
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 9:
+#line 344 "parse.y"
+{ have_extern_spec = 0; ;
+ break;}
+case 10:
+#line 349 "parse.y"
+{ yyval.itype = pedantic;
+ pedantic = 0; ;
+ break;}
+case 13:
+#line 359 "parse.y"
+{ if (pending_lang_change) do_pending_lang_change(); ;
+ break;}
+case 14:
+#line 361 "parse.y"
+{ if (! toplevel_bindings_p () && ! pseudo_global_level_p())
+ pop_everything (); ;
+ break;}
+case 15:
+#line 367 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+ break;}
+case 16:
+#line 369 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+ break;}
+case 17:
+#line 371 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+ break;}
+case 18:
+#line 373 "parse.y"
+{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
+ assemble_asm (yyvsp[-2].ttype); ;
+ break;}
+case 19:
+#line 376 "parse.y"
+{ pop_lang_context (); ;
+ break;}
+case 20:
+#line 378 "parse.y"
+{ if (pending_inlines) do_pending_inlines ();
+ pop_lang_context (); ;
+ break;}
+case 21:
+#line 381 "parse.y"
+{ if (pending_inlines) do_pending_inlines ();
+ pop_lang_context (); ;
+ break;}
+case 22:
+#line 384 "parse.y"
+{ push_namespace (yyvsp[-1].ttype); ;
+ break;}
+case 23:
+#line 386 "parse.y"
+{ pop_namespace (); ;
+ break;}
+case 24:
+#line 388 "parse.y"
+{ push_namespace (NULL_TREE); ;
+ break;}
+case 25:
+#line 390 "parse.y"
+{ pop_namespace (); ;
+ break;}
+case 26:
+#line 392 "parse.y"
+{ do_namespace_alias (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 27:
+#line 394 "parse.y"
+{ do_toplevel_using_decl (yyvsp[-1].ttype); ;
+ break;}
+case 28:
+#line 396 "parse.y"
+{
+ if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
+ yyvsp[-1].ttype = lastiddecl;
+ do_using_directive (yyvsp[-1].ttype);
+ ;
+ break;}
+case 29:
+#line 402 "parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 30:
+#line 407 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 31:
+#line 409 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 32:
+#line 411 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 35:
+#line 418 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 36:
+#line 420 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 37:
+#line 425 "parse.y"
+{ push_lang_context (yyvsp[0].ttype); ;
+ break;}
+case 38:
+#line 427 "parse.y"
+{ if (current_lang_name != yyvsp[0].ttype)
+ cp_error ("use of linkage spec `%D' is different from previous spec `%D'", yyvsp[0].ttype, current_lang_name);
+ pop_lang_context (); push_lang_context (yyvsp[0].ttype); ;
+ break;}
+case 39:
+#line 434 "parse.y"
+{ begin_template_parm_list (); ;
+ break;}
+case 40:
+#line 436 "parse.y"
+{ yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
+ break;}
+case 41:
+#line 438 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 42:
+#line 443 "parse.y"
+{ yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 43:
+#line 445 "parse.y"
+{ yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 44:
+#line 450 "parse.y"
+{
+ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE);
+ ttpa:
+ if (TREE_PURPOSE (yyval.ttype) == signature_type_node)
+ sorry ("signature as template type parameter");
+ else if (TREE_PURPOSE (yyval.ttype) != class_type_node)
+ {
+ pedwarn ("template type parameters must use the keyword `class'");
+ TREE_PURPOSE (yyval.ttype) = class_type_node;
+ }
+ ;
+ break;}
+case 45:
+#line 462 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); goto ttpa; ;
+ break;}
+case 46:
+#line 464 "parse.y"
+{ yyval.ttype = build_tree_list (class_type_node, NULL_TREE); ;
+ break;}
+case 47:
+#line 466 "parse.y"
+{ yyval.ttype = build_tree_list (class_type_node, yyvsp[0].ttype); ;
+ break;}
+case 48:
+#line 478 "parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 49:
+#line 480 "parse.y"
+{ yyval.ttype = build_tree_list (groktypename (yyvsp[0].ftype.t), yyvsp[-2].ttype); ;
+ break;}
+case 50:
+#line 482 "parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
+ break;}
+case 51:
+#line 484 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ftype.t); ;
+ break;}
+case 52:
+#line 490 "parse.y"
+{ end_template_decl (); ;
+ break;}
+case 53:
+#line 493 "parse.y"
+{ end_template_decl (); ;
+ break;}
+case 54:
+#line 498 "parse.y"
+{;
+ break;}
+case 55:
+#line 500 "parse.y"
+{;
+ break;}
+case 56:
+#line 502 "parse.y"
+{
+ note_list_got_semicolon (yyvsp[-2].ftype.t);
+ ;
+ break;}
+case 57:
+#line 506 "parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 59:
+#line 509 "parse.y"
+{
+ tree t, attrs;
+ split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs);
+ shadow_tag (t);
+ note_list_got_semicolon (yyvsp[-1].ftype.t);
+ ;
+ break;}
+case 63:
+#line 522 "parse.y"
+{ yyval.itype = 0; ;
+ break;}
+case 64:
+#line 524 "parse.y"
+{ yyval.itype = 1; ;
+ break;}
+case 70:
+#line 540 "parse.y"
+{ finish_function (lineno, (int)yyvsp[-1].itype, 0); ;
+ break;}
+case 71:
+#line 542 "parse.y"
+{ ;
+ break;}
+case 72:
+#line 544 "parse.y"
+{ ;
+ break;}
+case 73:
+#line 549 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
+ if (yyvsp[-2].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-2].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ ;
+ break;}
+case 74:
+#line 558 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 75:
+#line 560 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
+ if (yyvsp[-4].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-4].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 76:
+#line 570 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
+ if (yyvsp[-2].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-2].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ ;
+ break;}
+case 77:
+#line 579 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 78:
+#line 581 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
+ if (yyvsp[-4].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-4].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 79:
+#line 591 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
+ if (yyvsp[-2].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-2].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ ;
+ break;}
+case 80:
+#line 600 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 81:
+#line 602 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
+ if (yyvsp[-4].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-4].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 82:
+#line 612 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
+ if (yyvsp[-2].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-2].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ ;
+ break;}
+case 83:
+#line 621 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 84:
+#line 623 "parse.y"
+{
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
+ if (yyvsp[-4].ttype != current_class_type)
+ {
+ push_nested_class (yyvsp[-4].ttype, 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 85:
+#line 636 "parse.y"
+{ tree specs, attrs;
+ split_specs_attrs (yyvsp[-1].ftype.t, &specs, &attrs);
+ if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
+ YYERROR1;
+ reinit_parse_for_function ();
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 86:
+#line 643 "parse.y"
+{ tree specs, attrs;
+ split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
+ if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
+ YYERROR1;
+ reinit_parse_for_function ();
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 87:
+#line 650 "parse.y"
+{ if (! start_function (NULL_TREE, yyval.ttype, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function ();
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 88:
+#line 655 "parse.y"
+{ tree specs, attrs;
+ split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
+ if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
+ YYERROR1;
+ reinit_parse_for_function ();
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 89:
+#line 662 "parse.y"
+{ if (! start_function (NULL_TREE, yyval.ttype, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function ();
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 90:
+#line 670 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 91:
+#line 672 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 92:
+#line 674 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 93:
+#line 676 "parse.y"
+{ yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 94:
+#line 683 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ttype);
+ yyval.ttype = start_method (specs, yyvsp[0].ttype);
+ rest_of_mdef:
+ if (! yyval.ttype)
+ YYERROR1;
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ reinit_parse_for_method (yychar, yyval.ttype); ;
+ break;}
+case 95:
+#line 692 "parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyvsp[0].ttype); goto rest_of_mdef; ;
+ break;}
+case 96:
+#line 694 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
+ yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
+ break;}
+case 97:
+#line 697 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ttype);
+ yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
+ break;}
+case 98:
+#line 700 "parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ;
+ break;}
+case 99:
+#line 702 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ttype);
+ yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
+ break;}
+case 100:
+#line 705 "parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ;
+ break;}
+case 101:
+#line 710 "parse.y"
+{
+ if (! current_function_parms_stored)
+ store_parm_decls ();
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 102:
+#line 719 "parse.y"
+{ store_return_init (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 103:
+#line 721 "parse.y"
+{ store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 104:
+#line 723 "parse.y"
+{ store_return_init (yyval.ttype, NULL_TREE); ;
+ break;}
+case 105:
+#line 728 "parse.y"
+{
+ if (yyvsp[0].itype == 0)
+ error ("no base initializers given following ':'");
+ setup_vtbl_ptr ();
+ /* Always keep the BLOCK node associated with the outermost
+ pair of curley braces of a function. These are needed
+ for correct operation of dwarfout.c. */
+ keep_next_level ();
+ ;
+ break;}
+case 106:
+#line 741 "parse.y"
+{
+ if (! current_function_parms_stored)
+ store_parm_decls ();
+
+ if (DECL_CONSTRUCTOR_P (current_function_decl))
+ {
+ /* Make a contour for the initializer list. */
+ pushlevel (0);
+ clear_last_expr ();
+ expand_start_bindings (0);
+ }
+ else if (current_class_type == NULL_TREE)
+ error ("base initializers not allowed for non-member functions");
+ else if (! DECL_CONSTRUCTOR_P (current_function_decl))
+ error ("only constructors take base initializers");
+ ;
+ break;}
+case 107:
+#line 761 "parse.y"
+{ yyval.itype = 0; ;
+ break;}
+case 108:
+#line 763 "parse.y"
+{ yyval.itype = 1; ;
+ break;}
+case 111:
+#line 770 "parse.y"
+{
+ if (current_class_name)
+ pedwarn ("anachronistic old style base class initializer");
+ expand_member_init (current_class_ref, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+case 112:
+#line 776 "parse.y"
+{
+ if (current_class_name)
+ pedwarn ("anachronistic old style base class initializer");
+ expand_member_init (current_class_ref, NULL_TREE, void_type_node);
+ ;
+ break;}
+case 113:
+#line 782 "parse.y"
+{ expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 114:
+#line 784 "parse.y"
+{ expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
+ break;}
+case 115:
+#line 786 "parse.y"
+{ expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 116:
+#line 788 "parse.y"
+{ expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
+ break;}
+case 117:
+#line 791 "parse.y"
+{
+ do_member_init (OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
+ ;
+ break;}
+case 118:
+#line 795 "parse.y"
+{
+ do_member_init (OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), void_type_node);
+ ;
+ break;}
+case 130:
+#line 822 "parse.y"
+{ do_type_instantiation (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 131:
+#line 824 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
+ do_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 132:
+#line 827 "parse.y"
+{ do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 133:
+#line 829 "parse.y"
+{ do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 134:
+#line 831 "parse.y"
+{ do_type_instantiation (yyvsp[0].ttype, yyvsp[-3].ttype); ;
+ break;}
+case 135:
+#line 833 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
+ do_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-3].ttype); ;
+ break;}
+case 136:
+#line 836 "parse.y"
+{ do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+case 137:
+#line 838 "parse.y"
+{ do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+case 138:
+#line 847 "parse.y"
+{
+ yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+ if (yyval.ttype != error_mark_node)
+ yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+ ;
+ break;}
+case 139:
+#line 853 "parse.y"
+{
+ yyval.ttype = lookup_template_class (yyvsp[-2].ttype, NULL_TREE, NULL_TREE);
+ if (yyval.ttype != error_mark_node)
+ yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+ ;
+ break;}
+case 140:
+#line 859 "parse.y"
+{
+ yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+ if (yyval.ttype != error_mark_node)
+ yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+ ;
+ break;}
+case 141:
+#line 865 "parse.y"
+{
+ yyval.ttype = lookup_template_class (yyvsp[-2].ttype, NULL_TREE, NULL_TREE);
+ if (yyval.ttype != error_mark_node)
+ yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+ ;
+ break;}
+case 143:
+#line 875 "parse.y"
+{
+ yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+ if (yyval.ttype != error_mark_node)
+ yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+ ;
+ break;}
+case 144:
+#line 881 "parse.y"
+{
+ yyval.ttype = lookup_template_class (yyvsp[-2].ttype, NULL_TREE, NULL_TREE);
+ if (yyval.ttype != error_mark_node)
+ yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+ ;
+ break;}
+case 146:
+#line 891 "parse.y"
+{
+ /* Handle `Class<Class<Type>>' without space in the `>>' */
+ pedwarn ("`>>' should be `> >' in template class name");
+ yyungetc ('>', 1);
+ ;
+ break;}
+case 147:
+#line 900 "parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+ break;}
+case 148:
+#line 902 "parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 149:
+#line 907 "parse.y"
+{ yyval.ttype = groktypename (yyvsp[0].ftype.t); ;
+ break;}
+case 151:
+#line 913 "parse.y"
+{ yyval.code = NEGATE_EXPR; ;
+ break;}
+case 152:
+#line 915 "parse.y"
+{ yyval.code = CONVERT_EXPR; ;
+ break;}
+case 153:
+#line 917 "parse.y"
+{ yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+case 154:
+#line 919 "parse.y"
+{ yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+case 155:
+#line 921 "parse.y"
+{ yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+case 156:
+#line 926 "parse.y"
+{ yyval.ttype = build_x_compound_expr (yyval.ttype); ;
+ break;}
+case 158:
+#line 932 "parse.y"
+{ error ("ANSI C++ forbids an empty condition for `%s'",
+ cond_stmt_keyword);
+ yyval.ttype = integer_zero_node; ;
+ break;}
+case 159:
+#line 936 "parse.y"
+{ yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
+ break;}
+case 160:
+#line 941 "parse.y"
+{ error ("ANSI C++ forbids an empty condition for `%s'",
+ cond_stmt_keyword);
+ yyval.ttype = integer_zero_node; ;
+ break;}
+case 161:
+#line 945 "parse.y"
+{ yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
+ break;}
+case 162:
+#line 950 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 163:
+#line 952 "parse.y"
+{ yyval.ttype = condition_conversion (yyval.ttype); ;
+ break;}
+case 164:
+#line 954 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 165:
+#line 959 "parse.y"
+{ {
+ tree d;
+ for (d = getdecls (); d; d = TREE_CHAIN (d))
+ if (TREE_CODE (d) == TYPE_DECL) {
+ tree s = TREE_TYPE (d);
+ if (TREE_CODE (s) == RECORD_TYPE)
+ cp_error ("definition of class `%T' in condition", s);
+ else if (TREE_CODE (s) == ENUMERAL_TYPE)
+ cp_error ("definition of enum `%T' in condition", s);
+ }
+ }
+ current_declspecs = yyvsp[-4].ftype.t;
+ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
+ cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype,
+ /*prefix_attributes*/ NULL_TREE);
+ ;
+ break;}
+case 166:
+#line 977 "parse.y"
+{
+ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 1, LOOKUP_ONLYCONVERTING);
+ resume_momentary (yyvsp[-2].itype);
+ yyval.ttype = yyvsp[-1].ttype;
+ if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE)
+ cp_error ("definition of array `%#D' in condition", yyval.ttype);
+ ;
+ break;}
+case 172:
+#line 996 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (COMPOUND_STMT, NULL_TREE);
+ COMPOUND_STMT_NO_SCOPE (yyval.ttype) = 1;
+ add_tree (yyval.ttype);
+ }
+ ;
+ break;}
+case 173:
+#line 1005 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-1].ttype, 0) = TREE_CHAIN (yyvsp[-1].ttype);
+ TREE_CHAIN (yyvsp[-1].ttype) = NULL_TREE;
+ last_tree = yyvsp[-1].ttype;
+ }
+ finish_stmt ();
+ ;
+ break;}
+case 175:
+#line 1020 "parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype,
+ build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 176:
+#line 1023 "parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype,
+ build_tree_list (NULL_TREE, error_mark_node)); ;
+ break;}
+case 177:
+#line 1026 "parse.y"
+{ chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 178:
+#line 1028 "parse.y"
+{ chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
+ break;}
+case 179:
+#line 1033 "parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+ break;}
+case 181:
+#line 1039 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 182:
+#line 1042 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 183:
+#line 1045 "parse.y"
+{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+case 184:
+#line 1047 "parse.y"
+{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
+ break;}
+case 185:
+#line 1049 "parse.y"
+{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
+ break;}
+case 186:
+#line 1051 "parse.y"
+{ yyval.ttype = build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype);
+ if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
+ TREE_NEGATED_INT (yyval.ttype) = 1;
+ overflow_warning (yyval.ttype);
+ ;
+ break;}
+case 187:
+#line 1058 "parse.y"
+{ tree label = lookup_label (yyvsp[0].ttype);
+ if (label == NULL_TREE)
+ yyval.ttype = null_pointer_node;
+ else
+ {
+ TREE_USED (label) = 1;
+ yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
+ TREE_CONSTANT (yyval.ttype) = 1;
+ }
+ ;
+ break;}
+case 188:
+#line 1069 "parse.y"
+{ yyval.ttype = expr_sizeof (yyvsp[0].ttype); ;
+ break;}
+case 189:
+#line 1071 "parse.y"
+{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t)); ;
+ break;}
+case 190:
+#line 1073 "parse.y"
+{ yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
+ break;}
+case 191:
+#line 1075 "parse.y"
+{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ftype.t));
+ check_for_new_type ("alignof", yyvsp[-1].ftype); ;
+ break;}
+case 192:
+#line 1081 "parse.y"
+{ yyval.ttype = build_new (NULL_TREE, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-1].itype);
+ check_for_new_type ("new", yyvsp[0].ftype); ;
+ break;}
+case 193:
+#line 1084 "parse.y"
+{ yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-2].itype);
+ check_for_new_type ("new", yyvsp[-1].ftype); ;
+ break;}
+case 194:
+#line 1087 "parse.y"
+{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-2].itype);
+ check_for_new_type ("new", yyvsp[0].ftype); ;
+ break;}
+case 195:
+#line 1090 "parse.y"
+{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-3].itype);
+ check_for_new_type ("new", yyvsp[-1].ftype); ;
+ break;}
+case 196:
+#line 1093 "parse.y"
+{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ftype.t),
+ NULL_TREE, yyvsp[-3].itype);
+ check_for_new_type ("new", yyvsp[-1].ftype); ;
+ break;}
+case 197:
+#line 1097 "parse.y"
+{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-4].itype);
+ check_for_new_type ("new", yyvsp[-2].ftype); ;
+ break;}
+case 198:
+#line 1100 "parse.y"
+{ yyval.ttype = build_new (yyvsp[-3].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-4].itype);
+ check_for_new_type ("new", yyvsp[-1].ftype); ;
+ break;}
+case 199:
+#line 1103 "parse.y"
+{ yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype);
+ check_for_new_type ("new", yyvsp[-2].ftype); ;
+ break;}
+case 200:
+#line 1107 "parse.y"
+{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
+ break;}
+case 201:
+#line 1109 "parse.y"
+{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
+ if (yychar == YYEMPTY)
+ yychar = YYLEX; ;
+ break;}
+case 202:
+#line 1113 "parse.y"
+{ yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
+ if (yychar == YYEMPTY)
+ yychar = YYLEX; ;
+ break;}
+case 203:
+#line 1117 "parse.y"
+{ yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ;
+ break;}
+case 204:
+#line 1119 "parse.y"
+{ yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ;
+ break;}
+case 205:
+#line 1124 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 206:
+#line 1126 "parse.y"
+{
+ yyval.ttype = yyvsp[-1].ttype;
+ pedwarn ("old style placement syntax, use () instead");
+ ;
+ break;}
+case 207:
+#line 1134 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 208:
+#line 1136 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 209:
+#line 1138 "parse.y"
+{
+ cp_error ("`%T' is not a valid expression", yyvsp[-1].ftype.t);
+ yyval.ttype = error_mark_node;
+ ;
+ break;}
+case 210:
+#line 1146 "parse.y"
+{
+ if (pedantic)
+ pedwarn ("ANSI C++ forbids initialization of new expression with `='");
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 211:
+#line 1156 "parse.y"
+{ yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
+ TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
+ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
+ check_for_new_type ("cast", yyvsp[-1].ftype); ;
+ break;}
+case 212:
+#line 1161 "parse.y"
+{ yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
+ TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
+ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
+ check_for_new_type ("cast", yyvsp[-1].ftype); ;
+ break;}
+case 214:
+#line 1170 "parse.y"
+{ yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 215:
+#line 1172 "parse.y"
+{
+ tree init = build_nt (CONSTRUCTOR, NULL_TREE,
+ nreverse (yyvsp[-2].ttype));
+ if (pedantic)
+ pedwarn ("ANSI C++ forbids constructor-expressions");
+ /* Indicate that this was a GNU C constructor expression. */
+ TREE_HAS_CONSTRUCTOR (init) = 1;
+
+ yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, init);
+ ;
+ break;}
+case 217:
+#line 1188 "parse.y"
+{ yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 218:
+#line 1190 "parse.y"
+{ yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 219:
+#line 1192 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 220:
+#line 1194 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 221:
+#line 1196 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 222:
+#line 1198 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 223:
+#line 1200 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 224:
+#line 1202 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 225:
+#line 1204 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 226:
+#line 1206 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 227:
+#line 1208 "parse.y"
+{ yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 228:
+#line 1210 "parse.y"
+{ yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 229:
+#line 1212 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 230:
+#line 1214 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 231:
+#line 1216 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 232:
+#line 1218 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 233:
+#line 1220 "parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 234:
+#line 1222 "parse.y"
+{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 235:
+#line 1224 "parse.y"
+{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 236:
+#line 1226 "parse.y"
+{ yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 237:
+#line 1228 "parse.y"
+{ yyval.ttype = build_x_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype);
+ if (yyval.ttype != error_mark_node)
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
+ break;}
+case 238:
+#line 1232 "parse.y"
+{ yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
+ break;}
+case 239:
+#line 1234 "parse.y"
+{ yyval.ttype = build_throw (NULL_TREE); ;
+ break;}
+case 240:
+#line 1236 "parse.y"
+{ yyval.ttype = build_throw (yyvsp[0].ttype); ;
+ break;}
+case 241:
+#line 1254 "parse.y"
+{ yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
+ break;}
+case 250:
+#line 1270 "parse.y"
+{ yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
+ break;}
+case 251:
+#line 1272 "parse.y"
+{ yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
+ break;}
+case 252:
+#line 1274 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 255:
+#line 1281 "parse.y"
+{ yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
+ break;}
+case 256:
+#line 1286 "parse.y"
+{
+ if (TREE_CODE (yyval.ttype) == BIT_NOT_EXPR)
+ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyval.ttype, 0));
+ else
+ yyval.ttype = do_identifier (yyval.ttype, 1);
+ ;
+ break;}
+case 259:
+#line 1295 "parse.y"
+{
+ if (processing_template_decl)
+ push_obstacks (&permanent_obstack, &permanent_obstack);
+ yyval.ttype = combine_strings (yyval.ttype);
+ if (processing_template_decl)
+ pop_obstacks ();
+ ;
+ break;}
+case 260:
+#line 1303 "parse.y"
+{ char class;
+ yyval.ttype = yyvsp[-1].ttype;
+ class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+ /* This inhibits warnings in truthvalue_conversion. */
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
+ break;}
+case 261:
+#line 1311 "parse.y"
+{ char class;
+ yyval.ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype);
+ class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+ /* This inhibits warnings in truthvalue_conversion. */
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
+ break;}
+case 262:
+#line 1319 "parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 263:
+#line 1321 "parse.y"
+{ if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+ YYERROR;
+ }
+ keep_next_level ();
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+case 264:
+#line 1329 "parse.y"
+{ tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C++ forbids braced-groups within expressions");
+ rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
+ /* The statements have side effects, so the group does. */
+ TREE_SIDE_EFFECTS (rtl_exp) = 1;
+
+ if (TREE_CODE (yyvsp[-1].ttype) == BLOCK)
+ {
+ /* Make a BIND_EXPR for the BLOCK already made. */
+ yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
+ NULL_TREE, rtl_exp, yyvsp[-1].ttype);
+ /* Remove the block from the tree at this point.
+ It gets put back at the proper place
+ when the BIND_EXPR is expanded. */
+ delete_block (yyvsp[-1].ttype);
+ }
+ else
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 265:
+#line 1350 "parse.y"
+{
+ yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_ref);
+ if (TREE_CODE (yyval.ttype) == CALL_EXPR
+ && TREE_TYPE (yyval.ttype) != void_type_node)
+ yyval.ttype = require_complete_type (yyval.ttype);
+ ;
+ break;}
+case 266:
+#line 1357 "parse.y"
+{
+ yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_ref);
+ if (TREE_CODE (yyval.ttype) == CALL_EXPR
+ && TREE_TYPE (yyval.ttype) != void_type_node)
+ yyval.ttype = require_complete_type (yyval.ttype);
+ ;
+ break;}
+case 267:
+#line 1364 "parse.y"
+{ yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 268:
+#line 1366 "parse.y"
+{ /* If we get an OFFSET_REF, turn it into what it really
+ means (e.g., a COMPONENT_REF). This way if we've got,
+ say, a reference to a static member that's being operated
+ on, we don't end up trying to find a member operator for
+ the class it's in. */
+ if (TREE_CODE (yyval.ttype) == OFFSET_REF)
+ yyval.ttype = resolve_offset_ref (yyval.ttype);
+ yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
+ break;}
+case 269:
+#line 1375 "parse.y"
+{ if (TREE_CODE (yyval.ttype) == OFFSET_REF)
+ yyval.ttype = resolve_offset_ref (yyval.ttype);
+ yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
+ break;}
+case 270:
+#line 1380 "parse.y"
+{ if (current_class_ptr)
+ {
+#ifdef WARNING_ABOUT_CCD
+ TREE_USED (current_class_ptr) = 1;
+#endif
+ yyval.ttype = current_class_ptr;
+ }
+ else if (current_function_decl
+ && DECL_STATIC_FUNCTION_P (current_function_decl))
+ {
+ error ("`this' is unavailable for static member functions");
+ yyval.ttype = error_mark_node;
+ }
+ else
+ {
+ if (current_function_decl)
+ error ("invalid use of `this' in non-member function");
+ else
+ error ("invalid use of `this' at top level");
+ yyval.ttype = error_mark_node;
+ }
+ ;
+ break;}
+case 271:
+#line 1403 "parse.y"
+{
+ tree type;
+ tree id = yyval.ttype;
+
+ /* This is a C cast in C++'s `functional' notation. */
+ if (yyvsp[-1].ttype == error_mark_node)
+ {
+ yyval.ttype = error_mark_node;
+ break;
+ }
+#if 0
+ if (yyvsp[-1].ttype == NULL_TREE)
+ {
+ error ("cannot cast null list to type `%s'",
+ IDENTIFIER_POINTER (TYPE_NAME (id)));
+ yyval.ttype = error_mark_node;
+ break;
+ }
+#endif
+#if 0
+ /* type is not set! (mrs) */
+ if (type == error_mark_node)
+ yyval.ttype = error_mark_node;
+ else
+#endif
+ {
+ if (id == ridpointers[(int) RID_CONST])
+ type = build_type_variant (integer_type_node, 1, 0);
+ else if (id == ridpointers[(int) RID_VOLATILE])
+ type = build_type_variant (integer_type_node, 0, 1);
+#if 0
+ /* should not be able to get here (mrs) */
+ else if (id == ridpointers[(int) RID_FRIEND])
+ {
+ error ("cannot cast expression to `friend' type");
+ yyval.ttype = error_mark_node;
+ break;
+ }
+#endif
+ else my_friendly_abort (79);
+ yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype));
+ }
+ ;
+ break;}
+case 273:
+#line 1448 "parse.y"
+{ tree type = groktypename (yyvsp[-4].ftype.t);
+ check_for_new_type ("dynamic_cast", yyvsp[-4].ftype);
+ yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
+ break;}
+case 274:
+#line 1452 "parse.y"
+{ tree type = groktypename (yyvsp[-4].ftype.t);
+ check_for_new_type ("static_cast", yyvsp[-4].ftype);
+ yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
+ break;}
+case 275:
+#line 1456 "parse.y"
+{ tree type = groktypename (yyvsp[-4].ftype.t);
+ check_for_new_type ("reinterpret_cast", yyvsp[-4].ftype);
+ yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
+ break;}
+case 276:
+#line 1460 "parse.y"
+{ tree type = groktypename (yyvsp[-4].ftype.t);
+ check_for_new_type ("const_cast", yyvsp[-4].ftype);
+ yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
+ break;}
+case 277:
+#line 1464 "parse.y"
+{ yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ;
+ break;}
+case 278:
+#line 1466 "parse.y"
+{ tree type = groktypename (yyvsp[-1].ftype.t);
+ check_for_new_type ("typeid", yyvsp[-1].ftype);
+ yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ;
+ break;}
+case 279:
+#line 1470 "parse.y"
+{ yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ;
+ break;}
+case 280:
+#line 1472 "parse.y"
+{
+ got_scope = NULL_TREE;
+ if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
+ yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1);
+ else
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 281:
+#line 1480 "parse.y"
+{ yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
+ break;}
+case 282:
+#line 1482 "parse.y"
+{ if (processing_template_decl)
+ yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE);
+ else
+ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
+ break;}
+case 283:
+#line 1487 "parse.y"
+{ if (processing_template_decl)
+ yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-1].ttype),
+ NULL_TREE, NULL_TREE);
+ else
+ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
+ break;}
+case 284:
+#line 1493 "parse.y"
+{ yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
+ break;}
+case 285:
+#line 1495 "parse.y"
+{ if (processing_template_decl)
+ yyval.ttype = build_min_nt (COMPONENT_REF, yyvsp[-1].ttype, copy_to_permanent (yyvsp[0].ttype));
+ else
+ yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
+ break;}
+case 286:
+#line 1500 "parse.y"
+{
+#if 0
+ /* This is a future direction of this code, but because
+ build_x_function_call cannot always undo what is done
+ in build_component_ref entirely yet, we cannot do this. */
+ yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-3].ttype, NULL_TREE, 1), yyvsp[-1].ttype, current_class_ref);
+ if (TREE_CODE (yyval.ttype) == CALL_EXPR
+ && TREE_TYPE (yyval.ttype) != void_type_node)
+ yyval.ttype = require_complete_type (yyval.ttype);
+#else
+ yyval.ttype = build_method_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
+ LOOKUP_NORMAL);
+#endif
+ ;
+ break;}
+case 287:
+#line 1515 "parse.y"
+{
+#if 0
+ /* This is a future direction of this code, but because
+ build_x_function_call cannot always undo what is done
+ in build_component_ref entirely yet, we cannot do this. */
+ yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, 1), NULL_TREE, current_class_ref);
+ if (TREE_CODE (yyval.ttype) == CALL_EXPR
+ && TREE_TYPE (yyval.ttype) != void_type_node)
+ yyval.ttype = require_complete_type (yyval.ttype);
+#else
+ yyval.ttype = build_method_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
+ LOOKUP_NORMAL);
+#endif
+ ;
+ break;}
+case 288:
+#line 1530 "parse.y"
+{
+ if (IS_SIGNATURE (OP0 (yyvsp[-3].ttype)))
+ {
+ warning ("signature name in scope resolution ignored");
+ yyval.ttype = build_method_call (yyval.ttype, OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE,
+ LOOKUP_NORMAL);
+ }
+ else
+ yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
+ ;
+ break;}
+case 289:
+#line 1541 "parse.y"
+{
+ if (IS_SIGNATURE (OP0 (yyvsp[-1].ttype)))
+ {
+ warning ("signature name in scope resolution ignored");
+ yyval.ttype = build_method_call (yyval.ttype, OP1 (yyvsp[-1].ttype), NULL_TREE, NULL_TREE,
+ LOOKUP_NORMAL);
+ }
+ else
+ yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), NULL_TREE);
+ ;
+ break;}
+case 290:
+#line 1553 "parse.y"
+{
+ if (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype)
+ && (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype))
+ != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype)))))
+ cp_error ("`%E' is not of type `%T'", yyvsp[-3].ttype, yyvsp[-1].ttype);
+ yyval.ttype = cp_convert (void_type_node, yyvsp[-3].ttype);
+ ;
+ break;}
+case 291:
+#line 1561 "parse.y"
+{
+ if (yyvsp[-4].ttype != yyvsp[-1].ttype)
+ cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
+ if (TREE_CODE (TREE_TYPE (yyvsp[-5].ttype))
+ != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-4].ttype))))
+ cp_error ("`%E' is not of type `%T'", yyvsp[-5].ttype, yyvsp[-4].ttype);
+ yyval.ttype = cp_convert (void_type_node, yyvsp[-5].ttype);
+ ;
+ break;}
+case 292:
+#line 1570 "parse.y"
+{
+ yyval.ttype = error_mark_node;
+ ;
+ break;}
+case 293:
+#line 1615 "parse.y"
+{ yyval.itype = 0; ;
+ break;}
+case 294:
+#line 1617 "parse.y"
+{ got_scope = NULL_TREE; yyval.itype = 1; ;
+ break;}
+case 295:
+#line 1622 "parse.y"
+{ yyval.itype = 0; ;
+ break;}
+case 296:
+#line 1624 "parse.y"
+{ got_scope = NULL_TREE; yyval.itype = 1; ;
+ break;}
+case 297:
+#line 1629 "parse.y"
+{ yyval.ttype = boolean_true_node; ;
+ break;}
+case 298:
+#line 1631 "parse.y"
+{ yyval.ttype = boolean_false_node; ;
+ break;}
+case 300:
+#line 1638 "parse.y"
+{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 301:
+#line 1643 "parse.y"
+{
+ if (! current_function_parms_stored)
+ store_parm_decls ();
+ setup_vtbl_ptr ();
+ /* Always keep the BLOCK node associated with the outermost
+ pair of curley braces of a function. These are needed
+ for correct operation of dwarfout.c. */
+ keep_next_level ();
+ ;
+ break;}
+case 302:
+#line 1656 "parse.y"
+{ got_object = TREE_TYPE (yyval.ttype); ;
+ break;}
+case 303:
+#line 1658 "parse.y"
+{
+ yyval.ttype = build_x_arrow (yyval.ttype);
+ got_object = TREE_TYPE (yyval.ttype);
+ ;
+ break;}
+case 304:
+#line 1666 "parse.y"
+{
+ resume_momentary (yyvsp[-1].itype);
+ if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t)))
+ note_got_semicolon (yyvsp[-2].ftype.t);
+ ;
+ break;}
+case 305:
+#line 1672 "parse.y"
+{
+ resume_momentary (yyvsp[-1].itype);
+ note_list_got_semicolon (yyvsp[-2].ftype.t);
+ ;
+ break;}
+case 306:
+#line 1677 "parse.y"
+{ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 307:
+#line 1679 "parse.y"
+{
+ shadow_tag (yyvsp[-1].ftype.t);
+ note_list_got_semicolon (yyvsp[-1].ftype.t);
+ ;
+ break;}
+case 308:
+#line 1684 "parse.y"
+{ warning ("empty declaration"); ;
+ break;}
+case 309:
+#line 1686 "parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 312:
+#line 1700 "parse.y"
+{ yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (),
+ NULL_TREE, NULL_TREE); ;
+ break;}
+case 313:
+#line 1703 "parse.y"
+{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE,
+ NULL_TREE); ;
+ break;}
+case 314:
+#line 1710 "parse.y"
+{ yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 315:
+#line 1713 "parse.y"
+{ yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 316:
+#line 1716 "parse.y"
+{ yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 317:
+#line 1719 "parse.y"
+{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 318:
+#line 1722 "parse.y"
+{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 321:
+#line 1738 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 322:
+#line 1741 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 323:
+#line 1744 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype));
+ yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
+ break;}
+case 324:
+#line 1747 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype));
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 325:
+#line 1750 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype));
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 326:
+#line 1753 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t,
+ chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype)));
+ yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
+ break;}
+case 327:
+#line 1760 "parse.y"
+{ if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyval.ttype));
+ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
+ break;}
+case 328:
+#line 1765 "parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;
+ break;}
+case 329:
+#line 1767 "parse.y"
+{ if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+ break;}
+case 330:
+#line 1772 "parse.y"
+{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 331:
+#line 1774 "parse.y"
+{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+case 332:
+#line 1784 "parse.y"
+{ yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+case 333:
+#line 1786 "parse.y"
+{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
+ break;}
+case 334:
+#line 1788 "parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+case 335:
+#line 1791 "parse.y"
+{ if (extra_warnings && TREE_STATIC (yyval.ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+case 336:
+#line 1797 "parse.y"
+{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 337:
+#line 1799 "parse.y"
+{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+case 338:
+#line 1810 "parse.y"
+{ yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 339:
+#line 1813 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 340:
+#line 1816 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 341:
+#line 1819 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t));
+ yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
+ break;}
+case 342:
+#line 1825 "parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ;
+ break;}
+case 343:
+#line 1827 "parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;
+ break;}
+case 345:
+#line 1837 "parse.y"
+{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 346:
+#line 1839 "parse.y"
+{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 347:
+#line 1841 "parse.y"
+{ yyval.ftype.t = TREE_TYPE (yyvsp[-1].ttype);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 348:
+#line 1844 "parse.y"
+{ yyval.ftype.t = groktypename (yyvsp[-1].ftype.t);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 349:
+#line 1847 "parse.y"
+{ tree type = TREE_TYPE (yyvsp[-1].ttype);
+
+ yyval.ftype.new_type_flag = 0;
+ if (IS_AGGR_TYPE (type))
+ {
+ sorry ("sigof type specifier");
+ yyval.ftype.t = type;
+ }
+ else
+ {
+ error ("`sigof' applied to non-aggregate expression");
+ yyval.ftype.t = error_mark_node;
+ }
+ ;
+ break;}
+case 350:
+#line 1862 "parse.y"
+{ tree type = groktypename (yyvsp[-1].ftype.t);
+
+ yyval.ftype.new_type_flag = 0;
+ if (IS_AGGR_TYPE (type))
+ {
+ sorry ("sigof type specifier");
+ yyval.ftype.t = type;
+ }
+ else
+ {
+ error("`sigof' applied to non-aggregate type");
+ yyval.ftype.t = error_mark_node;
+ }
+ ;
+ break;}
+case 351:
+#line 1882 "parse.y"
+{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 352:
+#line 1884 "parse.y"
+{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 360:
+#line 1905 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 361:
+#line 1907 "parse.y"
+{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 362:
+#line 1912 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ if (current_declspecs
+ && TREE_CODE (current_declspecs) != TREE_LIST)
+ current_declspecs = get_decl_list (current_declspecs);
+ if (have_extern_spec && !used_extern_spec)
+ {
+ current_declspecs = decl_tree_cons
+ (NULL_TREE, get_identifier ("extern"),
+ current_declspecs);
+ used_extern_spec = 1;
+ }
+ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
+ cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
+ break;}
+case 363:
+#line 1929 "parse.y"
+{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING);
+ yyval.itype = yyvsp[-2].itype; ;
+ break;}
+case 364:
+#line 1932 "parse.y"
+{ tree d;
+ split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
+ &prefix_attributes);
+ if (current_declspecs
+ && TREE_CODE (current_declspecs) != TREE_LIST)
+ current_declspecs = get_decl_list (current_declspecs);
+ if (have_extern_spec && !used_extern_spec)
+ {
+ current_declspecs = decl_tree_cons
+ (NULL_TREE, get_identifier ("extern"),
+ current_declspecs);
+ used_extern_spec = 1;
+ }
+ yyval.itype = suspend_momentary ();
+ d = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
+ cplus_decl_attributes (d, yyvsp[0].ttype, prefix_attributes);
+ cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
+ break;}
+case 365:
+#line 1953 "parse.y"
+{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
+ cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
+ break;}
+case 366:
+#line 1957 "parse.y"
+{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ;
+ break;}
+case 367:
+#line 1959 "parse.y"
+{ yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes);
+ cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
+ break;}
+case 368:
+#line 1966 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
+ cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
+ break;}
+case 369:
+#line 1973 "parse.y"
+{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING);
+ yyval.itype = yyvsp[-2].itype; ;
+ break;}
+case 370:
+#line 1976 "parse.y"
+{ tree d;
+ split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyval.itype = suspend_momentary ();
+ d = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
+ cplus_decl_attributes (d, yyvsp[0].ttype, prefix_attributes);
+ cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
+ break;}
+case 371:
+#line 1987 "parse.y"
+{ current_declspecs = NULL_TREE;
+ prefix_attributes = NULL_TREE;
+ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
+ cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
+ break;}
+case 372:
+#line 1994 "parse.y"
+{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING);
+ yyval.itype = yyvsp[-2].itype; ;
+ break;}
+case 373:
+#line 1997 "parse.y"
+{ tree d;
+ current_declspecs = NULL_TREE;
+ prefix_attributes = NULL_TREE;
+ yyval.itype = suspend_momentary ();
+ d = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
+ cplus_decl_attributes (d, yyvsp[0].ttype, prefix_attributes);
+ cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
+ break;}
+case 374:
+#line 2010 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 375:
+#line 2012 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 376:
+#line 2017 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 377:
+#line 2019 "parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 378:
+#line 2024 "parse.y"
+{ yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+case 379:
+#line 2029 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 380:
+#line 2031 "parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 381:
+#line 2036 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 382:
+#line 2038 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 383:
+#line 2040 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+case 384:
+#line 2042 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+case 385:
+#line 2044 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 390:
+#line 2060 "parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 391:
+#line 2062 "parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 392:
+#line 2067 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 393:
+#line 2069 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 395:
+#line 2077 "parse.y"
+{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
+ TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
+ break;}
+case 396:
+#line 2080 "parse.y"
+{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
+ TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
+ break;}
+case 397:
+#line 2083 "parse.y"
+{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
+ TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
+ break;}
+case 398:
+#line 2086 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 399:
+#line 2093 "parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+ break;}
+case 400:
+#line 2095 "parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+ break;}
+case 401:
+#line 2098 "parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 402:
+#line 2100 "parse.y"
+{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
+ break;}
+case 403:
+#line 2102 "parse.y"
+{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 404:
+#line 2104 "parse.y"
+{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
+ break;}
+case 405:
+#line 2109 "parse.y"
+{ start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype),
+ NULL_TREE, 1);
+ reinit_parse_for_function (); ;
+ break;}
+case 406:
+#line 2115 "parse.y"
+{
+ int nested = (hack_decl_function_context
+ (current_function_decl) != NULL_TREE);
+ finish_function (lineno, (int)yyvsp[-1].itype, nested);
+ process_next_inline (yyvsp[-3].ttype);
+ ;
+ break;}
+case 407:
+#line 2122 "parse.y"
+{ process_next_inline (yyvsp[-2].ttype); ;
+ break;}
+case 408:
+#line 2124 "parse.y"
+{ process_next_inline (yyvsp[-2].ttype); ;
+ break;}
+case 411:
+#line 2136 "parse.y"
+{ replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 412:
+#line 2138 "parse.y"
+{ replace_defarg (yyvsp[-2].ttype, error_mark_node); ;
+ break;}
+case 414:
+#line 2143 "parse.y"
+{ do_pending_defargs (); ;
+ break;}
+case 415:
+#line 2145 "parse.y"
+{ do_pending_defargs (); ;
+ break;}
+case 416:
+#line 2150 "parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+case 417:
+#line 2153 "parse.y"
+{ yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
+ yyval.ftype.new_type_flag = 1;
+ resume_momentary ((int) yyvsp[-4].itype);
+ check_for_missing_semicolon (yyvsp[-3].ttype); ;
+ break;}
+case 418:
+#line 2158 "parse.y"
+{ yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
+ yyval.ftype.new_type_flag = 1;
+ check_for_missing_semicolon (yyval.ftype.t); ;
+ break;}
+case 419:
+#line 2162 "parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (make_anon_name ()); ;
+ break;}
+case 420:
+#line 2165 "parse.y"
+{ yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
+ resume_momentary ((int) yyvsp[-5].itype);
+ check_for_missing_semicolon (yyvsp[-3].ttype);
+ yyval.ftype.new_type_flag = 1; ;
+ break;}
+case 421:
+#line 2170 "parse.y"
+{ yyval.ftype.t = finish_enum (start_enum (make_anon_name()), NULL_TREE);
+ yyval.ftype.new_type_flag = 1;
+ check_for_missing_semicolon (yyval.ftype.t); ;
+ break;}
+case 422:
+#line 2174 "parse.y"
+{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 423:
+#line 2177 "parse.y"
+{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 424:
+#line 2180 "parse.y"
+{ yyval.ftype.t = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 425:
+#line 2183 "parse.y"
+{ yyval.ftype.t = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 426:
+#line 2187 "parse.y"
+{
+ int semi;
+ tree id;
+
+ yyval.ttype = yyvsp[-4].ttype;
+#if 0
+ /* Need to rework class nesting in the
+ presence of nested classes, etc. */
+ shadow_tag (CLASSTYPE_AS_LIST (yyvsp[-4].ttype)); */
+#endif
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ semi = yychar == ';';
+ /* finish_struct nukes this anyway; if
+ finish_exception does too, then it can go. */
+ if (semi)
+ note_got_semicolon (yyvsp[-4].ttype);
+
+ if (TREE_CODE (yyvsp[-4].ttype) == ENUMERAL_TYPE)
+ ;
+ else
+ {
+ yyval.ttype = finish_struct (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, semi);
+ if (semi) note_got_semicolon (yyval.ttype);
+ }
+
+ pop_obstacks ();
+
+ if (! semi)
+ check_for_missing_semicolon (yyvsp[-4].ttype);
+ if (current_scope () == current_function_decl)
+ do_pending_defargs (yyvsp[-4].ttype);
+ ;
+ break;}
+case 427:
+#line 2221 "parse.y"
+{
+ if (pending_inlines
+ && current_scope () == current_function_decl)
+ do_pending_inlines ();
+ ;
+ break;}
+case 428:
+#line 2227 "parse.y"
+{
+ yyval.ftype.t = yyvsp[-3].ttype;
+ yyval.ftype.new_type_flag = 1;
+ if (current_scope () == current_function_decl)
+ clear_inline_text_obstack ();
+ ;
+ break;}
+case 429:
+#line 2234 "parse.y"
+{
+ yyval.ftype.t = yyvsp[0].ttype;
+ yyval.ftype.new_type_flag = 0;
+ /* struct B: public A; is not accepted by the WP grammar. */
+ if (TYPE_BINFO_BASETYPES (yyval.ftype.t) && !TYPE_SIZE (yyval.ftype.t)
+ && ! TYPE_BEING_DEFINED (yyval.ftype.t))
+ cp_error ("base clause without member specification for `%#T'",
+ yyval.ftype.t);
+ ;
+ break;}
+case 433:
+#line 2253 "parse.y"
+{ if (pedantic && !in_system_header)
+ pedwarn ("comma at end of enumerator list"); ;
+ break;}
+case 435:
+#line 2260 "parse.y"
+{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
+ break;}
+case 436:
+#line 2262 "parse.y"
+{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
+ break;}
+case 437:
+#line 2264 "parse.y"
+{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
+ break;}
+case 438:
+#line 2266 "parse.y"
+{ error ("no body nor ';' separates two class, struct or union declarations"); ;
+ break;}
+case 439:
+#line 2271 "parse.y"
+{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 440:
+#line 2276 "parse.y"
+{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 441:
+#line 2281 "parse.y"
+{
+ current_aggr = yyvsp[-2].ttype;
+ if (TREE_CODE (yyvsp[0].ttype) == TYPE_DECL)
+ yyval.ttype = yyvsp[0].ttype;
+ else
+ {
+ cp_error ("`%T' does not have a nested type named `%D'",
+ yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = xref_tag
+ (current_aggr, make_anon_name (), NULL_TREE, 1);
+ yyval.ttype = TYPE_MAIN_DECL (yyval.ttype);
+ }
+ ;
+ break;}
+case 442:
+#line 2295 "parse.y"
+{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 443:
+#line 2297 "parse.y"
+{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 444:
+#line 2302 "parse.y"
+{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 0); ;
+ break;}
+case 445:
+#line 2307 "parse.y"
+{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
+ break;}
+case 446:
+#line 2310 "parse.y"
+{
+ yyval.ttype = yyvsp[-1].ttype;
+ if (yyvsp[0].ttype)
+ xref_basetypes (current_aggr, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 447:
+#line 2316 "parse.y"
+{
+ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
+ if (TREE_INT_CST_LOW (current_aggr) == union_type
+ && TREE_CODE (yyval.ttype) != UNION_TYPE)
+ cp_pedwarn ("`union' tag used in declaring `%#T'", yyval.ttype);
+ else if (TREE_CODE (yyval.ttype) == UNION_TYPE
+ && TREE_INT_CST_LOW (current_aggr) != union_type)
+ cp_pedwarn ("non-`union' tag used in declaring `%#T'", yyval.ttype);
+ if (yyvsp[0].ttype)
+ {
+ if (IS_AGGR_TYPE (yyval.ttype) && CLASSTYPE_USE_TEMPLATE (yyval.ttype))
+ {
+ if (CLASSTYPE_IMPLICIT_INSTANTIATION (yyval.ttype)
+ && TYPE_SIZE (yyval.ttype) == NULL_TREE)
+ {
+ SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (yyval.ttype);
+ if (processing_template_decl)
+ push_template_decl (TYPE_MAIN_DECL (yyval.ttype));
+ }
+ else if (CLASSTYPE_TEMPLATE_INSTANTIATION (yyval.ttype))
+ cp_error ("specialization after instantiation of `%T'", yyval.ttype);
+ }
+ xref_basetypes (current_aggr, yyvsp[-1].ttype, yyval.ttype, yyvsp[0].ttype);
+ }
+ ;
+ break;}
+case 448:
+#line 2345 "parse.y"
+{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
+ yyungetc ('{', 1); ;
+ break;}
+case 451:
+#line 2356 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 452:
+#line 2358 "parse.y"
+{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
+ break;}
+case 453:
+#line 2360 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 455:
+#line 2366 "parse.y"
+{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 456:
+#line 2371 "parse.y"
+{
+ tree type = TREE_TYPE (yyvsp[0].ttype);
+ if (! is_aggr_type (type, 1))
+ yyval.ttype = NULL_TREE;
+ else if (current_aggr == signature_type_node
+ && (! type) && (! IS_SIGNATURE (type)))
+ {
+ error ("class name not allowed as base signature");
+ yyval.ttype = NULL_TREE;
+ }
+ else if (current_aggr == signature_type_node)
+ {
+ sorry ("signature inheritance, base type `%s' ignored",
+ IDENTIFIER_POINTER (yyval.ttype));
+ yyval.ttype = build_tree_list (access_public_node, type);
+ }
+ else if (type && IS_SIGNATURE (type))
+ {
+ error ("signature name not allowed as base class");
+ yyval.ttype = NULL_TREE;
+ }
+ else
+ yyval.ttype = build_tree_list (access_default_node, type);
+ ;
+ break;}
+case 457:
+#line 2396 "parse.y"
+{
+ tree type = TREE_TYPE (yyvsp[0].ttype);
+ if (current_aggr == signature_type_node)
+ error ("access and source specifiers not allowed in signature");
+ if (! IS_AGGR_TYPE (type))
+ yyval.ttype = NULL_TREE;
+ else if (current_aggr == signature_type_node
+ && (! type) && (! IS_SIGNATURE (type)))
+ {
+ error ("class name not allowed as base signature");
+ yyval.ttype = NULL_TREE;
+ }
+ else if (current_aggr == signature_type_node)
+ {
+ sorry ("signature inheritance, base type `%s' ignored",
+ IDENTIFIER_POINTER (yyval.ttype));
+ yyval.ttype = build_tree_list (access_public_node, type);
+ }
+ else if (type && IS_SIGNATURE (type))
+ {
+ error ("signature name not allowed as base class");
+ yyval.ttype = NULL_TREE;
+ }
+ else
+ yyval.ttype = build_tree_list (yyval.ttype, type);
+ ;
+ break;}
+case 459:
+#line 2427 "parse.y"
+{ yyval.ttype = TYPE_MAIN_DECL (make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype)); ;
+ break;}
+case 460:
+#line 2429 "parse.y"
+{ yyval.ttype = TYPE_MAIN_DECL (make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype)); ;
+ break;}
+case 461:
+#line 2431 "parse.y"
+{
+ if (current_aggr == signature_type_node)
+ {
+ if (IS_AGGR_TYPE (TREE_TYPE (yyvsp[-1].ttype)))
+ {
+ sorry ("`sigof' as base signature specifier");
+ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
+ }
+ else
+ {
+ error ("`sigof' applied to non-aggregate expression");
+ yyval.ttype = error_mark_node;
+ }
+ }
+ else
+ {
+ error ("`sigof' in struct or class declaration");
+ yyval.ttype = error_mark_node;
+ }
+ ;
+ break;}
+case 462:
+#line 2452 "parse.y"
+{
+ if (current_aggr == signature_type_node)
+ {
+ if (IS_AGGR_TYPE (groktypename (yyvsp[-1].ftype.t)))
+ {
+ sorry ("`sigof' as base signature specifier");
+ yyval.ttype = groktypename (yyvsp[-1].ftype.t);
+ }
+ else
+ {
+ error ("`sigof' applied to non-aggregate expression");
+ yyval.ttype = error_mark_node;
+ }
+ }
+ else
+ {
+ error ("`sigof' in struct or class declaration");
+ yyval.ttype = error_mark_node;
+ }
+ ;
+ break;}
+case 464:
+#line 2477 "parse.y"
+{ if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
+ sorry ("non-virtual access");
+ yyval.ttype = access_default_virtual_node; ;
+ break;}
+case 465:
+#line 2481 "parse.y"
+{ int err = 0;
+ if (yyvsp[-1].ttype == access_protected_node)
+ {
+ warning ("`protected' access not implemented");
+ yyvsp[-1].ttype = access_public_node;
+ err++;
+ }
+ else if (yyvsp[-1].ttype == access_public_node)
+ {
+ if (yyvsp[-2].ttype == access_private_node)
+ {
+ mixed:
+ error ("base class cannot be public and private");
+ }
+ else if (yyvsp[-2].ttype == access_default_virtual_node)
+ yyval.ttype = access_public_virtual_node;
+ }
+ else /* $2 == access_private_node */
+ {
+ if (yyvsp[-2].ttype == access_public_node)
+ goto mixed;
+ else if (yyvsp[-2].ttype == access_default_virtual_node)
+ yyval.ttype = access_private_virtual_node;
+ }
+ ;
+ break;}
+case 466:
+#line 2507 "parse.y"
+{ if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
+ sorry ("non-virtual access");
+ if (yyval.ttype == access_public_node)
+ yyval.ttype = access_public_virtual_node;
+ else if (yyval.ttype == access_private_node)
+ yyval.ttype = access_private_virtual_node; ;
+ break;}
+case 467:
+#line 2517 "parse.y"
+{ tree t = yyvsp[-1].ttype;
+ push_obstacks_nochange ();
+ end_temporary_allocation ();
+
+ if (t == error_mark_node
+ || ! IS_AGGR_TYPE (t))
+ {
+ t = yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
+ pushtag (make_anon_name (), t, 0);
+ }
+ if (TYPE_SIZE (t))
+ duplicate_tag_error (t);
+ if (TYPE_SIZE (t) || TYPE_BEING_DEFINED (t))
+ {
+ t = make_lang_type (TREE_CODE (t));
+ pushtag (TYPE_IDENTIFIER (yyvsp[-1].ttype), t, 0);
+ yyvsp[-1].ttype = t;
+ }
+ if (processing_template_decl && TYPE_CONTEXT (t)
+ && ! current_class_type)
+ push_template_decl (TYPE_STUB_DECL (t));
+ pushclass (t, 0);
+ TYPE_BEING_DEFINED (t) = 1;
+ if (IS_AGGR_TYPE (t) && CLASSTYPE_USE_TEMPLATE (t))
+ {
+ if (CLASSTYPE_IMPLICIT_INSTANTIATION (t)
+ && TYPE_SIZE (t) == NULL_TREE)
+ {
+ SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (t);
+ if (processing_template_decl)
+ push_template_decl (TYPE_MAIN_DECL (t));
+ }
+ else if (CLASSTYPE_TEMPLATE_INSTANTIATION (t))
+ cp_error ("specialization after instantiation of `%T'", t);
+ }
+ /* Reset the interface data, at the earliest possible
+ moment, as it might have been set via a class foo;
+ before. */
+ /* Don't change signatures. */
+ if (! IS_SIGNATURE (t))
+ {
+ extern tree pending_vtables;
+ int needs_writing;
+ tree name = TYPE_IDENTIFIER (t);
+
+ if (! ANON_AGGRNAME_P (name))
+ {
+ CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
+ SET_CLASSTYPE_INTERFACE_UNKNOWN_X
+ (t, interface_unknown);
+ }
+
+ /* Record how to set the access of this class's
+ virtual functions. If write_virtuals == 2 or 3, then
+ inline virtuals are ``extern inline''. */
+ switch (write_virtuals)
+ {
+ case 0:
+ case 1:
+ needs_writing = 1;
+ break;
+ case 2:
+ needs_writing = !! value_member (name, pending_vtables);
+ break;
+ case 3:
+ needs_writing = ! CLASSTYPE_INTERFACE_ONLY (t)
+ && CLASSTYPE_INTERFACE_KNOWN (t);
+ break;
+ default:
+ needs_writing = 0;
+ }
+ CLASSTYPE_VTABLE_NEEDS_WRITING (t) = needs_writing;
+ }
+#if 0
+ t = TYPE_IDENTIFIER (yyvsp[-1].ttype);
+ if (t && IDENTIFIER_TEMPLATE (t))
+ overload_template_name (t, 1);
+#endif
+ ;
+ break;}
+case 468:
+#line 2600 "parse.y"
+{
+ yyval.ttype = build_self_reference ();
+ ;
+ break;}
+case 469:
+#line 2607 "parse.y"
+{ if (yyval.ttype) yyval.ttype = build_tree_list (access_public_node, yyval.ttype); ;
+ break;}
+case 470:
+#line 2609 "parse.y"
+{
+ if (current_aggr == signature_type_node)
+ yyval.ttype = build_tree_list (access_public_node, yyvsp[0].ttype);
+ else
+ yyval.ttype = build_tree_list (access_default_node, yyvsp[0].ttype);
+ if (yyvsp[-1].ttype) yyval.ttype = tree_cons (access_public_node, yyvsp[-1].ttype, yyval.ttype);
+ ;
+ break;}
+case 471:
+#line 2617 "parse.y"
+{
+ tree visspec = yyvsp[-2].ttype;
+
+ if (current_aggr == signature_type_node)
+ {
+ error ("access specifier not allowed in signature");
+ visspec = access_public_node;
+ }
+ yyval.ttype = chainon (yyval.ttype, build_tree_list (visspec, yyvsp[0].ttype));
+ ;
+ break;}
+case 472:
+#line 2628 "parse.y"
+{
+ if (current_aggr == signature_type_node)
+ error ("access specifier not allowed in signature");
+ ;
+ break;}
+case 473:
+#line 2638 "parse.y"
+{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE;
+ ;
+ break;}
+case 474:
+#line 2641 "parse.y"
+{ /* In pushdecl, we created a reverse list of names
+ in this binding level. Make sure that the chain
+ of what we're trying to add isn't the item itself
+ (which can happen with what pushdecl's doing). */
+ if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node)
+ {
+ if (TREE_CHAIN (yyvsp[0].ttype) != yyval.ttype)
+ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
+ else
+ yyval.ttype = yyvsp[0].ttype;
+ }
+ ;
+ break;}
+case 475:
+#line 2657 "parse.y"
+{ ;
+ break;}
+case 476:
+#line 2659 "parse.y"
+{ error ("missing ';' before right brace");
+ yyungetc ('}', 0); ;
+ break;}
+case 477:
+#line 2664 "parse.y"
+{ yyval.ttype = finish_method (yyval.ttype); ;
+ break;}
+case 478:
+#line 2666 "parse.y"
+{ yyval.ttype = finish_method (yyval.ttype); ;
+ break;}
+case 479:
+#line 2668 "parse.y"
+{ yyval.ttype = finish_method (yyval.ttype); ;
+ break;}
+case 480:
+#line 2670 "parse.y"
+{ yyval.ttype = finish_method (yyval.ttype); ;
+ break;}
+case 481:
+#line 2672 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 482:
+#line 2674 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 483:
+#line 2683 "parse.y"
+{ yyval.ttype = grok_x_components (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 484:
+#line 2685 "parse.y"
+{ yyval.ttype = grok_x_components (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 485:
+#line 2687 "parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
+ break;}
+case 486:
+#line 2690 "parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
+ break;}
+case 487:
+#line 2693 "parse.y"
+{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 488:
+#line 2695 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 489:
+#line 2706 "parse.y"
+{ tree specs, attrs;
+ split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
+ yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, attrs)); ;
+ break;}
+case 490:
+#line 2711 "parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
+ break;}
+case 491:
+#line 2714 "parse.y"
+{ yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
+ break;}
+case 492:
+#line 2721 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 494:
+#line 2724 "parse.y"
+{
+ /* In this context, void_type_node encodes
+ friends. They have been recorded elsewhere. */
+ if (yyval.ttype == void_type_node)
+ yyval.ttype = yyvsp[0].ttype;
+ else
+ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 495:
+#line 2736 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 497:
+#line 2739 "parse.y"
+{
+ /* In this context, void_type_node encodes
+ friends. They have been recorded elsewhere. */
+ if (yyval.ttype == void_type_node)
+ yyval.ttype = yyvsp[0].ttype;
+ else
+ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 502:
+#line 2761 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[-4].ttype = current_declspecs;
+ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
+ break;}
+case 503:
+#line 2767 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[-4].ttype = current_declspecs;
+ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 504:
+#line 2776 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[-4].ttype = current_declspecs;
+ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
+ break;}
+case 505:
+#line 2782 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[-4].ttype = current_declspecs;
+ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
+ break;}
+case 506:
+#line 2788 "parse.y"
+{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[-4].ttype = current_declspecs;
+ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 507:
+#line 2794 "parse.y"
+{ split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
+ &prefix_attributes);
+ yyvsp[-3].ttype = current_declspecs;
+ yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 508:
+#line 2803 "parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
+ break;}
+case 509:
+#line 2806 "parse.y"
+{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 510:
+#line 2812 "parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
+ build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
+ break;}
+case 511:
+#line 2815 "parse.y"
+{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 512:
+#line 2818 "parse.y"
+{ yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 514:
+#line 2829 "parse.y"
+{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 515:
+#line 2834 "parse.y"
+{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
+ break;}
+case 516:
+#line 2836 "parse.y"
+{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 517:
+#line 2842 "parse.y"
+{ yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 518:
+#line 2845 "parse.y"
+{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 519:
+#line 2850 "parse.y"
+{
+ if (pedantic)
+ pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
+ yyval.ftype.t = build_parse_node (ARRAY_REF, TREE_VALUE (yyvsp[-4].ftype.t), yyvsp[-1].ttype);
+ yyval.ftype.t = build_decl_list (TREE_PURPOSE (yyvsp[-4].ftype.t), yyval.ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag;
+ ;
+ break;}
+case 520:
+#line 2861 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 521:
+#line 2863 "parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+ break;}
+case 522:
+#line 2868 "parse.y"
+{ yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 523:
+#line 2871 "parse.y"
+{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 524:
+#line 2880 "parse.y"
+{ yyval.itype = suspend_momentary (); ;
+ break;}
+case 525:
+#line 2885 "parse.y"
+{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 526:
+#line 2891 "parse.y"
+{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 527:
+#line 2893 "parse.y"
+{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 528:
+#line 2895 "parse.y"
+{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
+ break;}
+case 529:
+#line 2897 "parse.y"
+{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
+ break;}
+case 530:
+#line 2904 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 531:
+#line 2906 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 532:
+#line 2908 "parse.y"
+{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 533:
+#line 2910 "parse.y"
+{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 534:
+#line 2912 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
+ ;
+ break;}
+case 536:
+#line 2920 "parse.y"
+{
+ if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
+ {
+ if (current_class_type
+ && TYPE_BEING_DEFINED (current_class_type)
+ && ! IDENTIFIER_CLASS_VALUE (yyvsp[0].ttype))
+ {
+ /* Be sure to get an inherited typedef. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype, 1);
+ /* Remember that this name has been used in the class
+ definition, as per [class.scope0] */
+ pushdecl_class_level (yyval.ttype);
+ }
+ else
+ yyval.ttype = identifier_typedecl_value (yyvsp[0].ttype);
+ }
+ else
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 537:
+#line 2940 "parse.y"
+{
+ if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
+ yyval.ttype = identifier_typedecl_value (yyvsp[0].ttype);
+ else
+ yyval.ttype = yyvsp[0].ttype;
+ got_scope = NULL_TREE;
+ ;
+ break;}
+case 539:
+#line 2949 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 540:
+#line 2954 "parse.y"
+{ yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
+ break;}
+case 541:
+#line 2959 "parse.y"
+{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 542:
+#line 2961 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 543:
+#line 2963 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+ break;}
+case 544:
+#line 2965 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 545:
+#line 2967 "parse.y"
+{ push_nested_class (yyvsp[-1].ttype, 3);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
+ break;}
+case 547:
+#line 2978 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 548:
+#line 2980 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 549:
+#line 2982 "parse.y"
+{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 550:
+#line 2984 "parse.y"
+{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 551:
+#line 2986 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
+ ;
+ break;}
+case 553:
+#line 2994 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 554:
+#line 2996 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 555:
+#line 2998 "parse.y"
+{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 556:
+#line 3000 "parse.y"
+{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 557:
+#line 3002 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
+ ;
+ break;}
+case 559:
+#line 3010 "parse.y"
+{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 560:
+#line 3012 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 561:
+#line 3014 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 562:
+#line 3016 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+ break;}
+case 563:
+#line 3018 "parse.y"
+{ if (OP0 (yyval.ttype) != current_class_type)
+ {
+ push_nested_class (OP0 (yyval.ttype), 3);
+ TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
+ }
+ ;
+ break;}
+case 564:
+#line 3028 "parse.y"
+{ got_scope = NULL_TREE;
+ yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 565:
+#line 3034 "parse.y"
+{ got_scope = NULL_TREE;
+ yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 567:
+#line 3041 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 568:
+#line 3046 "parse.y"
+{ yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
+ break;}
+case 569:
+#line 3048 "parse.y"
+{ yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
+ break;}
+case 570:
+#line 3050 "parse.y"
+{ yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 575:
+#line 3062 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 576:
+#line 3069 "parse.y"
+{
+ if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
+ {
+ yyval.ttype = lastiddecl;
+ /* Remember that this name has been used in the class
+ definition, as per [class.scope0] */
+ if (current_class_type
+ && TYPE_BEING_DEFINED (current_class_type)
+ && ! IDENTIFIER_CLASS_VALUE (yyvsp[-1].ttype))
+ pushdecl_class_level (yyval.ttype);
+ }
+ got_scope = yyval.ttype = TREE_TYPE (yyval.ttype);
+ ;
+ break;}
+case 577:
+#line 3083 "parse.y"
+{
+ if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
+ yyval.ttype = lastiddecl;
+ got_scope = yyval.ttype = TREE_TYPE (yyval.ttype);
+ ;
+ break;}
+case 578:
+#line 3089 "parse.y"
+{
+ if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
+ yyval.ttype = lastiddecl;
+ if (TREE_CODE (yyval.ttype) == NAMESPACE_DECL
+ && DECL_NAME (yyval.ttype) == get_identifier ("std"))
+ got_scope = void_type_node;
+ else
+ got_scope = yyval.ttype;
+ ;
+ break;}
+case 579:
+#line 3099 "parse.y"
+{ got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
+ break;}
+case 580:
+#line 3114 "parse.y"
+{
+ if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
+ yyval.ttype = identifier_typedecl_value (yyvsp[0].ttype);
+ else
+ yyval.ttype = yyvsp[0].ttype;
+ got_scope = NULL_TREE;
+ ;
+ break;}
+case 582:
+#line 3123 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 583:
+#line 3128 "parse.y"
+{ got_scope = NULL_TREE; ;
+ break;}
+case 584:
+#line 3130 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
+ break;}
+case 585:
+#line 3137 "parse.y"
+{ got_scope = void_type_node; ;
+ break;}
+case 586:
+#line 3143 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 587:
+#line 3145 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 588:
+#line 3147 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 589:
+#line 3149 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 590:
+#line 3151 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
+ ;
+ break;}
+case 591:
+#line 3155 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
+ ;
+ break;}
+case 593:
+#line 3164 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 594:
+#line 3166 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 595:
+#line 3172 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 596:
+#line 3174 "parse.y"
+{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 597:
+#line 3176 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
+ break;}
+case 598:
+#line 3178 "parse.y"
+{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
+ break;}
+case 599:
+#line 3180 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 600:
+#line 3182 "parse.y"
+{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 601:
+#line 3184 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
+ break;}
+case 602:
+#line 3186 "parse.y"
+{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
+ break;}
+case 603:
+#line 3188 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
+ ;
+ break;}
+case 604:
+#line 3192 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
+ ;
+ break;}
+case 606:
+#line 3201 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 608:
+#line 3205 "parse.y"
+{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 609:
+#line 3207 "parse.y"
+{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 610:
+#line 3209 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 611:
+#line 3211 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+ break;}
+case 612:
+#line 3213 "parse.y"
+{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 613:
+#line 3215 "parse.y"
+{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 614:
+#line 3217 "parse.y"
+{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 615:
+#line 3219 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 616:
+#line 3221 "parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+case 622:
+#line 3245 "parse.y"
+{ do_pushlevel (); ;
+ break;}
+case 623:
+#line 3250 "parse.y"
+{ yyval.ttype = do_poplevel (); ;
+ break;}
+case 625:
+#line 3258 "parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C++ forbids label declarations"); ;
+ break;}
+case 628:
+#line 3269 "parse.y"
+{ tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+ tree label = shadow_label (TREE_VALUE (link));
+ C_DECLARED_LABEL_FLAG (label) = 1;
+ declare_nonlocal_label (label);
+ }
+ ;
+ break;}
+case 629:
+#line 3283 "parse.y"
+{;
+ break;}
+case 631:
+#line 3289 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (COMPOUND_STMT, NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ ;
+ break;}
+case 632:
+#line 3297 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-3].ttype, 0) = TREE_CHAIN (yyvsp[-3].ttype);
+ TREE_CHAIN (yyvsp[-3].ttype) = NULL_TREE;
+ last_tree = yyvsp[-3].ttype;
+ }
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 633:
+#line 3310 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (IF_STMT, NULL_TREE, NULL_TREE,
+ NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ cond_stmt_keyword = "if";
+ ;
+ break;}
+case 634:
+#line 3320 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ if (last_tree != yyvsp[-2].ttype)
+ {
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = last_tree;
+ TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
+ last_tree = yyvsp[-2].ttype;
+ }
+ else
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = yyvsp[0].ttype;
+ }
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ expand_start_cond (yyvsp[0].ttype, 0);
+ }
+ ;
+ break;}
+case 635:
+#line 3339 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-4].ttype, 1) = TREE_CHAIN (yyvsp[-4].ttype);
+ TREE_CHAIN (yyvsp[-4].ttype) = NULL_TREE;
+ yyval.ttype = last_tree = yyvsp[-4].ttype;
+ }
+ ;
+ break;}
+case 636:
+#line 3351 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 637:
+#line 3353 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (COMPOUND_STMT, NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ ;
+ break;}
+case 638:
+#line 3361 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
+ TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
+ last_tree = yyvsp[-2].ttype;
+ }
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 639:
+#line 3374 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 641:
+#line 3380 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 642:
+#line 3382 "parse.y"
+{
+ tree expr = yyvsp[-1].ttype;
+ if (! processing_template_decl)
+ {
+ emit_line_note (input_filename, lineno);
+ /* Do default conversion if safe and possibly important,
+ in case within ({...}). */
+ if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
+ && lvalue_p (expr))
+ || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
+ expr = default_conversion (expr);
+ }
+ cplus_expand_expr_stmt (expr);
+ clear_momentary ();
+ finish_stmt (); ;
+ break;}
+case 643:
+#line 3398 "parse.y"
+{ if (! processing_template_decl) expand_start_else (); ;
+ break;}
+case 644:
+#line 3400 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-3].ttype, 2) = TREE_CHAIN (yyvsp[-3].ttype);
+ TREE_CHAIN (yyvsp[-3].ttype) = NULL_TREE;
+ last_tree = yyvsp[-3].ttype;
+ }
+ else
+ expand_end_cond ();
+ ;
+ break;}
+case 645:
+#line 3411 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 646:
+#line 3413 "parse.y"
+{ if (! processing_template_decl) expand_end_cond ();
+ do_poplevel ();
+ finish_stmt (); ;
+ break;}
+case 647:
+#line 3417 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (WHILE_STMT, NULL_TREE, NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ else
+ {
+ emit_nop ();
+ emit_line_note (input_filename, lineno);
+ expand_start_loop (1);
+ }
+ cond_stmt_keyword = "while";
+ ;
+ break;}
+case 648:
+#line 3432 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ if (last_tree != yyvsp[-2].ttype)
+ {
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = last_tree;
+ TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
+ last_tree = yyvsp[-2].ttype;
+ }
+ else
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = yyvsp[0].ttype;
+ }
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (0, yyvsp[0].ttype);
+ }
+ ;
+ break;}
+case 649:
+#line 3451 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-5].ttype, 1) = TREE_CHAIN (yyvsp[-5].ttype);
+ TREE_CHAIN (yyvsp[-5].ttype) = NULL_TREE;
+ last_tree = yyvsp[-5].ttype;
+ }
+ else
+ expand_end_loop ();
+ finish_stmt ();
+ ;
+ break;}
+case 650:
+#line 3463 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (DO_STMT, NULL_TREE, NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ else
+ {
+ emit_nop ();
+ emit_line_note (input_filename, lineno);
+ expand_start_loop_continue_elsewhere (1);
+ }
+ ;
+ break;}
+case 651:
+#line 3477 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
+ TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
+ last_tree = yyvsp[-2].ttype;
+ }
+ else
+ {
+ expand_loop_continue_here ();
+ cond_stmt_keyword = "do";
+ }
+ ;
+ break;}
+case 652:
+#line 3491 "parse.y"
+{
+ if (processing_template_decl)
+ TREE_OPERAND (yyvsp[-5].ttype, 1) = yyvsp[-1].ttype;
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (0, yyvsp[-1].ttype);
+ expand_end_loop ();
+ }
+ clear_momentary ();
+ finish_stmt ();
+ ;
+ break;}
+case 653:
+#line 3504 "parse.y"
+{ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE,
+ NULL_TREE, NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ else
+ emit_line_note (input_filename, lineno);
+ if (flag_new_for_scope > 0)
+ {
+ /* Conditionalize .pushlevel */
+ pushlevel (0);
+ note_level_for_for ();
+ clear_last_expr ();
+ push_momentary ();
+ expand_start_bindings (0);
+ }
+ ;
+ break;}
+case 654:
+#line 3523 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ if (last_tree != yyvsp[-2].ttype)
+ {
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
+ TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
+ last_tree = yyvsp[-2].ttype;
+ }
+ }
+ else
+ {
+ emit_nop ();
+ emit_line_note (input_filename, lineno);
+ expand_start_loop_continue_elsewhere (1);
+ }
+ ;
+ break;}
+case 655:
+#line 3541 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ if (last_tree != yyvsp[-6].ttype)
+ {
+ TREE_OPERAND (yyvsp[-6].ttype, 1) = last_tree;
+ TREE_CHAIN (yyvsp[-6].ttype) = NULL_TREE;
+ last_tree = yyvsp[-6].ttype;
+ }
+ else
+ TREE_OPERAND (yyvsp[-6].ttype, 1) = yyvsp[-1].ttype;
+ }
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype);
+ }
+ ;
+ break;}
+case 656:
+#line 3562 "parse.y"
+{
+ if (processing_template_decl)
+ TREE_OPERAND (yyvsp[-9].ttype, 2) = yyvsp[-1].ttype;
+ push_momentary ();
+ ;
+ break;}
+case 657:
+#line 3568 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-12].ttype, 3) = TREE_CHAIN (yyvsp[-12].ttype);
+ TREE_CHAIN (yyvsp[-12].ttype) = NULL_TREE;
+ last_tree = yyvsp[-12].ttype;
+ }
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ expand_loop_continue_here ();
+ if (yyvsp[-4].ttype) cplus_expand_expr_stmt (yyvsp[-4].ttype);
+ expand_end_loop ();
+ }
+ pop_momentary ();
+ if (flag_new_for_scope > 0)
+ {
+ do_poplevel ();
+ }
+ finish_stmt (); ;
+ break;}
+case 658:
+#line 3589 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (SWITCH_STMT, yyvsp[-1].ttype, NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+ }
+ push_switch ();
+ /* Don't let the tree nodes for $4 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ ;
+ break;}
+case 659:
+#line 3606 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-1].ttype, 1) = TREE_CHAIN (yyvsp[-1].ttype);
+ TREE_CHAIN (yyvsp[-1].ttype) = NULL_TREE;
+ last_tree = yyvsp[-1].ttype;
+ }
+ else
+ expand_end_case (yyvsp[-3].ttype);
+ pop_momentary ();
+ pop_switch ();
+ ;
+ break;}
+case 660:
+#line 3619 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 661:
+#line 3621 "parse.y"
+{ do_case (yyvsp[-1].ttype, NULL_TREE); ;
+ break;}
+case 663:
+#line 3624 "parse.y"
+{ do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 665:
+#line 3627 "parse.y"
+{ do_case (NULL_TREE, NULL_TREE); ;
+ break;}
+case 667:
+#line 3630 "parse.y"
+{ emit_line_note (input_filename, lineno);
+ if (processing_template_decl)
+ add_tree (build_min_nt (BREAK_STMT));
+ else if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+case 668:
+#line 3636 "parse.y"
+{ emit_line_note (input_filename, lineno);
+ if (processing_template_decl)
+ add_tree (build_min_nt (CONTINUE_STMT));
+ else if (! expand_continue_loop (0))
+ error ("continue statement not within a loop"); ;
+ break;}
+case 669:
+#line 3642 "parse.y"
+{ emit_line_note (input_filename, lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+case 670:
+#line 3645 "parse.y"
+{ emit_line_note (input_filename, lineno);
+ c_expand_return (yyvsp[-1].ttype);
+ finish_stmt ();
+ ;
+ break;}
+case 671:
+#line 3650 "parse.y"
+{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
+ emit_line_note (input_filename, lineno);
+ expand_asm (yyvsp[-2].ttype);
+ finish_stmt ();
+ ;
+ break;}
+case 672:
+#line 3657 "parse.y"
+{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
+ emit_line_note (input_filename, lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+ yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno);
+ finish_stmt ();
+ ;
+ break;}
+case 673:
+#line 3666 "parse.y"
+{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
+ emit_line_note (input_filename, lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+ yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno);
+ finish_stmt ();
+ ;
+ break;}
+case 674:
+#line 3676 "parse.y"
+{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
+ emit_line_note (input_filename, lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+ yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno);
+ finish_stmt ();
+ ;
+ break;}
+case 675:
+#line 3684 "parse.y"
+{
+ if (processing_template_decl)
+ add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
+ else
+ { emit_line_note (input_filename, lineno);
+ expand_computed_goto (yyvsp[-1].ttype); }
+ ;
+ break;}
+case 676:
+#line 3692 "parse.y"
+{
+ if (processing_template_decl)
+ add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
+ else
+ {
+ tree decl;
+ emit_line_note (input_filename, lineno);
+ decl = lookup_label (yyvsp[-1].ttype);
+ TREE_USED (decl) = 1;
+ expand_goto (decl);
+ }
+ ;
+ break;}
+case 677:
+#line 3705 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 678:
+#line 3707 "parse.y"
+{ error ("label must be followed by statement");
+ yyungetc ('}', 0);
+ finish_stmt (); ;
+ break;}
+case 679:
+#line 3711 "parse.y"
+{ finish_stmt (); ;
+ break;}
+case 681:
+#line 3717 "parse.y"
+{
+ if (! current_function_parms_stored)
+ store_parm_decls ();
+ expand_start_early_try_stmts ();
+ ;
+ break;}
+case 682:
+#line 3723 "parse.y"
+{ expand_start_all_catch (); ;
+ break;}
+case 683:
+#line 3725 "parse.y"
+{
+ int nested = (hack_decl_function_context
+ (current_function_decl) != NULL_TREE);
+ expand_end_all_catch ();
+ finish_function (lineno, (int)yyvsp[-3].itype, nested);
+ ;
+ break;}
+case 684:
+#line 3735 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (TRY_BLOCK, NULL_TREE,
+ NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ else
+ {
+ emit_line_note (input_filename, lineno);
+ expand_start_try_stmts ();
+ }
+ ;
+ break;}
+case 685:
+#line 3749 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-1].ttype, 0) = TREE_CHAIN (yyvsp[-1].ttype);
+ TREE_CHAIN (yyvsp[-1].ttype) = NULL_TREE;
+ last_tree = yyvsp[-1].ttype;
+ }
+ else
+ expand_start_all_catch ();
+ ;
+ break;}
+case 686:
+#line 3760 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-3].ttype, 1) = TREE_CHAIN (yyvsp[-3].ttype);
+ TREE_CHAIN (yyvsp[-3].ttype) = NULL_TREE;
+ last_tree = yyvsp[-3].ttype;
+ }
+ else
+ expand_end_all_catch ();
+ ;
+ break;}
+case 689:
+#line 3779 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ yyval.ttype = build_min_nt (HANDLER, NULL_TREE,
+ NULL_TREE);
+ add_tree (yyval.ttype);
+ }
+ ;
+ break;}
+case 690:
+#line 3788 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
+ TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
+ last_tree = yyvsp[-2].ttype;
+ }
+ ;
+ break;}
+case 691:
+#line 3797 "parse.y"
+{
+ if (processing_template_decl)
+ {
+ TREE_OPERAND (yyvsp[-4].ttype, 1) = TREE_CHAIN (yyvsp[-4].ttype);
+ TREE_CHAIN (yyvsp[-4].ttype) = NULL_TREE;
+ last_tree = yyvsp[-4].ttype;
+ }
+ else
+ expand_end_catch_block ();
+ ;
+ break;}
+case 695:
+#line 3817 "parse.y"
+{ expand_start_catch_block (NULL_TREE, NULL_TREE); ;
+ break;}
+case 696:
+#line 3833 "parse.y"
+{ check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
+ expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
+ TREE_VALUE (yyvsp[-1].ftype.t)); ;
+ break;}
+case 697:
+#line 3840 "parse.y"
+{ tree label;
+ do_label:
+ label = define_label (input_filename, lineno, yyvsp[-1].ttype);
+ if (label && ! minimal_parse_mode)
+ expand_label (label);
+ ;
+ break;}
+case 698:
+#line 3847 "parse.y"
+{ goto do_label; ;
+ break;}
+case 699:
+#line 3849 "parse.y"
+{ goto do_label; ;
+ break;}
+case 700:
+#line 3851 "parse.y"
+{ goto do_label; ;
+ break;}
+case 701:
+#line 3856 "parse.y"
+{ if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
+ break;}
+case 703:
+#line 3859 "parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C++ forbids compound statements inside for initializations");
+ ;
+ break;}
+case 704:
+#line 3868 "parse.y"
+{ emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 705:
+#line 3871 "parse.y"
+{ emit_line_note (input_filename, lineno); ;
+ break;}
+case 706:
+#line 3876 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 708:
+#line 3879 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 709:
+#line 3886 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 712:
+#line 3893 "parse.y"
+{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+ break;}
+case 713:
+#line 3898 "parse.y"
+{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
+ break;}
+case 714:
+#line 3903 "parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
+ break;}
+case 715:
+#line 3905 "parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+ break;}
+case 716:
+#line 3916 "parse.y"
+{
+ yyval.ttype = empty_parms();
+ ;
+ break;}
+case 718:
+#line 3921 "parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node);
+ TREE_PARMLIST (yyval.ttype) = 1;
+ check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
+ break;}
+case 719:
+#line 3930 "parse.y"
+{
+ yyval.ttype = chainon (yyval.ttype, void_list_node);
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 720:
+#line 3935 "parse.y"
+{
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 721:
+#line 3940 "parse.y"
+{
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 722:
+#line 3944 "parse.y"
+{
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 723:
+#line 3949 "parse.y"
+{
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+case 724:
+#line 3953 "parse.y"
+{
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 725:
+#line 3957 "parse.y"
+{
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 726:
+#line 3961 "parse.y"
+{
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
+ TREE_PARMLIST (yyval.ttype) = 1;
+ ;
+ break;}
+case 727:
+#line 3966 "parse.y"
+{
+ /* This helps us recover from really nasty
+ parse errors, for example, a missing right
+ parenthesis. */
+ yyerror ("possibly missing ')'");
+ yyval.ttype = chainon (yyval.ttype, void_list_node);
+ TREE_PARMLIST (yyval.ttype) = 1;
+ yyungetc (':', 0);
+ yychar = ')';
+ ;
+ break;}
+case 728:
+#line 3977 "parse.y"
+{
+ /* This helps us recover from really nasty
+ parse errors, for example, a missing right
+ parenthesis. */
+ yyerror ("possibly missing ')'");
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
+ TREE_PARMLIST (yyval.ttype) = 1;
+ yyungetc (':', 0);
+ yychar = ')';
+ ;
+ break;}
+case 729:
+#line 3992 "parse.y"
+{ maybe_snarf_defarg (); ;
+ break;}
+case 730:
+#line 3994 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 733:
+#line 4005 "parse.y"
+{ check_for_new_type ("in a parameter list", yyvsp[0].ftype);
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
+ break;}
+case 734:
+#line 4008 "parse.y"
+{ check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
+ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
+ break;}
+case 735:
+#line 4011 "parse.y"
+{ check_for_new_type ("in a parameter list", yyvsp[0].ftype);
+ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
+ break;}
+case 736:
+#line 4014 "parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 737:
+#line 4016 "parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 739:
+#line 4022 "parse.y"
+{ check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
+ break;}
+case 740:
+#line 4032 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
+ yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
+ break;}
+case 741:
+#line 4036 "parse.y"
+{ yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 742:
+#line 4039 "parse.y"
+{ yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 743:
+#line 4042 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
+ yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 744:
+#line 4046 "parse.y"
+{ tree specs = strip_attrs (yyvsp[0].ftype.t);
+ yyval.ftype.t = build_tree_list (specs, NULL_TREE);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 745:
+#line 4050 "parse.y"
+{ tree specs = strip_attrs (yyvsp[-1].ttype);
+ yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
+ yyval.ftype.new_type_flag = 0; ;
+ break;}
+case 746:
+#line 4057 "parse.y"
+{ yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
+ break;}
+case 747:
+#line 4060 "parse.y"
+{ yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
+ yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
+ break;}
+case 750:
+#line 4071 "parse.y"
+{ see_typename (); ;
+ break;}
+case 751:
+#line 4076 "parse.y"
+{
+ error ("type specifier omitted for parameter");
+ yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
+ ;
+ break;}
+case 752:
+#line 4081 "parse.y"
+{
+ error ("type specifier omitted for parameter");
+ if (TREE_CODE (yyval.ttype) == SCOPE_REF
+ && TREE_CODE (TREE_OPERAND (yyval.ttype, 0)) == TEMPLATE_TYPE_PARM)
+ cp_error (" perhaps you want `typename %E' to make it a type", yyval.ttype);
+ yyval.ttype = build_tree_list (integer_type_node, yyval.ttype);
+ ;
+ break;}
+case 753:
+#line 4092 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 754:
+#line 4094 "parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 755:
+#line 4096 "parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
+ break;}
+case 756:
+#line 4101 "parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
+ break;}
+case 758:
+#line 4107 "parse.y"
+{
+ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 759:
+#line 4115 "parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 760:
+#line 4117 "parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 761:
+#line 4119 "parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 762:
+#line 4121 "parse.y"
+{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
+ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
+ ;
+ break;}
+case 763:
+#line 4128 "parse.y"
+{ got_scope = NULL_TREE; ;
+ break;}
+case 764:
+#line 4133 "parse.y"
+{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
+ break;}
+case 765:
+#line 4135 "parse.y"
+{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
+ break;}
+case 766:
+#line 4137 "parse.y"
+{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
+ break;}
+case 767:
+#line 4139 "parse.y"
+{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
+ break;}
+case 768:
+#line 4141 "parse.y"
+{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
+ break;}
+case 769:
+#line 4143 "parse.y"
+{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
+ break;}
+case 770:
+#line 4145 "parse.y"
+{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
+ break;}
+case 771:
+#line 4147 "parse.y"
+{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
+ break;}
+case 772:
+#line 4149 "parse.y"
+{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
+ break;}
+case 773:
+#line 4151 "parse.y"
+{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
+ break;}
+case 774:
+#line 4153 "parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+ break;}
+case 775:
+#line 4155 "parse.y"
+{ yyval.ttype = ansi_opname[LT_EXPR]; ;
+ break;}
+case 776:
+#line 4157 "parse.y"
+{ yyval.ttype = ansi_opname[GT_EXPR]; ;
+ break;}
+case 777:
+#line 4159 "parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+ break;}
+case 778:
+#line 4161 "parse.y"
+{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
+ break;}
+case 779:
+#line 4163 "parse.y"
+{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
+ break;}
+case 780:
+#line 4165 "parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+ break;}
+case 781:
+#line 4167 "parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+ break;}
+case 782:
+#line 4169 "parse.y"
+{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
+ break;}
+case 783:
+#line 4171 "parse.y"
+{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
+ break;}
+case 784:
+#line 4173 "parse.y"
+{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
+ break;}
+case 785:
+#line 4175 "parse.y"
+{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
+ break;}
+case 786:
+#line 4177 "parse.y"
+{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
+ break;}
+case 787:
+#line 4179 "parse.y"
+{ yyval.ttype = ansi_opname[COND_EXPR]; ;
+ break;}
+case 788:
+#line 4181 "parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+ break;}
+case 789:
+#line 4183 "parse.y"
+{ yyval.ttype = ansi_opname[COMPONENT_REF]; ;
+ break;}
+case 790:
+#line 4185 "parse.y"
+{ yyval.ttype = ansi_opname[MEMBER_REF]; ;
+ break;}
+case 791:
+#line 4187 "parse.y"
+{ yyval.ttype = ansi_opname[CALL_EXPR]; ;
+ break;}
+case 792:
+#line 4189 "parse.y"
+{ yyval.ttype = ansi_opname[ARRAY_REF]; ;
+ break;}
+case 793:
+#line 4191 "parse.y"
+{ yyval.ttype = ansi_opname[NEW_EXPR]; ;
+ break;}
+case 794:
+#line 4193 "parse.y"
+{ yyval.ttype = ansi_opname[DELETE_EXPR]; ;
+ break;}
+case 795:
+#line 4195 "parse.y"
+{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
+ break;}
+case 796:
+#line 4197 "parse.y"
+{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
+ break;}
+case 797:
+#line 4200 "parse.y"
+{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+ break;}
+case 798:
+#line 4202 "parse.y"
+{ yyval.ttype = ansi_opname[ERROR_MARK]; ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 487 "/usr/local/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 4205 "parse.y"
+
+
+#ifdef SPEW_DEBUG
+const char *
+debug_yytranslate (value)
+ int value;
+{
+ return yytname[YYTRANSLATE (value)];
+}
+
+#endif
diff --git a/gcc/cp/parse.h b/gcc/cp/parse.h
new file mode 100644
index 00000000000..432766b00f2
--- /dev/null
+++ b/gcc/cp/parse.h
@@ -0,0 +1,91 @@
+typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SELFNAME 260
+#define SCSPEC 261
+#define TYPESPEC 262
+#define CV_QUALIFIER 263
+#define CONSTANT 264
+#define STRING 265
+#define ELLIPSIS 266
+#define SIZEOF 267
+#define ENUM 268
+#define IF 269
+#define ELSE 270
+#define WHILE 271
+#define DO 272
+#define FOR 273
+#define SWITCH 274
+#define CASE 275
+#define DEFAULT 276
+#define BREAK 277
+#define CONTINUE 278
+#define RETURN 279
+#define GOTO 280
+#define ASM_KEYWORD 281
+#define GCC_ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define SIGOF 285
+#define ATTRIBUTE 286
+#define EXTENSION 287
+#define LABEL 288
+#define REALPART 289
+#define IMAGPART 290
+#define AGGR 291
+#define VISSPEC 292
+#define DELETE 293
+#define NEW 294
+#define THIS 295
+#define OPERATOR 296
+#define CXX_TRUE 297
+#define CXX_FALSE 298
+#define NAMESPACE 299
+#define TYPENAME_KEYWORD 300
+#define USING 301
+#define LEFT_RIGHT 302
+#define TEMPLATE 303
+#define TYPEID 304
+#define DYNAMIC_CAST 305
+#define STATIC_CAST 306
+#define REINTERPRET_CAST 307
+#define CONST_CAST 308
+#define SCOPE 309
+#define EMPTY 310
+#define PTYPENAME 311
+#define NSNAME 312
+#define THROW 313
+#define ASSIGN 314
+#define OROR 315
+#define ANDAND 316
+#define MIN_MAX 317
+#define EQCOMPARE 318
+#define ARITHCOMPARE 319
+#define LSHIFT 320
+#define RSHIFT 321
+#define POINTSAT_STAR 322
+#define DOT_STAR 323
+#define UNARY 324
+#define PLUSPLUS 325
+#define MINUSMINUS 326
+#define HYPERUNARY 327
+#define PAREN_STAR_PAREN 328
+#define POINTSAT 329
+#define TRY 330
+#define CATCH 331
+#define TYPENAME_ELLIPSIS 332
+#define PRE_PARSED_FUNCTION_DECL 333
+#define EXTERN_LANG_STRING 334
+#define ALL 335
+#define PRE_PARSED_CLASS_DECL 336
+#define DEFARG 337
+#define DEFARG_MARKER 338
+#define TYPENAME_DEFN 339
+#define IDENTIFIER_DEFN 340
+#define PTYPENAME_DEFN 341
+#define END_OF_LINE 342
+#define END_OF_SAVED_INPUT 343
+
+
+extern YYSTYPE yylval;
+#define YYEMPTY -2
diff --git a/gcc/cstamp-h.in b/gcc/cstamp-h.in
new file mode 100644
index 00000000000..9788f70238c
--- /dev/null
+++ b/gcc/cstamp-h.in
@@ -0,0 +1 @@
+timestamp
diff --git a/gcc/gcc.1 b/gcc/gcc.1
new file mode 100644
index 00000000000..b09c8b741e8
--- /dev/null
+++ b/gcc/gcc.1
@@ -0,0 +1,4167 @@
+.\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation -*-Text-*-
+.\" See section COPYING for conditions for redistribution
+.\"
+.\" Set up \*(lq, \*(rq if -man hasn't already set it up.
+.if @@\*(lq@ \{\
+. ds lq "
+. if t .ds lq ``
+. if !@@\(lq@ .ds lq "\(lq
+.\}
+.if @@\*(rq@ \{\
+. ds rq "
+. if t .ds rq ''
+. if !@@\(rq@ .ds rq "\(rq
+.\}
+.de Id
+.ds Rv \\$3
+.ds Dt \\$4
+..
+.de Sp
+.if n .sp
+.if t .sp 0.4
+..
+.Id $Id: gcc.1,v 1.4 1993/10/13 23:19:12 pesch Exp $
+.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
+.SH NAME
+gcc, g++ \- GNU project C and C++ Compiler (v2.7)
+.SH SYNOPSIS
+.B gcc
+.RI "[ " option " | " filename " ].\|.\|."
+.br
+.B g++
+.RI "[ " option " | " filename " ].\|.\|."
+.SH WARNING
+The information in this man page is an extract from the full
+documentation of the GNU C compiler, and is limited to the meaning of
+the options.
+.PP
+This man page is not kept up to date except when volunteers want to
+maintain it. If you find a discrepancy between the man page and the
+software, please check the Info file, which is the authoritative
+documentation.
+.PP
+If we find that the things in this man page that are out of date cause
+significant confusion or complaints, we will stop distributing the man
+page. The alternative, updating the man page when we update the Info
+file, is impossible because the rest of the work of maintaining GNU CC
+leaves us no time for that. The GNU project regards man pages as
+obsolete and should not let them take time away from other things.
+.PP
+For complete and current documentation, refer to the Info file `\|\c
+.B gcc\c
+\&\|' or the manual
+.I
+Using and Porting GNU CC (for version 2.0)\c
+\&. Both are made from the Texinfo source file
+.BR gcc.texinfo .
+.SH DESCRIPTION
+The C and C++ compilers are integrated. Both process input files
+through one or more of four stages: preprocessing, compilation,
+assembly, and linking. Source filename suffixes identify the source
+language, but which name you use for the compiler governs default
+assumptions:
+.TP
+.B gcc
+assumes preprocessed (\c
+.B .i\c
+\&) files are C and assumes C style linking.
+.TP
+.B g++
+assumes preprocessed (\c
+.B .i\c
+\&) files are C++ and assumes C++ style linking.
+.PP
+Suffixes of source file names indicate the language and kind of
+processing to be done:
+.Sp
+.nf
+.ta \w'\fB.cxx\fP 'u
+\&\fB.c\fP C source; preprocess, compile, assemble
+\&\fB.C\fP C++ source; preprocess, compile, assemble
+\&\fB.cc\fP C++ source; preprocess, compile, assemble
+\&\fB.cxx\fP C++ source; preprocess, compile, assemble
+\&\fB.m\fP Objective-C source; preprocess, compile, assemble
+\&\fB.i\fP preprocessed C; compile, assemble
+\&\fB.ii\fP preprocessed C++; compile, assemble
+\&\fB.s\fP Assembler source; assemble
+\&\fB.S\fP Assembler source; preprocess, assemble
+\&\fB.h\fP Preprocessor file; not usually named on command line
+.Sp
+.fi
+Files with other suffixes are passed to the linker. Common cases include:
+.Sp
+.nf
+\&\fB.o\fP Object file
+\&\fB.a\fP Archive file
+.br
+.fi
+.Sp
+Linking is always the last stage unless you use one of the
+.BR \-c ,
+.BR \-S ,
+or
+.B \-E
+options to avoid it (or unless compilation errors stop the whole
+process). For the link stage, all
+.B .o
+files corresponding to source files,
+.B \-l
+libraries, unrecognized filenames (including named
+.B .o
+object files and
+.B .a
+archives)
+are passed to the linker in command-line order.
+.SH OPTIONS
+Options must be separate: `\|\c
+.B \-dr\c
+\&\|' is quite different from `\|\c
+.B \-d \-r
+\&\|'.
+.PP
+Most `\|\c
+.B \-f\c
+\&\|' and `\|\c
+.B \-W\c
+\&\|' options have two contrary forms:
+.BI \-f name
+and
+.BI \-fno\- name\c
+\& (or
+.BI \-W name
+and
+.BI \-Wno\- name\c
+\&). Only the non-default forms are shown here.
+.PP
+Here is a summary of all the options, grouped by type. Explanations are
+in the following sections.
+.hy 0
+.na
+.TP
+.B Overall Options
+.br
+\-c
+\-S
+\-E
+.RI "\-o " file
+\-pipe
+\-v
+.RI "\-x " language
+.TP
+.B Language Options
+\-ansi
+\-fall\-virtual
+\-fcond\-mismatch
+\-fdollars\-in\-identifiers
+\-fenum\-int\-equiv
+\-fexternal\-templates
+\-fno\-asm
+\-fno\-builtin
+\-fhosted
+\-fno\-hosted
+\-ffreestanding
+\-fno\-freestanding
+\-fno\-strict\-prototype
+\-fsigned\-bitfields
+\-fsigned\-char
+\-fthis\-is\-variable
+\-funsigned\-bitfields
+\-funsigned\-char
+\-fwritable\-strings
+\-traditional
+\-traditional\-cpp
+\-trigraphs
+.TP
+.B Warning Options
+\-fsyntax\-only
+\-pedantic
+\-pedantic\-errors
+\-w
+\-W
+\-Wall
+\-Waggregate\-return
+\-Wcast\-align
+\-Wcast\-qual
+\-Wchar\-subscript
+\-Wcomment
+\-Wconversion
+\-Wenum\-clash
+\-Werror
+\-Wformat
+.RI \-Wid\-clash\- len
+\-Wimplicit
+\-Winline
+\-Wmain
+\-Wmissing\-prototypes
+\-Wmissing\-declarations
+\-Wnested\-externs
+\-Wno\-import
+\-Wparentheses
+\-Wpointer\-arith
+\-Wredundant\-decls
+\-Wreturn\-type
+\-Wshadow
+\-Wstrict\-prototypes
+\-Wswitch
+\-Wtemplate\-debugging
+\-Wtraditional
+\-Wtrigraphs
+\-Wuninitialized
+\-Wunused
+\-Wwrite\-strings
+.TP
+.B Debugging Options
+\-a
+.RI \-d letters
+\-fpretend\-float
+\-g
+.RI \-g level
+\-gcoff
+\-gxcoff
+\-gxcoff+
+\-gdwarf
+\-gdwarf+
+\-gstabs
+\-gstabs+
+\-ggdb
+\-p
+\-pg
+\-save\-temps
+.RI \-print\-file\-name= library
+\-print\-libgcc\-file\-name
+.RI \-print\-prog\-name= program
+.TP
+.B Optimization Options
+\-fcaller\-saves
+\-fcse\-follow\-jumps
+\-fcse\-skip\-blocks
+\-fdelayed\-branch
+\-felide\-constructors
+\-fexpensive\-optimizations
+\-ffast\-math
+\-ffloat\-store
+\-fforce\-addr
+\-fforce\-mem
+\-finline\-functions
+\-fkeep\-inline\-functions
+\-fmemoize\-lookups
+\-fno\-default\-inline
+\-fno\-defer\-pop
+\-fno\-function\-cse
+\-fno\-inline
+\-fno\-peephole
+\-fomit\-frame\-pointer
+\-frerun\-cse\-after\-loop
+\-fschedule\-insns
+\-fschedule\-insns2
+\-fstrength\-reduce
+\-fthread\-jumps
+\-funroll\-all\-loops
+\-funroll\-loops
+\-O
+\-O2
+.TP
+.B Preprocessor Options
+.RI \-A assertion
+\-C
+\-dD
+\-dM
+\-dN
+.RI \-D macro [\|= defn \|]
+\-E
+\-H
+.RI "\-idirafter " dir
+.RI "\-include " file
+.RI "\-imacros " file
+.RI "\-iprefix " file
+.RI "\-iwithprefix " dir
+\-M
+\-MD
+\-MM
+\-MMD
+\-nostdinc
+\-P
+.RI \-U macro
+\-undef
+.TP
+.B Assembler Option
+.RI \-Wa, option
+.TP
+.B Linker Options
+.RI \-l library
+\-nostartfiles
+\-nostdlib
+\-static
+\-shared
+\-symbolic
+.RI "\-Xlinker\ " option
+.RI \-Wl, option
+.RI "\-u " symbol
+.TP
+.B Directory Options
+.RI \-B prefix
+.RI \-I dir
+\-I\-
+.RI \-L dir
+.TP
+.B Target Options
+.RI "\-b " machine
+.RI "\-V " version
+.TP
+.B Configuration Dependent Options
+.I M680x0\ Options
+.br
+\-m68000
+\-m68020
+\-m68020\-40
+\-m68030
+\-m68040
+\-m68881
+\-mbitfield
+\-mc68000
+\-mc68020
+\-mfpa
+\-mnobitfield
+\-mrtd
+\-mshort
+\-msoft\-float
+.Sp
+.I VAX Options
+.br
+\-mg
+\-mgnu
+\-munix
+.Sp
+.I SPARC Options
+.br
+\-mepilogue
+\-mfpu
+\-mhard\-float
+\-mno\-fpu
+\-mno\-epilogue
+\-msoft\-float
+\-msparclite
+\-mv8
+\-msupersparc
+\-mcypress
+.Sp
+.I Convex Options
+.br
+\-margcount
+\-mc1
+\-mc2
+\-mnoargcount
+.Sp
+.I AMD29K Options
+.br
+\-m29000
+\-m29050
+\-mbw
+\-mdw
+\-mkernel\-registers
+\-mlarge
+\-mnbw
+\-mnodw
+\-msmall
+\-mstack\-check
+\-muser\-registers
+.Sp
+.I M88K Options
+.br
+\-m88000
+\-m88100
+\-m88110
+\-mbig\-pic
+\-mcheck\-zero\-division
+\-mhandle\-large\-shift
+\-midentify\-revision
+\-mno\-check\-zero\-division
+\-mno\-ocs\-debug\-info
+\-mno\-ocs\-frame\-position
+\-mno\-optimize\-arg\-area
+\-mno\-serialize\-volatile
+\-mno\-underscores
+\-mocs\-debug\-info
+\-mocs\-frame\-position
+\-moptimize\-arg\-area
+\-mserialize\-volatile
+.RI \-mshort\-data\- num
+\-msvr3
+\-msvr4
+\-mtrap\-large\-shift
+\-muse\-div\-instruction
+\-mversion\-03.00
+\-mwarn\-passed\-structs
+.Sp
+.I RS6000 Options
+.br
+\-mfp\-in\-toc
+\-mno\-fop\-in\-toc
+.Sp
+.I RT Options
+.br
+\-mcall\-lib\-mul
+\-mfp\-arg\-in\-fpregs
+\-mfp\-arg\-in\-gregs
+\-mfull\-fp\-blocks
+\-mhc\-struct\-return
+\-min\-line\-mul
+\-mminimum\-fp\-blocks
+\-mnohc\-struct\-return
+.Sp
+.I MIPS Options
+.br
+\-mcpu=\fIcpu type\fP
+\-mips2
+\-mips3
+\-mint64
+\-mlong64
+\-mlonglong128
+\-mmips\-as
+\-mgas
+\-mrnames
+\-mno\-rnames
+\-mgpopt
+\-mno\-gpopt
+\-mstats
+\-mno\-stats
+\-mmemcpy
+\-mno\-memcpy
+\-mno\-mips\-tfile
+\-mmips\-tfile
+\-msoft\-float
+\-mhard\-float
+\-mabicalls
+\-mno\-abicalls
+\-mhalf\-pic
+\-mno\-half\-pic
+\-G \fInum\fP
+\-nocpp
+.Sp
+.I i386 Options
+.br
+\-m486
+\-mno\-486
+\-msoft\-float
+\-mno\-fp\-ret\-in\-387
+.Sp
+.I HPPA Options
+.br
+\-mpa\-risc\-1\-0
+\-mpa\-risc\-1\-1
+\-mkernel
+\-mshared\-libs
+\-mno\-shared\-libs
+\-mlong\-calls
+\-mdisable\-fpregs
+\-mdisable\-indexing
+\-mtrailing\-colon
+.Sp
+.I i960 Options
+.br
+\-m\fIcpu-type\fP
+\-mnumerics
+\-msoft\-float
+\-mleaf\-procedures
+\-mno\-leaf\-procedures
+\-mtail\-call
+\-mno\-tail\-call
+\-mcomplex\-addr
+\-mno\-complex\-addr
+\-mcode\-align
+\-mno\-code\-align
+\-mic\-compat
+\-mic2.0\-compat
+\-mic3.0\-compat
+\-masm\-compat
+\-mintel\-asm
+\-mstrict\-align
+\-mno\-strict\-align
+\-mold\-align
+\-mno\-old\-align
+.Sp
+.I DEC Alpha Options
+.br
+\-mfp\-regs
+\-mno\-fp\-regs
+\-mno\-soft\-float
+\-msoft\-float
+.Sp
+.I System V Options
+.br
+\-G
+\-Qy
+\-Qn
+.RI \-YP, paths
+.RI \-Ym, dir
+.TP
+.B Code Generation Options
+.RI \-fcall\-saved\- reg
+.RI \-fcall\-used\- reg
+.RI \-ffixed\- reg
+\-finhibit\-size\-directive
+\-fnonnull\-objects
+\-fno\-common
+\-fno\-ident
+\-fno\-gnu\-linker
+\-fpcc\-struct\-return
+\-fpic
+\-fPIC
+\-freg\-struct\-return
+\-fshared\-data
+\-fshort\-enums
+\-fshort\-double
+\-fvolatile
+\-fvolatile\-global
+\-fverbose\-asm
+.ad b
+.hy 1
+.SH OVERALL OPTIONS
+.TP
+.BI "\-x " "language"
+Specify explicitly the
+.I language\c
+\& for the following input files (rather than choosing a default based
+on the file name suffix) . This option applies to all following input
+files until the next `\|\c
+.B \-x\c
+\&\|' option. Possible values of \c
+.I language\c
+\& are
+`\|\c
+.B c\c
+\&\|', `\|\c
+.B objective\-c\c
+\&\|', `\|\c
+.B c\-header\c
+\&\|', `\|\c
+.B c++\c
+\&\|',
+`\|\c
+.B cpp\-output\c
+\&\|', `\|\c
+.B assembler\c
+\&\|', and `\|\c
+.B assembler\-with\-cpp\c
+\&\|'.
+.TP
+.B \-x none
+Turn off any specification of a language, so that subsequent files are
+handled according to their file name suffixes (as they are if `\|\c
+.B \-x\c
+\&\|'
+has not been used at all).
+.PP
+If you want only some of the four stages (preprocess, compile,
+assemble, link), you can use
+`\|\c
+.B \-x\c
+\&\|' (or filename suffixes) to tell \c
+.B gcc\c
+\& where to start, and
+one of the options `\|\c
+.B \-c\c
+\&\|', `\|\c
+.B \-S\c
+\&\|', or `\|\c
+.B \-E\c
+\&\|' to say where
+.B gcc\c
+\& is to stop. Note that some combinations (for example,
+`\|\c
+.B \-x cpp\-output \-E\c
+\&\|') instruct \c
+.B gcc\c
+\& to do nothing at all.
+.TP
+.B \-c
+Compile or assemble the source files, but do not link. The compiler
+output is an object file corresponding to each source file.
+.Sp
+By default, GCC makes the object file name for a source file by replacing
+the suffix `\|\c
+.B .c\c
+\&\|', `\|\c
+.B .i\c
+\&\|', `\|\c
+.B .s\c
+\&\|', etc., with `\|\c
+.B .o\c
+\&\|'. Use
+.B \-o\c
+\& to select another name.
+.Sp
+GCC ignores any unrecognized input files (those that do not require
+compilation or assembly) with the
+.B \-c
+option.
+.TP
+.B \-S
+Stop after the stage of compilation proper; do not assemble. The output
+is an assembler code file for each non-assembler input
+file specified.
+.Sp
+By default, GCC makes the assembler file name for a source file by
+replacing the suffix `\|\c
+.B .c\c
+\&\|', `\|\c
+.B .i\c
+\&\|', etc., with `\|\c
+.B .s\c
+\&\|'. Use
+.B \-o\c
+\& to select another name.
+.Sp
+GCC ignores any input files that don't require compilation.
+.TP
+.B \-E
+Stop after the preprocessing stage; do not run the compiler proper. The
+output is preprocessed source code, which is sent to the
+standard output.
+.Sp
+GCC ignores input files which don't require preprocessing.
+.TP
+.BI "\-o " file
+Place output in file \c
+.I file\c
+\&. This applies regardless to whatever
+sort of output GCC is producing, whether it be an executable file,
+an object file, an assembler file or preprocessed C code.
+.Sp
+Since only one output file can be specified, it does not make sense to
+use `\|\c
+.B \-o\c
+\&\|' when compiling more than one input file, unless you are
+producing an executable file as output.
+.Sp
+If you do not specify `\|\c
+.B \-o\c
+\&\|', the default is to put an executable file
+in `\|\c
+.B a.out\c
+\&\|', the object file for `\|\c
+.I source\c
+.B \&.\c
+.I suffix\c
+\&\c
+\&\|' in
+`\|\c
+.I source\c
+.B \&.o\c
+\&\|', its assembler file in `\|\c
+.I source\c
+.B \&.s\c
+\&\|', and
+all preprocessed C source on standard output.
+.TP
+.B \-v
+Print (on standard error output) the commands executed to run the stages
+of compilation. Also print the version number of the compiler driver
+program and of the preprocessor and the compiler proper.
+.TP
+.B \-pipe
+Use pipes rather than temporary files for communication between the
+various stages of compilation. This fails to work on some systems where
+the assembler cannot read from a pipe; but the GNU assembler has
+no trouble.
+.PP
+.SH LANGUAGE OPTIONS
+The following options control the dialect of C that the compiler
+accepts:
+.TP
+.B \-ansi
+Support all ANSI standard C programs.
+.Sp
+This turns off certain features of GNU C that are incompatible with
+ANSI C, such as the \c
+.B asm\c
+\&, \c
+.B inline\c
+\& and \c
+.B typeof
+keywords, and predefined macros such as \c
+.B unix\c
+\& and \c
+.B vax
+that identify the type of system you are using. It also enables the
+undesirable and rarely used ANSI trigraph feature, and disallows `\|\c
+.B $\c
+\&\|' as part of identifiers.
+.Sp
+The alternate keywords \c
+.B _\|_asm_\|_\c
+\&, \c
+.B _\|_extension_\|_\c
+\&,
+.B _\|_inline_\|_\c
+\& and \c
+.B _\|_typeof_\|_\c
+\& continue to work despite
+`\|\c
+.B \-ansi\c
+\&\|'. You would not want to use them in an ANSI C program, of
+course, but it is useful to put them in header files that might be included
+in compilations done with `\|\c
+.B \-ansi\c
+\&\|'. Alternate predefined macros
+such as \c
+.B _\|_unix_\|_\c
+\& and \c
+.B _\|_vax_\|_\c
+\& are also available, with or
+without `\|\c
+.B \-ansi\c
+\&\|'.
+.Sp
+The `\|\c
+.B \-ansi\c
+\&\|' option does not cause non-ANSI programs to be
+rejected gratuitously. For that, `\|\c
+.B \-pedantic\c
+\&\|' is required in
+addition to `\|\c
+.B \-ansi\c
+\&\|'.
+.Sp
+The preprocessor predefines a macro \c
+.B _\|_STRICT_ANSI_\|_\c
+\& when you use the `\|\c
+.B \-ansi\c
+\&\|'
+option. Some header files may notice this macro and refrain
+from declaring certain functions or defining certain macros that the
+ANSI standard doesn't call for; this is to avoid interfering with any
+programs that might use these names for other things.
+.TP
+.B \-fno\-asm
+Do not recognize \c
+.B asm\c
+\&, \c
+.B inline\c
+\& or \c
+.B typeof\c
+\& as a
+keyword. These words may then be used as identifiers. You can
+use \c
+.B _\|_asm_\|_\c
+\&, \c
+.B _\|_inline_\|_\c
+\& and \c
+.B _\|_typeof_\|_\c
+\& instead.
+`\|\c
+.B \-ansi\c
+\&\|' implies `\|\c
+.B \-fno\-asm\c
+\&\|'.
+.TP
+.B \-fno\-builtin
+Don't recognize built-in functions that do not begin with two leading
+underscores. Currently, the functions affected include \c
+.B _exit\c
+\&,
+.B abort\c
+\&, \c
+.B abs\c
+\&, \c
+.B alloca\c
+\&, \c
+.B cos\c
+\&, \c
+.B exit\c
+\&,
+.B fabs\c
+\&, \c
+.B labs\c
+\&, \c
+.B memcmp\c
+\&, \c
+.B memcpy\c
+\&, \c
+.B sin\c
+\&,
+.B sqrt\c
+\&, \c
+.B strcmp\c
+\&, \c
+.B strcpy\c
+\&, and \c
+.B strlen\c
+\&.
+.Sp
+The `\|\c
+.B \-ansi\c
+\&\|' option prevents \c
+.B alloca\c
+\& and \c
+.B _exit\c
+\& from
+being builtin functions.
+.TP
+.B \-fhosted
+Compile for a hosted environment; this implies the `\|\c
+.B \-fbuiltin\c
+\&\|' option, and implies that suspicious declarations of
+.B main\c
+\& should be warned about.
+.TP
+.B \-ffreestanding
+Compile for a freestanding environment; this implies the `\|\c
+.B \-fno-builtin\c
+\&\|' option, and implies that
+.B main\c
+\& has no special requirements.
+.TP
+.B \-fno\-strict\-prototype
+Treat a function declaration with no arguments, such as `\|\c
+.B int foo
+();\c
+\&\|', as C would treat it\(em\&as saying nothing about the number of
+arguments or their types (C++ only). Normally, such a declaration in
+C++ means that the function \c
+.B foo\c
+\& takes no arguments.
+.TP
+.B \-trigraphs
+Support ANSI C trigraphs. The `\|\c
+.B \-ansi\c
+\&\|' option implies `\|\c
+.B \-trigraphs\c
+\&\|'.
+.TP
+.B \-traditional
+Attempt to support some aspects of traditional C compilers.
+For details, see the GNU C Manual; the duplicate list here
+has been deleted so that we won't get complaints when it
+is out of date.
+.Sp
+But one note about C++ programs only (not C). `\|\c
+.B \-traditional\c
+\&\|' has one additional effect for C++: assignment to
+.B this
+is permitted. This is the same as the effect of `\|\c
+.B \-fthis\-is\-variable\c
+\&\|'.
+.TP
+.B \-traditional\-cpp
+Attempt to support some aspects of traditional C preprocessors.
+This includes the items that specifically mention the preprocessor above,
+but none of the other effects of `\|\c
+.B \-traditional\c
+\&\|'.
+.TP
+.B \-fdollars\-in\-identifiers
+Permit the use of `\|\c
+.B $\c
+\&\|' in identifiers (C++ only). You can also use
+`\|\c
+.B \-fno\-dollars\-in\-identifiers\c
+\&\|' to explicitly prohibit use of
+`\|\c
+.B $\c
+\&\|'. (GNU C++ allows `\|\c
+.B $\c
+\&\|' by default on some target systems
+but not others.)
+.TP
+.B \-fenum\-int\-equiv
+Permit implicit conversion of \c
+.B int\c
+\& to enumeration types (C++
+only). Normally GNU C++ allows conversion of \c
+.B enum\c
+\& to \c
+.B int\c
+\&,
+but not the other way around.
+.TP
+.B \-fexternal\-templates
+Produce smaller code for template declarations, by generating only a
+single copy of each template function where it is defined (C++ only).
+To use this option successfully, you must also mark all files that
+use templates with either `\|\c
+.B #pragma implementation\c
+\&\|' (the definition) or
+`\|\c
+.B #pragma interface\c
+\&\|' (declarations).
+
+When your code is compiled with `\|\c
+.B \-fexternal\-templates\c
+\&\|', all
+template instantiations are external. You must arrange for all
+necessary instantiations to appear in the implementation file; you can
+do this with a \c
+.B typedef\c
+\& that references each instantiation needed.
+Conversely, when you compile using the default option
+`\|\c
+.B \-fno\-external\-templates\c
+\&\|', all template instantiations are
+explicitly internal.
+.TP
+.B \-fall\-virtual
+Treat all possible member functions as virtual, implicitly. All
+member functions (except for constructor functions and
+.B new
+or
+.B delete
+member operators) are treated as virtual functions of the class where
+they appear.
+.Sp
+This does not mean that all calls to these member functions will be
+made through the internal table of virtual functions. Under some
+circumstances, the compiler can determine that a call to a given
+virtual function can be made directly; in these cases the calls are
+direct in any case.
+.TP
+.B \-fcond\-mismatch
+Allow conditional expressions with mismatched types in the second and
+third arguments. The value of such an expression is void.
+.TP
+.B \-fthis\-is\-variable
+Permit assignment to \c
+.B this\c
+\& (C++ only). The incorporation of
+user-defined free store management into C++ has made assignment to
+`\|\c
+.B this\c
+\&\|' an anachronism. Therefore, by default it is invalid to
+assign to \c
+.B this\c
+\& within a class member function. However, for
+backwards compatibility, you can make it valid with
+`\|\c
+.B \-fthis-is-variable\c
+\&\|'.
+.TP
+.B \-funsigned\-char
+Let the type \c
+.B char\c
+\& be unsigned, like \c
+.B unsigned char\c
+\&.
+.Sp
+Each kind of machine has a default for what \c
+.B char\c
+\& should
+be. It is either like \c
+.B unsigned char\c
+\& by default or like
+.B signed char\c
+\& by default.
+.Sp
+Ideally, a portable program should always use \c
+.B signed char\c
+\& or
+.B unsigned char\c
+\& when it depends on the signedness of an object.
+But many programs have been written to use plain \c
+.B char\c
+\& and
+expect it to be signed, or expect it to be unsigned, depending on the
+machines they were written for. This option, and its inverse, let you
+make such a program work with the opposite default.
+.Sp
+The type \c
+.B char\c
+\& is always a distinct type from each of
+.B signed char\c
+\& and \c
+.B unsigned char\c
+\&, even though its behavior
+is always just like one of those two.
+.TP
+.B \-fsigned\-char
+Let the type \c
+.B char\c
+\& be signed, like \c
+.B signed char\c
+\&.
+.Sp
+Note that this is equivalent to `\|\c
+.B \-fno\-unsigned\-char\c
+\&\|', which is
+the negative form of `\|\c
+.B \-funsigned\-char\c
+\&\|'. Likewise,
+`\|\c
+.B \-fno\-signed\-char\c
+\&\|' is equivalent to `\|\c
+.B \-funsigned\-char\c
+\&\|'.
+.TP
+.B \-fsigned\-bitfields
+.TP
+.B \-funsigned\-bitfields
+.TP
+.B \-fno\-signed\-bitfields
+.TP
+.B \-fno\-unsigned\-bitfields
+These options control whether a bitfield is
+signed or unsigned, when declared with no explicit `\|\c
+.B signed\c
+\&\|' or `\|\c
+.B unsigned\c
+\&\|' qualifier. By default, such a bitfield is
+signed, because this is consistent: the basic integer types such as
+.B int\c
+\& are signed types.
+.Sp
+However, when you specify `\|\c
+.B \-traditional\c
+\&\|', bitfields are all unsigned
+no matter what.
+.TP
+.B \-fwritable\-strings
+Store string constants in the writable data segment and don't uniquize
+them. This is for compatibility with old programs which assume they
+can write into string constants. `\|\c
+.B \-traditional\c
+\&\|' also has this
+effect.
+.Sp
+Writing into string constants is a very bad idea; \*(lqconstants\*(rq should
+be constant.
+.SH PREPROCESSOR OPTIONS
+These options control the C preprocessor, which is run on each C source
+file before actual compilation.
+.PP
+If you use the `\|\c
+.B \-E\c
+\&\|' option, GCC does nothing except preprocessing.
+Some of these options make sense only together with `\|\c
+.B \-E\c
+\&\|' because
+they cause the preprocessor output to be unsuitable for actual
+compilation.
+.TP
+.BI "\-include " "file"
+Process \c
+.I file\c
+\& as input before processing the regular input file.
+In effect, the contents of \c
+.I file\c
+\& are compiled first. Any `\|\c
+.B \-D\c
+\&\|'
+and `\|\c
+.B \-U\c
+\&\|' options on the command line are always processed before
+`\|\c
+.B \-include \c
+.I file\c
+\&\c
+\&\|', regardless of the order in which they are
+written. All the `\|\c
+.B \-include\c
+\&\|' and `\|\c
+.B \-imacros\c
+\&\|' options are
+processed in the order in which they are written.
+.TP
+.BI "\-imacros " file
+Process \c
+.I file\c
+\& as input, discarding the resulting output, before
+processing the regular input file. Because the output generated from
+.I file\c
+\& is discarded, the only effect of `\|\c
+.B \-imacros \c
+.I file\c
+\&\c
+\&\|' is to
+make the macros defined in \c
+.I file\c
+\& available for use in the main
+input. The preprocessor evaluates any `\|\c
+.B \-D\c
+\&\|' and `\|\c
+.B \-U\c
+\&\|' options
+on the command line before processing `\|\c
+.B \-imacros\c
+.I file\c
+\&\|', regardless of the order in
+which they are written. All the `\|\c
+.B \-include\c
+\&\|' and `\|\c
+.B \-imacros\c
+\&\|'
+options are processed in the order in which they are written.
+.TP
+.BI "\-idirafter " "dir"
+Add the directory \c
+.I dir\c
+\& to the second include path. The directories
+on the second include path are searched when a header file is not found
+in any of the directories in the main include path (the one that
+`\|\c
+.B \-I\c
+\&\|' adds to).
+.TP
+.BI "\-iprefix " "prefix"
+Specify \c
+.I prefix\c
+\& as the prefix for subsequent `\|\c
+.B \-iwithprefix\c
+\&\|'
+options.
+.TP
+.BI "\-iwithprefix " "dir"
+Add a directory to the second include path. The directory's name is
+made by concatenating \c
+.I prefix\c
+\& and \c
+.I dir\c
+\&, where \c
+.I prefix
+was specified previously with `\|\c
+.B \-iprefix\c
+\&\|'.
+.TP
+.B \-nostdinc
+Do not search the standard system directories for header files. Only
+the directories you have specified with `\|\c
+.B \-I\c
+\&\|' options (and the
+current directory, if appropriate) are searched.
+.Sp
+By using both `\|\c
+.B \-nostdinc\c
+\&\|' and `\|\c
+.B \-I\-\c
+\&\|', you can limit the include-file search file to only those
+directories you specify explicitly.
+.TP
+.B \-nostdinc++
+Do not search for header files in the C++\-specific standard directories,
+but do still search the other standard directories.
+(This option is used when building `\|\c
+.B libg++\c
+\&\|'.)
+.TP
+.B \-undef
+Do not predefine any nonstandard macros. (Including architecture flags).
+.TP
+.B \-E
+Run only the C preprocessor. Preprocess all the C source files
+specified and output the results to standard output or to the
+specified output file.
+.TP
+.B \-C
+Tell the preprocessor not to discard comments. Used with the
+`\|\c
+.B \-E\c
+\&\|' option.
+.TP
+.B \-P
+Tell the preprocessor not to generate `\|\c
+.B #line\c
+\&\|' commands.
+Used with the `\|\c
+.B \-E\c
+\&\|' option.
+.TP
+.B \-M\ [ \-MG ]
+Tell the preprocessor to output a rule suitable for \c
+.B make
+describing the dependencies of each object file. For each source file,
+the preprocessor outputs one \c
+.B make\c
+\&-rule whose target is the object
+file name for that source file and whose dependencies are all the files
+`\|\c
+.B #include\c
+\&\|'d in it. This rule may be a single line or may be
+continued with `\|\c
+.B \e\c
+\&\|'-newline if it is long. The list of rules is
+printed on standard output instead of the preprocessed C program.
+.Sp
+`\|\c
+.B \-M\c
+\&\|' implies `\|\c
+.B \-E\c
+\&\|'.
+.Sp
+`\|\c
+.B \-MG\c
+\&\|' says to treat missing header files as generated files and assume \c
+they live in the same directory as the source file. It must be specified \c
+in addition to `\|\c
+.B \-M\c
+\&\|'.
+.TP
+.B \-MM\ [ \-MG ]
+Like `\|\c
+.B \-M\c
+\&\|' but the output mentions only the user header files
+included with `\|\c
+.B #include "\c
+.I file\c
+\&"\c
+\&\|'. System header files
+included with `\|\c
+.B #include <\c
+.I file\c
+\&>\c
+\&\|' are omitted.
+.TP
+.B \-MD
+Like `\|\c
+.B \-M\c
+\&\|' but the dependency information is written to files with
+names made by replacing `\|\c
+.B .o\c
+\&\|' with `\|\c
+.B .d\c
+\&\|' at the end of the
+output file names. This is in addition to compiling the file as
+specified\(em\&`\|\c
+.B \-MD\c
+\&\|' does not inhibit ordinary compilation the way
+`\|\c
+.B \-M\c
+\&\|' does.
+.Sp
+The Mach utility `\|\c
+.B md\c
+\&\|' can be used to merge the `\|\c
+.B .d\c
+\&\|' files
+into a single dependency file suitable for using with the `\|\c
+.B make\c
+\&\|'
+command.
+.TP
+.B \-MMD
+Like `\|\c
+.B \-MD\c
+\&\|' except mention only user header files, not system
+header files.
+.TP
+.B \-H
+Print the name of each header file used, in addition to other normal
+activities.
+.TP
+.BI "\-A" "question" ( answer )
+Assert the answer
+.I answer
+for
+.I question\c
+\&, in case it is tested
+with a preprocessor conditional such as `\|\c
+.BI "#if #" question ( answer )\c
+\&\|'. `\|\c
+.B \-A\-\c
+\&\|' disables the standard
+assertions that normally describe the target machine.
+.TP
+.BI "\-A" "question"\c
+\&(\c
+.I answer\c
+\&)
+Assert the answer \c
+.I answer\c
+\& for \c
+.I question\c
+\&, in case it is tested
+with a preprocessor conditional such as `\|\c
+.B #if
+#\c
+.I question\c
+\&(\c
+.I answer\c
+\&)\c
+\&\|'. `\|\c
+.B \-A-\c
+\&\|' disables the standard
+assertions that normally describe the target machine.
+.TP
+.BI \-D macro
+Define macro \c
+.I macro\c
+\& with the string `\|\c
+.B 1\c
+\&\|' as its definition.
+.TP
+.BI \-D macro = defn
+Define macro \c
+.I macro\c
+\& as \c
+.I defn\c
+\&. All instances of `\|\c
+.B \-D\c
+\&\|' on
+the command line are processed before any `\|\c
+.B \-U\c
+\&\|' options.
+.TP
+.BI \-U macro
+Undefine macro \c
+.I macro\c
+\&. `\|\c
+.B \-U\c
+\&\|' options are evaluated after all `\|\c
+.B \-D\c
+\&\|' options, but before any `\|\c
+.B \-include\c
+\&\|' and `\|\c
+.B \-imacros\c
+\&\|' options.
+.TP
+.B \-dM
+Tell the preprocessor to output only a list of the macro definitions
+that are in effect at the end of preprocessing. Used with the `\|\c
+.B \-E\c
+\&\|'
+option.
+.TP
+.B \-dD
+Tell the preprocessor to pass all macro definitions into the output, in
+their proper sequence in the rest of the output.
+.TP
+.B \-dN
+Like `\|\c
+.B \-dD\c
+\&\|' except that the macro arguments and contents are omitted.
+Only `\|\c
+.B #define \c
+.I name\c
+\&\c
+\&\|' is included in the output.
+.SH ASSEMBLER OPTION
+.TP
+.BI "\-Wa," "option"
+Pass \c
+.I option\c
+\& as an option to the assembler. If \c
+.I option
+contains commas, it is split into multiple options at the commas.
+.SH LINKER OPTIONS
+These options come into play when the compiler links object files into
+an executable output file. They are meaningless if the compiler is
+not doing a link step.
+.TP
+.I object-file-name
+A file name that does not end in a special recognized suffix is
+considered to name an object file or library. (Object files are
+distinguished from libraries by the linker according to the file
+contents.) If GCC does a link step, these object files are used as input
+to the linker.
+.TP
+.BI \-l library
+Use the library named \c
+.I library\c
+\& when linking.
+.Sp
+The linker searches a standard list of directories for the library,
+which is actually a file named `\|\c
+.B lib\c
+.I library\c
+\&.a\c
+\&\|'. The linker
+then uses this file as if it had been specified precisely by name.
+.Sp
+The directories searched include several standard system directories
+plus any that you specify with `\|\c
+.B \-L\c
+\&\|'.
+.Sp
+Normally the files found this way are library files\(em\&archive files
+whose members are object files. The linker handles an archive file by
+scanning through it for members which define symbols that have so far
+been referenced but not defined. However, if the linker finds an
+ordinary object file rather than a library, the object file is linked
+in the usual fashion. The only difference between using an `\|\c
+.B \-l\c
+\&\|' option and specifying a file
+name is that `\|\c
+.B \-l\c
+\&\|' surrounds
+.I library
+with `\|\c
+.B lib\c
+\&\|' and `\|\c
+.B .a\c
+\&\|' and searches several directories.
+.TP
+.B \-lobjc
+You need this special case of the
+.B \-l
+option in order to link an Objective C program.
+.TP
+.B \-nostartfiles
+Do not use the standard system startup files when linking.
+The standard libraries are used normally.
+.TP
+.B \-nostdlib
+Don't use the standard system libraries and startup files when linking.
+Only the files you specify will be passed to the linker.
+.TP
+.B \-static
+On systems that support dynamic linking, this prevents linking with the shared
+libraries. On other systems, this option has no effect.
+.TP
+.B \-shared
+Produce a shared object which can then be linked with other objects to
+form an executable. Only a few systems support this option.
+.TP
+.B \-symbolic
+Bind references to global symbols when building a shared object. Warn
+about any unresolved references (unless overridden by the link editor
+option `\|\c
+.B
+\-Xlinker \-z \-Xlinker defs\c
+\&\|'). Only a few systems support
+this option.
+.TP
+.BI "\-Xlinker " "option"
+Pass \c
+.I option
+as an option to the linker. You can use this to
+supply system-specific linker options which GNU CC does not know how to
+recognize.
+.Sp
+If you want to pass an option that takes an argument, you must use
+`\|\c
+.B \-Xlinker\c
+\&\|' twice, once for the option and once for the argument.
+For example, to pass `\|\c
+.B
+\-assert definitions\c
+\&\|', you must write
+`\|\c
+.B
+\-Xlinker \-assert \-Xlinker definitions\c
+\&\|'. It does not work to write
+`\|\c
+.B
+\-Xlinker "\-assert definitions"\c
+\&\|', because this passes the entire
+string as a single argument, which is not what the linker expects.
+.TP
+.BI "\-Wl," "option"
+Pass \c
+.I option\c
+\& as an option to the linker. If \c
+.I option\c
+\& contains
+commas, it is split into multiple options at the commas.
+.TP
+.BI "\-u " "symbol"
+Pretend the symbol
+.I symbol
+is undefined, to force linking of
+library modules to define it. You can use `\|\c
+.B \-u\c
+\&\|' multiple times with
+different symbols to force loading of additional library modules.
+.SH DIRECTORY OPTIONS
+These options specify directories to search for header files, for
+libraries and for parts of the compiler:
+.TP
+.BI "\-I" "dir"
+Append directory \c
+.I dir\c
+\& to the list of directories searched for include files.
+.TP
+.B \-I\-
+Any directories you specify with `\|\c
+.B \-I\c
+\&\|' options before the `\|\c
+.B \-I\-\c
+\&\|'
+option are searched only for the case of `\|\c
+.B
+#include "\c
+.I file\c
+.B
+\&"\c
+\&\|';
+they are not searched for `\|\c
+.B #include <\c
+.I file\c
+\&>\c
+\&\|'.
+.Sp
+If additional directories are specified with `\|\c
+.B \-I\c
+\&\|' options after
+the `\|\c
+.B \-I\-\c
+\&\|', these directories are searched for all `\|\c
+.B #include\c
+\&\|'
+directives. (Ordinarily \c
+.I all\c
+\& `\|\c
+.B \-I\c
+\&\|' directories are used
+this way.)
+.Sp
+In addition, the `\|\c
+.B \-I\-\c
+\&\|' option inhibits the use of the current
+directory (where the current input file came from) as the first search
+directory for `\|\c
+.B
+#include "\c
+.I file\c
+.B
+\&"\c
+\&\|'. There is no way to
+override this effect of `\|\c
+.B \-I\-\c
+\&\|'. With `\|\c
+.B \-I.\c
+\&\|' you can specify
+searching the directory which was current when the compiler was
+invoked. That is not exactly the same as what the preprocessor does
+by default, but it is often satisfactory.
+.Sp
+`\|\c
+.B \-I\-\c
+\&\|' does not inhibit the use of the standard system directories
+for header files. Thus, `\|\c
+.B \-I\-\c
+\&\|' and `\|\c
+.B \-nostdinc\c
+\&\|' are
+independent.
+.TP
+.BI "\-L" "dir"
+Add directory \c
+.I dir\c
+\& to the list of directories to be searched
+for `\|\c
+.B \-l\c
+\&\|'.
+.TP
+.BI "\-B" "prefix"
+This option specifies where to find the executables, libraries and
+data files of the compiler itself.
+.Sp
+The compiler driver program runs one or more of the subprograms
+`\|\c
+.B cpp\c
+\&\|', `\|\c
+.B cc1\c
+\&\|' (or, for C++, `\|\c
+.B cc1plus\c
+\&\|'), `\|\c
+.B as\c
+\&\|' and `\|\c
+.B ld\c
+\&\|'. It tries
+.I prefix\c
+\& as a prefix for each program it tries to run, both with and
+without `\|\c
+.I machine\c
+.B /\c
+.I version\c
+.B /\c
+\&\|'.
+.Sp
+For each subprogram to be run, the compiler driver first tries the
+`\|\c
+.B \-B\c
+\&\|' prefix, if any. If that name is not found, or if `\|\c
+.B \-B\c
+\&\|'
+was not specified, the driver tries two standard prefixes, which are
+`\|\c
+.B /usr/lib/gcc/\c
+\&\|' and `\|\c
+.B /usr/local/lib/gcc-lib/\c
+\&\|'. If neither of
+those results in a file name that is found, the compiler driver
+searches for the unmodified program
+name, using the directories specified in your
+`\|\c
+.B PATH\c
+\&\|' environment variable.
+.Sp
+The run-time support file `\|\c
+.B libgcc.a\c
+\&\|' is also searched for using the
+`\|\c
+.B \-B\c
+\&\|' prefix, if needed. If it is not found there, the two
+standard prefixes above are tried, and that is all. The file is left
+out of the link if it is not found by those means. Most of the time,
+on most machines, `\|\c
+.B libgcc.a\c
+\&\|' is not actually necessary.
+.Sp
+You can get a similar result from the environment variable
+.B GCC_EXEC_PREFIX\c
+\&; if it is defined, its value is used as a prefix
+in the same way. If both the `\|\c
+.B \-B\c
+\&\|' option and the
+.B GCC_EXEC_PREFIX\c
+\& variable are present, the `\|\c
+.B \-B\c
+\&\|' option is
+used first and the environment variable value second.
+.SH WARNING OPTIONS
+Warnings are diagnostic messages that report constructions which
+are not inherently erroneous but which are risky or suggest there
+may have been an error.
+.Sp
+These options control the amount and kinds of warnings produced by GNU
+CC:
+.TP
+.B \-fsyntax\-only
+Check the code for syntax errors, but don't emit any output.
+.TP
+.B \-w
+Inhibit all warning messages.
+.TP
+.B \-Wno\-import
+Inhibit warning messages about the use of
+.BR #import .
+.TP
+.B \-pedantic
+Issue all the warnings demanded by strict ANSI standard C; reject
+all programs that use forbidden extensions.
+.Sp
+Valid ANSI standard C programs should compile properly with or without
+this option (though a rare few will require `\|\c
+.B \-ansi\c
+\&\|'). However,
+without this option, certain GNU extensions and traditional C features
+are supported as well. With this option, they are rejected. There is
+no reason to \c
+.I use\c
+\& this option; it exists only to satisfy pedants.
+.Sp
+`\|\c
+.B \-pedantic\c
+\&\|' does not cause warning messages for use of the
+alternate keywords whose names begin and end with `\|\c
+.B _\|_\c
+\&\|'. Pedantic
+warnings are also disabled in the expression that follows
+.B _\|_extension_\|_\c
+\&. However, only system header files should use
+these escape routes; application programs should avoid them.
+.TP
+.B \-pedantic\-errors
+Like `\|\c
+.B \-pedantic\c
+\&\|', except that errors are produced rather than
+warnings.
+.TP
+.B \-W
+Print extra warning messages for these events:
+.TP
+\ \ \ \(bu
+A nonvolatile automatic variable might be changed by a call to
+.B longjmp\c
+\&. These warnings are possible only in
+optimizing compilation.
+.Sp
+The compiler sees only the calls to \c
+.B setjmp\c
+\&. It cannot know
+where \c
+.B longjmp\c
+\& will be called; in fact, a signal handler could
+call it at any point in the code. As a result, you may get a warning
+even when there is in fact no problem because \c
+.B longjmp\c
+\& cannot
+in fact be called at the place which would cause a problem.
+.TP
+\ \ \ \(bu
+A function can return either with or without a value. (Falling
+off the end of the function body is considered returning without
+a value.) For example, this function would evoke such a
+warning:
+.Sp
+.nf
+foo (a)
+{
+ if (a > 0)
+ return a;
+}
+.Sp
+.fi
+Spurious warnings can occur because GNU CC does not realize that
+certain functions (including \c
+.B abort\c
+\& and \c
+.B longjmp\c
+\&)
+will never return.
+.TP
+\ \ \ \(bu
+An expression-statement or the left-hand side of a comma expression
+contains no side effects.
+To suppress the warning, cast the unused expression to void.
+For example, an expression such as `\|\c
+.B x[i,j]\c
+\&\|' will cause a warning,
+but `\|\c
+.B x[(void)i,j]\c
+\&\|' will not.
+.TP
+\ \ \ \(bu
+An unsigned value is compared against zero with `\|\c
+.B >\c
+\&\|' or `\|\c
+.B <=\c
+\&\|'.
+.PP
+.TP
+.B \-Wimplicit
+Warn whenever a function or parameter is implicitly declared.
+.TP
+.B \-Wmain
+Warn if the
+.B main
+function is declared or defined with a suspicious type.
+Typically, it is a function with external linkage, returning
+.B int\c
+\&, and
+taking zero or two arguments.
+
+.TP
+.B \-Wreturn\-type
+Warn whenever a function is defined with a return-type that defaults
+to \c
+.B int\c
+\&. Also warn about any \c
+.B return\c
+\& statement with no
+return-value in a function whose return-type is not \c
+.B void\c
+\&.
+.TP
+.B \-Wunused
+Warn whenever a local variable is unused aside from its declaration,
+whenever a function is declared static but never defined, and whenever
+a statement computes a result that is explicitly not used.
+.TP
+.B \-Wswitch
+Warn whenever a \c
+.B switch\c
+\& statement has an index of enumeral type
+and lacks a \c
+.B case\c
+\& for one or more of the named codes of that
+enumeration. (The presence of a \c
+.B default\c
+\& label prevents this
+warning.) \c
+.B case\c
+\& labels outside the enumeration range also
+provoke warnings when this option is used.
+.TP
+.B \-Wcomment
+Warn whenever a comment-start sequence `\|\c
+.B /\(**\c
+\&\|' appears in a comment.
+.TP
+.B \-Wtrigraphs
+Warn if any trigraphs are encountered (assuming they are enabled).
+.TP
+.B \-Wformat
+Check calls to \c
+.B printf\c
+\& and \c
+.B scanf\c
+\&, etc., to make sure that
+the arguments supplied have types appropriate to the format string
+specified.
+.TP
+.B \-Wchar\-subscripts
+Warn if an array subscript has type
+.BR char .
+This is a common cause of error, as programmers often forget that this
+type is signed on some machines.
+.TP
+.B \-Wuninitialized
+An automatic variable is used without first being initialized.
+.Sp
+These warnings are possible only in optimizing compilation,
+because they require data flow information that is computed only
+when optimizing. If you don't specify `\|\c
+.B \-O\c
+\&\|', you simply won't
+get these warnings.
+.Sp
+These warnings occur only for variables that are candidates for
+register allocation. Therefore, they do not occur for a variable that
+is declared \c
+.B volatile\c
+\&, or whose address is taken, or whose size
+is other than 1, 2, 4 or 8 bytes. Also, they do not occur for
+structures, unions or arrays, even when they are in registers.
+.Sp
+Note that there may be no warning about a variable that is used only
+to compute a value that itself is never used, because such
+computations may be deleted by data flow analysis before the warnings
+are printed.
+.Sp
+These warnings are made optional because GNU CC is not smart
+enough to see all the reasons why the code might be correct
+despite appearing to have an error. Here is one example of how
+this can happen:
+.Sp
+.nf
+{
+ int x;
+ switch (y)
+ {
+ case 1: x = 1;
+ break;
+ case 2: x = 4;
+ break;
+ case 3: x = 5;
+ }
+ foo (x);
+}
+.Sp
+.fi
+If the value of \c
+.B y\c
+\& is always 1, 2 or 3, then \c
+.B x\c
+\& is
+always initialized, but GNU CC doesn't know this. Here is
+another common case:
+.Sp
+.nf
+{
+ int save_y;
+ if (change_y) save_y = y, y = new_y;
+ .\|.\|.
+ if (change_y) y = save_y;
+}
+.Sp
+.fi
+This has no bug because \c
+.B save_y\c
+\& is used only if it is set.
+.Sp
+Some spurious warnings can be avoided if you declare as
+.B volatile\c
+\& all the functions you use that never return.
+.TP
+.B \-Wparentheses
+Warn if parentheses are omitted in certain contexts.
+.TP
+.B \-Wtemplate\-debugging
+When using templates in a C++ program, warn if debugging is not yet
+fully available (C++ only).
+.TP
+.B \-Wall
+All of the above `\|\c
+.B \-W\c
+\&\|' options combined. These are all the
+options which pertain to usage that we recommend avoiding and that we
+believe is easy to avoid, even in conjunction with macros.
+.PP
+The remaining `\|\c
+.B \-W.\|.\|.\c
+\&\|' options are not implied by `\|\c
+.B \-Wall\c
+\&\|'
+because they warn about constructions that we consider reasonable to
+use, on occasion, in clean programs.
+.TP
+.B \-Wtraditional
+Warn about certain constructs that behave differently in traditional and
+ANSI C.
+.TP
+\ \ \ \(bu
+Macro arguments occurring within string constants in the macro body.
+These would substitute the argument in traditional C, but are part of
+the constant in ANSI C.
+.TP
+\ \ \ \(bu
+A function declared external in one block and then used after the end of
+the block.
+.TP
+\ \ \ \(bu
+A \c
+.B switch\c
+\& statement has an operand of type \c
+.B long\c
+\&.
+.PP
+.TP
+.B \-Wshadow
+Warn whenever a local variable shadows another local variable.
+.TP
+.BI "\-Wid\-clash\-" "len"
+Warn whenever two distinct identifiers match in the first \c
+.I len
+characters. This may help you prepare a program that will compile
+with certain obsolete, brain-damaged compilers.
+.TP
+.B \-Wpointer\-arith
+Warn about anything that depends on the \*(lqsize of\*(rq a function type or
+of \c
+.B void\c
+\&. GNU C assigns these types a size of 1, for
+convenience in calculations with \c
+.B void \(**\c
+\& pointers and pointers
+to functions.
+.TP
+.B \-Wcast\-qual
+Warn whenever a pointer is cast so as to remove a type qualifier from
+the target type. For example, warn if a \c
+.B const char \(**\c
+\& is cast
+to an ordinary \c
+.B char \(**\c
+\&.
+.TP
+.B \-Wcast\-align
+Warn whenever a pointer is cast such that the required alignment of the
+target is increased. For example, warn if a \c
+.B char \(**\c
+\& is cast to
+an \c
+.B int \(**\c
+\& on machines where integers can only be accessed at
+two- or four-byte boundaries.
+.TP
+.B \-Wwrite\-strings
+Give string constants the type \c
+.B const char[\c
+.I length\c
+.B ]\c
+\& so that
+copying the address of one into a non-\c
+.B const\c
+\& \c
+.B char \(**
+pointer will get a warning. These warnings will help you find at
+compile time code that can try to write into a string constant, but
+only if you have been very careful about using \c
+.B const\c
+\& in
+declarations and prototypes. Otherwise, it will just be a nuisance;
+this is why we did not make `\|\c
+.B \-Wall\c
+\&\|' request these warnings.
+.TP
+.B \-Wconversion
+Warn if a prototype causes a type conversion that is different from what
+would happen to the same argument in the absence of a prototype. This
+includes conversions of fixed point to floating and vice versa, and
+conversions changing the width or signedness of a fixed point argument
+except when the same as the default promotion.
+.TP
+.B \-Waggregate\-return
+Warn if any functions that return structures or unions are defined or
+called. (In languages where you can return an array, this also elicits
+a warning.)
+.TP
+.B \-Wstrict\-prototypes
+Warn if a function is declared or defined without specifying the
+argument types. (An old-style function definition is permitted without
+a warning if preceded by a declaration which specifies the argument
+types.)
+.TP
+.B \-Wmissing\-prototypes
+Warn if a global function is defined without a previous prototype
+declaration. This warning is issued even if the definition itself
+provides a prototype. The aim is to detect global functions that fail
+to be declared in header files.
+.TP
+.B \-Wmissing\-declarations
+Warn if a global function is defined without a previous declaration.
+Do so even if the definition itself provides a prototype.
+Use this option to detect global functions that are not declared in
+header files.
+.TP
+.B \-Wredundant-decls
+Warn if anything is declared more than once in the same scope, even in
+cases where multiple declaration is valid and changes nothing.
+.TP
+.B \-Wnested-externs
+Warn if an \c
+.B extern\c
+\& declaration is encountered within an function.
+.TP
+.B \-Wenum\-clash
+Warn about conversion between different enumeration types (C++ only).
+.TP
+.B \-Woverloaded\-virtual
+(C++ only.)
+In a derived class, the definitions of virtual functions must match
+the type signature of a virtual function declared in the base class.
+Use this option to request warnings when a derived class declares a
+function that may be an erroneous attempt to define a virtual
+function: that is, warn when a function with the same name as a
+virtual function in the base class, but with a type signature that
+doesn't match any virtual functions from the base class.
+.TP
+.B \-Winline
+Warn if a function can not be inlined, and either it was declared as inline,
+or else the
+.B \-finline\-functions
+option was given.
+.TP
+.B \-Werror
+Treat warnings as errors; abort compilation after any warning.
+.SH DEBUGGING OPTIONS
+GNU CC has various special options that are used for debugging
+either your program or GCC:
+.TP
+.B \-g
+Produce debugging information in the operating system's native format
+(stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging
+information.
+.Sp
+On most systems that use stabs format, `\|\c
+.B \-g\c
+\&\|' enables use of extra
+debugging information that only GDB can use; this extra information
+makes debugging work better in GDB but will probably make other debuggers
+crash or
+refuse to read the program. If you want to control for certain whether
+to generate the extra information, use `\|\c
+.B \-gstabs+\c
+\&\|', `\|\c
+.B \-gstabs\c
+\&\|',
+`\|\c
+.B \-gxcoff+\c
+\&\|', `\|\c
+.B \-gxcoff\c
+\&\|', `\|\c
+.B \-gdwarf+\c
+\&\|', or `\|\c
+.B \-gdwarf\c
+\&\|'
+(see below).
+.Sp
+Unlike most other C compilers, GNU CC allows you to use `\|\c
+.B \-g\c
+\&\|' with
+`\|\c
+.B \-O\c
+\&\|'. The shortcuts taken by optimized code may occasionally
+produce surprising results: some variables you declared may not exist
+at all; flow of control may briefly move where you did not expect it;
+some statements may not be executed because they compute constant
+results or their values were already at hand; some statements may
+execute in different places because they were moved out of loops.
+.Sp
+Nevertheless it proves possible to debug optimized output. This makes
+it reasonable to use the optimizer for programs that might have bugs.
+.PP
+The following options are useful when GNU CC is generated with the
+capability for more than one debugging format.
+.TP
+.B \-ggdb
+Produce debugging information in the native format (if that is supported),
+including GDB extensions if at all possible.
+.TP
+.B \-gstabs
+Produce debugging information in stabs format (if that is supported),
+without GDB extensions. This is the format used by DBX on most BSD
+systems.
+.TP
+.B \-gstabs+
+Produce debugging information in stabs format (if that is supported),
+using GNU extensions understood only by the GNU debugger (GDB). The
+use of these extensions is likely to make other debuggers crash or
+refuse to read the program.
+.TP
+.B \-gcoff
+Produce debugging information in COFF format (if that is supported).
+This is the format used by SDB on most System V systems prior to
+System V Release 4.
+.TP
+.B \-gxcoff
+Produce debugging information in XCOFF format (if that is supported).
+This is the format used by the DBX debugger on IBM RS/6000 systems.
+.TP
+.B \-gxcoff+
+Produce debugging information in XCOFF format (if that is supported),
+using GNU extensions understood only by the GNU debugger (GDB). The
+use of these extensions is likely to make other debuggers crash or
+refuse to read the program.
+.TP
+.B \-gdwarf
+Produce debugging information in DWARF format (if that is supported).
+This is the format used by SDB on most System V Release 4 systems.
+.TP
+.B \-gdwarf+
+Produce debugging information in DWARF format (if that is supported),
+using GNU extensions understood only by the GNU debugger (GDB). The
+use of these extensions is likely to make other debuggers crash or
+refuse to read the program.
+.PP
+.BI "\-g" "level"
+.br
+.BI "\-ggdb" "level"
+.br
+.BI "\-gstabs" "level"
+.br
+.BI "\-gcoff" "level"
+.BI "\-gxcoff" "level"
+.TP
+.BI "\-gdwarf" "level"
+Request debugging information and also use \c
+.I level\c
+\& to specify how
+much information. The default level is 2.
+.Sp
+Level 1 produces minimal information, enough for making backtraces in
+parts of the program that you don't plan to debug. This includes
+descriptions of functions and external variables, but no information
+about local variables and no line numbers.
+.Sp
+Level 3 includes extra information, such as all the macro definitions
+present in the program. Some debuggers support macro expansion when
+you use `\|\c
+.B \-g3\c
+\&\|'.
+.TP
+.B \-p
+Generate extra code to write profile information suitable for the
+analysis program \c
+.B prof\c
+\&.
+.TP
+.B \-pg
+Generate extra code to write profile information suitable for the
+analysis program \c
+.B gprof\c
+\&.
+.TP
+.B \-a
+Generate extra code to write profile information for basic blocks,
+which will record the number of times each basic block is executed.
+This data could be analyzed by a program like \c
+.B tcov\c
+\&. Note,
+however, that the format of the data is not what \c
+.B tcov\c
+\& expects.
+Eventually GNU \c
+.B gprof\c
+\& should be extended to process this data.
+.TP
+.B \-ax
+Generate extra code to read basic block profiling parameters from
+file `bb.in' and write profiling results to file `bb.out'.
+`bb.in' contains a list of functions. Whenever a function on the list
+is entered, profiling is turned on. When the outmost function is left,
+profiling is turned off. If a function name is prefixed with `-'
+the function is excluded from profiling. If a function name is not
+unique it can be disambiguated by writing
+`/path/filename.d:functionname'. `bb.out' will list some available
+filenames.
+Four function names have a special meaning:
+`__bb_jumps__' will cause jump frequencies to be written to `bb.out'.
+`__bb_trace__' will cause the sequence of basic blocks to be piped
+into `gzip' and written to file `bbtrace.gz'.
+`__bb_hidecall__' will cause call instructions to be excluded from
+the trace.
+`__bb_showret__' will cause return instructions to be included in
+the trace.
+.TP
+.BI "\-d" "letters"
+Says to make debugging dumps during compilation at times specified by
+.I letters\c
+\&. This is used for debugging the compiler. The file names
+for most of the dumps are made by appending a word to the source file
+name (e.g. `\|\c
+.B foo.c.rtl\c
+\&\|' or `\|\c
+.B foo.c.jump\c
+\&\|').
+.TP
+.B \-dM
+Dump all macro definitions, at the end of preprocessing, and write no
+output.
+.TP
+.B \-dN
+Dump all macro names, at the end of preprocessing.
+.TP
+.B \-dD
+Dump all macro definitions, at the end of preprocessing, in addition to
+normal output.
+.TP
+.B \-dy
+Dump debugging information during parsing, to standard error.
+.TP
+.B \-dr
+Dump after RTL generation, to `\|\c
+.I file\c
+.B \&.rtl\c
+\&\|'.
+.TP
+.B \-dx
+Just generate RTL for a function instead of compiling it. Usually used
+with `\|\c
+.B r\c
+\&\|'.
+.TP
+.B \-dj
+Dump after first jump optimization, to `\|\c
+.I file\c
+.B \&.jump\c
+\&\|'.
+.TP
+.B \-ds
+Dump after CSE (including the jump optimization that sometimes
+follows CSE), to `\|\c
+.I file\c
+.B \&.cse\c
+\&\|'.
+.TP
+.B \-dL
+Dump after loop optimization, to `\|\c
+.I file\c
+.B \&.loop\c
+\&\|'.
+.TP
+.B \-dt
+Dump after the second CSE pass (including the jump optimization that
+sometimes follows CSE), to `\|\c
+.I file\c
+.B \&.cse2\c
+\&\|'.
+.TP
+.B \-df
+Dump after flow analysis, to `\|\c
+.I file\c
+.B \&.flow\c
+\&\|'.
+.TP
+.B \-dc
+Dump after instruction combination, to `\|\c
+.I file\c
+.B \&.combine\c
+\&\|'.
+.TP
+.B \-dS
+Dump after the first instruction scheduling pass, to
+`\|\c
+.I file\c
+.B \&.sched\c
+\&\|'.
+.TP
+.B \-dl
+Dump after local register allocation, to `\|\c
+.I file\c
+.B \&.lreg\c
+\&\|'.
+.TP
+.B \-dg
+Dump after global register allocation, to `\|\c
+.I file\c
+.B \&.greg\c
+\&\|'.
+.TP
+.B \-dR
+Dump after the second instruction scheduling pass, to
+`\|\c
+.I file\c
+.B \&.sched2\c
+\&\|'.
+.TP
+.B \-dJ
+Dump after last jump optimization, to `\|\c
+.I file\c
+.B \&.jump2\c
+\&\|'.
+.TP
+.B \-dd
+Dump after delayed branch scheduling, to `\|\c
+.I file\c
+.B \&.dbr\c
+\&\|'.
+.TP
+.B \-dk
+Dump after conversion from registers to stack, to `\|\c
+.I file\c
+.B \&.stack\c
+\&\|'.
+.TP
+.B \-da
+Produce all the dumps listed above.
+.TP
+.B \-dm
+Print statistics on memory usage, at the end of the run, to
+standard error.
+.TP
+.B \-dp
+Annotate the assembler output with a comment indicating which
+pattern and alternative was used.
+.TP
+.B \-fpretend\-float
+When running a cross-compiler, pretend that the target machine uses the
+same floating point format as the host machine. This causes incorrect
+output of the actual floating constants, but the actual instruction
+sequence will probably be the same as GNU CC would make when running on
+the target machine.
+.TP
+.B \-save\-temps
+Store the usual \*(lqtemporary\*(rq intermediate files permanently; place them
+in the current directory and name them based on the source file. Thus,
+compiling `\|\c
+.B foo.c\c
+\&\|' with `\|\c
+.B \-c \-save\-temps\c
+\&\|' would produce files
+`\|\c
+.B foo.cpp\c
+\&\|' and `\|\c
+.B foo.s\c
+\&\|', as well as `\|\c
+.B foo.o\c
+\&\|'.
+.TP
+.BI "\-print\-file\-name=" "library"
+Print the full absolute name of the library file \|\c
+.nh
+.I library
+.hy
+\&\| that
+would be used when linking\(em\&and do not do anything else. With this
+option, GNU CC does not compile or link anything; it just prints the
+file name.
+.TP
+.B \-print\-libgcc\-file\-name
+Same as `\|\c
+.B \-print\-file\-name=libgcc.a\c
+\&\|'.
+.TP
+.BI "\-print\-prog\-name=" "program"
+Like `\|\c
+.B \-print\-file\-name\c
+\&\|', but searches for a program such as `\|\c
+cpp\c
+\&\|'.
+.SH OPTIMIZATION OPTIONS
+These options control various sorts of optimizations:
+.TP
+.B \-O
+.TP
+.B \-O1
+Optimize. Optimizing compilation takes somewhat more time, and a lot
+more memory for a large function.
+.Sp
+Without `\|\c
+.B \-O\c
+\&\|', the compiler's goal is to reduce the cost of
+compilation and to make debugging produce the expected results.
+Statements are independent: if you stop the program with a breakpoint
+between statements, you can then assign a new value to any variable or
+change the program counter to any other statement in the function and
+get exactly the results you would expect from the source code.
+.Sp
+Without `\|\c
+.B \-O\c
+\&\|', only variables declared \c
+.B register\c
+\& are
+allocated in registers. The resulting compiled code is a little worse
+than produced by PCC without `\|\c
+.B \-O\c
+\&\|'.
+.Sp
+With `\|\c
+.B \-O\c
+\&\|', the compiler tries to reduce code size and execution
+time.
+.Sp
+When you specify `\|\c
+.B \-O\c
+\&\|', the two options `\|\c
+.B \-fthread\-jumps\c
+\&\|' and `\|\c
+.B \-fdefer\-pop\c
+\&\|' are turned on. On machines that have delay slots, the `\|\c
+.B \-fdelayed\-branch\c
+\&\|' option is turned on. For those machines that can support debugging even
+without a frame pointer, the `\|\c
+.B \-fomit\-frame\-pointer\c
+\&\|' option is turned on. On some machines other flags may also be turned on.
+.TP
+.B \-O2
+Optimize even more. Nearly all supported optimizations that do not
+involve a space-speed tradeoff are performed. Loop unrolling and function
+inlining are not done, for example. As compared to
+.B \-O\c
+\&,
+this option increases both compilation time and the performance of the
+generated code.
+.TP
+.B \-O3
+Optimize yet more. This turns on everything
+.B \-O2
+does, along with also turning on
+.B \-finline\-functions.
+.TP
+.B \-O0
+Do not optimize.
+.Sp
+If you use multiple
+.B \-O
+options, with or without level numbers, the last such option is the
+one that is effective.
+.PP
+Options of the form `\|\c
+.B \-f\c
+.I flag\c
+\&\c
+\&\|' specify machine-independent
+flags. Most flags have both positive and negative forms; the negative
+form of `\|\c
+.B \-ffoo\c
+\&\|' would be `\|\c
+.B \-fno\-foo\c
+\&\|'. The following list shows
+only one form\(em\&the one which is not the default.
+You can figure out the other form by either removing `\|\c
+.B no\-\c
+\&\|' or
+adding it.
+.TP
+.B \-ffloat\-store
+Do not store floating point variables in registers. This
+prevents undesirable excess precision on machines such as the
+68000 where the floating registers (of the 68881) keep more
+precision than a \c
+.B double\c
+\& is supposed to have.
+.Sp
+For most programs, the excess precision does only good, but a few
+programs rely on the precise definition of IEEE floating point.
+Use `\|\c
+.B \-ffloat\-store\c
+\&\|' for such programs.
+.TP
+.B \-fmemoize\-lookups
+.TP
+.B \-fsave\-memoized
+Use heuristics to compile faster (C++ only). These heuristics are not
+enabled by default, since they are only effective for certain input
+files. Other input files compile more slowly.
+.Sp
+The first time the compiler must build a call to a member function (or
+reference to a data member), it must (1) determine whether the class
+implements member functions of that name; (2) resolve which member
+function to call (which involves figuring out what sorts of type
+conversions need to be made); and (3) check the visibility of the member
+function to the caller. All of this adds up to slower compilation.
+Normally, the second time a call is made to that member function (or
+reference to that data member), it must go through the same lengthy
+process again. This means that code like this
+.Sp
+\& cout << "This " << p << " has " << n << " legs.\en";
+.Sp
+makes six passes through all three steps. By using a software cache,
+a \*(lqhit\*(rq significantly reduces this cost. Unfortunately, using the
+cache introduces another layer of mechanisms which must be implemented,
+and so incurs its own overhead. `\|\c
+.B \-fmemoize\-lookups\c
+\&\|' enables
+the software cache.
+.Sp
+Because access privileges (visibility) to members and member functions
+may differ from one function context to the next,
+.B g++
+may need to flush the cache. With the `\|\c
+.B \-fmemoize\-lookups\c
+\&\|' flag, the cache is flushed after every
+function that is compiled. The `\|\c
+\-fsave\-memoized\c
+\&\|' flag enables the same software cache, but when the compiler
+determines that the context of the last function compiled would yield
+the same access privileges of the next function to compile, it
+preserves the cache.
+This is most helpful when defining many member functions for the same
+class: with the exception of member functions which are friends of
+other classes, each member function has exactly the same access
+privileges as every other, and the cache need not be flushed.
+.TP
+.B \-fno\-default\-inline
+Don't make member functions inline by default merely because they are
+defined inside the class scope (C++ only).
+.TP
+.B \-fno\-defer\-pop
+Always pop the arguments to each function call as soon as that
+function returns. For machines which must pop arguments after a
+function call, the compiler normally lets arguments accumulate on the
+stack for several function calls and pops them all at once.
+.TP
+.B \-fforce\-mem
+Force memory operands to be copied into registers before doing
+arithmetic on them. This may produce better code by making all
+memory references potential common subexpressions. When they are
+not common subexpressions, instruction combination should
+eliminate the separate register-load. I am interested in hearing
+about the difference this makes.
+.TP
+.B \-fforce\-addr
+Force memory address constants to be copied into registers before
+doing arithmetic on them. This may produce better code just as
+`\|\c
+.B \-fforce\-mem\c
+\&\|' may. I am interested in hearing about the
+difference this makes.
+.TP
+.B \-fomit\-frame\-pointer
+Don't keep the frame pointer in a register for functions that
+don't need one. This avoids the instructions to save, set up and
+restore frame pointers; it also makes an extra register available
+in many functions. \c
+.I It also makes debugging impossible on most machines\c
+\&.
+.Sp
+On some machines, such as the Vax, this flag has no effect, because
+the standard calling sequence automatically handles the frame pointer
+and nothing is saved by pretending it doesn't exist. The
+machine-description macro \c
+.B FRAME_POINTER_REQUIRED\c
+\& controls
+whether a target machine supports this flag.
+.TP
+.B \-finline\-functions
+Integrate all simple functions into their callers. The compiler
+heuristically decides which functions are simple enough to be worth
+integrating in this way.
+.Sp
+If all calls to a given function are integrated, and the function is
+declared \c
+.B static\c
+\&, then GCC normally does not output the function as
+assembler code in its own right.
+.TP
+.B \-fcaller\-saves
+Enable values to be allocated in registers that will be clobbered by
+function calls, by emitting extra instructions to save and restore the
+registers around such calls. Such allocation is done only when it
+seems to result in better code than would otherwise be produced.
+.Sp
+This option is enabled by default on certain machines, usually those
+which have no call-preserved registers to use instead.
+.TP
+.B \-fkeep\-inline\-functions
+Even if all calls to a given function are integrated, and the function
+is declared \c
+.B static\c
+\&, nevertheless output a separate run-time
+callable version of the function.
+.TP
+.B \-fno\-function\-cse
+Do not put function addresses in registers; make each instruction that
+calls a constant function contain the function's address explicitly.
+.Sp
+This option results in less efficient code, but some strange hacks
+that alter the assembler output may be confused by the optimizations
+performed when this option is not used.
+.TP
+.B \-fno\-peephole
+Disable any machine-specific peephole optimizations.
+.TP
+.B \-ffast-math
+This option allows GCC to violate some ANSI or IEEE rules/specifications
+in the interest of optimizing code for speed. For example, it allows
+the compiler to assume arguments to the \c
+.B sqrt\c
+\& function are
+non-negative numbers.
+.Sp
+This option should never be turned on by any `\|\c
+.B \-O\c
+\&\|' option since
+it can result in incorrect output for programs which depend on
+an exact implementation of IEEE or ANSI rules/specifications for
+math functions.
+.PP
+The following options control specific optimizations. The `\|\c
+.B \-O2\c
+\&\|'
+option turns on all of these optimizations except `\|\c
+.B \-funroll\-loops\c
+\&\|'
+and `\|\c
+.B \-funroll\-all\-loops\c
+\&\|'.
+.PP
+The `\|\c
+.B \-O\c
+\&\|' option usually turns on
+the `\|\c
+.B \-fthread\-jumps\c
+\&\|' and `\|\c
+.B \-fdelayed\-branch\c
+\&\|' options, but
+specific machines may change the default optimizations.
+.PP
+You can use the following flags in the rare cases when \*(lqfine-tuning\*(rq
+of optimizations to be performed is desired.
+.TP
+.B \-fstrength\-reduce
+Perform the optimizations of loop strength reduction and
+elimination of iteration variables.
+.TP
+.B \-fthread\-jumps
+Perform optimizations where we check to see if a jump branches to a
+location where another comparison subsumed by the first is found. If
+so, the first branch is redirected to either the destination of the
+second branch or a point immediately following it, depending on whether
+the condition is known to be true or false.
+.TP
+.B \-funroll\-loops
+Perform the optimization of loop unrolling. This is only done for loops
+whose number of iterations can be determined at compile time or run time.
+.TP
+.B \-funroll\-all\-loops
+Perform the optimization of loop unrolling. This is done for all loops.
+This usually makes programs run more slowly.
+.TP
+.B \-fcse\-follow\-jumps
+In common subexpression elimination, scan through jump instructions
+when the target of the jump is not reached by any other path. For
+example, when CSE encounters an \c
+.B if\c
+\& statement with an
+.B else\c
+\& clause, CSE will follow the jump when the condition
+tested is false.
+.TP
+.B \-fcse\-skip\-blocks
+This is similar to `\|\c
+.B \-fcse\-follow\-jumps\c
+\&\|', but causes CSE to
+follow jumps which conditionally skip over blocks. When CSE
+encounters a simple \c
+.B if\c
+\& statement with no else clause,
+`\|\c
+.B \-fcse\-skip\-blocks\c
+\&\|' causes CSE to follow the jump around the
+body of the \c
+.B if\c
+\&.
+.TP
+.B \-frerun\-cse\-after\-loop
+Re-run common subexpression elimination after loop optimizations has been
+performed.
+.TP
+.B \-felide\-constructors
+Elide constructors when this seems plausible (C++ only). With this
+flag, GNU C++ initializes \c
+.B y\c
+\& directly from the call to \c
+.B foo
+without going through a temporary in the following code:
+.Sp
+A foo ();
+A y = foo ();
+.Sp
+Without this option, GNU C++ first initializes \c
+.B y\c
+\& by calling the
+appropriate constructor for type \c
+.B A\c
+\&; then assigns the result of
+.B foo\c
+\& to a temporary; and, finally, replaces the initial value of
+`\|\c
+.B y\c
+\&\|' with the temporary.
+.Sp
+The default behavior (`\|\c
+.B \-fno\-elide\-constructors\c
+\&\|') is specified by
+the draft ANSI C++ standard. If your program's constructors have side
+effects, using `\|\c
+.B \-felide-constructors\c
+\&\|' can make your program act
+differently, since some constructor calls may be omitted.
+.TP
+.B \-fexpensive\-optimizations
+Perform a number of minor optimizations that are relatively expensive.
+.TP
+.B \-fdelayed\-branch
+If supported for the target machine, attempt to reorder instructions
+to exploit instruction slots available after delayed branch
+instructions.
+.TP
+.B \-fschedule\-insns
+If supported for the target machine, attempt to reorder instructions to
+eliminate execution stalls due to required data being unavailable. This
+helps machines that have slow floating point or memory load instructions
+by allowing other instructions to be issued until the result of the load
+or floating point instruction is required.
+.TP
+.B \-fschedule\-insns2
+Similar to `\|\c
+.B \-fschedule\-insns\c
+\&\|', but requests an additional pass of
+instruction scheduling after register allocation has been done. This is
+especially useful on machines with a relatively small number of
+registers and where memory load instructions take more than one cycle.
+.SH TARGET OPTIONS
+By default, GNU CC compiles code for the same type of machine that you
+are using. However, it can also be installed as a cross-compiler, to
+compile for some other type of machine. In fact, several different
+configurations of GNU CC, for different target machines, can be
+installed side by side. Then you specify which one to use with the
+`\|\c
+.B \-b\c
+\&\|' option.
+.PP
+In addition, older and newer versions of GNU CC can be installed side
+by side. One of them (probably the newest) will be the default, but
+you may sometimes wish to use another.
+.TP
+.BI "\-b " "machine"
+The argument \c
+.I machine\c
+\& specifies the target machine for compilation.
+This is useful when you have installed GNU CC as a cross-compiler.
+.Sp
+The value to use for \c
+.I machine\c
+\& is the same as was specified as the
+machine type when configuring GNU CC as a cross-compiler. For
+example, if a cross-compiler was configured with `\|\c
+.B configure
+i386v\c
+\&\|', meaning to compile for an 80386 running System V, then you
+would specify `\|\c
+.B \-b i386v\c
+\&\|' to run that cross compiler.
+.Sp
+When you do not specify `\|\c
+.B \-b\c
+\&\|', it normally means to compile for
+the same type of machine that you are using.
+.TP
+.BI "\-V " "version"
+The argument \c
+.I version\c
+\& specifies which version of GNU CC to run.
+This is useful when multiple versions are installed. For example,
+.I version\c
+\& might be `\|\c
+.B 2.0\c
+\&\|', meaning to run GNU CC version 2.0.
+.Sp
+The default version, when you do not specify `\|\c
+.B \-V\c
+\&\|', is controlled
+by the way GNU CC is installed. Normally, it will be a version that
+is recommended for general use.
+.SH MACHINE DEPENDENT OPTIONS
+Each of the target machine types can have its own special options,
+starting with `\|\c
+.B \-m\c
+\&\|', to choose among various hardware models or
+configurations\(em\&for example, 68010 vs 68020, floating coprocessor or
+none. A single installed version of the compiler can compile for any
+model or configuration, according to the options specified.
+.PP
+Some configurations of the compiler also support additional special
+options, usually for command-line compatibility with other compilers on
+the same platform.
+.PP
+These are the `\|\c
+.B \-m\c
+\&\|' options defined for the 68000 series:
+.TP
+.B \-m68000
+.TP
+.B \-mc68000
+Generate output for a 68000. This is the default when the compiler is
+configured for 68000-based systems.
+.TP
+.B \-m68020
+.TP
+.B \-mc68020
+Generate output for a 68020 (rather than a 68000). This is the
+default when the compiler is configured for 68020-based systems.
+.TP
+.B \-m68881
+Generate output containing 68881 instructions for floating point.
+This is the default for most 68020-based systems unless
+.B \-nfp
+was specified when the compiler was configured.
+.TP
+.B \-m68030
+Generate output for a 68030. This is the default when the compiler is
+configured for 68030-based systems.
+.TP
+.B \-m68040
+Generate output for a 68040. This is the default when the compiler is
+configured for 68040-based systems.
+.TP
+.B \-m68020\-40
+Generate output for a 68040, without using any of the new instructions.
+This results in code which can run relatively efficiently on either a
+68020/68881 or a 68030 or a 68040.
+.TP
+.B \-mfpa
+Generate output containing Sun FPA instructions for floating point.
+.TP
+.B \-msoft\-float
+Generate output containing library calls for floating point.
+.I
+WARNING:
+the requisite libraries are not part of GNU CC. Normally the
+facilities of the machine's usual C compiler are used, but this can't
+be done directly in cross-compilation. You must make your own
+arrangements to provide suitable library functions for cross-compilation.
+.TP
+.B \-mshort
+Consider type \c
+.B int\c
+\& to be 16 bits wide, like \c
+.B short int\c
+\&.
+.TP
+.B \-mnobitfield
+Do not use the bit-field instructions. `\|\c
+.B \-m68000\c
+\&\|' implies
+`\|\c
+.B \-mnobitfield\c
+\&\|'.
+.TP
+.B \-mbitfield
+Do use the bit-field instructions. `\|\c
+.B \-m68020\c
+\&\|' implies
+`\|\c
+.B \-mbitfield\c
+\&\|'. This is the default if you use the unmodified
+sources.
+.TP
+.B \-mrtd
+Use a different function-calling convention, in which functions
+that take a fixed number of arguments return with the \c
+.B rtd
+instruction, which pops their arguments while returning. This
+saves one instruction in the caller since there is no need to pop
+the arguments there.
+.Sp
+This calling convention is incompatible with the one normally
+used on Unix, so you cannot use it if you need to call libraries
+compiled with the Unix compiler.
+.Sp
+Also, you must provide function prototypes for all functions that
+take variable numbers of arguments (including \c
+.B printf\c
+\&);
+otherwise incorrect code will be generated for calls to those
+functions.
+.Sp
+In addition, seriously incorrect code will result if you call a
+function with too many arguments. (Normally, extra arguments are
+harmlessly ignored.)
+.Sp
+The \c
+.B rtd\c
+\& instruction is supported by the 68010 and 68020
+processors, but not by the 68000.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the Vax:
+.TP
+.B \-munix
+Do not output certain jump instructions (\c
+.B aobleq\c
+\& and so on)
+that the Unix assembler for the Vax cannot handle across long
+ranges.
+.TP
+.B \-mgnu
+Do output those jump instructions, on the assumption that you
+will assemble with the GNU assembler.
+.TP
+.B \-mg
+Output code for g-format floating point numbers instead of d-format.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' switches are supported on the SPARC:
+.PP
+.B \-mfpu
+.TP
+.B \-mhard\-float
+Generate output containing floating point instructions. This is the
+default.
+.PP
+.B \-mno\-fpu
+.TP
+.B \-msoft\-float
+Generate output containing library calls for floating point.
+.I Warning:
+there is no GNU floating-point library for SPARC.
+Normally the facilities of the machine's usual C compiler are used, but
+this cannot be done directly in cross-compilation. You must make your
+own arrangements to provide suitable library functions for
+cross-compilation.
+.Sp
+.B \-msoft\-float
+changes the calling convention in the output file;
+therefore, it is only useful if you compile
+.I all
+of a program with this option.
+.PP
+.B \-mno\-epilogue
+.TP
+.B \-mepilogue
+With
+.B \-mepilogue
+(the default), the compiler always emits code for
+function exit at the end of each function. Any function exit in
+the middle of the function (such as a return statement in C) will
+generate a jump to the exit code at the end of the function.
+.Sp
+With
+.BR \-mno\-epilogue ,
+the compiler tries to emit exit code inline at every function exit.
+.PP
+.B \-mno\-v8
+.TP
+.B \-mv8
+.TP
+.B \-msparclite
+These three options select variations on the SPARC architecture.
+.Sp
+By default (unless specifically configured for the Fujitsu SPARClite),
+GCC generates code for the v7 variant of the SPARC architecture.
+.Sp
+.B \-mv8
+will give you SPARC v8 code. The only difference from v7
+code is that the compiler emits the integer multiply and integer
+divide instructions which exist in SPARC v8 but not in SPARC v7.
+.Sp
+.B \-msparclite
+will give you SPARClite code. This adds the integer
+multiply, integer divide step and scan (ffs) instructions which
+exist in SPARClite but not in SPARC v7.
+.PP
+.B \-mcypress
+.TP
+.B \-msupersparc
+These two options select the processor for which the code is optimised.
+.Sp
+With
+.B \-mcypress
+(the default), the compiler optimises code for the Cypress CY7C602 chip, as
+used in the SparcStation/SparcServer 3xx series. This is also appropriate for
+the older SparcStation 1, 2, IPX etc.
+.Sp
+With
+.B \-msupersparc
+the compiler optimises code for the SuperSparc cpu, as used in the SparcStation
+10, 1000 and 2000 series. This flag also enables use of the full SPARC v8
+instruction set.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the Convex:
+.TP
+.B \-mc1
+Generate output for a C1. This is the default when the compiler is
+configured for a C1.
+.TP
+.B \-mc2
+Generate output for a C2. This is the default when the compiler is
+configured for a C2.
+.TP
+.B \-margcount
+Generate code which puts an argument count in the word preceding each
+argument list. Some nonportable Convex and Vax programs need this word.
+(Debuggers don't, except for functions with variable-length argument
+lists; this info is in the symbol table.)
+.TP
+.B \-mnoargcount
+Omit the argument count word. This is the default if you use the
+unmodified sources.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the AMD Am29000:
+.TP
+.B \-mdw
+Generate code that assumes the DW bit is set, i.e., that byte and
+halfword operations are directly supported by the hardware. This is the
+default.
+.TP
+.B \-mnodw
+Generate code that assumes the DW bit is not set.
+.TP
+.B \-mbw
+Generate code that assumes the system supports byte and halfword write
+operations. This is the default.
+.TP
+.B \-mnbw
+Generate code that assumes the systems does not support byte and
+halfword write operations. This implies `\|\c
+.B \-mnodw\c
+\&\|'.
+.TP
+.B \-msmall
+Use a small memory model that assumes that all function addresses are
+either within a single 256 KB segment or at an absolute address of less
+than 256K. This allows the \c
+.B call\c
+\& instruction to be used instead
+of a \c
+.B const\c
+\&, \c
+.B consth\c
+\&, \c
+.B calli\c
+\& sequence.
+.TP
+.B \-mlarge
+Do not assume that the \c
+.B call\c
+\& instruction can be used; this is the
+default.
+.TP
+.B \-m29050
+Generate code for the Am29050.
+.TP
+.B \-m29000
+Generate code for the Am29000. This is the default.
+.TP
+.B \-mkernel\-registers
+Generate references to registers \c
+.B gr64-gr95\c
+\& instead of
+.B gr96-gr127\c
+\&. This option can be used when compiling kernel code
+that wants a set of global registers disjoint from that used by
+user-mode code.
+.Sp
+Note that when this option is used, register names in `\|\c
+.B \-f\c
+\&\|' flags
+must use the normal, user-mode, names.
+.TP
+.B \-muser\-registers
+Use the normal set of global registers, \c
+.B gr96-gr127\c
+\&. This is the
+default.
+.TP
+.B \-mstack\-check
+Insert a call to \c
+.B _\|_msp_check\c
+\& after each stack adjustment. This
+is often used for kernel code.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for Motorola 88K architectures:
+.TP
+.B \-m88000
+Generate code that works well on both the m88100 and the
+m88110.
+.TP
+.B \-m88100
+Generate code that works best for the m88100, but that also
+runs on the m88110.
+.TP
+.B \-m88110
+Generate code that works best for the m88110, and may not run
+on the m88100.
+.TP
+.B \-midentify\-revision
+Include an \c
+.B ident\c
+\& directive in the assembler output recording the
+source file name, compiler name and version, timestamp, and compilation
+flags used.
+.TP
+.B \-mno\-underscores
+In assembler output, emit symbol names without adding an underscore
+character at the beginning of each name. The default is to use an
+underscore as prefix on each name.
+.TP
+.B \-mno\-check\-zero\-division
+.TP
+.B \-mcheck\-zero\-division
+Early models of the 88K architecture had problems with division by zero;
+in particular, many of them didn't trap. Use these options to avoid
+including (or to include explicitly) additional code to detect division
+by zero and signal an exception. All GCC configurations for the 88K use
+`\|\c
+.B \-mcheck\-zero\-division\c
+\&\|' by default.
+.TP
+.B \-mocs\-debug\-info
+.TP
+.B \-mno\-ocs\-debug\-info
+Include (or omit) additional debugging information (about
+registers used in each stack frame) as specified in the 88Open Object
+Compatibility Standard, \*(lqOCS\*(rq. This extra information is not needed
+by GDB. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is to
+include this information; other 88k configurations omit this information
+by default.
+.TP
+.B \-mocs\-frame\-position
+.TP
+.B \-mno\-ocs\-frame\-position
+Force (or do not require) register values to be stored in a particular
+place in stack frames, as specified in OCS. The DG/UX, Delta88 SVr3.2,
+and BCS configurations use `\|\c
+.B \-mocs\-frame\-position\c
+\&\|'; other 88k
+configurations have the default `\|\c
+.B \-mno\-ocs\-frame\-position\c
+\&\|'.
+.TP
+.B \-moptimize\-arg\-area
+.TP
+.B \-mno\-optimize\-arg\-area
+Control how to store function arguments in stack frames.
+`\|\c
+.B \-moptimize\-arg\-area\c
+\&\|' saves space, but may break some
+debuggers (not GDB). `\|\c
+.B \-mno\-optimize\-arg\-area\c
+\&\|' conforms better to
+standards. By default GCC does not optimize the argument area.
+.TP
+.BI "\-mshort\-data\-" "num"
+.I num
+Generate smaller data references by making them relative to \c
+.B r0\c
+\&,
+which allows loading a value using a single instruction (rather than the
+usual two). You control which data references are affected by
+specifying \c
+.I num\c
+\& with this option. For example, if you specify
+`\|\c
+.B \-mshort\-data\-512\c
+\&\|', then the data references affected are those
+involving displacements of less than 512 bytes.
+`\|\c
+.B \-mshort\-data\-\c
+.I num\c
+\&\c
+\&\|' is not effective for \c
+.I num\c
+\& greater
+than 64K.
+.PP
+.B \-mserialize-volatile
+.TP
+.B \-mno-serialize-volatile
+Do, or do not, generate code to guarantee sequential consistency of
+volatile memory references.
+.Sp
+GNU CC always guarantees consistency by default, for the preferred
+processor submodel. How this is done depends on the submodel.
+.Sp
+The m88100 processor does not reorder memory references and so always
+provides sequential consistency. If you use `\|\c
+.B \-m88100\c
+\&\|', GNU CC does
+not generate any special instructions for sequential consistency.
+.Sp
+The order of memory references made by the m88110 processor does not
+always match the order of the instructions requesting those references.
+In particular, a load instruction may execute before a preceding store
+instruction. Such reordering violates sequential consistency of
+volatile memory references, when there are multiple processors. When
+you use `\|\c
+.B \-m88000\c
+\&\|' or `\|\c
+.B \-m88110\c
+\&\|', GNU CC generates special
+instructions when appropriate, to force execution in the proper order.
+.Sp
+The extra code generated to guarantee consistency may affect the
+performance of your application. If you know that you can safely forgo
+this guarantee, you may use the option `\|\c
+.B \-mno-serialize-volatile\c
+\&\|'.
+.Sp
+If you use the `\|\c
+.B \-m88100\c
+\&\|' option but require sequential consistency
+when running on the m88110 processor, you should use
+`\|\c
+.B \-mserialize-volatile\c
+\&\|'.
+.PP
+.B \-msvr4
+.TP
+.B \-msvr3
+Turn on (`\|\c
+.B \-msvr4\c
+\&\|') or off (`\|\c
+.B \-msvr3\c
+\&\|') compiler extensions
+related to System V release 4 (SVr4). This controls the following:
+.TP
+\ \ \ \(bu
+Which variant of the assembler syntax to emit (which you can select
+independently using `\|\c
+.B \-mversion\-03.00\c
+\&\|').
+.TP
+\ \ \ \(bu
+`\|\c
+.B \-msvr4\c
+\&\|' makes the C preprocessor recognize `\|\c
+.B #pragma weak\c
+\&\|'
+.TP
+\ \ \ \(bu
+`\|\c
+.B \-msvr4\c
+\&\|' makes GCC issue additional declaration directives used in
+SVr4.
+.PP
+`\|\c
+.B \-msvr3\c
+\&\|' is the default for all m88K configurations except
+the SVr4 configuration.
+.TP
+.B \-mtrap\-large\-shift
+.TP
+.B \-mhandle\-large\-shift
+Include code to detect bit-shifts of more than 31 bits; respectively,
+trap such shifts or emit code to handle them properly. By default GCC
+makes no special provision for large bit shifts.
+.TP
+.B \-muse\-div\-instruction
+Very early models of the 88K architecture didn't have a divide
+instruction, so GCC avoids that instruction by default. Use this option
+to specify that it's safe to use the divide instruction.
+.TP
+.B \-mversion\-03.00
+In the DG/UX configuration, there are two flavors of SVr4. This option
+modifies
+.B \-msvr4
+to select whether the hybrid-COFF or real-ELF
+flavor is used. All other configurations ignore this option.
+.TP
+.B \-mwarn\-passed\-structs
+Warn when a function passes a struct as an argument or result.
+Structure-passing conventions have changed during the evolution of the C
+language, and are often the source of portability problems. By default,
+GCC issues no such warning.
+.PP
+These options are defined for the IBM RS6000:
+.PP
+.B \-mfp\-in\-toc
+.TP
+.B \-mno\-fp\-in\-toc
+Control whether or not floating-point constants go in the Table of
+Contents (TOC), a table of all global variable and function addresses. By
+default GCC puts floating-point constants there; if the TOC overflows,
+`\|\c
+.B \-mno\-fp\-in\-toc\c
+\&\|' will reduce the size of the TOC, which may avoid
+the overflow.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the IBM RT PC:
+.TP
+.B \-min\-line\-mul
+Use an in-line code sequence for integer multiplies. This is the
+default.
+.TP
+.B \-mcall\-lib\-mul
+Call \c
+.B lmul$$\c
+\& for integer multiples.
+.TP
+.B \-mfull\-fp\-blocks
+Generate full-size floating point data blocks, including the minimum
+amount of scratch space recommended by IBM. This is the default.
+.TP
+.B \-mminimum\-fp\-blocks
+Do not include extra scratch space in floating point data blocks. This
+results in smaller code, but slower execution, since scratch space must
+be allocated dynamically.
+.TP
+.B \-mfp\-arg\-in\-fpregs
+Use a calling sequence incompatible with the IBM calling convention in
+which floating point arguments are passed in floating point registers.
+Note that \c
+.B varargs.h\c
+\& and \c
+.B stdargs.h\c
+\& will not work with
+floating point operands if this option is specified.
+.TP
+.B \-mfp\-arg\-in\-gregs
+Use the normal calling convention for floating point arguments. This is
+the default.
+.TP
+.B \-mhc\-struct\-return
+Return structures of more than one word in memory, rather than in a
+register. This provides compatibility with the MetaWare HighC (hc)
+compiler. Use `\|\c
+.B \-fpcc\-struct\-return\c
+\&\|' for compatibility with the
+Portable C Compiler (pcc).
+.TP
+.B \-mnohc\-struct\-return
+Return some structures of more than one word in registers, when
+convenient. This is the default. For compatibility with the
+IBM-supplied compilers, use either `\|\c
+.B \-fpcc\-struct\-return\c
+\&\|' or
+`\|\c
+.B \-mhc\-struct\-return\c
+\&\|'.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the MIPS family of computers:
+.TP
+.BI "\-mcpu=" "cpu-type"
+Assume the defaults for the machine type
+.I cpu-type
+when
+scheduling instructions. The default
+.I cpu-type
+is
+.BR default ,
+which picks the longest cycles times for any of the machines, in order
+that the code run at reasonable rates on all MIPS cpu's. Other
+choices for
+.I cpu-type
+are
+.BR r2000 ,
+.BR r3000 ,
+.BR r4000 ,
+and
+.BR r6000 .
+While picking a specific
+.I cpu-type
+will schedule things appropriately for that particular chip, the
+compiler will not generate any code that does not meet level 1 of the
+MIPS ISA (instruction set architecture) without the
+.B \-mips2
+or
+.B \-mips3
+switches being used.
+.TP
+.B \-mips2
+Issue instructions from level 2 of the MIPS ISA (branch likely, square
+root instructions). The
+.B \-mcpu=r4000
+or
+.B \-mcpu=r6000
+switch must be used in conjunction with
+.BR \-mips2 .
+.TP
+.B \-mips3
+Issue instructions from level 3 of the MIPS ISA (64 bit instructions).
+The
+.B \-mcpu=r4000
+switch must be used in conjunction with
+.BR \-mips2 .
+.TP
+.B \-mint64
+.TP
+.B \-mlong64
+.TP
+.B \-mlonglong128
+These options don't work at present.
+.TP
+.B \-mmips\-as
+Generate code for the MIPS assembler, and invoke
+.B mips\-tfile
+to add normal debug information. This is the default for all
+platforms except for the OSF/1 reference platform, using the OSF/rose
+object format. If any of the
+.BR \-ggdb ,
+.BR \-gstabs ,
+or
+.B \-gstabs+
+switches are used, the
+.B mips\-tfile
+program will encapsulate the stabs within MIPS ECOFF.
+.TP
+.B \-mgas
+Generate code for the GNU assembler. This is the default on the OSF/1
+reference platform, using the OSF/rose object format.
+.TP
+.B \-mrnames
+.TP
+.B \-mno\-rnames
+The
+.B \-mrnames
+switch says to output code using the MIPS software names for the
+registers, instead of the hardware names (ie,
+.B a0
+instead of
+.BR $4 ).
+The GNU assembler does not support the
+.B \-mrnames
+switch, and the MIPS assembler will be instructed to run the MIPS C
+preprocessor over the source file. The
+.B \-mno\-rnames
+switch is default.
+.TP
+.B \-mgpopt
+.TP
+.B \-mno\-gpopt
+The
+.B \-mgpopt
+switch says to write all of the data declarations before the
+instructions in the text section, to all the MIPS assembler to
+generate one word memory references instead of using two words for
+short global or static data items. This is on by default if
+optimization is selected.
+.TP
+.B \-mstats
+.TP
+.B \-mno\-stats
+For each non-inline function processed, the
+.B \-mstats
+switch causes the compiler to emit one line to the standard error file
+to print statistics about the program (number of registers saved,
+stack size, etc.).
+.TP
+.B \-mmemcpy
+.TP
+.B \-mno\-memcpy
+The
+.B \-mmemcpy
+switch makes all block moves call the appropriate string function
+.RB ( memcpy
+or
+.BR bcopy )
+instead of possibly generating inline code.
+.TP
+.B \-mmips\-tfile
+.TP
+.B \-mno\-mips\-tfile
+The
+.B \-mno\-mips\-tfile
+switch causes the compiler not postprocess the object file with the
+.B mips\-tfile
+program, after the MIPS assembler has generated it to add debug
+support. If
+.B mips\-tfile
+is not run, then no local variables will be available to the debugger.
+In addition,
+.B stage2
+and
+.B stage3
+objects will have the temporary file names passed to the assembler
+embedded in the object file, which means the objects will not compare
+the same.
+.TP
+.B \-msoft\-float
+Generate output containing library calls for floating point.
+.I
+WARNING:
+the requisite libraries are not part of GNU CC. Normally the
+facilities of the machine's usual C compiler are used, but this can't
+be done directly in cross-compilation. You must make your own
+arrangements to provide suitable library functions for cross-compilation.
+.TP
+.B \-mhard\-float
+Generate output containing floating point instructions. This is the
+default if you use the unmodified sources.
+.TP
+.B \-mfp64
+Assume that the
+.B FR
+bit in the status word is on, and that there are 32 64-bit floating
+point registers, instead of 32 32-bit floating point registers. You
+must also specify the
+.B \-mcpu=r4000
+and
+.B \-mips3
+switches.
+.TP
+.B \-mfp32
+Assume that there are 32 32-bit floating point registers. This is the
+default.
+.PP
+.B \-mabicalls
+.TP
+.B \-mno\-abicalls
+Emit (or do not emit) the
+.BR \&.abicalls ,
+.BR \&.cpload ,
+and
+.B \&.cprestore
+pseudo operations that some System V.4 ports use for position
+independent code.
+.TP
+.B \-mhalf\-pic
+.TP
+.B \-mno\-half\-pic
+The
+.B \-mhalf\-pic
+switch says to put pointers to extern references into the data section
+and load them up, rather than put the references in the text section.
+This option does not work at present.
+.B
+.BI \-G num
+Put global and static items less than or equal to
+.I num
+bytes into the small data or bss sections instead of the normal data
+or bss section. This allows the assembler to emit one word memory
+reference instructions based on the global pointer
+.RB ( gp
+or
+.BR $28 ),
+instead of the normal two words used. By default,
+.I num
+is 8 when the MIPS assembler is used, and 0 when the GNU
+assembler is used. The
+.BI \-G num
+switch is also passed to the assembler and linker. All modules should
+be compiled with the same
+.BI \-G num
+value.
+.TP
+.B \-nocpp
+Tell the MIPS assembler to not run it's preprocessor over user
+assembler files (with a `\|\c
+.B .s\c
+\&\|' suffix) when assembling them.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the Intel 80386 family of computers:
+.B \-m486
+.TP
+.B \-mno\-486
+Control whether or not code is optimized for a 486 instead of an
+386. Code generated for a 486 will run on a 386 and vice versa.
+.TP
+.B \-msoft\-float
+Generate output containing library calls for floating point.
+.I Warning:
+the requisite libraries are not part of GNU CC.
+Normally the facilities of the machine's usual C compiler are used, but
+this can't be done directly in cross-compilation. You must make your
+own arrangements to provide suitable library functions for
+cross-compilation.
+.Sp
+On machines where a function returns floating point results in the 80387
+register stack, some floating point opcodes may be emitted even if
+`\|\c
+.B \-msoft-float\c
+\&\|' is used.
+.TP
+.B \-mno-fp-ret-in-387
+Do not use the FPU registers for return values of functions.
+.Sp
+The usual calling convention has functions return values of types
+.B float\c
+\& and \c
+.B double\c
+\& in an FPU register, even if there
+is no FPU. The idea is that the operating system should emulate
+an FPU.
+.Sp
+The option `\|\c
+.B \-mno-fp-ret-in-387\c
+\&\|' causes such values to be returned
+in ordinary CPU registers instead.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the HPPA family of computers:
+.TP
+.B \-mpa-risc-1-0
+Generate code for a PA 1.0 processor.
+.TP
+.B \-mpa-risc-1-1
+Generate code for a PA 1.1 processor.
+.TP
+.B \-mkernel
+Generate code which is suitable for use in kernels. Specifically, avoid
+.B add\c
+\& instructions in which one of the arguments is the DP register;
+generate \c
+.B addil\c
+\& instructions instead. This avoids a rather serious
+bug in the HP-UX linker.
+.TP
+.B \-mshared-libs
+Generate code that can be linked against HP-UX shared libraries. This option
+is not fully function yet, and is not on by default for any PA target. Using
+this option can cause incorrect code to be generated by the compiler.
+.TP
+.B \-mno-shared-libs
+Don't generate code that will be linked against shared libraries. This is
+the default for all PA targets.
+.TP
+.B \-mlong-calls
+Generate code which allows calls to functions greater than 256K away from
+the caller when the caller and callee are in the same source file. Do
+not turn this option on unless code refuses to link with \*(lqbranch out of
+range errors\*('' from the linker.
+.TP
+.B \-mdisable-fpregs
+Prevent floating point registers from being used in any manner. This is
+necessary for compiling kernels which perform lazy context switching of
+floating point registers. If you use this option and attempt to perform
+floating point operations, the compiler will abort.
+.TP
+.B \-mdisable-indexing
+Prevent the compiler from using indexing address modes. This avoids some
+rather obscure problems when compiling MIG generated code under MACH.
+.TP
+.B \-mtrailing-colon
+Add a colon to the end of label definitions (for ELF assemblers).
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the Intel 80960 family of computers:
+.TP
+.BI "\-m" "cpu-type"
+Assume the defaults for the machine type
+.I cpu-type
+for instruction and addressing-mode availability and alignment.
+The default
+.I cpu-type
+is
+.BR kb ;
+other choices are
+.BR ka ,
+.BR mc ,
+.BR ca ,
+.BR cf ,
+.BR sa ,
+and
+.BR sb .
+.TP
+.B \-mnumerics
+.TP
+.B \-msoft\-float
+The
+.B \-mnumerics
+option indicates that the processor does support
+floating-point instructions. The
+.B \-msoft\-float
+option indicates
+that floating-point support should not be assumed.
+.TP
+.B \-mleaf\-procedures
+.TP
+.B \-mno\-leaf\-procedures
+Do (or do not) attempt to alter leaf procedures to be callable with the
+.I bal
+instruction as well as
+.IR call .
+This will result in more
+efficient code for explicit calls when the
+.I bal
+instruction can be
+substituted by the assembler or linker, but less efficient code in other
+cases, such as calls via function pointers, or using a linker that doesn't
+support this optimization.
+.TP
+.B \-mtail\-call
+.TP
+.B \-mno\-tail\-call
+Do (or do not) make additional attempts (beyond those of the
+machine-independent portions of the compiler) to optimize tail-recursive
+calls into branches. You may not want to do this because the detection of
+cases where this is not valid is not totally complete. The default is
+.BR \-mno\-tail\-call .
+.TP
+.B \-mcomplex\-addr
+.TP
+.B \-mno\-complex\-addr
+Assume (or do not assume) that the use of a complex addressing mode is a
+win on this implementation of the i960. Complex addressing modes may not
+be worthwhile on the K-series, but they definitely are on the C-series.
+The default is currently
+.B \-mcomplex\-addr
+for all processors except
+the CB and CC.
+.TP
+.B \-mcode\-align
+.TP
+.B \-mno\-code\-align
+Align code to 8-byte boundaries for faster fetching (or don't bother).
+Currently turned on by default for C-series implementations only.
+.TP
+.B \-mic\-compat
+.TP
+.B \-mic2.0\-compat
+.TP
+.B \-mic3.0\-compat
+Enable compatibility with iC960 v2.0 or v3.0.
+.TP
+.B \-masm\-compat
+.TP
+.B \-mintel\-asm
+Enable compatibility with the iC960 assembler.
+.TP
+.B \-mstrict\-align
+.TP
+.B \-mno\-strict\-align
+Do not permit (do permit) unaligned accesses.
+.TP
+.B \-mold\-align
+Enable structure-alignment compatibility with Intel's gcc release version
+1.3 (based on gcc 1.37). Currently this is buggy in that
+.B #pragma align 1
+is always assumed as well, and cannot be turned off.
+.PP
+These `\|\c
+.B \-m\c
+\&\|' options are defined for the DEC Alpha implementations:
+.TP
+.B \-mno-soft-float
+.TP
+.B \-msoft-float
+Use (do not use) the hardware floating-point instructions for
+floating-point operations. When \c
+.B \-msoft-float\c
+\& is specified,
+functions in `\|\c
+.B libgcc1.c\c
+\&\|' will be used to perform floating-point
+operations. Unless they are replaced by routines that emulate the
+floating-point operations, or compiled in such a way as to call such
+emulations routines, these routines will issue floating-point
+operations. If you are compiling for an Alpha without floating-point
+operations, you must ensure that the library is built so as not to call
+them.
+.Sp
+Note that Alpha implementations without floating-point operations are
+required to have floating-point registers.
+.TP
+.B \-mfp-reg
+.TP
+.B \-mno-fp-regs
+Generate code that uses (does not use) the floating-point register set.
+.B \-mno-fp-regs\c
+\& implies \c
+.B \-msoft-float\c
+\&. If the floating-point
+register set is not used, floating point operands are passed in integer
+registers as if they were integers and floating-point results are passed
+in $0 instead of $f0. This is a non-standard calling sequence, so any
+function with a floating-point argument or return value called by code
+compiled with \c
+.B \-mno-fp-regs\c
+\& must also be compiled with that
+option.
+.Sp
+A typical use of this option is building a kernel that does not use,
+and hence need not save and restore, any floating-point registers.
+.PP
+These additional options are available on System V Release 4 for
+compatibility with other compilers on those systems:
+.TP
+.B \-G
+On SVr4 systems, \c
+.B gcc\c
+\& accepts the option `\|\c
+.B \-G\c
+\&\|' (and passes
+it to the system linker), for compatibility with other compilers.
+However, we suggest you use `\|\c
+.B \-symbolic\c
+\&\|' or `\|\c
+.B \-shared\c
+\&\|' as
+appropriate, instead of supplying linker options on the \c
+.B gcc
+command line.
+.TP
+.B \-Qy
+Identify the versions of each tool used by the compiler, in a
+.B .ident\c
+\& assembler directive in the output.
+.TP
+.B \-Qn
+Refrain from adding \c
+.B .ident\c
+\& directives to the output file (this is
+the default).
+.TP
+.BI "\-YP," "dirs"
+Search the directories \c
+.I dirs\c
+\&, and no others, for libraries
+specified with `\|\c
+.B \-l\c
+\&\|'. You can separate directory entries in
+.I dirs\c
+\& from one another with colons.
+.TP
+.BI "\-Ym," "dir"
+Look in the directory \c
+.I dir\c
+\& to find the M4 preprocessor.
+The assembler uses this option.
+.SH CODE GENERATION OPTIONS
+These machine-independent options control the interface conventions
+used in code generation.
+.PP
+Most of them begin with `\|\c
+\-f\c
+\&\|'. These options have both positive and negative forms; the negative form
+of `\|\c
+.B \-ffoo\c
+\&\|' would be `\|\c
+.B \-fno\-foo\c
+\&\|'. In the table below, only
+one of the forms is listed\(em\&the one which is not the default. You
+can figure out the other form by either removing `\|\c
+.B no\-\c
+\&\|' or adding
+it.
+.TP
+.B \-fnonnull\-objects
+Assume that objects reached through references are not null
+(C++ only).
+.Sp
+Normally, GNU C++ makes conservative assumptions about objects reached
+through references. For example, the compiler must check that \c
+.B a
+is not null in code like the following:
+.Sp
+obj &a = g ();
+a.f (2);
+.Sp
+Checking that references of this sort have non-null values requires
+extra code, however, and it is unnecessary for many programs. You can
+use `\|\c
+.B \-fnonnull-objects\c
+\&\|' to omit the checks for null, if your
+program doesn't require checking.
+.TP
+.B \-fpcc\-struct\-return
+Use the same convention for returning \c
+.B struct\c
+\& and \c
+.B union
+values that is used by the usual C compiler on your system. This
+convention is less efficient for small structures, and on many
+machines it fails to be reentrant; but it has the advantage of
+allowing intercallability between GCC-compiled code and PCC-compiled
+code.
+.TP
+.B \-freg\-struct\-return
+Use the convention that
+.B struct
+and
+.B union
+values are returned in registers when possible. This is more
+efficient for small structures than
+.BR \-fpcc\-struct\-return .
+.Sp
+If you specify neither
+.B \-fpcc\-struct\-return
+nor
+.BR \-freg\-struct\-return ,
+GNU CC defaults to whichever convention is standard for the target.
+If there is no standard convention, GNU CC defaults to
+.BR \-fpcc\-struct\-return .
+.TP
+.B \-fshort\-enums
+Allocate to an \c
+.B enum\c
+\& type only as many bytes as it needs for the
+declared range of possible values. Specifically, the \c
+.B enum\c
+\& type
+will be equivalent to the smallest integer type which has enough room.
+.TP
+.B \-fshort\-double
+Use the same size for
+.B double
+as for
+.B float
+\&.
+.TP
+.B \-fshared\-data
+Requests that the data and non-\c
+.B const\c
+\& variables of this
+compilation be shared data rather than private data. The distinction
+makes sense only on certain operating systems, where shared data is
+shared between processes running the same program, while private data
+exists in one copy per process.
+.TP
+.B \-fno\-common
+Allocate even uninitialized global variables in the bss section of the
+object file, rather than generating them as common blocks. This has the
+effect that if the same variable is declared (without \c
+.B extern\c
+\&) in
+two different compilations, you will get an error when you link them.
+The only reason this might be useful is if you wish to verify that the
+program will work on other systems which always work this way.
+.TP
+.B \-fno\-ident
+Ignore the `\|\c
+.B #ident\c
+\&\|' directive.
+.TP
+.B \-fno\-gnu\-linker
+Do not output global initializations (such as C++ constructors and
+destructors) in the form used by the GNU linker (on systems where the GNU
+linker is the standard method of handling them). Use this option when
+you want to use a non-GNU linker, which also requires using the
+.B collect2\c
+\& program to make sure the system linker includes
+constructors and destructors. (\c
+.B collect2\c
+\& is included in the GNU CC
+distribution.) For systems which \c
+.I must\c
+\& use \c
+.B collect2\c
+\&, the
+compiler driver \c
+.B gcc\c
+\& is configured to do this automatically.
+.TP
+.B \-finhibit-size-directive
+Don't output a \c
+.B .size\c
+\& assembler directive, or anything else that
+would cause trouble if the function is split in the middle, and the
+two halves are placed at locations far apart in memory. This option is
+used when compiling `\|\c
+.B crtstuff.c\c
+\&\|'; you should not need to use it
+for anything else.
+.TP
+.B \-fverbose-asm
+Put extra commentary information in the generated assembly code to
+make it more readable. This option is generally only of use to those
+who actually need to read the generated assembly code (perhaps while
+debugging the compiler itself).
+.TP
+.B \-fvolatile
+Consider all memory references through pointers to be volatile.
+.TP
+.B \-fvolatile\-global
+Consider all memory references to extern and global data items to
+be volatile.
+.TP
+.B \-fpic
+If supported for the target machines, generate position-independent code,
+suitable for use in a shared library.
+.TP
+.B \-fPIC
+If supported for the target machine, emit position-independent code,
+suitable for dynamic linking, even if branches need large displacements.
+.TP
+.BI "\-ffixed\-" "reg"
+Treat the register named \c
+.I reg\c
+\& as a fixed register; generated code
+should never refer to it (except perhaps as a stack pointer, frame
+pointer or in some other fixed role).
+.Sp
+.I reg\c
+\& must be the name of a register. The register names accepted
+are machine-specific and are defined in the \c
+.B REGISTER_NAMES
+macro in the machine description macro file.
+.Sp
+This flag does not have a negative form, because it specifies a
+three-way choice.
+.TP
+.BI "\-fcall\-used\-" "reg"
+Treat the register named \c
+.I reg\c
+\& as an allocatable register that is
+clobbered by function calls. It may be allocated for temporaries or
+variables that do not live across a call. Functions compiled this way
+will not save and restore the register \c
+.I reg\c
+\&.
+.Sp
+Use of this flag for a register that has a fixed pervasive role in the
+machine's execution model, such as the stack pointer or frame pointer,
+will produce disastrous results.
+.Sp
+This flag does not have a negative form, because it specifies a
+three-way choice.
+.TP
+.BI "\-fcall\-saved\-" "reg"
+Treat the register named \c
+.I reg\c
+\& as an allocatable register saved by
+functions. It may be allocated even for temporaries or variables that
+live across a call. Functions compiled this way will save and restore
+the register \c
+.I reg\c
+\& if they use it.
+.Sp
+Use of this flag for a register that has a fixed pervasive role in the
+machine's execution model, such as the stack pointer or frame pointer,
+will produce disastrous results.
+.Sp
+A different sort of disaster will result from the use of this flag for
+a register in which function values may be returned.
+.Sp
+This flag does not have a negative form, because it specifies a
+three-way choice.
+.SH PRAGMAS
+Two `\|\c
+.B #pragma\c
+\&\|' directives are supported for GNU C++, to permit using the same
+header file for two purposes: as a definition of interfaces to a given
+object class, and as the full definition of the contents of that object class.
+.TP
+.B #pragma interface
+(C++ only.)
+Use this directive in header files that define object classes, to save
+space in most of the object files that use those classes. Normally,
+local copies of certain information (backup copies of inline member
+functions, debugging information, and the internal tables that
+implement virtual functions) must be kept in each object file that
+includes class definitions. You can use this pragma to avoid such
+duplication. When a header file containing `\|\c
+.B #pragma interface\c
+\&\|' is included in a compilation, this auxiliary information
+will not be generated (unless the main input source file itself uses
+`\|\c
+.B #pragma implementation\c
+\&\|'). Instead, the object files will contain references to be
+resolved at link time.
+.TP
+.B #pragma implementation
+.TP
+\fB#pragma implementation "\fP\fIobjects\fP\fB.h"\fP
+(C++ only.)
+Use this pragma in a main input file, when you want full output from
+included header files to be generated (and made globally visible).
+The included header file, in turn, should use `\|\c
+.B #pragma interface\c
+\&\|'.
+Backup copies of inline member functions, debugging information, and
+the internal tables used to implement virtual functions are all
+generated in implementation files.
+.Sp
+If you use `\|\c
+.B #pragma implementation\c
+\&\|' with no argument, it applies to an include file with the same
+basename as your source file; for example, in `\|\c
+.B allclass.cc\c
+\&\|', `\|\c
+.B #pragma implementation\c
+\&\|' by itself is equivalent to `\|\c
+.B
+#pragma implementation "allclass.h"\c
+\&\|'. Use the string argument if you want a single implementation
+file to include code from multiple header files.
+.Sp
+There is no way to split up the contents of a single header file into
+multiple implementation files.
+.SH FILES
+.nf
+.ta \w'LIBDIR/g++\-include 'u
+file.c C source file
+file.h C header (preprocessor) file
+file.i preprocessed C source file
+file.C C++ source file
+file.cc C++ source file
+file.cxx C++ source file
+file.m Objective-C source file
+file.s assembly language file
+file.o object file
+a.out link edited output
+\fITMPDIR\fR/cc\(** temporary files
+\fILIBDIR\fR/cpp preprocessor
+\fILIBDIR\fR/cc1 compiler for C
+\fILIBDIR\fR/cc1plus compiler for C++
+\fILIBDIR\fR/collect linker front end needed on some machines
+\fILIBDIR\fR/libgcc.a GCC subroutine library
+/lib/crt[01n].o start-up routine
+\fILIBDIR\fR/ccrt0 additional start-up routine for C++
+/lib/libc.a standard C library, see
+.IR intro (3)
+/usr/include standard directory for \fB#include\fP files
+\fILIBDIR\fR/include standard gcc directory for \fB#include\fP files
+\fILIBDIR\fR/g++\-include additional g++ directory for \fB#include\fP
+.Sp
+.fi
+.I LIBDIR
+is usually
+.B /usr/local/lib/\c
+.IR machine / version .
+.br
+.I TMPDIR
+comes from the environment variable
+.B TMPDIR
+(default
+.B /usr/tmp
+if available, else
+.B /tmp\c
+\&).
+.SH "SEE ALSO"
+cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
+.br
+.RB "`\|" gcc "\|', `\|" cpp \|',
+.RB "`\|" as "\|', `\|" ld \|',
+and
+.RB `\| gdb \|'
+entries in
+.B info\c
+\&.
+.br
+.I
+Using and Porting GNU CC (for version 2.0)\c
+, Richard M. Stallman;
+.I
+The C Preprocessor\c
+, Richard M. Stallman;
+.I
+Debugging with GDB: the GNU Source-Level Debugger\c
+, Richard M. Stallman and Roland H. Pesch;
+.I
+Using as: the GNU Assembler\c
+, Dean Elsner, Jay Fenlason & friends;
+.I
+ld: the GNU linker\c
+, Steve Chamberlain and Roland Pesch.
+.SH BUGS
+For instructions on reporting bugs, see the GCC manual.
+.SH COPYING
+Copyright
+.if t \(co
+1991, 1992, 1993 Free Software Foundation, Inc.
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+.SH AUTHORS
+See the GNU CC Manual for the contributors to GNU CC.
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 9680977e50c..2027d28c513 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4302,6 +4302,11 @@ main (argc, argv)
signal (SIGPIPE, fatal_error);
#endif
+ { /* Warn users they are using developmental software. */
+ static void snapshot_warning ();
+ snapshot_warning ();
+ }
+
argbuf_length = 10;
argbuf = (char **) xmalloc (argbuf_length * sizeof (char *));
@@ -5441,3 +5446,58 @@ print_multilib_info ()
++p;
}
}
+
+/* For snapshots only.
+ Warn the user that this version of gcc is for testing and developing only.
+ If this is unix, we can restrict the warning to once per day.
+ Otherwise always issue it. */
+
+#define TIMESTAMP_FILE ".gcc-test-time"
+#define ONE_DAY (24*60*60)
+
+static void
+snapshot_warning ()
+{
+ char *home;
+ int print_p = 1;
+
+#ifdef unix
+ home = getenv ("HOME");
+ if (home != NULL)
+ {
+ char *file_name = (char *) alloca (strlen (home) + 1 + sizeof (TIMESTAMP_FILE));
+ struct stat statbuf;
+ time_t now = time (NULL);
+ int s;
+
+ sprintf (file_name, "%s/%s", home, TIMESTAMP_FILE);
+ s = stat (file_name, &statbuf);
+ if (s == 0
+ && (statbuf.st_mtime + ONE_DAY > now))
+ print_p = 0;
+ else
+ {
+ FILE *f;
+
+ if ((f = fopen (file_name, "w")) == NULL)
+ {
+ /* Ensure we have write access. */
+ chmod (file_name, s == 0 ? (statbuf.st_mode + 0200) : 0644);
+ f = fopen (file_name, "w");
+ }
+ if (f != NULL)
+ {
+ fputc ('\n', f);
+ fclose (f);
+ }
+ }
+ }
+#endif
+
+ if (print_p)
+ {
+ fprintf (stderr, "*** This is a development snapshot of GCC.\n");
+ fprintf (stderr, "*** It is not reliable release, and the GCC developers\n");
+ fprintf (stderr, "*** warn you not to use it for anything except to test it.\n");
+ }
+}
diff --git a/gcc/gcc.hlp b/gcc/gcc.hlp
new file mode 100644
index 00000000000..7ba1264a234
--- /dev/null
+++ b/gcc/gcc.hlp
@@ -0,0 +1,406 @@
+1 GCC
+
+ The GCC command invokes the GNU C compiler.
+
+ GCC file-spec
+
+2 Parameters
+
+ file-spec
+
+ A C source file. If no input file extension is specified, GNU C
+ assumes .C as the default extension unless the /PLUS qualifier is
+ given, in which case .CC is assumed as the default extension.
+
+ If an extension of .CPP is given, then the source file is assumed to
+ be the output of the preprocessor, and thus the preprocessor is not
+ executed.
+
+ If an extension of .S is given, then the source file is assumed to be
+ the assembly code output of the compiler, and only the assembler is
+ called to generate an object file.
+
+2 Qualifiers
+
+ GNU C command qualifiers modify the way the compiler handles the
+ compilation.
+
+ The following is the list of available qualifiers for GNU C:
+
+ /CASE_HACK
+ /CC1_OPTIONS=(option [,option...]])
+ /DEBUG
+ /DEFINE=(identifier[=definition][,...])
+ /G_FLOAT
+ /INCLUDE_DIRECTORY=(path [,path...]])
+ /LIST[=filename]
+ /MACHINE_CODE
+ /OBJECT[=filename]
+ /OPTIMIZE
+ /PLUS
+ /PROFILE[=identifier]
+ /SCAN=(file[,file...])
+ /SHOW[=option]
+ /UNDEFINE=(identifier[,identifier,...])
+ /VERBOSE
+ /VERSION
+ /WARNING
+
+2 Linking
+
+ When linking programs compiled with GNU C, you should include the GNU
+ C library before the VAX C library. For example,
+
+ LINK object-file,GNU_CC:[000000]GCCLIB/LIB,SYS$LIBRARY:VAXCRTL/LIB
+
+ You can also link your program with the shared VAX C library. This
+ can reduce the size of the .EXE file, as well as make it smaller when
+ it's running. For example,
+
+ $ LINK object-file, GNU_CC:[000000]GCCLIB/LIB,SYS$INPUT/OPT
+ SYS$SHARE:VAXCRTL/SHARE
+
+ (If you use the second example and type it in by hand, be sure to
+ type ^Z after the last carriage return). A simpler alternative would
+ be to place the single line:
+
+ SYS$SHARE:VAXCRTL/SHARE
+
+ into a file called VAXCRTL.OPT, and then use the link command:
+
+ $ LINK object-file, GNU_CC:[000000]GCCLIB/LIB,VAXCRTL.OPT/OPT
+
+ If a program has been compiled with /G_FLOAT, then the linking
+ instructions are slightly different. If you are linking with the
+ non-shared library, then the command that you should use would be:
+
+ LINK object-file,GNU_CC:[000000]GCCLIB/LIB,SYS$LIBRARY:VAXCRTLG/LIB -
+ ,SYS$LIBRARY:VAXCRTL/LIB
+
+ Note that both VAXCRTL and VAXCRTLG must be linked to. If you are
+ using the shared VAX C library, then you should use a command like:
+
+ $ LINK object-file, GNU_CC:[000000]GCCLIB/LIB,SYS$INPUT:/OPTIONS
+ SYS$SHARE:VAXCRTLG/SHARE
+
+ In the case of the sharable library, only one library needs to be
+ linked to.
+
+ If you need to link to libg++, it is easiest to use the command
+ procedure supplied with libg++ to link your program.
+
+2 /CASE_HACK
+
+ /[NO]CASE_HACK D=/CASE_HACK
+
+ Since the VMS Linker and Librarian are not case sensitive with
+ respect to symbol names, a "case-hack" is appended to a symbol name
+ when the symbol contains upper case characters.
+
+ There are cases where this is undesirable, (mainly when using certain
+ applications where modules have been precompiled, perhaps in another
+ language) and we want to compile without case hacking. In these
+ cases the /NOCASE_HACK switch disables case hacking.
+
+2 /CC1_OPTIONS
+
+ This specifies additional switches to the compiler itself which
+ cannot be set by means of the compiler driver.
+
+2 /DEBUG
+
+ /DEBUG includes additional information in the object file output so
+ that the program can be debugged with the VAX Symbolic Debugger.
+
+ To use the debugger it is also necessary to link the debugger to your
+ program, which is done by specifying the /DEBUG qualifier to the link
+ command. With the debugger it is possible to set breakpoints,
+ examine variables, and set variables to new values. See the VAX
+ Symbolic Debugger manual for more information, or type "HELP" from
+ the debugger prompt.
+
+2 /DEFINE
+
+ /DEFINE=(identifier[=definition][,...])
+
+ /DEFINE defines a string or macro ('definition') to be substituted
+ for every occurrence of a given string ('identifier') in a program.
+ It is equivalent to the #define preprocessor directive.
+
+ All definitions and identifiers are converted to uppercase unless
+ they are in quotation marks.
+
+ The simple form of the /DEFINE qualifier:
+
+ /DEFINE=vms
+
+ results in a definition equivalent to the preprocessor directive:
+
+ #define VMS 1
+
+ You must enclose macro definitions in quotation marks, as in this
+ example:
+
+ /DEFINE="C(x)=((x) & 0xff)"
+
+ This definition is the same as the preprocessor definition:
+
+ #define C(x) ((x) & 0xff)
+
+ If more than one /DEFINE is present on the GCC command line, only the
+ last /DEFINE is used.
+
+ If both /DEFINE and /UNDEFINE are present on a command line, /DEFINE
+ is evaluated before /UNDEFINE.
+
+2 /G_FLOAT
+
+ Instructs the compiler to use "G" floating point arithmetic instead
+ of "D". The difference is that double precision has a range of
+ approximately +/-0.56e-308 to +/-0.9 e+308, with approximately 15
+ decimal digits precision.
+
+ "D" floating point has the same range as single precision floating
+ point, with approximately 17 decimal digits precision.
+
+ If you use the /G_FLOAT qualifier, the linking instructions are
+ different. See "Linking" for further details.
+
+2 /LIST
+
+ /LIST[=list_file_name]
+
+ This does not generate a listing file in the usual sense, however it
+ does direct the compiler to save the preprocessor output. If a file
+ is not specified, then this output is written into a file with the
+ same name as the source file and an extension of .CPP.
+
+2 /INCLUDE_DIRECTORY
+
+ /INCLUDE_DIRECTORY=(path [,path...])
+
+ The /INCLUDE_DIRECTORY qualifier provides additional directories to
+ search for user-defined include files. 'path' can be either a
+ logical name or a directory specification.
+
+ There are two forms for specifying include files - #include
+ "file-spec" and #include <file-spec>. For the #include "file-spec"
+ form, the search order is:
+
+ 1. The directory containing the source file.
+
+ 2. The directories in the /INCLUDE qualifier (if any).
+
+ 3. The directory (or directories) specified in the logical name
+ GNU_CC_INCLUDE.
+
+ 4. The directory (or directories) specified in the logical name
+ SYS$LIBRARY.
+
+ For the #include <file-spec> form, the search order is:
+
+ 1. The directories specified in the /INCLUDE qualifier (if any).
+
+ 2. The directory (or directories) specified in the logical name
+ GNU_CC_INCLUDE.
+
+ 3. The directory (or directories) specified in the logical name
+ SYS$LIBRARY.
+
+2 /MACHINE_CODE
+
+ Tells GNU C to output the machine code generated by the compiler.
+ The machine code is output to a file with the same name as the input
+ file, with the extension .S. An object file is still generated,
+ unless /NOOBJ is also specified.
+
+2 /OBJECT
+
+ /OBJECT[=filename]
+ /NOOBJECT
+
+ Controls whether or not an object file is generated by the
+ compiler.
+
+2 /OPTIMIZE
+
+ /[NO]OPTIMIZE
+
+ Controls whether optimization is performed by the compiler. By
+ default, optimization is on. /NOOPTIMIZE turns optimization off.
+
+2 /PLUS
+
+ Instructs the compiler driver to use the GNU-C++ compiler instead of
+ the GNU-C compiler. Note that the default extension of source files
+ is .CC when this qualifier is in effect.
+
+2 /PROFILE
+
+ /PROFILE[=identifier]
+
+ Instructs the compiler to generate function profiling code. You must
+ link your program to the profiler when you use this options. The
+ profile statistics are automatically printed out on the terminal
+ during image exit. (i.e. no modifications to your source file are
+ required in order to use the profiler).
+
+ There are three identifiers that can be used with the /PROFILE
+ switch. These are ALL, FUNCTION, and BLOCK. If /PROFILE is given
+ without an identifier, then FUNCTION is assumed.
+
+3 Block_Profiler
+
+ The block profiler counts how many times control of the program
+ passes certain points in your program. This is useful in determining
+ which portions of a program would benefit from recoding for
+ optimization.
+
+ The report for the block profiler contains the function name, file
+ name, PC, and the source file line number as well as the count of how
+ many times control has passed through the specified source line.
+
+3 Function_Profiler
+
+ The function profiler counts how many times each function is entered,
+ and keeps track of how much CPU time is used within each function.
+
+ You should be careful about interpreting the results of profiles
+ where there are inline functions. When a function is included as
+ inline, then there is no call to the internal data collection routine
+ used by the profiler, and thus there will be no record of this
+ function being called. The compiler does generate a callable version
+ of each inline function, and if this called version is used, then the
+ profiler's data collection routine will be called.
+
+2 /SCAN
+
+ /SCAN=(file[,file...])
+
+ This qualifier supplies a list of files that will be read as input,
+ and the output will be discarded before processing the regular input
+ file. Because the output generated from the files is discarded, the
+ only effect of this qualifier is to make the macros defined in the
+ files available for use in the main input.
+
+2 /SHOW
+
+ /SHOW[=option]
+
+ This causes the preprocessor to generate information other than the
+ preprocessed input file. When this qualifier is used, no assembly
+ code and no object file is generated.
+
+ The output of the preprocessor is placed in the file specified by the
+ /LIST qualifier, if present. If the /LIST qualifier is not present,
+ then the output is placed in a file with the same name as the input
+ file with an extension that depends upon which option that is
+ selected.
+
+3 DEFINITIONS
+
+ This option causes the preprocessor to dump a list of all of the
+ definitions to the output file. This is useful for debugging
+ purposes, since it lets you determine whether or not everything has
+ been defined properly.
+
+ If the default file name is used for the output, the extension will
+ be .DEF.
+
+3 RULES
+
+ This option causes the preprocessor to output a rule suitable for
+ MAKE, describing the dependencies of the main source file. The
+ preprocessor outputs one MAKE rule containing the object file name
+ for that source file, a colon, and the names of all the concluded
+ files. If there are many included files then the rule is split into
+ several lines using the '\'-newline.
+
+ When using this option, only files included with the "#include "file"
+ directive are mentioned.
+
+ If the default file name is used for the output, a null extension
+ will be used.
+
+3 ALL
+
+ This option is similar to RULES, except that it also mentions files
+ included with the "#include <file.h>" directive.
+
+ If the default file name is used for the output, a null extension
+ will be used.
+
+2 /UNDEFINE
+
+ /UNDEFINE cancels a macro definition. Thus, it is the same as the
+ #undef preprocessor directive.
+
+ If more than one /UNDEFINE is present on the GCC command line, only
+ the last /UNDEFINE is used.
+
+ If both /DEFINE and /UNDEFINE are present on a command line, /DEFINE
+ is evaluated before /UNDEFINE.
+
+2 /VERBOSE
+
+ Controls whether the user sees the invocation command strings for the
+ preprocessor, compiler, and assembler. The compiler also outputs
+ some statistics on time spent in its various phases.
+
+2 /VERSION
+
+ Causes the preprocessor and the compiler to identify themselves by
+ their version numbers, and in the case of the compiler, the version
+ number of the compiler that built it.
+
+2 /WARNING
+
+ When this qualifier is present, warnings about usage that should be
+ avoided are given by the compiler. For more information, see "Using
+ and Porting GNU CC", in the section on command line options, under
+ "-Wall".
+
+ Warnings are also generated by the preprocessor when this qualifier
+ is given.
+
+2 Known_Incompatibilities_with_VAX-C
+
+ There are several known incompatibilities between GNU-C and VAX-C.
+ Some common ones will be briefly described here. A complete
+ description can be found in "Using and Porting GNU CC" in the chapter
+ entitled "Using GNU CC on VMS".
+
+ GNU-C provides case hacking as a means of giving case sensitivity
+ to symbol names. The case hack is a hexadecimal number appended to
+ the symbol name, with a bit being set for each upper case letter.
+ Symbols with all lower case, or symbols that have a dollar sign ("$")
+ are not case hacked. There are times that this is undesirable,
+ namely when you wish to link your program against a precompiled
+ library which was compiled with a non-GNU-C compiler. X-windows (or
+ DECWindows) is an example of this. In these instances, the
+ /NOCASE_HACK switch should be used.
+
+ If you require case hacking in some cases, but not in others (i.e.
+ Libg++ with DECWindows), then it is recommended that you develop a
+ header file which will define all mixed case functions that should
+ not have a case hack as the lower case equivalents.
+
+ GNU-C does not provide the globaldef and globalref mechanism
+ which is used by VAX-C to coerce the VMS linker to include certain
+ object modules from a library. There are assembler hacks, which are
+ available to the user through the macros defined in gnu_hacks.h,
+ which effectively give you the ability to perform these functions.
+ While not syntactically identical, they do provide most of the
+ functionality.
+
+ Note that globaldefs of enums is not supported in the way that it is
+ under VAX-C. This can be easily simulated, however, by globaldefing
+ an integer variable, and then globalvaluing all of the enumerated
+ states.
+
+ Furthermore, the way that globalvalue is currently implemented, the
+ data type of the globalvalue variable is seen to the compiler to be a
+ pointer to the data type that you specify. This is necessary in
+ order to make the compiler correctly address the globalvalue
+ variables.
+
diff --git a/gcc/gcc.texi b/gcc/gcc.texi
new file mode 100644
index 00000000000..418dcbc57d0
--- /dev/null
+++ b/gcc/gcc.texi
@@ -0,0 +1,4793 @@
+>\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename gcc.info
+@c @setfilename usegcc.info
+@c @setfilename portgcc.info
+@c To produce the full manual, use the "gcc.info" setfilename, and
+@c make sure the following do NOT begin with '@c' (and the @clear lines DO)
+@set INTERNALS
+@set USING
+@c To produce a user-only manual, use the "usegcc.info" setfilename, and
+@c make sure the following does NOT begin with '@c':
+@c @clear INTERNALS
+@c To produce a porter-only manual, use the "portgcc.info" setfilename,
+@c and make sure the following does NOT begin with '@c':
+@c @clear USING
+
+@c (For FSF printing, turn on smallbook, comment out finalout below;
+@c that is all that is needed.)
+
+@c 6/27/96 FSF DO wants smallbook fmt for 1st bound edition.
+@c @smallbook
+
+@c i also commented out the finalout command, so if there *are* any
+@c overfulls, you'll (hopefully) see the rectangle in the right hand
+@c margin. -mew 15june93
+@c @finalout
+
+@c NOTE: checks/things to do:
+@c
+@c -have bob do a search in all seven files for "mew" (ideally --mew,
+@c but i may have forgotten the occasional "--"..).
+@c Just checked... all have `--'! Bob 22Jul96
+@c Use this to search: grep -n '\-\-mew' *.texi
+@c -item/itemx, text after all (sub/sub)section titles, etc..
+@c -consider putting the lists of options on pp 17--> etc in columns or
+@c some such.
+@c -spellcheck
+@c -continuity of phrasing; ie, bit-field vs bitfield in rtl.texi
+@c -overfulls. do a search for "mew" in the files, and you will see
+@c overfulls that i noted but could not deal with.
+@c -have to add text: beginning of chapter 8
+
+@c
+@c anything else? --mew 10feb93
+
+
+
+@ifset INTERNALS
+@ifset USING
+@settitle Using and Porting GNU CC
+@end ifset
+@end ifset
+@c seems reasonable to assume at least one of INTERNALS or USING is set...
+@ifclear INTERNALS
+@settitle Using GNU CC
+@end ifclear
+@ifclear USING
+@settitle Porting GNU CC
+@end ifclear
+
+@syncodeindex fn cp
+@syncodeindex vr cp
+@c %**end of header
+
+@c Use with @@smallbook.
+
+@c Cause even numbered pages to be printed on the left hand side of
+@c the page and odd numbered pages to be printed on the right hand
+@c side of the page. Using this, you can print on both sides of a
+@c sheet of paper and have the text on the same part of the sheet.
+
+@c The text on right hand pages is pushed towards the right hand
+@c margin and the text on left hand pages is pushed toward the left
+@c hand margin.
+@c (To provide the reverse effect, set bindingoffset to -0.75in.)
+
+@c @tex
+@c \global\bindingoffset=0.75in
+@c \global\normaloffset =0.75in
+@c @end tex
+
+@ifinfo
+@ifset INTERNALS
+@ifset USING
+This file documents the use and the internals of the GNU compiler.
+@end ifset
+@end ifset
+@ifclear USING
+This file documents the internals of the GNU compiler.
+@end ifclear
+@ifclear INTERNALS
+This file documents the use of the GNU compiler.
+@end ifclear
+
+Published by the Free Software Foundation
+59 Temple Place - Suite 330
+Boston, MA 02111-1307 USA
+
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through Tex and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+sections entitled ``GNU General Public License,'' ``Funding for Free
+Software,'' and ``Protect Your Freedom---Fight `Look And Feel'@w{}'' are
+included exactly as in the original, and provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the sections entitled ``GNU General Public License,''
+``Funding for Free Software,'' and ``Protect Your Freedom---Fight `Look
+And Feel'@w{}'', and this permission notice, may be included in
+translations approved by the Free Software Foundation instead of in the
+original English.
+@end ifinfo
+
+@setchapternewpage odd
+
+@titlepage
+@ifset INTERNALS
+@ifset USING
+@center @titlefont{Using and Porting GNU CC}
+
+@end ifset
+@end ifset
+@ifclear INTERNALS
+@title Using GNU CC
+@end ifclear
+@ifclear USING
+@title Porting GNU CC
+@end ifclear
+@sp 2
+@center Richard M. Stallman
+@sp 3
+@center Last updated 26 November 1995
+@sp 1
+@c The version number appears twice more in this file.
+
+@center for version 2.7.2
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1988, 89, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
+@sp 2
+For GCC Version 2.7.2@*
+@sp 1
+Published by the Free Software Foundation @*
+59 Temple Place - Suite 330@*
+Boston, MA 02111-1307, USA@*
+Last printed November, 1995.@*
+Printed copies are available for $50 each.@*
+ISBN 1-882114-36-1
+@sp 1
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+sections entitled ``GNU General Public License,'' ``Funding for Free
+Software,'' and ``Protect Your Freedom---Fight `Look And Feel'@w{}'' are
+included exactly as in the original, and provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the sections entitled ``GNU General Public License,''
+``Funding for Free Software,'' and ``Protect Your Freedom---Fight `Look
+And Feel'@w{}'', and this permission notice, may be included in
+translations approved by the Free Software Foundation instead of in the
+original English.
+@end titlepage
+@page
+
+@ifinfo
+
+@node Top, G++ and GCC,, (DIR)
+@top Introduction
+@cindex introduction
+
+@ifset INTERNALS
+@ifset USING
+This manual documents how to run, install and port the GNU
+compiler, as well as its new features and incompatibilities, and how to
+report bugs. It corresponds to GNU CC version 2.7.2.
+@end ifset
+@end ifset
+
+@ifclear INTERNALS
+This manual documents how to run and install the GNU compiler,
+as well as its new features and incompatibilities, and how to report
+bugs. It corresponds to GNU CC version 2.7.2.
+@end ifclear
+@ifclear USING
+This manual documents how to port the GNU compiler,
+as well as its new features and incompatibilities, and how to report
+bugs. It corresponds to GNU CC version 2.7.1.
+@end ifclear
+
+@end ifinfo
+@menu
+@ifset USING
+* G++ and GCC:: You can compile C or C++ programs.
+* Invoking GCC:: Command options supported by @samp{gcc}.
+* Installation:: How to configure, compile and install GNU CC.
+* C Extensions:: GNU extensions to the C language family.
+* C++ Extensions:: GNU extensions to the C++ language.
+* Gcov:: gcov: a GNU CC test coverage program.
+* Trouble:: If you have trouble installing GNU CC.
+* Bugs:: How, why and where to report bugs.
+* Service:: How to find suppliers of support for GNU CC.
+* Contributing:: How to contribute to testing and developing GNU CC.
+* VMS:: Using GNU CC on VMS.
+@end ifset
+@ifset INTERNALS
+* Portability:: Goals of GNU CC's portability features.
+* Interface:: Function-call interface of GNU CC output.
+* Passes:: Order of passes, what they do, and what each file is for.
+* RTL:: The intermediate representation that most passes work on.
+* Machine Desc:: How to write machine description instruction patterns.
+* Target Macros:: How to write the machine description C macros.
+* Config:: Writing the @file{xm-@var{machine}.h} file.
+* Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files.
+@end ifset
+
+* Funding:: How to help assure funding for free software.
+* Look and Feel:: Protect your freedom---fight ``look and feel''.
+
+* Copying:: GNU General Public License says
+ how you can copy and share GNU CC.
+* Contributors:: People who have contributed to GNU CC.
+
+* Index:: Index of concepts and symbol names.
+@end menu
+
+@ifset USING
+@node G++ and GCC
+@chapter Compile C, C++, or Objective C
+
+@cindex Objective C
+The C, C++, and Objective C versions of the compiler are integrated; the
+GNU C compiler can compile programs written in C, C++, or Objective C.
+
+@cindex GCC
+``GCC'' is a common shorthand term for the GNU C compiler. This is both
+the most general name for the compiler, and the name used when the
+emphasis is on compiling C programs.
+
+@cindex C++
+@cindex G++
+When referring to C++ compilation, it is usual to call the compiler
+``G++''. Since there is only one compiler, it is also accurate to call
+it ``GCC'' no matter what the language context; however, the term
+``G++'' is more useful when the emphasis is on compiling C++ programs.
+
+We use the name ``GNU CC'' to refer to the compilation system as a
+whole, and more specifically to the language-independent part of the
+compiler. For example, we refer to the optimization options as
+affecting the behavior of ``GNU CC'' or sometimes just ``the compiler''.
+
+Front ends for other languages, such as Ada 9X, Fortran, Modula-3, and
+Pascal, are under development. These front-ends, like that for C++, are
+built in subdirectories of GNU CC and link to it. The result is an
+integrated compiler that can compile programs written in C, C++,
+Objective C, or any of the languages for which you have installed front
+ends.
+
+In this manual, we only discuss the options for the C, Objective-C, and
+C++ compilers and those of the GNU CC core. Consult the documentation
+of the other front ends for the options to use when compiling programs
+written in other languages.
+
+@cindex compiler compared to C++ preprocessor
+@cindex intermediate C version, nonexistent
+@cindex C intermediate output, nonexistent
+G++ is a @emph{compiler}, not merely a preprocessor. G++ builds object
+code directly from your C++ program source. There is no intermediate C
+version of the program. (By contrast, for example, some other
+implementations use a program that generates a C program from your C++
+source.) Avoiding an intermediate C representation of the program means
+that you get better object code, and better debugging information. The
+GNU debugger, GDB, works with this information in the object code to
+give you comprehensive C++ source-level editing capabilities
+(@pxref{C,,C and C++,gdb.info, Debugging with GDB}).
+
+@c FIXME! Someone who knows something about Objective C ought to put in
+@c a paragraph or two about it here, and move the index entry down when
+@c there is more to point to than the general mention in the 1st par.
+
+@include invoke.texi
+
+@include install.texi
+
+@include extend.texi
+
+@include gcov.texi
+
+@node Trouble
+@chapter Known Causes of Trouble with GNU CC
+@cindex bugs, known
+@cindex installation trouble
+@cindex known causes of trouble
+
+This section describes known problems that affect users of GNU CC. Most
+of these are not GNU CC bugs per se---if they were, we would fix them.
+But the result for a user may be like the result of a bug.
+
+Some of these problems are due to bugs in other software, some are
+missing features that are too much work to add, and some are places
+where people's opinions differ as to what is best.
+
+@menu
+* Actual Bugs:: Bugs we will fix later.
+* Installation Problems:: Problems that manifest when you install GNU CC.
+* Cross-Compiler Problems:: Common problems of cross compiling with GNU CC.
+* Interoperation:: Problems using GNU CC with other compilers,
+ and with certain linkers, assemblers and debuggers.
+* External Bugs:: Problems compiling certain programs.
+* Incompatibilities:: GNU CC is incompatible with traditional C.
+* Fixed Headers:: GNU C uses corrected versions of system header files.
+ This is necessary, but doesn't always work smoothly.
+* Standard Libraries:: GNU C uses the system C library, which might not be
+ compliant with the ISO/ANSI C standard.
+* Disappointments:: Regrettable things we can't change, but not quite bugs.
+* C++ Misunderstandings:: Common misunderstandings with GNU C++.
+* Protoize Caveats:: Things to watch out for when using @code{protoize}.
+* Non-bugs:: Things we think are right, but some others disagree.
+* Warnings and Errors:: Which problems in your code get warnings,
+ and which get errors.
+@end menu
+
+@node Actual Bugs
+@section Actual Bugs We Haven't Fixed Yet
+
+@itemize @bullet
+@item
+The @code{fixincludes} script interacts badly with automounters; if the
+directory of system header files is automounted, it tends to be
+unmounted while @code{fixincludes} is running. This would seem to be a
+bug in the automounter. We don't know any good way to work around it.
+
+@item
+The @code{fixproto} script will sometimes add prototypes for the
+@code{sigsetjmp} and @code{siglongjmp} functions that reference the
+@code{jmp_buf} type before that type is defined. To work around this,
+edit the offending file and place the typedef in front of the
+prototypes.
+
+@item
+There are several obscure case of mis-using struct, union, and
+enum tags that are not detected as errors by the compiler.
+
+@item
+When @samp{-pedantic-errors} is specified, GNU C will incorrectly give
+an error message when a function name is specified in an expression
+involving the comma operator.
+
+@item
+Loop unrolling doesn't work properly for certain C++ programs. This is
+a bug in the C++ front end. It sometimes emits incorrect debug info, and
+the loop unrolling code is unable to recover from this error.
+@end itemize
+
+@node Installation Problems
+@section Installation Problems
+
+This is a list of problems (and some apparent problems which don't
+really mean anything is wrong) that show up during installation of GNU
+CC.
+
+@itemize @bullet
+@item
+On certain systems, defining certain environment variables such as
+@code{CC} can interfere with the functioning of @code{make}.
+
+@item
+If you encounter seemingly strange errors when trying to build the
+compiler in a directory other than the source directory, it could be
+because you have previously configured the compiler in the source
+directory. Make sure you have done all the necessary preparations.
+@xref{Other Dir}.
+
+@item
+If you build GNU CC on a BSD system using a directory stored in a System
+V file system, problems may occur in running @code{fixincludes} if the
+System V file system doesn't support symbolic links. These problems
+result in a failure to fix the declaration of @code{size_t} in
+@file{sys/types.h}. If you find that @code{size_t} is a signed type and
+that type mismatches occur, this could be the cause.
+
+The solution is not to use such a directory for building GNU CC.
+
+@item
+In previous versions of GNU CC, the @code{gcc} driver program looked for
+@code{as} and @code{ld} in various places; for example, in files
+beginning with @file{/usr/local/lib/gcc-}. GNU CC version 2 looks for
+them in the directory
+@file{/usr/local/lib/gcc-lib/@var{target}/@var{version}}.
+
+Thus, to use a version of @code{as} or @code{ld} that is not the system
+default, for example @code{gas} or GNU @code{ld}, you must put them in
+that directory (or make links to them from that directory).
+
+@item
+Some commands executed when making the compiler may fail (return a
+non-zero status) and be ignored by @code{make}. These failures, which
+are often due to files that were not found, are expected, and can safely
+be ignored.
+
+@item
+It is normal to have warnings in compiling certain files about
+unreachable code and about enumeration type clashes. These files' names
+begin with @samp{insn-}. Also, @file{real.c} may get some warnings that
+you can ignore.
+
+@item
+Sometimes @code{make} recompiles parts of the compiler when installing
+the compiler. In one case, this was traced down to a bug in
+@code{make}. Either ignore the problem or switch to GNU Make.
+
+@item
+If you have installed a program known as purify, you may find that it
+causes errors while linking @code{enquire}, which is part of building
+GNU CC. The fix is to get rid of the file @code{real-ld} which purify
+installs---so that GNU CC won't try to use it.
+
+@item
+On Linux SLS 1.01, there is a problem with @file{libc.a}: it does not
+contain the obstack functions. However, GNU CC assumes that the obstack
+functions are in @file{libc.a} when it is the GNU C library. To work
+around this problem, change the @code{__GNU_LIBRARY__} conditional
+around line 31 to @samp{#if 1}.
+
+@item
+On some 386 systems, building the compiler never finishes because
+@code{enquire} hangs due to a hardware problem in the motherboard---it
+reports floating point exceptions to the kernel incorrectly. You can
+install GNU CC except for @file{float.h} by patching out the command to
+run @code{enquire}. You may also be able to fix the problem for real by
+getting a replacement motherboard. This problem was observed in
+Revision E of the Micronics motherboard, and is fixed in Revision F.
+It has also been observed in the MYLEX MXA-33 motherboard.
+
+If you encounter this problem, you may also want to consider removing
+the FPU from the socket during the compilation. Alternatively, if you
+are running SCO Unix, you can reboot and force the FPU to be ignored.
+To do this, type @samp{hd(40)unix auto ignorefpu}.
+
+@item
+On some 386 systems, GNU CC crashes trying to compile @file{enquire.c}.
+This happens on machines that don't have a 387 FPU chip. On 386
+machines, the system kernel is supposed to emulate the 387 when you
+don't have one. The crash is due to a bug in the emulator.
+
+One of these systems is the Unix from Interactive Systems: 386/ix.
+On this system, an alternate emulator is provided, and it does work.
+To use it, execute this command as super-user:
+
+@example
+ln /etc/emulator.rel1 /etc/emulator
+@end example
+
+@noindent
+and then reboot the system. (The default emulator file remains present
+under the name @file{emulator.dflt}.)
+
+Try using @file{/etc/emulator.att}, if you have such a problem on the
+SCO system.
+
+Another system which has this problem is Esix. We don't know whether it
+has an alternate emulator that works.
+
+On NetBSD 0.8, a similar problem manifests itself as these error messages:
+
+@example
+enquire.c: In function `fprop':
+enquire.c:2328: floating overflow
+@end example
+
+@item
+On SCO systems, when compiling GNU CC with the system's compiler,
+do not use @samp{-O}. Some versions of the system's compiler miscompile
+GNU CC with @samp{-O}.
+
+@cindex @code{genflags}, crash on Sun 4
+@item
+Sometimes on a Sun 4 you may observe a crash in the program
+@code{genflags} or @code{genoutput} while building GNU CC. This is said to
+be due to a bug in @code{sh}. You can probably get around it by running
+@code{genflags} or @code{genoutput} manually and then retrying the
+@code{make}.
+
+@item
+On Solaris 2, executables of GNU CC version 2.0.2 are commonly
+available, but they have a bug that shows up when compiling current
+versions of GNU CC: undefined symbol errors occur during assembly if you
+use @samp{-g}.
+
+The solution is to compile the current version of GNU CC without
+@samp{-g}. That makes a working compiler which you can use to recompile
+with @samp{-g}.
+
+@item
+Solaris 2 comes with a number of optional OS packages. Some of these
+packages are needed to use GNU CC fully. If you did not install all
+optional packages when installing Solaris, you will need to verify that
+the packages that GNU CC needs are installed.
+
+To check whether an optional package is installed, use
+the @code{pkginfo} command. To add an optional package, use the
+@code{pkgadd} command. For further details, see the Solaris
+documentation.
+
+For Solaris 2.0 and 2.1, GNU CC needs six packages: @samp{SUNWarc},
+@samp{SUNWbtool}, @samp{SUNWesu}, @samp{SUNWhea}, @samp{SUNWlibm}, and
+@samp{SUNWtoo}.
+
+For Solaris 2.2, GNU CC needs an additional seventh package: @samp{SUNWsprot}.
+
+@item
+On Solaris 2, trying to use the linker and other tools in
+@file{/usr/ucb} to install GNU CC has been observed to cause trouble.
+For example, the linker may hang indefinitely. The fix is to remove
+@file{/usr/ucb} from your @code{PATH}.
+
+@item
+If you use the 1.31 version of the MIPS assembler (such as was shipped
+with Ultrix 3.1), you will need to use the -fno-delayed-branch switch
+when optimizing floating point code. Otherwise, the assembler will
+complain when the GCC compiler fills a branch delay slot with a
+floating point instruction, such as @code{add.d}.
+
+@item
+If on a MIPS system you get an error message saying ``does not have gp
+sections for all it's [sic] sectons [sic]'', don't worry about it. This
+happens whenever you use GAS with the MIPS linker, but there is not
+really anything wrong, and it is okay to use the output file. You can
+stop such warnings by installing the GNU linker.
+
+It would be nice to extend GAS to produce the gp tables, but they are
+optional, and there should not be a warning about their absence.
+
+@item
+In Ultrix 4.0 on the MIPS machine, @file{stdio.h} does not work with GNU
+CC at all unless it has been fixed with @code{fixincludes}. This causes
+problems in building GNU CC. Once GNU CC is installed, the problems go
+away.
+
+To work around this problem, when making the stage 1 compiler, specify
+this option to Make:
+
+@example
+GCC_FOR_TARGET="./xgcc -B./ -I./include"
+@end example
+
+When making stage 2 and stage 3, specify this option:
+
+@example
+CFLAGS="-g -I./include"
+@end example
+
+@item
+Users have reported some problems with version 2.0 of the MIPS
+compiler tools that were shipped with Ultrix 4.1. Version 2.10
+which came with Ultrix 4.2 seems to work fine.
+
+Users have also reported some problems with version 2.20 of the
+MIPS compiler tools that were shipped with RISC/os 4.x. The earlier
+version 2.11 seems to work fine.
+
+@item
+Some versions of the MIPS linker will issue an assertion failure
+when linking code that uses @code{alloca} against shared
+libraries on RISC-OS 5.0, and DEC's OSF/1 systems. This is a bug
+in the linker, that is supposed to be fixed in future revisions.
+To protect against this, GNU CC passes @samp{-non_shared} to the
+linker unless you pass an explicit @samp{-shared} or
+@samp{-call_shared} switch.
+
+@item
+On System V release 3, you may get this error message
+while linking:
+
+@smallexample
+ld fatal: failed to write symbol name @var{something}
+ in strings table for file @var{whatever}
+@end smallexample
+
+This probably indicates that the disk is full or your ULIMIT won't allow
+the file to be as large as it needs to be.
+
+This problem can also result because the kernel parameter @code{MAXUMEM}
+is too small. If so, you must regenerate the kernel and make the value
+much larger. The default value is reported to be 1024; a value of 32768
+is said to work. Smaller values may also work.
+
+@item
+On System V, if you get an error like this,
+
+@example
+/usr/local/lib/bison.simple: In function `yyparse':
+/usr/local/lib/bison.simple:625: virtual memory exhausted
+@end example
+
+@noindent
+that too indicates a problem with disk space, ULIMIT, or @code{MAXUMEM}.
+
+@item
+Current GNU CC versions probably do not work on version 2 of the NeXT
+operating system.
+
+@item
+On NeXTStep 3.0, the Objective C compiler does not work, due,
+apparently, to a kernel bug that it happens to trigger. This problem
+does not happen on 3.1.
+
+@item
+On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not
+allowed to have more than one megabyte of memory. GNU CC cannot compile
+itself (or many other programs) with @samp{-O} in that much memory.
+
+To solve this problem, reconfigure the kernel adding the following line
+to the configuration file:
+
+@smallexample
+MAXUMEM = 4096
+@end smallexample
+
+@item
+On HP 9000 series 300 or 400 running HP-UX release 8.0, there is a bug
+in the assembler that must be fixed before GNU CC can be built. This
+bug manifests itself during the first stage of compilation, while
+building @file{libgcc2.a}:
+
+@smallexample
+_floatdisf
+cc1: warning: `-g' option not supported on this version of GCC
+cc1: warning: `-g1' option not supported on this version of GCC
+./xgcc: Internal compiler error: program as got fatal signal 11
+@end smallexample
+
+A patched version of the assembler is available by anonymous ftp from
+@code{altdorf.ai.mit.edu} as the file
+@file{archive/cph/hpux-8.0-assembler}. If you have HP software support,
+the patch can also be obtained directly from HP, as described in the
+following note:
+
+@quotation
+This is the patched assembler, to patch SR#1653-010439, where the
+assembler aborts on floating point constants.
+
+The bug is not really in the assembler, but in the shared library
+version of the function ``cvtnum(3c)''. The bug on ``cvtnum(3c)'' is
+SR#4701-078451. Anyway, the attached assembler uses the archive
+library version of ``cvtnum(3c)'' and thus does not exhibit the bug.
+@end quotation
+
+This patch is also known as PHCO_4484.
+
+@item
+On HP-UX version 8.05, but not on 8.07 or more recent versions,
+the @code{fixproto} shell script triggers a bug in the system shell.
+If you encounter this problem, upgrade your operating system or
+use BASH (the GNU shell) to run @code{fixproto}.
+
+@item
+Some versions of the Pyramid C compiler are reported to be unable to
+compile GNU CC. You must use an older version of GNU CC for
+bootstrapping. One indication of this problem is if you get a crash
+when GNU CC compiles the function @code{muldi3} in file @file{libgcc2.c}.
+
+You may be able to succeed by getting GNU CC version 1, installing it,
+and using it to compile GNU CC version 2. The bug in the Pyramid C
+compiler does not seem to affect GNU CC version 1.
+
+@item
+There may be similar problems on System V Release 3.1 on 386 systems.
+
+@item
+On the Intel Paragon (an i860 machine), if you are using operating
+system version 1.0, you will get warnings or errors about redefinition
+of @code{va_arg} when you build GNU CC.
+
+If this happens, then you need to link most programs with the library
+@file{iclib.a}. You must also modify @file{stdio.h} as follows: before
+the lines
+
+@example
+#if defined(__i860__) && !defined(_VA_LIST)
+#include <va_list.h>
+@end example
+
+@noindent
+insert the line
+
+@example
+#if __PGC__
+@end example
+
+@noindent
+and after the lines
+
+@example
+extern int vprintf(const char *, va_list );
+extern int vsprintf(char *, const char *, va_list );
+#endif
+@end example
+
+@noindent
+insert the line
+
+@example
+#endif /* __PGC__ */
+@end example
+
+These problems don't exist in operating system version 1.1.
+
+@item
+On the Altos 3068, programs compiled with GNU CC won't work unless you
+fix a kernel bug. This happens using system versions V.2.2 1.0gT1 and
+V.2.2 1.0e and perhaps later versions as well. See the file
+@file{README.ALTOS}.
+
+@item
+You will get several sorts of compilation and linking errors on the
+we32k if you don't follow the special instructions. @xref{Configurations}.
+
+@item
+A bug in the HP-UX 8.05 (and earlier) shell will cause the fixproto
+program to report an error of the form:
+
+@example
+./fixproto: sh internal 1K buffer overflow
+@end example
+
+To fix this, change the first line of the fixproto script to look like:
+
+@example
+#!/bin/ksh
+@end example
+@end itemize
+
+@node Cross-Compiler Problems
+@section Cross-Compiler Problems
+
+You may run into problems with cross compilation on certain machines,
+for several reasons.
+
+@itemize @bullet
+@item
+Cross compilation can run into trouble for certain machines because
+some target machines' assemblers require floating point numbers to be
+written as @emph{integer} constants in certain contexts.
+
+The compiler writes these integer constants by examining the floating
+point value as an integer and printing that integer, because this is
+simple to write and independent of the details of the floating point
+representation. But this does not work if the compiler is running on
+a different machine with an incompatible floating point format, or
+even a different byte-ordering.
+
+In addition, correct constant folding of floating point values
+requires representing them in the target machine's format.
+(The C standard does not quite require this, but in practice
+it is the only way to win.)
+
+It is now possible to overcome these problems by defining macros such
+as @code{REAL_VALUE_TYPE}. But doing so is a substantial amount of
+work for each target machine.
+@ifset INTERNALS
+@xref{Cross-compilation}.
+@end ifset
+@ifclear INTERNALS
+@xref{Cross-compilation,,Cross Compilation and Floating Point Format,
+gcc.info, Using and Porting GCC}.
+@end ifclear
+
+@item
+At present, the program @file{mips-tfile} which adds debug
+support to object files on MIPS systems does not work in a cross
+compile environment.
+@end itemize
+
+@node Interoperation
+@section Interoperation
+
+This section lists various difficulties encountered in using GNU C or
+GNU C++ together with other compilers or with the assemblers, linkers,
+libraries and debuggers on certain systems.
+
+@itemize @bullet
+@item
+Objective C does not work on the RS/6000.
+
+@item
+GNU C++ does not do name mangling in the same way as other C++
+compilers. This means that object files compiled with one compiler
+cannot be used with another.
+
+This effect is intentional, to protect you from more subtle problems.
+Compilers differ as to many internal details of C++ implementation,
+including: how class instances are laid out, how multiple inheritance is
+implemented, and how virtual function calls are handled. If the name
+encoding were made the same, your programs would link against libraries
+provided from other compilers---but the programs would then crash when
+run. Incompatible libraries are then detected at link time, rather than
+at run time.
+
+@item
+Older GDB versions sometimes fail to read the output of GNU CC version
+2. If you have trouble, get GDB version 4.4 or later.
+
+@item
+@cindex DBX
+DBX rejects some files produced by GNU CC, though it accepts similar
+constructs in output from PCC. Until someone can supply a coherent
+description of what is valid DBX input and what is not, there is
+nothing I can do about these problems. You are on your own.
+
+@item
+The GNU assembler (GAS) does not support PIC. To generate PIC code, you
+must use some other assembler, such as @file{/bin/as}.
+
+@item
+On some BSD systems, including some versions of Ultrix, use of profiling
+causes static variable destructors (currently used only in C++) not to
+be run.
+
+@item
+Use of @samp{-I/usr/include} may cause trouble.
+
+Many systems come with header files that won't work with GNU CC unless
+corrected by @code{fixincludes}. The corrected header files go in a new
+directory; GNU CC searches this directory before @file{/usr/include}.
+If you use @samp{-I/usr/include}, this tells GNU CC to search
+@file{/usr/include} earlier on, before the corrected headers. The
+result is that you get the uncorrected header files.
+
+Instead, you should use these options (when compiling C programs):
+
+@smallexample
+-I/usr/local/lib/gcc-lib/@var{target}/@var{version}/include -I/usr/include
+@end smallexample
+
+For C++ programs, GNU CC also uses a special directory that defines C++
+interfaces to standard C subroutines. This directory is meant to be
+searched @emph{before} other standard include directories, so that it
+takes precedence. If you are compiling C++ programs and specifying
+include directories explicitly, use this option first, then the two
+options above:
+
+@example
+-I/usr/local/lib/g++-include
+@end example
+
+@ignore
+@cindex @code{vfork}, for the Sun-4
+@item
+There is a bug in @code{vfork} on the Sun-4 which causes the registers
+of the child process to clobber those of the parent. Because of this,
+programs that call @code{vfork} are likely to lose when compiled
+optimized with GNU CC when the child code alters registers which contain
+C variables in the parent. This affects variables which are live in the
+parent across the call to @code{vfork}.
+
+If you encounter this, you can work around the problem by declaring
+variables @code{volatile} in the function that calls @code{vfork}, until
+the problem goes away, or by not declaring them @code{register} and not
+using @samp{-O} for those source files.
+@end ignore
+
+@item
+On some SGI systems, when you use @samp{-lgl_s} as an option,
+it gets translated magically to @samp{-lgl_s -lX11_s -lc_s}.
+Naturally, this does not happen when you use GNU CC.
+You must specify all three options explicitly.
+
+@item
+On a Sparc, GNU CC aligns all values of type @code{double} on an 8-byte
+boundary, and it expects every @code{double} to be so aligned. The Sun
+compiler usually gives @code{double} values 8-byte alignment, with one
+exception: function arguments of type @code{double} may not be aligned.
+
+As a result, if a function compiled with Sun CC takes the address of an
+argument of type @code{double} and passes this pointer of type
+@code{double *} to a function compiled with GNU CC, dereferencing the
+pointer may cause a fatal signal.
+
+One way to solve this problem is to compile your entire program with GNU
+CC. Another solution is to modify the function that is compiled with
+Sun CC to copy the argument into a local variable; local variables
+are always properly aligned. A third solution is to modify the function
+that uses the pointer to dereference it via the following function
+@code{access_double} instead of directly with @samp{*}:
+
+@smallexample
+inline double
+access_double (double *unaligned_ptr)
+@{
+ union d2i @{ double d; int i[2]; @};
+
+ union d2i *p = (union d2i *) unaligned_ptr;
+ union d2i u;
+
+ u.i[0] = p->i[0];
+ u.i[1] = p->i[1];
+
+ return u.d;
+@}
+@end smallexample
+
+@noindent
+Storing into the pointer can be done likewise with the same union.
+
+@item
+On Solaris, the @code{malloc} function in the @file{libmalloc.a} library
+may allocate memory that is only 4 byte aligned. Since GNU CC on the
+Sparc assumes that doubles are 8 byte aligned, this may result in a
+fatal signal if doubles are stored in memory allocated by the
+@file{libmalloc.a} library.
+
+The solution is to not use the @file{libmalloc.a} library. Use instead
+@code{malloc} and related functions from @file{libc.a}; they do not have
+this problem.
+
+@item
+Sun forgot to include a static version of @file{libdl.a} with some
+versions of SunOS (mainly 4.1). This results in undefined symbols when
+linking static binaries (that is, if you use @samp{-static}). If you
+see undefined symbols @code{_dlclose}, @code{_dlsym} or @code{_dlopen}
+when linking, compile and link against the file
+@file{mit/util/misc/dlsym.c} from the MIT version of X windows.
+
+@item
+The 128-bit long double format that the Sparc port supports currently
+works by using the architecturally defined quad-word floating point
+instructions. Since there is no hardware that supports these
+instructions they must be emulated by the operating system. Long
+doubles do not work in Sun OS versions 4.0.3 and earlier, because the
+kernel emulator uses an obsolete and incompatible format. Long doubles
+do not work in Sun OS version 4.1.1 due to a problem in a Sun library.
+Long doubles do work on Sun OS versions 4.1.2 and higher, but GNU CC
+does not enable them by default. Long doubles appear to work in Sun OS
+5.x (Solaris 2.x).
+
+@item
+On HP-UX version 9.01 on the HP PA, the HP compiler @code{cc} does not
+compile GNU CC correctly. We do not yet know why. However, GNU CC
+compiled on earlier HP-UX versions works properly on HP-UX 9.01 and can
+compile itself properly on 9.01.
+
+@item
+On the HP PA machine, ADB sometimes fails to work on functions compiled
+with GNU CC. Specifically, it fails to work on functions that use
+@code{alloca} or variable-size arrays. This is because GNU CC doesn't
+generate HP-UX unwind descriptors for such functions. It may even be
+impossible to generate them.
+
+@item
+Debugging (@samp{-g}) is not supported on the HP PA machine, unless you use
+the preliminary GNU tools (@pxref{Installation}).
+
+@item
+Taking the address of a label may generate errors from the HP-UX
+PA assembler. GAS for the PA does not have this problem.
+
+@item
+Using floating point parameters for indirect calls to static functions
+will not work when using the HP assembler. There simply is no way for GCC
+to specify what registers hold arguments for static functions when using
+the HP assembler. GAS for the PA does not have this problem.
+
+@item
+In extremely rare cases involving some very large functions you may
+receive errors from the HP linker complaining about an out of bounds
+unconditional branch offset. This used to occur more often in previous
+versions of GNU CC, but is now exceptionally rare. If you should run
+into it, you can work around by making your function smaller.
+
+@item
+GNU CC compiled code sometimes emits warnings from the HP-UX assembler of
+the form:
+
+@smallexample
+(warning) Use of GR3 when
+ frame >= 8192 may cause conflict.
+@end smallexample
+
+These warnings are harmless and can be safely ignored.
+
+@item
+The current version of the assembler (@file{/bin/as}) for the RS/6000
+has certain problems that prevent the @samp{-g} option in GCC from
+working. Note that @file{Makefile.in} uses @samp{-g} by default when
+compiling @file{libgcc2.c}.
+
+IBM has produced a fixed version of the assembler. The upgraded
+assembler unfortunately was not included in any of the AIX 3.2 update
+PTF releases (3.2.2, 3.2.3, or 3.2.3e). Users of AIX 3.1 should request
+PTF U403044 from IBM and users of AIX 3.2 should request PTF U416277.
+See the file @file{README.RS6000} for more details on these updates.
+
+You can test for the presense of a fixed assembler by using the
+command
+
+@smallexample
+as -u < /dev/null
+@end smallexample
+
+@noindent
+If the command exits normally, the assembler fix already is installed.
+If the assembler complains that "-u" is an unknown flag, you need to
+order the fix.
+
+@item
+On the IBM RS/6000, compiling code of the form
+
+@smallexample
+extern int foo;
+
+@dots{} foo @dots{}
+
+static int foo;
+@end smallexample
+
+@noindent
+will cause the linker to report an undefined symbol @code{foo}.
+Although this behavior differs from most other systems, it is not a
+bug because redefining an @code{extern} variable as @code{static}
+is undefined in ANSI C.
+
+@item
+AIX on the RS/6000 provides support (NLS) for environments outside of
+the United States. Compilers and assemblers use NLS to support
+locale-specific representations of various objects including
+floating-point numbers ("." vs "," for separating decimal fractions).
+There have been problems reported where the library linked with GCC does
+not produce the same floating-point formats that the assembler accepts.
+If you have this problem, set the LANG environment variable to "C" or
+"En_US".
+
+@item
+Even if you specify @samp{-fdollars-in-identifiers},
+you cannot successfully use @samp{$} in identifiers on the RS/6000 due
+to a restriction in the IBM assembler. GAS supports these
+identifiers.
+
+@item
+On the RS/6000, XLC version 1.3.0.0 will miscompile @file{jump.c}. XLC
+version 1.3.0.1 or later fixes this problem. You can obtain XLC-1.3.0.2
+by requesting PTF 421749 from IBM.
+
+@item
+There is an assembler bug in versions of DG/UX prior to 5.4.2.01 that
+occurs when the @samp{fldcr} instruction is used. GNU CC uses
+@samp{fldcr} on the 88100 to serialize volatile memory references. Use
+the option @samp{-mno-serialize-volatile} if your version of the
+assembler has this bug.
+
+@item
+On VMS, GAS versions 1.38.1 and earlier may cause spurious warning
+messages from the linker. These warning messages complain of mismatched
+psect attributes. You can ignore them. @xref{VMS Install}.
+
+@item
+On NewsOS version 3, if you include both of the files @file{stddef.h}
+and @file{sys/types.h}, you get an error because there are two typedefs
+of @code{size_t}. You should change @file{sys/types.h} by adding these
+lines around the definition of @code{size_t}:
+
+@smallexample
+#ifndef _SIZE_T
+#define _SIZE_T
+@var{actual typedef here}
+#endif
+@end smallexample
+
+@cindex Alliant
+@item
+On the Alliant, the system's own convention for returning structures
+and unions is unusual, and is not compatible with GNU CC no matter
+what options are used.
+
+@cindex RT PC
+@cindex IBM RT PC
+@item
+On the IBM RT PC, the MetaWare HighC compiler (hc) uses a different
+convention for structure and union returning. Use the option
+@samp{-mhc-struct-return} to tell GNU CC to use a convention compatible
+with it.
+
+@cindex Vax calling convention
+@cindex Ultrix calling convention
+@item
+On Ultrix, the Fortran compiler expects registers 2 through 5 to be saved
+by function calls. However, the C compiler uses conventions compatible
+with BSD Unix: registers 2 through 5 may be clobbered by function calls.
+
+GNU CC uses the same convention as the Ultrix C compiler. You can use
+these options to produce code compatible with the Fortran compiler:
+
+@smallexample
+-fcall-saved-r2 -fcall-saved-r3 -fcall-saved-r4 -fcall-saved-r5
+@end smallexample
+
+@item
+On the WE32k, you may find that programs compiled with GNU CC do not
+work with the standard shared C library. You may need to link with
+the ordinary C compiler. If you do so, you must specify the following
+options:
+
+@smallexample
+-L/usr/local/lib/gcc-lib/we32k-att-sysv/2.7.1 -lgcc -lc_s
+@end smallexample
+
+The first specifies where to find the library @file{libgcc.a}
+specified with the @samp{-lgcc} option.
+
+GNU CC does linking by invoking @code{ld}, just as @code{cc} does, and
+there is no reason why it @emph{should} matter which compilation program
+you use to invoke @code{ld}. If someone tracks this problem down,
+it can probably be fixed easily.
+
+@item
+On the Alpha, you may get assembler errors about invalid syntax as a
+result of floating point constants. This is due to a bug in the C
+library functions @code{ecvt}, @code{fcvt} and @code{gcvt}. Given valid
+floating point numbers, they sometimes print @samp{NaN}.
+
+@item
+On Irix 4.0.5F (and perhaps in some other versions), an assembler bug
+sometimes reorders instructions incorrectly when optimization is turned
+on. If you think this may be happening to you, try using the GNU
+assembler; GAS version 2.1 supports ECOFF on Irix.
+
+Or use the @samp{-noasmopt} option when you compile GNU CC with itself,
+and then again when you compile your program. (This is a temporary
+kludge to turn off assembler optimization on Irix.) If this proves to
+be what you need, edit the assembler spec in the file @file{specs} so
+that it unconditionally passes @samp{-O0} to the assembler, and never
+passes @samp{-O2} or @samp{-O3}.
+@end itemize
+
+@node External Bugs
+@section Problems Compiling Certain Programs
+
+@c prevent bad page break with this line
+Certain programs have problems compiling.
+
+@itemize @bullet
+@item
+Parse errors may occur compiling X11 on a Decstation running Ultrix 4.2
+because of problems in DEC's versions of the X11 header files
+@file{X11/Xlib.h} and @file{X11/Xutil.h}. People recommend adding
+@samp{-I/usr/include/mit} to use the MIT versions of the header files,
+using the @samp{-traditional} switch to turn off ANSI C, or fixing the
+header files by adding this:
+
+@example
+#ifdef __STDC__
+#define NeedFunctionPrototypes 0
+#endif
+@end example
+
+@item
+If you have trouble compiling Perl on a SunOS 4 system, it may be
+because Perl specifies @samp{-I/usr/ucbinclude}. This accesses the
+unfixed header files. Perl specifies the options
+
+@example
+-traditional -Dvolatile=__volatile__
+-I/usr/include/sun -I/usr/ucbinclude
+-fpcc-struct-return
+@end example
+
+@noindent
+most of which are unnecessary with GCC 2.4.5 and newer versions. You
+can make a properly working Perl by setting @code{ccflags} to
+@samp{-fwritable-strings} (implied by the @samp{-traditional} in the
+original options) and @code{cppflags} to empty in @file{config.sh}, then
+typing @samp{./doSH; make depend; make}.
+
+@item
+On various 386 Unix systems derived from System V, including SCO, ISC,
+and ESIX, you may get error messages about running out of virtual memory
+while compiling certain programs.
+
+You can prevent this problem by linking GNU CC with the GNU malloc
+(which thus replaces the malloc that comes with the system). GNU malloc
+is available as a separate package, and also in the file
+@file{src/gmalloc.c} in the GNU Emacs 19 distribution.
+
+If you have installed GNU malloc as a separate library package, use this
+option when you relink GNU CC:
+
+@example
+MALLOC=/usr/local/lib/libgmalloc.a
+@end example
+
+Alternatively, if you have compiled @file{gmalloc.c} from Emacs 19, copy
+the object file to @file{gmalloc.o} and use this option when you relink
+GNU CC:
+
+@example
+MALLOC=gmalloc.o
+@end example
+@end itemize
+
+@node Incompatibilities
+@section Incompatibilities of GNU CC
+@cindex incompatibilities of GNU CC
+
+There are several noteworthy incompatibilities between GNU C and most
+existing (non-ANSI) versions of C. The @samp{-traditional} option
+eliminates many of these incompatibilities, @emph{but not all}, by
+telling GNU C to behave like the other C compilers.
+
+@itemize @bullet
+@cindex string constants
+@cindex read-only strings
+@cindex shared strings
+@item
+GNU CC normally makes string constants read-only. If several
+identical-looking string constants are used, GNU CC stores only one
+copy of the string.
+
+@cindex @code{mktemp}, and constant strings
+One consequence is that you cannot call @code{mktemp} with a string
+constant argument. The function @code{mktemp} always alters the
+string its argument points to.
+
+@cindex @code{sscanf}, and constant strings
+@cindex @code{fscanf}, and constant strings
+@cindex @code{scanf}, and constant strings
+Another consequence is that @code{sscanf} does not work on some systems
+when passed a string constant as its format control string or input.
+This is because @code{sscanf} incorrectly tries to write into the string
+constant. Likewise @code{fscanf} and @code{scanf}.
+
+The best solution to these problems is to change the program to use
+@code{char}-array variables with initialization strings for these
+purposes instead of string constants. But if this is not possible,
+you can use the @samp{-fwritable-strings} flag, which directs GNU CC
+to handle string constants the same way most C compilers do.
+@samp{-traditional} also has this effect, among others.
+
+@item
+@code{-2147483648} is positive.
+
+This is because 2147483648 cannot fit in the type @code{int}, so
+(following the ANSI C rules) its data type is @code{unsigned long int}.
+Negating this value yields 2147483648 again.
+
+@item
+GNU CC does not substitute macro arguments when they appear inside of
+string constants. For example, the following macro in GNU CC
+
+@example
+#define foo(a) "a"
+@end example
+
+@noindent
+will produce output @code{"a"} regardless of what the argument @var{a} is.
+
+The @samp{-traditional} option directs GNU CC to handle such cases
+(among others) in the old-fashioned (non-ANSI) fashion.
+
+@cindex @code{setjmp} incompatibilities
+@cindex @code{longjmp} incompatibilities
+@item
+When you use @code{setjmp} and @code{longjmp}, the only automatic
+variables guaranteed to remain valid are those declared
+@code{volatile}. This is a consequence of automatic register
+allocation. Consider this function:
+
+@example
+jmp_buf j;
+
+foo ()
+@{
+ int a, b;
+
+ a = fun1 ();
+ if (setjmp (j))
+ return a;
+
+ a = fun2 ();
+ /* @r{@code{longjmp (j)} may occur in @code{fun3}.} */
+ return a + fun3 ();
+@}
+@end example
+
+Here @code{a} may or may not be restored to its first value when the
+@code{longjmp} occurs. If @code{a} is allocated in a register, then
+its first value is restored; otherwise, it keeps the last value stored
+in it.
+
+If you use the @samp{-W} option with the @samp{-O} option, you will
+get a warning when GNU CC thinks such a problem might be possible.
+
+The @samp{-traditional} option directs GNU C to put variables in
+the stack by default, rather than in registers, in functions that
+call @code{setjmp}. This results in the behavior found in
+traditional C compilers.
+
+@item
+Programs that use preprocessing directives in the middle of macro
+arguments do not work with GNU CC. For example, a program like this
+will not work:
+
+@example
+foobar (
+#define luser
+ hack)
+@end example
+
+ANSI C does not permit such a construct. It would make sense to support
+it when @samp{-traditional} is used, but it is too much work to
+implement.
+
+@cindex external declaration scope
+@cindex scope of external declarations
+@cindex declaration scope
+@item
+Declarations of external variables and functions within a block apply
+only to the block containing the declaration. In other words, they
+have the same scope as any other declaration in the same place.
+
+In some other C compilers, a @code{extern} declaration affects all the
+rest of the file even if it happens within a block.
+
+The @samp{-traditional} option directs GNU C to treat all @code{extern}
+declarations as global, like traditional compilers.
+
+@item
+In traditional C, you can combine @code{long}, etc., with a typedef name,
+as shown here:
+
+@example
+typedef int foo;
+typedef long foo bar;
+@end example
+
+In ANSI C, this is not allowed: @code{long} and other type modifiers
+require an explicit @code{int}. Because this criterion is expressed
+by Bison grammar rules rather than C code, the @samp{-traditional}
+flag cannot alter it.
+
+@cindex typedef names as function parameters
+@item
+PCC allows typedef names to be used as function parameters. The
+difficulty described immediately above applies here too.
+
+@cindex whitespace
+@item
+PCC allows whitespace in the middle of compound assignment operators
+such as @samp{+=}. GNU CC, following the ANSI standard, does not
+allow this. The difficulty described immediately above applies here
+too.
+
+@cindex apostrophes
+@cindex '
+@item
+GNU CC complains about unterminated character constants inside of
+preprocessing conditionals that fail. Some programs have English
+comments enclosed in conditionals that are guaranteed to fail; if these
+comments contain apostrophes, GNU CC will probably report an error. For
+example, this code would produce an error:
+
+@example
+#if 0
+You can't expect this to work.
+#endif
+@end example
+
+The best solution to such a problem is to put the text into an actual
+C comment delimited by @samp{/*@dots{}*/}. However,
+@samp{-traditional} suppresses these error messages.
+
+@item
+Many user programs contain the declaration @samp{long time ();}. In the
+past, the system header files on many systems did not actually declare
+@code{time}, so it did not matter what type your program declared it to
+return. But in systems with ANSI C headers, @code{time} is declared to
+return @code{time_t}, and if that is not the same as @code{long}, then
+@samp{long time ();} is erroneous.
+
+The solution is to change your program to use @code{time_t} as the return
+type of @code{time}.
+
+@cindex @code{float} as function value type
+@item
+When compiling functions that return @code{float}, PCC converts it to
+a double. GNU CC actually returns a @code{float}. If you are concerned
+with PCC compatibility, you should declare your functions to return
+@code{double}; you might as well say what you mean.
+
+@cindex structures
+@cindex unions
+@item
+When compiling functions that return structures or unions, GNU CC
+output code normally uses a method different from that used on most
+versions of Unix. As a result, code compiled with GNU CC cannot call
+a structure-returning function compiled with PCC, and vice versa.
+
+The method used by GNU CC is as follows: a structure or union which is
+1, 2, 4 or 8 bytes long is returned like a scalar. A structure or union
+with any other size is stored into an address supplied by the caller
+(usually in a special, fixed register, but on some machines it is passed
+on the stack). The machine-description macros @code{STRUCT_VALUE} and
+@code{STRUCT_INCOMING_VALUE} tell GNU CC where to pass this address.
+
+By contrast, PCC on most target machines returns structures and unions
+of any size by copying the data into an area of static storage, and then
+returning the address of that storage as if it were a pointer value.
+The caller must copy the data from that memory area to the place where
+the value is wanted. GNU CC does not use this method because it is
+slower and nonreentrant.
+
+On some newer machines, PCC uses a reentrant convention for all
+structure and union returning. GNU CC on most of these machines uses a
+compatible convention when returning structures and unions in memory,
+but still returns small structures and unions in registers.
+
+You can tell GNU CC to use a compatible convention for all structure and
+union returning with the option @samp{-fpcc-struct-return}.
+
+@cindex preprocessing tokens
+@cindex preprocessing numbers
+@item
+GNU C complains about program fragments such as @samp{0x74ae-0x4000}
+which appear to be two hexadecimal constants separated by the minus
+operator. Actually, this string is a single @dfn{preprocessing token}.
+Each such token must correspond to one token in C. Since this does not,
+GNU C prints an error message. Although it may appear obvious that what
+is meant is an operator and two values, the ANSI C standard specifically
+requires that this be treated as erroneous.
+
+A @dfn{preprocessing token} is a @dfn{preprocessing number} if it
+begins with a digit and is followed by letters, underscores, digits,
+periods and @samp{e+}, @samp{e-}, @samp{E+}, or @samp{E-} character
+sequences.
+
+To make the above program fragment valid, place whitespace in front of
+the minus sign. This whitespace will end the preprocessing number.
+@end itemize
+
+@node Fixed Headers
+@section Fixed Header Files
+
+GNU CC needs to install corrected versions of some system header files.
+This is because most target systems have some header files that won't
+work with GNU CC unless they are changed. Some have bugs, some are
+incompatible with ANSI C, and some depend on special features of other
+compilers.
+
+Installing GNU CC automatically creates and installs the fixed header
+files, by running a program called @code{fixincludes} (or for certain
+targets an alternative such as @code{fixinc.svr4}). Normally, you
+don't need to pay attention to this. But there are cases where it
+doesn't do the right thing automatically.
+
+@itemize @bullet
+@item
+If you update the system's header files, such as by installing a new
+system version, the fixed header files of GNU CC are not automatically
+updated. The easiest way to update them is to reinstall GNU CC. (If
+you want to be clever, look in the makefile and you can find a
+shortcut.)
+
+@item
+On some systems, in particular SunOS 4, header file directories contain
+machine-specific symbolic links in certain places. This makes it
+possible to share most of the header files among hosts running the
+same version of SunOS 4 on different machine models.
+
+The programs that fix the header files do not understand this special
+way of using symbolic links; therefore, the directory of fixed header
+files is good only for the machine model used to build it.
+
+In SunOS 4, only programs that look inside the kernel will notice the
+difference between machine models. Therefore, for most purposes, you
+need not be concerned about this.
+
+It is possible to make separate sets of fixed header files for the
+different machine models, and arrange a structure of symbolic links so
+as to use the proper set, but you'll have to do this by hand.
+
+@item
+On Lynxos, GNU CC by default does not fix the header files. This is
+because bugs in the shell cause the @code{fixincludes} script to fail.
+
+This means you will encounter problems due to bugs in the system header
+files. It may be no comfort that they aren't GNU CC's fault, but it
+does mean that there's nothing for us to do about them.
+@end itemize
+
+@node Standard Libraries
+@section Standard Libraries
+
+GNU CC by itself attempts to be what the ISO/ANSI C standard calls a
+@dfn{conforming freestanding implementation}. This means all ANSI
+C language features are available, as well as the contents of
+@file{float.h}, @file{limits.h}, @file{stdarg.h}, and
+@file{stddef.h}. The rest of the C library is supplied by the
+vendor of the operating system. If that C library doesn't conform to
+the C standards, then your programs might get warnings (especially when
+using @samp{-Wall}) that you don't expect.
+
+For example, the @code{sprintf} function on SunOS 4.1.3 returns
+@code{char *} while the C standard says that @code{sprintf} returns an
+@code{int}. The @code{fixincludes} program could make the prototype for
+this function match the Standard, but that would be wrong, since the
+function will still return @code{char *}.
+
+If you need a Standard compliant library, then you need to find one, as
+GNU CC does not provide one. The GNU C library (called @code{glibc})
+has been ported to a number of operating systems, and provides ANSI/ISO,
+POSIX, BSD and SystemV compatibility. You could also ask your operating
+system vendor if newer libraries are available.
+
+@node Disappointments
+@section Disappointments and Misunderstandings
+
+These problems are perhaps regrettable, but we don't know any practical
+way around them.
+
+@itemize @bullet
+@item
+Certain local variables aren't recognized by debuggers when you compile
+with optimization.
+
+This occurs because sometimes GNU CC optimizes the variable out of
+existence. There is no way to tell the debugger how to compute the
+value such a variable ``would have had'', and it is not clear that would
+be desirable anyway. So GNU CC simply does not mention the eliminated
+variable when it writes debugging information.
+
+You have to expect a certain amount of disagreement between the
+executable and your source code, when you use optimization.
+
+@cindex conflicting types
+@cindex scope of declaration
+@item
+Users often think it is a bug when GNU CC reports an error for code
+like this:
+
+@example
+int foo (struct mumble *);
+
+struct mumble @{ @dots{} @};
+
+int foo (struct mumble *x)
+@{ @dots{} @}
+@end example
+
+This code really is erroneous, because the scope of @code{struct
+mumble} in the prototype is limited to the argument list containing it.
+It does not refer to the @code{struct mumble} defined with file scope
+immediately below---they are two unrelated types with similar names in
+different scopes.
+
+But in the definition of @code{foo}, the file-scope type is used
+because that is available to be inherited. Thus, the definition and
+the prototype do not match, and you get an error.
+
+This behavior may seem silly, but it's what the ANSI standard specifies.
+It is easy enough for you to make your code work by moving the
+definition of @code{struct mumble} above the prototype. It's not worth
+being incompatible with ANSI C just to avoid an error for the example
+shown above.
+
+@item
+Accesses to bitfields even in volatile objects works by accessing larger
+objects, such as a byte or a word. You cannot rely on what size of
+object is accessed in order to read or write the bitfield; it may even
+vary for a given bitfield according to the precise usage.
+
+If you care about controlling the amount of memory that is accessed, use
+volatile but do not use bitfields.
+
+@item
+GNU CC comes with shell scripts to fix certain known problems in system
+header files. They install corrected copies of various header files in
+a special directory where only GNU CC will normally look for them. The
+scripts adapt to various systems by searching all the system header
+files for the problem cases that we know about.
+
+If new system header files are installed, nothing automatically arranges
+to update the corrected header files. You will have to reinstall GNU CC
+to fix the new header files. More specifically, go to the build
+directory and delete the files @file{stmp-fixinc} and
+@file{stmp-headers}, and the subdirectory @code{include}; then do
+@samp{make install} again.
+
+@item
+@cindex floating point precision
+On 68000 and x86 systems, for instance, you can get paradoxical results
+if you test the precise values of floating point numbers. For example,
+you can find that a floating point value which is not a NaN is not equal
+to itself. This results from the fact that the floating point registers
+hold a few more bits of precision than fit in a @code{double} in memory.
+Compiled code moves values between memory and floating point registers
+at its convenience, and moving them into memory truncates them.
+
+You can partially avoid this problem by using the @samp{-ffloat-store}
+option (@pxref{Optimize Options}).
+
+@item
+On the MIPS, variable argument functions using @file{varargs.h}
+cannot have a floating point value for the first argument. The
+reason for this is that in the absence of a prototype in scope,
+if the first argument is a floating point, it is passed in a
+floating point register, rather than an integer register.
+
+If the code is rewritten to use the ANSI standard @file{stdarg.h}
+method of variable arguments, and the prototype is in scope at
+the time of the call, everything will work fine.
+
+@item
+On the H8/300 and H8/300H, variable argument functions must be
+implemented using the ANSI standard @file{stdarg.h} method of
+variable arguments. Furthermore, calls to functions using @file{stdarg.h}
+variable arguments must have a prototype for the called function
+in scope at the time of the call.
+@end itemize
+
+@node C++ Misunderstandings
+@section Common Misunderstandings with GNU C++
+
+@cindex misunderstandings in C++
+@cindex surprises in C++
+@cindex C++ misunderstandings
+C++ is a complex language and an evolving one, and its standard definition
+(the ANSI C++ draft standard) is also evolving. As a result,
+your C++ compiler may occasionally surprise you, even when its behavior is
+correct. This section discusses some areas that frequently give rise to
+questions of this sort.
+
+@menu
+* Static Definitions:: Static member declarations are not definitions
+* Temporaries:: Temporaries may vanish before you expect
+@end menu
+
+@node Static Definitions
+@subsection Declare @emph{and} Define Static Members
+
+@cindex C++ static data, declaring and defining
+@cindex static data in C++, declaring and defining
+@cindex declaring static data in C++
+@cindex defining static data in C++
+When a class has static data members, it is not enough to @emph{declare}
+the static member; you must also @emph{define} it. For example:
+
+@example
+class Foo
+@{
+ @dots{}
+ void method();
+ static int bar;
+@};
+@end example
+
+This declaration only establishes that the class @code{Foo} has an
+@code{int} named @code{Foo::bar}, and a member function named
+@code{Foo::method}. But you still need to define @emph{both}
+@code{method} and @code{bar} elsewhere. According to the draft ANSI
+standard, you must supply an initializer in one (and only one) source
+file, such as:
+
+@example
+int Foo::bar = 0;
+@end example
+
+Other C++ compilers may not correctly implement the standard behavior.
+As a result, when you switch to @code{g++} from one of these compilers,
+you may discover that a program that appeared to work correctly in fact
+does not conform to the standard: @code{g++} reports as undefined
+symbols any static data members that lack definitions.
+
+@node Temporaries
+@subsection Temporaries May Vanish Before You Expect
+
+@cindex temporaries, lifetime of
+@cindex portions of temporary objects, pointers to
+It is dangerous to use pointers or references to @emph{portions} of a
+temporary object. The compiler may very well delete the object before
+you expect it to, leaving a pointer to garbage. The most common place
+where this problem crops up is in classes like the libg++
+@code{String} class, that define a conversion function to type
+@code{char *} or @code{const char *}. However, any class that returns
+a pointer to some internal structure is potentially subject to this
+problem.
+
+For example, a program may use a function @code{strfunc} that returns
+@code{String} objects, and another function @code{charfunc} that
+operates on pointers to @code{char}:
+
+@example
+String strfunc ();
+void charfunc (const char *);
+@end example
+
+@noindent
+In this situation, it may seem natural to write @w{@samp{charfunc
+(strfunc ());}} based on the knowledge that class @code{String} has an
+explicit conversion to @code{char} pointers. However, what really
+happens is akin to @samp{charfunc (@w{strfunc ()}.@w{convert ()});},
+where the @code{convert} method is a function to do the same data
+conversion normally performed by a cast. Since the last use of the
+temporary @code{String} object is the call to the conversion function,
+the compiler may delete that object before actually calling
+@code{charfunc}. The compiler has no way of knowing that deleting the
+@code{String} object will invalidate the pointer. The pointer then
+points to garbage, so that by the time @code{charfunc} is called, it
+gets an invalid argument.
+
+Code like this may run successfully under some other compilers,
+especially those that delete temporaries relatively late. However, the
+GNU C++ behavior is also standard-conforming, so if your program depends
+on late destruction of temporaries it is not portable.
+
+If you think this is surprising, you should be aware that the ANSI C++
+committee continues to debate the lifetime-of-temporaries problem.
+
+For now, at least, the safe way to write such code is to give the
+temporary a name, which forces it to remain until the end of the scope of
+the name. For example:
+
+@example
+String& tmp = strfunc ();
+charfunc (tmp);
+@end example
+
+@node Protoize Caveats
+@section Caveats of using @code{protoize}
+
+The conversion programs @code{protoize} and @code{unprotoize} can
+sometimes change a source file in a way that won't work unless you
+rearrange it.
+
+@itemize @bullet
+@item
+@code{protoize} can insert references to a type name or type tag before
+the definition, or in a file where they are not defined.
+
+If this happens, compiler error messages should show you where the new
+references are, so fixing the file by hand is straightforward.
+
+@item
+There are some C constructs which @code{protoize} cannot figure out.
+For example, it can't determine argument types for declaring a
+pointer-to-function variable; this you must do by hand. @code{protoize}
+inserts a comment containing @samp{???} each time it finds such a
+variable; so you can find all such variables by searching for this
+string. ANSI C does not require declaring the argument types of
+pointer-to-function types.
+
+@item
+Using @code{unprotoize} can easily introduce bugs. If the program
+relied on prototypes to bring about conversion of arguments, these
+conversions will not take place in the program without prototypes.
+One case in which you can be sure @code{unprotoize} is safe is when
+you are removing prototypes that were made with @code{protoize}; if
+the program worked before without any prototypes, it will work again
+without them.
+
+You can find all the places where this problem might occur by compiling
+the program with the @samp{-Wconversion} option. It prints a warning
+whenever an argument is converted.
+
+@item
+Both conversion programs can be confused if there are macro calls in and
+around the text to be converted. In other words, the standard syntax
+for a declaration or definition must not result from expanding a macro.
+This problem is inherent in the design of C and cannot be fixed. If
+only a few functions have confusing macro calls, you can easily convert
+them manually.
+
+@item
+@code{protoize} cannot get the argument types for a function whose
+definition was not actually compiled due to preprocessing conditionals.
+When this happens, @code{protoize} changes nothing in regard to such
+a function. @code{protoize} tries to detect such instances and warn
+about them.
+
+You can generally work around this problem by using @code{protoize} step
+by step, each time specifying a different set of @samp{-D} options for
+compilation, until all of the functions have been converted. There is
+no automatic way to verify that you have got them all, however.
+
+@item
+Confusion may result if there is an occasion to convert a function
+declaration or definition in a region of source code where there is more
+than one formal parameter list present. Thus, attempts to convert code
+containing multiple (conditionally compiled) versions of a single
+function header (in the same vicinity) may not produce the desired (or
+expected) results.
+
+If you plan on converting source files which contain such code, it is
+recommended that you first make sure that each conditionally compiled
+region of source code which contains an alternative function header also
+contains at least one additional follower token (past the final right
+parenthesis of the function header). This should circumvent the
+problem.
+
+@item
+@code{unprotoize} can become confused when trying to convert a function
+definition or declaration which contains a declaration for a
+pointer-to-function formal argument which has the same name as the
+function being defined or declared. We recommand you avoid such choices
+of formal parameter names.
+
+@item
+You might also want to correct some of the indentation by hand and break
+long lines. (The conversion programs don't write lines longer than
+eighty characters in any case.)
+@end itemize
+
+@node Non-bugs
+@section Certain Changes We Don't Want to Make
+
+This section lists changes that people frequently request, but which
+we do not make because we think GNU CC is better without them.
+
+@itemize @bullet
+@item
+Checking the number and type of arguments to a function which has an
+old-fashioned definition and no prototype.
+
+Such a feature would work only occasionally---only for calls that appear
+in the same file as the called function, following the definition. The
+only way to check all calls reliably is to add a prototype for the
+function. But adding a prototype eliminates the motivation for this
+feature. So the feature is not worthwhile.
+
+@item
+Warning about using an expression whose type is signed as a shift count.
+
+Shift count operands are probably signed more often than unsigned.
+Warning about this would cause far more annoyance than good.
+
+@item
+Warning about assigning a signed value to an unsigned variable.
+
+Such assignments must be very common; warning about them would cause
+more annoyance than good.
+
+@item
+Warning about unreachable code.
+
+It's very common to have unreachable code in machine-generated
+programs. For example, this happens normally in some files of GNU C
+itself.
+
+@item
+Warning when a non-void function value is ignored.
+
+Coming as I do from a Lisp background, I balk at the idea that there is
+something dangerous about discarding a value. There are functions that
+return values which some callers may find useful; it makes no sense to
+clutter the program with a cast to @code{void} whenever the value isn't
+useful.
+
+@item
+Assuming (for optimization) that the address of an external symbol is
+never zero.
+
+This assumption is false on certain systems when @samp{#pragma weak} is
+used.
+
+@item
+Making @samp{-fshort-enums} the default.
+
+This would cause storage layout to be incompatible with most other C
+compilers. And it doesn't seem very important, given that you can get
+the same result in other ways. The case where it matters most is when
+the enumeration-valued object is inside a structure, and in that case
+you can specify a field width explicitly.
+
+@item
+Making bitfields unsigned by default on particular machines where ``the
+ABI standard'' says to do so.
+
+The ANSI C standard leaves it up to the implementation whether a bitfield
+declared plain @code{int} is signed or not. This in effect creates two
+alternative dialects of C.
+
+The GNU C compiler supports both dialects; you can specify the signed
+dialect with @samp{-fsigned-bitfields} and the unsigned dialect with
+@samp{-funsigned-bitfields}. However, this leaves open the question of
+which dialect to use by default.
+
+Currently, the preferred dialect makes plain bitfields signed, because
+this is simplest. Since @code{int} is the same as @code{signed int} in
+every other context, it is cleanest for them to be the same in bitfields
+as well.
+
+Some computer manufacturers have published Application Binary Interface
+standards which specify that plain bitfields should be unsigned. It is
+a mistake, however, to say anything about this issue in an ABI. This is
+because the handling of plain bitfields distinguishes two dialects of C.
+Both dialects are meaningful on every type of machine. Whether a
+particular object file was compiled using signed bitfields or unsigned
+is of no concern to other object files, even if they access the same
+bitfields in the same data structures.
+
+A given program is written in one or the other of these two dialects.
+The program stands a chance to work on most any machine if it is
+compiled with the proper dialect. It is unlikely to work at all if
+compiled with the wrong dialect.
+
+Many users appreciate the GNU C compiler because it provides an
+environment that is uniform across machines. These users would be
+inconvenienced if the compiler treated plain bitfields differently on
+certain machines.
+
+Occasionally users write programs intended only for a particular machine
+type. On these occasions, the users would benefit if the GNU C compiler
+were to support by default the same dialect as the other compilers on
+that machine. But such applications are rare. And users writing a
+program to run on more than one type of machine cannot possibly benefit
+from this kind of compatibility.
+
+This is why GNU CC does and will treat plain bitfields in the same
+fashion on all types of machines (by default).
+
+There are some arguments for making bitfields unsigned by default on all
+machines. If, for example, this becomes a universal de facto standard,
+it would make sense for GNU CC to go along with it. This is something
+to be considered in the future.
+
+(Of course, users strongly concerned about portability should indicate
+explicitly in each bitfield whether it is signed or not. In this way,
+they write programs which have the same meaning in both C dialects.)
+
+@item
+Undefining @code{__STDC__} when @samp{-ansi} is not used.
+
+Currently, GNU CC defines @code{__STDC__} as long as you don't use
+@samp{-traditional}. This provides good results in practice.
+
+Programmers normally use conditionals on @code{__STDC__} to ask whether
+it is safe to use certain features of ANSI C, such as function
+prototypes or ANSI token concatenation. Since plain @samp{gcc} supports
+all the features of ANSI C, the correct answer to these questions is
+``yes''.
+
+Some users try to use @code{__STDC__} to check for the availability of
+certain library facilities. This is actually incorrect usage in an ANSI
+C program, because the ANSI C standard says that a conforming
+freestanding implementation should define @code{__STDC__} even though it
+does not have the library facilities. @samp{gcc -ansi -pedantic} is a
+conforming freestanding implementation, and it is therefore required to
+define @code{__STDC__}, even though it does not come with an ANSI C
+library.
+
+Sometimes people say that defining @code{__STDC__} in a compiler that
+does not completely conform to the ANSI C standard somehow violates the
+standard. This is illogical. The standard is a standard for compilers
+that claim to support ANSI C, such as @samp{gcc -ansi}---not for other
+compilers such as plain @samp{gcc}. Whatever the ANSI C standard says
+is relevant to the design of plain @samp{gcc} without @samp{-ansi} only
+for pragmatic reasons, not as a requirement.
+
+@item
+Undefining @code{__STDC__} in C++.
+
+Programs written to compile with C++-to-C translators get the
+value of @code{__STDC__} that goes with the C compiler that is
+subsequently used. These programs must test @code{__STDC__}
+to determine what kind of C preprocessor that compiler uses:
+whether they should concatenate tokens in the ANSI C fashion
+or in the traditional fashion.
+
+These programs work properly with GNU C++ if @code{__STDC__} is defined.
+They would not work otherwise.
+
+In addition, many header files are written to provide prototypes in ANSI
+C but not in traditional C. Many of these header files can work without
+change in C++ provided @code{__STDC__} is defined. If @code{__STDC__}
+is not defined, they will all fail, and will all need to be changed to
+test explicitly for C++ as well.
+
+@item
+Deleting ``empty'' loops.
+
+GNU CC does not delete ``empty'' loops because the most likely reason
+you would put one in a program is to have a delay. Deleting them will
+not make real programs run any faster, so it would be pointless.
+
+It would be different if optimization of a nonempty loop could produce
+an empty one. But this generally can't happen.
+
+@item
+Making side effects happen in the same order as in some other compiler.
+
+@cindex side effects, order of evaluation
+@cindex order of evaluation, side effects
+It is never safe to depend on the order of evaluation of side effects.
+For example, a function call like this may very well behave differently
+from one compiler to another:
+
+@example
+void func (int, int);
+
+int i = 2;
+func (i++, i++);
+@end example
+
+There is no guarantee (in either the C or the C++ standard language
+definitions) that the increments will be evaluated in any particular
+order. Either increment might happen first. @code{func} might get the
+arguments @samp{2, 3}, or it might get @samp{3, 2}, or even @samp{2, 2}.
+
+@item
+Not allowing structures with volatile fields in registers.
+
+Strictly speaking, there is no prohibition in the ANSI C standard
+against allowing structures with volatile fields in registers, but
+it does not seem to make any sense and is probably not what you wanted
+to do. So the compiler will give an error message in this case.
+@end itemize
+
+@node Warnings and Errors
+@section Warning Messages and Error Messages
+
+@cindex error messages
+@cindex warnings vs errors
+@cindex messages, warning and error
+The GNU compiler can produce two kinds of diagnostics: errors and
+warnings. Each kind has a different purpose:
+
+@itemize @w{}
+@item
+@emph{Errors} report problems that make it impossible to compile your
+program. GNU CC reports errors with the source file name and line
+number where the problem is apparent.
+
+@item
+@emph{Warnings} report other unusual conditions in your code that
+@emph{may} indicate a problem, although compilation can (and does)
+proceed. Warning messages also report the source file name and line
+number, but include the text @samp{warning:} to distinguish them
+from error messages.
+@end itemize
+
+Warnings may indicate danger points where you should check to make sure
+that your program really does what you intend; or the use of obsolete
+features; or the use of nonstandard features of GNU C or C++. Many
+warnings are issued only if you ask for them, with one of the @samp{-W}
+options (for instance, @samp{-Wall} requests a variety of useful
+warnings).
+
+GNU CC always tries to compile your program if possible; it never
+gratuitously rejects a program whose meaning is clear merely because
+(for instance) it fails to conform to a standard. In some cases,
+however, the C and C++ standards specify that certain extensions are
+forbidden, and a diagnostic @emph{must} be issued by a conforming
+compiler. The @samp{-pedantic} option tells GNU CC to issue warnings in
+such cases; @samp{-pedantic-errors} says to make them errors instead.
+This does not mean that @emph{all} non-ANSI constructs get warnings
+or errors.
+
+@xref{Warning Options,,Options to Request or Suppress Warnings}, for
+more detail on these and related command-line options.
+
+@node Bugs
+@chapter Reporting Bugs
+@cindex bugs
+@cindex reporting bugs
+
+Your bug reports play an essential role in making GNU CC reliable.
+
+When you encounter a problem, the first thing to do is to see if it is
+already known. @xref{Trouble}. If it isn't known, then you should
+report the problem.
+
+Reporting a bug may help you by bringing a solution to your problem, or
+it may not. (If it does not, look in the service directory; see
+@ref{Service}.) In any case, the principal function of a bug report is
+to help the entire community by making the next version of GNU CC work
+better. Bug reports are your contribution to the maintenance of GNU CC.
+
+Since the maintainers are very overloaded, we cannot respond to every
+bug report. However, if the bug has not been fixed, we are likely to
+send you a patch and ask you to tell us whether it works.
+
+In order for a bug report to serve its purpose, you must include the
+information that makes for fixing the bug.
+
+@menu
+* Criteria: Bug Criteria. Have you really found a bug?
+* Where: Bug Lists. Where to send your bug report.
+* Reporting: Bug Reporting. How to report a bug effectively.
+* Patches: Sending Patches. How to send a patch for GNU CC.
+* Known: Trouble. Known problems.
+* Help: Service. Where to ask for help.
+@end menu
+
+@node Bug Criteria
+@section Have You Found a Bug?
+@cindex bug criteria
+
+If you are not sure whether you have found a bug, here are some guidelines:
+
+@itemize @bullet
+@cindex fatal signal
+@cindex core dump
+@item
+If the compiler gets a fatal signal, for any input whatever, that is a
+compiler bug. Reliable compilers never crash.
+
+@cindex invalid assembly code
+@cindex assembly code, invalid
+@item
+If the compiler produces invalid assembly code, for any input whatever
+(except an @code{asm} statement), that is a compiler bug, unless the
+compiler reports errors (not just warnings) which would ordinarily
+prevent the assembler from being run.
+
+@cindex undefined behavior
+@cindex undefined function value
+@cindex increment operators
+@item
+If the compiler produces valid assembly code that does not correctly
+execute the input source code, that is a compiler bug.
+
+However, you must double-check to make sure, because you may have run
+into an incompatibility between GNU C and traditional C
+(@pxref{Incompatibilities}). These incompatibilities might be considered
+bugs, but they are inescapable consequences of valuable features.
+
+Or you may have a program whose behavior is undefined, which happened
+by chance to give the desired results with another C or C++ compiler.
+
+For example, in many nonoptimizing compilers, you can write @samp{x;}
+at the end of a function instead of @samp{return x;}, with the same
+results. But the value of the function is undefined if @code{return}
+is omitted; it is not a bug when GNU CC produces different results.
+
+Problems often result from expressions with two increment operators,
+as in @code{f (*p++, *p++)}. Your previous compiler might have
+interpreted that expression the way you intended; GNU CC might
+interpret it another way. Neither compiler is wrong. The bug is
+in your code.
+
+After you have localized the error to a single source line, it should
+be easy to check for these things. If your program is correct and
+well defined, you have found a compiler bug.
+
+@item
+If the compiler produces an error message for valid input, that is a
+compiler bug.
+
+@cindex invalid input
+@item
+If the compiler does not produce an error message for invalid input,
+that is a compiler bug. However, you should note that your idea of
+``invalid input'' might be my idea of ``an extension'' or ``support
+for traditional practice''.
+
+@item
+If you are an experienced user of C or C++ compilers, your suggestions
+for improvement of GNU CC or GNU C++ are welcome in any case.
+@end itemize
+
+@node Bug Lists
+@section Where to Report Bugs
+@cindex bug report mailing lists
+@kindex bug-gcc@@prep.ai.mit.edu
+Send bug reports for GNU C to @samp{bug-gcc@@prep.ai.mit.edu}.
+
+@kindex bug-g++@@prep.ai.mit.edu
+@kindex bug-libg++@@prep.ai.mit.edu
+Send bug reports for GNU C++ to @samp{bug-g++@@prep.ai.mit.edu}. If
+your bug involves the C++ class library libg++, send mail instead to the
+address @samp{bug-lib-g++@@prep.ai.mit.edu}. If you're not sure, you
+can send the bug report to both lists.
+
+@strong{Do not send bug reports to @samp{help-gcc@@prep.ai.mit.edu} or
+to the newsgroup @samp{gnu.gcc.help}.} Most users of GNU CC do not want
+to receive bug reports. Those that do, have asked to be on
+@samp{bug-gcc} and/or @samp{bug-g++}.
+
+The mailing lists @samp{bug-gcc} and @samp{bug-g++} both have newsgroups
+which serve as repeaters: @samp{gnu.gcc.bug} and @samp{gnu.g++.bug}.
+Each mailing list and its newsgroup carry exactly the same messages.
+
+Often people think of posting bug reports to the newsgroup instead of
+mailing them. This appears to work, but it has one problem which can be
+crucial: a newsgroup posting does not contain a mail path back to the
+sender. Thus, if maintainers need more information, they may be unable
+to reach you. For this reason, you should always send bug reports by
+mail to the proper mailing list.
+
+As a last resort, send bug reports on paper to:
+
+@example
+GNU Compiler Bugs
+Free Software Foundation
+59 Temple Place - Suite 330
+Boston, MA 02111-1307, USA
+@end example
+
+@node Bug Reporting
+@section How to Report Bugs
+@cindex compiler bugs, reporting
+
+The fundamental principle of reporting bugs usefully is this:
+@strong{report all the facts}. If you are not sure whether to state a
+fact or leave it out, state it!
+
+Often people omit facts because they think they know what causes the
+problem and they conclude that some details don't matter. Thus, you might
+assume that the name of the variable you use in an example does not matter.
+Well, probably it doesn't, but one cannot be sure. Perhaps the bug is a
+stray memory reference which happens to fetch from the location where that
+name is stored in memory; perhaps, if the name were different, the contents
+of that location would fool the compiler into doing the right thing despite
+the bug. Play it safe and give a specific, complete example. That is the
+easiest thing for you to do, and the most helpful.
+
+Keep in mind that the purpose of a bug report is to enable someone to
+fix the bug if it is not known. It isn't very important what happens if
+the bug is already known. Therefore, always write your bug reports on
+the assumption that the bug is not known.
+
+Sometimes people give a few sketchy facts and ask, ``Does this ring a
+bell?'' This cannot help us fix a bug, so it is basically useless. We
+respond by asking for enough details to enable us to investigate.
+You might as well expedite matters by sending them to begin with.
+
+Try to make your bug report self-contained. If we have to ask you for
+more information, it is best if you include all the previous information
+in your response, as well as the information that was missing.
+
+Please report each bug in a separate message. This makes it easier for
+us to track which bugs have been fixed and to forward your bugs reports
+to the appropriate maintainer.
+
+Do not compress and encode any part of your bug report using programs
+such as @file{uuencode}. If you do so it will slow down the processing
+of your bug. If you must submit multiple large files, use @file{shar},
+which allows us to read your message without having to run any
+decompression programs.
+
+To enable someone to investigate the bug, you should include all these
+things:
+
+@itemize @bullet
+@item
+The version of GNU CC. You can get this by running it with the
+@samp{-v} option.
+
+Without this, we won't know whether there is any point in looking for
+the bug in the current version of GNU CC.
+
+@item
+A complete input file that will reproduce the bug. If the bug is in the
+C preprocessor, send a source file and any header files that it
+requires. If the bug is in the compiler proper (@file{cc1}), run your
+source file through the C preprocessor by doing @samp{gcc -E
+@var{sourcefile} > @var{outfile}}, then include the contents of
+@var{outfile} in the bug report. (When you do this, use the same
+@samp{-I}, @samp{-D} or @samp{-U} options that you used in actual
+compilation.)
+
+A single statement is not enough of an example. In order to compile it,
+it must be embedded in a complete file of compiler input; and the bug
+might depend on the details of how this is done.
+
+Without a real example one can compile, all anyone can do about your bug
+report is wish you luck. It would be futile to try to guess how to
+provoke the bug. For example, bugs in register allocation and reloading
+frequently depend on every little detail of the function they happen in.
+
+Even if the input file that fails comes from a GNU program, you should
+still send the complete test case. Don't ask the GNU CC maintainers to
+do the extra work of obtaining the program in question---they are all
+overworked as it is. Also, the problem may depend on what is in the
+header files on your system; it is unreliable for the GNU CC maintainers
+to try the problem with the header files available to them. By sending
+CPP output, you can eliminate this source of uncertainty and save us
+a certain percentage of wild goose chases.
+
+@item
+The command arguments you gave GNU CC or GNU C++ to compile that example
+and observe the bug. For example, did you use @samp{-O}? To guarantee
+you won't omit something important, list all the options.
+
+If we were to try to guess the arguments, we would probably guess wrong
+and then we would not encounter the bug.
+
+@item
+The type of machine you are using, and the operating system name and
+version number.
+
+@item
+The operands you gave to the @code{configure} command when you installed
+the compiler.
+
+@item
+A complete list of any modifications you have made to the compiler
+source. (We don't promise to investigate the bug unless it happens in
+an unmodified compiler. But if you've made modifications and don't tell
+us, then you are sending us on a wild goose chase.)
+
+Be precise about these changes. A description in English is not
+enough---send a context diff for them.
+
+Adding files of your own (such as a machine description for a machine we
+don't support) is a modification of the compiler source.
+
+@item
+Details of any other deviations from the standard procedure for installing
+GNU CC.
+
+@item
+A description of what behavior you observe that you believe is
+incorrect. For example, ``The compiler gets a fatal signal,'' or,
+``The assembler instruction at line 208 in the output is incorrect.''
+
+Of course, if the bug is that the compiler gets a fatal signal, then one
+can't miss it. But if the bug is incorrect output, the maintainer might
+not notice unless it is glaringly wrong. None of us has time to study
+all the assembler code from a 50-line C program just on the chance that
+one instruction might be wrong. We need @emph{you} to do this part!
+
+Even if the problem you experience is a fatal signal, you should still
+say so explicitly. Suppose something strange is going on, such as, your
+copy of the compiler is out of synch, or you have encountered a bug in
+the C library on your system. (This has happened!) Your copy might
+crash and the copy here would not. If you @i{said} to expect a crash,
+then when the compiler here fails to crash, we would know that the bug
+was not happening. If you don't say to expect a crash, then we would
+not know whether the bug was happening. We would not be able to draw
+any conclusion from our observations.
+
+If the problem is a diagnostic when compiling GNU CC with some other
+compiler, say whether it is a warning or an error.
+
+Often the observed symptom is incorrect output when your program is run.
+Sad to say, this is not enough information unless the program is short
+and simple. None of us has time to study a large program to figure out
+how it would work if compiled correctly, much less which line of it was
+compiled wrong. So you will have to do that. Tell us which source line
+it is, and what incorrect result happens when that line is executed. A
+person who understands the program can find this as easily as finding a
+bug in the program itself.
+
+@item
+If you send examples of assembler code output from GNU CC or GNU C++,
+please use @samp{-g} when you make them. The debugging information
+includes source line numbers which are essential for correlating the
+output with the input.
+
+@item
+If you wish to mention something in the GNU CC source, refer to it by
+context, not by line number.
+
+The line numbers in the development sources don't match those in your
+sources. Your line numbers would convey no useful information to the
+maintainers.
+
+@item
+Additional information from a debugger might enable someone to find a
+problem on a machine which he does not have available. However, you
+need to think when you collect this information if you want it to have
+any chance of being useful.
+
+@cindex backtrace for bug reports
+For example, many people send just a backtrace, but that is never
+useful by itself. A simple backtrace with arguments conveys little
+about GNU CC because the compiler is largely data-driven; the same
+functions are called over and over for different RTL insns, doing
+different things depending on the details of the insn.
+
+Most of the arguments listed in the backtrace are useless because they
+are pointers to RTL list structure. The numeric values of the
+pointers, which the debugger prints in the backtrace, have no
+significance whatever; all that matters is the contents of the objects
+they point to (and most of the contents are other such pointers).
+
+In addition, most compiler passes consist of one or more loops that
+scan the RTL insn sequence. The most vital piece of information about
+such a loop---which insn it has reached---is usually in a local variable,
+not in an argument.
+
+@findex debug_rtx
+What you need to provide in addition to a backtrace are the values of
+the local variables for several stack frames up. When a local
+variable or an argument is an RTX, first print its value and then use
+the GDB command @code{pr} to print the RTL expression that it points
+to. (If GDB doesn't run on your machine, use your debugger to call
+the function @code{debug_rtx} with the RTX as an argument.) In
+general, whenever a variable is a pointer, its value is no use
+without the data it points to.
+@end itemize
+
+Here are some things that are not necessary:
+
+@itemize @bullet
+@item
+A description of the envelope of the bug.
+
+Often people who encounter a bug spend a lot of time investigating
+which changes to the input file will make the bug go away and which
+changes will not affect it.
+
+This is often time consuming and not very useful, because the way we
+will find the bug is by running a single example under the debugger with
+breakpoints, not by pure deduction from a series of examples. You might
+as well save your time for something else.
+
+Of course, if you can find a simpler example to report @emph{instead} of
+the original one, that is a convenience. Errors in the output will be
+easier to spot, running under the debugger will take less time, etc.
+Most GNU CC bugs involve just one function, so the most straightforward
+way to simplify an example is to delete all the function definitions
+except the one where the bug occurs. Those earlier in the file may be
+replaced by external declarations if the crucial function depends on
+them. (Exception: inline functions may affect compilation of functions
+defined later in the file.)
+
+However, simplification is not vital; if you don't want to do this,
+report the bug anyway and send the entire test case you used.
+
+@item
+In particular, some people insert conditionals @samp{#ifdef BUG} around
+a statement which, if removed, makes the bug not happen. These are just
+clutter; we won't pay any attention to them anyway. Besides, you should
+send us cpp output, and that can't have conditionals.
+
+@item
+A patch for the bug.
+
+A patch for the bug is useful if it is a good one. But don't omit the
+necessary information, such as the test case, on the assumption that a
+patch is all we need. We might see problems with your patch and decide
+to fix the problem another way, or we might not understand it at all.
+
+Sometimes with a program as complicated as GNU CC it is very hard to
+construct an example that will make the program follow a certain path
+through the code. If you don't send the example, we won't be able to
+construct one, so we won't be able to verify that the bug is fixed.
+
+And if we can't understand what bug you are trying to fix, or why your
+patch should be an improvement, we won't install it. A test case will
+help us to understand.
+
+@xref{Sending Patches}, for guidelines on how to make it easy for us to
+understand and install your patches.
+
+@item
+A guess about what the bug is or what it depends on.
+
+Such guesses are usually wrong. Even I can't guess right about such
+things without first using the debugger to find the facts.
+
+@item
+A core dump file.
+
+We have no way of examining a core dump for your type of machine
+unless we have an identical system---and if we do have one,
+we should be able to reproduce the crash ourselves.
+@end itemize
+
+@node Sending Patches,, Bug Reporting, Bugs
+@section Sending Patches for GNU CC
+
+If you would like to write bug fixes or improvements for the GNU C
+compiler, that is very helpful. Send suggested fixes to the bug report
+mailing list, @code{bug-gcc@@prep.ai.mit.edu}.
+
+Please follow these guidelines so we can study your patches efficiently.
+If you don't follow these guidelines, your information might still be
+useful, but using it will take extra work. Maintaining GNU C is a lot
+of work in the best of circumstances, and we can't keep up unless you do
+your best to help.
+
+@itemize @bullet
+@item
+Send an explanation with your changes of what problem they fix or what
+improvement they bring about. For a bug fix, just include a copy of the
+bug report, and explain why the change fixes the bug.
+
+(Referring to a bug report is not as good as including it, because then
+we will have to look it up, and we have probably already deleted it if
+we've already fixed the bug.)
+
+@item
+Always include a proper bug report for the problem you think you have
+fixed. We need to convince ourselves that the change is right before
+installing it. Even if it is right, we might have trouble judging it if
+we don't have a way to reproduce the problem.
+
+@item
+Include all the comments that are appropriate to help people reading the
+source in the future understand why this change was needed.
+
+@item
+Don't mix together changes made for different reasons.
+Send them @emph{individually}.
+
+If you make two changes for separate reasons, then we might not want to
+install them both. We might want to install just one. If you send them
+all jumbled together in a single set of diffs, we have to do extra work
+to disentangle them---to figure out which parts of the change serve
+which purpose. If we don't have time for this, we might have to ignore
+your changes entirely.
+
+If you send each change as soon as you have written it, with its own
+explanation, then the two changes never get tangled up, and we can
+consider each one properly without any extra work to disentangle them.
+
+Ideally, each change you send should be impossible to subdivide into
+parts that we might want to consider separately, because each of its
+parts gets its motivation from the other parts.
+
+@item
+Send each change as soon as that change is finished. Sometimes people
+think they are helping us by accumulating many changes to send them all
+together. As explained above, this is absolutely the worst thing you
+could do.
+
+Since you should send each change separately, you might as well send it
+right away. That gives us the option of installing it immediately if it
+is important.
+
+@item
+Use @samp{diff -c} to make your diffs. Diffs without context are hard
+for us to install reliably. More than that, they make it hard for us to
+study the diffs to decide whether we want to install them. Unidiff
+format is better than contextless diffs, but not as easy to read as
+@samp{-c} format.
+
+If you have GNU diff, use @samp{diff -cp}, which shows the name of the
+function that each change occurs in.
+
+@item
+Write the change log entries for your changes. We get lots of changes,
+and we don't have time to do all the change log writing ourselves.
+
+Read the @file{ChangeLog} file to see what sorts of information to put
+in, and to learn the style that we use. The purpose of the change log
+is to show people where to find what was changed. So you need to be
+specific about what functions you changed; in large functions, it's
+often helpful to indicate where within the function the change was.
+
+On the other hand, once you have shown people where to find the change,
+you need not explain its purpose. Thus, if you add a new function, all
+you need to say about it is that it is new. If you feel that the
+purpose needs explaining, it probably does---but the explanation will be
+much more useful if you put it in comments in the code.
+
+If you would like your name to appear in the header line for who made
+the change, send us the header line.
+
+@item
+When you write the fix, keep in mind that we can't install a change that
+would break other systems.
+
+People often suggest fixing a problem by changing machine-independent
+files such as @file{toplev.c} to do something special that a particular
+system needs. Sometimes it is totally obvious that such changes would
+break GNU CC for almost all users. We can't possibly make a change like
+that. At best it might tell us how to write another patch that would
+solve the problem acceptably.
+
+Sometimes people send fixes that @emph{might} be an improvement in
+general---but it is hard to be sure of this. It's hard to install
+such changes because we have to study them very carefully. Of course,
+a good explanation of the reasoning by which you concluded the change
+was correct can help convince us.
+
+The safest changes are changes to the configuration files for a
+particular machine. These are safe because they can't create new bugs
+on other machines.
+
+Please help us keep up with the workload by designing the patch in a
+form that is good to install.
+@end itemize
+
+@node Service
+@chapter How To Get Help with GNU CC
+
+If you need help installing, using or changing GNU CC, there are two
+ways to find it:
+
+@itemize @bullet
+@item
+Send a message to a suitable network mailing list. First try
+@code{bug-gcc@@prep.ai.mit.edu}, and if that brings no response, try
+@code{help-gcc@@prep.ai.mit.edu}.
+
+@item
+Look in the service directory for someone who might help you for a fee.
+The service directory is found in the file named @file{SERVICE} in the
+GNU CC distribution.
+@end itemize
+
+@node Contributing
+@chapter Contributing to GNU CC Development
+
+If you would like to help pretest GNU CC releases to assure they work
+well, or if you would like to work on improving GNU CC, please contact
+the maintainers at @code{bug-gcc@@gnu.ai.mit.edu}. A pretester should
+be willing to try to investigate bugs as well as report them.
+
+If you'd like to work on improvements, please ask for suggested projects
+or suggest your own ideas. If you have already written an improvement,
+please tell us about it. If you have not yet started work, it is useful
+to contact @code{bug-gcc@@prep.ai.mit.edu} before you start; the
+maintainers may be able to suggest ways to make your extension fit in
+better with the rest of GNU CC and with other development plans.
+
+@node VMS
+@chapter Using GNU CC on VMS
+
+@c prevent bad page break with this line
+Here is how to use GNU CC on VMS.
+
+@menu
+* Include Files and VMS:: Where the preprocessor looks for the include files.
+* Global Declarations:: How to do globaldef, globalref and globalvalue with
+ GNU CC.
+* VMS Misc:: Misc information.
+@end menu
+
+@node Include Files and VMS
+@section Include Files and VMS
+
+@cindex include files and VMS
+@cindex VMS and include files
+@cindex header files and VMS
+Due to the differences between the filesystems of Unix and VMS, GNU CC
+attempts to translate file names in @samp{#include} into names that VMS
+will understand. The basic strategy is to prepend a prefix to the
+specification of the include file, convert the whole filename to a VMS
+filename, and then try to open the file. GNU CC tries various prefixes
+one by one until one of them succeeds:
+
+@enumerate
+@item
+The first prefix is the @samp{GNU_CC_INCLUDE:} logical name: this is
+where GNU C header files are traditionally stored. If you wish to store
+header files in non-standard locations, then you can assign the logical
+@samp{GNU_CC_INCLUDE} to be a search list, where each element of the
+list is suitable for use with a rooted logical.
+
+@item
+The next prefix tried is @samp{SYS$SYSROOT:[SYSLIB.]}. This is where
+VAX-C header files are traditionally stored.
+
+@item
+If the include file specification by itself is a valid VMS filename, the
+preprocessor then uses this name with no prefix in an attempt to open
+the include file.
+
+@item
+If the file specification is not a valid VMS filename (i.e. does not
+contain a device or a directory specifier, and contains a @samp{/}
+character), the preprocessor tries to convert it from Unix syntax to
+VMS syntax.
+
+Conversion works like this: the first directory name becomes a device,
+and the rest of the directories are converted into VMS-format directory
+names. For example, the name @file{X11/foobar.h} is
+translated to @file{X11:[000000]foobar.h} or @file{X11:foobar.h},
+whichever one can be opened. This strategy allows you to assign a
+logical name to point to the actual location of the header files.
+
+@item
+If none of these strategies succeeds, the @samp{#include} fails.
+@end enumerate
+
+Include directives of the form:
+
+@example
+#include foobar
+@end example
+
+@noindent
+are a common source of incompatibility between VAX-C and GNU CC. VAX-C
+treats this much like a standard @code{#include <foobar.h>} directive.
+That is incompatible with the ANSI C behavior implemented by GNU CC: to
+expand the name @code{foobar} as a macro. Macro expansion should
+eventually yield one of the two standard formats for @code{#include}:
+
+@example
+#include "@var{file}"
+#include <@var{file}>
+@end example
+
+If you have this problem, the best solution is to modify the source to
+convert the @code{#include} directives to one of the two standard forms.
+That will work with either compiler. If you want a quick and dirty fix,
+define the file names as macros with the proper expansion, like this:
+
+@example
+#define stdio <stdio.h>
+@end example
+
+@noindent
+This will work, as long as the name doesn't conflict with anything else
+in the program.
+
+Another source of incompatibility is that VAX-C assumes that:
+
+@example
+#include "foobar"
+@end example
+
+@noindent
+is actually asking for the file @file{foobar.h}. GNU CC does not
+make this assumption, and instead takes what you ask for literally;
+it tries to read the file @file{foobar}. The best way to avoid this
+problem is to always specify the desired file extension in your include
+directives.
+
+GNU CC for VMS is distributed with a set of include files that is
+sufficient to compile most general purpose programs. Even though the
+GNU CC distribution does not contain header files to define constants
+and structures for some VMS system-specific functions, there is no
+reason why you cannot use GNU CC with any of these functions. You first
+may have to generate or create header files, either by using the public
+domain utility @code{UNSDL} (which can be found on a DECUS tape), or by
+extracting the relevant modules from one of the system macro libraries,
+and using an editor to construct a C header file.
+
+A @code{#include} file name cannot contain a DECNET node name. The
+preprocessor reports an I/O error if you attempt to use a node name,
+whether explicitly, or implicitly via a logical name.
+
+@node Global Declarations
+@section Global Declarations and VMS
+
+@findex GLOBALREF
+@findex GLOBALDEF
+@findex GLOBALVALUEDEF
+@findex GLOBALVALUEREF
+GNU CC does not provide the @code{globalref}, @code{globaldef} and
+@code{globalvalue} keywords of VAX-C. You can get the same effect with
+an obscure feature of GAS, the GNU assembler. (This requires GAS
+version 1.39 or later.) The following macros allow you to use this
+feature in a fairly natural way:
+
+@smallexample
+#ifdef __GNUC__
+#define GLOBALREF(TYPE,NAME) \
+ TYPE NAME \
+ asm ("_$$PsectAttributes_GLOBALSYMBOL$$" #NAME)
+#define GLOBALDEF(TYPE,NAME,VALUE) \
+ TYPE NAME \
+ asm ("_$$PsectAttributes_GLOBALSYMBOL$$" #NAME) \
+ = VALUE
+#define GLOBALVALUEREF(TYPE,NAME) \
+ const TYPE NAME[1] \
+ asm ("_$$PsectAttributes_GLOBALVALUE$$" #NAME)
+#define GLOBALVALUEDEF(TYPE,NAME,VALUE) \
+ const TYPE NAME[1] \
+ asm ("_$$PsectAttributes_GLOBALVALUE$$" #NAME) \
+ = @{VALUE@}
+#else
+#define GLOBALREF(TYPE,NAME) \
+ globalref TYPE NAME
+#define GLOBALDEF(TYPE,NAME,VALUE) \
+ globaldef TYPE NAME = VALUE
+#define GLOBALVALUEDEF(TYPE,NAME,VALUE) \
+ globalvalue TYPE NAME = VALUE
+#define GLOBALVALUEREF(TYPE,NAME) \
+ globalvalue TYPE NAME
+#endif
+@end smallexample
+
+@noindent
+(The @code{_$$PsectAttributes_GLOBALSYMBOL} prefix at the start of the
+name is removed by the assembler, after it has modified the attributes
+of the symbol). These macros are provided in the VMS binaries
+distribution in a header file @file{GNU_HACKS.H}. An example of the
+usage is:
+
+@example
+GLOBALREF (int, ijk);
+GLOBALDEF (int, jkl, 0);
+@end example
+
+The macros @code{GLOBALREF} and @code{GLOBALDEF} cannot be used
+straightforwardly for arrays, since there is no way to insert the array
+dimension into the declaration at the right place. However, you can
+declare an array with these macros if you first define a typedef for the
+array type, like this:
+
+@example
+typedef int intvector[10];
+GLOBALREF (intvector, foo);
+@end example
+
+Array and structure initializers will also break the macros; you can
+define the initializer to be a macro of its own, or you can expand the
+@code{GLOBALDEF} macro by hand. You may find a case where you wish to
+use the @code{GLOBALDEF} macro with a large array, but you are not
+interested in explicitly initializing each element of the array. In
+such cases you can use an initializer like: @code{@{0,@}}, which will
+initialize the entire array to @code{0}.
+
+A shortcoming of this implementation is that a variable declared with
+@code{GLOBALVALUEREF} or @code{GLOBALVALUEDEF} is always an array. For
+example, the declaration:
+
+@example
+GLOBALVALUEREF(int, ijk);
+@end example
+
+@noindent
+declares the variable @code{ijk} as an array of type @code{int [1]}.
+This is done because a globalvalue is actually a constant; its ``value''
+is what the linker would normally consider an address. That is not how
+an integer value works in C, but it is how an array works. So treating
+the symbol as an array name gives consistent results---with the
+exception that the value seems to have the wrong type. @strong{Don't
+try to access an element of the array.} It doesn't have any elements.
+The array ``address'' may not be the address of actual storage.
+
+The fact that the symbol is an array may lead to warnings where the
+variable is used. Insert type casts to avoid the warnings. Here is an
+example; it takes advantage of the ANSI C feature allowing macros that
+expand to use the same name as the macro itself.
+
+@example
+GLOBALVALUEREF (int, ss$_normal);
+GLOBALVALUEDEF (int, xyzzy,123);
+#ifdef __GNUC__
+#define ss$_normal ((int) ss$_normal)
+#define xyzzy ((int) xyzzy)
+#endif
+@end example
+
+Don't use @code{globaldef} or @code{globalref} with a variable whose
+type is an enumeration type; this is not implemented. Instead, make the
+variable an integer, and use a @code{globalvaluedef} for each of the
+enumeration values. An example of this would be:
+
+@example
+#ifdef __GNUC__
+GLOBALDEF (int, color, 0);
+GLOBALVALUEDEF (int, RED, 0);
+GLOBALVALUEDEF (int, BLUE, 1);
+GLOBALVALUEDEF (int, GREEN, 3);
+#else
+enum globaldef color @{RED, BLUE, GREEN = 3@};
+#endif
+@end example
+
+@node VMS Misc
+@section Other VMS Issues
+
+@cindex exit status and VMS
+@cindex return value of @code{main}
+@cindex @code{main} and the exit status
+GNU CC automatically arranges for @code{main} to return 1 by default if
+you fail to specify an explicit return value. This will be interpreted
+by VMS as a status code indicating a normal successful completion.
+Version 1 of GNU CC did not provide this default.
+
+GNU CC on VMS works only with the GNU assembler, GAS. You need version
+1.37 or later of GAS in order to produce value debugging information for
+the VMS debugger. Use the ordinary VMS linker with the object files
+produced by GAS.
+
+@cindex shared VMS run time system
+@cindex @file{VAXCRTL}
+Under previous versions of GNU CC, the generated code would occasionally
+give strange results when linked to the sharable @file{VAXCRTL} library.
+Now this should work.
+
+A caveat for use of @code{const} global variables: the @code{const}
+modifier must be specified in every external declaration of the variable
+in all of the source files that use that variable. Otherwise the linker
+will issue warnings about conflicting attributes for the variable. Your
+program will still work despite the warnings, but the variable will be
+placed in writable storage.
+
+@cindex name augmentation
+@cindex case sensitivity and VMS
+@cindex VMS and case sensitivity
+Although the VMS linker does distinguish between upper and lower case
+letters in global symbols, most VMS compilers convert all such symbols
+into upper case and most run-time library routines also have upper case
+names. To be able to reliably call such routines, GNU CC (by means of
+the assembler GAS) converts global symbols into upper case like other
+VMS compilers. However, since the usual practice in C is to distinguish
+case, GNU CC (via GAS) tries to preserve usual C behavior by augmenting
+each name that is not all lower case. This means truncating the name
+to at most 23 characters and then adding more characters at the end
+which encode the case pattern of those 23. Names which contain at
+least one dollar sign are an exception; they are converted directly into
+upper case without augmentation.
+
+Name augmentation yields bad results for programs that use precompiled
+libraries (such as Xlib) which were generated by another compiler. You
+can use the compiler option @samp{/NOCASE_HACK} to inhibit augmentation;
+it makes external C functions and variables case-independent as is usual
+on VMS. Alternatively, you could write all references to the functions
+and variables in such libraries using lower case; this will work on VMS,
+but is not portable to other systems. The compiler option @samp{/NAMES}
+also provides control over global name handling.
+
+Function and variable names are handled somewhat differently with GNU
+C++. The GNU C++ compiler performs @dfn{name mangling} on function
+names, which means that it adds information to the function name to
+describe the data types of the arguments that the function takes. One
+result of this is that the name of a function can become very long.
+Since the VMS linker only recognizes the first 31 characters in a name,
+special action is taken to ensure that each function and variable has a
+unique name that can be represented in 31 characters.
+
+If the name (plus a name augmentation, if required) is less than 32
+characters in length, then no special action is performed. If the name
+is longer than 31 characters, the assembler (GAS) will generate a
+hash string based upon the function name, truncate the function name to
+23 characters, and append the hash string to the truncated name. If the
+@samp{/VERBOSE} compiler option is used, the assembler will print both
+the full and truncated names of each symbol that is truncated.
+
+The @samp{/NOCASE_HACK} compiler option should not be used when you are
+compiling programs that use libg++. libg++ has several instances of
+objects (i.e. @code{Filebuf} and @code{filebuf}) which become
+indistinguishable in a case-insensitive environment. This leads to
+cases where you need to inhibit augmentation selectively (if you were
+using libg++ and Xlib in the same program, for example). There is no
+special feature for doing this, but you can get the result by defining a
+macro for each mixed case symbol for which you wish to inhibit
+augmentation. The macro should expand into the lower case equivalent of
+itself. For example:
+
+@example
+#define StuDlyCapS studlycaps
+@end example
+
+These macro definitions can be placed in a header file to minimize the
+number of changes to your source code.
+@end ifset
+
+@ifset INTERNALS
+@node Portability
+@chapter GNU CC and Portability
+@cindex portability
+@cindex GNU CC and portability
+
+The main goal of GNU CC was to make a good, fast compiler for machines in
+the class that the GNU system aims to run on: 32-bit machines that address
+8-bit bytes and have several general registers. Elegance, theoretical
+power and simplicity are only secondary.
+
+GNU CC gets most of the information about the target machine from a machine
+description which gives an algebraic formula for each of the machine's
+instructions. This is a very clean way to describe the target. But when
+the compiler needs information that is difficult to express in this
+fashion, I have not hesitated to define an ad-hoc parameter to the machine
+description. The purpose of portability is to reduce the total work needed
+on the compiler; it was not of interest for its own sake.
+
+@cindex endianness
+@cindex autoincrement addressing, availability
+@findex abort
+GNU CC does not contain machine dependent code, but it does contain code
+that depends on machine parameters such as endianness (whether the most
+significant byte has the highest or lowest address of the bytes in a word)
+and the availability of autoincrement addressing. In the RTL-generation
+pass, it is often necessary to have multiple strategies for generating code
+for a particular kind of syntax tree, strategies that are usable for different
+combinations of parameters. Often I have not tried to address all possible
+cases, but only the common ones or only the ones that I have encountered.
+As a result, a new target may require additional strategies. You will know
+if this happens because the compiler will call @code{abort}. Fortunately,
+the new strategies can be added in a machine-independent fashion, and will
+affect only the target machines that need them.
+@end ifset
+
+@ifset INTERNALS
+@node Interface
+@chapter Interfacing to GNU CC Output
+@cindex interfacing to GNU CC output
+@cindex run-time conventions
+@cindex function call conventions
+@cindex conventions, run-time
+
+GNU CC is normally configured to use the same function calling convention
+normally in use on the target system. This is done with the
+machine-description macros described (@pxref{Target Macros}).
+
+@cindex unions, returning
+@cindex structures, returning
+@cindex returning structures and unions
+However, returning of structure and union values is done differently on
+some target machines. As a result, functions compiled with PCC
+returning such types cannot be called from code compiled with GNU CC,
+and vice versa. This does not cause trouble often because few Unix
+library routines return structures or unions.
+
+GNU CC code returns structures and unions that are 1, 2, 4 or 8 bytes
+long in the same registers used for @code{int} or @code{double} return
+values. (GNU CC typically allocates variables of such types in
+registers also.) Structures and unions of other sizes are returned by
+storing them into an address passed by the caller (usually in a
+register). The machine-description macros @code{STRUCT_VALUE} and
+@code{STRUCT_INCOMING_VALUE} tell GNU CC where to pass this address.
+
+By contrast, PCC on most target machines returns structures and unions
+of any size by copying the data into an area of static storage, and then
+returning the address of that storage as if it were a pointer value.
+The caller must copy the data from that memory area to the place where
+the value is wanted. This is slower than the method used by GNU CC, and
+fails to be reentrant.
+
+On some target machines, such as RISC machines and the 80386, the
+standard system convention is to pass to the subroutine the address of
+where to return the value. On these machines, GNU CC has been
+configured to be compatible with the standard compiler, when this method
+is used. It may not be compatible for structures of 1, 2, 4 or 8 bytes.
+
+@cindex argument passing
+@cindex passing arguments
+GNU CC uses the system's standard convention for passing arguments. On
+some machines, the first few arguments are passed in registers; in
+others, all are passed on the stack. It would be possible to use
+registers for argument passing on any machine, and this would probably
+result in a significant speedup. But the result would be complete
+incompatibility with code that follows the standard convention. So this
+change is practical only if you are switching to GNU CC as the sole C
+compiler for the system. We may implement register argument passing on
+certain machines once we have a complete GNU system so that we can
+compile the libraries with GNU CC.
+
+On some machines (particularly the Sparc), certain types of arguments
+are passed ``by invisible reference''. This means that the value is
+stored in memory, and the address of the memory location is passed to
+the subroutine.
+
+@cindex @code{longjmp} and automatic variables
+If you use @code{longjmp}, beware of automatic variables. ANSI C says that
+automatic variables that are not declared @code{volatile} have undefined
+values after a @code{longjmp}. And this is all GNU CC promises to do,
+because it is very difficult to restore register variables correctly, and
+one of GNU CC's features is that it can put variables in registers without
+your asking it to.
+
+If you want a variable to be unaltered by @code{longjmp}, and you don't
+want to write @code{volatile} because old C compilers don't accept it,
+just take the address of the variable. If a variable's address is ever
+taken, even if just to compute it and ignore it, then the variable cannot
+go in a register:
+
+@example
+@{
+ int careful;
+ &careful;
+ @dots{}
+@}
+@end example
+
+@cindex arithmetic libraries
+@cindex math libraries
+Code compiled with GNU CC may call certain library routines. Most of
+them handle arithmetic for which there are no instructions. This
+includes multiply and divide on some machines, and floating point
+operations on any machine for which floating point support is disabled
+with @samp{-msoft-float}. Some standard parts of the C library, such as
+@code{bcopy} or @code{memcpy}, are also called automatically. The usual
+function call interface is used for calling the library routines.
+
+These library routines should be defined in the library @file{libgcc.a},
+which GNU CC automatically searches whenever it links a program. On
+machines that have multiply and divide instructions, if hardware
+floating point is in use, normally @file{libgcc.a} is not needed, but it
+is searched just in case.
+
+Each arithmetic function is defined in @file{libgcc1.c} to use the
+corresponding C arithmetic operator. As long as the file is compiled
+with another C compiler, which supports all the C arithmetic operators,
+this file will work portably. However, @file{libgcc1.c} does not work if
+compiled with GNU CC, because each arithmetic function would compile
+into a call to itself!
+@end ifset
+
+@ifset INTERNALS
+@node Passes
+@chapter Passes and Files of the Compiler
+@cindex passes and files of the compiler
+@cindex files and passes of the compiler
+@cindex compiler passes and files
+
+@cindex top level of compiler
+The overall control structure of the compiler is in @file{toplev.c}. This
+file is responsible for initialization, decoding arguments, opening and
+closing files, and sequencing the passes.
+
+@cindex parsing pass
+The parsing pass is invoked only once, to parse the entire input. The RTL
+intermediate code for a function is generated as the function is parsed, a
+statement at a time. Each statement is read in as a syntax tree and then
+converted to RTL; then the storage for the tree for the statement is
+reclaimed. Storage for types (and the expressions for their sizes),
+declarations, and a representation of the binding contours and how they nest,
+remain until the function is finished being compiled; these are all needed
+to output the debugging information.
+
+@findex rest_of_compilation
+@findex rest_of_decl_compilation
+Each time the parsing pass reads a complete function definition or
+top-level declaration, it calls either the function
+@code{rest_of_compilation}, or the function
+@code{rest_of_decl_compilation} in @file{toplev.c}, which are
+responsible for all further processing necessary, ending with output of
+the assembler language. All other compiler passes run, in sequence,
+within @code{rest_of_compilation}. When that function returns from
+compiling a function definition, the storage used for that function
+definition's compilation is entirely freed, unless it is an inline
+function
+@ifset USING
+(@pxref{Inline,,An Inline Function is As Fast As a Macro}).
+@end ifset
+@ifclear USING
+(@pxref{Inline,,An Inline Function is As Fast As a Macro,gcc.texi,Using GCC}).
+@end ifclear
+
+Here is a list of all the passes of the compiler and their source files.
+Also included is a description of where debugging dumps can be requested
+with @samp{-d} options.
+
+@itemize @bullet
+@item
+Parsing. This pass reads the entire text of a function definition,
+constructing partial syntax trees. This and RTL generation are no longer
+truly separate passes (formerly they were), but it is easier to think
+of them as separate.
+
+The tree representation does not entirely follow C syntax, because it is
+intended to support other languages as well.
+
+Language-specific data type analysis is also done in this pass, and every
+tree node that represents an expression has a data type attached.
+Variables are represented as declaration nodes.
+
+@cindex constant folding
+@cindex arithmetic simplifications
+@cindex simplifications, arithmetic
+Constant folding and some arithmetic simplifications are also done
+during this pass.
+
+The language-independent source files for parsing are
+@file{stor-layout.c}, @file{fold-const.c}, and @file{tree.c}.
+There are also header files @file{tree.h} and @file{tree.def}
+which define the format of the tree representation.@refill
+
+@c Avoiding overfull is tricky here.
+The source files to parse C are
+@file{c-parse.in},
+@file{c-decl.c},
+@file{c-typeck.c},
+@file{c-aux-info.c},
+@file{c-convert.c},
+and @file{c-lang.c}
+along with header files
+@file{c-lex.h}, and
+@file{c-tree.h}.
+
+The source files for parsing C++ are @file{cp-parse.y},
+@file{cp-class.c},@*
+@file{cp-cvt.c}, @file{cp-decl.c}, @file{cp-decl2.c},
+@file{cp-dem.c}, @file{cp-except.c},@*
+@file{cp-expr.c}, @file{cp-init.c}, @file{cp-lex.c},
+@file{cp-method.c}, @file{cp-ptree.c},@*
+@file{cp-search.c}, @file{cp-tree.c}, @file{cp-type2.c}, and
+@file{cp-typeck.c}, along with header files @file{cp-tree.def},
+@file{cp-tree.h}, and @file{cp-decl.h}.
+
+The special source files for parsing Objective C are
+@file{objc-parse.y}, @file{objc-actions.c}, @file{objc-tree.def}, and
+@file{objc-actions.h}. Certain C-specific files are used for this as
+well.
+
+The file @file{c-common.c} is also used for all of the above languages.
+
+@cindex RTL generation
+@item
+RTL generation. This is the conversion of syntax tree into RTL code.
+It is actually done statement-by-statement during parsing, but for
+most purposes it can be thought of as a separate pass.
+
+@cindex target-parameter-dependent code
+This is where the bulk of target-parameter-dependent code is found,
+since often it is necessary for strategies to apply only when certain
+standard kinds of instructions are available. The purpose of named
+instruction patterns is to provide this information to the RTL
+generation pass.
+
+@cindex tail recursion optimization
+Optimization is done in this pass for @code{if}-conditions that are
+comparisons, boolean operations or conditional expressions. Tail
+recursion is detected at this time also. Decisions are made about how
+best to arrange loops and how to output @code{switch} statements.
+
+@c Avoiding overfull is tricky here.
+The source files for RTL generation include
+@file{stmt.c},
+@file{calls.c},
+@file{expr.c},
+@file{explow.c},
+@file{expmed.c},
+@file{function.c},
+@file{optabs.c}
+and @file{emit-rtl.c}.
+Also, the file
+@file{insn-emit.c}, generated from the machine description by the
+program @code{genemit}, is used in this pass. The header file
+@file{expr.h} is used for communication within this pass.@refill
+
+@findex genflags
+@findex gencodes
+The header files @file{insn-flags.h} and @file{insn-codes.h},
+generated from the machine description by the programs @code{genflags}
+and @code{gencodes}, tell this pass which standard names are available
+for use and which patterns correspond to them.@refill
+
+Aside from debugging information output, none of the following passes
+refers to the tree structure representation of the function (only
+part of which is saved).
+
+@cindex inline, automatic
+The decision of whether the function can and should be expanded inline
+in its subsequent callers is made at the end of rtl generation. The
+function must meet certain criteria, currently related to the size of
+the function and the types and number of parameters it has. Note that
+this function may contain loops, recursive calls to itself
+(tail-recursive functions can be inlined!), gotos, in short, all
+constructs supported by GNU CC. The file @file{integrate.c} contains
+the code to save a function's rtl for later inlining and to inline that
+rtl when the function is called. The header file @file{integrate.h}
+is also used for this purpose.
+
+The option @samp{-dr} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.rtl} to
+the input file name.
+
+@cindex jump optimization
+@cindex unreachable code
+@cindex dead code
+@item
+Jump optimization. This pass simplifies jumps to the following
+instruction, jumps across jumps, and jumps to jumps. It deletes
+unreferenced labels and unreachable code, except that unreachable code
+that contains a loop is not recognized as unreachable in this pass.
+(Such loops are deleted later in the basic block analysis.) It also
+converts some code originally written with jumps into sequences of
+instructions that directly set values from the results of comparisons,
+if the machine has such instructions.
+
+Jump optimization is performed two or three times. The first time is
+immediately following RTL generation. The second time is after CSE,
+but only if CSE says repeated jump optimization is needed. The
+last time is right before the final pass. That time, cross-jumping
+and deletion of no-op move instructions are done together with the
+optimizations described above.
+
+The source file of this pass is @file{jump.c}.
+
+The option @samp{-dj} causes a debugging dump of the RTL code after
+this pass is run for the first time. This dump file's name is made by
+appending @samp{.jump} to the input file name.
+
+@cindex register use analysis
+@item
+Register scan. This pass finds the first and last use of each
+register, as a guide for common subexpression elimination. Its source
+is in @file{regclass.c}.
+
+@cindex jump threading
+@item
+Jump threading. This pass detects a condition jump that branches to an
+identical or inverse test. Such jumps can be @samp{threaded} through
+the second conditional test. The source code for this pass is in
+@file{jump.c}. This optimization is only performed if
+@samp{-fthread-jumps} is enabled.
+
+@cindex common subexpression elimination
+@cindex constant propagation
+@item
+Common subexpression elimination. This pass also does constant
+propagation. Its source file is @file{cse.c}. If constant
+propagation causes conditional jumps to become unconditional or to
+become no-ops, jump optimization is run again when CSE is finished.
+
+The option @samp{-ds} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.cse} to
+the input file name.
+
+@cindex loop optimization
+@cindex code motion
+@cindex strength-reduction
+@item
+Loop optimization. This pass moves constant expressions out of loops,
+and optionally does strength-reduction and loop unrolling as well.
+Its source files are @file{loop.c} and @file{unroll.c}, plus the header
+@file{loop.h} used for communication between them. Loop unrolling uses
+some functions in @file{integrate.c} and the header @file{integrate.h}.
+
+The option @samp{-dL} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.loop} to
+the input file name.
+
+@item
+If @samp{-frerun-cse-after-loop} was enabled, a second common
+subexpression elimination pass is performed after the loop optimization
+pass. Jump threading is also done again at this time if it was specified.
+
+The option @samp{-dt} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.cse2} to
+the input file name.
+
+@cindex register allocation, stupid
+@cindex stupid register allocation
+@item
+Stupid register allocation is performed at this point in a
+nonoptimizing compilation. It does a little data flow analysis as
+well. When stupid register allocation is in use, the next pass
+executed is the reloading pass; the others in between are skipped.
+The source file is @file{stupid.c}.
+
+@cindex data flow analysis
+@cindex analysis, data flow
+@cindex basic blocks
+@item
+Data flow analysis (@file{flow.c}). This pass divides the program
+into basic blocks (and in the process deletes unreachable loops); then
+it computes which pseudo-registers are live at each point in the
+program, and makes the first instruction that uses a value point at
+the instruction that computed the value.
+
+@cindex autoincrement/decrement analysis
+This pass also deletes computations whose results are never used, and
+combines memory references with add or subtract instructions to make
+autoincrement or autodecrement addressing.
+
+The option @samp{-df} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.flow} to
+the input file name. If stupid register allocation is in use, this
+dump file reflects the full results of such allocation.
+
+@cindex instruction combination
+@item
+Instruction combination (@file{combine.c}). This pass attempts to
+combine groups of two or three instructions that are related by data
+flow into single instructions. It combines the RTL expressions for
+the instructions by substitution, simplifies the result using algebra,
+and then attempts to match the result against the machine description.
+
+The option @samp{-dc} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.combine}
+to the input file name.
+
+@cindex instruction scheduling
+@cindex scheduling, instruction
+@item
+Instruction scheduling (@file{sched.c}). This pass looks for
+instructions whose output will not be available by the time that it is
+used in subsequent instructions. (Memory loads and floating point
+instructions often have this behavior on RISC machines). It re-orders
+instructions within a basic block to try to separate the definition and
+use of items that otherwise would cause pipeline stalls.
+
+Instruction scheduling is performed twice. The first time is immediately
+after instruction combination and the second is immediately after reload.
+
+The option @samp{-dS} causes a debugging dump of the RTL code after this
+pass is run for the first time. The dump file's name is made by
+appending @samp{.sched} to the input file name.
+
+@cindex register class preference pass
+@item
+Register class preferencing. The RTL code is scanned to find out
+which register class is best for each pseudo register. The source
+file is @file{regclass.c}.
+
+@cindex register allocation
+@cindex local register allocation
+@item
+Local register allocation (@file{local-alloc.c}). This pass allocates
+hard registers to pseudo registers that are used only within one basic
+block. Because the basic block is linear, it can use fast and
+powerful techniques to do a very good job.
+
+The option @samp{-dl} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.lreg} to
+the input file name.
+
+@cindex global register allocation
+@item
+Global register allocation (@file{global.c}). This pass
+allocates hard registers for the remaining pseudo registers (those
+whose life spans are not contained in one basic block).
+
+@cindex reloading
+@item
+Reloading. This pass renumbers pseudo registers with the hardware
+registers numbers they were allocated. Pseudo registers that did not
+get hard registers are replaced with stack slots. Then it finds
+instructions that are invalid because a value has failed to end up in
+a register, or has ended up in a register of the wrong kind. It fixes
+up these instructions by reloading the problematical values
+temporarily into registers. Additional instructions are generated to
+do the copying.
+
+The reload pass also optionally eliminates the frame pointer and inserts
+instructions to save and restore call-clobbered registers around calls.
+
+Source files are @file{reload.c} and @file{reload1.c}, plus the header
+@file{reload.h} used for communication between them.
+
+The option @samp{-dg} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.greg} to
+the input file name.
+
+@cindex instruction scheduling
+@cindex scheduling, instruction
+@item
+Instruction scheduling is repeated here to try to avoid pipeline stalls
+due to memory loads generated for spilled pseudo registers.
+
+The option @samp{-dR} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.sched2}
+to the input file name.
+
+@cindex cross-jumping
+@cindex no-op move instructions
+@item
+Jump optimization is repeated, this time including cross-jumping
+and deletion of no-op move instructions.
+
+The option @samp{-dJ} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.jump2}
+to the input file name.
+
+@cindex delayed branch scheduling
+@cindex scheduling, delayed branch
+@item
+Delayed branch scheduling. This optional pass attempts to find
+instructions that can go into the delay slots of other instructions,
+usually jumps and calls. The source file name is @file{reorg.c}.
+
+The option @samp{-dd} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.dbr}
+to the input file name.
+
+@cindex register-to-stack conversion
+@item
+Conversion from usage of some hard registers to usage of a register
+stack may be done at this point. Currently, this is supported only
+for the floating-point registers of the Intel 80387 coprocessor. The
+source file name is @file{reg-stack.c}.
+
+The options @samp{-dk} causes a debugging dump of the RTL code after
+this pass. This dump file's name is made by appending @samp{.stack}
+to the input file name.
+
+@cindex final pass
+@cindex peephole optimization
+@item
+Final. This pass outputs the assembler code for the function. It is
+also responsible for identifying spurious test and compare
+instructions. Machine-specific peephole optimizations are performed
+at the same time. The function entry and exit sequences are generated
+directly as assembler code in this pass; they never exist as RTL.
+
+The source files are @file{final.c} plus @file{insn-output.c}; the
+latter is generated automatically from the machine description by the
+tool @file{genoutput}. The header file @file{conditions.h} is used
+for communication between these files.
+
+@cindex debugging information generation
+@item
+Debugging information output. This is run after final because it must
+output the stack slot offsets for pseudo registers that did not get
+hard registers. Source files are @file{dbxout.c} for DBX symbol table
+format, @file{sdbout.c} for SDB symbol table format, and
+@file{dwarfout.c} for DWARF symbol table format.
+@end itemize
+
+Some additional files are used by all or many passes:
+
+@itemize @bullet
+@item
+Every pass uses @file{machmode.def} and @file{machmode.h} which define
+the machine modes.
+
+@item
+Several passes use @file{real.h}, which defines the default
+representation of floating point constants and how to operate on them.
+
+@item
+All the passes that work with RTL use the header files @file{rtl.h}
+and @file{rtl.def}, and subroutines in file @file{rtl.c}. The tools
+@code{gen*} also use these files to read and work with the machine
+description RTL.
+
+@findex genconfig
+@item
+Several passes refer to the header file @file{insn-config.h} which
+contains a few parameters (C macro definitions) generated
+automatically from the machine description RTL by the tool
+@code{genconfig}.
+
+@cindex instruction recognizer
+@item
+Several passes use the instruction recognizer, which consists of
+@file{recog.c} and @file{recog.h}, plus the files @file{insn-recog.c}
+and @file{insn-extract.c} that are generated automatically from the
+machine description by the tools @file{genrecog} and
+@file{genextract}.@refill
+
+@item
+Several passes use the header files @file{regs.h} which defines the
+information recorded about pseudo register usage, and @file{basic-block.h}
+which defines the information recorded about basic blocks.
+
+@item
+@file{hard-reg-set.h} defines the type @code{HARD_REG_SET}, a bit-vector
+with a bit for each hard register, and some macros to manipulate it.
+This type is just @code{int} if the machine has few enough hard registers;
+otherwise it is an array of @code{int} and some of the macros expand
+into loops.
+
+@item
+Several passes use instruction attributes. A definition of the
+attributes defined for a particular machine is in file
+@file{insn-attr.h}, which is generated from the machine description by
+the program @file{genattr}. The file @file{insn-attrtab.c} contains
+subroutines to obtain the attribute values for insns. It is generated
+from the machine description by the program @file{genattrtab}.@refill
+@end itemize
+@end ifset
+
+@ifset INTERNALS
+@include rtl.texi
+@include md.texi
+@include tm.texi
+@end ifset
+
+@ifset INTERNALS
+@node Config
+@chapter The Configuration File
+@cindex configuration file
+@cindex @file{xm-@var{machine}.h}
+
+The configuration file @file{xm-@var{machine}.h} contains macro
+definitions that describe the machine and system on which the compiler
+is running, unlike the definitions in @file{@var{machine}.h}, which
+describe the machine for which the compiler is producing output. Most
+of the values in @file{xm-@var{machine}.h} are actually the same on all
+machines that GNU CC runs on, so large parts of all configuration files
+are identical. But there are some macros that vary:
+
+@table @code
+@findex USG
+@item USG
+Define this macro if the host system is System V.
+
+@findex VMS
+@item VMS
+Define this macro if the host system is VMS.
+
+@findex FATAL_EXIT_CODE
+@item FATAL_EXIT_CODE
+A C expression for the status code to be returned when the compiler
+exits after serious errors.
+
+@findex SUCCESS_EXIT_CODE
+@item SUCCESS_EXIT_CODE
+A C expression for the status code to be returned when the compiler
+exits without serious errors.
+
+@findex HOST_WORDS_BIG_ENDIAN
+@item HOST_WORDS_BIG_ENDIAN
+Defined if the host machine stores words of multi-word values in
+big-endian order. (GNU CC does not depend on the host byte ordering
+within a word.)
+
+@findex HOST_FLOAT_WORDS_BIG_ENDIAN
+@item HOST_FLOAT_WORDS_BIG_ENDIAN
+Define this macro to be 1 if the host machine stores @code{DFmode},
+@code{XFmode} or @code{TFmode} floating point numbers in memory with the
+word containing the sign bit at the lowest address; otherwise, define it
+to be zero.
+
+This macro need not be defined if the ordering is the same as for
+multi-word integers.
+
+@findex HOST_FLOAT_FORMAT
+@item HOST_FLOAT_FORMAT
+A numeric code distinguishing the floating point format for the host
+machine. See @code{TARGET_FLOAT_FORMAT} in @ref{Storage Layout} for the
+alternatives and default.
+
+@findex HOST_BITS_PER_CHAR
+@item HOST_BITS_PER_CHAR
+A C expression for the number of bits in @code{char} on the host
+machine.
+
+@findex HOST_BITS_PER_SHORT
+@item HOST_BITS_PER_SHORT
+A C expression for the number of bits in @code{short} on the host
+machine.
+
+@findex HOST_BITS_PER_INT
+@item HOST_BITS_PER_INT
+A C expression for the number of bits in @code{int} on the host
+machine.
+
+@findex HOST_BITS_PER_LONG
+@item HOST_BITS_PER_LONG
+A C expression for the number of bits in @code{long} on the host
+machine.
+
+@findex ONLY_INT_FIELDS
+@item ONLY_INT_FIELDS
+Define this macro to indicate that the host compiler only supports
+@code{int} bit fields, rather than other integral types, including
+@code{enum}, as do most C compilers.
+
+@findex OBSTACK_CHUNK_SIZE
+@item OBSTACK_CHUNK_SIZE
+A C expression for the size of ordinary obstack chunks.
+If you don't define this, a usually-reasonable default is used.
+
+@findex OBSTACK_CHUNK_ALLOC
+@item OBSTACK_CHUNK_ALLOC
+The function used to allocate obstack chunks.
+If you don't define this, @code{xmalloc} is used.
+
+@findex OBSTACK_CHUNK_FREE
+@item OBSTACK_CHUNK_FREE
+The function used to free obstack chunks.
+If you don't define this, @code{free} is used.
+
+@findex USE_C_ALLOCA
+@item USE_C_ALLOCA
+Define this macro to indicate that the compiler is running with the
+@code{alloca} implemented in C. This version of @code{alloca} can be
+found in the file @file{alloca.c}; to use it, you must also alter the
+@file{Makefile} variable @code{ALLOCA}. (This is done automatically
+for the systems on which we know it is needed.)
+
+If you do define this macro, you should probably do it as follows:
+
+@example
+#ifndef __GNUC__
+#define USE_C_ALLOCA
+#else
+#define alloca __builtin_alloca
+#endif
+@end example
+
+@noindent
+so that when the compiler is compiled with GNU CC it uses the more
+efficient built-in @code{alloca} function.
+
+@item FUNCTION_CONVERSION_BUG
+@findex FUNCTION_CONVERSION_BUG
+Define this macro to indicate that the host compiler does not properly
+handle converting a function value to a pointer-to-function when it is
+used in an expression.
+
+@findex HAVE_VPRINTF
+@findex vprintf
+@item HAVE_VPRINTF
+Define this if the library function @code{vprintf} is available on your
+system.
+
+@findex MULTIBYTE_CHARS
+@item MULTIBYTE_CHARS
+Define this macro to enable support for multibyte characters in the
+input to GNU CC. This requires that the host system support the ANSI C
+library functions for converting multibyte characters to wide
+characters.
+
+@findex HAVE_PUTENV
+@findex putenv
+@item HAVE_PUTENV
+Define this if the library function @code{putenv} is available on your
+system.
+
+@findex POSIX
+@item POSIX
+Define this if your system is POSIX.1 compliant.
+
+@findex HAVE_POPEN
+@findex popen
+@item HAVE_POPEN
+Define this if the library function @code{popen} is available on your
+system.
+
+@findex NO_SYS_SIGLIST
+@item NO_SYS_SIGLIST
+Define this if your system @emph{does not} provide the variable
+@code{sys_siglist}.
+
+@findex DONT_DECLARE_SYS_SIGLIST
+@item DONT_DECLARE_SYS_SIGLIST
+Define this if your system has the variable @code{sys_siglist}, and
+there is already a declaration of it in the system header files.
+
+@findex USE_PROTOTYPES
+@item USE_PROTOTYPES
+Define this to be 1 if you know that the host compiler supports
+prototypes, even if it doesn't define __STDC__, or define
+it to be 0 if you do not want any prototypes used in compiling
+GNU CC. If @samp{USE_PROTOTYPES} is not defined, it will be
+determined automatically whether your compiler supports
+prototypes by checking if @samp{__STDC__} is defined.
+
+@findex NO_MD_PROTOTYPES
+@item NO_MD_PROTOTYPES
+Define this if you wish suppression of prototypes generated from
+the machine description file, but to use other prototypes within
+GNU CC. If @samp{USE_PROTOTYPES} is defined to be 0, or the
+host compiler does not support prototypes, this macro has no
+effect.
+
+@findex MD_CALL_PROTOTYPES
+@item MD_CALL_PROTOTYPES
+Define this if you wish to generate prototypes for the
+@code{gen_call} or @code{gen_call_value} functions generated from
+the machine description file. If @samp{USE_PROTOTYPES} is
+defined to be 0, or the host compiler does not support
+prototypes, or @samp{NO_MD_PROTOTYPES} is defined, this macro has
+no effect. As soon as all of the machine descriptions are
+modified to have the appropriate number of arguments, this macro
+will be removed.
+
+@vindex sys_siglist
+Some systems do provide this variable, but with a different name such
+as @code{_sys_siglist}. On these systems, you can define
+@code{sys_siglist} as a macro which expands into the name actually
+provided.
+
+@findex NO_STAB_H
+@item NO_STAB_H
+Define this if your system does not have the include file
+@file{stab.h}. If @samp{USG} is defined, @samp{NO_STAB_H} is
+assumed.
+
+@findex PATH_SEPARATOR
+@item PATH_SEPARATOR
+Define this macro to be a C character constant representing the
+character used to separate components in paths. The default value is.
+the colon character
+
+@findex DIR_SEPARATOR
+@item DIR_SEPARATOR
+If your system uses some character other than slash to separate
+directory names within a file specification, define this macro to be a C
+character constant specifying that character. When GNU CC displays file
+names, the character you specify will be used. GNU CC will test for
+both slash and the character you specify when parsing filenames.
+
+@findex OBJECT_SUFFIX
+@item OBJECT_SUFFIX
+Define this macro to be a C string representing the suffix for object
+files on your machine. If you do not define this macro, GNU CC will use
+@samp{.o} as the suffix for object files.
+
+@findex EXECUTABLE_SUFFIX
+@item EXECUTABLE_SUFFIX
+Define this macro to be a C string representing the suffix for executable
+files on your machine. If you do not define this macro, GNU CC will use
+the null string as the suffix for object files.
+
+@findex COLLECT_EXPORT_LIST
+@item COLLECT_EXPORT_LIST
+If defined, @code{collect2} will scan the individual object files
+specified on its command line and create an export list for the linker.
+Define this macro for systems like AIX, where the linker discards
+object files that are not referenced from @code{main} and uses export
+lists.
+@end table
+
+@findex bzero
+@findex bcmp
+In addition, configuration files for system V define @code{bcopy},
+@code{bzero} and @code{bcmp} as aliases. Some files define @code{alloca}
+as a macro when compiled with GNU CC, in order to take advantage of the
+benefit of GNU CC's built-in @code{alloca}.
+
+@node Fragments
+@chapter Makefile Fragments
+@cindex makefile fragment
+
+When you configure GNU CC using the @file{configure} script
+(@pxref{Installation}), it will construct the file @file{Makefile} from
+the template file @file{Makefile.in}. When it does this, it will
+incorporate makefile fragment files from the @file{config} directory,
+named @file{t-@var{target}} and @file{x-@var{host}}. If these files do
+not exist, it means nothing needs to be added for a given target or
+host.
+
+@menu
+* Target Fragment:: Writing the @file{t-@var{target}} file.
+* Host Fragment:: Writing the @file{x-@var{host}} file.
+@end menu
+
+@node Target Fragment
+@section The Target Makefile Fragment
+@cindex target makefile fragment
+@cindex @file{t-@var{target}}
+
+The target makefile fragment, @file{t-@var{target}}, defines special
+target dependent variables and targets used in the @file{Makefile}:
+
+@table @code
+@findex LIBGCC1
+@item LIBGCC1
+The rule to use to build @file{libgcc1.a}.
+If your target does not need to use the functions in @file{libgcc1.a},
+set this to empty.
+@xref{Interface}.
+
+@findex CROSS_LIBGCC1
+@item CROSS_LIBGCC1
+The rule to use to build @file{libgcc1.a} when building a cross
+compiler. If your target does not need to use the functions in
+@file{libgcc1.a}, set this to empty. @xref{Cross Runtime}.
+
+@findex LIBGCC2_CFLAGS
+@item LIBGCC2_CFLAGS
+Compiler flags to use when compiling @file{libgcc2.c}.
+
+@findex LIB2FUNCS_EXTRA
+@item LIB2FUNCS_EXTRA
+A list of source file names to be compiled or assembled and inserted
+into @file{libgcc.a}.
+
+@findex CRTSTUFF_T_CFLAGS
+@item CRTSTUFF_T_CFLAGS
+Special flags used when compiling @file{crtstuff.c}.
+@xref{Initialization}.
+
+@findex CRTSTUFF_T_CFLAGS_S
+@item CRTSTUFF_T_CFLAGS_S
+Special flags used when compiling @file{crtstuff.c} for shared
+linking. Used if you use @file{crtbeginS.o} and @file{crtendS.o}
+in @code{EXTRA-PARTS}.
+@xref{Initialization}.
+
+@findex MULTILIB_OPTIONS
+@item MULTILIB_OPTIONS
+For some targets, invoking GNU CC in different ways produces objects
+that can not be linked together. For example, for some targets GNU CC
+produces both big and little endian code. For these targets, you must
+arrange for multiple versions of @file{libgcc.a} to be compiled, one for
+each set of incompatible options. When GNU CC invokes the linker, it
+arranges to link in the right version of @file{libgcc.a}, based on
+the command line options used.
+
+The @code{MULTILIB_OPTIONS} macro lists the set of options for which
+special versions of @file{libgcc.a} must be built. Write options that
+are mutually incompatible side by side, separated by a slash. Write
+options that may be used together separated by a space. The build
+procedure will build all combinations of compatible options.
+
+For example, if you set @code{MULTILIB_OPTIONS} to @samp{m68000/m68020
+msoft-float}, @file{Makefile} will build special versions of
+@file{libgcc.a} using the sets of options @samp{-m68000}, @samp{-m68020},
+@samp{-msoft-float}, @samp{-m68000 -msoft-float}, and @samp{-m68020
+-msoft-float}.
+
+@findex MULTILIB_DIRNAMES
+@item MULTILIB_DIRNAMES
+If @code{MULTILIB_OPTIONS} is used, this variable specifies the
+directory names that should be used to hold the various libraries.
+Write one element in @code{MULTILIB_DIRNAMES} for each element in
+@code{MULTILIB_OPTIONS}. If @code{MULTILIB_DIRNAMES} is not used, the
+default value will be @code{MULTILIB_OPTIONS}, with all slashes treated
+as spaces.
+
+For example, if @code{MULTILIB_OPTIONS} is specified as @samp{m68000/m68020
+msoft-float}, then the default value of @code{MULTILIB_DIRNAMES} is
+@samp{m68000 m68020 msoft-float}. You may specify a different value if
+you desire a different set of directory names.
+
+@findex MULTILIB_MATCHES
+@item MULTILIB_MATCHES
+Sometimes the same option may be written in two different ways. If an
+option is listed in @code{MULTILIB_OPTIONS}, GNU CC needs to know about
+any synonyms. In that case, set @code{MULTILIB_MATCHES} to a list of
+items of the form @samp{option=option} to describe all relevant
+synonyms. For example, @samp{m68000=mc68000 m68020=mc68020}.
+
+@findex MULTILIB_EXCEPTIONS
+@item MULTILIB_EXCEPTIONS
+Sometimes when there are multiple sets of @code{MULTILIB_OPTIONS} being
+specified, there are combinations that should not be built. In that
+case, set @code{MULTILIB_EXCEPTIONS} to be all of the switch exceptions
+in shell case syntax that should not be built.
+
+For example, in the PowerPC embedded ABI support, it was not desirable
+to build libraries that compiled with the @samp{-mcall-aixdesc} option
+and either of the @samp{-mcall-aixdesc} or @samp{-mlittle} options at
+the same time, and therefore @code{MULTILIB_EXCEPTIONS} is set to
+@code{*mrelocatable/*mcall-aixdesc* *mlittle/*mcall-aixdesc*}.
+
+@findex MULTILIB_EXTRA_OPTS
+@item MULTILIB_EXTRA_OPTS
+Sometimes it is desirable that when building multiple versions of
+@file{libgcc.a} certain options should always be passed on to the
+compiler. In that case, set @code{MULTILIB_EXTRA_OPTS} to be the list
+of options to be used for all builds.
+@end table
+
+@node Host Fragment
+@section The Host Makefile Fragment
+@cindex host makefile fragment
+@cindex @file{x-@var{host}}
+
+The host makefile fragment, @file{x-@var{host}}, defines special host
+dependent variables and targets used in the @file{Makefile}:
+
+@table @code
+@findex CC
+@item CC
+The compiler to use when building the first stage.
+
+@findex CLIB
+@item CLIB
+Additional host libraries to link with.
+
+@findex OLDCC
+@item OLDCC
+The compiler to use when building @file{libgcc1.a} for a native
+compilation.
+
+@findex OLDAR
+@item OLDAR
+The version of @code{ar} to use when building @file{libgcc1.a} for a native
+compilation.
+
+@findex INSTALL
+@item INSTALL
+The install program to use.
+@end table
+
+@node Funding
+@unnumbered Funding Free Software
+
+If you want to have more free software a few years from now, it makes
+sense for you to help encourage people to contribute funds for its
+development. The most effective approach known is to encourage
+commercial redistributors to donate.
+
+Users of free software systems can boost the pace of development by
+encouraging for-a-fee distributors to donate part of their selling price
+to free software developers---the Free Software Foundation, and others.
+
+The way to convince distributors to do this is to demand it and expect
+it from them. So when you compare distributors, judge them partly by
+how much they give to free software development. Show distributors
+they must compete to be the one who gives the most.
+
+To make this approach work, you must insist on numbers that you can
+compare, such as, ``We will donate ten dollars to the Frobnitz project
+for each disk sold.'' Don't be satisfied with a vague promise, such as
+``A portion of the profits are donated,'' since it doesn't give a basis
+for comparison.
+
+Even a precise fraction ``of the profits from this disk'' is not very
+meaningful, since creative accounting and unrelated business decisions
+can greatly alter what fraction of the sales price counts as profit.
+If the price you pay is $50, ten percent of the profit is probably
+less than a dollar; it might be a few cents, or nothing at all.
+
+Some redistributors do development work themselves. This is useful too;
+but to keep everyone honest, you need to inquire how much they do, and
+what kind. Some kinds of development make much more long-term
+difference than others. For example, maintaining a separate version of
+a program contributes very little; maintaining the standard version of a
+program for the whole community contributes much. Easy new ports
+contribute little, since someone else would surely do them; difficult
+ports such as adding a new CPU to the GNU C compiler contribute more;
+major new features or packages contribute the most.
+
+By establishing the idea that supporting further development is ``the
+proper thing to do'' when distributing free software for a fee, we can
+assure a steady flow of resources into making more free software.
+
+@display
+Copyright (C) 1994 Free Software Foundation, Inc.
+Verbatim copying and redistribution of this section is permitted
+without royalty; alteration is not permitted.
+@end display
+
+@node Look and Feel
+@unnumbered Protect Your Freedom---Fight ``Look And Feel''
+@c the above chapter heading overflows onto the next line. --mew 1/26/93
+
+@quotation
+@i{This section is a political message from the League for Programming
+Freedom to the users of GNU CC. We have included it here because the
+issue of interface copyright is important to the GNU project.}
+@end quotation
+
+Apple, Lotus, and now CDC have tried to create a new form of legal
+monopoly: a copyright on a user interface.
+
+An interface is a kind of language---a set of conventions for
+communication between two entities, human or machine. Until a few years
+ago, the law seemed clear: interfaces were outside the domain of
+copyright, so programmers could program freely and implement whatever
+interface the users demanded. Imitating de-facto standard interfaces,
+sometimes with improvements, was standard practice in the computer
+field. These improvements, if accepted by the users, caught on and
+became the norm; in this way, much progress took place.
+
+Computer users, and most software developers, were happy with this state
+of affairs. However, large companies such as Apple and Lotus would
+prefer a different system---one in which they can own interfaces and
+thereby rid themselves of all serious competitors. They hope that
+interface copyright will give them, in effect, monopolies on major
+classes of software.
+
+Other large companies such as IBM and Digital also favor interface
+monopolies, for the same reason: if languages become property, they
+expect to own many de-facto standard languages. But Apple and Lotus are
+the ones who have actually sued. Apple's lawsuit was defeated, for
+reasons only partly related to the general issue of interface copyright.
+
+Lotus won lawsuits against two small companies, which were thus put out
+of business. Then Lotus sued Borland; Lotus won in the trial court (no
+surprise, since it was the same court that had ruled for Lotus twice
+before), but the court of appeals ruled in favor of Borland, which was
+assisted by a friend-of-the-court brief from the League for Programming
+Freedom.
+
+Lotus appealed the case to the Supreme Court, which heard the case but
+was unable to reach a decision. This failure means that the appeals
+court decision stands, in one portion of the United States, and may
+influence the other appeals courts, but it does not set a nationwide
+precedent. The battle is not over, and it is not limited to the United
+States.
+
+The battle is extending into other areas of software as well. In 1995 a
+company that produced a simulator for a CDC computer was shut down by a
+copyright lawsuit, in which CDC charged that the simulator infringed the
+copyright on the manuals for the computer.
+
+If the monopolists get their way, they will hobble the software field:
+
+@itemize @bullet
+@item
+Gratuitous incompatibilities will burden users. Imagine if each car
+manufacturer had to design a different way to start, stop, and steer a
+car.
+
+@item
+Users will be ``locked in'' to whichever interface they learn; then they
+will be prisoners of one supplier, who will charge a monopolistic price.
+
+@item
+Large companies have an unfair advantage wherever lawsuits become
+commonplace. Since they can afford to sue, they can intimidate smaller
+developers with threats even when they don't really have a case.
+
+@item
+Interface improvements will come slower, since incremental evolution
+through creative partial imitation will no longer occur.
+@end itemize
+
+If interface monopolies are accepted, other large companies are waiting
+to grab theirs:
+
+@itemize @bullet
+@item
+Adobe is expected to claim a monopoly on the interfaces of various
+popular application programs, if Lotus ultimately wins the case against
+Borland.
+
+@item
+Open Computing magazine reported a Microsoft vice president as threatening
+to sue people who imitate the interface of Windows.
+@end itemize
+
+Users invest a great deal of time and money in learning to use computer
+interfaces. Far more, in fact, than software developers invest in
+developing @emph{and even implementing} the interfaces. Whoever can own
+an interface, has made its users into captives, and misappropriated
+their investment.
+
+To protect our freedom from monopolies like these, a group of
+programmers and users have formed a grass-roots political organization,
+the League for Programming Freedom.
+
+The purpose of the League is to oppose monopolistic practices such as
+interface copyright and software patents. The League calls for a return
+to the legal policies of the recent past, in which programmers could
+program freely. The League is not concerned with free software as an
+issue, and is not affiliated with the Free Software Foundation.
+
+The League's activities include publicizing the issues, as is being done
+here, and filing friend-of-the-court briefs on behalf of defendants sued
+by monopolists.
+
+The League's membership rolls include Donald Knuth, the foremost
+authority on algorithms, John McCarthy, inventor of Lisp, Marvin Minsky,
+founder of the MIT Artificial Intelligence lab, Guy L. Steele, Jr.,
+author of well-known books on Lisp and C, as well as Richard Stallman,
+the developer of GNU CC. Please join and add your name to the list.
+Membership dues in the League are $42 per year for programmers, managers
+and professionals; $10.50 for students; $21 for others.
+
+Activist members are especially important, but members who have no time
+to give are also important. Surveys at major ACM conferences have
+indicated a vast majority of attendees agree with the League on both
+issues (interface copyrights and software patents). If just ten percent
+of the programmers who agree with the League join the League, we will
+probably triumph.
+
+To join, or for more information, send electronic mail to
+the address @code{lpf@@uunet.uu.net} or write to:
+
+@display
+League for Programming Freedom
+1 Kendall Square #143
+P.O. Box 9171
+Cambridge, MA 02139
+@end display
+
+In addition to joining the League, here are some suggestions from the
+League for other things you can do to protect your freedom to write
+programs:
+
+@itemize @bullet
+@item
+Tell your friends and colleagues about this issue and how it threatens
+to ruin the computer industry.
+
+@item
+Mention that you are a League member in your @file{.signature}, and
+mention the League's email address for inquiries.
+
+@item
+Ask the companies you consider working for or working with to make
+statements against software monopolies, and give preference to those
+that do.
+
+@item
+When employers ask you to sign contracts giving them copyright on your
+work, insist on a clause saying they will not claim the copyright covers
+imitating the interface.
+
+@item
+When employers ask you to sign contracts giving them patent rights,
+insist on clauses saying they can use these rights only defensively.
+Don't rely on ``company policy,'' since that can change at any time;
+don't rely on an individual executive's private word, since that person
+may be replaced. Get a commitment just as binding as the commitment
+they get from you.
+
+@item
+Write to Congress to explain the importance of these issues.
+
+@display
+House Subcommittee on Intellectual Property
+2137 Rayburn Bldg
+Washington, DC 20515
+
+Senate Subcommittee on Patents, Trademarks and Copyrights
+United States Senate
+Washington, DC 20510
+@end display
+
+(These committees have received lots of mail already; let's give them
+even more.)
+@end itemize
+
+Democracy means nothing if you don't use it. Stand up and be counted!
+
+
+@node Copying
+@unnumbered GNU GENERAL PUBLIC LICENSE
+@center Version 2, June 1991
+
+@display
+Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@unnumberedsec 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.
+
+@iftex
+@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end iftex
+@ifinfo
+@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end ifinfo
+
+@enumerate 0
+@item
+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.
+
+@item
+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.
+
+@item
+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:
+
+@enumerate a
+@item
+You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+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.
+
+@item
+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.)
+@end enumerate
+
+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.
+
+@item
+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:
+
+@enumerate a
+@item
+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,
+
+@item
+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,
+
+@item
+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.)
+@end enumerate
+
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@iftex
+@heading NO WARRANTY
+@end iftex
+@ifinfo
+@center NO WARRANTY
+@end ifinfo
+
+@item
+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.
+
+@item
+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 enumerate
+
+@iftex
+@heading END OF TERMS AND CONDITIONS
+@end iftex
+@ifinfo
+@center END OF TERMS AND CONDITIONS
+@end ifinfo
+
+@page
+@unnumberedsec 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.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) 19@var{yy} @var{name of author}
+
+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.
+@end smallexample
+
+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:
+
+@smallexample
+Gnomovision version 69, Copyright (C) 19@var{yy} @var{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.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License. Of course, the
+commands you use may be called something other than @samp{show w} and
+@samp{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:
+
+@smallexample
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+@var{signature of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
+@end smallexample
+
+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.
+
+@node Contributors
+@unnumbered Contributors to GNU CC
+@cindex contributors
+
+In addition to Richard Stallman, several people have written parts
+of GNU CC.
+
+@itemize @bullet
+@item
+The idea of using RTL and some of the optimization ideas came from the
+program PO written at the University of Arizona by Jack Davidson and
+Christopher Fraser. See ``Register Allocation and Exhaustive Peephole
+Optimization'', Software Practice and Experience 14 (9), Sept. 1984,
+857-866.
+
+@item
+Paul Rubin wrote most of the preprocessor.
+
+@item
+Leonard Tower wrote parts of the parser, RTL generator, and RTL
+definitions, and of the Vax machine description.
+
+@item
+Ted Lemon wrote parts of the RTL reader and printer.
+
+@item
+Jim Wilson implemented loop strength reduction and some other
+loop optimizations.
+
+@item
+Nobuyuki Hikichi of Software Research Associates, Tokyo, contributed
+the support for the Sony NEWS machine.
+
+@item
+Charles LaBrec contributed the support for the Integrated Solutions
+68020 system.
+
+@item
+Michael Tiemann of Cygnus Support wrote the front end for C++, as well
+as the support for inline functions and instruction scheduling. Also
+the descriptions of the National Semiconductor 32000 series cpu, the
+SPARC cpu and part of the Motorola 88000 cpu.
+
+@item
+Gerald Baumgartner added the signature extension to the C++ front-end.
+
+@item
+Jan Stein of the Chalmers Computer Society provided support for
+Genix, as well as part of the 32000 machine description.
+
+@item
+Randy Smith finished the Sun FPA support.
+
+@item
+Robert Brown implemented the support for Encore 32000 systems.
+
+@item
+David Kashtan of SRI adapted GNU CC to VMS.
+
+@item
+Alex Crain provided changes for the 3b1.
+
+@item
+Greg Satz and Chris Hanson assisted in making GNU CC work on HP-UX for
+the 9000 series 300.
+
+@item
+William Schelter did most of the work on the Intel 80386 support.
+
+@item
+Christopher Smith did the port for Convex machines.
+
+@item
+Paul Petersen wrote the machine description for the Alliant FX/8.
+
+@item
+Dario Dariol contributed the four varieties of sample programs
+that print a copy of their source.
+
+@item
+Alain Lichnewsky ported GNU CC to the Mips cpu.
+
+@item
+Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the Tahoe.
+
+@item
+Jonathan Stone wrote the machine description for the Pyramid computer.
+
+@item
+Gary Miller ported GNU CC to Charles River Data Systems machines.
+
+@item
+Richard Kenner of the New York University Ultracomputer Research
+Laboratory wrote the machine descriptions for the AMD 29000, the DEC
+Alpha, the IBM RT PC, and the IBM RS/6000 as well as the support for
+instruction attributes. He also made changes to better support RISC
+processors including changes to common subexpression elimination,
+strength reduction, function calling sequence handling, and condition
+code support, in addition to generalizing the code for frame pointer
+elimination.
+
+@item
+Richard Kenner and Michael Tiemann jointly developed reorg.c, the delay
+slot scheduler.
+
+@item
+Mike Meissner and Tom Wood of Data General finished the port to the
+Motorola 88000.
+
+@item
+Masanobu Yuhara of Fujitsu Laboratories implemented the machine
+description for the Tron architecture (specifically, the Gmicro).
+
+@item
+NeXT, Inc.@: donated the front end that supports the Objective C
+language.
+@c We need to be careful to make it clear that "Objective C"
+@c is the name of a language, not that of a program or product.
+
+@item
+James van Artsdalen wrote the code that makes efficient use of
+the Intel 80387 register stack.
+
+@item
+Mike Meissner at the Open Software Foundation finished the port to the
+MIPS cpu, including adding ECOFF debug support, and worked on the
+Intel port for the Intel 80386 cpu. Later at Cygnus Support, he worked
+on the rs6000 and PowerPC ports.
+
+@item
+Ron Guilmette implemented the @code{protoize} and @code{unprotoize}
+tools, the support for Dwarf symbolic debugging information, and much of
+the support for System V Release 4. He has also worked heavily on the
+Intel 386 and 860 support.
+
+@item
+Torbjorn Granlund implemented multiply- and divide-by-constant
+optimization, improved long long support, and improved leaf function
+register allocation.
+
+@item
+Mike Stump implemented the support for Elxsi 64 bit CPU.
+
+@item
+John Wehle added the machine description for the Western Electric 32000
+processor used in several 3b series machines (no relation to the
+National Semiconductor 32000 processor).
+
+@ignore @c These features aren't advertised yet, since they don't fully work.
+@item
+Analog Devices helped implement the support for complex data types
+and iterators.
+@end ignore
+
+@item
+Holger Teutsch provided the support for the Clipper cpu.
+
+@item
+Kresten Krab Thorup wrote the run time support for the Objective C
+language.
+
+@item
+Stephen Moshier contributed the floating point emulator that assists in
+cross-compilation and permits support for floating point numbers wider
+than 64 bits.
+
+@item
+David Edelsohn contributed the changes to RS/6000 port to make it
+support the PowerPC and POWER2 architectures.
+
+@item
+Steve Chamberlain wrote the support for the Hitachi SH processor.
+
+@item
+Peter Schauer wrote the code to allow debugging to work on the Alpha.
+
+@item
+Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
+MIL-STD-1750A.
+
+@item
+Michael K. Gschwind contributed the port to the PDP-11.
+
+@item
+David Reese of Sun Microsystems contributed to the Solaris on PowerPC
+port.
+@end itemize
+
+@node Index
+@unnumbered Index
+@end ifset
+
+@ifclear INTERNALS
+@node Index
+@unnumbered Index
+@end ifclear
+
+@printindex cp
+
+@summarycontents
+@contents
+@bye
diff --git a/gcc/getopt.c b/gcc/getopt.c
index f622fc375ee..300f86de3eb 100644
--- a/gcc/getopt.c
+++ b/gcc/getopt.c
@@ -6,23 +6,23 @@
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
Free Software Foundation, Inc.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+USA. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
diff --git a/gcc/getopt.h b/gcc/getopt.h
index fb30719a860..69256fd3864 100644
--- a/gcc/getopt.h
+++ b/gcc/getopt.h
@@ -1,23 +1,23 @@
/* Declarations for getopt.
Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@gnu.org.
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+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. */
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+USA. */
#ifndef _GETOPT_H
#define _GETOPT_H 1
@@ -130,4 +130,4 @@ extern int _getopt_internal ();
}
#endif
-#endif /* getopt.h */
+#endif /* _GETOPT_H */
diff --git a/gcc/getopt1.c b/gcc/getopt1.c
index af8e6819657..6507ba1b1f6 100644
--- a/gcc/getopt1.c
+++ b/gcc/getopt1.c
@@ -1,23 +1,23 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
diff --git a/gcc/gstab.h b/gcc/gstab.h
new file mode 100644
index 00000000000..80bd594a36a
--- /dev/null
+++ b/gcc/gstab.h
@@ -0,0 +1,17 @@
+#ifndef __GNU_STAB__
+
+/* Indicate the GNU stab.h is in use. */
+
+#define __GNU_STAB__
+
+#define __define_stab(NAME, CODE, STRING) NAME=CODE,
+
+enum __stab_debug_code
+{
+#include "stab.def"
+LAST_UNUSED_STAB_CODE
+};
+
+#undef __define_stab
+
+#endif /* __GNU_STAB_ */
diff --git a/gcc/install.texi b/gcc/install.texi
index c6ba6f5d79b..9f023858538 100644
--- a/gcc/install.texi
+++ b/gcc/install.texi
@@ -179,13 +179,13 @@ make a difference.
@cindex Objective C threads
@cindex threads, Objective C
@item --enable-objcthreads=@var{type}
-Certain systems, notably Linux, can't be relied on to supply a threads
-facility for the Objective C runtime and so will default to
-single-threaded runtime. They may, however, have a library threads
-implementation available, in which case threads can be enabled with this
-option by supplying a suitable @var{type}, probably @samp{posix}.
-The possibilities for @var{type} are @samp{single}, @samp{posix},
-@samp{win32}, @samp{solaris}, @samp{irix} and @samp{mach}.
+Certain systems, notably Linux-based GNU systems, can't be relied on to
+supply a threads facility for the Objective C runtime and so will
+default to single-threaded runtime. They may, however, have a library
+threads implementation available, in which case threads can be enabled
+with this option by supplying a suitable @var{type}, probably
+@samp{posix}. The possibilities for @var{type} are @samp{single},
+@samp{posix}, @samp{win32}, @samp{solaris}, @samp{irix} and @samp{mach}.
@end table
The @file{configure} script searches subdirectories of the source
@@ -610,7 +610,7 @@ Here is a list of system types:
@quotation
386bsd, aix, acis, amigados, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux,
-dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, gnu/linux,
+dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux-gnu,
hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs,
netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim,
solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta,
@@ -759,15 +759,22 @@ To avoid this behavior, specify @samp{-gstabs+} and use GDB instead of
DBX. DEC is now aware of this problem with the assembler and hopes to
provide a fix shortly.
-@item arm
+@item arm-*-aout
Advanced RISC Machines ARM-family processors. These are often used in
embedded applications. There are no standard Unix configurations.
This configuration corresponds to the basic instruction sequences and will
-produce a.out format object modules.
+produce @file{a.out} format object modules.
You may need to make a variant of the file @file{arm.h} for your particular
configuration.
+@item arm-*-linuxaout
+Any of the ARM family processors running the Linux-based GNU system with
+the @file{a.out} binary format (ELF is not yet supported). You must use
+version 2.8.1.0.7 or later of the Linux binutils, which you can download
+from @file{sunsite.unc.edu:/pub/Linux/GCC} and other mirror sites for
+Linux-based GNU systems.
+
@item arm-*-riscix
The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix. If
you are running a version of RISC iX prior to 1.2 then you must specify
@@ -880,19 +887,19 @@ option before building.
This port is very preliminary and has many known bugs. We hope to
have a higher-quality port for this machine soon.
-@item i386-*-linuxoldld
-Use this configuration to generate a.out binaries on Linux if you do not
-have gas/binutils version 2.5.2 or later installed. This is an obsolete
-configuration.
+@item i386-*-linux-gnuoldld
+Use this configuration to generate @file{a.out} binaries on Linux-based
+GNU systems if you do not have gas/binutils version 2.5.2 or later
+installed. This is an obsolete configuration.
-@item i386-*-linuxaout
-Use this configuration to generate a.out binaries on Linux. This configuration
-is being superseded. You must use gas/binutils version 2.5.2 or
-later.
+@item i386-*-linux-gnuaout
+Use this configuration to generate @file{a.out} binaries on Linux-based
+GNU systems. This configuration is being superseded. You must use
+gas/binutils version 2.5.2 or later.
-@item i386-*-linux
-Use this configuration to generate ELF binaries on Linux. You must
-use gas/binutils version 2.5.2 or later.
+@item i386-*-linux-gnu
+Use this configuration to generate ELF binaries on Linux-based GNU
+systems. You must use gas/binutils version 2.5.2 or later.
@item i386-*-sco
Compilation with RCC is recommended. Also, it may be a good idea to
@@ -1017,7 +1024,7 @@ LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as
You can tell GNU CC to use the GNU assembler and linker, by specifying
@samp{--with-gnu-as --with-gnu-ld} when configuring. These will produce
COFF format object files and executables; otherwise GNU CC will use the
-installed tools, which produce a.out format executables.
+installed tools, which produce @file{a.out} format executables.
@item m32r-*-elf
Embedded M32R system.
@@ -1378,8 +1385,8 @@ PowerPC system in big endian mode, running System V.4.
You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
-@item powerpc-*-linux
-PowerPC system in big endian mode, running Linux.
+@item powerpc-*-linux-gnu
+PowerPC system in big endian mode, running the Linux-based GNU system.
You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
diff --git a/gcc/install1.texi b/gcc/install1.texi
new file mode 100644
index 00000000000..82ef9b6ba67
--- /dev/null
+++ b/gcc/install1.texi
@@ -0,0 +1,15 @@
+@setfilename INSTALL
+@set INSTALLONLY
+
+@c This file itself, install1.texi, does not apear in the GCC distribution.
+@c The immediately following lines apply to the INSTALL file
+@c which is generated using this file.
+This file documents the installation of the GNU compiler.
+Copyright (C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc.
+You may copy, distribute, and modify it freely as long as you preserve
+this copyright notice and permission notice.
+
+@node Installation,,, (dir)
+@chapter Installing GNU CC
+@include install.texi
+@bye
diff --git a/gcc/invoke.texi b/gcc/invoke.texi
index c975c357266..7a643d60aa1 100644
--- a/gcc/invoke.texi
+++ b/gcc/invoke.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 1988, 89, 92, 93, 94, 1995, 1996 Free Software Foundation, Inc.
+@c Copyright (C) 1988,89,92,93,94,95,96,1997 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -93,8 +93,8 @@ in the following sections.
@item C Language Options
@xref{C Dialect Options,,Options Controlling C Dialect}.
@smallexample
--ansi -fallow-single-precision -fcond-mismatch -fno-asm
--fno-builtin -fsigned-bitfields -fsigned-char
+-ansi -fallow-single-precision -fcond-mismatch -fno-asm
+-fno-builtin -ffreestanding - fhosted -fsigned-bitfields -fsigned-char
-funsigned-bitfields -funsigned-char -fwritable-strings
-traditional -traditional-cpp -trigraphs
@end smallexample
@@ -105,8 +105,8 @@ in the following sections.
-fall-virtual -fdollars-in-identifiers -felide-constructors
-fenum-int-equiv -fexternal-templates -ffor-scope -fno-for-scope
-fhandle-signatures -fmemoize-lookups -fno-default-inline -fno-gnu-keywords
--fnonnull-objects -foperator-names -fstrict-prototype
--fthis-is-variable -nostdinc++ -traditional +e@var{n}
+-fnonnull-objects -foperator-names -fstrict-prototype -fthis-is-variable
+-ftemplate-depth-@var{n} -nostdinc++ -traditional +e@var{n}
@end smallexample
@item Warning Options
@@ -117,20 +117,21 @@ in the following sections.
-Wcast-align -Wcast-qual -Wchar-subscript -Wcomment
-Wconversion -Werror -Wformat
-Wid-clash-@var{len} -Wimplicit -Wimport -Winline
--Wlarger-than-@var{len} -Wmissing-declarations
+-Wlarger-than-@var{len} -Wmain -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs
-Wno-import -Woverloaded-virtual -Wparentheses
-Wpointer-arith -Wredundant-decls -Wreorder -Wreturn-type -Wshadow
-Wsign-compare -Wstrict-prototypes -Wswitch -Wsynth
-Wtemplate-debugging -Wtraditional -Wtrigraphs
--Wuninitialized -Wunused -Wwrite-strings
+-Wundef -Wuninitialized -Wunused -Wwrite-strings
@end smallexample
@item Debugging Options
@xref{Debugging Options,,Options for Debugging Your Program or GCC}.
@smallexample
-a -ax -d@var{letters} -fpretend-float
--g -g@var{level} -gcoff -gdwarf -gdwarf+
+-fprofile-arcs -ftest-coverage
+-g -g@var{level} -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2
-ggdb -gstabs -gstabs+ -gxcoff -gxcoff+
-p -pg -print-file-name=@var{library} -print-libgcc-file-name
-print-prog-name=@var{program} -print-search-dirs -save-temps
@@ -139,6 +140,7 @@ in the following sections.
@item Optimization Options
@xref{Optimize Options,,Options that Control Optimization}.
@smallexample
+-fbranch-probabilities
-fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
-fdelayed-branch -fexpensive-optimizations
-ffast-math -ffloat-store -fforce-addr -fforce-mem
@@ -184,7 +186,7 @@ in the following sections.
@item Directory Options
@xref{Directory Options,,Options for Directory Search}.
@smallexample
--B@var{prefix} -I@var{dir} -I- -L@var{dir}
+-B@var{prefix} -I@var{dir} -I- -L@var{dir} -specs=@var{file}
@end smallexample
@item Target Options
@@ -198,9 +200,9 @@ in the following sections.
@xref{Submodel Options,,Hardware Models and Configurations}.
@smallexample
@emph{M680x0 Options}
--m68000 -m68020 -m68020-40 -m68030 -m68040 -m68060
--m5200 -m68881 -mbitfield -mc68000 -mc68020 -mfpa
--mnobitfield -mrtd -mshort -msoft-float
+-m68000 -m68020 -m68020-40 -m68020-60 -m68030 -m68040
+-m68060 -m5200 -m68881 -mbitfield -mc68000 -mc68020 -mfpa
+-mnobitfield -mrtd -mshort -msoft-float -malign-int
@emph{VAX Options}
-mg -mgnu -munix
@@ -239,6 +241,10 @@ in the following sections.
-msoft-float -mhard-float
-mbsd -mxopen -mno-symrename
+@emph{M32R/D Options}
+-mcode-model=@var{model type} -msdata=@var{sdata type}
+-G @var{num}
+
@emph{M88K Options}
-m88000 -m88100 -m88110 -mbig-pic
-mcheck-zero-division -mhandle-large-shift
@@ -260,9 +266,10 @@ in the following sections.
-mpowerpc-gfxopt -mno-powerpc-gfxopt
-mnew-mnemonics -mno-new-mnemonics
-mfull-toc -mminimal-toc -mno-fop-in-toc -mno-sum-in-toc
--mxl-call -mno-xl-call
+-mxl-call -mno-xl-call -mthreads -mpe
-msoft-float -mhard-float -mmultiple -mno-multiple
--mstring -mno-string -mbit-align -mno-bit-align
+-mstring -mno-string -mupdate -mno-update
+-mfused-madd -mno-fused-madd -mbit-align -mno-bit-align
-mstrict-align -mno-strict-align -mrelocatable
-mno-relocatable -mrelocatable-lib -mno-relocatable-lib
-mtoc -mno-toc -mtraceback -mno-traceback
@@ -297,8 +304,8 @@ in the following sections.
-malign-functions=@var{num}
@emph{HPPA Options}
--mdisable-fpregs -mdisable-indexing -mfast-indirect-calls
--mgas -mjump-in-delay -mlong-load-store -mno-disable-fpregs
+-mbig-switch -mdisable-fpregs -mdisable-indexing -mfast-indirect-calls
+-mgas -mjump-in-delay -mlong-load-store -mno-big-switch -mno-disable-fpregs
-mno-disable-indexing -mno-fast-indirect-calls -mno-gas
-mno-jump-in-delay
-mno-long-load-store
@@ -341,11 +348,12 @@ in the following sections.
@smallexample
-fcall-saved-@var{reg} -fcall-used-@var{reg}
-ffixed-@var{reg} -finhibit-size-directive
+-fcheck-memory-usage -fprefix-function-name
-fno-common -fno-ident -fno-gnu-linker
-fpcc-struct-return -fpic -fPIC
-freg-struct-return -fshared-data -fshort-enums
-fshort-double -fvolatile -fvolatile-global
--fverbose-asm -fpack-struct +e0 +e1
+-fverbose-asm -fpack-struct -fstack-check +e0 +e1
@end smallexample
@end table
@@ -558,8 +566,8 @@ This turns off certain features of GNU C that are incompatible with ANSI
C, such as the @code{asm}, @code{inline} and @code{typeof} keywords, and
predefined macros such as @code{unix} and @code{vax} that identify the
type of system you are using. It also enables the undesirable and
-rarely used ANSI trigraph feature, disallows @samp{$} as part of
-identifiers, and disables recognition of C++ style @samp{//} comments.
+rarely used ANSI trigraph feature, and it disables recognition of C++
+style @samp{//} comments.
The alternate keywords @code{__asm__}, @code{__extension__},
@code{__inline__} and @code{__typeof__} continue to work despite
@@ -628,6 +636,24 @@ The @samp{-ansi} option prevents @code{alloca} and @code{ffs} from being
builtin functions, since these functions do not have an ANSI standard
meaning.
+@item -fhosted
+@cindex hosted environment
+
+Assert that compilation takes place in a hosted environment. This implies
+@samp{-fbuiltin}. A hosted environment is one in which the
+entire standard library is available, and in which @code{main} has a return
+type of @code{int}. Examples are nearly everything except a kernel.
+This is equivalent to @samp{-fno-freestanding}.
+
+@item -ffreestanding
+@cindex hosted environment
+
+Assert that compilation takes place in a freestanding environment. This
+implies @samp{-fno-builtin}. A freestanding environment
+is one in which the standard library may not exist, and program startup may
+not necessarily be at @code{main}. The most obvious example is an OS kernel.
+This is equivalent to @samp{-fno-hosted}.
+
@item -trigraphs
Support ANSI C trigraphs. You don't want to know about this
brain-damage. The @samp{-ansi} option implies @samp{-trigraphs}.
@@ -1029,6 +1055,12 @@ vtables; if a class has any non-inline virtual functions, the vtable
will be emitted in the translation unit containing the first one of
those.
+@item -ftemplate-depth-@var{n}
+Set the maximum instantiation depth for template classes to @var{n}.
+A limit on the template instantiation depth is needed to detect
+endless recursions during template class instantiation. ANSI/ISO C++
+conforming programs must not rely on a maximum depth greater than 17.
+
@item -nostdinc++
Do not search for header files in the standard directories specific to
C++, but do still search the other standard directories. (This option
@@ -1053,6 +1085,9 @@ Do not assume @samp{inline} for functions defined inside a class scope.
Warnings that apply only to C++ programs. @xref{Warning
Options,,Options to Request or Suppress Warnings}.
+@item -Weffc++
+Warn about violation of some style rules from Effective C++ by Scott Myers.
+
@item +e@var{n}
Control how virtual function definitions are used, in a fashion
compatible with @code{cfront} 1.x. @xref{Code Gen Options,,Options for
@@ -1143,8 +1178,14 @@ the arguments supplied have types appropriate to the format string
specified.
@item -Wimplicit
-Warn whenever a function or parameter is implicitly declared.
-
+Warn whenever a function or parameter is implicitly declared,
+or when a type implicitly defaults to @code{int}.
+
+@item -Wmain
+Warn if the type of @samp{main} is suspicious. @samp{main} should be a
+function with external linkage, returning int, taking either zero
+arguments, two, or three arguments of appropriate types.
+
@item -Wparentheses
Warn if parentheses are omitted in certain contexts, such
as when there is an assignment in a context where a truth value
@@ -1366,6 +1407,9 @@ the block.
A @code{switch} statement has an operand of type @code{long}.
@end itemize
+@item -Wundef
+Warn if an undefined identifier is evaluated in an @samp{#if} directive.
+
@item -Wshadow
Warn whenever a local variable shadows another local variable.
@@ -1510,7 +1554,7 @@ makes debugging work better in GDB but will probably make other debuggers
crash or
refuse to read the program. If you want to control for certain whether
to generate the extra information, use @samp{-gstabs+}, @samp{-gstabs},
-@samp{-gxcoff+}, @samp{-gxcoff}, @samp{-gdwarf+}, or @samp{-gdwarf}
+@samp{-gxcoff+}, @samp{-gxcoff}, @samp{-gdwarf-1+}, or @samp{-gdwarf-1}
(see below).
Unlike most other C compilers, GNU CC allows you to use @samp{-g} with
@@ -1528,8 +1572,10 @@ The following options are useful when GNU CC is generated with the
capability for more than one debugging format.
@item -ggdb
-Produce debugging information in the native format (if that is supported),
-including GDB extensions if at all possible.
+Produce debugging information for use by GDB. This means to use the
+most expressive format available (DWARF 2, stabs, or the native format
+if neither of those are supported), including GDB extensions if at all
+possible.
@item -gstabs
Produce debugging information in stabs format (if that is supported),
@@ -1561,14 +1607,19 @@ refuse to read the program, and may cause assemblers other than the GNU
assembler (GAS) to fail with an error.
@item -gdwarf
-Produce debugging information in DWARF format (if that is supported).
-This is the format used by SDB on most System V Release 4 systems.
+Produce debugging information in DWARF version 1 format (if that is
+supported). This is the format used by SDB on most System V Release 4
+systems.
@item -gdwarf+
-Produce debugging information in DWARF format (if that is supported),
-using GNU extensions understood only by the GNU debugger (GDB). The
-use of these extensions is likely to make other debuggers crash or
-refuse to read the program.
+Produce debugging information in DWARF version 1 format (if that is
+supported), using GNU extensions understood only by the GNU debugger
+(GDB). The use of these extensions is likely to make other debuggers
+crash or refuse to read the program.
+
+@item -gdwarf-2
+Produce debugging information in DWARF version 2 format (if that is
+supported). This is the format used by DBX on IRIX 6.
@item -g@var{level}
@itemx -ggdb@var{level}
@@ -1576,6 +1627,7 @@ refuse to read the program.
@itemx -gcoff@var{level}
@itemx -gxcoff@var{level}
@itemx -gdwarf@var{level}
+@itemx -gdwarf-2@var{level}
Request debugging information and also use @var{level} to specify how
much information. The default level is 2.
@@ -1688,6 +1740,54 @@ to return instructions is added to the trace. The trace becomes: 0 3 1
written to @file{bbtrace.gz}. It is solely used for counting jump
frequencies.
+@item -fprofile-arcs
+Instrument @dfn{arcs} during compilation. For each function of your
+program, GNU CC creates a program flow graph, then finds a spanning tree
+for the graph. Only arcs that are not on the spanning tree have to be
+instrumented: the compiler adds code to count the number of times that these
+arcs are executed. When an arc is the only exit or only entrance to a
+block, the instrumentation code can be added to the block; otherwise, a
+new basic block must be created to hold the instrumentation code.
+
+Since not every arc in the program must be instrumented, programs
+compiled with this option run faster than programs compiled with
+@samp{-a}, which adds instrumentation code to every basic block in the
+program. The tradeoff: since @code{gcov} does not have
+execution counts for all branches, it must start with the execution
+counts for the instrumented branches, and then iterate over the program
+flow graph until the entire graph has been solved. Hence, @code{gcov}
+runs a little more slowly than a program which uses information from
+@samp{-a}.
+
+@samp{-fprofile-arcs} also makes it possible to estimate branch
+probabilities, and to calculate basic block execution counts. In
+general, basic block execution counts do not give enough information to
+estimate all branch probabilities. When the compiled program exits, it
+saves the arc execution counts to a file called
+@file{@var{sourcename}.da}. Use the compiler option
+@samp{-fbranch-probabilities} (@pxref{Optimize Options,,Options that
+Control Optimization}) when recompiling, to optimize using estimated
+branch probabilities.
+
+@need 2000
+@item -ftest-coverage
+Create data files for the @code{gcov} code-coverage utility
+(@pxref{Gcov,, @code{gcov}: a GNU CC Test Coverage Program}).
+The data file names begin with the name of your source file:
+
+@table @code
+@item @var{sourcename}.bb
+A mapping from basic blocks to line numbers, which @code{gcov} uses to
+associate basic block execution counts with line numbers.
+
+@item @var{sourcename}.bbg
+A list of all arcs in the program flow graph. This allows @code{gcov}
+to reconstruct the program flow graph, so that it can compute all basic
+block and arc execution counts from the information in the
+@code{@var{sourcename}.da} file (this last file is the output from
+@samp{-fprofile-arcs}).
+@end table
+
@item -d@var{letters}
Says to make debugging dumps during compilation at times specified by
@var{letters}. This is used for debugging the compiler. The file names
@@ -2078,6 +2178,23 @@ implies @samp{-fstrength-reduce} as well as @samp{-frerun-cse-after-loop}.
@item -fno-peephole
Disable any machine-specific peephole optimizations.
+
+@item -fbranch-probabilities
+After running a program compiled with @samp{-fprofile-arcs}
+(@pxref{Debugging Options,, Options for Debugging Your Program or
+@code{gcc}}), you can compile it a second time using
+@samp{-fbranch-probabilities}, to improve optimizations based on
+guessing the path a branch might take.
+
+@ifset INTERNALS
+With @samp{-fbranch-probabilities}, GNU CC puts a @samp{REG_EXEC_COUNT}
+note on the first instruction of each basic block, and a
+@samp{REG_BR_PROB} note on each @samp{JUMP_INSN} and @samp{CALL_INSN}.
+These can be used to improve optimization. Currently, they are only
+used in one place: in @file{reorg.c}, instead of guessing which path a
+branch is mostly to take, the @samp{REG_BR_PROB} values are used to
+exactly determine which path is taken more often.
+@end ifset
@end table
@node Preprocessor Options
@@ -2412,9 +2529,9 @@ libraries and for parts of the compiler:
@table @code
@item -I@var{dir}
-Add the directory @var{directory} to the head of the list of directories
-to be searched for header files. This can be used to override a system
-header file, substituting your own version, since these directories are
+Add the directory @var{dir} to the head of the list of directories to be
+searched for header files. This can be used to override a system header
+file, substituting your own version, since these directories are
searched before the system header file directories. If you use more
than one @samp{-I} option, the directories are scanned in left-to-right
order; the standard system directories come after.
@@ -2477,6 +2594,14 @@ out of the link if it is not found by those means.
Another way to specify a prefix much like the @samp{-B} prefix is to use
the environment variable @code{GCC_EXEC_PREFIX}. @xref{Environment
Variables}.
+
+@item -specs=@var{file}
+Process @var{file} after the compiler reads in the standard @file{specs}
+file, in order to override the defaults that the @file{gcc} driver
+program uses when determining what switches to pass to @file{cc1},
+@file{cc1plus}, @file{as}, @file{ld}, etc. More than one
+@samp{-specs=}@var{file} can be specified on the command line, and they
+are processed in order, from left to right.
@end table
@node Target Options
@@ -2594,6 +2719,7 @@ that macro, which enables you to change the defaults.
* Convex Options::
* AMD29K Options::
* ARM Options::
+* M32R/D Options::
* M88K Options::
* RS/6000 and PowerPC Options::
* RT Options::
@@ -2664,6 +2790,12 @@ This results in code which can run relatively efficiently on either a
68020/68881 or a 68030 or a 68040. The generated code does use the
68881 instructions that are emulated on the 68040.
+@item -m68020-60
+Generate output for a 68060, without using any of the new instructions.
+This results in code which can run relatively efficiently on either a
+68020/68881 or a 68030 or a 68040. The generated code does use the
+68881 instructions that are emulated on the 68060.
+
@item -mfpa
Generate output containing Sun FPA instructions for floating point.
@@ -2710,6 +2842,19 @@ harmlessly ignored.)
The @code{rtd} instruction is supported by the 68010, 68020, 68030,
68040, and 68060 processors, but not by the 68000 or 5200.
+
+@item -malign-int
+@itemx -mno-align-int
+Control whether GNU CC aligns @code{int}, @code{long}, @code{long long},
+@code{float}, @code{double}, and @code{long double} variables on a 32-bit
+boundary (@samp{-malign-int}) or a 16-bit boundary (@samp{-mno-align-int}).
+Aligning variables on 32-bit boundaries produces code that runs somewhat
+faster on processors with 32-bit busses at the expense of more memory.
+
+@strong{Warning:} if you use the @samp{-malign-int} switch, GNU CC will
+align structures containing the above types differently than
+most published application binary interface specifications for the m68k.
+
@end table
@node VAX Options
@@ -3090,6 +3235,12 @@ to date, but not the 29050).
registers for copying out arguments. This helps detect calling a function
with fewer arguments than it was declared with.
+@item -mno-impure-text
+@itemx -mimpure-text
+@kindex -mimpure-text
+@samp{-mimpure-text}, used in addition to @samp{-shared}, tells the compiler to
+not pass @samp{-assert pure-text} to the linker when linking a shared object.
+
@item -msoft-float
@kindex -msoft-float
Generate output containing library calls for floating point.
@@ -3195,6 +3346,67 @@ suppresses this pass. The post-processor is never run when the
compiler is built for cross-compilation.
@end table
+@node M32R/D Options
+@subsection M32R/D Options
+@cindex M32R/D options
+
+These @samp{-m} options are defined for Mitsubishi M32R/D architectures:
+
+@table @code
+@item -mcode-model=small
+Assume all objects live in the lower 16MB of memory (so that their addresses
+can be loaded with the @code{ld24} instruction), and assume all subroutines
+are reachable with the @code{bl} instruction.
+This is the default.
+
+The addressability of a particular object can be set with the
+@code{model} attribute.
+
+@item -mcode-model=medium
+Assume objects may be anywhere in the 32 bit address space (the compiler
+will generate @code{seth/add3} instructions to load their addresses), and
+assume all subroutines are reachable with the @code{bl} instruction.
+
+@item -mcode-model=large
+Assume objects may be anywhere in the 32 bit address space (the compiler
+will generate @code{seth/add3} instructions to load their addresses), and
+assume subroutines may not be reachable with the @code{bl} instruction
+(the compiler will generate the much slower @code{seth/add3/jl}
+instruction sequence).
+
+@item -msdata=none
+Disable use of the small data area. Variables will be put into
+one of @samp{.data}, @samp{bss}, or @samp{.rodata} (unless the
+@code{section} attribute has been specified).
+This is the default.
+
+The small data area consists of sections @samp{.sdata} and @samp{.sbss}.
+Objects may be explicitly put in the small data area with the
+@code{section} attribute using one of these sections.
+
+@item -msdata=sdata
+Put small global and static data in the small data area, but do not
+generate special code to reference them.
+
+@item -msdata=use
+Put small global and static data in the small data area, and generate
+special instructions to reference them.
+
+@item -G @var{num}
+@cindex smaller data references
+Put global and static objects less than or equal to @var{num} bytes
+into the small data or bss sections instead of the normal data or bss
+sections. The default value of @var{num} is 8.
+The @samp{-msdata} option must be set to one of @samp{sdata} or @samp{use}
+for this option to have any effect.
+
+All modules should be compiled with the same @samp{-G @var{num}} value.
+Compiling with different values of @var{num} may or may not work; if it
+doesn't the linker will give an error message - incorrect code will not be
+generated.
+
+@end table
+
@node M88K Options
@subsection M88K Options
@cindex M88k options
@@ -3448,8 +3660,7 @@ RS/6000 and PowerPC. The @dfn{POWER} instruction set are those
instructions supported by the @samp{rios} chip set used in the original
RS/6000 systems and the @dfn{PowerPC} instruction set is the
architecture of the Motorola MPC5xx, MPC6xx, MPC8xx microprocessors, and
-the IBM 40x microprocessors. The PowerPC architecture defines 64-bit
-instructions, but they are not supported by any current processors.
+the IBM 4xx microprocessors.
Neither architecture is a subset of the other. However there is a
large common subset of instructions supported by both. An MQ
@@ -3512,25 +3723,28 @@ Set architecture type, register usage, choice of mnemonics, and
instruction scheduling parameters for machine type @var{cpu_type}.
Supported values for @var{cpu_type} are @samp{rs6000}, @samp{rios1},
@samp{rios2}, @samp{rsc}, @samp{601}, @samp{602}, @samp{603},
-@samp{603e}, @samp{604}, @samp{620}, @samp{power}, @samp{power2},
-@samp{powerpc}, @samp{403}, @samp{505}, @samp{821}, and @samp{860} and
-@samp{common}. @samp{-mcpu=power}, @samp{-mcpu=power2}, and
-@samp{-mcpu=powerpc} specify generic POWER, POWER2 and pure PowerPC
-(i.e., not MPC601) architecture machine types, with an appropriate,
-generic processor model assumed for scheduling purposes.@refill
+@samp{603e}, @samp{604}, @samp{604e}, @samp{620}, @samp{power},
+@samp{power2}, @samp{powerpc}, @samp{403}, @samp{505}, @samp{801},
+@samp{821}, @samp{823}, and @samp{860} and @samp{common}.
+@samp{-mcpu=power}, @samp{-mcpu=power2}, and @samp{-mcpu=powerpc}
+specify generic POWER, POWER2 and pure PowerPC (i.e., not MPC601)
+architecture machine types, with an appropriate, generic processor model
+assumed for scheduling purposes.@refill
@c overfull hbox here --bob 22 jul96
@c original text between ignore ... end ignore
@ignore
-Specifying any of the @samp{-mcpu=rios1}, @samp{-mcpu=rios2}, @samp{-mcpu=rsc},
-@samp{-mcpu=power}, or @samp{-mcpu=power2} options enables the @samp{-mpower}
-option and disables the @samp{-mpowerpc} option; @samp{-mcpu=601}
-enables both the @samp{-mpower} and @samp{-mpowerpc} options;
-all of @samp{-mcpu=602}, @samp{-mcpu=603}, @samp{-mcpu=603e}, @samp{-mcpu=604},
-@samp{-mcpu=620}, @samp{-mcpu=403}, @samp{-mcpu=505}, @samp{-mcpu=821},
-@samp{-mcpu=860} and @samp{-mcpu=powerpc} enable the @samp{-mpowerpc}
-option and disable the @samp{-mpower} option; @samp{-mcpu=common}
-disables both the @samp{-mpower} and @samp{-mpowerpc} options.@refill
+Specifying any of the @samp{-mcpu=rios1}, @samp{-mcpu=rios2},
+@samp{-mcpu=rsc}, @samp{-mcpu=power}, or @samp{-mcpu=power2} options
+enables the @samp{-mpower} option and disables the @samp{-mpowerpc}
+option; @samp{-mcpu=601} enables both the @samp{-mpower} and
+@samp{-mpowerpc} options; all of @samp{-mcpu=602}, @samp{-mcpu=603},
+@samp{-mcpu=603e}, @samp{-mcpu=604}, @samp{-mcpu=604e},
+@samp{-mcpu=620}, @samp{-mcpu=403}, @samp{-mcpu=505}, @samp{-mcpu=801},
+@samp{-mcpu=821}, @samp{-mcpu=823}, @samp{-mcpu=860} and
+@samp{-mcpu=powerpc} enable the @samp{-mpowerpc} option and disable the
+@samp{-mpower} option; @samp{-mcpu=common} disables both the
+@samp{-mpower} and @samp{-mpowerpc} options.@refill
@end ignore
@c changed paragraph
Specifying any of the following options:
@@ -3616,6 +3830,21 @@ stack is inefficient and rarely needed, this option is not enabled by
default and only is necessary when calling subroutines compiled by AIX
XL compilers without optimization.
+@item -mthreads
+Support @dfn{AIX Threads}. Link an application written to use
+@dfn{pthreads} with special libraries and startup code to enable the
+application to run.
+
+@item -mpe
+Support @dfn{IBM RS/6000 SP} @dfn{Parallel Environment} (PE). Link an
+application written to use message passing with special startup code to
+enable the application to run. The system must have PE installed in the
+standard location (@file{/usr/lpp/ppe.poe/}), or the @file{specs} file
+must be overridden with the @samp{-specs=} option to specify the
+appropriate directory location. The Parallel Environment does not
+support threads, so the @samp{-mpe} option and the @samp{-mthreads}
+option are incompatible.
+
@item -msoft-float
@itemx -mhard-float
Generate code that does not use (uses) the floating-point register set.
@@ -3635,11 +3864,27 @@ processor is in little endian mode.
@itemx -mno-string
Generate code that uses (does not use) the load string instructions and the
store string word instructions to save multiple registers and do small block
-moves. These instructions are generated by default on POWER systems, anod not
+moves. These instructions are generated by default on POWER systems, and not
generated on PowerPC systems. Do not use @samp{-mstring} on little endian
PowerPC systems, since those instructions do not work when the processor is in
little endian mode.
+@item -mupdate
+@itemx -mno-update
+Generate code that uses (does not use) the load or store instructions
+that update the base register to the address of the calculated memory
+location. These instructions are generated by default. If you use
+@samp{-mno-update}, there is a small window between the time that the
+stack pointer is updated and the address of the previous frame is
+stored, which means code that walks the stack frame across interrupts or
+signals may get corrupted data.
+
+@item -mfused-madd
+@itemx -mno-fused-madd
+Generate code that uses (does not use) the floating point multiply and
+accumulate instructions. These instructions are generated by default if
+hardware floating is used.
+
@item -mno-bit-align
@itemx -mbit-align
On System V.4 and embedded PowerPC systems do not (do) force structures
@@ -3718,8 +3963,8 @@ On System V.4 and embedded PowerPC systems compile code for the Solaris
operating system.
@item -mcall-linux
-On System V.4 and embedded PowerPC systems compile code for the Linux
-operating system.
+On System V.4 and embedded PowerPC systems compile code for the
+Linux-based GNU system.
@item -mprototype
@item -mno-prototype
@@ -3927,7 +4172,16 @@ stabs within MIPS ECOFF.
@item -mgas
Generate code for the GNU assembler. This is the default on the OSF/1
-reference platform, using the OSF/rose object format.
+reference platform, using the OSF/rose object format. Also, this is
+the default if the configure option @samp{--with-gnu-as} is used.
+
+@item -msplit-addresses
+@itemx -mno-split-addresses
+Generate code to load the high and low parts of address constants separately.
+This allows @code{gcc} to optimize away redundant loads of the high order
+bits of addresses. This optimization requires GNU as and GNU ld.
+This optimization is enabled by default for some embedded targets where
+GNU as and GNU ld are standard.
@item -mrnames
@itemx -mno-rnames
@@ -4206,6 +4460,11 @@ Generate code for a PA 1.0 processor.
@item -mpa-risc-1-1
Generate code for a PA 1.1 processor.
+@item -mbig-switch
+Generate code suitable for big switch tables. Use this option only if
+the assembler/linker complain about out of range branches within a switch
+table.
+
@item -mjump-in-delay
Fill delay slots of function calls with unconditional jump instructions
by modifying the return pointer for the function call to be the target
@@ -4353,8 +4612,7 @@ Do not permit (do permit) unaligned accesses.
@item -mold-align
Enable structure-alignment compatibility with Intel's gcc release version
-1.3 (based on gcc 1.37). Currently this is buggy in that @samp{#pragma
-align 1} is always assumed as well, and cannot be turned off.
+1.3 (based on gcc 1.37). This option implies @samp{-mstrict-align}.
@end table
@node DEC Alpha Options
@@ -4733,23 +4991,20 @@ be volatile.
@cindex PIC
Generate position-independent code (PIC) suitable for use in a shared
library, if supported for the target machine. Such code accesses all
-constant addresses through a global offset table (GOT). If the GOT size
-for the linked executable exceeds a machine-specific maximum size, you
-get an error message from the linker indicating that @samp{-fpic} does
-not work; in that case, recompile with @samp{-fPIC} instead. (These
-maximums are 16k on the m88k, 8k on the Sparc, and 32k on the m68k and
-RS/6000. The 386 has no such limit.)
+constant addresses through a global offset table (GOT). The dynamic
+loader resolves the GOT entries when the program starts (the dynamic
+loader is not part of GNU CC; it is part of the operating system). If
+the GOT size for the linked executable exceeds a machine-specific
+maximum size, you get an error message from the linker indicating that
+@samp{-fpic} does not work; in that case, recompile with @samp{-fPIC}
+instead. (These maximums are 16k on the m88k, 8k on the Sparc, and 32k
+on the m68k and RS/6000. The 386 has no such limit.)
Position-independent code requires special support, and therefore works
only on certain machines. For the 386, GNU CC supports PIC for System V
but not for the Sun 386i. Code generated for the IBM RS/6000 is always
position-independent.
-The GNU assembler does not fully support PIC. Currently, you must use
-some other assembler in order for PIC to work. We would welcome
-volunteers to upgrade GAS to handle this; the first part of the job is
-to figure out what the assembler must do differently.
-
@item -fPIC
If supported for the target machine, emit position-independent code,
suitable for dynamic linking and avoiding any limit on the size of the
@@ -4805,6 +5060,61 @@ Pack all structure members together without holes. Usually you would
not want to use this option, since it makes the code suboptimal, and
the offsets of structure members won't agree with system libraries.
+@item -fcheck-memory-usage
+Generate extra code to check each memory access. GNU CC will generate
+code that is suitable for a detector of bad memory accesses such as
+@file{Checker}. If you specify this option, you can not use the
+@code{asm} or @code{__asm__} keywords.
+
+You must also specify this option when you compile functions you call that
+have side effects. If you do not, you may get erronous messages from
+the detector. Normally, you should compile all your code with this option.
+If you use functions from a library that have side-effects (such as
+@code{read}), you may not be able to recompile the library and
+specify this option. In that case, you can enable the
+@samp{-fprefix-function-name} option, which requests GNU CC to encapsulate
+your code and make other functions look as if they were compiled with
+@samp{-fcheck-memory-usage}. This is done by calling ``stubs'',
+which are provided by the detector. If you cannot find or build
+stubs for every function you call, you may have to specify
+@samp{-fcheck-memory-usage} without @samp{-fprefix-function-name}.
+
+@item -fprefix-function-name
+Request GNU CC to add a prefix to the symbols generated for function names.
+GNU CC adds a prefix to the names of functions defined as well as
+functions called. Code compiled with this option and code compiled
+without the option can't be linked together, unless or stubs are used.
+
+If you compile the following code with @samp{-fprefix-function-name}
+@example
+extern void bar (int);
+void
+foo (int a)
+@{
+ return bar (a + 5);
+
+@}
+@end example
+
+@noindent
+GNU CC will compile the code as if it was written:
+@example
+extern void prefix_bar (int);
+void
+prefix_foo (int a)
+@{
+ return prefix_bar (a + 5);
+@}
+@end example
+This option is designed to be used with @samp{-fcheck-memory-usage}.
+
+@item -fstack-check
+Generate code to verify that you do not go beyond the boundary of the
+stack. You should specify this flag if you are running in an
+environment with multiple threads, but only rarely need to specify it in
+a single-threaded environment since stack overflow is automatically
+detected on nearly all systems if there is only one stack.
+
@item +e0
@itemx +e1
Control whether virtual function definitions in classes are used to
diff --git a/gcc/just-fixinc b/gcc/just-fixinc
index e5ceaec7377..06cf99645d7 100755
--- a/gcc/just-fixinc
+++ b/gcc/just-fixinc
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id$
+# $Id: just-fixinc,v 1.1 1997/08/11 15:57:11 law Exp $
# This script exists for use after installing
# the GCC binaries from a distribution tape/CD-ROM.
# Use it *after* copying the directory of binaries
diff --git a/gcc/md.texi b/gcc/md.texi
index 4fe759a114a..1d5d53d9398 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -2410,6 +2410,16 @@ this pattern to emit the required instructions.
No operands are provided.
+@cindex @code{check_stack} instruction pattern
+@item @samp{check_stack}
+If stack checking cannot be done on your system by probing the stack with
+a load or store instruction (@pxref{Stack Checking}), define this pattern
+to perform the needed check and signaling an error if the stack
+has overflowed. The single operand is the location in the stack furthest
+from the current stack pointer that you need to validate. Normally,
+on machines where this pattern is needed, you would obtain the stack
+limit from a global or thread-specific variable or register.
+
@cindex @code{nonlocal_goto} instruction pattern
@item @samp{nonlocal_goto}
Emit code to generate a non-local goto, e.g., a jump from one function
@@ -2436,6 +2446,15 @@ normally need to define this pattern. A typical reason why you might
need this pattern is if some value, such as a pointer to a global table,
must be restored when the frame pointer is restored. There are no
arguments.
+
+@cindex @code{exception_receiver} instruction pattern
+@item @samp{exception_receiver}
+This pattern, if defined, contains code needed at the site of an
+exception handler that isn't needed at the site of a nonlocal goto. You
+will not normally need to define this pattern. A typical reason why you
+might need this pattern is if some value, such as a pointer to a global
+table, must be restored after control flow is branched to the handler of
+an exception. There are no arguments.
@end table
@node Pattern Ordering
diff --git a/gcc/move-if-change b/gcc/move-if-change
new file mode 100755
index 00000000000..66d8b8adc7f
--- /dev/null
+++ b/gcc/move-if-change
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Like mv $1 $2, but if the files are the same, just delete $1.
+# Status is 0 if $2 is changed, 1 otherwise.
+if
+test -r $2
+then
+if
+cmp -s $1 $2
+then
+echo $2 is unchanged
+rm -f $1
+else
+mv -f $1 $2
+fi
+else
+mv -f $1 $2
+fi
diff --git a/gcc/objc/objc-parse.c b/gcc/objc/objc-parse.c
new file mode 100644
index 00000000000..6a04682d341
--- /dev/null
+++ b/gcc/objc/objc-parse.c
@@ -0,0 +1,5103 @@
+
+/* A Bison parser, made from objc-parse.y with Bison version GNU Bison version 1.24
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SCSPEC 260
+#define TYPESPEC 261
+#define TYPE_QUAL 262
+#define CONSTANT 263
+#define STRING 264
+#define ELLIPSIS 265
+#define SIZEOF 266
+#define ENUM 267
+#define STRUCT 268
+#define UNION 269
+#define IF 270
+#define ELSE 271
+#define WHILE 272
+#define DO 273
+#define FOR 274
+#define SWITCH 275
+#define CASE 276
+#define DEFAULT 277
+#define BREAK 278
+#define CONTINUE 279
+#define RETURN 280
+#define GOTO 281
+#define ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define ATTRIBUTE 285
+#define EXTENSION 286
+#define LABEL 287
+#define REALPART 288
+#define IMAGPART 289
+#define ASSIGN 290
+#define OROR 291
+#define ANDAND 292
+#define EQCOMPARE 293
+#define ARITHCOMPARE 294
+#define LSHIFT 295
+#define RSHIFT 296
+#define UNARY 297
+#define PLUSPLUS 298
+#define MINUSMINUS 299
+#define HYPERUNARY 300
+#define POINTSAT 301
+#define INTERFACE 302
+#define IMPLEMENTATION 303
+#define END 304
+#define SELECTOR 305
+#define DEFS 306
+#define ENCODE 307
+#define CLASSNAME 308
+#define PUBLIC 309
+#define PRIVATE 310
+#define PROTECTED 311
+#define PROTOCOL 312
+#define OBJECTNAME 313
+#define CLASS 314
+#define ALIAS 315
+#define OBJC_STRING 316
+
+#line 33 "objc-parse.y"
+
+#include <stdio.h>
+#include <errno.h>
+#include <setjmp.h>
+
+#include "config.h"
+#include "tree.h"
+#include "input.h"
+#include "c-lex.h"
+#include "c-tree.h"
+#include "flags.h"
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+#include "objc-act.h"
+
+/* Since parsers are distinct for each language, put the language string
+ definition here. */
+char *language_string = "GNU Obj-C";
+
+#ifndef errno
+extern int errno;
+#endif
+
+void yyerror ();
+
+/* Like YYERROR but do call yyerror. */
+#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
+
+/* Cause the `yydebug' variable to be defined. */
+#define YYDEBUG 1
+
+#line 71 "objc-parse.y"
+typedef union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; } YYSTYPE;
+#line 198 "objc-parse.y"
+
+/* Number of statements (loosely speaking) seen so far. */
+static int stmt_count;
+
+/* Input file and line number of the end of the body of last simple_if;
+ used by the stmt-rule immediately after simple_if returns. */
+static char *if_stmt_file;
+static int if_stmt_line;
+
+/* List of types and structure classes of the current declaration. */
+static tree current_declspecs = NULL_TREE;
+static tree prefix_attributes = NULL_TREE;
+
+/* Stack of saved values of current_declspecs and prefix_attributes. */
+static tree declspec_stack;
+
+/* 1 if we explained undeclared var errors. */
+static int undeclared_variable_notice;
+
+/* Objective-C specific information */
+
+tree objc_interface_context;
+tree objc_implementation_context;
+tree objc_method_context;
+tree objc_ivar_chain;
+tree objc_ivar_context;
+enum tree_code objc_inherit_code;
+int objc_receiver_context;
+int objc_public_flag;
+
+
+/* Tell yyparse how to print a token's value, if yydebug is set. */
+
+#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
+extern void yyprint ();
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 940
+#define YYFLAG -32768
+#define YYNTBASE 84
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 305)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 80, 2, 2, 2, 52, 43, 2, 59,
+ 76, 50, 48, 81, 49, 58, 51, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 38, 77, 2,
+ 36, 2, 37, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 60, 2, 83, 42, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 82, 41, 78, 79, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 39, 40, 44, 45, 46, 47, 53, 54, 55, 56,
+ 57, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 1, 3, 4, 7, 8, 12, 14, 16, 18,
+ 24, 27, 31, 36, 41, 44, 47, 50, 53, 55,
+ 56, 57, 65, 70, 71, 72, 80, 85, 86, 87,
+ 94, 98, 100, 102, 104, 106, 108, 110, 112, 114,
+ 116, 118, 120, 122, 123, 125, 127, 131, 133, 136,
+ 139, 142, 145, 148, 153, 156, 161, 164, 167, 169,
+ 171, 173, 178, 179, 187, 189, 193, 197, 201, 205,
+ 209, 213, 217, 221, 225, 229, 233, 237, 238, 243,
+ 244, 249, 250, 251, 259, 260, 266, 270, 274, 276,
+ 278, 280, 284, 288, 289, 294, 299, 304, 308, 312,
+ 315, 318, 320, 322, 324, 326, 328, 330, 333, 335,
+ 338, 339, 341, 344, 348, 350, 352, 355, 358, 363,
+ 368, 371, 374, 378, 380, 382, 385, 388, 389, 390,
+ 395, 400, 404, 408, 411, 414, 417, 420, 424, 425,
+ 428, 431, 434, 437, 441, 442, 445, 448, 450, 452,
+ 455, 458, 460, 462, 465, 468, 471, 475, 476, 479,
+ 481, 483, 485, 488, 491, 493, 498, 503, 505, 507,
+ 509, 511, 515, 517, 521, 522, 527, 528, 535, 539,
+ 540, 547, 551, 552, 554, 556, 559, 566, 568, 572,
+ 573, 575, 580, 587, 592, 594, 596, 598, 600, 602,
+ 603, 608, 610, 611, 614, 616, 620, 622, 623, 628,
+ 630, 631, 636, 637, 643, 644, 645, 651, 652, 653,
+ 659, 661, 663, 667, 671, 676, 680, 684, 688, 690,
+ 692, 696, 701, 705, 709, 713, 715, 719, 723, 727,
+ 732, 736, 740, 742, 743, 751, 757, 760, 761, 769,
+ 775, 778, 779, 788, 789, 797, 800, 801, 803, 804,
+ 806, 808, 811, 812, 816, 819, 824, 828, 830, 834,
+ 836, 838, 841, 843, 847, 852, 859, 865, 867, 871,
+ 873, 875, 879, 882, 885, 886, 888, 890, 893, 894,
+ 897, 901, 905, 908, 912, 917, 921, 924, 928, 931,
+ 933, 935, 938, 941, 942, 944, 947, 948, 949, 951,
+ 953, 956, 960, 962, 965, 968, 975, 981, 987, 990,
+ 993, 998, 999, 1004, 1005, 1006, 1010, 1015, 1019, 1021,
+ 1023, 1025, 1027, 1030, 1031, 1036, 1038, 1042, 1043, 1044,
+ 1052, 1058, 1061, 1062, 1063, 1064, 1077, 1078, 1085, 1088,
+ 1091, 1094, 1098, 1105, 1114, 1125, 1138, 1142, 1147, 1149,
+ 1151, 1152, 1159, 1163, 1169, 1172, 1175, 1176, 1178, 1179,
+ 1181, 1182, 1184, 1186, 1190, 1195, 1197, 1201, 1202, 1205,
+ 1208, 1209, 1214, 1217, 1218, 1220, 1222, 1226, 1228, 1232,
+ 1237, 1242, 1247, 1252, 1257, 1258, 1261, 1263, 1266, 1268,
+ 1272, 1274, 1278, 1280, 1282, 1284, 1286, 1288, 1290, 1292,
+ 1294, 1298, 1302, 1307, 1308, 1309, 1320, 1321, 1328, 1329,
+ 1330, 1343, 1344, 1353, 1354, 1361, 1364, 1365, 1374, 1379,
+ 1380, 1390, 1396, 1397, 1404, 1405, 1407, 1411, 1415, 1417,
+ 1419, 1421, 1423, 1424, 1428, 1431, 1435, 1439, 1441, 1442,
+ 1444, 1448, 1450, 1454, 1457, 1458, 1459, 1460, 1468, 1469,
+ 1470, 1471, 1479, 1480, 1481, 1484, 1486, 1488, 1491, 1492,
+ 1496, 1498, 1500, 1501, 1502, 1508, 1509, 1510, 1516, 1521,
+ 1523, 1529, 1532, 1533, 1536, 1537, 1539, 1541, 1543, 1546,
+ 1549, 1554, 1557, 1560, 1562, 1566, 1569, 1572, 1575, 1576,
+ 1579, 1580, 1584, 1586, 1588, 1591, 1593, 1595, 1597, 1599,
+ 1601, 1603, 1605, 1607, 1609, 1611, 1613, 1615, 1617, 1619,
+ 1621, 1623, 1625, 1627, 1629, 1631, 1633, 1635, 1637, 1639,
+ 1641, 1648, 1652, 1658, 1661, 1663, 1665, 1667, 1670, 1672,
+ 1676, 1679, 1681, 1683, 1684, 1685, 1692, 1694, 1696, 1698,
+ 1701, 1704, 1706, 1711, 1716
+};
+
+static const short yyrhs[] = { -1,
+ 85, 0, 0, 86, 88, 0, 0, 85, 87, 88,
+ 0, 90, 0, 89, 0, 236, 0, 27, 59, 99,
+ 76, 77, 0, 235, 88, 0, 123, 137, 77, 0,
+ 130, 123, 137, 77, 0, 126, 123, 136, 77, 0,
+ 130, 77, 0, 126, 77, 0, 1, 77, 0, 1,
+ 78, 0, 77, 0, 0, 0, 126, 123, 163, 91,
+ 117, 92, 194, 0, 126, 123, 163, 1, 0, 0,
+ 0, 130, 123, 166, 93, 117, 94, 194, 0, 130,
+ 123, 166, 1, 0, 0, 0, 123, 166, 95, 117,
+ 96, 194, 0, 123, 166, 1, 0, 3, 0, 4,
+ 0, 72, 0, 67, 0, 43, 0, 49, 0, 48,
+ 0, 54, 0, 55, 0, 79, 0, 80, 0, 101,
+ 0, 0, 101, 0, 107, 0, 101, 81, 107, 0,
+ 113, 0, 50, 105, 0, 235, 105, 0, 98, 105,
+ 0, 40, 97, 0, 103, 102, 0, 103, 59, 181,
+ 76, 0, 104, 102, 0, 104, 59, 181, 76, 0,
+ 33, 105, 0, 34, 105, 0, 11, 0, 29, 0,
+ 102, 0, 59, 181, 76, 105, 0, 0, 59, 181,
+ 76, 82, 106, 151, 78, 0, 105, 0, 107, 48,
+ 107, 0, 107, 49, 107, 0, 107, 50, 107, 0,
+ 107, 51, 107, 0, 107, 52, 107, 0, 107, 46,
+ 107, 0, 107, 47, 107, 0, 107, 45, 107, 0,
+ 107, 44, 107, 0, 107, 43, 107, 0, 107, 41,
+ 107, 0, 107, 42, 107, 0, 0, 107, 40, 108,
+ 107, 0, 0, 107, 39, 109, 107, 0, 0, 0,
+ 107, 37, 110, 99, 38, 111, 107, 0, 0, 107,
+ 37, 112, 38, 107, 0, 107, 36, 107, 0, 107,
+ 35, 107, 0, 3, 0, 8, 0, 115, 0, 59,
+ 99, 76, 0, 59, 1, 76, 0, 0, 59, 114,
+ 195, 76, 0, 113, 59, 100, 76, 0, 113, 60,
+ 99, 83, 0, 113, 58, 97, 0, 113, 57, 97,
+ 0, 113, 54, 0, 113, 55, 0, 296, 0, 302,
+ 0, 303, 0, 304, 0, 116, 0, 9, 0, 115,
+ 9, 0, 75, 0, 116, 75, 0, 0, 119, 0,
+ 119, 10, 0, 200, 201, 120, 0, 118, 0, 189,
+ 0, 119, 118, 0, 118, 189, 0, 128, 123, 136,
+ 77, 0, 131, 123, 137, 77, 0, 128, 77, 0,
+ 131, 77, 0, 200, 201, 125, 0, 121, 0, 189,
+ 0, 122, 121, 0, 121, 189, 0, 0, 0, 126,
+ 123, 136, 77, 0, 130, 123, 137, 77, 0, 126,
+ 123, 157, 0, 130, 123, 160, 0, 126, 77, 0,
+ 130, 77, 0, 235, 125, 0, 134, 127, 0, 130,
+ 134, 127, 0, 0, 127, 135, 0, 127, 5, 0,
+ 127, 144, 0, 134, 129, 0, 131, 134, 129, 0,
+ 0, 129, 135, 0, 129, 5, 0, 131, 0, 144,
+ 0, 130, 131, 0, 130, 144, 0, 7, 0, 5,
+ 0, 131, 7, 0, 131, 5, 0, 134, 133, 0,
+ 183, 134, 133, 0, 0, 133, 135, 0, 6, 0,
+ 167, 0, 4, 0, 67, 252, 0, 72, 252, 0,
+ 253, 0, 28, 59, 99, 76, 0, 28, 59, 181,
+ 76, 0, 6, 0, 7, 0, 167, 0, 139, 0,
+ 136, 81, 139, 0, 141, 0, 137, 81, 139, 0,
+ 0, 27, 59, 115, 76, 0, 0, 163, 138, 143,
+ 36, 140, 149, 0, 163, 138, 143, 0, 0, 166,
+ 138, 143, 36, 142, 149, 0, 166, 138, 143, 0,
+ 0, 144, 0, 145, 0, 144, 145, 0, 30, 59,
+ 59, 146, 76, 76, 0, 147, 0, 146, 81, 147,
+ 0, 0, 148, 0, 148, 59, 3, 76, 0, 148,
+ 59, 3, 81, 101, 76, 0, 148, 59, 100, 76,
+ 0, 97, 0, 5, 0, 6, 0, 7, 0, 107,
+ 0, 0, 82, 150, 151, 78, 0, 1, 0, 0,
+ 152, 172, 0, 153, 0, 152, 81, 153, 0, 107,
+ 0, 0, 82, 154, 151, 78, 0, 1, 0, 0,
+ 97, 38, 155, 153, 0, 0, 58, 97, 36, 156,
+ 153, 0, 0, 0, 163, 158, 117, 159, 195, 0,
+ 0, 0, 166, 161, 117, 162, 195, 0, 164, 0,
+ 166, 0, 59, 164, 76, 0, 164, 59, 230, 0,
+ 164, 60, 99, 83, 0, 164, 60, 83, 0, 50,
+ 184, 164, 0, 144, 124, 164, 0, 4, 0, 72,
+ 0, 165, 59, 230, 0, 165, 60, 99, 83, 0,
+ 165, 60, 83, 0, 50, 184, 165, 0, 144, 124,
+ 165, 0, 4, 0, 166, 59, 230, 0, 59, 166,
+ 76, 0, 50, 184, 166, 0, 166, 60, 99, 83,
+ 0, 166, 60, 83, 0, 144, 124, 166, 0, 3,
+ 0, 0, 13, 97, 82, 168, 174, 78, 143, 0,
+ 13, 82, 174, 78, 143, 0, 13, 97, 0, 0,
+ 14, 97, 82, 169, 174, 78, 143, 0, 14, 82,
+ 174, 78, 143, 0, 14, 97, 0, 0, 12, 97,
+ 82, 170, 179, 173, 78, 143, 0, 0, 12, 82,
+ 171, 179, 173, 78, 143, 0, 12, 97, 0, 0,
+ 81, 0, 0, 81, 0, 175, 0, 175, 176, 0,
+ 0, 175, 176, 77, 0, 175, 77, 0, 65, 59,
+ 67, 76, 0, 132, 123, 177, 0, 132, 0, 183,
+ 123, 177, 0, 183, 0, 1, 0, 235, 176, 0,
+ 178, 0, 177, 81, 178, 0, 200, 201, 163, 143,
+ 0, 200, 201, 163, 38, 107, 143, 0, 200, 201,
+ 38, 107, 143, 0, 180, 0, 179, 81, 180, 0,
+ 1, 0, 97, 0, 97, 36, 107, 0, 132, 182,
+ 0, 183, 182, 0, 0, 185, 0, 7, 0, 183,
+ 7, 0, 0, 184, 7, 0, 59, 185, 76, 0,
+ 50, 184, 185, 0, 50, 184, 0, 185, 59, 223,
+ 0, 185, 60, 99, 83, 0, 185, 60, 83, 0,
+ 59, 223, 0, 60, 99, 83, 0, 60, 83, 0,
+ 187, 0, 203, 0, 187, 203, 0, 187, 189, 0,
+ 0, 186, 0, 1, 77, 0, 0, 0, 192, 0,
+ 193, 0, 192, 193, 0, 32, 234, 77, 0, 195,
+ 0, 1, 195, 0, 82, 78, 0, 82, 190, 191,
+ 122, 188, 78, 0, 82, 190, 191, 1, 78, 0,
+ 82, 190, 191, 186, 78, 0, 197, 202, 0, 197,
+ 1, 0, 15, 59, 99, 76, 0, 0, 18, 199,
+ 202, 17, 0, 0, 0, 200, 201, 205, 0, 200,
+ 201, 216, 202, 0, 200, 201, 204, 0, 205, 0,
+ 216, 0, 195, 0, 213, 0, 99, 77, 0, 0,
+ 196, 16, 206, 202, 0, 196, 0, 196, 16, 1,
+ 0, 0, 0, 17, 207, 59, 99, 76, 208, 202,
+ 0, 198, 59, 99, 76, 77, 0, 198, 1, 0,
+ 0, 0, 0, 19, 59, 218, 77, 209, 218, 77,
+ 210, 218, 76, 211, 202, 0, 0, 20, 59, 99,
+ 76, 212, 202, 0, 23, 77, 0, 24, 77, 0,
+ 25, 77, 0, 25, 99, 77, 0, 27, 217, 59,
+ 99, 76, 77, 0, 27, 217, 59, 99, 38, 219,
+ 76, 77, 0, 27, 217, 59, 99, 38, 219, 38,
+ 219, 76, 77, 0, 27, 217, 59, 99, 38, 219,
+ 38, 219, 38, 222, 76, 77, 0, 26, 97, 77,
+ 0, 26, 50, 99, 77, 0, 77, 0, 214, 0,
+ 0, 19, 59, 113, 76, 215, 202, 0, 21, 107,
+ 38, 0, 21, 107, 10, 107, 38, 0, 22, 38,
+ 0, 97, 38, 0, 0, 7, 0, 0, 99, 0,
+ 0, 220, 0, 221, 0, 220, 81, 221, 0, 9,
+ 59, 99, 76, 0, 115, 0, 222, 81, 115, 0,
+ 0, 224, 225, 0, 227, 76, 0, 0, 228, 77,
+ 226, 225, 0, 1, 76, 0, 0, 10, 0, 228,
+ 0, 228, 81, 10, 0, 229, 0, 228, 81, 229,
+ 0, 126, 123, 165, 143, 0, 126, 123, 166, 143,
+ 0, 126, 123, 182, 143, 0, 130, 123, 166, 143,
+ 0, 130, 123, 182, 143, 0, 0, 231, 232, 0,
+ 225, 0, 233, 76, 0, 3, 0, 233, 81, 3,
+ 0, 97, 0, 234, 81, 97, 0, 31, 0, 240,
+ 0, 238, 0, 239, 0, 250, 0, 260, 0, 63,
+ 0, 97, 0, 237, 81, 97, 0, 73, 237, 77,
+ 0, 74, 97, 97, 77, 0, 0, 0, 61, 97,
+ 252, 82, 241, 254, 78, 242, 267, 63, 0, 0,
+ 61, 97, 252, 243, 267, 63, 0, 0, 0, 61,
+ 97, 38, 97, 252, 82, 244, 254, 78, 245, 267,
+ 63, 0, 0, 61, 97, 38, 97, 252, 246, 267,
+ 63, 0, 0, 62, 97, 82, 247, 254, 78, 0,
+ 62, 97, 0, 0, 62, 97, 38, 97, 82, 248,
+ 254, 78, 0, 62, 97, 38, 97, 0, 0, 61,
+ 97, 59, 97, 76, 252, 249, 267, 63, 0, 62,
+ 97, 59, 97, 76, 0, 0, 71, 97, 252, 251,
+ 267, 63, 0, 0, 253, 0, 45, 237, 45, 0,
+ 254, 255, 256, 0, 256, 0, 69, 0, 70, 0,
+ 68, 0, 0, 256, 257, 77, 0, 256, 77, 0,
+ 132, 123, 258, 0, 183, 123, 258, 0, 1, 0,
+ 0, 259, 0, 258, 81, 259, 0, 163, 0, 163,
+ 38, 107, 0, 38, 107, 0, 0, 0, 0, 48,
+ 261, 277, 262, 278, 263, 194, 0, 0, 0, 0,
+ 49, 264, 277, 265, 278, 266, 194, 0, 0, 0,
+ 268, 269, 0, 272, 0, 89, 0, 269, 272, 0,
+ 0, 269, 270, 89, 0, 77, 0, 1, 0, 0,
+ 0, 48, 273, 277, 274, 271, 0, 0, 0, 49,
+ 275, 277, 276, 271, 0, 59, 181, 76, 286, 0,
+ 286, 0, 59, 181, 76, 287, 284, 0, 287, 284,
+ 0, 0, 77, 279, 0, 0, 280, 0, 281, 0,
+ 189, 0, 280, 281, 0, 281, 189, 0, 126, 123,
+ 282, 77, 0, 126, 77, 0, 130, 77, 0, 283,
+ 0, 282, 81, 283, 0, 165, 143, 0, 166, 143,
+ 0, 182, 143, 0, 0, 81, 10, 0, 0, 81,
+ 285, 227, 0, 288, 0, 290, 0, 287, 290, 0,
+ 3, 0, 4, 0, 72, 0, 289, 0, 12, 0,
+ 13, 0, 14, 0, 15, 0, 16, 0, 17, 0,
+ 18, 0, 19, 0, 20, 0, 21, 0, 22, 0,
+ 23, 0, 24, 0, 25, 0, 26, 0, 27, 0,
+ 11, 0, 28, 0, 29, 0, 6, 0, 7, 0,
+ 288, 38, 59, 181, 76, 97, 0, 288, 38, 97,
+ 0, 38, 59, 181, 76, 97, 0, 38, 97, 0,
+ 288, 0, 292, 0, 294, 0, 292, 294, 0, 101,
+ 0, 288, 38, 293, 0, 38, 293, 0, 99, 0,
+ 67, 0, 0, 0, 60, 297, 295, 298, 291, 83,
+ 0, 288, 0, 300, 0, 301, 0, 300, 301, 0,
+ 288, 38, 0, 38, 0, 64, 59, 299, 76, 0,
+ 71, 59, 97, 76, 0, 66, 59, 181, 76, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 236, 241, 255, 257, 257, 258, 260, 262, 263, 264,
+ 272, 276, 287, 292, 297, 299, 301, 302, 303, 308,
+ 315, 317, 322, 327, 333, 335, 340, 345, 351, 353,
+ 358, 365, 367, 368, 369, 372, 374, 376, 378, 380,
+ 382, 384, 388, 392, 395, 398, 401, 405, 407, 410,
+ 413, 417, 445, 451, 454, 457, 460, 462, 466, 470,
+ 474, 476, 479, 483, 510, 512, 514, 516, 518, 520,
+ 522, 524, 526, 528, 530, 532, 534, 536, 540, 542,
+ 546, 548, 551, 555, 557, 564, 567, 570, 576, 736,
+ 737, 739, 745, 747, 761, 784, 786, 788, 800, 814,
+ 816, 818, 820, 822, 824, 826, 831, 833, 839, 841,
+ 845, 847, 848, 858, 863, 865, 866, 867, 874, 880,
+ 885, 888, 896, 901, 903, 904, 905, 912, 923, 927,
+ 933, 938, 943, 948, 950, 952, 961, 964, 968, 970,
+ 972, 977, 981, 984, 988, 991, 993, 1005, 1008, 1010,
+ 1012, 1016, 1020, 1022, 1025, 1038, 1041, 1045, 1047, 1055,
+ 1056, 1057, 1061, 1063, 1068, 1070, 1072, 1078, 1079, 1080,
+ 1083, 1085, 1088, 1090, 1093, 1096, 1102, 1109, 1111, 1118,
+ 1125, 1128, 1135, 1138, 1142, 1145, 1149, 1154, 1157, 1161,
+ 1164, 1166, 1168, 1170, 1177, 1179, 1180, 1181, 1186, 1188,
+ 1193, 1201, 1206, 1210, 1213, 1215, 1220, 1223, 1225, 1227,
+ 1231, 1234, 1234, 1237, 1239, 1250, 1258, 1262, 1273, 1281,
+ 1288, 1290, 1295, 1298, 1303, 1305, 1307, 1314, 1316, 1317,
+ 1325, 1331, 1333, 1335, 1342, 1344, 1350, 1356, 1358, 1360,
+ 1362, 1369, 1371, 1374, 1379, 1381, 1385, 1387, 1389, 1391,
+ 1395, 1397, 1400, 1403, 1406, 1409, 1413, 1415, 1418, 1420,
+ 1424, 1427, 1432, 1434, 1436, 1440, 1464, 1471, 1476, 1482,
+ 1487, 1489, 1494, 1496, 1500, 1504, 1508, 1518, 1520, 1525,
+ 1530, 1533, 1537, 1540, 1544, 1547, 1550, 1553, 1557, 1560,
+ 1564, 1568, 1570, 1572, 1574, 1576, 1578, 1580, 1582, 1592,
+ 1600, 1602, 1604, 1608, 1610, 1613, 1616, 1629, 1631, 1636,
+ 1638, 1641, 1655, 1658, 1661, 1663, 1671, 1679, 1690, 1695,
+ 1698, 1711, 1719, 1723, 1727, 1731, 1737, 1741, 1746, 1749,
+ 1754, 1757, 1758, 1775, 1780, 1783, 1795, 1797, 1807, 1817,
+ 1818, 1826, 1829, 1841, 1845, 1862, 1872, 1881, 1886, 1891,
+ 1896, 1900, 1904, 1915, 1922, 1929, 1936, 1947, 1953, 1956,
+ 1961, 1984, 2018, 2043, 2074, 2089, 2100, 2104, 2108, 2111,
+ 2116, 2118, 2121, 2123, 2127, 2132, 2135, 2141, 2146, 2151,
+ 2153, 2162, 2163, 2169, 2171, 2181, 2183, 2187, 2190, 2196,
+ 2206, 2215, 2224, 2234, 2248, 2253, 2258, 2260, 2269, 2272,
+ 2277, 2280, 2284, 2292, 2294, 2295, 2296, 2297, 2298, 2312,
+ 2315, 2319, 2325, 2331, 2338, 2343, 2349, 2356, 2362, 2368,
+ 2373, 2379, 2386, 2392, 2398, 2404, 2412, 2418, 2424, 2432,
+ 2439, 2445, 2454, 2461, 2469, 2474, 2477, 2487, 2489, 2492,
+ 2494, 2495, 2498, 2503, 2504, 2521, 2528, 2534, 2538, 2541,
+ 2542, 2545, 2553, 2559, 2568, 2578, 2585, 2589, 2594, 2603,
+ 2610, 2614, 2624, 2626, 2627, 2629, 2631, 2632, 2633, 2634,
+ 2636, 2638, 2641, 2647, 2652, 2652, 2657, 2661, 2663, 2669,
+ 2674, 2679, 2688, 2690, 2696, 2698, 2701, 2703, 2704, 2705,
+ 2708, 2714, 2716, 2720, 2723, 2730, 2736, 2741, 2748, 2753,
+ 2758, 2763, 2770, 2774, 2777, 2783, 2785, 2786, 2787, 2790,
+ 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801,
+ 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2810,
+ 2813, 2819, 2824, 2829, 2835, 2837, 2840, 2842, 2849, 2861,
+ 2866, 2872, 2874, 2880, 2884, 2885, 2891, 2893, 2896, 2898,
+ 2904, 2909, 2915, 2922, 2931
+};
+
+static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
+"TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF",
+"ENUM","STRUCT","UNION","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
+"BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF","ATTRIBUTE",
+"EXTENSION","LABEL","REALPART","IMAGPART","ASSIGN","'='","'?'","':'","OROR",
+"ANDAND","'|'","'^'","'&'","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT","'+'",
+"'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","POINTSAT",
+"'.'","'('","'['","INTERFACE","IMPLEMENTATION","END","SELECTOR","DEFS","ENCODE",
+"CLASSNAME","PUBLIC","PRIVATE","PROTECTED","PROTOCOL","OBJECTNAME","CLASS","ALIAS",
+"OBJC_STRING","')'","';'","'}'","'~'","'!'","','","'{'","']'","program","extdefs",
+"@1","@2","extdef","datadef","fndef","@3","@4","@5","@6","@7","@8","identifier",
+"unop","expr","exprlist","nonnull_exprlist","unary_expr","sizeof","alignof",
+"cast_expr","@9","expr_no_commas","@10","@11","@12","@13","@14","primary","@15",
+"string","objc_string","old_style_parm_decls","lineno_datadecl","datadecls",
+"datadecl","lineno_decl","decls","setspecs","setattrs","decl","typed_declspecs",
+"reserved_declspecs","typed_declspecs_no_prefix_attr","reserved_declspecs_no_prefix_attr",
+"declmods","declmods_no_prefix_attr","typed_typespecs","reserved_typespecquals",
+"typespec","typespecqual_reserved","initdecls","notype_initdecls","maybeasm",
+"initdcl","@16","notype_initdcl","@17","maybe_attribute","attributes","attribute",
+"attribute_list","attrib","any_word","init","@18","initlist_maybe_comma","initlist1",
+"initelt","@19","@20","@21","nested_function","@22","@23","notype_nested_function",
+"@24","@25","declarator","after_type_declarator","parm_declarator","notype_declarator",
+"structsp","@26","@27","@28","@29","maybecomma","maybecomma_warn","component_decl_list",
+"component_decl_list2","component_decl","components","component_declarator",
+"enumlist","enumerator","typename","absdcl","nonempty_type_quals","type_quals",
+"absdcl1","stmts","lineno_stmt_or_labels","xstmts","errstmt","pushlevel","maybe_label_decls",
+"label_decls","label_decl","compstmt_or_error","compstmt","simple_if","if_prefix",
+"do_stmt_start","@30","save_filename","save_lineno","lineno_labeled_stmt","lineno_stmt_or_label",
+"stmt_or_label","stmt","@31","@32","@33","@34","@35","@36","@37","all_iter_stmt",
+"all_iter_stmt_simple","@38","label","maybe_type_qual","xexpr","asm_operands",
+"nonnull_asm_operands","asm_operand","asm_clobbers","parmlist","@39","parmlist_1",
+"@40","parmlist_2","parms","parm","parmlist_or_identifiers","@41","parmlist_or_identifiers_1",
+"identifiers","identifiers_or_typenames","extension","objcdef","identifier_list",
+"classdecl","aliasdecl","classdef","@42","@43","@44","@45","@46","@47","@48",
+"@49","@50","protocoldef","@51","protocolrefs","non_empty_protocolrefs","ivar_decl_list",
+"visibility_spec","ivar_decls","ivar_decl","ivars","ivar_declarator","methoddef",
+"@52","@53","@54","@55","@56","@57","methodprotolist","@58","methodprotolist2",
+"@59","semi_or_error","methodproto","@60","@61","@62","@63","methoddecl","optarglist",
+"myxdecls","mydecls","mydecl","myparms","myparm","optparmlist","@64","unaryselector",
+"keywordselector","selector","reservedwords","keyworddecl","messageargs","keywordarglist",
+"keywordexpr","keywordarg","receiver","objcmessageexpr","@65","@66","selectorarg",
+"keywordnamelist","keywordname","objcselectorexpr","objcprotocolexpr","objcencodeexpr",
+""
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 84, 84, 86, 85, 87, 85, 88, 88, 88, 88,
+ 88, 89, 89, 89, 89, 89, 89, 89, 89, 91,
+ 92, 90, 90, 93, 94, 90, 90, 95, 96, 90,
+ 90, 97, 97, 97, 97, 98, 98, 98, 98, 98,
+ 98, 98, 99, 100, 100, 101, 101, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 103, 104,
+ 105, 105, 106, 105, 107, 107, 107, 107, 107, 107,
+ 107, 107, 107, 107, 107, 107, 107, 108, 107, 109,
+ 107, 110, 111, 107, 112, 107, 107, 107, 113, 113,
+ 113, 113, 113, 114, 113, 113, 113, 113, 113, 113,
+ 113, 113, 113, 113, 113, 113, 115, 115, 116, 116,
+ 117, 117, 117, 118, 119, 119, 119, 119, 120, 120,
+ 120, 120, 121, 122, 122, 122, 122, 123, 124, 125,
+ 125, 125, 125, 125, 125, 125, 126, 126, 127, 127,
+ 127, 127, 128, 128, 129, 129, 129, 130, 130, 130,
+ 130, 131, 131, 131, 131, 132, 132, 133, 133, 134,
+ 134, 134, 134, 134, 134, 134, 134, 135, 135, 135,
+ 136, 136, 137, 137, 138, 138, 140, 139, 139, 142,
+ 141, 141, 143, 143, 144, 144, 145, 146, 146, 147,
+ 147, 147, 147, 147, 148, 148, 148, 148, 149, 150,
+ 149, 149, 151, 151, 152, 152, 153, 154, 153, 153,
+ 155, 153, 156, 153, 158, 159, 157, 161, 162, 160,
+ 163, 163, 164, 164, 164, 164, 164, 164, 164, 164,
+ 165, 165, 165, 165, 165, 165, 166, 166, 166, 166,
+ 166, 166, 166, 168, 167, 167, 167, 169, 167, 167,
+ 167, 170, 167, 171, 167, 167, 172, 172, 173, 173,
+ 174, 174, 175, 175, 175, 175, 176, 176, 176, 176,
+ 176, 176, 177, 177, 178, 178, 178, 179, 179, 179,
+ 180, 180, 181, 181, 182, 182, 183, 183, 184, 184,
+ 185, 185, 185, 185, 185, 185, 185, 185, 185, 186,
+ 187, 187, 187, 188, 188, 189, 190, 191, 191, 192,
+ 192, 193, 194, 194, 195, 195, 195, 195, 196, 196,
+ 197, 199, 198, 200, 201, 202, 202, 203, 204, 204,
+ 205, 205, 205, 206, 205, 205, 205, 207, 208, 205,
+ 205, 205, 209, 210, 211, 205, 212, 205, 205, 205,
+ 205, 205, 205, 205, 205, 205, 205, 205, 205, 213,
+ 215, 214, 216, 216, 216, 216, 217, 217, 218, 218,
+ 219, 219, 220, 220, 221, 222, 222, 224, 223, 225,
+ 226, 225, 225, 227, 227, 227, 227, 228, 228, 229,
+ 229, 229, 229, 229, 231, 230, 232, 232, 233, 233,
+ 234, 234, 235, 236, 236, 236, 236, 236, 236, 237,
+ 237, 238, 239, 241, 242, 240, 243, 240, 244, 245,
+ 240, 246, 240, 247, 240, 240, 248, 240, 240, 249,
+ 240, 240, 251, 250, 252, 252, 253, 254, 254, 255,
+ 255, 255, 256, 256, 256, 257, 257, 257, 258, 258,
+ 258, 259, 259, 259, 261, 262, 263, 260, 264, 265,
+ 266, 260, 267, 268, 267, 269, 269, 269, 270, 269,
+ 271, 271, 273, 274, 272, 275, 276, 272, 277, 277,
+ 277, 277, 278, 278, 279, 279, 280, 280, 280, 280,
+ 281, 281, 281, 282, 282, 283, 283, 283, 284, 284,
+ 285, 284, 286, 287, 287, 288, 288, 288, 288, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
+ 290, 290, 290, 290, 291, 291, 292, 292, 293, 294,
+ 294, 295, 295, 297, 298, 296, 299, 299, 300, 300,
+ 301, 301, 302, 303, 304
+};
+
+static const short yyr2[] = { 0,
+ 0, 1, 0, 2, 0, 3, 1, 1, 1, 5,
+ 2, 3, 4, 4, 2, 2, 2, 2, 1, 0,
+ 0, 7, 4, 0, 0, 7, 4, 0, 0, 6,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 1, 1, 3, 1, 2, 2,
+ 2, 2, 2, 4, 2, 4, 2, 2, 1, 1,
+ 1, 4, 0, 7, 1, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 0, 4, 0,
+ 4, 0, 0, 7, 0, 5, 3, 3, 1, 1,
+ 1, 3, 3, 0, 4, 4, 4, 3, 3, 2,
+ 2, 1, 1, 1, 1, 1, 1, 2, 1, 2,
+ 0, 1, 2, 3, 1, 1, 2, 2, 4, 4,
+ 2, 2, 3, 1, 1, 2, 2, 0, 0, 4,
+ 4, 3, 3, 2, 2, 2, 2, 3, 0, 2,
+ 2, 2, 2, 3, 0, 2, 2, 1, 1, 2,
+ 2, 1, 1, 2, 2, 2, 3, 0, 2, 1,
+ 1, 1, 2, 2, 1, 4, 4, 1, 1, 1,
+ 1, 3, 1, 3, 0, 4, 0, 6, 3, 0,
+ 6, 3, 0, 1, 1, 2, 6, 1, 3, 0,
+ 1, 4, 6, 4, 1, 1, 1, 1, 1, 0,
+ 4, 1, 0, 2, 1, 3, 1, 0, 4, 1,
+ 0, 4, 0, 5, 0, 0, 5, 0, 0, 5,
+ 1, 1, 3, 3, 4, 3, 3, 3, 1, 1,
+ 3, 4, 3, 3, 3, 1, 3, 3, 3, 4,
+ 3, 3, 1, 0, 7, 5, 2, 0, 7, 5,
+ 2, 0, 8, 0, 7, 2, 0, 1, 0, 1,
+ 1, 2, 0, 3, 2, 4, 3, 1, 3, 1,
+ 1, 2, 1, 3, 4, 6, 5, 1, 3, 1,
+ 1, 3, 2, 2, 0, 1, 1, 2, 0, 2,
+ 3, 3, 2, 3, 4, 3, 2, 3, 2, 1,
+ 1, 2, 2, 0, 1, 2, 0, 0, 1, 1,
+ 2, 3, 1, 2, 2, 6, 5, 5, 2, 2,
+ 4, 0, 4, 0, 0, 3, 4, 3, 1, 1,
+ 1, 1, 2, 0, 4, 1, 3, 0, 0, 7,
+ 5, 2, 0, 0, 0, 12, 0, 6, 2, 2,
+ 2, 3, 6, 8, 10, 12, 3, 4, 1, 1,
+ 0, 6, 3, 5, 2, 2, 0, 1, 0, 1,
+ 0, 1, 1, 3, 4, 1, 3, 0, 2, 2,
+ 0, 4, 2, 0, 1, 1, 3, 1, 3, 4,
+ 4, 4, 4, 4, 0, 2, 1, 2, 1, 3,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 3, 4, 0, 0, 10, 0, 6, 0, 0,
+ 12, 0, 8, 0, 6, 2, 0, 8, 4, 0,
+ 9, 5, 0, 6, 0, 1, 3, 3, 1, 1,
+ 1, 1, 0, 3, 2, 3, 3, 1, 0, 1,
+ 3, 1, 3, 2, 0, 0, 0, 7, 0, 0,
+ 0, 7, 0, 0, 2, 1, 1, 2, 0, 3,
+ 1, 1, 0, 0, 5, 0, 0, 5, 4, 1,
+ 5, 2, 0, 2, 0, 1, 1, 1, 2, 2,
+ 4, 2, 2, 1, 3, 2, 2, 2, 0, 2,
+ 0, 3, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 6, 3, 5, 2, 1, 1, 1, 2, 1, 3,
+ 2, 1, 1, 0, 0, 6, 1, 1, 1, 2,
+ 2, 1, 4, 4, 4
+};
+
+static const short yydefact[] = { 3,
+ 5, 0, 0, 0, 162, 153, 160, 152, 0, 0,
+ 0, 0, 0, 0, 403, 0, 455, 459, 0, 0,
+ 409, 435, 0, 435, 0, 0, 19, 4, 8, 7,
+ 0, 128, 128, 148, 139, 149, 185, 161, 0, 9,
+ 405, 406, 404, 407, 165, 408, 6, 17, 18, 32,
+ 33, 35, 34, 254, 256, 263, 247, 263, 251, 0,
+ 0, 0, 410, 0, 0, 0, 435, 426, 163, 436,
+ 435, 164, 0, 0, 243, 289, 0, 0, 173, 129,
+ 0, 16, 0, 15, 0, 150, 139, 151, 155, 154,
+ 137, 186, 11, 0, 252, 0, 0, 0, 244, 0,
+ 248, 89, 90, 107, 59, 60, 0, 0, 0, 36,
+ 38, 37, 0, 39, 40, 0, 544, 0, 0, 0,
+ 109, 41, 42, 0, 0, 43, 61, 0, 0, 65,
+ 46, 48, 91, 106, 0, 102, 103, 104, 105, 287,
+ 0, 285, 158, 0, 285, 190, 437, 0, 506, 507,
+ 529, 530, 526, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 527,
+ 528, 0, 0, 508, 456, 480, 499, 503, 509, 504,
+ 460, 0, 0, 417, 0, 0, 424, 433, 412, 0,
+ 0, 0, 12, 0, 0, 31, 0, 395, 0, 0,
+ 183, 229, 289, 0, 230, 0, 171, 129, 0, 221,
+ 222, 0, 0, 138, 141, 168, 169, 140, 142, 170,
+ 280, 281, 259, 278, 0, 0, 183, 271, 265, 128,
+ 262, 128, 0, 263, 183, 263, 57, 58, 52, 49,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 0,
+ 0, 0, 53, 0, 55, 0, 0, 82, 80, 78,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 100, 101, 0, 0, 44, 0, 108, 110,
+ 50, 166, 289, 378, 0, 283, 286, 156, 167, 288,
+ 158, 284, 196, 197, 198, 195, 0, 188, 191, 411,
+ 0, 534, 0, 483, 501, 482, 0, 505, 0, 483,
+ 435, 0, 414, 464, 429, 0, 443, 464, 413, 290,
+ 239, 238, 174, 175, 242, 0, 237, 0, 241, 0,
+ 0, 29, 0, 324, 116, 325, 182, 184, 0, 0,
+ 14, 0, 0, 23, 0, 183, 395, 0, 13, 27,
+ 0, 0, 260, 0, 259, 0, 246, 324, 264, 324,
+ 272, 0, 250, 0, 93, 92, 307, 0, 0, 543,
+ 542, 545, 552, 547, 0, 548, 549, 0, 0, 10,
+ 47, 0, 0, 88, 87, 0, 0, 0, 0, 76,
+ 77, 75, 74, 73, 71, 72, 66, 67, 68, 69,
+ 70, 99, 98, 0, 45, 0, 293, 0, 297, 0,
+ 299, 0, 378, 0, 159, 157, 0, 190, 44, 0,
+ 0, 0, 457, 500, 384, 0, 532, 461, 422, 435,
+ 443, 0, 0, 427, 432, 0, 0, 0, 0, 0,
+ 399, 385, 128, 128, 397, 0, 386, 388, 396, 0,
+ 240, 306, 0, 118, 113, 117, 0, 180, 227, 223,
+ 172, 228, 21, 179, 224, 226, 0, 25, 282, 279,
+ 183, 0, 266, 267, 273, 325, 269, 183, 183, 315,
+ 308, 95, 63, 62, 0, 551, 553, 0, 550, 555,
+ 554, 54, 56, 0, 0, 81, 79, 96, 97, 292,
+ 291, 379, 298, 294, 296, 0, 187, 189, 89, 0,
+ 0, 479, 499, 128, 0, 488, 484, 486, 0, 0,
+ 502, 386, 0, 0, 419, 464, 430, 0, 418, 473,
+ 476, 467, 0, 128, 128, 469, 466, 443, 442, 440,
+ 441, 425, 443, 448, 445, 128, 128, 0, 434, 176,
+ 383, 285, 285, 380, 381, 0, 398, 0, 0, 30,
+ 313, 114, 128, 128, 145, 0, 0, 177, 225, 0,
+ 255, 183, 324, 0, 245, 249, 0, 0, 309, 310,
+ 0, 0, 535, 0, 536, 537, 83, 86, 295, 192,
+ 0, 194, 533, 481, 492, 285, 493, 489, 490, 458,
+ 0, 462, 443, 0, 464, 415, 0, 0, 175, 0,
+ 0, 0, 468, 0, 0, 449, 449, 444, 236, 289,
+ 378, 129, 183, 183, 183, 289, 183, 183, 0, 387,
+ 389, 400, 314, 121, 0, 122, 0, 145, 143, 202,
+ 200, 199, 181, 22, 0, 26, 253, 274, 0, 183,
+ 401, 0, 0, 0, 324, 0, 0, 125, 325, 301,
+ 311, 210, 89, 0, 208, 0, 207, 0, 257, 205,
+ 539, 541, 0, 546, 0, 538, 0, 0, 183, 183,
+ 183, 0, 494, 531, 0, 423, 0, 464, 474, 477,
+ 470, 428, 0, 452, 446, 450, 447, 293, 0, 395,
+ 0, 390, 391, 392, 293, 393, 394, 382, 0, 0,
+ 144, 147, 146, 0, 178, 183, 0, 275, 312, 0,
+ 317, 127, 126, 305, 0, 318, 303, 325, 302, 0,
+ 0, 0, 211, 64, 0, 204, 540, 84, 193, 496,
+ 497, 498, 491, 285, 420, 431, 0, 0, 0, 454,
+ 0, 0, 234, 289, 235, 231, 233, 0, 119, 120,
+ 0, 277, 183, 402, 316, 0, 162, 0, 338, 322,
+ 0, 0, 0, 0, 0, 0, 0, 0, 367, 435,
+ 435, 359, 0, 0, 123, 128, 128, 331, 336, 0,
+ 0, 328, 329, 332, 360, 330, 0, 213, 0, 0,
+ 206, 495, 464, 416, 472, 471, 475, 478, 453, 451,
+ 0, 232, 201, 276, 0, 0, 324, 369, 0, 0,
+ 365, 349, 350, 351, 0, 0, 0, 368, 0, 366,
+ 333, 134, 0, 135, 0, 0, 320, 325, 319, 342,
+ 0, 136, 0, 209, 212, 0, 0, 0, 0, 370,
+ 48, 0, 0, 0, 363, 352, 0, 357, 0, 0,
+ 132, 215, 0, 133, 218, 337, 324, 0, 0, 214,
+ 421, 321, 0, 323, 361, 343, 347, 0, 358, 0,
+ 130, 0, 131, 0, 335, 326, 324, 0, 339, 324,
+ 369, 324, 364, 371, 0, 216, 219, 327, 341, 324,
+ 362, 0, 348, 0, 0, 372, 373, 353, 0, 0,
+ 340, 344, 0, 371, 0, 0, 217, 220, 369, 0,
+ 0, 354, 374, 0, 375, 0, 0, 345, 376, 0,
+ 355, 324, 0, 0, 346, 356, 377, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 938,
+ 1, 2, 3, 28, 29, 30, 345, 567, 351, 570,
+ 200, 453, 666, 124, 242, 404, 126, 127, 128, 129,
+ 130, 581, 131, 389, 388, 386, 677, 387, 132, 243,
+ 133, 134, 332, 333, 334, 562, 654, 655, 31, 195,
+ 785, 443, 91, 563, 639, 444, 34, 142, 288, 35,
+ 218, 206, 78, 201, 207, 645, 79, 566, 337, 338,
+ 37, 297, 298, 299, 643, 714, 668, 669, 670, 732,
+ 800, 843, 861, 882, 909, 864, 884, 910, 324, 210,
+ 679, 211, 38, 234, 236, 225, 94, 736, 354, 97,
+ 98, 231, 474, 475, 223, 224, 144, 681, 145, 191,
+ 287, 656, 657, 725, 335, 481, 578, 579, 580, 560,
+ 561, 789, 790, 791, 817, 838, 457, 839, 660, 792,
+ 793, 867, 816, 900, 891, 919, 932, 892, 794, 795,
+ 890, 796, 829, 852, 905, 906, 907, 930, 409, 410,
+ 445, 629, 446, 447, 448, 327, 328, 449, 450, 652,
+ 135, 40, 64, 41, 42, 43, 431, 688, 314, 603,
+ 803, 526, 317, 538, 605, 44, 318, 69, 45, 436,
+ 543, 437, 548, 695, 696, 46, 65, 304, 520, 66,
+ 310, 524, 432, 433, 536, 612, 807, 537, 607, 748,
+ 608, 749, 175, 423, 517, 518, 519, 682, 683, 306,
+ 425, 176, 177, 178, 179, 180, 584, 585, 672, 586,
+ 372, 136, 245, 485, 375, 376, 377, 137, 138, 139
+};
+
+static const short yypact[] = { 128,
+ 132, 2936, 2936, 108,-32768,-32768,-32768,-32768, 139, 253,
+ 266, 86, 103, 111,-32768, 99,-32768,-32768, 99, 99,
+-32768, 158, 99, 158, 99, 99,-32768,-32768,-32768,-32768,
+ 169, 137, 2416, 115,-32768, 197,-32768,-32768, 2936,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 155, 214, 210, 214, 212, 2645,
+ 2483, 252,-32768, 50, 3210, 3210, 151, 51,-32768,-32768,
+ 158,-32768, 209, 99,-32768,-32768, 169, 286,-32768, 197,
+ 1661,-32768, 319,-32768, 169, 115,-32768, 197,-32768,-32768,
+ 729,-32768,-32768, 120,-32768, 255, 277, 1592,-32768, 283,
+-32768,-32768,-32768,-32768,-32768,-32768, 2645, 2645, 99,-32768,
+-32768,-32768, 2645,-32768,-32768, 932,-32768, 288, 312, 314,
+-32768,-32768,-32768, 2645, 305, 311,-32768, 2699, 2753,-32768,
+ 3581, 622, 396, 346, 2645,-32768,-32768,-32768,-32768,-32768,
+ 356, 267,-32768, 359, 3364, 269,-32768, 99,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 398, 3487,-32768,-32768,-32768, 2377, 415,-32768,-32768,
+-32768, 99, 99, 377, 99, 99,-32768,-32768,-32768, 397,
+ 105, 119,-32768, 319, 169,-32768, 420,-32768, 1846, 1806,
+ 197,-32768,-32768, 319,-32768, 327,-32768, 197, 1759, 434,
+ 484, 364, 1680, 729,-32768,-32768,-32768,-32768, 197,-32768,
+-32768, 473, 439,-32768, 120, 448, 197,-32768,-32768, 534,
+ 445, 352, 3175, 214, 197, 214,-32768,-32768,-32768,-32768,
+ 454, 456, 472, 481, 2537, 3272, 3487, 99,-32768, 485,
+ 2645, 932,-32768, 932,-32768, 2645, 2645, 557,-32768,-32768,
+ 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645,
+ 2645, 2645,-32768,-32768, 99, 99, 2645, 2645,-32768,-32768,
+-32768,-32768,-32768, 267, 1905,-32768, 562, 766,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 225,-32768, 547,-32768,
+ 3487,-32768, 542, 550, 624,-32768, 415,-32768, 408, 550,
+ 158, 560,-32768, 581, 566, 578,-32768, 581,-32768,-32768,
+ 484,-32768,-32768, 641, 484, 660,-32768, 3089,-32768, 602,
+ 614,-32768, 682, 83,-32768,-32768, 634, 197, 110, 243,
+-32768, 319, 319,-32768, 1806, 197,-32768, 1964,-32768,-32768,
+ 1806, 2645, 99, 619, 439, 627,-32768,-32768,-32768,-32768,
+-32768, 620,-32768, 628,-32768,-32768, 629, 633, 2297,-32768,
+-32768,-32768,-32768, 662, 640, 3272,-32768, 642, 644,-32768,
+ 3581, 648, 650, 3581, 3581, 2645, 679, 2645, 2645, 2456,
+ 783, 879, 1653, 1750, 760, 760, 537, 537,-32768,-32768,
+-32768,-32768,-32768, 652, 311, 667, 336, 245,-32768, 3108,
+-32768, 673,-32768, 2023,-32768, 766, 669, 269, 2807, 695,
+ 3300, 850,-32768,-32768, 3375, 3487,-32768,-32768, 693, 158,
+-32768, 718, 3011,-32768,-32768, 184, 2884, 719, 78, 707,
+-32768,-32768,-32768, 3450,-32768, 711, 430,-32768,-32768, 298,
+-32768,-32768, 76,-32768,-32768,-32768, 3469,-32768, 434,-32768,
+-32768, 434,-32768, 752,-32768,-32768, 708,-32768, 3581,-32768,
+ 197, 715,-32768, 713,-32768,-32768, 713, 197, 197,-32768,
+ 763,-32768,-32768,-32768, 3336,-32768,-32768, 662,-32768,-32768,
+-32768,-32768,-32768, 761, 2645, 1473, 1820,-32768,-32768, 562,
+-32768,-32768,-32768,-32768,-32768, 722,-32768,-32768, 339, 730,
+ 99,-32768, 2377, 740, 3119,-32768,-32768, 3450, 1778, 76,
+-32768, 741, 765, 76,-32768, 581,-32768, 348,-32768,-32768,
+-32768,-32768, 169, 137, 2416, 335,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 3506, 767,-32768,-32768,
+-32768, 593, 238,-32768,-32768, 3439,-32768, 834, 472,-32768,
+-32768,-32768, 768, 725,-32768, 839, 76,-32768,-32768, 76,
+-32768, 197,-32768, 257,-32768,-32768, 99, 1101, 763,-32768,
+ 1421, 2645, 805, 769, 3336,-32768,-32768, 1394,-32768,-32768,
+ 2645,-32768,-32768,-32768,-32768, 593,-32768,-32768,-32768,-32768,
+ 99,-32768,-32768, 790, 581,-32768, 3210, 3210, 70, 319,
+ 169, 3039,-32768, 459, 2902, 280, 280,-32768,-32768,-32768,
+ 238, 197, 340, 347, 197,-32768, 347, 197, 3108,-32768,
+-32768,-32768,-32768,-32768, 319,-32768, 169,-32768, 659,-32768,
+-32768, 3581,-32768,-32768, 839,-32768,-32768,-32768, 2645, 81,
+-32768, 435, 564, 1021, 780, 782, 1181,-32768,-32768,-32768,
+-32768,-32768, 828, 99,-32768, 833, 3581, 796, 800,-32768,
+ 311,-32768, 2645,-32768, 805,-32768, 2645, 427, 340, 347,
+ 197, 464,-32768,-32768, 515,-32768, 820, 581,-32768,-32768,
+-32768,-32768, 2645, 846, 804,-32768, 804, 587, 510,-32768,
+ 2082,-32768,-32768,-32768, 600,-32768,-32768,-32768, 501, 521,
+ 659,-32768,-32768, 1421,-32768, 3214, 2645,-32768,-32768, 99,
+-32768,-32768,-32768,-32768, 808,-32768,-32768,-32768,-32768, 2163,
+ 854, 1421,-32768,-32768, 1501,-32768,-32768, 1394,-32768,-32768,
+-32768,-32768,-32768, 593,-32768,-32768, 829, 80, 80, 3581,
+ 2645, 280, 598,-32768, 598,-32768,-32768, 813,-32768,-32768,
+ 822,-32768, 3214,-32768,-32768, 2243, 853, 842,-32768,-32768,
+ 843, 845, 2645, 868, 830, 831, 2591, 372, 902, 187,
+ 226,-32768, 873, 838,-32768, 865, 3138,-32768, 900, 1261,
+ 91,-32768,-32768,-32768,-32768,-32768, 2405,-32768, 869, 1581,
+-32768,-32768, 581,-32768,-32768,-32768,-32768,-32768, 3581,-32768,
+ 278,-32768,-32768,-32768, 2645, 861,-32768, 2645, 2645, 3545,
+-32768,-32768,-32768,-32768, 871, 2645, 872,-32768, 891,-32768,
+-32768,-32768, 319,-32768, 169, 1341,-32768,-32768,-32768,-32768,
+ 2645,-32768, 1581,-32768,-32768, 888, 877, 2645, 937,-32768,
+ 441, 880, 882, 2645,-32768,-32768, 885,-32768, 2645, 523,
+-32768, 442, 524,-32768, 663,-32768,-32768, 2243, 892,-32768,
+-32768,-32768, 893,-32768,-32768,-32768,-32768, 3563,-32768, 58,
+-32768, 1806,-32768, 1806,-32768,-32768,-32768, 887,-32768,-32768,
+ 2645,-32768,-32768, 947, 890,-32768,-32768,-32768,-32768,-32768,
+-32768, 896,-32768, 911, 60, 895,-32768,-32768, 472, 472,
+-32768,-32768, 2645, 947, 897, 947,-32768,-32768, 2645, 903,
+ 68,-32768,-32768, 907,-32768, 660, 901,-32768, 396, 429,
+-32768,-32768, 908, 660,-32768,-32768, 396, 984, 988,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768,-32768, 102, -367,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, -9,-32768, -52, 570, -231, 533,-32768,-32768,
+ -45,-32768, 220,-32768,-32768,-32768,-32768,-32768, 172,-32768,
+ -295,-32768, -308, 661,-32768,-32768, 342,-32768, 17, -195,
+ 203, 16, 914,-32768, 367, 21, -11, -65, 703, 11,
+ -249, -574, -58, -206, -127,-32768,-32768,-32768, 196, 3,
+ -6,-32768, 584,-32768, 361,-32768, -607,-32768, -662,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -68, -135,
+ -498, 14, -66,-32768,-32768,-32768,-32768,-32768, 653, 12,
+-32768, 776, 655, 437, 788, 664, -12, -89, -50, -168,
+ -232, 363,-32768,-32768, -269,-32768,-32768,-32768, 440, -290,
+ -205,-32768,-32768,-32768,-32768, -122, -435, -741, 366,-32768,
+ 148,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 153,-32768, -739, 117,-32768, 121,-32768, 643,-32768,
+ -351,-32768, 632, 635, 497, -307,-32768,-32768,-32768,-32768,
+ 18,-32768, 1033,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, -20, 4, -348,
+-32768, 516,-32768, 450, 310,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, -306,-32768,-32768,-32768, 316, 532,-32768,-32768,
+-32768,-32768, -37, 762,-32768,-32768, 555,-32768, 333, 565,
+-32768, 658, 665, -145,-32768, -119,-32768,-32768, 409, 498,
+-32768,-32768,-32768,-32768,-32768,-32768, 714,-32768,-32768,-32768
+};
+
+
+#define YYLAST 3633
+
+
+static const short yytable[] = { 55,
+ 57, 59, 346, 72, 36, 36, 63, 125, 141, 67,
+ 68, 438, 343, 71, 209, 63, 74, 32, 32, 39,
+ 39, 86, 33, 33, 220, 70, 212, 70, 181, 92,
+ 439, 307, 230, 80, 339, 88, 463, 368, 415, 465,
+ 574, 36, 468, 87, 81, 405, 184, 232, 83, 85,
+ 188, 408, 286, 623, 32, 292, 39, 308, 502, 33,
+ 709, 237, 238, 454, 190, 532, 323, 240, 340, 100,
+ 70, 143, 801, 92, 70, 849, 559, 336, 249, 80,
+ 805, 92, 528, -112, 222, 208, 279, 80, 185, 281,
+ 192, 840, 455, 219, 147, 894, 197, 914, 213, 239,
+ 374, 50, 51, 244, 47, 926, 761, 75, 143, 186,
+ 14, 320, 75, 202, 407, 233, 320, 346, 717, 89,
+ 221, 90, 50, 51, 799, 885, 143, -1, 198, 199,
+ 148, -2, 187, 895, 14, 915, 296, 845, 300, 14,
+ 93, 50, 51, 927, 60, 898, 330, 220, 901, 841,
+ 903, 902, 516, 550, 76, 291, 806, 367, 911, 203,
+ 303, 61, 302, 77, -112, 52, 415, 230, 204, 62,
+ 53, 75, 311, 312, 500, 315, 316, 198, 199, 924,
+ 870, 205, 232, 143, 48, 49, 52, 405, 182, 614,
+ 935, 53, 371, 80, 322, 16, 208, 80, 14, 753,
+ 755, 92, 16, 459, 321, 52, 208, 462, 325, 183,
+ 53, 336, 92, 82, 461, 222, 219, 192, 76, 604,
+ 54, 220, 336, 730, -35, 406, 14, 77, 336, 600,
+ 488, 16, 412, 602, 378, 476, 95, 476, 379, 382,
+ 75, 383, 291, 143, 691, 362, 358, 364, 360, 599,
+ 233, 539, 540, 541, 685, 50, 51, 143, 860, 75,
+ 202, 542, 143, -34, 143, 402, 403, 14, 50, 51,
+ 16, 50, 51, 293, 294, 295, 644, 708, 96, 646,
+ 75, 619, 75, 202, 320, 189, 14, 626, 420, 148,
+ 429, 99, 766, 101, 649, 467, 621, 285, 687, 427,
+ 417, 347, 348, 413, 414, 418, 203, 14, 658, 14,
+ 146, 143, 753, 226, 70, 204, 283, 693, 460, 52,
+ 501, 75, 202, 484, 53, 284, 285, 754, 205, 203,
+ 36, 92, 52, 494, 56, 52, 77, 53, 204, 583,
+ 53, 208, 320, 222, 208, 208, 246, 58, 14, 220,
+ 671, 205, 321, 633, 227, 5, 325, 7, 290, 678,
+ 235, 506, 193, 9, 10, 11, 194, 307, 203, 14,
+ 247, 546, 248, 557, 50, 51, 14, 204, 558, 13,
+ 250, 747, 530, 531, 722, 283, 547, 727, 408, 713,
+ 205, 251, 756, 308, 284, 285, 16, -465, 700, 701,
+ 50, 51, 868, 341, 279, 198, 199, 342, 296, 527,
+ 50, 51, 36, 523, 590, 539, 540, 541, 22, 591,
+ 280, 826, 357, 24, 36, 606, 699, 36, -270, -270,
+ 363, 282, 86, 70, 289, 36, 143, 514, 52, 675,
+ 349, 671, 515, 53, 194, 564, 88, 143, 534, 533,
+ 476, 698, 309, 535, 87, 659, 301, 705, 313, 552,
+ 553, 713, 625, 628, 52, 500, 426, 565, 197, 53,
+ 381, -175, 500, 319, 52, 384, 385, -175, 326, 53,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 347, 348, 273, 274, 846, 275, 276, 277,
+ 278, 593, 739, 86, 933, 650, 555, 251, 352, 934,
+ 556, 719, 75, 619, 356, 720, 875, 88, -175, 353,
+ 36, 359, -175, 86, 788, 87, 539, 540, 541, 365,
+ 596, 366, 659, 514, 728, 80, 692, 88, 515, 14,
+ 743, 464, 198, 199, 744, 87, 609, 694, 694, 546,
+ 610, 611, 212, 367, 622, 80, 369, 291, 36, 754,
+ 788, 380, 616, 617, 547, 624, 627, 651, 77, 689,
+ 690, 469, 220, 896, 638, 897, 208, 759, 710, 635,
+ 637, 342, 539, 540, 541, 811, 270, 271, 272, 75,
+ 619, 684, 745, 320, -85, 75, 619, 760, 622, 881,
+ 883, 194, 75, 342, 194, 419, 320, 496, 497, 680,
+ -268, -268, 208, 80, 36, 92, 14, 421, 208, 208,
+ 413, 414, 14, 80, 609, 143, 422, 534, 533, 14,
+ 929, 36, 535, 424, 192, 430, 620, 208, 937, 80,
+ 452, 721, 620, -463, 220, 621, 285, 434, 758, 626,
+ 609, 621, 285, 435, 731, 346, 700, 701, 621, 285,
+ 253, 255, 788, 712, 216, 217, 571, 197, 104, 458,
+ 9, 10, 11, 575, 576, 273, 274, 784, 275, 276,
+ 277, 278, 331, 694, 451, -115, -115, -115, -115, 197,
+ 452, -115, -175, -115, -115, -115, 471, 478, -175, 486,
+ 622, 622, 473, 917, 918, 479, 480, 80, 482, -115,
+ 764, 321, 325, 784, 588, 487, 495, 490, 321, 491,
+ 783, 198, 199, 492, 825, 493, -115, 498, 5, 89,
+ 7, 90, 36, 215, 216, 217, 9, 10, 11, -175,
+ 9, 10, 11, -175, 507, 786, 622, 797, -115, 499,
+ 787, 281, 13, -115, 208, 503, 783, 680, 14, 336,
+ 72, 336, 847, -115, 862, 850, 853, 647, 827, 16,
+ 511, 216, 217, 857, 525, 86, 863, 9, 10, 11,
+ 529, 549, 551, 70, 70, 642, 554, 568, 869, 88,
+ 569, 22, 572, 573, 577, 873, 24, 87, 587, 36,
+ 667, 636, 833, 835, 589, 592, 880, 268, 269, 270,
+ 271, 272, 786, 622, 797, 784, 595, 787, 702, 703,
+ 704, 556, 706, 707, 321, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 208, 632, 80, 850, 640,
+ 601, 102, 673, 618, 634, 718, 103, 104, 865, 105,
+ 331, 674, 686, 5, 6, 7, 8, -304, 783, 726,
+ 920, 9, 10, 11, 642, -32, 850, 106, 716, 15,
+ 733, 107, 108, 734, 740, 741, 742, 13, 109, 14,
+ 735, 110, 746, 751, 752, 765, 111, 112, 113, 798,
+ -33, 804, 114, 115, 16, 812, 738, 116, 117, 813,
+ 815, 818, 118, 819, 119, 821, 822, 823, 828, 120,
+ 830, 762, 750, 121, 831, 836, 22, 122, 123, 848,
+ 641, 24, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, -485, 241, 667, 102, 5, 763, 7, 140, 103,
+ 104, 832, 105, 9, 10, 11, 844, 856, 858, 859,
+ 871, 667, 872, 874, 667, 904, 876, 877, 814, 13,
+ 106, 879, 15, 899, 107, 108, 908, 888, 889, 913,
+ 809, 109, 912, 922, 110, 916, 16, 931, 925, 111,
+ 112, 113, 928, 939, 936, 114, 115, 940, 510, 851,
+ 116, 117, 820, 416, 456, 118, 723, 119, 22, 842,
+ 214, 508, 120, 24, 711, 715, 121, 472, 361, 648,
+ 122, 123, 355, -94, 477, 886, 470, 724, 661, 667,
+ 887, 331, 729, -124, -124, -124, -124, -124, -124, -124,
+ 921, -124, -124, -124, -124, -124, 923, -124, -124, -124,
+ -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
+ -124, -124, 631, -124, -124, 504, 521, 73, 615, 522,
+ -124, 810, 667, -124, 808, -124, 697, 613, -124, -124,
+ -124, 428, 598, 878, -124, -124, 802, 594, 512, -124,
+ -124, 737, 676, 0, -124, 513, -124, -124, 0, 489,
+ 0, -124, -124, 0, 0, -124, 0, -124, -124, -124,
+ -124, 653, -124, -324, -324, -324, -324, -324, -324, -324,
+ 0, -324, -324, -324, -324, -324, 0, -324, -324, -324,
+ -324, -324, -324, -324, -324, -324, -324, -324, -324, -324,
+ -324, -324, 0, -324, -324, 0, 0, 0, 0, 0,
+ -324, 0, 0, -324, 0, -324, 0, 0, -324, -324,
+ -324, 0, 0, 0, -324, -324, 0, 0, 0, -324,
+ -324, 0, 0, 0, -324, 0, -324, -324, 0, 0,
+ 0, -324, -324, 0, 0, -324, 0, -324, 0, -324,
+ -324, 331, -324, -324, -324, 0, 0, 0, -324, -324,
+ 0, -324, 0, 0, 0, -324, 0, -324, -324, -324,
+ -324, -324, -324, -324, -324, -324, -324, -324, 0, -324,
+ 0, -324, 0, -324, -324, 0, 0, 0, 0, 0,
+ -324, 0, 0, -324, 0, 0, 0, 0, -324, -324,
+ -324, 0, 0, 0, -324, -324, 0, 0, 0, -324,
+ -324, 0, 0, 0, -324, 0, -324, -324, 0, 0,
+ 0, -324, -324, 0, 0, -324, 0, -324, -300, -324,
+ -324, 837, -324, -324, -324, 0, 0, 0, -324, -324,
+ 0, -324, 0, 0, 0, -324, 0, -324, -324, -324,
+ -324, -324, -324, -324, -324, -324, -324, -324, 0, -324,
+ 0, -324, 0, -324, -324, 0, 0, 0, 0, 0,
+ -324, 0, 0, -324, 0, 0, 0, 0, -324, -324,
+ -324, 0, 0, 0, -324, -324, 0, 0, 0, -324,
+ -324, 0, 0, 0, -324, 0, -324, -324, 0, 0,
+ 0, -324, -324, 0, 0, -324, 0, -324, 0, -324,
+ -324, 866, -324, -334, -334, 0, 0, 0, -334, -334,
+ 0, -334, 0, 0, 0, -334, 0, -334, -334, -334,
+ -334, -334, -334, -334, -334, -334, -334, -334, 0, -334,
+ 0, -334, 0, -334, -334, 0, 0, 0, 0, 0,
+ -334, 0, 0, -334, 0, 0, 0, 0, -334, -334,
+ -334, 0, 0, 0, -334, -334, 0, 0, 0, -334,
+ -334, 0, 0, 0, -334, 0, -334, -334, 0, 0,
+ 0, -334, -334, 0, 0, -334, 0, -334, 0, -334,
+ -334, 662, -334, 663, 51, 0, 0, 0, 103, 104,
+ 258, 105, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 0, 0, 0, 106,
+ 0, 15, 0, 107, 108, 0, 0, 0, 0, 0,
+ 109, 0, 0, 110, 0, 0, 0, 0, 111, 112,
+ 113, 0, 0, 0, 114, 115, 0, 0, 664, 116,
+ 117, 0, 0, 0, 118, 0, 119, 52, 0, 0,
+ 0, 120, 53, 0, 0, 121, 0, 0, -203, 122,
+ 123, 662, 665, 663, 51, 0, 0, 0, 103, 104,
+ 0, 105, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 0, 0, 0, 0, 106,
+ 0, 15, 0, 107, 108, 0, 0, 0, 0, 0,
+ 109, 0, 0, 110, 0, 0, 0, 0, 111, 112,
+ 113, 0, 0, 0, 114, 115, 0, 0, 664, 116,
+ 117, 0, 0, 0, 118, 0, 119, 52, 0, 0,
+ 0, 120, 53, 0, 0, 121, 0, 0, -258, 122,
+ 123, 662, 665, 663, 51, 0, 0, 0, 103, 104,
+ 0, 105, 228, 0, 0, 5, 0, 7, 140, 0,
+ 0, 0, 0, 9, 10, 11, 0, 0, 0, 106,
+ 0, 15, 0, 107, 108, 0, 0, 0, 0, 13,
+ 109, 0, 15, 110, 0, 0, 0, 0, 111, 112,
+ 113, 0, 0, 0, 114, 115, 16, 0, 664, 116,
+ 117, 0, 0, 0, 118, 0, 119, 52, 0, 0,
+ 0, 120, 53, 0, 0, 121, 0, 0, 22, 122,
+ 123, 196, 665, 24, -28, -28, -28, -28, 229, -261,
+ 0, 0, -28, -28, -28, 0, 0, 0, 0, 0,
+ 350, 0, 0, -24, -24, -24, -24, 197, -28, 0,
+ -175, -24, -24, -24, 0, 0, -175, 265, 266, 267,
+ 268, 269, 270, 271, 272, -28, 197, -24, 0, -175,
+ 0, 0, 0, 0, 0, -175, 0, 0, 0, 198,
+ 199, 0, 0, 0, -24, 0, 0, -28, 0, 0,
+ 0, 0, -28, 0, 0, 0, 0, -175, 198, 199,
+ 0, -175, -28, 0, 0, 0, -24, 0, 0, 0,
+ 0, -24, 0, 0, 0, 0, -175, 0, 0, 344,
+ -175, -24, -20, -20, -20, -20, 0, 0, 0, 0,
+ -20, -20, -20, 0, 0, 0, 0, 0, 331, 0,
+ 0, -487, -487, -487, -487, 197, -20, 0, -175, -487,
+ -487, -487, 0, 0, -175, 266, 267, 268, 269, 270,
+ 271, 272, 0, -20, 0, -487, 331, -487, 0, -324,
+ -324, -324, -324, 0, 0, 0, 0, -324, -324, -324,
+ 0, 0, -487, 0, 0, -20, 0, 0, 0, 0,
+ -20, 0, 0, -324, 0, -175, 0, 0, 0, -175,
+ -20, 0, 0, 0, -487, 0, 0, 0, 102, -487,
+ -324, 0, 0, 103, 104, 0, 105, 0, 0, -487,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, -324, 0, 106, 0, 15, -324, 107, 108,
+ 0, 0, 0, 0, 0, 109, 0, -111, 110, 0,
+ 0, 0, 0, 111, 112, 113, 0, 0, 0, 114,
+ 115, 0, 0, 0, 116, 117, 0, 102, 0, 118,
+ 0, 119, 103, 104, 0, 105, 120, 0, 0, 0,
+ 121, 0, 0, 0, 122, 123, 0, 0, 329, 0,
+ 0, 0, 0, 106, 0, 15, 0, 107, 108, 0,
+ 0, 0, 0, 0, 109, 0, 0, 110, 0, 0,
+ 0, 0, 111, 112, 113, 0, 0, 0, 114, 115,
+ 0, 0, 0, 116, 117, 0, 102, 0, 118, 0,
+ 119, 103, 104, 0, 105, 120, 0, 0, 0, 121,
+ 0, 0, 0, 122, 123, 0, 0, 411, 0, 0,
+ 0, 0, 106, 0, 15, 0, 107, 108, 0, 0,
+ 0, 0, 0, 109, 0, 0, 110, 0, 0, 0,
+ 0, 111, 112, 113, 0, 0, 0, 114, 115, 0,
+ 0, 0, 116, 117, 0, 102, 0, 118, 0, 119,
+ 103, 104, 0, 105, 120, 0, 0, 0, 121, 0,
+ 0, 0, 122, 123, 0, 0, 466, 0, 0, 0,
+ 0, 106, 0, 15, 0, 107, 108, 0, 0, 0,
+ 0, 0, 109, 0, 0, 110, 0, 0, 0, 0,
+ 111, 112, 113, 0, 0, 0, 114, 115, 0, 0,
+ 0, 116, 117, 0, 102, 0, 118, 0, 119, 103,
+ 104, 0, 105, 120, 0, 0, 0, 121, 0, 0,
+ 0, 122, 123, 0, 0, 505, 0, 0, 0, 0,
+ 106, 0, 15, 0, 107, 108, 0, 0, 0, 0,
+ 0, 109, 0, 0, 110, 0, 0, 0, 0, 111,
+ 112, 113, 0, 0, 0, 114, 115, 0, 0, 0,
+ 116, 117, 0, 0, 0, 118, 0, 119, 0, 0,
+ 0, 0, 120, 0, 0, 0, 121, 0, 0, 0,
+ 122, 123, 0, 0, 757, 663, 767, 6, 7, 8,
+ 103, 104, 0, 105, 9, 10, 11, 768, 0, 769,
+ 770, 771, 772, 773, 774, 775, 776, 777, 778, 779,
+ 13, 106, 14, 15, 0, 107, 108, 0, 0, 0,
+ 0, 0, 109, 0, 0, 110, 0, 16, 0, 0,
+ 111, 112, 113, 0, 0, 0, 114, 115, 0, 0,
+ 0, 116, 117, 0, 0, 0, 118, 0, 119, 780,
+ 0, 0, 0, 120, 781, 0, 0, 121, 0, 782,
+ 0, 122, 123, 0, 367, 663, 51, 0, 0, 0,
+ 103, 104, 0, 105, 0, 0, 0, 768, 0, 769,
+ 770, 771, 772, 773, 774, 775, 776, 777, 778, 779,
+ 0, 106, 0, 15, 0, 107, 108, 0, 0, 0,
+ 0, 0, 109, 0, 0, 110, 0, 0, 0, 0,
+ 111, 112, 113, 0, 0, 0, 114, 115, 0, 102,
+ 0, 116, 117, 0, 103, 104, 118, 105, 119, 52,
+ 0, 0, 0, 120, 53, 0, 0, 121, 0, 782,
+ 0, 122, 123, 0, 367, 106, 0, 15, 0, 107,
+ 108, 0, 0, 0, 0, 0, 109, 0, 0, 110,
+ 0, 0, 0, 0, 111, 112, 113, 0, 0, 0,
+ 114, 115, 0, 0, 0, 116, 117, 0, 0, 0,
+ 118, 0, 119, 0, 0, 0, 0, 120, 0, 0,
+ 0, 121, 0, 0, 0, 122, 123, 0, 483, 149,
+ 150, 0, 151, 152, 0, 0, 0, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 0, 102, 5, 6,
+ 7, 8, 103, 104, 172, 105, 9, 10, 11, 5,
+ 6, 7, 8, 0, 0, 0, 0, 9, 10, 11,
+ 0, 0, 13, 106, 14, 15, 0, 107, 108, 0,
+ 0, 0, 0, 13, 109, 14, 0, 110, 174, 16,
+ 0, 0, 111, 112, 113, 0, 0, 305, 114, 115,
+ 16, 0, 0, 116, 117, 0, 0, 0, 118, 0,
+ 119, 22, 0, 0, 0, 120, 24, 0, 0, 121,
+ 0, 0, 22, 122, 123, 102, 5, 24, 7, 140,
+ 103, 104, 84, 105, 9, 10, 11, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 0, 0,
+ 13, 106, 0, 15, 0, 107, 108, 0, 0, 0,
+ 0, 0, 109, 0, 0, 110, 0, 16, 0, 0,
+ 111, 112, 113, 0, 0, 0, 114, 115, 0, 102,
+ 0, 116, 117, 0, 103, 104, 118, 105, 119, 22,
+ 0, 0, 0, 120, 24, 0, 0, 121, 0, 0,
+ 0, 122, 123, 0, 0, 106, 0, 15, 0, 107,
+ 108, 0, 0, 0, 0, 0, 109, 0, 0, 110,
+ 0, 0, 0, 0, 111, 112, 113, 0, 0, 0,
+ 114, 115, 0, 102, 0, 116, 117, 0, 103, 104,
+ 118, 105, 119, 370, 0, 0, 0, 120, 0, 0,
+ 0, 121, 0, 0, 0, 122, 123, 0, 0, 106,
+ 0, 15, 0, 107, 108, 0, 0, 0, 0, 0,
+ 109, 0, 0, 110, 0, 0, 0, 0, 111, 112,
+ 113, 0, 0, 0, 114, 115, 0, 102, 0, 116,
+ 117, 0, 103, 104, 118, 105, 119, 0, 0, 0,
+ 0, 120, 0, 0, 0, 121, 0, 824, 0, 122,
+ 123, 0, 0, 106, 0, 15, 0, 107, 108, 0,
+ 0, 0, 0, 0, 109, 0, 0, 110, 0, 0,
+ 0, 0, 111, 112, 113, 0, 0, 0, 114, 115,
+ 0, 102, 0, 116, 117, 0, 103, 104, 118, 105,
+ 119, 0, 0, 0, 0, 120, 0, 0, 0, 121,
+ 0, 0, 0, 122, 123, 0, 0, 106, 0, 15,
+ 0, 107, 108, 0, 0, 0, 0, 0, 109, 0,
+ 0, 110, 0, 0, 0, 0, 111, 112, 113, 0,
+ 0, 0, 114, 115, 0, 102, 0, 252, 117, 0,
+ 103, 104, 118, 105, 119, 0, 0, 0, 0, 120,
+ 0, 0, 0, 121, 0, 0, 0, 122, 123, 0,
+ 0, 106, 0, 15, 0, 107, 108, 0, 0, 0,
+ 0, 0, 109, 0, 0, 110, 0, 0, 0, 0,
+ 111, 112, 113, 0, 0, 0, 114, 115, 0, 509,
+ 0, 254, 117, 0, 103, 104, 118, 105, 119, 0,
+ 0, 0, 0, 120, 0, 0, 0, 121, 0, 0,
+ 0, 122, 123, 0, 0, 106, 0, 15, 0, 107,
+ 108, 0, 0, 0, 0, 0, 109, 0, 0, 110,
+ 0, 0, 0, 0, 111, 112, 113, 0, 0, 0,
+ 114, 115, 0, 0, 0, 116, 117, 0, 0, 0,
+ 118, 0, 119, 0, 0, 0, 0, 120, 0, 0,
+ 0, 121, 0, 0, 544, 122, 123, 5, 0, 7,
+ 140, 0, 0, 0, 0, 9, 10, 11, 0, 0,
+ 0, 0, 544, 0, 0, 5, 0, 7, 140, 0,
+ 0, 13, 0, 9, 10, 11, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 16, 13,
+ 0, 0, 0, 0, 0, 0, 4, 0, -128, 5,
+ 6, 7, 8, 0, 0, 0, 16, 9, 10, 11,
+ 22, -439, -439, -439, 0, 24, 0, 0, 0, 0,
+ 545, -439, 12, 13, 0, 14, 15, 0, 22, -438,
+ -438, -438, 0, 24, 0, 0, 0, 0, 545, -438,
+ 16, 0, 0, 17, 18, -128, 0, 0, 0, 0,
+ 0, 0, 0, 0, -128, 0, 19, 20, 21, 0,
+ 0, 0, 22, 0, 0, 0, 23, 24, 25, 26,
+ 0, 4, 27, -128, 5, 6, 7, 8, 0, 0,
+ 0, 0, 9, 10, 11, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 4,
+ 14, -128, 5, 6, 7, 8, 0, 0, 0, 0,
+ 9, 10, 11, 0, 0, 16, 0, 0, 530, 531,
+ -128, 0, 0, 0, 0, 0, 13, 0, 14, -128,
+ 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
+ 0, 0, 24, 16, 0, 0, 0, 27, -128, 440,
+ 0, 441, 5, 6, 7, 8, 0, -128, 442, 0,
+ 9, 10, 11, 0, 0, 22, 0, 0, 440, 0,
+ 24, 5, 6, 7, 8, 27, 13, 442, 14, 9,
+ 10, 11, 5, 6, 7, 8, 0, 0, 0, 0,
+ 9, 10, 11, 16, 0, 13, 0, 14, 0, 0,
+ 0, 5, 6, 7, 8, 0, 13, 0, 14, 9,
+ 10, 11, 16, 0, 0, 22, 0, 0, 0, 0,
+ 24, 0, 0, 16, -384, 13, 0, 14, 0, 0,
+ 0, 0, 0, 0, 22, 228, 0, 0, 5, 24,
+ 7, 140, 16, -384, 0, 22, 9, 10, 11, 0,
+ 24, 0, 0, 0, 0, 597, 0, 0, 0, 0,
+ 0, 0, 13, 0, 22, 15, 0, 0, 0, 24,
+ 0, 0, 149, 150, 834, 151, 152, 0, 0, 16,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 0,
+ 0, 22, 0, 14, 0, 0, 24, 172, 256, 257,
+ 258, 0, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 0, 0, 173, 0,
+ 0, 0, 0, 0, 149, 150, 0, 151, 152, 0,
+ 0, 174, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 0, 149, 150, 0, 151, 152, 0, 0, 373,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 0,
+ 0, 0, 0, 0, 0, 0, 0, 172, 149, 150,
+ 0, 151, 152, 174, 0, 0, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 0, 0, 5, 0, 7,
+ 290, 174, 0, 582, 0, 9, 10, 11, 5, 6,
+ 7, 8, 0, 0, 442, 0, 9, 10, 11, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 13, 0, 14, 0, 0, 174, 16, 0,
+ 0, 0, 0, 283, 0, 0, 0, 0, 0, 16,
+ 0, 0, 284, 285, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 22, 5, 6, 7, 8, 24, 0, 630, 0,
+ 9, 10, 11, 5, 6, 7, 8, 0, 0, 0,
+ 0, 9, 10, 11, 0, 0, 13, 0, 14, 0,
+ 0, 0, 5, 6, 7, 8, 0, 13, 0, 14,
+ 9, 10, 11, 16, 0, 0, 0, 0, 0, 0,
+ 5, 0, 7, 140, 16, 0, 13, 0, 9, 10,
+ 11, 0, 0, 0, 0, 22, 0, 0, 0, 5,
+ 24, 7, 290, 16, 13, 0, 22, 9, 10, 11,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, 0, 13, 0, 22, 0, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 22, 854, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 24, 0, 256,
+ 257, 258, 855, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 256, 257, 258,
+ 893, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 256, 257, 258, 0, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272
+};
+
+static const short yycheck[] = { 9,
+ 10, 11, 209, 24, 2, 3, 16, 60, 61, 19,
+ 20, 318, 208, 23, 83, 25, 26, 2, 3, 2,
+ 3, 33, 2, 3, 91, 22, 85, 24, 66, 36,
+ 326, 177, 98, 31, 203, 33, 345, 243, 288, 347,
+ 476, 39, 351, 33, 31, 277, 67, 98, 32, 33,
+ 71, 284, 142, 552, 39, 145, 39, 177, 410, 39,
+ 635, 107, 108, 333, 74, 433, 194, 113, 204, 58,
+ 67, 61, 735, 80, 71, 817, 1, 200, 124, 77,
+ 1, 88, 431, 1, 94, 83, 9, 85, 38, 135,
+ 77, 1, 10, 91, 45, 38, 27, 38, 85, 109,
+ 246, 3, 4, 116, 3, 38, 714, 3, 98, 59,
+ 30, 7, 3, 4, 283, 98, 7, 324, 38, 5,
+ 1, 7, 3, 4, 732, 867, 116, 0, 59, 60,
+ 81, 0, 82, 76, 30, 76, 146, 800, 148, 30,
+ 39, 3, 4, 76, 59, 887, 199, 214, 890, 59,
+ 892, 891, 422, 76, 50, 145, 77, 82, 900, 50,
+ 173, 59, 172, 59, 82, 67, 416, 233, 59, 59,
+ 72, 3, 182, 183, 407, 185, 186, 59, 60, 919,
+ 843, 72, 233, 173, 77, 78, 67, 419, 38, 538,
+ 932, 72, 245, 191, 76, 45, 194, 195, 30, 698,
+ 699, 208, 45, 339, 191, 67, 204, 343, 195, 59,
+ 72, 334, 219, 77, 342, 225, 214, 204, 50, 526,
+ 82, 288, 345, 659, 38, 278, 30, 59, 351, 520,
+ 376, 45, 285, 524, 247, 358, 82, 360, 248, 252,
+ 3, 254, 232, 233, 612, 234, 230, 236, 232, 519,
+ 233, 68, 69, 70, 603, 3, 4, 247, 833, 3,
+ 4, 78, 252, 38, 254, 275, 276, 30, 3, 4,
+ 45, 3, 4, 5, 6, 7, 567, 629, 65, 570,
+ 3, 4, 3, 4, 7, 77, 30, 50, 301, 81,
+ 311, 82, 728, 82, 38, 348, 59, 60, 605, 309,
+ 76, 59, 60, 59, 60, 81, 50, 30, 578, 30,
+ 59, 301, 811, 59, 311, 59, 50, 38, 76, 67,
+ 76, 3, 4, 369, 72, 59, 60, 50, 72, 50,
+ 328, 338, 67, 386, 82, 67, 59, 72, 59, 485,
+ 72, 339, 7, 353, 342, 343, 59, 82, 30, 416,
+ 582, 72, 339, 559, 78, 4, 343, 6, 7, 591,
+ 78, 414, 77, 12, 13, 14, 81, 513, 50, 30,
+ 59, 437, 59, 76, 3, 4, 30, 59, 81, 28,
+ 76, 688, 48, 49, 654, 50, 437, 657, 621, 639,
+ 72, 81, 700, 513, 59, 60, 45, 63, 59, 60,
+ 3, 4, 838, 77, 9, 59, 60, 81, 418, 430,
+ 3, 4, 410, 426, 76, 68, 69, 70, 67, 81,
+ 75, 50, 227, 72, 422, 78, 622, 425, 77, 78,
+ 235, 76, 444, 430, 76, 433, 426, 422, 67, 585,
+ 77, 673, 422, 72, 81, 457, 444, 437, 433, 433,
+ 573, 620, 38, 433, 444, 578, 59, 626, 82, 443,
+ 444, 711, 552, 553, 67, 698, 59, 457, 27, 72,
+ 251, 30, 705, 77, 67, 256, 257, 36, 59, 72,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 59, 60, 54, 55, 803, 57, 58, 59,
+ 60, 511, 76, 515, 76, 574, 77, 81, 36, 81,
+ 81, 77, 3, 4, 67, 81, 76, 515, 77, 81,
+ 518, 77, 81, 535, 730, 515, 68, 69, 70, 76,
+ 514, 76, 655, 518, 657, 533, 78, 535, 518, 30,
+ 77, 346, 59, 60, 81, 535, 533, 616, 617, 615,
+ 534, 535, 611, 82, 552, 553, 76, 547, 556, 50,
+ 766, 77, 546, 547, 615, 552, 553, 577, 59, 607,
+ 608, 352, 639, 882, 564, 884, 574, 77, 637, 563,
+ 564, 81, 68, 69, 70, 754, 50, 51, 52, 3,
+ 4, 601, 78, 7, 38, 3, 4, 77, 596, 77,
+ 77, 81, 3, 81, 81, 59, 7, 388, 389, 596,
+ 77, 78, 610, 611, 612, 622, 30, 76, 616, 617,
+ 59, 60, 30, 621, 611, 615, 77, 612, 612, 30,
+ 926, 629, 612, 10, 621, 76, 50, 635, 934, 637,
+ 77, 78, 50, 63, 711, 59, 60, 82, 701, 50,
+ 637, 59, 60, 76, 664, 862, 59, 60, 59, 60,
+ 128, 129, 868, 5, 6, 7, 471, 27, 9, 36,
+ 12, 13, 14, 478, 479, 54, 55, 730, 57, 58,
+ 59, 60, 1, 752, 83, 4, 5, 6, 7, 27,
+ 77, 10, 30, 12, 13, 14, 78, 78, 36, 38,
+ 698, 699, 76, 909, 910, 78, 78, 705, 76, 28,
+ 720, 698, 699, 766, 495, 76, 38, 76, 705, 76,
+ 730, 59, 60, 76, 777, 76, 45, 76, 4, 5,
+ 6, 7, 730, 5, 6, 7, 12, 13, 14, 77,
+ 12, 13, 14, 81, 76, 730, 744, 730, 67, 83,
+ 730, 797, 28, 72, 752, 83, 766, 744, 30, 882,
+ 781, 884, 815, 82, 833, 818, 819, 572, 778, 45,
+ 76, 6, 7, 826, 82, 787, 835, 12, 13, 14,
+ 63, 63, 76, 780, 781, 566, 76, 36, 841, 787,
+ 83, 67, 78, 81, 32, 848, 72, 787, 38, 797,
+ 581, 77, 786, 787, 83, 76, 859, 48, 49, 50,
+ 51, 52, 797, 811, 797, 868, 77, 797, 623, 624,
+ 625, 81, 627, 628, 811, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 833, 3, 835, 891, 1,
+ 76, 3, 38, 77, 77, 650, 8, 9, 835, 11,
+ 1, 83, 63, 4, 5, 6, 7, 78, 868, 78,
+ 913, 12, 13, 14, 645, 38, 919, 29, 649, 31,
+ 38, 33, 34, 78, 679, 680, 681, 28, 40, 30,
+ 81, 43, 63, 38, 81, 78, 48, 49, 50, 36,
+ 38, 63, 54, 55, 45, 83, 677, 59, 60, 78,
+ 59, 59, 64, 59, 66, 38, 77, 77, 7, 71,
+ 38, 716, 693, 75, 77, 16, 67, 79, 80, 59,
+ 82, 72, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 82, 1, 714, 3, 4, 717, 6, 7, 8,
+ 9, 77, 11, 12, 13, 14, 78, 77, 77, 59,
+ 63, 732, 76, 17, 735, 9, 77, 76, 763, 28,
+ 29, 77, 31, 77, 33, 34, 77, 76, 76, 59,
+ 751, 40, 77, 77, 43, 81, 45, 77, 76, 48,
+ 49, 50, 76, 0, 77, 54, 55, 0, 419, 818,
+ 59, 60, 773, 291, 334, 64, 655, 66, 67, 797,
+ 87, 418, 71, 72, 638, 645, 75, 355, 233, 573,
+ 79, 80, 225, 82, 360, 868, 353, 655, 579, 800,
+ 868, 1, 657, 3, 4, 5, 6, 7, 8, 9,
+ 914, 11, 12, 13, 14, 15, 916, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 556, 33, 34, 413, 425, 25, 543, 425,
+ 40, 752, 843, 43, 749, 45, 617, 536, 48, 49,
+ 50, 310, 518, 854, 54, 55, 744, 513, 421, 59,
+ 60, 673, 585, -1, 64, 421, 66, 67, -1, 376,
+ -1, 71, 72, -1, -1, 75, -1, 77, 78, 79,
+ 80, 1, 82, 3, 4, 5, 6, 7, 8, 9,
+ -1, 11, 12, 13, 14, 15, -1, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, 45, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, -1, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, 77, -1, 79,
+ 80, 1, 82, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, -1, -1, -1, 15, -1, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, -1, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, 77, 78, 79,
+ 80, 1, 82, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, -1, -1, -1, 15, -1, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, -1, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, 77, -1, 79,
+ 80, 1, 82, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, -1, -1, -1, 15, -1, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, -1, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, 77, -1, 79,
+ 80, 1, 82, 3, 4, -1, -1, -1, 8, 9,
+ 37, 11, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, 58, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, -1, 78, 79,
+ 80, 1, 82, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, -1, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, -1, 58, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, -1, 78, 79,
+ 80, 1, 82, 3, 4, -1, -1, -1, 8, 9,
+ -1, 11, 1, -1, -1, 4, -1, 6, 7, -1,
+ -1, -1, -1, 12, 13, 14, -1, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, 28,
+ 40, -1, 31, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, 45, -1, 58, 59,
+ 60, -1, -1, -1, 64, -1, 66, 67, -1, -1,
+ -1, 71, 72, -1, -1, 75, -1, -1, 67, 79,
+ 80, 1, 82, 72, 4, 5, 6, 7, 77, 78,
+ -1, -1, 12, 13, 14, -1, -1, -1, -1, -1,
+ 1, -1, -1, 4, 5, 6, 7, 27, 28, -1,
+ 30, 12, 13, 14, -1, -1, 36, 45, 46, 47,
+ 48, 49, 50, 51, 52, 45, 27, 28, -1, 30,
+ -1, -1, -1, -1, -1, 36, -1, -1, -1, 59,
+ 60, -1, -1, -1, 45, -1, -1, 67, -1, -1,
+ -1, -1, 72, -1, -1, -1, -1, 77, 59, 60,
+ -1, 81, 82, -1, -1, -1, 67, -1, -1, -1,
+ -1, 72, -1, -1, -1, -1, 77, -1, -1, 1,
+ 81, 82, 4, 5, 6, 7, -1, -1, -1, -1,
+ 12, 13, 14, -1, -1, -1, -1, -1, 1, -1,
+ -1, 4, 5, 6, 7, 27, 28, -1, 30, 12,
+ 13, 14, -1, -1, 36, 46, 47, 48, 49, 50,
+ 51, 52, -1, 45, -1, 28, 1, 30, -1, 4,
+ 5, 6, 7, -1, -1, -1, -1, 12, 13, 14,
+ -1, -1, 45, -1, -1, 67, -1, -1, -1, -1,
+ 72, -1, -1, 28, -1, 77, -1, -1, -1, 81,
+ 82, -1, -1, -1, 67, -1, -1, -1, 3, 72,
+ 45, -1, -1, 8, 9, -1, 11, -1, -1, 82,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 67, -1, 29, -1, 31, 72, 33, 34,
+ -1, -1, -1, -1, -1, 40, -1, 82, 43, -1,
+ -1, -1, -1, 48, 49, 50, -1, -1, -1, 54,
+ 55, -1, -1, -1, 59, 60, -1, 3, -1, 64,
+ -1, 66, 8, 9, -1, 11, 71, -1, -1, -1,
+ 75, -1, -1, -1, 79, 80, -1, -1, 83, -1,
+ -1, -1, -1, 29, -1, 31, -1, 33, 34, -1,
+ -1, -1, -1, -1, 40, -1, -1, 43, -1, -1,
+ -1, -1, 48, 49, 50, -1, -1, -1, 54, 55,
+ -1, -1, -1, 59, 60, -1, 3, -1, 64, -1,
+ 66, 8, 9, -1, 11, 71, -1, -1, -1, 75,
+ -1, -1, -1, 79, 80, -1, -1, 83, -1, -1,
+ -1, -1, 29, -1, 31, -1, 33, 34, -1, -1,
+ -1, -1, -1, 40, -1, -1, 43, -1, -1, -1,
+ -1, 48, 49, 50, -1, -1, -1, 54, 55, -1,
+ -1, -1, 59, 60, -1, 3, -1, 64, -1, 66,
+ 8, 9, -1, 11, 71, -1, -1, -1, 75, -1,
+ -1, -1, 79, 80, -1, -1, 83, -1, -1, -1,
+ -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
+ -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
+ 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
+ -1, 59, 60, -1, 3, -1, 64, -1, 66, 8,
+ 9, -1, 11, 71, -1, -1, -1, 75, -1, -1,
+ -1, 79, 80, -1, -1, 83, -1, -1, -1, -1,
+ 29, -1, 31, -1, 33, 34, -1, -1, -1, -1,
+ -1, 40, -1, -1, 43, -1, -1, -1, -1, 48,
+ 49, 50, -1, -1, -1, 54, 55, -1, -1, -1,
+ 59, 60, -1, -1, -1, 64, -1, 66, -1, -1,
+ -1, -1, 71, -1, -1, -1, 75, -1, -1, -1,
+ 79, 80, -1, -1, 83, 3, 4, 5, 6, 7,
+ 8, 9, -1, 11, 12, 13, 14, 15, -1, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, -1, 33, 34, -1, -1, -1,
+ -1, -1, 40, -1, -1, 43, -1, 45, -1, -1,
+ 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
+ -1, 59, 60, -1, -1, -1, 64, -1, 66, 67,
+ -1, -1, -1, 71, 72, -1, -1, 75, -1, 77,
+ -1, 79, 80, -1, 82, 3, 4, -1, -1, -1,
+ 8, 9, -1, 11, -1, -1, -1, 15, -1, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
+ -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
+ 48, 49, 50, -1, -1, -1, 54, 55, -1, 3,
+ -1, 59, 60, -1, 8, 9, 64, 11, 66, 67,
+ -1, -1, -1, 71, 72, -1, -1, 75, -1, 77,
+ -1, 79, 80, -1, 82, 29, -1, 31, -1, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, 43,
+ -1, -1, -1, -1, 48, 49, 50, -1, -1, -1,
+ 54, 55, -1, -1, -1, 59, 60, -1, -1, -1,
+ 64, -1, 66, -1, -1, -1, -1, 71, -1, -1,
+ -1, 75, -1, -1, -1, 79, 80, -1, 82, 3,
+ 4, -1, 6, 7, -1, -1, -1, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, -1, 3, 4, 5,
+ 6, 7, 8, 9, 38, 11, 12, 13, 14, 4,
+ 5, 6, 7, -1, -1, -1, -1, 12, 13, 14,
+ -1, -1, 28, 29, 30, 31, -1, 33, 34, -1,
+ -1, -1, -1, 28, 40, 30, -1, 43, 72, 45,
+ -1, -1, 48, 49, 50, -1, -1, 81, 54, 55,
+ 45, -1, -1, 59, 60, -1, -1, -1, 64, -1,
+ 66, 67, -1, -1, -1, 71, 72, -1, -1, 75,
+ -1, -1, 67, 79, 80, 3, 4, 72, 6, 7,
+ 8, 9, 77, 11, 12, 13, 14, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, -1, -1,
+ 28, 29, -1, 31, -1, 33, 34, -1, -1, -1,
+ -1, -1, 40, -1, -1, 43, -1, 45, -1, -1,
+ 48, 49, 50, -1, -1, -1, 54, 55, -1, 3,
+ -1, 59, 60, -1, 8, 9, 64, 11, 66, 67,
+ -1, -1, -1, 71, 72, -1, -1, 75, -1, -1,
+ -1, 79, 80, -1, -1, 29, -1, 31, -1, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, 43,
+ -1, -1, -1, -1, 48, 49, 50, -1, -1, -1,
+ 54, 55, -1, 3, -1, 59, 60, -1, 8, 9,
+ 64, 11, 66, 67, -1, -1, -1, 71, -1, -1,
+ -1, 75, -1, -1, -1, 79, 80, -1, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
+ 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
+ 50, -1, -1, -1, 54, 55, -1, 3, -1, 59,
+ 60, -1, 8, 9, 64, 11, 66, -1, -1, -1,
+ -1, 71, -1, -1, -1, 75, -1, 77, -1, 79,
+ 80, -1, -1, 29, -1, 31, -1, 33, 34, -1,
+ -1, -1, -1, -1, 40, -1, -1, 43, -1, -1,
+ -1, -1, 48, 49, 50, -1, -1, -1, 54, 55,
+ -1, 3, -1, 59, 60, -1, 8, 9, 64, 11,
+ 66, -1, -1, -1, -1, 71, -1, -1, -1, 75,
+ -1, -1, -1, 79, 80, -1, -1, 29, -1, 31,
+ -1, 33, 34, -1, -1, -1, -1, -1, 40, -1,
+ -1, 43, -1, -1, -1, -1, 48, 49, 50, -1,
+ -1, -1, 54, 55, -1, 3, -1, 59, 60, -1,
+ 8, 9, 64, 11, 66, -1, -1, -1, -1, 71,
+ -1, -1, -1, 75, -1, -1, -1, 79, 80, -1,
+ -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
+ -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
+ 48, 49, 50, -1, -1, -1, 54, 55, -1, 3,
+ -1, 59, 60, -1, 8, 9, 64, 11, 66, -1,
+ -1, -1, -1, 71, -1, -1, -1, 75, -1, -1,
+ -1, 79, 80, -1, -1, 29, -1, 31, -1, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, 43,
+ -1, -1, -1, -1, 48, 49, 50, -1, -1, -1,
+ 54, 55, -1, -1, -1, 59, 60, -1, -1, -1,
+ 64, -1, 66, -1, -1, -1, -1, 71, -1, -1,
+ -1, 75, -1, -1, 1, 79, 80, 4, -1, 6,
+ 7, -1, -1, -1, -1, 12, 13, 14, -1, -1,
+ -1, -1, 1, -1, -1, 4, -1, 6, 7, -1,
+ -1, 28, -1, 12, 13, 14, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 45, 28,
+ -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
+ 5, 6, 7, -1, -1, -1, 45, 12, 13, 14,
+ 67, 68, 69, 70, -1, 72, -1, -1, -1, -1,
+ 77, 78, 27, 28, -1, 30, 31, -1, 67, 68,
+ 69, 70, -1, 72, -1, -1, -1, -1, 77, 78,
+ 45, -1, -1, 48, 49, 50, -1, -1, -1, -1,
+ -1, -1, -1, -1, 59, -1, 61, 62, 63, -1,
+ -1, -1, 67, -1, -1, -1, 71, 72, 73, 74,
+ -1, 1, 77, 3, 4, 5, 6, 7, -1, -1,
+ -1, -1, 12, 13, 14, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 28, 1,
+ 30, 3, 4, 5, 6, 7, -1, -1, -1, -1,
+ 12, 13, 14, -1, -1, 45, -1, -1, 48, 49,
+ 50, -1, -1, -1, -1, -1, 28, -1, 30, 59,
+ -1, -1, -1, -1, -1, -1, -1, 67, -1, -1,
+ -1, -1, 72, 45, -1, -1, -1, 77, 50, 1,
+ -1, 3, 4, 5, 6, 7, -1, 59, 10, -1,
+ 12, 13, 14, -1, -1, 67, -1, -1, 1, -1,
+ 72, 4, 5, 6, 7, 77, 28, 10, 30, 12,
+ 13, 14, 4, 5, 6, 7, -1, -1, -1, -1,
+ 12, 13, 14, 45, -1, 28, -1, 30, -1, -1,
+ -1, 4, 5, 6, 7, -1, 28, -1, 30, 12,
+ 13, 14, 45, -1, -1, 67, -1, -1, -1, -1,
+ 72, -1, -1, 45, 76, 28, -1, 30, -1, -1,
+ -1, -1, -1, -1, 67, 1, -1, -1, 4, 72,
+ 6, 7, 45, 76, -1, 67, 12, 13, 14, -1,
+ 72, -1, -1, -1, -1, 77, -1, -1, -1, -1,
+ -1, -1, 28, -1, 67, 31, -1, -1, -1, 72,
+ -1, -1, 3, 4, 77, 6, 7, -1, -1, 45,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, -1,
+ -1, 67, -1, 30, -1, -1, 72, 38, 35, 36,
+ 37, -1, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, -1, -1, 59, -1,
+ -1, -1, -1, -1, 3, 4, -1, 6, 7, -1,
+ -1, 72, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, -1, 3, 4, -1, 6, 7, -1, -1, 38,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, -1,
+ -1, -1, -1, -1, -1, -1, -1, 38, 3, 4,
+ -1, 6, 7, 72, -1, -1, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, -1, -1, 4, -1, 6,
+ 7, 72, -1, 38, -1, 12, 13, 14, 4, 5,
+ 6, 7, -1, -1, 10, -1, 12, 13, 14, -1,
+ -1, 28, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 28, -1, 30, -1, -1, 72, 45, -1,
+ -1, -1, -1, 50, -1, -1, -1, -1, -1, 45,
+ -1, -1, 59, 60, -1, -1, -1, -1, -1, -1,
+ 67, -1, -1, -1, -1, 72, -1, -1, -1, -1,
+ -1, 67, 4, 5, 6, 7, 72, -1, 10, -1,
+ 12, 13, 14, 4, 5, 6, 7, -1, -1, -1,
+ -1, 12, 13, 14, -1, -1, 28, -1, 30, -1,
+ -1, -1, 4, 5, 6, 7, -1, 28, -1, 30,
+ 12, 13, 14, 45, -1, -1, -1, -1, -1, -1,
+ 4, -1, 6, 7, 45, -1, 28, -1, 12, 13,
+ 14, -1, -1, -1, -1, 67, -1, -1, -1, 4,
+ 72, 6, 7, 45, 28, -1, 67, 12, 13, 14,
+ -1, 72, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 45, -1, 28, -1, 67, -1, -1, -1, -1,
+ 72, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 45, -1, -1, 67, 10, -1, -1, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 67, -1, -1, -1, -1, 72, -1, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 35, 36, 37, -1, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/share/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "/usr/local/share/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+ YYPARSE_PARAM_DECL
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 1:
+#line 237 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ ;
+ break;}
+case 2:
+#line 242 "objc-parse.y"
+{
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+ while (! global_bindings_p ())
+ poplevel (0, 0, 0);
+ finish_file ();
+ ;
+ break;}
+case 3:
+#line 256 "objc-parse.y"
+{yyval.ttype = NULL_TREE; ;
+ break;}
+case 5:
+#line 257 "objc-parse.y"
+{yyval.ttype = NULL_TREE; ;
+ break;}
+case 10:
+#line 265 "objc-parse.y"
+{ STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+ || TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
+ assemble_asm (yyvsp[-2].ttype);
+ else
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+case 11:
+#line 273 "objc-parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 12:
+#line 278 "objc-parse.y"
+{ if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+ warning ("data definition has no type or storage class");
+
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 13:
+#line 288 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 14:
+#line 293 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 15:
+#line 298 "objc-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 16:
+#line 300 "objc-parse.y"
+{ shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+case 19:
+#line 304 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
+ break;}
+case 20:
+#line 310 "objc-parse.y"
+{ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+case 21:
+#line 315 "objc-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 22:
+#line 317 "objc-parse.y"
+{ finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 23:
+#line 323 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 24:
+#line 328 "objc-parse.y"
+{ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+case 25:
+#line 333 "objc-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 26:
+#line 335 "objc-parse.y"
+{ finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 27:
+#line 341 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 28:
+#line 346 "objc-parse.y"
+{ if (! start_function (NULL_TREE, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+case 29:
+#line 351 "objc-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 30:
+#line 353 "objc-parse.y"
+{ finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 31:
+#line 359 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 36:
+#line 373 "objc-parse.y"
+{ yyval.code = ADDR_EXPR; ;
+ break;}
+case 37:
+#line 375 "objc-parse.y"
+{ yyval.code = NEGATE_EXPR; ;
+ break;}
+case 38:
+#line 377 "objc-parse.y"
+{ yyval.code = CONVERT_EXPR; ;
+ break;}
+case 39:
+#line 379 "objc-parse.y"
+{ yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+case 40:
+#line 381 "objc-parse.y"
+{ yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+case 41:
+#line 383 "objc-parse.y"
+{ yyval.code = BIT_NOT_EXPR; ;
+ break;}
+case 42:
+#line 385 "objc-parse.y"
+{ yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+case 43:
+#line 389 "objc-parse.y"
+{ yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
+ break;}
+case 44:
+#line 394 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 46:
+#line 400 "objc-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 47:
+#line 402 "objc-parse.y"
+{ chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 49:
+#line 408 "objc-parse.y"
+{ yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+case 50:
+#line 411 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 51:
+#line 414 "objc-parse.y"
+{ yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
+ overflow_warning (yyval.ttype); ;
+ break;}
+case 52:
+#line 418 "objc-parse.y"
+{ tree label = lookup_label (yyvsp[0].ttype);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+ if (label == 0)
+ yyval.ttype = null_pointer_node;
+ else
+ {
+ TREE_USED (label) = 1;
+ yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
+ TREE_CONSTANT (yyval.ttype) = 1;
+ }
+ ;
+ break;}
+case 53:
+#line 446 "objc-parse.y"
+{ skip_evaluation--;
+ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+ error ("`sizeof' applied to a bit-field");
+ yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+ break;}
+case 54:
+#line 452 "objc-parse.y"
+{ skip_evaluation--;
+ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+case 55:
+#line 455 "objc-parse.y"
+{ skip_evaluation--;
+ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
+ break;}
+case 56:
+#line 458 "objc-parse.y"
+{ skip_evaluation--;
+ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+case 57:
+#line 461 "objc-parse.y"
+{ yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+case 58:
+#line 463 "objc-parse.y"
+{ yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+case 59:
+#line 467 "objc-parse.y"
+{ skip_evaluation++; ;
+ break;}
+case 60:
+#line 471 "objc-parse.y"
+{ skip_evaluation++; ;
+ break;}
+case 62:
+#line 477 "objc-parse.y"
+{ tree type = groktypename (yyvsp[-2].ttype);
+ yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+ break;}
+case 63:
+#line 480 "objc-parse.y"
+{ start_init (NULL_TREE, NULL, 0);
+ yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
+ really_start_incremental_init (yyvsp[-2].ttype); ;
+ break;}
+case 64:
+#line 484 "objc-parse.y"
+{ char *name;
+ tree result = pop_init_level (0);
+ tree type = yyvsp[-5].ttype;
+ finish_init ();
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids constructor expressions");
+ if (TYPE_NAME (type) != 0)
+ {
+ if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
+ name = IDENTIFIER_POINTER (TYPE_NAME (type));
+ else
+ name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
+ }
+ else
+ name = "";
+ yyval.ttype = result;
+ if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
+ {
+ int failure = complete_array_type (type, yyval.ttype, 1);
+ if (failure)
+ abort ();
+ }
+ ;
+ break;}
+case 66:
+#line 513 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 67:
+#line 515 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 68:
+#line 517 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 69:
+#line 519 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 70:
+#line 521 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 71:
+#line 523 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 72:
+#line 525 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 73:
+#line 527 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 74:
+#line 529 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 75:
+#line 531 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 76:
+#line 533 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 77:
+#line 535 "objc-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 78:
+#line 537 "objc-parse.y"
+{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+case 79:
+#line 540 "objc-parse.y"
+{ skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 80:
+#line 543 "objc-parse.y"
+{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+case 81:
+#line 546 "objc-parse.y"
+{ skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 82:
+#line 549 "objc-parse.y"
+{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+case 83:
+#line 552 "objc-parse.y"
+{ skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
+ - (yyvsp[-4].ttype == boolean_false_node)); ;
+ break;}
+case 84:
+#line 555 "objc-parse.y"
+{ skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 85:
+#line 558 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+ yyvsp[0].ttype = save_expr (yyvsp[-1].ttype);
+ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+case 86:
+#line 565 "objc-parse.y"
+{ skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+case 87:
+#line 568 "objc-parse.y"
+{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
+ break;}
+case 88:
+#line 571 "objc-parse.y"
+{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
+ /* This inhibits warnings in truthvalue_conversion. */
+ C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
+ break;}
+case 89:
+#line 578 "objc-parse.y"
+{
+ yyval.ttype = lastiddecl;
+ if (!yyval.ttype || yyval.ttype == error_mark_node)
+ {
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ tree decl;
+
+ if (objc_receiver_context
+ && ! (objc_receiver_context
+ && strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "super")))
+ /* we have a message to super */
+ yyval.ttype = get_super_receiver ();
+ else if (objc_method_context
+ && (decl = is_ivar (objc_ivar_chain, yyvsp[0].ttype)))
+ {
+ if (is_private (decl))
+ yyval.ttype = error_mark_node;
+ else
+ yyval.ttype = build_ivar_reference (yyvsp[0].ttype);
+ }
+ else
+ {
+ /* Ordinary implicit function declaration. */
+ yyval.ttype = implicitly_declare (yyvsp[0].ttype);
+ assemble_external (yyval.ttype);
+ TREE_USED (yyval.ttype) = 1;
+ }
+ }
+ else if (current_function_decl == 0)
+ {
+ error ("`%s' undeclared here (not in a function)",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = error_mark_node;
+ }
+ else
+ {
+ tree decl;
+
+ if (objc_receiver_context
+ && ! strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "super"))
+ /* we have a message to super */
+ yyval.ttype = get_super_receiver ();
+ else if (objc_method_context
+ && (decl = is_ivar (objc_ivar_chain, yyvsp[0].ttype)))
+ {
+ if (is_private (decl))
+ yyval.ttype = error_mark_node;
+ else
+ yyval.ttype = build_ivar_reference (yyvsp[0].ttype);
+ }
+ else
+ {
+ if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node
+ || IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) != current_function_decl)
+ {
+ error ("`%s' undeclared (first use this function)",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+
+ if (! undeclared_variable_notice)
+ {
+ error ("(Each undeclared identifier is reported only once");
+ error ("for each function it appears in.)");
+ undeclared_variable_notice = 1;
+ }
+ }
+ yyval.ttype = error_mark_node;
+ /* Prevent repeated error messages. */
+ IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
+ IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) = current_function_decl;
+ }
+ }
+ }
+ else if (TREE_TYPE (yyval.ttype) == error_mark_node)
+ yyval.ttype = error_mark_node;
+ else if (C_DECL_ANTICIPATED (yyval.ttype))
+ {
+ /* The first time we see a build-in function used,
+ if it has not been declared. */
+ C_DECL_ANTICIPATED (yyval.ttype) = 0;
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ /* Omit the implicit declaration we
+ would ordinarily do, so we don't lose
+ the actual built in type.
+ But print a diagnostic for the mismatch. */
+ if (objc_method_context
+ && is_ivar (objc_ivar_chain, yyvsp[0].ttype))
+ error ("Instance variable `%s' implicitly declared as function",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+ else
+ if (TREE_CODE (yyval.ttype) != FUNCTION_DECL)
+ error ("`%s' implicitly declared as function",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+ else if ((TYPE_MODE (TREE_TYPE (TREE_TYPE (yyval.ttype)))
+ != TYPE_MODE (integer_type_node))
+ && (TREE_TYPE (TREE_TYPE (yyval.ttype))
+ != void_type_node))
+ pedwarn ("type mismatch in implicit declaration for built-in function `%s'",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+ /* If it really returns void, change that to int. */
+ if (TREE_TYPE (TREE_TYPE (yyval.ttype)) == void_type_node)
+ TREE_TYPE (yyval.ttype)
+ = build_function_type (integer_type_node,
+ TYPE_ARG_TYPES (TREE_TYPE (yyval.ttype)));
+ }
+ else
+ pedwarn ("built-in function `%s' used without declaration",
+ IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
+
+ /* Do what we would ordinarily do when a fn is used. */
+ assemble_external (yyval.ttype);
+ TREE_USED (yyval.ttype) = 1;
+ }
+ else
+ {
+ assemble_external (yyval.ttype);
+ TREE_USED (yyval.ttype) = 1;
+ /* we have a definition - still check if iVariable */
+
+ if (!objc_receiver_context
+ || (objc_receiver_context
+ && strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "super")))
+ {
+ tree decl;
+
+ if (objc_method_context
+ && (decl = is_ivar (objc_ivar_chain, yyvsp[0].ttype)))
+ {
+ if (IDENTIFIER_LOCAL_VALUE (yyvsp[0].ttype))
+ warning ("local declaration of `%s' hides instance variable",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ else
+ {
+ if (is_private (decl))
+ yyval.ttype = error_mark_node;
+ else
+ yyval.ttype = build_ivar_reference (yyvsp[0].ttype);
+ }
+ }
+ }
+ else /* we have a message to super */
+ yyval.ttype = get_super_receiver ();
+ }
+
+ if (TREE_CODE (yyval.ttype) == CONST_DECL)
+ {
+ yyval.ttype = DECL_INITIAL (yyval.ttype);
+ /* This is to prevent an enum whose value is 0
+ from being considered a null pointer constant. */
+ yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
+ TREE_CONSTANT (yyval.ttype) = 1;
+ }
+ ;
+ break;}
+case 91:
+#line 738 "objc-parse.y"
+{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+ break;}
+case 92:
+#line 740 "objc-parse.y"
+{ char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+ C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
+ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 93:
+#line 746 "objc-parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 94:
+#line 748 "objc-parse.y"
+{ if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+ YYERROR;
+ }
+ /* We must force a BLOCK for this level
+ so that, if it is not expanded later,
+ there is a way to turn off the entire subtree of blocks
+ that are contained in it. */
+ keep_next_level ();
+ push_iterator_stack ();
+ push_label_level ();
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+case 95:
+#line 762 "objc-parse.y"
+{ tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+ pop_iterator_stack ();
+ pop_label_level ();
+ rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
+ /* The statements have side effects, so the group does. */
+ TREE_SIDE_EFFECTS (rtl_exp) = 1;
+
+ if (TREE_CODE (yyvsp[-1].ttype) == BLOCK)
+ {
+ /* Make a BIND_EXPR for the BLOCK already made. */
+ yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
+ NULL_TREE, rtl_exp, yyvsp[-1].ttype);
+ /* Remove the block from the tree at this point.
+ It gets put back at the proper place
+ when the BIND_EXPR is expanded. */
+ delete_block (yyvsp[-1].ttype);
+ }
+ else
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 96:
+#line 785 "objc-parse.y"
+{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 97:
+#line 787 "objc-parse.y"
+{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 98:
+#line 789 "objc-parse.y"
+{
+ if (doing_objc_thang)
+ {
+ if (is_public (yyvsp[-2].ttype, yyvsp[0].ttype))
+ yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
+ else
+ yyval.ttype = error_mark_node;
+ }
+ else
+ yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 99:
+#line 801 "objc-parse.y"
+{
+ tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
+
+ if (doing_objc_thang)
+ {
+ if (is_public (expr, yyvsp[0].ttype))
+ yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
+ else
+ yyval.ttype = error_mark_node;
+ }
+ else
+ yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
+ ;
+ break;}
+case 100:
+#line 815 "objc-parse.y"
+{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+case 101:
+#line 817 "objc-parse.y"
+{ yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+case 102:
+#line 819 "objc-parse.y"
+{ yyval.ttype = build_message_expr (yyvsp[0].ttype); ;
+ break;}
+case 103:
+#line 821 "objc-parse.y"
+{ yyval.ttype = build_selector_expr (yyvsp[0].ttype); ;
+ break;}
+case 104:
+#line 823 "objc-parse.y"
+{ yyval.ttype = build_protocol_expr (yyvsp[0].ttype); ;
+ break;}
+case 105:
+#line 825 "objc-parse.y"
+{ yyval.ttype = build_encode_expr (yyvsp[0].ttype); ;
+ break;}
+case 106:
+#line 827 "objc-parse.y"
+{ yyval.ttype = build_objc_string_object (yyvsp[0].ttype); ;
+ break;}
+case 108:
+#line 834 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 110:
+#line 842 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 113:
+#line 850 "objc-parse.y"
+{ c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
+ break;}
+case 114:
+#line 860 "objc-parse.y"
+{ ;
+ break;}
+case 119:
+#line 876 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 120:
+#line 881 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 121:
+#line 886 "objc-parse.y"
+{ shadow_tag_warned (yyvsp[-1].ttype, 1);
+ pedwarn ("empty declaration"); ;
+ break;}
+case 122:
+#line 889 "objc-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 123:
+#line 898 "objc-parse.y"
+{ ;
+ break;}
+case 128:
+#line 913 "objc-parse.y"
+{ yyval.itype = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+ current_declspecs,
+ declspec_stack);
+ split_specs_attrs (yyvsp[0].ttype,
+ &current_declspecs, &prefix_attributes); ;
+ break;}
+case 129:
+#line 924 "objc-parse.y"
+{ prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
+ break;}
+case 130:
+#line 929 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 131:
+#line 934 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 132:
+#line 939 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 133:
+#line 944 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 134:
+#line 949 "objc-parse.y"
+{ shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+case 135:
+#line 951 "objc-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 136:
+#line 953 "objc-parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 137:
+#line 963 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 138:
+#line 965 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 139:
+#line 969 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 140:
+#line 971 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 141:
+#line 973 "objc-parse.y"
+{ if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 142:
+#line 978 "objc-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 143:
+#line 983 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 144:
+#line 985 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 145:
+#line 990 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 146:
+#line 992 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 147:
+#line 994 "objc-parse.y"
+{ if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 148:
+#line 1007 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 149:
+#line 1009 "objc-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+case 150:
+#line 1011 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 151:
+#line 1013 "objc-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 152:
+#line 1018 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+case 153:
+#line 1021 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 154:
+#line 1023 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+case 155:
+#line 1026 "objc-parse.y"
+{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+case 156:
+#line 1040 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 157:
+#line 1042 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+case 158:
+#line 1046 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 159:
+#line 1048 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 162:
+#line 1058 "objc-parse.y"
+{ /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype); ;
+ break;}
+case 163:
+#line 1062 "objc-parse.y"
+{ yyval.ttype = get_static_reference (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 164:
+#line 1064 "objc-parse.y"
+{ yyval.ttype = get_object_reference (yyvsp[0].ttype); ;
+ break;}
+case 165:
+#line 1069 "objc-parse.y"
+{ yyval.ttype = get_object_reference (yyvsp[0].ttype); ;
+ break;}
+case 166:
+#line 1071 "objc-parse.y"
+{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
+ break;}
+case 167:
+#line 1073 "objc-parse.y"
+{ yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+ break;}
+case 175:
+#line 1095 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 176:
+#line 1097 "objc-parse.y"
+{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 177:
+#line 1104 "objc-parse.y"
+{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+case 178:
+#line 1109 "objc-parse.y"
+{ finish_init ();
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+case 179:
+#line 1112 "objc-parse.y"
+{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+case 180:
+#line 1120 "objc-parse.y"
+{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+case 181:
+#line 1125 "objc-parse.y"
+{ finish_init ();
+ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+case 182:
+#line 1129 "objc-parse.y"
+{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 183:
+#line 1137 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 184:
+#line 1139 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 185:
+#line 1144 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 186:
+#line 1146 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 187:
+#line 1151 "objc-parse.y"
+{ yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+case 188:
+#line 1156 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 189:
+#line 1158 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 190:
+#line 1163 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 191:
+#line 1165 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 192:
+#line 1167 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+case 193:
+#line 1169 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+case 194:
+#line 1171 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 200:
+#line 1189 "objc-parse.y"
+{ really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); ;
+ break;}
+case 201:
+#line 1194 "objc-parse.y"
+{ yyval.ttype = pop_init_level (0);
+ if (yyval.ttype == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+ pop_momentary ();
+ else
+ pop_momentary_nofree (); ;
+ break;}
+case 202:
+#line 1202 "objc-parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 203:
+#line 1208 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); ;
+ break;}
+case 207:
+#line 1222 "objc-parse.y"
+{ process_init_element (yyvsp[0].ttype); ;
+ break;}
+case 208:
+#line 1224 "objc-parse.y"
+{ push_init_level (0); ;
+ break;}
+case 209:
+#line 1226 "objc-parse.y"
+{ process_init_element (pop_init_level (0)); ;
+ break;}
+case 211:
+#line 1232 "objc-parse.y"
+{ set_init_label (yyvsp[-1].ttype); ;
+ break;}
+case 213:
+#line 1235 "objc-parse.y"
+{ set_init_label (yyvsp[-1].ttype); ;
+ break;}
+case 215:
+#line 1241 "objc-parse.y"
+{ push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); ;
+ break;}
+case 216:
+#line 1250 "objc-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 217:
+#line 1258 "objc-parse.y"
+{ finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+case 218:
+#line 1264 "objc-parse.y"
+{ push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); ;
+ break;}
+case 219:
+#line 1273 "objc-parse.y"
+{ store_parm_decls (); ;
+ break;}
+case 220:
+#line 1281 "objc-parse.y"
+{ finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+case 223:
+#line 1297 "objc-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 224:
+#line 1299 "objc-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 225:
+#line 1304 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 226:
+#line 1306 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 227:
+#line 1308 "objc-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 228:
+#line 1315 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 231:
+#line 1327 "objc-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 232:
+#line 1332 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 233:
+#line 1334 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 234:
+#line 1336 "objc-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 235:
+#line 1343 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 237:
+#line 1352 "objc-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 238:
+#line 1357 "objc-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 239:
+#line 1359 "objc-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 240:
+#line 1361 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 241:
+#line 1363 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 242:
+#line 1370 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 244:
+#line 1376 "objc-parse.y"
+{ yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
+ /* Start scope of tag before parsing components. */
+ ;
+ break;}
+case 245:
+#line 1380 "objc-parse.y"
+{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 246:
+#line 1382 "objc-parse.y"
+{ yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 247:
+#line 1386 "objc-parse.y"
+{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
+ break;}
+case 248:
+#line 1388 "objc-parse.y"
+{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+ break;}
+case 249:
+#line 1390 "objc-parse.y"
+{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 250:
+#line 1392 "objc-parse.y"
+{ yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 251:
+#line 1396 "objc-parse.y"
+{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+ break;}
+case 252:
+#line 1398 "objc-parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+case 253:
+#line 1401 "objc-parse.y"
+{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), yyvsp[0].ttype);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 254:
+#line 1404 "objc-parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (NULL_TREE); ;
+ break;}
+case 255:
+#line 1407 "objc-parse.y"
+{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), yyvsp[0].ttype);
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+case 256:
+#line 1410 "objc-parse.y"
+{ yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
+ break;}
+case 260:
+#line 1421 "objc-parse.y"
+{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
+ break;}
+case 261:
+#line 1426 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 262:
+#line 1428 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ pedwarn ("no semicolon at end of struct or union"); ;
+ break;}
+case 263:
+#line 1433 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 264:
+#line 1435 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 265:
+#line 1437 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); ;
+ break;}
+case 266:
+#line 1441 "objc-parse.y"
+{
+ tree interface = lookup_interface (yyvsp[-1].ttype);
+
+ if (interface)
+ yyval.ttype = get_class_ivars (interface);
+ else
+ {
+ error ("Cannot find interface declaration for `%s'",
+ IDENTIFIER_POINTER (yyvsp[-1].ttype));
+ yyval.ttype = NULL_TREE;
+ }
+ ;
+ break;}
+case 267:
+#line 1466 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 268:
+#line 1472 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 269:
+#line 1477 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 270:
+#line 1483 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 271:
+#line 1488 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 272:
+#line 1490 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ pedantic = yyvsp[-1].itype; ;
+ break;}
+case 274:
+#line 1497 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 275:
+#line 1502 "objc-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 276:
+#line 1506 "objc-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 277:
+#line 1509 "objc-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+case 279:
+#line 1521 "objc-parse.y"
+{ if (yyvsp[-2].ttype == error_mark_node)
+ yyval.ttype = yyvsp[-2].ttype;
+ else
+ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+case 280:
+#line 1526 "objc-parse.y"
+{ yyval.ttype = error_mark_node; ;
+ break;}
+case 281:
+#line 1532 "objc-parse.y"
+{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 282:
+#line 1534 "objc-parse.y"
+{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 283:
+#line 1539 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 284:
+#line 1541 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 285:
+#line 1546 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 287:
+#line 1552 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 288:
+#line 1554 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 289:
+#line 1559 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 290:
+#line 1561 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 291:
+#line 1566 "objc-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+case 292:
+#line 1569 "objc-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+case 293:
+#line 1571 "objc-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 294:
+#line 1573 "objc-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 295:
+#line 1575 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 296:
+#line 1577 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+case 297:
+#line 1579 "objc-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+case 298:
+#line 1581 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 299:
+#line 1583 "objc-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+case 300:
+#line 1594 "objc-parse.y"
+{
+ if (pedantic && yyvsp[0].ends_in_label)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ ;
+ break;}
+case 302:
+#line 1603 "objc-parse.y"
+{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+case 303:
+#line 1605 "objc-parse.y"
+{ yyval.ends_in_label = 0; ;
+ break;}
+case 307:
+#line 1617 "objc-parse.y"
+{ emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+ push_momentary ();
+ expand_start_bindings (0);
+ if (objc_method_context)
+ add_objc_decls ();
+ ;
+ break;}
+case 309:
+#line 1632 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); ;
+ break;}
+case 312:
+#line 1643 "objc-parse.y"
+{ tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+ tree label = shadow_label (TREE_VALUE (link));
+ C_DECLARED_LABEL_FLAG (label) = 1;
+ declare_nonlocal_label (label);
+ }
+ ;
+ break;}
+case 313:
+#line 1657 "objc-parse.y"
+{;
+ break;}
+case 315:
+#line 1662 "objc-parse.y"
+{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
+ break;}
+case 316:
+#line 1664 "objc-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ yyval.ttype = poplevel (1, 1, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 317:
+#line 1672 "objc-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 318:
+#line 1680 "objc-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 321:
+#line 1700 "objc-parse.y"
+{ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0);
+ yyval.itype = stmt_count;
+ if_stmt_file = yyvsp[-5].filename;
+ if_stmt_line = yyvsp[-4].lineno;
+ position_after_white_space (); ;
+ break;}
+case 322:
+#line 1713 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ expand_start_loop_continue_elsewhere (1);
+ position_after_white_space (); ;
+ break;}
+case 323:
+#line 1720 "objc-parse.y"
+{ expand_loop_continue_here (); ;
+ break;}
+case 324:
+#line 1724 "objc-parse.y"
+{ yyval.filename = input_filename; ;
+ break;}
+case 325:
+#line 1728 "objc-parse.y"
+{ yyval.lineno = lineno; ;
+ break;}
+case 326:
+#line 1733 "objc-parse.y"
+{ ;
+ break;}
+case 327:
+#line 1738 "objc-parse.y"
+{ ;
+ break;}
+case 328:
+#line 1743 "objc-parse.y"
+{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+case 329:
+#line 1748 "objc-parse.y"
+{ yyval.ends_in_label = 0; ;
+ break;}
+case 330:
+#line 1750 "objc-parse.y"
+{ yyval.ends_in_label = 1; ;
+ break;}
+case 331:
+#line 1756 "objc-parse.y"
+{ stmt_count++; ;
+ break;}
+case 333:
+#line 1759 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+/* It appears that this should not be done--that a non-lvalue array
+ shouldn't get an error if the value isn't used.
+ Section 3.2.2.1 says that an array lvalue gets converted to a pointer
+ if it appears as a top-level expression,
+ but says nothing about non-lvalue arrays. */
+#if 0
+ /* Call default_conversion to get an error
+ on referring to a register array if pedantic. */
+ if (TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == ARRAY_TYPE
+ || TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == FUNCTION_TYPE)
+ yyvsp[-1].ttype = default_conversion (yyvsp[-1].ttype);
+#endif
+ iterator_expand (yyvsp[-1].ttype);
+ clear_momentary (); ;
+ break;}
+case 334:
+#line 1776 "objc-parse.y"
+{ expand_start_else ();
+ yyvsp[-1].itype = stmt_count;
+ position_after_white_space (); ;
+ break;}
+case 335:
+#line 1780 "objc-parse.y"
+{ expand_end_cond ();
+ if (extra_warnings && stmt_count == yyvsp[-3].itype)
+ warning ("empty body in an else-statement"); ;
+ break;}
+case 336:
+#line 1784 "objc-parse.y"
+{ expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+ else statement. Increment stmt_count so we don't
+ give a second error if this is a nested `if'. */
+ if (extra_warnings && stmt_count++ == yyvsp[0].itype)
+ warning_with_file_and_line (if_stmt_file, if_stmt_line,
+ "empty body in an if-statement"); ;
+ break;}
+case 337:
+#line 1796 "objc-parse.y"
+{ expand_end_cond (); ;
+ break;}
+case 338:
+#line 1798 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* The emit_nop used to come before emit_line_note,
+ but that made the nop seem like part of the preceding line.
+ And that was confusing when the preceding line was
+ inside of an if statement and was not really executed.
+ I think it ought to work to put the nop after the line number.
+ We will see. --rms, July 15, 1991. */
+ emit_nop (); ;
+ break;}
+case 339:
+#line 1808 "objc-parse.y"
+{ /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+ expand_start_loop (1);
+ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-1].ttype));
+ position_after_white_space (); ;
+ break;}
+case 340:
+#line 1817 "objc-parse.y"
+{ expand_end_loop (); ;
+ break;}
+case 341:
+#line 1820 "objc-parse.y"
+{ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-2].ttype));
+ expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+case 342:
+#line 1827 "objc-parse.y"
+{ expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+case 343:
+#line 1831 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ if (yyvsp[-1].ttype) c_expand_expr_stmt (yyvsp[-1].ttype);
+ /* Next step is to call expand_start_loop_continue_elsewhere,
+ but wait till after we parse the entire for (...).
+ Otherwise, invalid input might cause us to call that
+ fn without calling expand_end_loop. */
+ ;
+ break;}
+case 344:
+#line 1843 "objc-parse.y"
+{ yyvsp[0].lineno = lineno;
+ yyval.filename = input_filename; ;
+ break;}
+case 345:
+#line 1846 "objc-parse.y"
+{
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+ expand_start_loop_continue_elsewhere (1);
+ /* Emit the end-test, with a line number. */
+ emit_line_note (yyvsp[-2].filename, yyvsp[-3].lineno);
+ if (yyvsp[-4].ttype)
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-4].ttype));
+ /* Don't let the tree nodes for $9 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ yyvsp[-3].lineno = lineno;
+ yyvsp[-2].filename = input_filename;
+ position_after_white_space (); ;
+ break;}
+case 346:
+#line 1862 "objc-parse.y"
+{ /* Emit the increment expression, with a line number. */
+ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
+ expand_loop_continue_here ();
+ if (yyvsp[-3].ttype)
+ c_expand_expr_stmt (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary ();
+ expand_end_loop (); ;
+ break;}
+case 347:
+#line 1873 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+ /* Don't let the tree nodes for $3 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ position_after_white_space (); ;
+ break;}
+case 348:
+#line 1881 "objc-parse.y"
+{ expand_end_case (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); ;
+ break;}
+case 349:
+#line 1887 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+case 350:
+#line 1892 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); ;
+ break;}
+case 351:
+#line 1897 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+case 352:
+#line 1901 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ c_expand_return (yyvsp[-1].ttype); ;
+ break;}
+case 353:
+#line 1905 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
+ STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+ || TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
+ expand_asm (yyvsp[-2].ttype);
+ else
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+case 354:
+#line 1916 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+ yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); ;
+ break;}
+case 355:
+#line 1923 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+ yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); ;
+ break;}
+case 356:
+#line 1931 "objc-parse.y"
+{ stmt_count++;
+ emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+ yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); ;
+ break;}
+case 357:
+#line 1937 "objc-parse.y"
+{ tree decl;
+ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ decl = lookup_label (yyvsp[-1].ttype);
+ if (decl != 0)
+ {
+ TREE_USED (decl) = 1;
+ expand_goto (decl);
+ }
+ ;
+ break;}
+case 358:
+#line 1948 "objc-parse.y"
+{ if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
+ break;}
+case 361:
+#line 1963 "objc-parse.y"
+{
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+ /* 0 in case of error or already bound iterator */
+
+ yyval.itype = 0;
+ if (TREE_CODE (yyvsp[-1].ttype) != VAR_DECL)
+ error ("invalid `for (ITERATOR)' syntax");
+ else if (! ITERATOR_P (yyvsp[-1].ttype))
+ error ("`%s' is not an iterator",
+ IDENTIFIER_POINTER (DECL_NAME (yyvsp[-1].ttype)));
+ else if (ITERATOR_BOUND_P (yyvsp[-1].ttype))
+ error ("`for (%s)' inside expansion of same iterator",
+ IDENTIFIER_POINTER (DECL_NAME (yyvsp[-1].ttype)));
+ else
+ {
+ yyval.itype = 1;
+ iterator_for_loop_start (yyvsp[-1].ttype);
+ }
+ ;
+ break;}
+case 362:
+#line 1984 "objc-parse.y"
+{
+ if (yyvsp[-1].itype)
+ iterator_for_loop_end (yyvsp[-3].ttype);
+ ;
+ break;}
+case 363:
+#line 2019 "objc-parse.y"
+{ register tree value = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ stmt_count++;
+
+ if (value != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase (value, convert_and_check,
+ label, &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); ;
+ break;}
+case 364:
+#line 2044 "objc-parse.y"
+{ register tree value1 = check_case_value (yyvsp[-3].ttype);
+ register tree value2 = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids case ranges");
+ stmt_count++;
+
+ if (value1 != error_mark_node && value2 != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase_range (value1, value2,
+ convert_and_check, label,
+ &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 4)
+ warning ("empty case range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); ;
+ break;}
+case 365:
+#line 2075 "objc-parse.y"
+{
+ tree duplicate;
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+ int success = pushcase (NULL_TREE, 0, label, &duplicate);
+ stmt_count++;
+ if (success == 1)
+ error ("default label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("multiple default labels in one switch");
+ error_with_decl (duplicate, "this is the first default label");
+ }
+ position_after_white_space (); ;
+ break;}
+case 366:
+#line 2090 "objc-parse.y"
+{ tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
+ stmt_count++;
+ emit_nop ();
+ if (label)
+ expand_label (label);
+ position_after_white_space (); ;
+ break;}
+case 367:
+#line 2102 "objc-parse.y"
+{ emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+case 368:
+#line 2105 "objc-parse.y"
+{ emit_line_note (input_filename, lineno); ;
+ break;}
+case 369:
+#line 2110 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 371:
+#line 2117 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 374:
+#line 2124 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+case 375:
+#line 2129 "objc-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+case 376:
+#line 2134 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+ break;}
+case 377:
+#line 2136 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+ break;}
+case 378:
+#line 2142 "objc-parse.y"
+{ pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); ;
+ break;}
+case 379:
+#line 2146 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+case 381:
+#line 2154 "objc-parse.y"
+{ tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+ /* Mark the forward decls as such. */
+ for (parm = getdecls (); parm; parm = TREE_CHAIN (parm))
+ TREE_ASM_WRITTEN (parm) = 1;
+ clear_parm_order (); ;
+ break;}
+case 382:
+#line 2162 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+case 383:
+#line 2164 "objc-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+ break;}
+case 384:
+#line 2170 "objc-parse.y"
+{ yyval.ttype = get_parm_info (0); ;
+ break;}
+case 385:
+#line 2172 "objc-parse.y"
+{ yyval.ttype = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+ Also, since func (...) and func () are indistinguishable,
+ it caused problems with the code in expand_builtin which
+ tries to verify that BUILT_IN_NEXT_ARG is being used
+ correctly. */
+ error ("ANSI C requires a named argument before `...'");
+ ;
+ break;}
+case 386:
+#line 2182 "objc-parse.y"
+{ yyval.ttype = get_parm_info (1); ;
+ break;}
+case 387:
+#line 2184 "objc-parse.y"
+{ yyval.ttype = get_parm_info (0); ;
+ break;}
+case 388:
+#line 2189 "objc-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+case 389:
+#line 2191 "objc-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+case 390:
+#line 2198 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 391:
+#line 2207 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 392:
+#line 2216 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 393:
+#line 2225 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 394:
+#line 2235 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 395:
+#line 2249 "objc-parse.y"
+{ pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); ;
+ break;}
+case 396:
+#line 2253 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+case 398:
+#line 2261 "objc-parse.y"
+{ tree t;
+ for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+ error ("`...' in old-style identifier list");
+ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+case 399:
+#line 2271 "objc-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 400:
+#line 2273 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 401:
+#line 2279 "objc-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 402:
+#line 2281 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 403:
+#line 2286 "objc-parse.y"
+{ yyval.itype = pedantic;
+ pedantic = 0; ;
+ break;}
+case 409:
+#line 2299 "objc-parse.y"
+{
+ if (objc_implementation_context)
+ {
+ finish_class (objc_implementation_context);
+ objc_ivar_chain = NULL_TREE;
+ objc_implementation_context = NULL_TREE;
+ }
+ else
+ warning ("`@end' must appear in an implementation context");
+ ;
+ break;}
+case 410:
+#line 2314 "objc-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+case 411:
+#line 2316 "objc-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+case 412:
+#line 2321 "objc-parse.y"
+{
+ objc_declare_class (yyvsp[-1].ttype);
+ ;
+ break;}
+case 413:
+#line 2327 "objc-parse.y"
+{
+ objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype);
+ ;
+ break;}
+case 414:
+#line 2333 "objc-parse.y"
+{
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
+ objc_public_flag = 0;
+ ;
+ break;}
+case 415:
+#line 2339 "objc-parse.y"
+{
+ continue_class (objc_interface_context);
+ ;
+ break;}
+case 416:
+#line 2344 "objc-parse.y"
+{
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+case 417:
+#line 2350 "objc-parse.y"
+{
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-1].ttype, NULL_TREE, yyvsp[0].ttype);
+ continue_class (objc_interface_context);
+ ;
+ break;}
+case 418:
+#line 2357 "objc-parse.y"
+{
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+case 419:
+#line 2363 "objc-parse.y"
+{
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype);
+ objc_public_flag = 0;
+ ;
+ break;}
+case 420:
+#line 2369 "objc-parse.y"
+{
+ continue_class (objc_interface_context);
+ ;
+ break;}
+case 421:
+#line 2374 "objc-parse.y"
+{
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+case 422:
+#line 2380 "objc-parse.y"
+{
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+ continue_class (objc_interface_context);
+ ;
+ break;}
+case 423:
+#line 2387 "objc-parse.y"
+{
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+case 424:
+#line 2393 "objc-parse.y"
+{
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
+ objc_public_flag = 0;
+ ;
+ break;}
+case 425:
+#line 2399 "objc-parse.y"
+{
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+case 426:
+#line 2405 "objc-parse.y"
+{
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[0].ttype, NULL_TREE, NULL_TREE);
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+case 427:
+#line 2413 "objc-parse.y"
+{
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+ objc_public_flag = 0;
+ ;
+ break;}
+case 428:
+#line 2419 "objc-parse.y"
+{
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+case 429:
+#line 2425 "objc-parse.y"
+{
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+case 430:
+#line 2433 "objc-parse.y"
+{
+ objc_interface_context
+ = start_class (CATEGORY_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
+ continue_class (objc_interface_context);
+ ;
+ break;}
+case 431:
+#line 2440 "objc-parse.y"
+{
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+case 432:
+#line 2446 "objc-parse.y"
+{
+ objc_implementation_context
+ = start_class (CATEGORY_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+case 433:
+#line 2456 "objc-parse.y"
+{
+ remember_protocol_qualifiers ();
+ objc_interface_context
+ = start_protocol(PROTOCOL_INTERFACE_TYPE, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 434:
+#line 2462 "objc-parse.y"
+{
+ forget_protocol_qualifiers();
+ finish_protocol(objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+case 435:
+#line 2471 "objc-parse.y"
+{
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+case 437:
+#line 2479 "objc-parse.y"
+{
+ if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR)
+ yyval.ttype = yyvsp[-1].ttype;
+ else
+ YYERROR1;
+ ;
+ break;}
+case 440:
+#line 2493 "objc-parse.y"
+{ objc_public_flag = 2; ;
+ break;}
+case 441:
+#line 2494 "objc-parse.y"
+{ objc_public_flag = 0; ;
+ break;}
+case 442:
+#line 2495 "objc-parse.y"
+{ objc_public_flag = 1; ;
+ break;}
+case 443:
+#line 2500 "objc-parse.y"
+{
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+case 445:
+#line 2505 "objc-parse.y"
+{
+ if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified");
+ ;
+ break;}
+case 446:
+#line 2523 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 447:
+#line 2529 "objc-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+case 448:
+#line 2535 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 449:
+#line 2540 "objc-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+ break;}
+case 452:
+#line 2547 "objc-parse.y"
+{
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+ yyvsp[0].ttype, current_declspecs,
+ NULL_TREE);
+ ;
+ break;}
+case 453:
+#line 2554 "objc-parse.y"
+{
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+ yyvsp[-2].ttype, current_declspecs, yyvsp[0].ttype);
+ ;
+ break;}
+case 454:
+#line 2560 "objc-parse.y"
+{
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+ NULL_TREE,
+ current_declspecs, yyvsp[0].ttype);
+ ;
+ break;}
+case 455:
+#line 2570 "objc-parse.y"
+{
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+ objc_inherit_code = CLASS_METHOD_DECL;
+ else
+ fatal ("method definition not in class context");
+ ;
+ break;}
+case 456:
+#line 2578 "objc-parse.y"
+{
+ forget_protocol_qualifiers ();
+ add_class_method (objc_implementation_context, yyvsp[0].ttype);
+ start_method_def (yyvsp[0].ttype);
+ objc_method_context = yyvsp[0].ttype;
+ ;
+ break;}
+case 457:
+#line 2585 "objc-parse.y"
+{
+ continue_method_def ();
+ ;
+ break;}
+case 458:
+#line 2589 "objc-parse.y"
+{
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ ;
+ break;}
+case 459:
+#line 2595 "objc-parse.y"
+{
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+ objc_inherit_code = INSTANCE_METHOD_DECL;
+ else
+ fatal ("method definition not in class context");
+ ;
+ break;}
+case 460:
+#line 2603 "objc-parse.y"
+{
+ forget_protocol_qualifiers ();
+ add_instance_method (objc_implementation_context, yyvsp[0].ttype);
+ start_method_def (yyvsp[0].ttype);
+ objc_method_context = yyvsp[0].ttype;
+ ;
+ break;}
+case 461:
+#line 2610 "objc-parse.y"
+{
+ continue_method_def ();
+ ;
+ break;}
+case 462:
+#line 2614 "objc-parse.y"
+{
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ ;
+ break;}
+case 464:
+#line 2626 "objc-parse.y"
+{yyval.ttype = NULL_TREE; ;
+ break;}
+case 469:
+#line 2633 "objc-parse.y"
+{yyval.ttype = NULL_TREE; ;
+ break;}
+case 473:
+#line 2643 "objc-parse.y"
+{
+ objc_inherit_code = CLASS_METHOD_DECL;
+ ;
+ break;}
+case 474:
+#line 2647 "objc-parse.y"
+{
+ add_class_method (objc_interface_context, yyvsp[0].ttype);
+ ;
+ break;}
+case 476:
+#line 2653 "objc-parse.y"
+{
+ objc_inherit_code = INSTANCE_METHOD_DECL;
+ ;
+ break;}
+case 477:
+#line 2657 "objc-parse.y"
+{
+ add_instance_method (objc_interface_context, yyvsp[0].ttype);
+ ;
+ break;}
+case 479:
+#line 2665 "objc-parse.y"
+{
+ yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
+ ;
+ break;}
+case 480:
+#line 2670 "objc-parse.y"
+{
+ yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ ;
+ break;}
+case 481:
+#line 2675 "objc-parse.y"
+{
+ yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 482:
+#line 2680 "objc-parse.y"
+{
+ yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 491:
+#line 2710 "objc-parse.y"
+{ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+case 492:
+#line 2715 "objc-parse.y"
+{ shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+case 493:
+#line 2717 "objc-parse.y"
+{ pedwarn ("empty declaration"); ;
+ break;}
+case 494:
+#line 2722 "objc-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+case 495:
+#line 2724 "objc-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+case 496:
+#line 2732 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+case 497:
+#line 2737 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+case 498:
+#line 2742 "objc-parse.y"
+{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+case 499:
+#line 2750 "objc-parse.y"
+{
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+case 500:
+#line 2754 "objc-parse.y"
+{
+ /* oh what a kludge! */
+ yyval.ttype = (tree)1;
+ ;
+ break;}
+case 501:
+#line 2759 "objc-parse.y"
+{
+ pushlevel (0);
+ ;
+ break;}
+case 502:
+#line 2763 "objc-parse.y"
+{
+ /* returns a tree list node generated by get_parm_info */
+ yyval.ttype = yyvsp[0].ttype;
+ poplevel (0, 0, 0);
+ ;
+ break;}
+case 505:
+#line 2778 "objc-parse.y"
+{
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 510:
+#line 2791 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 511:
+#line 2792 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 512:
+#line 2793 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 513:
+#line 2794 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 514:
+#line 2795 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 515:
+#line 2796 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 516:
+#line 2797 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 517:
+#line 2798 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 518:
+#line 2799 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 519:
+#line 2800 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 520:
+#line 2801 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 521:
+#line 2802 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 522:
+#line 2803 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 523:
+#line 2804 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 524:
+#line 2805 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 525:
+#line 2806 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 526:
+#line 2807 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 527:
+#line 2808 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 528:
+#line 2809 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+case 531:
+#line 2815 "objc-parse.y"
+{
+ yyval.ttype = build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 532:
+#line 2820 "objc-parse.y"
+{
+ yyval.ttype = build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+case 533:
+#line 2825 "objc-parse.y"
+{
+ yyval.ttype = build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 534:
+#line 2830 "objc-parse.y"
+{
+ yyval.ttype = build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+case 538:
+#line 2843 "objc-parse.y"
+{
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 539:
+#line 2851 "objc-parse.y"
+{
+ if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE)
+ /* just return the expr., remove a level of indirection */
+ yyval.ttype = TREE_VALUE (yyvsp[0].ttype);
+ else
+ /* we have a comma expr., we will collapse later */
+ yyval.ttype = yyvsp[0].ttype;
+ ;
+ break;}
+case 540:
+#line 2863 "objc-parse.y"
+{
+ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 541:
+#line 2867 "objc-parse.y"
+{
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+case 543:
+#line 2875 "objc-parse.y"
+{
+ yyval.ttype = get_class_reference (yyvsp[0].ttype);
+ ;
+ break;}
+case 544:
+#line 2882 "objc-parse.y"
+{ objc_receiver_context = 1; ;
+ break;}
+case 545:
+#line 2884 "objc-parse.y"
+{ objc_receiver_context = 0; ;
+ break;}
+case 546:
+#line 2886 "objc-parse.y"
+{
+ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype);
+ ;
+ break;}
+case 550:
+#line 2899 "objc-parse.y"
+{
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+case 551:
+#line 2906 "objc-parse.y"
+{
+ yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE);
+ ;
+ break;}
+case 552:
+#line 2910 "objc-parse.y"
+{
+ yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE);
+ ;
+ break;}
+case 553:
+#line 2917 "objc-parse.y"
+{
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 554:
+#line 2924 "objc-parse.y"
+{
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+case 555:
+#line 2933 "objc-parse.y"
+{
+ yyval.ttype = groktypename (yyvsp[-1].ttype);
+ ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 487 "/usr/local/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 2938 "objc-parse.y"
+
diff --git a/gcc/objc/objc-parse.y b/gcc/objc/objc-parse.y
new file mode 100644
index 00000000000..e06359919fb
--- /dev/null
+++ b/gcc/objc/objc-parse.y
@@ -0,0 +1,2938 @@
+/*WARNING: This file is automatically generated!*/
+/* YACC parser for C syntax and for Objective C. -*-c-*-
+ Copyright (C) 1987, 88, 89, 92-6, 1997 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This file defines the grammar of C and that of Objective C.
+ ifobjc ... end ifobjc conditionals contain code for Objective C only.
+ ifc ... end ifc conditionals contain code for C only.
+ Sed commands in Makefile.in are used to convert this file into
+ c-parse.y and into objc-parse.y. */
+
+/* To whomever it may concern: I have heard that such a thing was once
+ written by AT&T, but I have never seen it. */
+
+%expect 66
+
+%{
+#include <stdio.h>
+#include <errno.h>
+#include <setjmp.h>
+
+#include "config.h"
+#include "tree.h"
+#include "input.h"
+#include "c-lex.h"
+#include "c-tree.h"
+#include "flags.h"
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+#include "objc-act.h"
+
+/* Since parsers are distinct for each language, put the language string
+ definition here. */
+char *language_string = "GNU Obj-C";
+
+#ifndef errno
+extern int errno;
+#endif
+
+void yyerror ();
+
+/* Like YYERROR but do call yyerror. */
+#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
+
+/* Cause the `yydebug' variable to be defined. */
+#define YYDEBUG 1
+%}
+
+%start program
+
+%union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; }
+
+/* All identifiers that are not reserved words
+ and are not declared typedefs in the current block */
+%token IDENTIFIER
+
+/* All identifiers that are declared typedefs in the current block.
+ In some contexts, they are treated just like IDENTIFIER,
+ but they can also serve as typespecs in declarations. */
+%token TYPENAME
+
+/* Reserved words that specify storage class.
+ yylval contains an IDENTIFIER_NODE which indicates which one. */
+%token SCSPEC
+
+/* Reserved words that specify type.
+ yylval contains an IDENTIFIER_NODE which indicates which one. */
+%token TYPESPEC
+
+/* Reserved words that qualify type: "const" or "volatile".
+ yylval contains an IDENTIFIER_NODE which indicates which one. */
+%token TYPE_QUAL
+
+/* Character or numeric constants.
+ yylval is the node for the constant. */
+%token CONSTANT
+
+/* String constants in raw form.
+ yylval is a STRING_CST node. */
+%token STRING
+
+/* "...", used for functions with variable arglists. */
+%token ELLIPSIS
+
+/* the reserved words */
+/* SCO include files test "ASM", so use something else. */
+%token SIZEOF ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT
+%token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF
+%token ATTRIBUTE EXTENSION LABEL
+%token REALPART IMAGPART
+
+/* Add precedence rules to solve dangling else s/r conflict */
+%nonassoc IF
+%nonassoc ELSE
+
+/* Define the operator tokens and their precedences.
+ The value is an integer because, if used, it is the tree code
+ to use in the expression made from the operator. */
+
+%right <code> ASSIGN '='
+%right <code> '?' ':'
+%left <code> OROR
+%left <code> ANDAND
+%left <code> '|'
+%left <code> '^'
+%left <code> '&'
+%left <code> EQCOMPARE
+%left <code> ARITHCOMPARE
+%left <code> LSHIFT RSHIFT
+%left <code> '+' '-'
+%left <code> '*' '/' '%'
+%right <code> UNARY PLUSPLUS MINUSMINUS
+%left HYPERUNARY
+%left <code> POINTSAT '.' '(' '['
+
+/* The Objective-C keywords. These are included in C and in
+ Objective C, so that the token codes are the same in both. */
+%token INTERFACE IMPLEMENTATION END SELECTOR DEFS ENCODE
+%token CLASSNAME PUBLIC PRIVATE PROTECTED PROTOCOL OBJECTNAME CLASS ALIAS
+
+/* Objective-C string constants in raw form.
+ yylval is an OBJC_STRING_CST node. */
+%token OBJC_STRING
+
+
+%type <code> unop
+
+%type <ttype> identifier IDENTIFIER TYPENAME CONSTANT expr nonnull_exprlist exprlist
+%type <ttype> expr_no_commas cast_expr unary_expr primary string STRING
+%type <ttype> typed_declspecs reserved_declspecs
+%type <ttype> typed_typespecs reserved_typespecquals
+%type <ttype> declmods typespec typespecqual_reserved
+%type <ttype> typed_declspecs_no_prefix_attr reserved_declspecs_no_prefix_attr
+%type <ttype> declmods_no_prefix_attr
+%type <ttype> SCSPEC TYPESPEC TYPE_QUAL nonempty_type_quals maybe_type_qual
+%type <ttype> initdecls notype_initdecls initdcl notype_initdcl
+%type <ttype> init maybeasm
+%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+%type <ttype> maybe_attribute attributes attribute attribute_list attrib
+%type <ttype> any_word
+
+%type <ttype> compstmt
+
+%type <ttype> declarator
+%type <ttype> notype_declarator after_type_declarator
+%type <ttype> parm_declarator
+
+%type <ttype> structsp component_decl_list component_decl_list2
+%type <ttype> component_decl components component_declarator
+%type <ttype> enumlist enumerator
+%type <ttype> typename absdcl absdcl1 type_quals
+%type <ttype> xexpr parms parm identifiers
+
+%type <ttype> parmlist parmlist_1 parmlist_2
+%type <ttype> parmlist_or_identifiers parmlist_or_identifiers_1
+%type <ttype> identifiers_or_typenames
+
+%type <itype> setspecs
+
+%type <ends_in_label> lineno_stmt_or_label lineno_stmt_or_labels stmt_or_label
+
+%type <filename> save_filename
+%type <lineno> save_lineno
+
+/* the Objective-C nonterminals */
+
+%type <ttype> ivar_decl_list ivar_decls ivar_decl ivars ivar_declarator
+%type <ttype> methoddecl unaryselector keywordselector selector
+%type <ttype> keyworddecl receiver objcmessageexpr messageargs
+%type <ttype> keywordexpr keywordarglist keywordarg
+%type <ttype> myparms myparm optparmlist reservedwords objcselectorexpr
+%type <ttype> selectorarg keywordnamelist keywordname objcencodeexpr
+%type <ttype> objc_string non_empty_protocolrefs protocolrefs identifier_list objcprotocolexpr
+
+%type <ttype> CLASSNAME OBJC_STRING OBJECTNAME
+
+%{
+/* Number of statements (loosely speaking) seen so far. */
+static int stmt_count;
+
+/* Input file and line number of the end of the body of last simple_if;
+ used by the stmt-rule immediately after simple_if returns. */
+static char *if_stmt_file;
+static int if_stmt_line;
+
+/* List of types and structure classes of the current declaration. */
+static tree current_declspecs = NULL_TREE;
+static tree prefix_attributes = NULL_TREE;
+
+/* Stack of saved values of current_declspecs and prefix_attributes. */
+static tree declspec_stack;
+
+/* 1 if we explained undeclared var errors. */
+static int undeclared_variable_notice;
+
+/* Objective-C specific information */
+
+tree objc_interface_context;
+tree objc_implementation_context;
+tree objc_method_context;
+tree objc_ivar_chain;
+tree objc_ivar_context;
+enum tree_code objc_inherit_code;
+int objc_receiver_context;
+int objc_public_flag;
+
+
+/* Tell yyparse how to print a token's value, if yydebug is set. */
+
+#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
+extern void yyprint ();
+%}
+
+%%
+program: /* empty */
+ { if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ }
+ | extdefs
+ {
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+ while (! global_bindings_p ())
+ poplevel (0, 0, 0);
+ finish_file ();
+ }
+ ;
+
+/* the reason for the strange actions in this rule
+ is so that notype_initdecls when reached via datadef
+ can find a valid list of type and sc specs in $0. */
+
+extdefs:
+ {$<ttype>$ = NULL_TREE; } extdef
+ | extdefs {$<ttype>$ = NULL_TREE; } extdef
+ ;
+
+extdef:
+ fndef
+ | datadef
+ | objcdef
+ | ASM_KEYWORD '(' expr ')' ';'
+ { STRIP_NOPS ($3);
+ if ((TREE_CODE ($3) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND ($3, 0)) == STRING_CST)
+ || TREE_CODE ($3) == STRING_CST)
+ assemble_asm ($3);
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+ { pedantic = $<itype>1; }
+ ;
+
+datadef:
+ setspecs notype_initdecls ';'
+ { if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+ warning ("data definition has no type or storage class");
+
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($1); }
+ | declmods setspecs notype_initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | typed_declspecs ';'
+ { shadow_tag ($1); }
+ | error ';'
+ | error '}'
+ | ';'
+ { if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); }
+ ;
+
+fndef:
+ typed_declspecs setspecs declarator
+ { if (! start_function (current_declspecs, $3,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+ compstmt_or_error
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs declarator error
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_declarator
+ { if (! start_function (current_declspecs, $3,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+ compstmt_or_error
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_declarator error
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | setspecs notype_declarator
+ { if (! start_function (NULL_TREE, $2,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+ compstmt_or_error
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($1); }
+ | setspecs notype_declarator error
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($1); }
+ ;
+
+identifier:
+ IDENTIFIER
+ | TYPENAME
+ | OBJECTNAME
+ | CLASSNAME
+ ;
+
+unop: '&'
+ { $$ = ADDR_EXPR; }
+ | '-'
+ { $$ = NEGATE_EXPR; }
+ | '+'
+ { $$ = CONVERT_EXPR; }
+ | PLUSPLUS
+ { $$ = PREINCREMENT_EXPR; }
+ | MINUSMINUS
+ { $$ = PREDECREMENT_EXPR; }
+ | '~'
+ { $$ = BIT_NOT_EXPR; }
+ | '!'
+ { $$ = TRUTH_NOT_EXPR; }
+ ;
+
+expr: nonnull_exprlist
+ { $$ = build_compound_expr ($1); }
+ ;
+
+exprlist:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | nonnull_exprlist
+ ;
+
+nonnull_exprlist:
+ expr_no_commas
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | nonnull_exprlist ',' expr_no_commas
+ { chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+unary_expr:
+ primary
+ | '*' cast_expr %prec UNARY
+ { $$ = build_indirect_ref ($2, "unary *"); }
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+ pedantic = $<itype>1; }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+ /* Refer to the address of a label as a pointer. */
+ | ANDAND identifier
+ { tree label = lookup_label ($2);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+ if (label == 0)
+ $$ = null_pointer_node;
+ else
+ {
+ TREE_USED (label) = 1;
+ $$ = build1 (ADDR_EXPR, ptr_type_node, label);
+ TREE_CONSTANT ($$) = 1;
+ }
+ }
+/* This seems to be impossible on some machines, so let's turn it off.
+ You can use __builtin_next_arg to find the anonymous stack args.
+ | '&' ELLIPSIS
+ { tree types = TYPE_ARG_TYPES (TREE_TYPE (current_function_decl));
+ $$ = error_mark_node;
+ if (TREE_VALUE (tree_last (types)) == void_type_node)
+ error ("`&...' used in function with fixed number of arguments");
+ else
+ {
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&...'");
+ $$ = tree_last (DECL_ARGUMENTS (current_function_decl));
+ $$ = build_unary_op (ADDR_EXPR, $$, 0);
+ } }
+*/
+ | sizeof unary_expr %prec UNARY
+ { skip_evaluation--;
+ if (TREE_CODE ($2) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND ($2, 1)))
+ error ("`sizeof' applied to a bit-field");
+ $$ = c_sizeof (TREE_TYPE ($2)); }
+ | sizeof '(' typename ')' %prec HYPERUNARY
+ { skip_evaluation--;
+ $$ = c_sizeof (groktypename ($3)); }
+ | alignof unary_expr %prec UNARY
+ { skip_evaluation--;
+ $$ = c_alignof_expr ($2); }
+ | alignof '(' typename ')' %prec HYPERUNARY
+ { skip_evaluation--;
+ $$ = c_alignof (groktypename ($3)); }
+ | REALPART cast_expr %prec UNARY
+ { $$ = build_unary_op (REALPART_EXPR, $2, 0); }
+ | IMAGPART cast_expr %prec UNARY
+ { $$ = build_unary_op (IMAGPART_EXPR, $2, 0); }
+ ;
+
+sizeof:
+ SIZEOF { skip_evaluation++; }
+ ;
+
+alignof:
+ ALIGNOF { skip_evaluation++; }
+ ;
+
+cast_expr:
+ unary_expr
+ | '(' typename ')' cast_expr %prec UNARY
+ { tree type = groktypename ($2);
+ $$ = build_c_cast (type, $4); }
+ | '(' typename ')' '{'
+ { start_init (NULL_TREE, NULL, 0);
+ $2 = groktypename ($2);
+ really_start_incremental_init ($2); }
+ initlist_maybe_comma '}' %prec UNARY
+ { char *name;
+ tree result = pop_init_level (0);
+ tree type = $2;
+ finish_init ();
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids constructor expressions");
+ if (TYPE_NAME (type) != 0)
+ {
+ if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
+ name = IDENTIFIER_POINTER (TYPE_NAME (type));
+ else
+ name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
+ }
+ else
+ name = "";
+ $$ = result;
+ if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
+ {
+ int failure = complete_array_type (type, $$, 1);
+ if (failure)
+ abort ();
+ }
+ }
+ ;
+
+expr_no_commas:
+ cast_expr
+ | expr_no_commas '+' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '-' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '*' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '/' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '%' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas LSHIFT expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas RSHIFT expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas ARITHCOMPARE expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas EQCOMPARE expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '&' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '|' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas '^' expr_no_commas
+ { $$ = parser_build_binary_op ($2, $1, $3); }
+ | expr_no_commas ANDAND
+ { $1 = truthvalue_conversion (default_conversion ($1));
+ skip_evaluation += $1 == boolean_false_node; }
+ expr_no_commas
+ { skip_evaluation -= $1 == boolean_false_node;
+ $$ = parser_build_binary_op (TRUTH_ANDIF_EXPR, $1, $4); }
+ | expr_no_commas OROR
+ { $1 = truthvalue_conversion (default_conversion ($1));
+ skip_evaluation += $1 == boolean_true_node; }
+ expr_no_commas
+ { skip_evaluation -= $1 == boolean_true_node;
+ $$ = parser_build_binary_op (TRUTH_ORIF_EXPR, $1, $4); }
+ | expr_no_commas '?'
+ { $1 = truthvalue_conversion (default_conversion ($1));
+ skip_evaluation += $1 == boolean_false_node; }
+ expr ':'
+ { skip_evaluation += (($1 == boolean_true_node)
+ - ($1 == boolean_false_node)); }
+ expr_no_commas
+ { skip_evaluation -= $1 == boolean_true_node;
+ $$ = build_conditional_expr ($1, $4, $7); }
+ | expr_no_commas '?'
+ { if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+ $<ttype>2 = save_expr ($1);
+ $1 = truthvalue_conversion (default_conversion ($<ttype>2));
+ skip_evaluation += $1 == boolean_true_node; }
+ ':' expr_no_commas
+ { skip_evaluation -= $1 == boolean_true_node;
+ $$ = build_conditional_expr ($1, $<ttype>2, $5); }
+ | expr_no_commas '=' expr_no_commas
+ { $$ = build_modify_expr ($1, NOP_EXPR, $3);
+ C_SET_EXP_ORIGINAL_CODE ($$, MODIFY_EXPR); }
+ | expr_no_commas ASSIGN expr_no_commas
+ { $$ = build_modify_expr ($1, $2, $3);
+ /* This inhibits warnings in truthvalue_conversion. */
+ C_SET_EXP_ORIGINAL_CODE ($$, ERROR_MARK); }
+ ;
+
+primary:
+ IDENTIFIER
+ {
+ $$ = lastiddecl;
+ if (!$$ || $$ == error_mark_node)
+ {
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ tree decl;
+
+ if (objc_receiver_context
+ && ! (objc_receiver_context
+ && strcmp (IDENTIFIER_POINTER ($1), "super")))
+ /* we have a message to super */
+ $$ = get_super_receiver ();
+ else if (objc_method_context
+ && (decl = is_ivar (objc_ivar_chain, $1)))
+ {
+ if (is_private (decl))
+ $$ = error_mark_node;
+ else
+ $$ = build_ivar_reference ($1);
+ }
+ else
+ {
+ /* Ordinary implicit function declaration. */
+ $$ = implicitly_declare ($1);
+ assemble_external ($$);
+ TREE_USED ($$) = 1;
+ }
+ }
+ else if (current_function_decl == 0)
+ {
+ error ("`%s' undeclared here (not in a function)",
+ IDENTIFIER_POINTER ($1));
+ $$ = error_mark_node;
+ }
+ else
+ {
+ tree decl;
+
+ if (objc_receiver_context
+ && ! strcmp (IDENTIFIER_POINTER ($1), "super"))
+ /* we have a message to super */
+ $$ = get_super_receiver ();
+ else if (objc_method_context
+ && (decl = is_ivar (objc_ivar_chain, $1)))
+ {
+ if (is_private (decl))
+ $$ = error_mark_node;
+ else
+ $$ = build_ivar_reference ($1);
+ }
+ else
+ {
+ if (IDENTIFIER_GLOBAL_VALUE ($1) != error_mark_node
+ || IDENTIFIER_ERROR_LOCUS ($1) != current_function_decl)
+ {
+ error ("`%s' undeclared (first use this function)",
+ IDENTIFIER_POINTER ($1));
+
+ if (! undeclared_variable_notice)
+ {
+ error ("(Each undeclared identifier is reported only once");
+ error ("for each function it appears in.)");
+ undeclared_variable_notice = 1;
+ }
+ }
+ $$ = error_mark_node;
+ /* Prevent repeated error messages. */
+ IDENTIFIER_GLOBAL_VALUE ($1) = error_mark_node;
+ IDENTIFIER_ERROR_LOCUS ($1) = current_function_decl;
+ }
+ }
+ }
+ else if (TREE_TYPE ($$) == error_mark_node)
+ $$ = error_mark_node;
+ else if (C_DECL_ANTICIPATED ($$))
+ {
+ /* The first time we see a build-in function used,
+ if it has not been declared. */
+ C_DECL_ANTICIPATED ($$) = 0;
+ if (yychar == YYEMPTY)
+ yychar = YYLEX;
+ if (yychar == '(')
+ {
+ /* Omit the implicit declaration we
+ would ordinarily do, so we don't lose
+ the actual built in type.
+ But print a diagnostic for the mismatch. */
+ if (objc_method_context
+ && is_ivar (objc_ivar_chain, $1))
+ error ("Instance variable `%s' implicitly declared as function",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+ else
+ if (TREE_CODE ($$) != FUNCTION_DECL)
+ error ("`%s' implicitly declared as function",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+ else if ((TYPE_MODE (TREE_TYPE (TREE_TYPE ($$)))
+ != TYPE_MODE (integer_type_node))
+ && (TREE_TYPE (TREE_TYPE ($$))
+ != void_type_node))
+ pedwarn ("type mismatch in implicit declaration for built-in function `%s'",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+ /* If it really returns void, change that to int. */
+ if (TREE_TYPE (TREE_TYPE ($$)) == void_type_node)
+ TREE_TYPE ($$)
+ = build_function_type (integer_type_node,
+ TYPE_ARG_TYPES (TREE_TYPE ($$)));
+ }
+ else
+ pedwarn ("built-in function `%s' used without declaration",
+ IDENTIFIER_POINTER (DECL_NAME ($$)));
+
+ /* Do what we would ordinarily do when a fn is used. */
+ assemble_external ($$);
+ TREE_USED ($$) = 1;
+ }
+ else
+ {
+ assemble_external ($$);
+ TREE_USED ($$) = 1;
+ /* we have a definition - still check if iVariable */
+
+ if (!objc_receiver_context
+ || (objc_receiver_context
+ && strcmp (IDENTIFIER_POINTER ($1), "super")))
+ {
+ tree decl;
+
+ if (objc_method_context
+ && (decl = is_ivar (objc_ivar_chain, $1)))
+ {
+ if (IDENTIFIER_LOCAL_VALUE ($1))
+ warning ("local declaration of `%s' hides instance variable",
+ IDENTIFIER_POINTER ($1));
+ else
+ {
+ if (is_private (decl))
+ $$ = error_mark_node;
+ else
+ $$ = build_ivar_reference ($1);
+ }
+ }
+ }
+ else /* we have a message to super */
+ $$ = get_super_receiver ();
+ }
+
+ if (TREE_CODE ($$) == CONST_DECL)
+ {
+ $$ = DECL_INITIAL ($$);
+ /* This is to prevent an enum whose value is 0
+ from being considered a null pointer constant. */
+ $$ = build1 (NOP_EXPR, TREE_TYPE ($$), $$);
+ TREE_CONSTANT ($$) = 1;
+ }
+ }
+ | CONSTANT
+ | string
+ { $$ = combine_strings ($1); }
+ | '(' expr ')'
+ { char class = TREE_CODE_CLASS (TREE_CODE ($2));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+ C_SET_EXP_ORIGINAL_CODE ($2, ERROR_MARK);
+ $$ = $2; }
+ | '(' error ')'
+ { $$ = error_mark_node; }
+ | '('
+ { if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+ YYERROR;
+ }
+ /* We must force a BLOCK for this level
+ so that, if it is not expanded later,
+ there is a way to turn off the entire subtree of blocks
+ that are contained in it. */
+ keep_next_level ();
+ push_iterator_stack ();
+ push_label_level ();
+ $<ttype>$ = expand_start_stmt_expr (); }
+ compstmt ')'
+ { tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+ pop_iterator_stack ();
+ pop_label_level ();
+ rtl_exp = expand_end_stmt_expr ($<ttype>2);
+ /* The statements have side effects, so the group does. */
+ TREE_SIDE_EFFECTS (rtl_exp) = 1;
+
+ if (TREE_CODE ($3) == BLOCK)
+ {
+ /* Make a BIND_EXPR for the BLOCK already made. */
+ $$ = build (BIND_EXPR, TREE_TYPE (rtl_exp),
+ NULL_TREE, rtl_exp, $3);
+ /* Remove the block from the tree at this point.
+ It gets put back at the proper place
+ when the BIND_EXPR is expanded. */
+ delete_block ($3);
+ }
+ else
+ $$ = $3;
+ }
+ | primary '(' exprlist ')' %prec '.'
+ { $$ = build_function_call ($1, $3); }
+ | primary '[' expr ']' %prec '.'
+ { $$ = build_array_ref ($1, $3); }
+ | primary '.' identifier
+ {
+ if (doing_objc_thang)
+ {
+ if (is_public ($1, $3))
+ $$ = build_component_ref ($1, $3);
+ else
+ $$ = error_mark_node;
+ }
+ else
+ $$ = build_component_ref ($1, $3);
+ }
+ | primary POINTSAT identifier
+ {
+ tree expr = build_indirect_ref ($1, "->");
+
+ if (doing_objc_thang)
+ {
+ if (is_public (expr, $3))
+ $$ = build_component_ref (expr, $3);
+ else
+ $$ = error_mark_node;
+ }
+ else
+ $$ = build_component_ref (expr, $3);
+ }
+ | primary PLUSPLUS
+ { $$ = build_unary_op (POSTINCREMENT_EXPR, $1, 0); }
+ | primary MINUSMINUS
+ { $$ = build_unary_op (POSTDECREMENT_EXPR, $1, 0); }
+ | objcmessageexpr
+ { $$ = build_message_expr ($1); }
+ | objcselectorexpr
+ { $$ = build_selector_expr ($1); }
+ | objcprotocolexpr
+ { $$ = build_protocol_expr ($1); }
+ | objcencodeexpr
+ { $$ = build_encode_expr ($1); }
+ | objc_string
+ { $$ = build_objc_string_object ($1); }
+ ;
+
+/* Produces a STRING_CST with perhaps more STRING_CSTs chained onto it. */
+string:
+ STRING
+ | string STRING
+ { $$ = chainon ($1, $2); }
+ ;
+
+/* Produces an OBJC_STRING_CST with perhaps more OBJC_STRING_CSTs chained
+ onto it. */
+objc_string:
+ OBJC_STRING
+ | objc_string OBJC_STRING
+ { $$ = chainon ($1, $2); }
+ ;
+
+old_style_parm_decls:
+ /* empty */
+ | datadecls
+ | datadecls ELLIPSIS
+ /* ... is used here to indicate a varargs function. */
+ { c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); }
+ ;
+
+/* The following are analogous to lineno_decl, decls and decl
+ except that they do not allow nested functions.
+ They are used for old-style parm decls. */
+lineno_datadecl:
+ save_filename save_lineno datadecl
+ { }
+ ;
+
+datadecls:
+ lineno_datadecl
+ | errstmt
+ | datadecls lineno_datadecl
+ | lineno_datadecl errstmt
+ ;
+
+/* We don't allow prefix attributes here because they cause reduce/reduce
+ conflicts: we can't know whether we're parsing a function decl with
+ attribute suffix, or function defn with attribute prefix on first old
+ style parm. */
+datadecl:
+ typed_declspecs_no_prefix_attr setspecs initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods_no_prefix_attr setspecs notype_initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs_no_prefix_attr ';'
+ { shadow_tag_warned ($1, 1);
+ pedwarn ("empty declaration"); }
+ | declmods_no_prefix_attr ';'
+ { pedwarn ("empty declaration"); }
+ ;
+
+/* This combination which saves a lineno before a decl
+ is the normal thing to use, rather than decl itself.
+ This is to avoid shift/reduce conflicts in contexts
+ where statement labels are allowed. */
+lineno_decl:
+ save_filename save_lineno decl
+ { }
+ ;
+
+decls:
+ lineno_decl
+ | errstmt
+ | decls lineno_decl
+ | lineno_decl errstmt
+ ;
+
+/* records the type and storage class specs to use for processing
+ the declarators that follow.
+ Maintains a stack of outer-level values of current_declspecs,
+ for the sake of parm declarations nested in function declarators. */
+setspecs: /* empty */
+ { $$ = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+ current_declspecs,
+ declspec_stack);
+ split_specs_attrs ($<ttype>0,
+ &current_declspecs, &prefix_attributes); }
+ ;
+
+/* ??? Yuck. See after_type_declarator. */
+setattrs: /* empty */
+ { prefix_attributes = chainon (prefix_attributes, $<ttype>0); }
+ ;
+
+decl:
+ typed_declspecs setspecs initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_initdecls ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs nested_function
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_nested_function
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs ';'
+ { shadow_tag ($1); }
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+ { pedantic = $<itype>1; }
+ ;
+
+/* Declspecs which contain at least one type specifier or typedef name.
+ (Just `const' or `volatile' is not enough.)
+ A typedef'd name following these is taken as a name to be declared.
+ Declspecs have a non-NULL TREE_VALUE, attributes do not. */
+
+typed_declspecs:
+ typespec reserved_declspecs
+ { $$ = tree_cons (NULL_TREE, $1, $2); }
+ | declmods typespec reserved_declspecs
+ { $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }
+ ;
+
+reserved_declspecs: /* empty */
+ { $$ = NULL_TREE; }
+ | reserved_declspecs typespecqual_reserved
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ | reserved_declspecs SCSPEC
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER ($2));
+ $$ = tree_cons (NULL_TREE, $2, $1); }
+ | reserved_declspecs attributes
+ { $$ = tree_cons ($2, NULL_TREE, $1); }
+ ;
+
+typed_declspecs_no_prefix_attr:
+ typespec reserved_declspecs_no_prefix_attr
+ { $$ = tree_cons (NULL_TREE, $1, $2); }
+ | declmods_no_prefix_attr typespec reserved_declspecs_no_prefix_attr
+ { $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }
+ ;
+
+reserved_declspecs_no_prefix_attr:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | reserved_declspecs_no_prefix_attr typespecqual_reserved
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ | reserved_declspecs_no_prefix_attr SCSPEC
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER ($2));
+ $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+/* List of just storage classes, type modifiers, and prefix attributes.
+ A declaration can start with just this, but then it cannot be used
+ to redeclare a typedef-name.
+ Declspecs have a non-NULL TREE_VALUE, attributes do not. */
+
+declmods:
+ declmods_no_prefix_attr
+ { $$ = $1; }
+ | attributes
+ { $$ = tree_cons ($1, NULL_TREE, NULL_TREE); }
+ | declmods declmods_no_prefix_attr
+ { $$ = chainon ($2, $1); }
+ | declmods attributes
+ { $$ = tree_cons ($2, NULL_TREE, $1); }
+ ;
+
+declmods_no_prefix_attr:
+ TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $1, NULL_TREE);
+ TREE_STATIC ($$) = 1; }
+ | SCSPEC
+ { $$ = tree_cons (NULL_TREE, $1, NULL_TREE); }
+ | declmods_no_prefix_attr TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $2, $1);
+ TREE_STATIC ($$) = 1; }
+ | declmods_no_prefix_attr SCSPEC
+ { if (extra_warnings && TREE_STATIC ($1))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER ($2));
+ $$ = tree_cons (NULL_TREE, $2, $1);
+ TREE_STATIC ($$) = TREE_STATIC ($1); }
+ ;
+
+
+/* Used instead of declspecs where storage classes are not allowed
+ (that is, for typenames and structure components).
+ Don't accept a typedef-name if anything but a modifier precedes it. */
+
+typed_typespecs:
+ typespec reserved_typespecquals
+ { $$ = tree_cons (NULL_TREE, $1, $2); }
+ | nonempty_type_quals typespec reserved_typespecquals
+ { $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }
+ ;
+
+reserved_typespecquals: /* empty */
+ { $$ = NULL_TREE; }
+ | reserved_typespecquals typespecqual_reserved
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+/* A typespec (but not a type qualifier).
+ Once we have seen one of these in a declaration,
+ if a typedef name appears then it is being redeclared. */
+
+typespec: TYPESPEC
+ | structsp
+ | TYPENAME
+ { /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ $$ = lookup_name ($1); }
+ | CLASSNAME protocolrefs
+ { $$ = get_static_reference ($1, $2); }
+ | OBJECTNAME protocolrefs
+ { $$ = get_object_reference ($2); }
+
+/* Make "<SomeProtocol>" equivalent to "id <SomeProtocol>"
+ - nisse@lysator.liu.se */
+ | non_empty_protocolrefs
+ { $$ = get_object_reference ($1); }
+ | TYPEOF '(' expr ')'
+ { $$ = TREE_TYPE ($3); }
+ | TYPEOF '(' typename ')'
+ { $$ = groktypename ($3); }
+ ;
+
+/* A typespec that is a reserved word, or a type qualifier. */
+
+typespecqual_reserved: TYPESPEC
+ | TYPE_QUAL
+ | structsp
+ ;
+
+initdecls:
+ initdcl
+ | initdecls ',' initdcl
+ ;
+
+notype_initdecls:
+ notype_initdcl
+ | notype_initdecls ',' initdcl
+ ;
+
+maybeasm:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | ASM_KEYWORD '(' string ')'
+ { if (TREE_CHAIN ($3)) $3 = combine_strings ($3);
+ $$ = $3;
+ }
+ ;
+
+initdcl:
+ declarator maybeasm maybe_attribute '='
+ { $<ttype>$ = start_decl ($1, current_declspecs, 1,
+ $3, prefix_attributes);
+ start_init ($<ttype>$, $2, global_bindings_p ()); }
+ init
+/* Note how the declaration of the variable is in effect while its init is parsed! */
+ { finish_init ();
+ finish_decl ($<ttype>5, $6, $2); }
+ | declarator maybeasm maybe_attribute
+ { tree d = start_decl ($1, current_declspecs, 0,
+ $3, prefix_attributes);
+ finish_decl (d, NULL_TREE, $2);
+ }
+ ;
+
+notype_initdcl:
+ notype_declarator maybeasm maybe_attribute '='
+ { $<ttype>$ = start_decl ($1, current_declspecs, 1,
+ $3, prefix_attributes);
+ start_init ($<ttype>$, $2, global_bindings_p ()); }
+ init
+/* Note how the declaration of the variable is in effect while its init is parsed! */
+ { finish_init ();
+ decl_attributes ($<ttype>5, $3, prefix_attributes);
+ finish_decl ($<ttype>5, $6, $2); }
+ | notype_declarator maybeasm maybe_attribute
+ { tree d = start_decl ($1, current_declspecs, 0,
+ $3, prefix_attributes);
+ finish_decl (d, NULL_TREE, $2); }
+ ;
+/* the * rules are dummies to accept the Apollo extended syntax
+ so that the header files compile. */
+maybe_attribute:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | attributes
+ { $$ = $1; }
+ ;
+
+attributes:
+ attribute
+ { $$ = $1; }
+ | attributes attribute
+ { $$ = chainon ($1, $2); }
+ ;
+
+attribute:
+ ATTRIBUTE '(' '(' attribute_list ')' ')'
+ { $$ = $4; }
+ ;
+
+attribute_list:
+ attrib
+ { $$ = $1; }
+ | attribute_list ',' attrib
+ { $$ = chainon ($1, $3); }
+ ;
+
+attrib:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | any_word
+ { $$ = build_tree_list ($1, NULL_TREE); }
+ | any_word '(' IDENTIFIER ')'
+ { $$ = build_tree_list ($1, build_tree_list (NULL_TREE, $3)); }
+ | any_word '(' IDENTIFIER ',' nonnull_exprlist ')'
+ { $$ = build_tree_list ($1, tree_cons (NULL_TREE, $3, $5)); }
+ | any_word '(' exprlist ')'
+ { $$ = build_tree_list ($1, $3); }
+ ;
+
+/* This still leaves out most reserved keywords,
+ shouldn't we include them? */
+
+any_word:
+ identifier
+ | SCSPEC
+ | TYPESPEC
+ | TYPE_QUAL
+ ;
+
+/* Initializers. `init' is the entry point. */
+
+init:
+ expr_no_commas
+ | '{'
+ { really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); }
+ initlist_maybe_comma '}'
+ { $$ = pop_init_level (0);
+ if ($$ == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+ pop_momentary ();
+ else
+ pop_momentary_nofree (); }
+
+ | error
+ { $$ = error_mark_node; }
+ ;
+
+/* `initlist_maybe_comma' is the guts of an initializer in braces. */
+initlist_maybe_comma:
+ /* empty */
+ { if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); }
+ | initlist1 maybecomma
+ ;
+
+initlist1:
+ initelt
+ | initlist1 ',' initelt
+ ;
+
+/* `initelt' is a single element of an initializer.
+ It may use braces. */
+initelt:
+ expr_no_commas
+ { process_init_element ($1); }
+ | '{'
+ { push_init_level (0); }
+ initlist_maybe_comma '}'
+ { process_init_element (pop_init_level (0)); }
+ | error
+ /* These are for labeled elements. The syntax for an array element
+ initializer conflicts with the syntax for an Objective-C message,
+ so don't include these productions in the Objective-C grammar. */
+ | identifier ':'
+ { set_init_label ($1); }
+ initelt
+ | '.' identifier '='
+ { set_init_label ($2); }
+ initelt
+ ;
+
+nested_function:
+ declarator
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, $1,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+/* This used to use compstmt_or_error.
+ That caused a bug with input `f(g) int g {}',
+ where the use of YYERROR1 above caused an error
+ which then was handled by compstmt_or_error.
+ There followed a repeated execution of that same rule,
+ which called YYERROR1 again, and so on. */
+ compstmt
+ { finish_function (1);
+ pop_c_function_context (); }
+ ;
+
+notype_nested_function:
+ notype_declarator
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, $1,
+ prefix_attributes, NULL_TREE, 1))
+ {
+ pop_c_function_context ();
+ YYERROR1;
+ }
+ reinit_parse_for_function (); }
+ old_style_parm_decls
+ { store_parm_decls (); }
+/* This used to use compstmt_or_error.
+ That caused a bug with input `f(g) int g {}',
+ where the use of YYERROR1 above caused an error
+ which then was handled by compstmt_or_error.
+ There followed a repeated execution of that same rule,
+ which called YYERROR1 again, and so on. */
+ compstmt
+ { finish_function (1);
+ pop_c_function_context (); }
+ ;
+
+/* Any kind of declarator (thus, all declarators allowed
+ after an explicit typespec). */
+
+declarator:
+ after_type_declarator
+ | notype_declarator
+ ;
+
+/* A declarator that is allowed only after an explicit typespec. */
+
+after_type_declarator:
+ '(' after_type_declarator ')'
+ { $$ = $2; }
+ | after_type_declarator '(' parmlist_or_identifiers %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+/* | after_type_declarator '(' error ')' %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
+ poplevel (0, 0, 0); } */
+ | after_type_declarator '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | after_type_declarator '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ | '*' type_quals after_type_declarator %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ /* ??? Yuck. setattrs is a quick hack. We can't use
+ prefix_attributes because $1 only applies to this
+ declarator. We assume setspecs has already been done.
+ setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple
+ attributes could be recognized here or in `attributes'). */
+ | attributes setattrs after_type_declarator
+ { $$ = $3; }
+ | TYPENAME
+ | OBJECTNAME
+ ;
+
+/* Kinds of declarator that can appear in a parameter list
+ in addition to notype_declarator. This is like after_type_declarator
+ but does not allow a typedef name in parentheses as an identifier
+ (because it would conflict with a function with that typedef as arg). */
+
+parm_declarator:
+ parm_declarator '(' parmlist_or_identifiers %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+/* | parm_declarator '(' error ')' %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
+ poplevel (0, 0, 0); } */
+ | parm_declarator '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | parm_declarator '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ | '*' type_quals parm_declarator %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ /* ??? Yuck. setattrs is a quick hack. We can't use
+ prefix_attributes because $1 only applies to this
+ declarator. We assume setspecs has already been done.
+ setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple
+ attributes could be recognized here or in `attributes'). */
+ | attributes setattrs parm_declarator
+ { $$ = $3; }
+ | TYPENAME
+ ;
+
+/* A declarator allowed whether or not there has been
+ an explicit typespec. These cannot redeclare a typedef-name. */
+
+notype_declarator:
+ notype_declarator '(' parmlist_or_identifiers %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+/* | notype_declarator '(' error ')' %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
+ poplevel (0, 0, 0); } */
+ | '(' notype_declarator ')'
+ { $$ = $2; }
+ | '*' type_quals notype_declarator %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ | notype_declarator '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | notype_declarator '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ /* ??? Yuck. setattrs is a quick hack. We can't use
+ prefix_attributes because $1 only applies to this
+ declarator. We assume setspecs has already been done.
+ setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple
+ attributes could be recognized here or in `attributes'). */
+ | attributes setattrs notype_declarator
+ { $$ = $3; }
+ | IDENTIFIER
+ ;
+
+structsp:
+ STRUCT identifier '{'
+ { $$ = start_struct (RECORD_TYPE, $2);
+ /* Start scope of tag before parsing components. */
+ }
+ component_decl_list '}' maybe_attribute
+ { $$ = finish_struct ($<ttype>4, $5, $7); }
+ | STRUCT '{' component_decl_list '}' maybe_attribute
+ { $$ = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ $3, $5);
+ }
+ | STRUCT identifier
+ { $$ = xref_tag (RECORD_TYPE, $2); }
+ | UNION identifier '{'
+ { $$ = start_struct (UNION_TYPE, $2); }
+ component_decl_list '}' maybe_attribute
+ { $$ = finish_struct ($<ttype>4, $5, $7); }
+ | UNION '{' component_decl_list '}' maybe_attribute
+ { $$ = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ $3, $5);
+ }
+ | UNION identifier
+ { $$ = xref_tag (UNION_TYPE, $2); }
+ | ENUM identifier '{'
+ { $<itype>3 = suspend_momentary ();
+ $$ = start_enum ($2); }
+ enumlist maybecomma_warn '}' maybe_attribute
+ { $$ = finish_enum ($<ttype>4, nreverse ($5), $8);
+ resume_momentary ($<itype>3); }
+ | ENUM '{'
+ { $<itype>2 = suspend_momentary ();
+ $$ = start_enum (NULL_TREE); }
+ enumlist maybecomma_warn '}' maybe_attribute
+ { $$ = finish_enum ($<ttype>3, nreverse ($4), $7);
+ resume_momentary ($<itype>2); }
+ | ENUM identifier
+ { $$ = xref_tag (ENUMERAL_TYPE, $2); }
+ ;
+
+maybecomma:
+ /* empty */
+ | ','
+ ;
+
+maybecomma_warn:
+ /* empty */
+ | ','
+ { if (pedantic) pedwarn ("comma at end of enumerator list"); }
+ ;
+
+component_decl_list:
+ component_decl_list2
+ { $$ = $1; }
+ | component_decl_list2 component_decl
+ { $$ = chainon ($1, $2);
+ pedwarn ("no semicolon at end of struct or union"); }
+ ;
+
+component_decl_list2: /* empty */
+ { $$ = NULL_TREE; }
+ | component_decl_list2 component_decl ';'
+ { $$ = chainon ($1, $2); }
+ | component_decl_list2 ';'
+ { if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); }
+ /* foo(sizeof(struct{ @defs(ClassName)})); */
+ | DEFS '(' CLASSNAME ')'
+ {
+ tree interface = lookup_interface ($3);
+
+ if (interface)
+ $$ = get_class_ivars (interface);
+ else
+ {
+ error ("Cannot find interface declaration for `%s'",
+ IDENTIFIER_POINTER ($3));
+ $$ = NULL_TREE;
+ }
+ }
+ ;
+
+/* There is a shift-reduce conflict here, because `components' may
+ start with a `typename'. It happens that shifting (the default resolution)
+ does the right thing, because it treats the `typename' as part of
+ a `typed_typespecs'.
+
+ It is possible that this same technique would allow the distinction
+ between `notype_initdecls' and `initdecls' to be eliminated.
+ But I am being cautious and not trying it. */
+
+component_decl:
+ typed_typespecs setspecs components
+ { $$ = $3;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_typespecs
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag($1);
+ $$ = NULL_TREE; }
+ | nonempty_type_quals setspecs components
+ { $$ = $3;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | nonempty_type_quals
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag($1);
+ $$ = NULL_TREE; }
+ | error
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+ pedantic = $<itype>1; }
+ ;
+
+components:
+ component_declarator
+ | components ',' component_declarator
+ { $$ = chainon ($1, $3); }
+ ;
+
+component_declarator:
+ save_filename save_lineno declarator maybe_attribute
+ { $$ = grokfield ($1, $2, $3, current_declspecs, NULL_TREE);
+ decl_attributes ($$, $4, prefix_attributes); }
+ | save_filename save_lineno
+ declarator ':' expr_no_commas maybe_attribute
+ { $$ = grokfield ($1, $2, $3, current_declspecs, $5);
+ decl_attributes ($$, $6, prefix_attributes); }
+ | save_filename save_lineno ':' expr_no_commas maybe_attribute
+ { $$ = grokfield ($1, $2, NULL_TREE, current_declspecs, $4);
+ decl_attributes ($$, $5, prefix_attributes); }
+ ;
+
+/* We chain the enumerators in reverse order.
+ They are put in forward order where enumlist is used.
+ (The order used to be significant, but no longer is so.
+ However, we still maintain the order, just to be clean.) */
+
+enumlist:
+ enumerator
+ | enumlist ',' enumerator
+ { if ($1 == error_mark_node)
+ $$ = $1;
+ else
+ $$ = chainon ($3, $1); }
+ | error
+ { $$ = error_mark_node; }
+ ;
+
+
+enumerator:
+ identifier
+ { $$ = build_enumerator ($1, NULL_TREE); }
+ | identifier '=' expr_no_commas
+ { $$ = build_enumerator ($1, $3); }
+ ;
+
+typename:
+ typed_typespecs absdcl
+ { $$ = build_tree_list ($1, $2); }
+ | nonempty_type_quals absdcl
+ { $$ = build_tree_list ($1, $2); }
+ ;
+
+absdcl: /* an absolute declarator */
+ /* empty */
+ { $$ = NULL_TREE; }
+ | absdcl1
+ ;
+
+nonempty_type_quals:
+ TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $1, NULL_TREE); }
+ | nonempty_type_quals TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+type_quals:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | type_quals TYPE_QUAL
+ { $$ = tree_cons (NULL_TREE, $2, $1); }
+ ;
+
+absdcl1: /* a nonempty absolute declarator */
+ '(' absdcl1 ')'
+ { $$ = $2; }
+ /* `(typedef)1' is `int'. */
+ | '*' type_quals absdcl1 %prec UNARY
+ { $$ = make_pointer_declarator ($2, $3); }
+ | '*' type_quals %prec UNARY
+ { $$ = make_pointer_declarator ($2, NULL_TREE); }
+ | absdcl1 '(' parmlist %prec '.'
+ { $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }
+ | absdcl1 '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, $3); }
+ | absdcl1 '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }
+ | '(' parmlist %prec '.'
+ { $$ = build_nt (CALL_EXPR, NULL_TREE, $2, NULL_TREE); }
+ | '[' expr ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, NULL_TREE, $2); }
+ | '[' ']' %prec '.'
+ { $$ = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); }
+ /* ??? It appears we have to support attributes here, however
+ using prefix_attributes is wrong. */
+ ;
+
+/* at least one statement, the first of which parses without error. */
+/* stmts is used only after decls, so an invalid first statement
+ is actually regarded as an invalid decl and part of the decls. */
+
+stmts:
+ lineno_stmt_or_labels
+ {
+ if (pedantic && $1)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ }
+ ;
+
+lineno_stmt_or_labels:
+ lineno_stmt_or_label
+ | lineno_stmt_or_labels lineno_stmt_or_label
+ { $$ = $2; }
+ | lineno_stmt_or_labels errstmt
+ { $$ = 0; }
+ ;
+
+xstmts:
+ /* empty */
+ | stmts
+ ;
+
+errstmt: error ';'
+ ;
+
+pushlevel: /* empty */
+ { emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+ push_momentary ();
+ expand_start_bindings (0);
+ if (objc_method_context)
+ add_objc_decls ();
+ }
+ ;
+
+/* Read zero or more forward-declarations for labels
+ that nested functions can jump to. */
+maybe_label_decls:
+ /* empty */
+ | label_decls
+ { if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); }
+ ;
+
+label_decls:
+ label_decl
+ | label_decls label_decl
+ ;
+
+label_decl:
+ LABEL identifiers_or_typenames ';'
+ { tree link;
+ for (link = $2; link; link = TREE_CHAIN (link))
+ {
+ tree label = shadow_label (TREE_VALUE (link));
+ C_DECLARED_LABEL_FLAG (label) = 1;
+ declare_nonlocal_label (label);
+ }
+ }
+ ;
+
+/* This is the body of a function definition.
+ It causes syntax errors to ignore to the next openbrace. */
+compstmt_or_error:
+ compstmt
+ {}
+ | error compstmt
+ ;
+
+compstmt: '{' '}'
+ { $$ = convert (void_type_node, integer_zero_node); }
+ | '{' pushlevel maybe_label_decls decls xstmts '}'
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ $$ = poplevel (1, 1, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ | '{' pushlevel maybe_label_decls error '}'
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ $$ = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ | '{' pushlevel maybe_label_decls stmts '}'
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ $$ = poplevel (kept_level_p (), 0, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ ;
+
+/* Value is number of statements counted as of the closeparen. */
+simple_if:
+ if_prefix lineno_labeled_stmt
+/* Make sure expand_end_cond is run once
+ for each call to expand_start_cond.
+ Otherwise a crash is likely. */
+ | if_prefix error
+ ;
+
+if_prefix:
+ IF '(' expr ')'
+ { emit_line_note ($<filename>-1, $<lineno>0);
+ expand_start_cond (truthvalue_conversion ($3), 0);
+ $<itype>$ = stmt_count;
+ if_stmt_file = $<filename>-1;
+ if_stmt_line = $<lineno>0;
+ position_after_white_space (); }
+ ;
+
+/* This is a subroutine of stmt.
+ It is used twice, once for valid DO statements
+ and once for catching errors in parsing the end test. */
+do_stmt_start:
+ DO
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ expand_start_loop_continue_elsewhere (1);
+ position_after_white_space (); }
+ lineno_labeled_stmt WHILE
+ { expand_loop_continue_here (); }
+ ;
+
+save_filename:
+ { $$ = input_filename; }
+ ;
+
+save_lineno:
+ { $$ = lineno; }
+ ;
+
+lineno_labeled_stmt:
+ save_filename save_lineno stmt
+ { }
+/* | save_filename save_lineno error
+ { }
+*/
+ | save_filename save_lineno label lineno_labeled_stmt
+ { }
+ ;
+
+lineno_stmt_or_label:
+ save_filename save_lineno stmt_or_label
+ { $$ = $3; }
+ ;
+
+stmt_or_label:
+ stmt
+ { $$ = 0; }
+ | label
+ { $$ = 1; }
+ ;
+
+/* Parse a single real statement, not including any labels. */
+stmt:
+ compstmt
+ { stmt_count++; }
+ | all_iter_stmt
+ | expr ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+/* It appears that this should not be done--that a non-lvalue array
+ shouldn't get an error if the value isn't used.
+ Section 3.2.2.1 says that an array lvalue gets converted to a pointer
+ if it appears as a top-level expression,
+ but says nothing about non-lvalue arrays. */
+#if 0
+ /* Call default_conversion to get an error
+ on referring to a register array if pedantic. */
+ if (TREE_CODE (TREE_TYPE ($1)) == ARRAY_TYPE
+ || TREE_CODE (TREE_TYPE ($1)) == FUNCTION_TYPE)
+ $1 = default_conversion ($1);
+#endif
+ iterator_expand ($1);
+ clear_momentary (); }
+ | simple_if ELSE
+ { expand_start_else ();
+ $<itype>1 = stmt_count;
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { expand_end_cond ();
+ if (extra_warnings && stmt_count == $<itype>1)
+ warning ("empty body in an else-statement"); }
+ | simple_if %prec IF
+ { expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+ else statement. Increment stmt_count so we don't
+ give a second error if this is a nested `if'. */
+ if (extra_warnings && stmt_count++ == $<itype>1)
+ warning_with_file_and_line (if_stmt_file, if_stmt_line,
+ "empty body in an if-statement"); }
+/* Make sure expand_end_cond is run once
+ for each call to expand_start_cond.
+ Otherwise a crash is likely. */
+ | simple_if ELSE error
+ { expand_end_cond (); }
+ | WHILE
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ /* The emit_nop used to come before emit_line_note,
+ but that made the nop seem like part of the preceding line.
+ And that was confusing when the preceding line was
+ inside of an if statement and was not really executed.
+ I think it ought to work to put the nop after the line number.
+ We will see. --rms, July 15, 1991. */
+ emit_nop (); }
+ '(' expr ')'
+ { /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+ expand_start_loop (1);
+ emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion ($4));
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { expand_end_loop (); }
+ | do_stmt_start
+ '(' expr ')' ';'
+ { emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion ($3));
+ expand_end_loop ();
+ clear_momentary (); }
+/* This rule is needed to make sure we end every loop we start. */
+ | do_stmt_start error
+ { expand_end_loop ();
+ clear_momentary (); }
+ | FOR
+ '(' xexpr ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ /* See comment in `while' alternative, above. */
+ emit_nop ();
+ if ($3) c_expand_expr_stmt ($3);
+ /* Next step is to call expand_start_loop_continue_elsewhere,
+ but wait till after we parse the entire for (...).
+ Otherwise, invalid input might cause us to call that
+ fn without calling expand_end_loop. */
+ }
+ xexpr ';'
+ /* Can't emit now; wait till after expand_start_loop... */
+ { $<lineno>7 = lineno;
+ $<filename>$ = input_filename; }
+ xexpr ')'
+ {
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+ expand_start_loop_continue_elsewhere (1);
+ /* Emit the end-test, with a line number. */
+ emit_line_note ($<filename>8, $<lineno>7);
+ if ($6)
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion ($6));
+ /* Don't let the tree nodes for $9 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ $<lineno>7 = lineno;
+ $<filename>8 = input_filename;
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { /* Emit the increment expression, with a line number. */
+ emit_line_note ($<filename>8, $<lineno>7);
+ expand_loop_continue_here ();
+ if ($9)
+ c_expand_expr_stmt ($9);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary ();
+ expand_end_loop (); }
+ | SWITCH '(' expr ')'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_start_case ($3);
+ /* Don't let the tree nodes for $3 be discarded by
+ clear_momentary during the parsing of the next stmt. */
+ push_momentary ();
+ position_after_white_space (); }
+ lineno_labeled_stmt
+ { expand_end_case ($3);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary (); }
+ | BREAK ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); }
+ | CONTINUE ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); }
+ | RETURN ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_return (NULL_TREE); }
+ | RETURN expr ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_return ($2); }
+ | ASM_KEYWORD maybe_type_qual '(' expr ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ STRIP_NOPS ($4);
+ if ((TREE_CODE ($4) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND ($4, 0)) == STRING_CST)
+ || TREE_CODE ($4) == STRING_CST)
+ expand_asm ($4);
+ else
+ error ("argument of `asm' is not a constant string"); }
+ /* This is the case with just output operands. */
+ | ASM_KEYWORD maybe_type_qual '(' expr ':' asm_operands ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_asm_operands ($4, $6, NULL_TREE, NULL_TREE,
+ $2 == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); }
+ /* This is the case with input operands as well. */
+ | ASM_KEYWORD maybe_type_qual '(' expr ':' asm_operands ':' asm_operands ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_asm_operands ($4, $6, $8, NULL_TREE,
+ $2 == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); }
+ /* This is the case with clobbered registers as well. */
+ | ASM_KEYWORD maybe_type_qual '(' expr ':' asm_operands ':'
+ asm_operands ':' asm_clobbers ')' ';'
+ { stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ c_expand_asm_operands ($4, $6, $8, $10,
+ $2 == ridpointers[(int)RID_VOLATILE],
+ input_filename, lineno); }
+ | GOTO identifier ';'
+ { tree decl;
+ stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ decl = lookup_label ($2);
+ if (decl != 0)
+ {
+ TREE_USED (decl) = 1;
+ expand_goto (decl);
+ }
+ }
+ | GOTO '*' expr ';'
+ { if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+ emit_line_note ($<filename>-1, $<lineno>0);
+ expand_computed_goto (convert (ptr_type_node, $3)); }
+ | ';'
+ ;
+
+all_iter_stmt:
+ all_iter_stmt_simple
+/* | all_iter_stmt_with_decl */
+ ;
+
+all_iter_stmt_simple:
+ FOR '(' primary ')'
+ {
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+ /* 0 in case of error or already bound iterator */
+
+ $<itype>$ = 0;
+ if (TREE_CODE ($3) != VAR_DECL)
+ error ("invalid `for (ITERATOR)' syntax");
+ else if (! ITERATOR_P ($3))
+ error ("`%s' is not an iterator",
+ IDENTIFIER_POINTER (DECL_NAME ($3)));
+ else if (ITERATOR_BOUND_P ($3))
+ error ("`for (%s)' inside expansion of same iterator",
+ IDENTIFIER_POINTER (DECL_NAME ($3)));
+ else
+ {
+ $<itype>$ = 1;
+ iterator_for_loop_start ($3);
+ }
+ }
+ lineno_labeled_stmt
+ {
+ if ($<itype>5)
+ iterator_for_loop_end ($3);
+ }
+
+/* This really should allow any kind of declaration,
+ for generality. Fix it before turning it back on.
+
+all_iter_stmt_with_decl:
+ FOR '(' ITERATOR pushlevel setspecs iterator_spec ')'
+ {
+*/ /* The value returned by this action is */
+ /* 1 if everything is OK */
+ /* 0 in case of error or already bound iterator */
+/*
+ iterator_for_loop_start ($6);
+ }
+ lineno_labeled_stmt
+ {
+ iterator_for_loop_end ($6);
+ emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ $<ttype>$ = poplevel (1, 1, 0);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+ else
+ pop_momentary ();
+ }
+*/
+
+/* Any kind of label, including jump labels and case labels.
+ ANSI C accepts labels only before statements, but we allow them
+ also at the end of a compound statement. */
+
+label: CASE expr_no_commas ':'
+ { register tree value = check_case_value ($2);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ stmt_count++;
+
+ if (value != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase (value, convert_and_check,
+ label, &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); }
+ | CASE expr_no_commas ELLIPSIS expr_no_commas ':'
+ { register tree value1 = check_case_value ($2);
+ register tree value2 = check_case_value ($4);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ if (pedantic)
+ pedwarn ("ANSI C forbids case ranges");
+ stmt_count++;
+
+ if (value1 != error_mark_node && value2 != error_mark_node)
+ {
+ tree duplicate;
+ int success = pushcase_range (value1, value2,
+ convert_and_check, label,
+ &duplicate);
+ if (success == 1)
+ error ("case label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("duplicate case value");
+ error_with_decl (duplicate, "this is the first entry for that value");
+ }
+ else if (success == 3)
+ warning ("case value out of range");
+ else if (success == 4)
+ warning ("empty case range");
+ else if (success == 5)
+ error ("case label within scope of cleanup or variable array");
+ }
+ position_after_white_space (); }
+ | DEFAULT ':'
+ {
+ tree duplicate;
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+ int success = pushcase (NULL_TREE, 0, label, &duplicate);
+ stmt_count++;
+ if (success == 1)
+ error ("default label not within a switch statement");
+ else if (success == 2)
+ {
+ error ("multiple default labels in one switch");
+ error_with_decl (duplicate, "this is the first default label");
+ }
+ position_after_white_space (); }
+ | identifier ':'
+ { tree label = define_label (input_filename, lineno, $1);
+ stmt_count++;
+ emit_nop ();
+ if (label)
+ expand_label (label);
+ position_after_white_space (); }
+ ;
+
+/* Either a type-qualifier or nothing. First thing in an `asm' statement. */
+
+maybe_type_qual:
+ /* empty */
+ { emit_line_note (input_filename, lineno);
+ $$ = NULL_TREE; }
+ | TYPE_QUAL
+ { emit_line_note (input_filename, lineno); }
+ ;
+
+xexpr:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | expr
+ ;
+
+/* These are the operands other than the first string and colon
+ in asm ("addextend %2,%1": "=dm" (x), "0" (y), "g" (*x)) */
+asm_operands: /* empty */
+ { $$ = NULL_TREE; }
+ | nonnull_asm_operands
+ ;
+
+nonnull_asm_operands:
+ asm_operand
+ | nonnull_asm_operands ',' asm_operand
+ { $$ = chainon ($1, $3); }
+ ;
+
+asm_operand:
+ STRING '(' expr ')'
+ { $$ = build_tree_list ($1, $3); }
+ ;
+
+asm_clobbers:
+ string
+ { $$ = tree_cons (NULL_TREE, combine_strings ($1), NULL_TREE); }
+ | asm_clobbers ',' string
+ { $$ = tree_cons (NULL_TREE, combine_strings ($3), $1); }
+ ;
+
+/* This is what appears inside the parens in a function declarator.
+ Its value is a list of ..._TYPE nodes. */
+parmlist:
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); }
+ parmlist_1
+ { $$ = $2;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); }
+ ;
+
+parmlist_1:
+ parmlist_2 ')'
+ | parms ';'
+ { tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+ /* Mark the forward decls as such. */
+ for (parm = getdecls (); parm; parm = TREE_CHAIN (parm))
+ TREE_ASM_WRITTEN (parm) = 1;
+ clear_parm_order (); }
+ parmlist_1
+ { $$ = $4; }
+ | error ')'
+ { $$ = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); }
+ ;
+
+/* This is what appears inside the parens in a function declarator.
+ Is value is represented in the format that grokdeclarator expects. */
+parmlist_2: /* empty */
+ { $$ = get_parm_info (0); }
+ | ELLIPSIS
+ { $$ = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+ Also, since func (...) and func () are indistinguishable,
+ it caused problems with the code in expand_builtin which
+ tries to verify that BUILT_IN_NEXT_ARG is being used
+ correctly. */
+ error ("ANSI C requires a named argument before `...'");
+ }
+ | parms
+ { $$ = get_parm_info (1); }
+ | parms ',' ELLIPSIS
+ { $$ = get_parm_info (0); }
+ ;
+
+parms:
+ parm
+ { push_parm_decl ($1); }
+ | parms ',' parm
+ { push_parm_decl ($3); }
+ ;
+
+/* A single parameter declaration or parameter type name,
+ as found in a parmlist. */
+parm:
+ typed_declspecs setspecs parm_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs notype_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs setspecs absdcl maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | declmods setspecs notype_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+
+ | declmods setspecs absdcl maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $3),
+ build_tree_list (prefix_attributes,
+ $4));
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ ;
+
+/* This is used in a function definition
+ where either a parmlist or an identifier list is ok.
+ Its value is a list of ..._TYPE nodes or a list of identifiers. */
+parmlist_or_identifiers:
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); }
+ parmlist_or_identifiers_1
+ { $$ = $2;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); }
+ ;
+
+parmlist_or_identifiers_1:
+ parmlist_1
+ | identifiers ')'
+ { tree t;
+ for (t = $1; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+ error ("`...' in old-style identifier list");
+ $$ = tree_cons (NULL_TREE, NULL_TREE, $1); }
+ ;
+
+/* A nonempty list of identifiers. */
+identifiers:
+ IDENTIFIER
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | identifiers ',' IDENTIFIER
+ { $$ = chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+/* A nonempty list of identifiers, including typenames. */
+identifiers_or_typenames:
+ identifier
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | identifiers_or_typenames ',' identifier
+ { $$ = chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+extension:
+ EXTENSION
+ { $<itype>$ = pedantic;
+ pedantic = 0; }
+ ;
+
+/* Objective-C productions. */
+
+objcdef:
+ classdef
+ | classdecl
+ | aliasdecl
+ | protocoldef
+ | methoddef
+ | END
+ {
+ if (objc_implementation_context)
+ {
+ finish_class (objc_implementation_context);
+ objc_ivar_chain = NULL_TREE;
+ objc_implementation_context = NULL_TREE;
+ }
+ else
+ warning ("`@end' must appear in an implementation context");
+ }
+ ;
+
+/* A nonempty list of identifiers. */
+identifier_list:
+ identifier
+ { $$ = build_tree_list (NULL_TREE, $1); }
+ | identifier_list ',' identifier
+ { $$ = chainon ($1, build_tree_list (NULL_TREE, $3)); }
+ ;
+
+classdecl:
+ CLASS identifier_list ';'
+ {
+ objc_declare_class ($2);
+ }
+
+aliasdecl:
+ ALIAS identifier identifier ';'
+ {
+ objc_declare_alias ($2, $3);
+ }
+
+classdef:
+ INTERFACE identifier protocolrefs '{'
+ {
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, $2, NULL_TREE, $3);
+ objc_public_flag = 0;
+ }
+ ivar_decl_list '}'
+ {
+ continue_class (objc_interface_context);
+ }
+ methodprotolist
+ END
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ }
+
+ | INTERFACE identifier protocolrefs
+ {
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, $2, NULL_TREE, $3);
+ continue_class (objc_interface_context);
+ }
+ methodprotolist
+ END
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ }
+
+ | INTERFACE identifier ':' identifier protocolrefs '{'
+ {
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, $2, $4, $5);
+ objc_public_flag = 0;
+ }
+ ivar_decl_list '}'
+ {
+ continue_class (objc_interface_context);
+ }
+ methodprotolist
+ END
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ }
+
+ | INTERFACE identifier ':' identifier protocolrefs
+ {
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, $2, $4, $5);
+ continue_class (objc_interface_context);
+ }
+ methodprotolist
+ END
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ }
+
+ | IMPLEMENTATION identifier '{'
+ {
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, $2, NULL_TREE, NULL_TREE);
+ objc_public_flag = 0;
+ }
+ ivar_decl_list '}'
+ {
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ }
+
+ | IMPLEMENTATION identifier
+ {
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, $2, NULL_TREE, NULL_TREE);
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ }
+
+ | IMPLEMENTATION identifier ':' identifier '{'
+ {
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, $2, $4, NULL_TREE);
+ objc_public_flag = 0;
+ }
+ ivar_decl_list '}'
+ {
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ }
+
+ | IMPLEMENTATION identifier ':' identifier
+ {
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, $2, $4, NULL_TREE);
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ }
+
+ | INTERFACE identifier '(' identifier ')' protocolrefs
+ {
+ objc_interface_context
+ = start_class (CATEGORY_INTERFACE_TYPE, $2, $4, $6);
+ continue_class (objc_interface_context);
+ }
+ methodprotolist
+ END
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ }
+
+ | IMPLEMENTATION identifier '(' identifier ')'
+ {
+ objc_implementation_context
+ = start_class (CATEGORY_IMPLEMENTATION_TYPE, $2, $4, NULL_TREE);
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ }
+ ;
+
+protocoldef:
+ PROTOCOL identifier protocolrefs
+ {
+ remember_protocol_qualifiers ();
+ objc_interface_context
+ = start_protocol(PROTOCOL_INTERFACE_TYPE, $2, $3);
+ }
+ methodprotolist END
+ {
+ forget_protocol_qualifiers();
+ finish_protocol(objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ }
+ ;
+
+protocolrefs:
+ /* empty */
+ {
+ $$ = NULL_TREE;
+ }
+ | non_empty_protocolrefs
+ ;
+
+non_empty_protocolrefs:
+ ARITHCOMPARE identifier_list ARITHCOMPARE
+ {
+ if ($1 == LT_EXPR && $3 == GT_EXPR)
+ $$ = $2;
+ else
+ YYERROR1;
+ }
+ ;
+
+ivar_decl_list:
+ ivar_decl_list visibility_spec ivar_decls
+ | ivar_decls
+ ;
+
+visibility_spec:
+ PRIVATE { objc_public_flag = 2; }
+ | PROTECTED { objc_public_flag = 0; }
+ | PUBLIC { objc_public_flag = 1; }
+ ;
+
+ivar_decls:
+ /* empty */
+ {
+ $$ = NULL_TREE;
+ }
+ | ivar_decls ivar_decl ';'
+ | ivar_decls ';'
+ {
+ if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified");
+ }
+ ;
+
+
+/* There is a shift-reduce conflict here, because `components' may
+ start with a `typename'. It happens that shifting (the default resolution)
+ does the right thing, because it treats the `typename' as part of
+ a `typed_typespecs'.
+
+ It is possible that this same technique would allow the distinction
+ between `notype_initdecls' and `initdecls' to be eliminated.
+ But I am being cautious and not trying it. */
+
+ivar_decl:
+ typed_typespecs setspecs ivars
+ { $$ = $3;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | nonempty_type_quals setspecs ivars
+ { $$ = $3;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | error
+ { $$ = NULL_TREE; }
+ ;
+
+ivars:
+ /* empty */
+ { $$ = NULL_TREE; }
+ | ivar_declarator
+ | ivars ',' ivar_declarator
+ ;
+
+ivar_declarator:
+ declarator
+ {
+ $$ = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+ $1, current_declspecs,
+ NULL_TREE);
+ }
+ | declarator ':' expr_no_commas
+ {
+ $$ = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+ $1, current_declspecs, $3);
+ }
+ | ':' expr_no_commas
+ {
+ $$ = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+ NULL_TREE,
+ current_declspecs, $2);
+ }
+ ;
+
+methoddef:
+ '+'
+ {
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+ objc_inherit_code = CLASS_METHOD_DECL;
+ else
+ fatal ("method definition not in class context");
+ }
+ methoddecl
+ {
+ forget_protocol_qualifiers ();
+ add_class_method (objc_implementation_context, $3);
+ start_method_def ($3);
+ objc_method_context = $3;
+ }
+ optarglist
+ {
+ continue_method_def ();
+ }
+ compstmt_or_error
+ {
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ }
+
+ | '-'
+ {
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+ objc_inherit_code = INSTANCE_METHOD_DECL;
+ else
+ fatal ("method definition not in class context");
+ }
+ methoddecl
+ {
+ forget_protocol_qualifiers ();
+ add_instance_method (objc_implementation_context, $3);
+ start_method_def ($3);
+ objc_method_context = $3;
+ }
+ optarglist
+ {
+ continue_method_def ();
+ }
+ compstmt_or_error
+ {
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ }
+ ;
+
+/* the reason for the strange actions in this rule
+ is so that notype_initdecls when reached via datadef
+ can find a valid list of type and sc specs in $0. */
+
+methodprotolist:
+ /* empty */
+ | {$<ttype>$ = NULL_TREE; } methodprotolist2
+ ;
+
+methodprotolist2: /* eliminates a shift/reduce conflict */
+ methodproto
+ | datadef
+ | methodprotolist2 methodproto
+ | methodprotolist2 {$<ttype>$ = NULL_TREE; } datadef
+ ;
+
+semi_or_error:
+ ';'
+ | error
+ ;
+
+methodproto:
+ '+'
+ {
+ objc_inherit_code = CLASS_METHOD_DECL;
+ }
+ methoddecl
+ {
+ add_class_method (objc_interface_context, $3);
+ }
+ semi_or_error
+
+ | '-'
+ {
+ objc_inherit_code = INSTANCE_METHOD_DECL;
+ }
+ methoddecl
+ {
+ add_instance_method (objc_interface_context, $3);
+ }
+ semi_or_error
+ ;
+
+methoddecl:
+ '(' typename ')' unaryselector
+ {
+ $$ = build_method_decl (objc_inherit_code, $2, $4, NULL_TREE);
+ }
+
+ | unaryselector
+ {
+ $$ = build_method_decl (objc_inherit_code, NULL_TREE, $1, NULL_TREE);
+ }
+
+ | '(' typename ')' keywordselector optparmlist
+ {
+ $$ = build_method_decl (objc_inherit_code, $2, $4, $5);
+ }
+
+ | keywordselector optparmlist
+ {
+ $$ = build_method_decl (objc_inherit_code, NULL_TREE, $1, $2);
+ }
+ ;
+
+/* "optarglist" assumes that start_method_def has already been called...
+ if it is not, the "xdecls" will not be placed in the proper scope */
+
+optarglist:
+ /* empty */
+ | ';' myxdecls
+ ;
+
+/* to get around the following situation: "int foo (int a) int b; {}" that
+ is synthesized when parsing "- a:a b:b; id c; id d; { ... }" */
+
+myxdecls:
+ /* empty */
+ | mydecls
+ ;
+
+mydecls:
+ mydecl
+ | errstmt
+ | mydecls mydecl
+ | mydecl errstmt
+ ;
+
+mydecl:
+ typed_declspecs setspecs myparms ';'
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary ($2); }
+ | typed_declspecs ';'
+ { shadow_tag ($1); }
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ ;
+
+myparms:
+ myparm
+ { push_parm_decl ($1); }
+ | myparms ',' myparm
+ { push_parm_decl ($3); }
+ ;
+
+/* A single parameter declaration or parameter type name,
+ as found in a parmlist. DOES NOT ALLOW AN INITIALIZER OR ASMSPEC */
+
+myparm:
+ parm_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $1),
+ build_tree_list (prefix_attributes,
+ $2)); }
+ | notype_declarator maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $1),
+ build_tree_list (prefix_attributes,
+ $2)); }
+ | absdcl maybe_attribute
+ { $$ = build_tree_list (build_tree_list (current_declspecs,
+ $1),
+ build_tree_list (prefix_attributes,
+ $2)); }
+ ;
+
+optparmlist:
+ /* empty */
+ {
+ $$ = NULL_TREE;
+ }
+ | ',' ELLIPSIS
+ {
+ /* oh what a kludge! */
+ $$ = (tree)1;
+ }
+ | ','
+ {
+ pushlevel (0);
+ }
+ parmlist_2
+ {
+ /* returns a tree list node generated by get_parm_info */
+ $$ = $3;
+ poplevel (0, 0, 0);
+ }
+ ;
+
+unaryselector:
+ selector
+ ;
+
+keywordselector:
+ keyworddecl
+
+ | keywordselector keyworddecl
+ {
+ $$ = chainon ($1, $2);
+ }
+ ;
+
+selector:
+ IDENTIFIER
+ | TYPENAME
+ | OBJECTNAME
+ | reservedwords
+ ;
+
+reservedwords:
+ ENUM { $$ = get_identifier (token_buffer); }
+ | STRUCT { $$ = get_identifier (token_buffer); }
+ | UNION { $$ = get_identifier (token_buffer); }
+ | IF { $$ = get_identifier (token_buffer); }
+ | ELSE { $$ = get_identifier (token_buffer); }
+ | WHILE { $$ = get_identifier (token_buffer); }
+ | DO { $$ = get_identifier (token_buffer); }
+ | FOR { $$ = get_identifier (token_buffer); }
+ | SWITCH { $$ = get_identifier (token_buffer); }
+ | CASE { $$ = get_identifier (token_buffer); }
+ | DEFAULT { $$ = get_identifier (token_buffer); }
+ | BREAK { $$ = get_identifier (token_buffer); }
+ | CONTINUE { $$ = get_identifier (token_buffer); }
+ | RETURN { $$ = get_identifier (token_buffer); }
+ | GOTO { $$ = get_identifier (token_buffer); }
+ | ASM_KEYWORD { $$ = get_identifier (token_buffer); }
+ | SIZEOF { $$ = get_identifier (token_buffer); }
+ | TYPEOF { $$ = get_identifier (token_buffer); }
+ | ALIGNOF { $$ = get_identifier (token_buffer); }
+ | TYPESPEC | TYPE_QUAL
+ ;
+
+keyworddecl:
+ selector ':' '(' typename ')' identifier
+ {
+ $$ = build_keyword_decl ($1, $4, $6);
+ }
+
+ | selector ':' identifier
+ {
+ $$ = build_keyword_decl ($1, NULL_TREE, $3);
+ }
+
+ | ':' '(' typename ')' identifier
+ {
+ $$ = build_keyword_decl (NULL_TREE, $3, $5);
+ }
+
+ | ':' identifier
+ {
+ $$ = build_keyword_decl (NULL_TREE, NULL_TREE, $2);
+ }
+ ;
+
+messageargs:
+ selector
+ | keywordarglist
+ ;
+
+keywordarglist:
+ keywordarg
+ | keywordarglist keywordarg
+ {
+ $$ = chainon ($1, $2);
+ }
+ ;
+
+
+keywordexpr:
+ nonnull_exprlist
+ {
+ if (TREE_CHAIN ($1) == NULL_TREE)
+ /* just return the expr., remove a level of indirection */
+ $$ = TREE_VALUE ($1);
+ else
+ /* we have a comma expr., we will collapse later */
+ $$ = $1;
+ }
+ ;
+
+keywordarg:
+ selector ':' keywordexpr
+ {
+ $$ = build_tree_list ($1, $3);
+ }
+ | ':' keywordexpr
+ {
+ $$ = build_tree_list (NULL_TREE, $2);
+ }
+ ;
+
+receiver:
+ expr
+ | CLASSNAME
+ {
+ $$ = get_class_reference ($1);
+ }
+ ;
+
+objcmessageexpr:
+ '['
+ { objc_receiver_context = 1; }
+ receiver
+ { objc_receiver_context = 0; }
+ messageargs ']'
+ {
+ $$ = build_tree_list ($3, $5);
+ }
+ ;
+
+selectorarg:
+ selector
+ | keywordnamelist
+ ;
+
+keywordnamelist:
+ keywordname
+ | keywordnamelist keywordname
+ {
+ $$ = chainon ($1, $2);
+ }
+ ;
+
+keywordname:
+ selector ':'
+ {
+ $$ = build_tree_list ($1, NULL_TREE);
+ }
+ | ':'
+ {
+ $$ = build_tree_list (NULL_TREE, NULL_TREE);
+ }
+ ;
+
+objcselectorexpr:
+ SELECTOR '(' selectorarg ')'
+ {
+ $$ = $3;
+ }
+ ;
+
+objcprotocolexpr:
+ PROTOCOL '(' identifier ')'
+ {
+ $$ = $3;
+ }
+ ;
+
+/* extension to support C-structures in the archiver */
+
+objcencodeexpr:
+ ENCODE '(' typename ')'
+ {
+ $$ = groktypename ($3);
+ }
+ ;
+
+%%
diff --git a/gcc/obstack.c b/gcc/obstack.c
index 4f9a18435e4..59b2eeea17e 100644
--- a/gcc/obstack.c
+++ b/gcc/obstack.c
@@ -1,29 +1,19 @@
/* obstack.c - subroutines used implicitly by object stack macros
- Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+ Copyright (C) 1988, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
- the C library, however. The master source lives in /gd/gnu/lib.
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+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.
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "obstack.h"
@@ -77,28 +67,6 @@ union fooround {long x; double d;};
#define COPYING_UNIT int
#endif
-
-/* The functions allocating more room by calling `obstack_chunk_alloc'
- jump to the handler pointed to by `obstack_alloc_failed_handler'.
- This variable by default points to the internal function
- `print_and_abort'. */
-#if defined (__STDC__) && __STDC__
-static void print_and_abort (void);
-void (*obstack_alloc_failed_handler) (void) = print_and_abort;
-#else
-static void print_and_abort ();
-void (*obstack_alloc_failed_handler) () = print_and_abort;
-#endif
-
-/* Exit value used when `print_and_abort' is used. */
-#if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifndef EXIT_FAILURE
-#define EXIT_FAILURE 1
-#endif
-int obstack_exit_failure = EXIT_FAILURE;
-
/* The non-GNU-C macros copy the obstack into this global variable
to avoid multiple evaluation. */
@@ -110,20 +78,6 @@ struct obstack *_obstack;
For free, do not use ?:, since some compilers, like the MIPS compilers,
do not allow (expr) ? void : void. */
-#if defined (__STDC__) && __STDC__
-#define CALL_CHUNKFUN(h, size) \
- (((h) -> use_extra_arg) \
- ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
- : (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
-
-#define CALL_FREEFUN(h, old_chunk) \
- do { \
- if ((h) -> use_extra_arg) \
- (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
- else \
- (*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
- } while (0)
-#else
#define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
@@ -136,7 +90,6 @@ struct obstack *_obstack;
else \
(*(void (*) ()) (h)->freefun) ((old_chunk)); \
} while (0)
-#endif
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
@@ -153,13 +106,8 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
struct obstack *h;
int size;
int alignment;
-#if defined (__STDC__) && __STDC__
- POINTER (*chunkfun) (long);
- void (*freefun) (void *);
-#else
POINTER (*chunkfun) ();
void (*freefun) ();
-#endif
{
register struct _obstack_chunk *chunk; /* points to new chunk */
@@ -182,27 +130,25 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
size = 4096 - extra;
}
-#if defined (__STDC__) && __STDC__
- h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
- h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
-#else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
-#endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->use_extra_arg = 0;
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
if (!chunk)
- (*obstack_alloc_failed_handler) ();
+ {
+ h->alloc_failed = 1;
+ return 0;
+ }
+ h->alloc_failed = 0;
h->next_free = h->object_base = chunk->contents;
h->chunk_limit = chunk->limit
= (char *) chunk + h->chunk_size;
chunk->prev = 0;
/* The initial chunk now contains no empty object. */
h->maybe_empty_object = 0;
- h->alloc_failed = 0;
return 1;
}
@@ -211,13 +157,8 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
struct obstack *h;
int size;
int alignment;
-#if defined (__STDC__) && __STDC__
- POINTER (*chunkfun) (POINTER, long);
- void (*freefun) (POINTER, POINTER);
-#else
POINTER (*chunkfun) ();
void (*freefun) ();
-#endif
POINTER arg;
{
register struct _obstack_chunk *chunk; /* points to new chunk */
@@ -241,13 +182,8 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
size = 4096 - extra;
}
-#if defined(__STDC__) && __STDC__
- h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
- h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
-#else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
-#endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->extra_arg = arg;
@@ -255,14 +191,17 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
if (!chunk)
- (*obstack_alloc_failed_handler) ();
+ {
+ h->alloc_failed = 1;
+ return 0;
+ }
+ h->alloc_failed = 0;
h->next_free = h->object_base = chunk->contents;
h->chunk_limit = chunk->limit
= (char *) chunk + h->chunk_size;
chunk->prev = 0;
/* The initial chunk now contains no empty object. */
h->maybe_empty_object = 0;
- h->alloc_failed = 0;
return 1;
}
@@ -292,7 +231,11 @@ _obstack_newchunk (h, length)
/* Allocate and initialize the new chunk. */
new_chunk = CALL_CHUNKFUN (h, new_size);
if (!new_chunk)
- (*obstack_alloc_failed_handler) ();
+ {
+ h->alloc_failed = 1;
+ return;
+ }
+ h->alloc_failed = 0;
h->chunk = new_chunk;
new_chunk->prev = old_chunk;
new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
@@ -436,39 +379,6 @@ obstack_free (h, obj)
abort ();
}
-int
-_obstack_memory_used (h)
- struct obstack *h;
-{
- register struct _obstack_chunk* lp;
- register int nbytes = 0;
-
- for (lp = h->chunk; lp != 0; lp = lp->prev)
- {
- nbytes += lp->limit - (char *) lp;
- }
- return nbytes;
-}
-
-/* Define the error handler. */
-#ifndef _
-# ifdef HAVE_LIBINTL_H
-# include <libintl.h>
-# ifndef _
-# define _(Str) gettext (Str)
-# endif
-# else
-# define _(Str) (Str)
-# endif
-#endif
-
-static void
-print_and_abort ()
-{
- fputs (_("memory exhausted\n"), stderr);
- exit (obstack_exit_failure);
-}
-
#if 0
/* These are now turned off because the applications do not use it
and it uses bcopy via obstack_grow, which causes trouble on sysV. */
@@ -507,13 +417,6 @@ int (obstack_room) (obstack)
return obstack_room (obstack);
}
-int (obstack_make_room) (obstack, length)
- struct obstack *obstack;
- int length;
-{
- return obstack_make_room (obstack, length);
-}
-
void (obstack_grow) (obstack, pointer, length)
struct obstack *obstack;
POINTER pointer;
diff --git a/gcc/obstack.h b/gcc/obstack.h
index a6a2e230e0b..dd8e8612bea 100644
--- a/gcc/obstack.h
+++ b/gcc/obstack.h
@@ -1,25 +1,19 @@
/* obstack.h - object stack macros
- Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+ Copyright (C) 1988,89,90,91,92,93,94,96 Free Software Foundation, Inc.
- the C library, however. The master source lives in /gd/gnu/lib.
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+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.
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Summary:
@@ -106,12 +100,8 @@ Summary:
/* Don't do the contents of this file more than once. */
-#ifndef _OBSTACK_H
-#define _OBSTACK_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#ifndef __OBSTACK_H__
+#define __OBSTACK_H__
/* We use subtraction of (char *) 0 instead of casting to int
because on word-addressable machines a simple cast to int
@@ -148,17 +138,6 @@ extern "C" {
#define PTR_INT_TYPE long
#endif
-#if defined (_LIBC) || defined (HAVE_STRING_H)
-#include <string.h>
-#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
-#else
-#ifdef memcpy
-#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
-#else
-#define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
-#endif
-#endif
-
struct _obstack_chunk /* Lives at front of each chunk. */
{
char *limit; /* 1 past end of this chunk */
@@ -192,9 +171,7 @@ struct obstack /* control current object in current chunk */
chunk contains a zero-length object. This
prevents freeing the chunk if we allocate
a bigger chunk to replace it. */
- unsigned alloc_failed:1; /* No longer used, as we now call the failed
- handler on error, but retained for binary
- compatibility. */
+ unsigned alloc_failed:1; /* chunk alloc func returned 0 */
};
/* Declare the external functions we use; they are in obstack.c. */
@@ -207,13 +184,11 @@ extern int _obstack_begin (struct obstack *, int, int,
extern int _obstack_begin_1 (struct obstack *, int, int,
void *(*) (void *, long),
void (*) (void *, void *), void *);
-extern int _obstack_memory_used (struct obstack *);
#else
extern void _obstack_newchunk ();
extern void _obstack_free ();
extern int _obstack_begin ();
extern int _obstack_begin_1 ();
-extern int _obstack_memory_used ();
#endif
#if defined (__STDC__) && __STDC__
@@ -244,7 +219,6 @@ void * obstack_finish (struct obstack *obstack);
int obstack_object_size (struct obstack *obstack);
int obstack_room (struct obstack *obstack);
-void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
@@ -254,30 +228,17 @@ void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
-int obstack_memory_used (struct obstack *obstack);
#endif /* __STDC__ */
/* Non-ANSI C cannot really support alternative functions for these macros,
so we do not declare them. */
-
-/* Error handler called when `obstack_chunk_alloc' failed to allocate
- more memory. This can be set to a user defined function. The
- default action is to print a message and abort. */
-#if defined (__STDC__) && __STDC__
-extern void (*obstack_alloc_failed_handler) (void);
-#else
-extern void (*obstack_alloc_failed_handler) ();
-#endif
-
-/* Exit value used when `print_and_abort' is used. */
-extern int obstack_exit_failure;
/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
because a new chunk might be needed to hold the final size. */
-#define obstack_base(h) ((h)->object_base)
+#define obstack_base(h) ((h)->alloc_failed ? 0 : (h)->object_base)
/* Size for allocating ordinary chunks. */
@@ -285,7 +246,7 @@ extern int obstack_exit_failure;
/* Pointer to next byte not yet allocated in current chunk. */
-#define obstack_next_free(h) ((h)->next_free)
+#define obstack_next_free(h) ((h)->alloc_failed ? 0 : (h)->next_free)
/* Mask specifying low bits that should be clear in address of an object. */
@@ -309,14 +270,13 @@ extern int obstack_exit_failure;
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
- (void *(*) (void *, long)) (chunkfun), \
- (void (*) (void *, void *)) (freefun), (arg))
+ (void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun), (arg))
#define obstack_chunkfun(h, newchunkfun) \
- ((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
+ ((h) -> chunkfun = (struct _obstack_chunk *(*)(long)) (newchunkfun))
#define obstack_freefun(h, newfreefun) \
- ((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
+ ((h) -> freefun = (void (*)(void *)) (newfreefun))
#else
@@ -347,8 +307,6 @@ extern int obstack_exit_failure;
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
-
-#define obstack_memory_used(h) _obstack_memory_used (h)
#if defined (__GNUC__) && defined (__STDC__) && __STDC__
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
@@ -366,6 +324,7 @@ extern int obstack_exit_failure;
#define obstack_object_size(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
+ __o->alloc_failed ? 0 : \
(unsigned) (__o->next_free - __o->object_base); })
#define obstack_room(OBSTACK) \
@@ -373,22 +332,17 @@ extern int obstack_exit_failure;
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->chunk_limit - __o->next_free); })
-#define obstack_make_room(OBSTACK,length) \
-__extension__ \
-({ struct obstack *__o = (OBSTACK); \
- int __len = (length); \
- if (__o->chunk_limit - __o->next_free < __len) \
- _obstack_newchunk (__o, __len); \
- (void) 0; })
-
#define obstack_grow(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->next_free + __len > __o->chunk_limit) \
_obstack_newchunk (__o, __len); \
- _obstack_memcpy (__o->next_free, (char *) (where), __len); \
- __o->next_free += __len; \
+ if (!__o->alloc_failed) \
+ { \
+ bcopy ((char *) (where), __o->next_free, __len); \
+ __o->next_free += __len; \
+ } \
(void) 0; })
#define obstack_grow0(OBSTACK,where,length) \
@@ -397,9 +351,12 @@ __extension__ \
int __len = (length); \
if (__o->next_free + __len + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, __len + 1); \
- _obstack_memcpy (__o->next_free, (char *) (where), __len); \
- __o->next_free += __len; \
- *(__o->next_free)++ = 0; \
+ if (!__o->alloc_failed) \
+ { \
+ bcopy ((char *) (where), __o->next_free, __len); \
+ __o->next_free += __len; \
+ *(__o->next_free)++ = 0; \
+ } \
(void) 0; })
#define obstack_1grow(OBSTACK,datum) \
@@ -407,7 +364,8 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, 1); \
- *(__o->next_free)++ = (datum); \
+ if (!__o->alloc_failed) \
+ *(__o->next_free)++ = (datum); \
(void) 0; })
/* These assume that the obstack alignment is good enough for pointers or ints,
@@ -419,7 +377,8 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (void *)); \
- *((void **)__o->next_free)++ = ((void *)datum); \
+ if (!__o->alloc_failed) \
+ *((void **)__o->next_free)++ = ((void *)datum); \
(void) 0; })
#define obstack_int_grow(OBSTACK,datum) \
@@ -427,7 +386,8 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (int)); \
- *((int *)__o->next_free)++ = ((int)datum); \
+ if (!__o->alloc_failed) \
+ *((int *)__o->next_free)++ = ((int)datum); \
(void) 0; })
#define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
@@ -439,7 +399,8 @@ __extension__ \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
- __o->next_free += __len; \
+ if (!__o->alloc_failed) \
+ __o->next_free += __len; \
(void) 0; })
#define obstack_alloc(OBSTACK,length) \
@@ -466,16 +427,21 @@ __extension__ \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
void *value; \
- value = (void *) __o1->object_base; \
- if (__o1->next_free == value) \
- __o1->maybe_empty_object = 1; \
- __o1->next_free \
- = __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
- & ~ (__o1->alignment_mask)); \
- if (__o1->next_free - (char *)__o1->chunk \
- > __o1->chunk_limit - (char *)__o1->chunk) \
- __o1->next_free = __o1->chunk_limit; \
- __o1->object_base = __o1->next_free; \
+ if (__o1->alloc_failed) \
+ value = 0; \
+ else \
+ { \
+ value = (void *) __o1->object_base; \
+ if (__o1->next_free == value) \
+ __o1->maybe_empty_object = 1; \
+ __o1->next_free \
+ = __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
+ & ~ (__o1->alignment_mask)); \
+ if (__o1->next_free - (char *)__o1->chunk \
+ > __o1->chunk_limit - (char *)__o1->chunk) \
+ __o1->next_free = __o1->chunk_limit; \
+ __o1->object_base = __o1->next_free; \
+ } \
value; })
#define obstack_free(OBSTACK, OBJ) \
@@ -489,7 +455,7 @@ __extension__ \
#else /* not __GNUC__ or not __STDC__ */
#define obstack_object_size(h) \
- (unsigned) ((h)->next_free - (h)->object_base)
+ (unsigned) ((h)->alloc_failed ? 0 : (h)->next_free - (h)->object_base)
#define obstack_room(h) \
(unsigned) ((h)->chunk_limit - (h)->next_free)
@@ -500,40 +466,40 @@ __extension__ \
Casting the third operand to void was tried before,
but some compilers won't accept it. */
-#define obstack_make_room(h,length) \
-( (h)->temp = (length), \
- (((h)->next_free + (h)->temp > (h)->chunk_limit) \
- ? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
-
#define obstack_grow(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
- _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
- (h)->next_free += (h)->temp)
+ ((h)->alloc_failed ? 0 : \
+ (bcopy ((char *) (where), (h)->next_free, (h)->temp), \
+ (h)->next_free += (h)->temp)))
#define obstack_grow0(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \
- _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
+ ((h)->alloc_failed ? 0 : \
+ (bcopy ((char *) (where), (h)->next_free, (h)->temp), \
(h)->next_free += (h)->temp, \
- *((h)->next_free)++ = 0)
+ *((h)->next_free)++ = 0)))
#define obstack_1grow(h,datum) \
( (((h)->next_free + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), 1), 0) : 0), \
- (*((h)->next_free)++ = (datum)))
+ ((h)->alloc_failed ? 0 : \
+ (*((h)->next_free)++ = (datum))))
#define obstack_ptr_grow(h,datum) \
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
- (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
+ ((h)->alloc_failed ? 0 : \
+ (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum))))
#define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
- (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
+ ((h)->alloc_failed ? 0 : \
+ (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum))))
#define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
@@ -542,7 +508,8 @@ __extension__ \
( (h)->temp = (length), \
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
- ((h)->next_free += (h)->temp))
+ ((h)->alloc_failed ? 0 : \
+ ((h)->next_free += (h)->temp)))
#define obstack_alloc(h,length) \
(obstack_blank ((h), (length)), obstack_finish ((h)))
@@ -554,18 +521,19 @@ __extension__ \
(obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
#define obstack_finish(h) \
-( ((h)->next_free == (h)->object_base \
+( (h)->alloc_failed ? 0 : \
+ (((h)->next_free == (h)->object_base \
? (((h)->maybe_empty_object = 1), 0) \
: 0), \
(h)->temp = __PTR_TO_INT ((h)->object_base), \
(h)->next_free \
= __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask) \
& ~ ((h)->alignment_mask)), \
- (((h)->next_free - (char *) (h)->chunk \
+ (((h)->next_free - (char *) (h)->chunk \
> (h)->chunk_limit - (char *) (h)->chunk) \
? ((h)->next_free = (h)->chunk_limit) : 0), \
(h)->object_base = (h)->next_free, \
- __INT_TO_PTR ((h)->temp))
+ __INT_TO_PTR ((h)->temp)))
#if defined (__STDC__) && __STDC__
#define obstack_free(h,obj) \
@@ -585,8 +553,4 @@ __extension__ \
#endif /* not __GNUC__ or not __STDC__ */
-#ifdef __cplusplus
-} /* C++ */
-#endif
-
-#endif /* obstack.h */
+#endif /* not __OBSTACK_H__ */
diff --git a/gcc/pself.c b/gcc/pself.c
new file mode 100644
index 00000000000..d8471daafea
--- /dev/null
+++ b/gcc/pself.c
@@ -0,0 +1 @@
+main(){char*p="main(){char*p=%c%s%c;(void)printf(p,34,p,34,10);}%c";(void)printf(p,34,p,34,10);}
diff --git a/gcc/pself1.c b/gcc/pself1.c
new file mode 100644
index 00000000000..acdfc650583
--- /dev/null
+++ b/gcc/pself1.c
@@ -0,0 +1 @@
+main(a){a="main(a){a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);} \ No newline at end of file
diff --git a/gcc/pself2.c b/gcc/pself2.c
new file mode 100644
index 00000000000..c88a8c1046d
--- /dev/null
+++ b/gcc/pself2.c
@@ -0,0 +1 @@
+main(){char*a="main(){char*a=%c%s%c;int b='%c';printf(a,b,a,b,b);}";int b='"';printf(a,b,a,b,b);}
diff --git a/gcc/pself3.c b/gcc/pself3.c
new file mode 100644
index 00000000000..dbdeac6e410
--- /dev/null
+++ b/gcc/pself3.c
@@ -0,0 +1 @@
+main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}
diff --git a/gcc/stab.def b/gcc/stab.def
index 48ea231e603..dd4fbf0e8be 100644
--- a/gcc/stab.def
+++ b/gcc/stab.def
@@ -1,21 +1,19 @@
/* Table of DBX symbol codes for the GNU system.
- Copyright (C) 1988, 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
+ Copyright (C) 1988 Free Software Foundation, Inc.
- The GNU C 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 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 1, or (at your option)
+ any later version.
- The GNU C Library is distributed in the hope that it will be useful,
+ 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
- Library General Public License for more details.
+ 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 Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* This contains contribution from Cygnus Support. */
diff --git a/gcc/texinfo.tex b/gcc/texinfo.tex
index 1d1e570cb27..b855a969a59 100644
--- a/gcc/texinfo.tex
+++ b/gcc/texinfo.tex
@@ -1,5 +1,5 @@
%% TeX macros to handle Texinfo files.
-%% $Id: texinfo.tex,v 2.217 1997/07/14 17:43:41 karl Exp karl $
+%% $Id: texinfo.tex,v 1.1 1997/08/11 15:57:14 law Exp $
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93,
% 94, 95, 96, 97 Free Software Foundation, Inc.
@@ -36,7 +36,7 @@
% This automatically updates the version number based on RCS.
\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision: 2.217 $
+\deftexinfoversion$Revision: 1.1 $
\message{Loading texinfo package [Version \texinfoversion]:}
% If in a .fmt file, print the version number
diff --git a/gcc/tm.texi b/gcc/tm.texi
index 83d51bb87e8..7f66487d5d4 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 1988,89,92,93,94,96 Free Software Foundation, Inc.
+@c Copyright (C) 1988,89,92,93,94,96,1997 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -764,6 +764,13 @@ Alignment required for a function entry point, in bits.
@item BIGGEST_ALIGNMENT
Biggest alignment that any data type can require on this machine, in bits.
+@findex MINIMUM_ATOMIC_ALIGNMENT
+@item MINIMUM_ATOMIC_ALIGNMENT
+If defined, the smallest alignment, in bits, that can be given to an
+object that can be referenced in one operation, without disturbing any
+nearby object. Normally, this is @code{BITS_PER_UNIT}, but may be larger
+on machines that don't have byte or half-word store operations.
+
@findex BIGGEST_FIELD_ALIGNMENT
@item BIGGEST_FIELD_ALIGNMENT
Biggest alignment that any structure field can require on this machine,
@@ -1720,6 +1727,15 @@ suitable for use as a base register in operand addresses. It may be
either a suitable hard register or a pseudo register that has been
allocated such a hard register.
+@findex REGNO_MODE_OK_FOR_BASE_P
+@item REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
+A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
+that expression may examine the mode of the memory reference in
+@var{mode}. You should define this macro if the mode of the memory
+reference affects whether a register may be used as a base register. If
+you define this macro, the compiler will use it instead of
+@code{REGNO_OK_FOR_BASE_P}.
+
@findex REGNO_OK_FOR_INDEX_P
@item REGNO_OK_FOR_INDEX_P (@var{num})
A C expression which is nonzero if register number @var{num} is
@@ -1900,16 +1916,17 @@ some machines have so few registers of certain classes that there
would not be enough registers to use as spill registers if this were
done.
-Define @code{SMALL_REGISTER_CLASSES} on these machines. When it is
-defined, the compiler allows registers explicitly used in the rtl to be
-used as spill registers but avoids extending the lifetime of these
-registers.
+Define @code{SMALL_REGISTER_CLASSES} to be an expression with a non-zero
+value on these machines. When this macro has a non-zero value, the
+compiler allows registers explicitly used in the rtl to be used as spill
+registers but avoids extending the lifetime of these registers.
-It is always safe to define this macro, but if you unnecessarily define
-it, you will reduce the amount of optimizations that can be performed in
-some cases. If you do not define this macro when it is required, the
-compiler will run out of spill registers and print a fatal error
-message. For most machines, you should not define this macro.
+It is always safe to define this macro with a non-zero value, but if you
+unnecessarily define it, you will reduce the amount of optimizations
+that can be performed in some cases. If you do not define this macro
+with a non-zero value when it is required, the compiler will run out of
+spill registers and print a fatal error message. For most machines, you
+should not define this macro at all.
@findex CLASS_LIKELY_SPILLED_P
@item CLASS_LIKELY_SPILLED_P (@var{class})
@@ -2011,6 +2028,7 @@ This describes the stack layout and calling conventions.
@menu
* Frame Layout::
+* Stack Checking::
* Frame Registers::
* Elimination::
* Stack Arguments::
@@ -2110,15 +2128,119 @@ This macro will seldom need to be defined.
@findex RETURN_ADDR_RTX
@item RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
A C expression whose value is RTL representing the value of the return
-address for the frame @var{count} steps up from the current frame.
-@var{frameaddr} is the frame pointer of the @var{count} frame, or
-the frame pointer of the @var{count} @minus{} 1 frame if
+address for the frame @var{count} steps up from the current frame, after
+the prologue. @var{frameaddr} is the frame pointer of the @var{count}
+frame, or the frame pointer of the @var{count} @minus{} 1 frame if
@code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
@findex RETURN_ADDR_IN_PREVIOUS_FRAME
@item RETURN_ADDR_IN_PREVIOUS_FRAME
Define this if the return address of a particular stack frame is accessed
from the frame pointer of the previous stack frame.
+
+@findex INCOMING_RETURN_ADDR_RTX
+@item INCOMING_RETURN_ADDR_RTX
+A C expression whose value is RTL representing the location of the
+incoming return address at the beginning of any function, before the
+prologue. This RTL is either a @code{REG}, indicating that the return
+value is saved in @samp{REG}, or a @code{MEM} representing a location in
+the stack.
+
+You only need to define this macro if you want to support call frame
+debugging information like that provided by DWARF 2.
+
+@findex INCOMING_FRAME_SP_OFFSET
+@item INCOMING_FRAME_SP_OFFSET
+A C expression whose value is an integer giving the offset, in bytes,
+from the value of the stack pointer register to the top of the stack
+frame at the beginning of any function, before the prologue. The top of
+the frame is defined to be the value of the stack pointer in the
+previous frame, just before the call instruction.
+
+You only need to define this macro if you want to support call frame
+debugging information like that provided by DWARF 2.
+@end table
+
+@node Stack Checking
+@subsection Specifying How Stack Checking is Done
+
+GNU CC will check that stack references are within the boundaries of
+the stack, if the @samp{-fstack-check} is specified, in one of three ways:
+
+@enumerate
+@item
+If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GNU CC
+will assume that you have arranged for stack checking to be done at
+appropriate places in the configuration files, e.g., in
+@code{FUNCTION_PROLOGUE}. GNU CC will do not other special processing.
+
+@item
+If @code{STACK_CHECK_BUILTIN} is zero and you defined a named pattern
+called @code{check_stack} in your @file{md} file, GNU CC will call that
+pattern with one argument which is the address to compare the stack
+value against. You must arrange for this pattern to report an error if
+the stack pointer is out of range.
+
+@item
+If neither of the above are true, GNU CC will generate code to periodically
+``probe'' the stack pointer using the values of the macros defined below.
+@end enumerate
+
+Normally, you will use the default values of these macros, so GNU CC
+will use the third approach.
+
+@table @code
+@findex STACK_CHECK_BUILTIN
+@item STACK_CHECK_BUILTIN
+A nonzero value if stack checking is done by the configuration files in a
+machine-dependent manner. You should define this macro if stack checking
+is require by the ABI of your machine or if you would like to have to stack
+checking in some more efficient way than GNU CC's portable approach.
+The default value of this macro is zero.
+
+@findex STACK_CHECK_PROBE_INTERVAL
+@item STACK_CHECK_PROBE_INTERVAL
+An integer representing the interval at which GNU CC must generate stack
+probe instructions. You will normally define this macro to be no larger
+than the size of the ``guard pages'' at the end of a stack area. The
+default value of 4096 is suitable for most systems.
+
+@findex STACK_CHECK_PROBE_LOAD
+@item STACK_CHECK_PROBE_LOAD
+A integer which is nonzero if GNU CC should perform the stack probe
+as a load instruction and zero if GNU CC should use a store instruction.
+The default is zero, which is the most efficient choice on most systems.
+
+@findex STACK_CHECK_PROTECT
+@item STACK_CHECK_PROTECT
+The number of bytes of stack needed to recover from a stack overflow,
+for languages where such a recovery is supported. The default value of
+75 words should be adequate for most machines.
+
+@findex STACK_CHECK_MAX_FRAME_SIZE
+@item STACK_CHECK_MAX_FRAME_SIZE
+The maximum size of a stack frame, in bytes. GNU CC will generate probe
+instructions in non-leaf functions to ensure at least this many bytes of
+stack are available. If a stack frame is larger than this size, stack
+checking will not be reliable and GNU CC will issue a warning. The
+default is chosen so that GNU CC only generates one instruction on most
+systems. You should normally not change the default value of this macro.
+
+@findex STACK_CHECK_FIXED_FRAME_SIZE
+@item STACK_CHECK_FIXED_FRAME_SIZE
+GNU CC uses this value to generate the above warning message. It
+represents the amount of fixed frame used by a function, not including
+space for any callee-saved registers, temporaries and user variables.
+You need only specify an upper bound for this amount and will normally
+use the default of four words.
+
+@findex STACK_CHECK_MAX_VAR_SIZE
+@item STACK_CHECK_MAX_VAR_SIZE
+The maximum size, in bytes, of an object that GNU CC will place in the
+fixed area of the stack frame when the user specifies
+@samp{-fstack-check}.
+GNU CC computed the default from the values of the above macros and you will
+normally not need to override that default.
@end table
@need 2000
@@ -2455,7 +2577,7 @@ describes the function in question. Normally it is a node of type
From this it is possible to obtain the data types of the value and
arguments (if known).
-When a call to a library function is being considered, @var{funtype}
+When a call to a library function is being considered, @var{fundecl}
will contain an identifier node for the library function. Thus, if
you need to distinguish among various library functions, you can do so
by their names. Note that ``library function'' in this context means
@@ -3130,12 +3252,10 @@ The @var{thunk_fndecl} is redundant. (@var{delta} and @var{function}
have already been extracted from it.) It might possibly be useful on
some targets, but probably not.
-For many targets, the target-independent code in the C++ frontend will
-be sufficient and you can leave this macro undefined. You need to
-define this macro if the code generated by default would clobber any of
-the incoming arguments; this is only likely if parameters can be passed
-in registers. You should also define this macro if the default code is
-sub-optimal.
+If you do not define this macro, the target-independent code in the C++
+frontend will generate a less efficient heavyweight thunk that calls
+@var{function} instead of jumping to it. The generic approach does
+not support varargs.
@end table
@node Profiling
@@ -3985,6 +4105,15 @@ controlled by @code{REG_OK_STRICT} as described above. This usually
requires two variant definitions, of which @code{REG_OK_STRICT}
controls the one actually used.
+@findex REG_MODE_OK_FOR_BASE_P
+@item REG_MODE_OK_FOR_BASE_P (@var{x}, @var{mode})
+A C expression that is just like @code{REG_OK_FOR_BASE_P}, except that
+that expression may examine the mode of the memory reference in
+@var{mode}. You should define this macro if the mode of the memory
+reference affects whether a register may be used as a base register. If
+you define this macro, the compiler will use it instead of
+@code{REG_OK_FOR_BASE_P}.
+
@findex REG_OK_FOR_INDEX_P
@item REG_OK_FOR_INDEX_P (@var{x})
A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
@@ -4549,13 +4678,21 @@ Decode @var{sym_name} and store the real name part in @var{var}, sans
the characters that encode section info. Define this macro if
@code{ENCODE_SECTION_INFO} alters the symbol's name string.
+@findex UNIQUE_SECTION_P (@var{decl})
+@item UNIQUE_SECTION_P (@var{decl})
+A C expression which evaluates to true if @var{decl} should be placed
+into a unique section for some target-specific reason. If you do not
+define this macro, the default is @samp{0}. Note that the flag
+@samp{-ffunction-sections} will also cause functions to be placed into
+unique sections.
+
@findex UNIQUE_SECTION
-@item UNIQUE_SECTION (@var{decl})
-For objects going into their own sections, a C expression of the name of the
-section, expressed as a STRING_CST node, to put @var{decl} into. The
-STRING_CST node must be allocated in the saveable obstack. Function
-@code{build_string} can be used to do this. If you do not define this macro,
-GNU CC will use the symbol name as the section name.
+@item UNIQUE_SECTION (@var{decl}, @var{reloc})
+A C statement to build up a unique section name, expressed as a
+STRING_CST node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
+@var{reloc} indicates whether the initial value of @var{exp} requires
+link-time relocations. If you do not define this macro, GNU CC will use
+the symbol name prefixed by @samp{.} as the section name.
@end table
@node PIC
@@ -4737,10 +4874,12 @@ A C statement to output something to the assembler file to handle a
macro is not defined, nothing is output for a @samp{#ident} directive.
@findex ASM_OUTPUT_SECTION_NAME
-@item ASM_OUTPUT_SECTION_NAME (@var{stream}, @var{decl}, @var{name})
+@item ASM_OUTPUT_SECTION_NAME (@var{stream}, @var{decl}, @var{name}, @var{reloc})
A C statement to output something to the assembler file to switch to section
@var{name} for object @var{decl} which is either a @code{FUNCTION_DECL}, a
-@code{VAR_DECL} or @code{NULL_TREE}. Some target formats do not support
+@code{VAR_DECL} or @code{NULL_TREE}. @var{reloc}
+indicates whether the initial value of @var{exp} requires link-time
+relocations. Some target formats do not support
arbitrary sections. Do not define this macro in such cases.
At present this macro is only used to support section attributes.
@@ -4823,6 +4962,15 @@ If the assembler has a @code{.ascii} pseudo-op as found in the
Berkeley Unix assembler, do not define the macro
@code{ASM_OUTPUT_ASCII}.
+@findex CONSTANT_POOL_BEFORE_FUNCTION
+@item CONSTANT_POOL_BEFORE_FUNCTION
+You may define this macro as a C expression. You should define the
+expression to have a non-zero value if GNU CC should output the constant
+pool for a function before the code for the function, or a zero value if
+GNU CC should output the constant pool after the function. If you do
+not define this macro, the usual case, GNU CC will output the constant
+pool before the function.
+
@findex ASM_OUTPUT_POOL_PROLOGUE
@item ASM_OUTPUT_POOL_PROLOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
A C statement to output assembler commands to define the start of the
@@ -4863,6 +5011,24 @@ entry from being output a second time in the usual manner.
You need not define this macro if it would do nothing.
+@findex CONSTANT_AFTER_FUNCTION_P
+@item CONSTANT_AFTER_FUNCTION_P (@var{exp})
+Define this macro as a C expression which is nonzero if the constant
+@var{exp}, of type @code{tree}, should be output after the code for a
+function. The compiler will normally output all constants before the
+function; you need not define this macro if this is OK.
+
+@findex ASM_OUTPUT_POOL_EPILOGUE
+@item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
+A C statement to output assembler commands to at the end of the constant
+pool for a function. @var{funname} is a string giving the name of the
+function. Should the return type of the function be required, you can
+obtain it via @var{fundecl}. @var{size} is the size, in bytes, of the
+constant pool that GNU CC wrote immediately before this call.
+
+If no constant-pool epilogue is required, the usual case, you need not
+define this macro.
+
@findex IS_ASM_LOGICAL_LINE_SEPARATOR
@item IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C})
Define this macro as a C expression which is nonzero if @var{C} is
@@ -6274,6 +6440,12 @@ in response to the @samp{-g} option.
Define this macro if GNU CC should produce dwarf version 2 format
debugging output in response to the @samp{-g} option.
+To support optional call frame debugging information, you must also
+define @code{INCOMING_RETURN_ADDR_RTX} and either set
+@code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
+prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
+as appropriate from @code{FUNCTION_PROLOGUE} if you don't.
+
@findex PUT_SDB_@dots{}
@item PUT_SDB_@dots{}
Define these macros to override the assembler syntax for the special
@@ -6906,6 +7078,13 @@ dependent processing between the second jump optimization pass and
delayed branch scheduling. On those machines, define this macro as a C
statement to act on the code starting at @var{insn}.
+@findex MULTIPLE_SYMBOL_SPACES
+@item MULTIPLE_SYMBOL_SPACES
+Define this macro if in some cases global symbols from one translation
+unit may not be bound to undefined symbols in another translation unit
+without user intervention. For instance, under Microsoft Windows
+symbols must be explicitly imported from shared libraries (DLLs).
+
@findex GIV_SORT_CRITERION
@item GIV_SORT_CRITERION (@var{giv1}, @var{giv2})
In some cases, the strength reduction optimization pass can produce better
diff --git a/gcc/version.c b/gcc/version.c
new file mode 100644
index 00000000000..b1829cb7c81
--- /dev/null
+++ b/gcc/version.c
@@ -0,0 +1 @@
+char *version_string = "testgcc-2.7.90 970802 experimental";