Initial revision
From-SVN: r14764
diff --git a/gcc/.gdbinit b/gcc/.gdbinit
new file mode 100644
index 0000000..dea758b
--- /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 0000000..60549be
--- /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 0000000..161a3d1
--- /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 0000000..29483ba
--- /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 0000000..2e413b1
--- /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 0000000..b0f29ab
--- /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 0000000..ad16692
--- /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 0000000..a5e092c
--- /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 0000000..346311a
--- /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 0000000..af668a3
--- /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 0000000..c6248db
--- /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 0000000..9bd9de0
--- /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 0000000..784fe4f
--- /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 0000000..9c9140e
--- /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 0000000..9cd8cdf
--- /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 0000000..d4ac7c5
--- /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 04d8a7c..6483738 100644
--- a/gcc/NEWS
+++ b/gcc/NEWS
@@ -3,12 +3,17 @@
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 @@
-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 @@
-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 0000000..ac183c9
--- /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 0000000..43ed75d
--- /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 0000000..06e15bb
--- /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 0000000..786d476
--- /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 0000000..04641e3
--- /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 0000000..9f6f2b0
--- /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 0000000..5beb862
--- /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 125f0f4..b556d08 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -4339,7 +4339,7 @@
/* 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 @@
{
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 @@
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 0000000..361b9d9
--- /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 0000000..0c6f3d2
--- /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,
+ ¤t_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 0000000..21b3d0c
--- /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 0000000..fd2b0f9
--- /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,
+ ¤t_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 0000000..84eb19e
--- /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 0000000..a4f2cc5
--- /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 0000000..8a04e60
--- /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 0000000..206d8fd
--- /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 831101e..3109b5c 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -267,6 +267,23 @@
/* 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 0000000..9426c4e
--- /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 0000000..955379d
--- /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 0000000..1c7a656
--- /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 469ce14..4a923fc 100644
--- a/gcc/config/i386/dgux.h
+++ b/gcc/config/i386/dgux.h
@@ -25,7 +25,7 @@
#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 0000000..7a823b9
--- /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 0000000..5bdb9be
--- /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 0000000..007a609
--- /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 0000000..0b5985f
--- /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 0000000..42f097d
--- /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 0000000..3a9f324
--- /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 0000000..d2e714e
--- /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 0000000..72078bb
--- /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 0000000..d36d2cd
--- /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 29a42cc..47eb7dc 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 @@
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 0000000..f1ab6d8
--- /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 c86e56b..e9fc1d4 100644
--- a/gcc/config/m68k/mot3300-crt0.S
+++ b/gcc/config/m68k/mot3300-crt0.S
@@ -97,7 +97,7 @@
#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 52561e6..acb317c 100644
--- a/gcc/config/m68k/mot3300Mcrt0.S
+++ b/gcc/config/m68k/mot3300Mcrt0.S
@@ -143,7 +143,7 @@
#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 0000000..294f564
--- /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 0000000..69b4bd1
--- /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 0000000..5ac1f46
--- /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 0000000..d724c3a
--- /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 0000000..3b10506
--- /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 0000000..ce3cf66
--- /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 0000000..27a33cd
--- /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 0000000..eafe716
--- /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 0000000..fcb456f
--- /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 edeffdf..6a3c4102 100644
--- a/gcc/config/m88k/dgux.h
+++ b/gcc/config/m88k/dgux.h
@@ -30,7 +30,7 @@
(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 8a45610..7fc8ed9 100644
--- a/gcc/config/m88k/m88k.h
+++ b/gcc/config/m88k/m88k.h
@@ -198,13 +198,13 @@
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 0000000..4b7f111
--- /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 0000000..611effe
--- /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 0000000..3d2a59a
--- /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 0000000..e12c226
--- /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 0000000..b9d3c70
--- /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 0000000..9409d7f
--- /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 0000000..34ab631
--- /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 0000000..170538f
--- /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 0000000..490a772
--- /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 0000000..76be3b7
--- /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 0000000..4040751
--- /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 0000000..5f11b8d
--- /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 0000000..dad9fdc
--- /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 0000000..bb58a6a
--- /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 0000000..18a1d73
--- /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 0000000..f73c9aa
--- /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 0000000..88b558c
--- /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 0000000..00000ce
--- /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 0000000..ac1000f
--- /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 0000000..3008432
--- /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 0000000..b318152
--- /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 0000000..9119e64
--- /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, ¤t_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, ¤t_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, ¤t_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, ¤t_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, ¤t_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, ¤t_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, ¤t_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, ¤t_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, ¤t_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, ¤t_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 0000000..432766b
--- /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 0000000..9788f70
--- /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 0000000..b09c8b7
--- /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 9680977..2027d28 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4302,6 +4302,11 @@
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 @@
++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 0000000..7ba1264
--- /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 0000000..418dcbc
--- /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 f622fc3..300f86d 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.
+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. */
/* 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 fb30719a..69256fd 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 @@
}
#endif
-#endif /* getopt.h */
+#endif /* _GETOPT_H */
diff --git a/gcc/getopt1.c b/gcc/getopt1.c
index af8e681..6507ba1 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.
+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. */
#ifdef HAVE_CONFIG_H
#include <config.h>
diff --git a/gcc/gstab.h b/gcc/gstab.h
new file mode 100644
index 0000000..80bd594
--- /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 c6ba6f5..9f02385 100644
--- a/gcc/install.texi
+++ b/gcc/install.texi
@@ -179,13 +179,13 @@
@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 @@
@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 @@
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 @@
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 @@
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 @@
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 0000000..82ef9b6
--- /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 c975c35..7a643d6 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 @@
@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 @@
-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 @@
-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 @@
@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 @@
@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 @@
@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 @@
-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 @@
-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 @@
-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 @@
@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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
@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 @@
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 @@
@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 @@
@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 @@
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 @@
* Convex Options::
* AMD29K Options::
* ARM Options::
+* M32R/D Options::
* M88K Options::
* RS/6000 and PowerPC Options::
* RT Options::
@@ -2664,6 +2790,12 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
@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 @@
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 @@
@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 @@
@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 @@
@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 @@
@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 @@
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 e5ceaec..06cf996 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 4fe759a..1d5d53d 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -2410,6 +2410,16 @@
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 @@
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 0000000..66d8b8a
--- /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 0000000..6a04682
--- /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,
+ ¤t_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 0000000..e063599
--- /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,
+ ¤t_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 4f9a184..59b2eee 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 @@
#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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
/* 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 @@
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 @@
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 a6a2e23..dd8e861 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 @@
/* 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 @@
#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 @@
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_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 @@
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_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 @@
/* 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 @@
#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 @@
#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 @@
#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 @@
({ 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 @@
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 @@
({ 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 @@
({ 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 @@
({ 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 @@
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__ \
({ 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 @@
#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 @@
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 @@
( (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 @@
(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 @@
#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 0000000..d8471da
--- /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 0000000..acdfc65
--- /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 0000000..c88a8c1
--- /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 0000000..dbdeac6
--- /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 48ea231..dd4fbf0 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 1d1e570..b855a96 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 83d51bb..7f66487 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 @@
@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 @@
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 @@
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 @@
@menu
* Frame Layout::
+* Stack Checking::
* Frame Registers::
* Elimination::
* Stack Arguments::
@@ -2110,15 +2128,119 @@
@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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 0000000..b1829cb
--- /dev/null
+++ b/gcc/version.c
@@ -0,0 +1 @@
+char *version_string = "testgcc-2.7.90 970802 experimental";